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