Awwwww! Bruce beats me again.

And he's right. Doesn't make much difference. PBP catagorizes the variables according to type, and then sorts them alphabetically within each type.

The "order" depends on whether you are using a 14-bit or 16-bit core.

For 14-bit cores the order is ...

1 - WORD arrays
2 - BYTE arrays
3 - WORD's
4 - BIT array's
5 - BYTE's
6 - BIT's

For 16-bit cores the order is ...

1 - Bit Arrays
2 - Bit's
3 - WORD's
4 - BYTE's
5 - BYTE Arrays
6 - WORD arrays

A good question might be, Why the difference?

Here's an example of the differences using these variables
Code:
Cbyte      VAR BYTE
BBYTEArray VAR BYTE(10)
BwordArray VAR WORD(10)
AWORD      VAR WORD
BWORD      VAR WORD
ABYTEArray VAR BYTE(10)
AbitArray  VAR bit(10)
DWORD      VAR WORD
ABYTE      VAR BYTE
BBYTE      VAR BYTE
AWORDArray VAR WORD(10)
CBit       VAR Bit
BbitArray  VAR bit(10)
Compiled for a 16F877 you get this...
Code:
  _AWORDArray    EQU     RAM_START + 018h
  _BwordArray    EQU     RAM_START + 02Ch
  _ABYTEArray    EQU     RAM_START + 040h
  _BBYTEArray    EQU     RAM_START + 04Ah
  _AWORD         EQU     RAM_START + 054h
  _BWORD         EQU     RAM_START + 056h
  _DWORD         EQU     RAM_START + 058h
  PBA01          EQU     RAM_START + 05Ah
  PBA02          EQU     RAM_START + 05Ch
  _ABYTE         EQU     RAM_START + 05Eh
  _BBYTE         EQU     RAM_START + 05Fh
  _Cbyte         EQU     RAM_START + 080h
  PB01           EQU     RAM_START + 081h
     #define _AbitArray               PBA01, 000h
     #define _BbitArray               PBA02, 000h
Compiled for a 18F252 you get this...
Code:
  PBA01          EQU     RAM_START + 01Ah
  PBA02          EQU     RAM_START + 01Ch
  PB01           EQU     RAM_START + 01Eh
  _AWORD         EQU     RAM_START + 01Fh
  _BWORD         EQU     RAM_START + 021h
  _DWORD         EQU     RAM_START + 023h
  _ABYTE         EQU     RAM_START + 025h
  _BBYTE         EQU     RAM_START + 026h
  _Cbyte         EQU     RAM_START + 027h
  _ABYTEArray    EQU     RAM_START + 028h
  _BBYTEArray    EQU     RAM_START + 032h
  _AWORDArray    EQU     RAM_START + 03Ch
  _BwordArray    EQU     RAM_START + 050h
     #define _AbitArray               PBA01, 000h
     #define _BbitArray               PBA02, 000h
Interestingly, if you use any BANK modifiers, all that goes out the window.

In fact, once you use a BANK modifier, all variables declared after it will be placed in that BANK and the following banks untill RAM is full, then it goes back to BANK0 and tries to fit things in the remaining space. So even if you only have 1 variable with a BANK2 modifier, you could be placing Lot's of variables in BANK2 and BANK3.

I didn't know that till now.   Thanks for the question Mark!
<br>