; PV - permanent variable---DO NOT USE ; TV - temporary variable---maybe use ; DV - double vairable---probably do not use ; Vhh - free to use, but used by BASIC ; Uhh - not used by BASIC at all ;*********************************************** ; COLOR BASIC ;*********************************************** CB.endflg equ $00 ; stop/end flag; positive=stop, neg=end .charac equ $01 ; terminator flag 1 .endcur equ $02 ; terminator flag 2 .tmploc equ $03 ; scratch variable .ifctr equ $04 ; IF counter - how many IF statement in a line .dimflg equ $05 ; *DV* array flag 0=evaluate 1=dimentioning .valtyp equ $06 ; *DV* *PV type flag; 0=numeric, $FF=string .garbfl equ $07 ; *TV string space housekeeping flag .arydis equ $08 ; disable array search; 0=allow search .inpflg equ $09 ; *TV input flag: read=0, input<>0 .relflg equ $0A ; *TV relational operator flag .temppt equ $0B ; *PV temporary string stack pointer .lastpt equ $0D ; *PV addr of last used string stack address .temptr equ $0F ; temporary pointer .tmptr1 equ $11 ; temporary descriptor storage (stack search) .fpa2 equ $13 ; floating point accumulator #2 mantissa .botstk equ $17 ; bottom of stack at last check .txttab equ $19 ; *PV beginning of BASIC program .vartab equ $1B ; *PV start of variables .arytab equ $1D ; *PV start of arrays .aryend equ $1F ; *PV end of arrays (+1) .fretop equ $21 ; *PV start of string storage (top of free RAM) .strtab equ $23 ; *PV start of string variables .frespc equ $25 ; utility string pointer .memsiz equ $27 ; *PV top of string space .oldtxt equ $29 ; saved line number during a "STOP" .binval equ $2B ; binary value of a converted line number .oldptr equ $2D ; saved input ptr during a "STOP" .tinptr equ $2F ; temporary input pointer storage .dattxt equ $31 ; *PV "DATA" statement line number pointer .datptr equ $33 ; *PV "DATA" statement address pointer .dattmp equ $35 ; data pointer for "INPUT" & "READ" .varnam equ $37 ; *TV temp storage for a variable name .varptr equ $39 ; *TV pointer to a variable descriptor .vardes equ $3B ; temp pointer to a variable descriptor .relptr equ $3D ; pointer to relational operator processing routine .trelfl equ $3F ; temporary relational operator flag byte V40 equ $40 ; FPA #3 packed V41 equ $41 V42 equ $42 V43 equ $43 V44 equ $44 V45 equ $45 ; FPA #4 packed V46 equ $46 V47 equ $47 V48 equ $48 V49 equ $49 V4A equ $4A ; FPA #5 packed V4B equ $4B V4C equ $4C V4D equ $4D V4E equ $4D CB.fp0exp equ $4F ; FPA #0 exponent .fpa0 equ $50 ; FPA #0 mantissa .fp0sgn equ $54 ; FPA #0 sign .coefct equ $55 ; polynomial coefficient counter .strdes equ $56 ; temporary string descriptor .fpcary equ $5B ; floating point carry byte .fp1exp equ $5C ; FPA #1 exponent .fpa1 equ $5D ; FPA #1 mantissa .fp1sgn equ $61 ; FPA #1 sign .ressgn equ $62 ; sign of result of floating point operation .fpsbyt equ $63 ; floating point sub byte (fifth byte) .coefpt equ $64 ; polynomial coefficient pointer .lsttxt equ $66 ; current line pointer during list .curlin equ $68 ; *PV current line # of BASIC program, $FFFF = direct .devcfw equ $6A ; *TV tab field width .devlcf equ $6B ; *TV tab zone .devpos equ $6C ; *TV print position .devwid equ $6D ; *TV width .prtdev equ $6E ; *TV print device: 0=not cassette, -1=cassette .devnum equ $6F ; *PV device number: 0=DLOAD, -2=PRINTER , -1=CASSETTE, 0=SCREEN, 1-15=DISK .cinbfl equ $70 ; *PV console in buffer flag: 00=not empty, $FF=empty .rstflg equ $71 ; *PV warm start flag: $55=warm, other=cold .rstvec equ $72 ; *PV warm start vector - jump address for warm start .topram equ $74 ; *PV top of RAM U76 equ $76 U77 equ $77 CB.filsta equ $78 ; *PV file status flag: 0=closed, 1=input, 2=output .cinctr equ $79 ; *PV console in buffer char counter .cinptr equ $7A ; *PV console in buffer pointer .blktyp equ $7C ; *TV cass block type: 0=header, 1=data, $FF=EOF .blklen equ $7D ; *TV cassette byte count .cbufad equ $7E ; *TV cassette load buffer pointer .ccksum equ $80 ; *TV cassette checksum byte .csrerr equ $81 ; *TV error flag/character count .cpulwd equ $82 ; *TV pulse width count .cpertm equ $83 ; *TV bit counter .cbtpha equ $84 ; *TV bit phase flag .clstsn equ $85 ; *TV last sine table entry .grblok equ $86 ; *TV graphic block value for SET, RESET and POINT .ikeyim equ $87 ; *TV INKEY$ RAM image .curpos equ $88 ; *PV cursor location .zero equ $8A ; *PV dummy - these two bytes are alwas zero .sndton equ $8C ; *TV tone value for SOUND command .snddur equ $8D ; *TV duration value for SOUND command .cmpmid equ $8F ; *PV 1200/2400 Hertz partition <-- moved from ROM .cmp0 equ $90 ; *PV upper limit of 1200 Hz period " .cmp1 equ $91 ; *PV upper limit of 2400 Hz period " .syncln equ $92 ; *PV number of $55s to cassette leader " .blkcnt equ $94 ; *PV cursor blink delay " .lptbtd equ $95 ; *PV Baud rate constant (600) " .lptlnd equ $97 ; *PV Printer carriage return delay " .lptcfw equ $99 ; *PV tab field width " .lptlcf equ $9A ; *PV last tab zone " .lptwid equ $9B ; *PV printer width " .lptpos equ $9C ; *PV line printer position " .execjp equ $9D ; *PV jump address for EXEC command <-- moved from ROM .getnch equ $9F ; *PV function <-- moved from ROM .getcch equ $A5 ; *PV function " .charad equ $A6 ; *PV function <-- moved from ROM VAB equ $AB ; low order four bytes of the product VAC equ $AC ; of a floating point multiplication VAD equ $AD ; these bytes are used as random data VAE equ $AE ; by the RND statement ;*********************************************** ; EXTENDED COLOR BASIC ;*********************************************** ECB.trcflg equ $AF ; *PV trace flag 0=off else on .usradr equ $B0 ; *PV address of the start of usr vectors .forcol equ $B2 ; *PV foreground color .bakcol equ $B3 ; *PV background color .wcolor equ $B4 ; *TV wofking color being used by ECB .allcol equ $B5 ; *TV all pixels in the byte set to color of bakcol .pmode equ $B6 ; *PV PMODE's mode argument .endgrp equ $B7 ; *PV end of current graphic page .horbyt equ $B9 ; *PV number of bytes/horizontal grpahic line .beggrp equ $BA ; *PV start of graphc page .grpram equ $BC ; *PV start of graphic RAM (MSB) .horbeg equ $BD ; *DV* *PV horizontal coordinate start point .verbeg equ $BF ; *DV* *PV vertical coordinate start point .cssyal equ $C1 ; *PV SCREEN's color set argument .setflg equ $C2 ; *PV PRESET/PSET flag: 0=PRESET, 1=PSET .horend equ $C3 ; *DV* *PV horizontal coordinate ending point .verend equ $C5 ; *DV* *PV vertical coordinate ending point .hordef equ $C7 ; *PV horizontal coordinate default coordinate .verdef equ $C9 ; *PV vertical coordiate default coordiate VCB equ $CB VCC equ $CC VCD equ $CD VCE equ $CE VCF equ $CF VD0 equ $D0 VD1 equ $D1 VD2 equ $D2 VD3 equ $D3 VD4 equ $D4 VD5 equ $D5 VD6 equ $D6 VD7 equ $D7 VD8 equ $D8 VD9 equ $D9 VDA equ $DA ECB.chgflg equ $DB ; *TV flag to indicate if graphic data has been changed .tmpstk equ $DC ; *TV stack pointer storage during paint .octave equ $DE ; *PV octage value (PLAY) .volhi equ $DF ; *DV* *PV volume high value (PLAY) .vollow equ $E0 ; *DV* *PV volume low value (PLAY) .noteln equ $E1 ; *PV note length (PLAY) .tempo equ $E2 ; *PV tempo value (PLAY) .plytmr equ $E3 ; *TV timer for the PLAY command .dotyal equ $E5 ; *TV dotted note timer scale factor .dlbaud equ $E6 ; *DV* *PV DLOAD baud rate constant $B0=300, $2C=1200 .timout equ $E7 ; *DV* *PV DLOAD timeout constant .angle equ $E8 ; *DV* *PV angle value (DRAW) .scale equ $E9 ; *DV* *PV scale value (DRAW) ;*********************************************** ; DISK [EXTENDED] COLOR BASIC ;*********************************************** DECB.dcopc equ $EA ; *PV DSKCON operation code 0-3 .dcdrv equ $EB ; *PV DSKCON drive nubmer 0-3 .dctrk equ $EC ; *PV DSKCON track number 0-34 .dsec equ $ED ; *PV DSKCON sector number 1-18 .dcbpt equ $EE ; *PV DSKCON data pointer .dcsta equ $F0 ; *PV DSKCON status byte .fcbtmp equ $F1 ; temporary FCB pointer UF3 equ $F3 UF4 equ $F4 UF5 equ $F5 UF6 equ $F6 UF7 equ $F7 UF8 equ $F8 UF9 equ $F9 UFA equ $FA UFB equ $FB UFC equ $FC UFD equ $FD UFE equ $FE UFF equ $FF