will assign a l7-bit value to 'code'. Indirection operators may then be used to

read and write data into the area of memory reserved by the DIM statement,

e.g. :

!code=27128;

PRINT code?3;

$(code+27)="Arvo and Sue"

Indirection operators will address normal memory if the calculated pointer is in

the range &000000 to &00FFFF and will address sideways RAM if the pointer

is in the range &010000 to &01FFFF.

3. The Assembler will operate using O% and P% as l7-bit pointers.

If the destination for the machine code generated by the assembler is in the

range &000000 to &00FFFF then normal memory is referenced. Addresses

from &010000 to &0IFFFF reference sideways RAM.

The Program Counter is adjusted so that address references in the range

&010000 to &01FFFF refer to sideways RAM addresses &008000 to

&00BFFF. References from one bank of sideways RAM to another are trapped,

giving a 'Bank' error, e.g.:

P%=&13F00:[JSR &1CF34

will give a 'Bank' error. When compiling, any code generated over a bank

boundary is trapped, resulting in a 'Wrap' error. Thus the maximum amount of

code that can be generated at any one time is 16K bytes. For example:

P%=&13FFC:[LDA #0:TAY:SEC:SBC &70]

will give a 'Wrap' error since execution cannot pass from one bank to the next

directly.

4. Shadow mode will be forced on (ignoring low-valued MODEs) so that

BAS128 can reside in RAM between &3000 and &8000. The remaining

memory from OSHWM to &3000 may be used by BASl28 as workspace.

5. The LOAD, SAVE and CHAIN commands make use of the OSGBPB routine.

App l0.2