From 6e37953f52eb23c6ba710c924dea6306d98bfbb1 Mon Sep 17 00:00:00 2001 From: cpg Date: Tue, 12 Aug 2003 19:52:00 +0000 Subject: [PATCH] added here from libsrc/atari git-svn-id: svn://svn.cc65.org/cc65/trunk@2293 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- asminc/atari.inc | 1101 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1101 insertions(+) create mode 100644 asminc/atari.inc diff --git a/asminc/atari.inc b/asminc/atari.inc new file mode 100644 index 000000000..61ebb36d8 --- /dev/null +++ b/asminc/atari.inc @@ -0,0 +1,1101 @@ +;------------------------------------------------------------------------- +; Atari System Equates +; by Freddy Offenga & Christian Groessler +; +; References: +; - Atari 400/800 OS rev.B source code, Atari 1979 +; - Atari OS manual - XL addendum +; - Atari XL/XE rev.2 source code, Atari 1984 +; - Mapping the Atari - revised edition, Ian Chadwick 1985 +; +; ##old## old OS rev.B label - moved or deleted +; ##1200xl## new label introduced in 1200XL OS (rev.10/11) +; ##rev2## new label introduced in XL/XE OS rev.2 +;------------------------------------------------------------------------- + +;------------------------------------------------------------------------- +; Configuration Equates +;------------------------------------------------------------------------- + +MAXDEV = 33 ;offset to last possible entry of HATABS +IOCBSZ = 16 ;length of IOCB + +SEIOCB = 0*IOCBSZ ;##rev2## screen editor IOCB index +MAXIOC = 8*IOCBSZ ;first invalid IOCB index + +DSCTSZ = 128 ;##rev2## disk sector size + +LEDGE = 2 ;left edge +REDGE = 39 ;right edge + +INIML = $0700 ;##rev2## initial MEMLO + +ICSORG = $CC00 ;##rev2## international character set origin +DCSORG = $E000 ;##rev2## domestic character set origin + +; IOCB Command Code Equates + +OPEN = $03 ;open +GETREC = $05 ;get record +GETCHR = $07 ;get character(s) +PUTREC = $09 ;put record +PUTCHR = $0B ;put character(s) +CLOSE = $0C ;close +STATIS = $0D ;status +SPECIL = $0E ;special + +; Special Entry Command Equates + +; Screen Commands + +DRAWLN = $11 ;draw line +FILLIN = $12 ;draw line with right fill + +; ICAX1 Auxiliary Byte 1 Equates + +APPEND = $01 ;open write append (D:) +DIRECT = $02 ;open for directory access (D:) +OPNIN = $04 ;open for input (all devices) +OPNOT = $08 ;open for output (all devices) +MXDMOD = $10 ;open for mixed mode (E:, S:) +INSCLR = $20 ;open for input without clearing screen + +; Device Code Equates + +CASSET = 'C' ;cassette +DISK = 'D' ;disk +SCREDT = 'E' ;screen editor +KBD = 'K' ;keyboard +PRINTR = 'P' ;printer +DISPLY = 'S' ;screen display + +; SIO Command Code Equates + +SIO_FORMAT = $21 ;format disk (default density) +SIO_FORMATS = $22 ;1050: format medium density +SIO_CONFIG = $44 ;configure drive +SIO_CONFIGSF = $4B ;slow/fast configure drive?? +SIO_WRITE = $50 ;write sector +SIO_READ = $52 ;read sector +SIO_STAT = $53 ;get status information +SIO_VERIFY = $56 ;verify sector +SIO_WRITEV = $57 ;write sector with verify + +; Character and Key Code Equates + +CLS = $7D ;##rev2## clear screen +EOL = $9B ;end of line (RETURN) + +HELP = $11 ;##1200xl## key code for HELP +CNTLF1 = $83 ;##1200xl## key code for CTRL-F1 +CNTLF2 = $84 ;##1200xl## key code for CTRL-F2 +CNTLF3 = $93 ;##1200xl## key code for CTRL-F3 +CNTLF4 = $94 ;##1200xl## key code for CTRL-F4 +CNTL1 = $9F ;##1200xl## key code for CTRL-1 + +; Status Code Equates + +SUCCES = 1 ;($01) succesful operation + +BRKABT = 128 ;($80) BREAK key abort +PRVOPN = 129 ;($81) IOCB already open error +NONDEV = 130 ;($82) nonexistent device error +WRONLY = 131 ;($83) IOCB opened for write only error +NVALID = 132 ;($84) invalid command error +NOTOPN = 133 ;($85) device/file not open error +BADIOC = 134 ;($86) invalid IOCB index error +RDONLY = 135 ;($87) IOCB opened for read only error +EOFERR = 136 ;($88) end of file error +TRNRCD = 137 ;($89) truncated record error +TIMOUT = 138 ;($8A) peripheral device timeout error +DNACK = 139 ;($8B) device does not acknowledge command +FRMERR = 140 ;($8C) serial bus framing error +CRSROR = 141 ;($8D) cursor overrange error +OVRRUN = 142 ;($8E) serial bus data overrun error +CHKERR = 143 ;($8F) serial bus checksum error +DERROR = 144 ;($90) device done (operation incomplete) +BADMOD = 145 ;($91) bad screen mode number error +FNCNOT = 146 ;($92) function not implemented in handler +SCRMEM = 147 ;($93) insufficient memory for screen mode + +DSKFMT = 148 ;($94) SpartaDOS: urecognized disk format +INCVER = 149 ;($95) SpartaDOS: disk was made with incompat. version +DIRNFD = 150 ;($96) SpartaDOS: directory not found +FEXIST = 151 ;($97) SpartaDOS: file exists +NOTBIN = 152 ;($98) SpartaDOS: file not binary +LSYMND = 154 ;($9A) SDX: loader symbol not defined +BADPRM = 156 ;($9C) SDX: bad parameter +OUTOFM = 158 ;($9E) SDX: out of memory +INVDEV = 160 ;($A0) invalid device number +TMOF = 161 ;($A1) too many open files +DSKFLL = 162 ;($A2) disk full +FATLIO = 163 ;($A3) fatal I/O error +FNMSMT = 164 ;($A4) internal file number mismatch +INVFNM = 165 ;($A5) invalid file name +PDLERR = 166 ;($A6) point data length error +EPERM = 167 ;($A7) permission denied +DINVCM = 168 ;($A8) command invalid for disk +DIRFLL = 169 ;($A9) directory full +FNTFND = 170 ;($AA) file not found +PNTINV = 171 ;($AB) point invalid +BADDSK = 173 ;($AD) bad disk +INCFMT = 176 ;($B0) DOS 3: incompatible file system + +; DCB Device Bus Equates + +DISKID = $31 ;##rev2## disk bus ID +PDEVN = $40 ;##rev2## printer bus ID +CASET = $60 ;##rev2## cassette bus ID + +; Bus Command Equates + +FOMAT = '!' ;##rev2## format command +PUTSEC = 'P' ;##rev2## put sector command +READ = 'R' ;##rev2## read command +STATC = 'S' ;##rev2## status command +WRITE = 'W' ;##rev2## write command + +; Command Auxiliary Byte Equates + +DOUBLE = 'D' ;##rev2## print 20 characters double width +NORMAL = 'N' ;##rev2## print 40 characters normally +PLOT = 'P' ;##rev2## plot +SIDWAY = 'S' ;##rev2## print 16 characters sideways + +; Bus Response Equates + +ACK = 'A' ;##rev2## device acknowledged +COMPLT = 'C' ;##rev2## device succesfully completed operation +ERROR = 'E' ;##rev2## device incurred error +NACK = 'N' ;##rev2## device did not understand + +; Floating Point Miscellaneous Equates + +FPREC = 6 ;precision + +FMPREC = FPREC-1 ;##rev2## length of mantissa + +; Cassette Record Type Equates + +HDR = $FB ;##rev2## header +DTA = $FC ;##rev2## data record +DT1 = $FA ;##rev2## last data record +EOT = $FE ;##rev2## end of tape (file) + +TONE1 = 2 ;##rev2## record +TONE2 = 1 ;##rev2## playback + +; Cassette Timing Equates + +WLEADN = 1152 ;##rev2## NTSC 19.2 second WRITE file leader +RLEADN = 576 ;##rev2## NTSC 9.6 second READ file leader +WIRGLN = 180 ;##rev2## NTSC 3.0 second WRITE IRG +RIRGLN = 120 ;##rev2## NTSC 2.0 second READ IRG +WSIRGN = 15 ;##rev2## NTSC 0.25 second WRITE short IRG +RSIRGN = 10 ;##rev2## NTSC 0.16 second READ short IRG +BEEPNN = 30 ;##rev2## NTSC 0.5 second beep duration +BEEPFN = 10 ;##rev2## NTSC 0.16 seconrd beep duration + +WLEADP = 960 ;##rev2## PAL 19.2 second WRITE file leader +RLEADP = 480 ;##rev2## PAL 9.6 second READ file leader +WIRGLP = 150 ;##rev2## PAL 3.0 second WRITE IRG +RIRGLP = 100 ;##rev2## PAL 2.0 second READ IRG +WSIRGP = 13 ;##rev2## PAL 0.25 second WRITE short IRG +RSIRGP = 8 ;##rev2## PAL 0.16 second READ short IRG +BEEPNP = 25 ;##rev2## PAL 0.5 second beep duration +BEEPFP = 8 ;##rev2## PAL 0.16 seconrd beep duration + +WIRGHI = 0 ;##rev2## high WRITE IRG +RIRGHI = 0 ;##rev2## high READ IRG + +; Power-up Validation Byte Value Equates + +PUPVL1 = $5C ;##rev2## power-up validation value 1 +PUPVL2 = $93 ;##rev2## power-up validation value 2 +PUPVL3 = $25 ;##rev2## power-up validation value 3 + +; Relocating Loader Miscellaneous Equates + +DATAER = 156 ;##rev2## end of record appears before END +MEMERR = 157 ;##rev2## memory insufficient for load error + +; Miscellaneous Equates + +IOCFRE = $FF ;IOCB free indication + +B19200 = $0028 ;##rev2## 19200 baud POKEY counter value +B00600 = $05CC ;##rev2## 600 baud POKEY counter value + +HITONE = $05 ;##rev2## FSK high freq. POKEY counter value +LOTONE = $07 ;##rev2## FSK low freq. POKEY counter value + +NCOMLO = $34 ;##rev2## PIA lower NOT COMMAND line command +NCOMHI = $3C ;##rev2## PIA raise NOT COMMAND line command + +MOTRGO = $34 ;##rev2## PIA cassette motor ON command +MOTRST = $3C ;##rev2## PIA cassette motor OFF command + +NODAT = $00 ;##rev2## SIO immediate operation +GETDAT = $40 ;##rev2## SIO read data frame +PUTDAT = $80 ;##rev2## SIO write data frame + +CRETRI = 13 ;##rev2## number of command frame retries +DRETRI = 1 ;##rev2## number of device retries +CTIM = 2 ;##rev2## command frame ACK timeout + +NBUFSZ = 40 ;##rev2## print normal buffer size +DBUFSZ = 20 ;##rev2## print double buffer size +SBUFSZ = 29 ;##rev2## print sideways buffer size + +;------------------------------------------------------------------------- +; Page Zero Address Equates +;------------------------------------------------------------------------- + +LINZBS = $00 ;LINBUG RAM (WILL BE REPLACED BY MONITOR RAM) +LNFLG = $00 ;##1200xl## 1-byte LNBUG flag (0 = not LNBUG) +NGFLAG = $01 ;##1200xl## 1-byte memory status (0 = failure) + +; Not Cleared + +CASINI = $02 ;CASSETTE INIT LOCATION +RAMLO = $04 ;RAM POINTER FOR MEMORY TEST +TRAMSZ = $06 ;TEMPORARY REGISTER FOR RAM SIZE +;TSTDAT = $07 ;##old## RAM TEST DATA REGISTER +CMCMD = $07 ;##rev2## 1-byte command communications + +; Cleared upon Coldstart only + +WARMST = $08 ;WARM START FLAG +BOOTQ = $09 ;SUCCESSFUL BOOT FLAG +DOSVEC = $0A ;DISK SOFTWARE START VECTOR +DOSINI = $0C ;DISK SOFTWARE INIT ADDRESS +APPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT + +; Cleared upon Coldstart or Warmstart + +INTZBS = $10 ;INTERRUPT HANDLER + +POKMSK = $10 ;SYSTEM MASK FOR POKEY IRG ENABLE +BRKKEY = $11 ;BREAK KEY FLAG +RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS> +BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER +ICCOMT = $17 ;COMMAND FOR VECTOR +DSKFMS = $18 ;DISK FILE MANAGER POINTER +DSKUTL = $1A ;DISK UTILITIES POINTER +ABUFPT = $1C ;##1200xl## 4-byte ACMI buffer pointer area + +;PTIMOT = $1C ;##old## PRINTER TIME OUT REGISTER +;PBPNT = $1D ;##old## PRINT BUFFER POINTER +;PBUFSZ = $1E ;##old## PRINT BUFFER SIZE +;PTEMP = $1F ;##old## TEMPORARY REGISTER + +ZIOCB = $20 ;ZERO PAGE I/O CONTROL BLOCK +IOCBAS = $20 ;16-byte page zero IOCB +ICHIDZ = $20 ;HANDLER INDEX NUMBER (FF = IOCB FREE) +ICDNOZ = $21 ;DEVICE NUMBER (DRIVE NUMBER) +ICCOMZ = $22 ;COMMAND CODE +ICSTAZ = $23 ;STATUS OF LAST IOCB ACTION +ICBALZ = $24 ;BUFFER ADDRESS LOW BYTE +ICBAHZ = $25 ;1-byte high buffer address +ICPTLZ = $26 ;PUT BYTE ROUTINE ADDRESS -1 +ICPTHZ = $27 ;1-byte high PUT-BYTE routine address +ICBLLZ = $28 ;BUFFER LENGTH LOW BYTE +ICBLHZ = $29 ;1-byte high buffer length +ICAX1Z = $2A ;AUXILIARY INFORMATION FIRST BYTE +ICAX2Z = $2B ;1-byte second auxiliary information +ICSPRZ = $2C ;4-byte spares + +ENTVEC = $2C ;##rev2## 2-byte (not used) +ICIDNO = $2E ;IOCB NUMBER X 16 +CIOCHR = $2F ;CHARACTER BYTE FOR CURRENT OPERATION + +STATUS = $30 ;INTERNAL STATUS STORAGE +CHKSUM = $31 ;CHECKSUM (SINGLE BYTE SUM WITH CARRY) +BUFRLO = $32 ;POINTER TO DATA BUFFER (LO BYTE) +BUFRHI = $33 ;POINTER TO DATA BUFFER (HI BYTE) +BFENLO = $34 ;NEXT BYTE PAST END OF THE DATA BUFFER LO +BFENHI = $35 ;NEXT BYTE PAST END OF THE DATA BUFFER HI +;CRETRY = $36 ;##old## NUMBER OF COMMAND FRAME RETRIES +;DRETRY = $37 ;##old## NUMBER OF DEVICE RETRIES +LTEMP = $36 ;##1200xl## 2-byte loader temporary +BUFRFL = $38 ;DATA BUFFER FULL FLAG +RECVDN = $39 ;RECEIVE DONE FLAG +XMTDON = $3A ;TRANSMISSION DONE FLAG +CHKSNT = $3B ;CHECKSUM SENT FLAG +NOCKSM = $3C ;NO CHECKSUM FOLLOWS DATA FLAG +BPTR = $3D ;1-byte cassette buffer pointer +FTYPE = $3E ;1-byte cassette IRG type +FEOF = $3F ;1-byte cassette EOF flag (0 = quiet) +FREQ = $40 ;1-byte cassette beep counter +SOUNDR = $41 ;NOISY I/0 FLAG. (ZERO IS QUIET) + +CRITIC = $42 ;DEFINES CRITICAL SECTION (CRITICAL IF NON-Z) + +FMSZPG = $43 ;DISK FILE MANAGER SYSTEM ZERO PAGE + +;CKEY = $4A ;##old## FLAG SET WHEN GAME START PRESSED +ZCHAIN = $4A ;##1200xl## 2-byte handler linkage chain pointer +;CASSBT = $4B ;##old## CASSETTE BOOT FLAG +DSTAT = $4C ;DISPLAY STATUS +ATRACT = $4D ;ATRACT FLAG +DRKMSK = $4E ;DARK ATRACT MASK +COLRSH = $4F ;ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD + + +TMPCHR = $50 ;1-byte temporary character +HOLD1 = $51 ;1-byte temporary +LMARGN = $52 ;LEFT MARGIN (SET TO 1 AT POWER ON> +RMARGN = $53 ;RIGHT MARGIN (SET TO 38 AT POWER ON) +ROWCRS = $54 ;1-byte cursor row +COLCRS = $55 ;2-byte cursor column +DINDEX = $57 ;1-byte display mode +SAVMSC = $58 ;2-byte saved memory scan counter +OLDROW = $5A ;1-byte prior row +OLDCOL = $5B ;2-byte prior column +OLDCHR = $5D ;DATA UNDER CURSOR +OLDADR = $5E ;2-byte saved cursor memory address +FKDEF = $60 ;##1200xl## 2-byte function key definition table +;NEWROW = $60 ;##old## POINT DRAW GOES TO +;NEWCOL = $61 ;##old## +PALNTS = $62 ;##1200xl## 1-byte PAL/NTSC indicator (0 = NTSC) +LOGCOL = $63 ;POINTS AT COLUMN IN LOGICAL LINE +ADRESS = $64 ;2-byte temporary address + +MLTTMP = $66 ;1-byte temporary +OPNTMP = $66 ;FIRST BYTE IS USED IN OPEN AS TEMP +TOADR = $66 ;##rev2## 2-byte destination address + +SAVADR = $68 ;2-byte saved address +FRMADR = $68 ;##rev2## 2-byte source address + +RAMTOP = $6A ;RAM SIZE DEFINED BY POWER ON LOGIC +BUFCNT = $6B ;BUFFER COUNT +BUFSTR = $6C ;EDITOR GETCH POINTER +BITMSK = $6E ;BIT MASK +SHFAMT = $6F ;1-byte shift amount for pixel justifucation +ROWAC = $70 ;2-byte draw working row +COLAC = $72 ;2-byte draw working column +ENDPT = $74 ;2-byte end point +DELTAR = $76 ;1-byte row difference +DELTAC = $77 ;2-byte column difference +KEYDEF = $79 ;##1200xl## 2-byte key definition table address +;ROWINC = $79 ;##old## +;COLINC = $7A ;##old## +SWPFLG = $7B ;NON-0 1F TXT AND REGULAR RAM IS SWAPPED +HOLDCH = $7C ;CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH +INSDAT = $7D ;1-byte temporary +COUNTR = $7E ;2-byte draw iteration count + +; Floating Point Package Page Zero Address Equates + +FR0 = $D4 ;6-byte register 0 +FR0M = $D5 ;##rev2## 5-byte register 0 mantissa +QTEMP = $D9 ;##rev2## 1-byte temporary + +FRE = $DA ;6-byte (internal) register E + +FR1 = $E0 ;FP REG1 +FR1M = $E1 ;##rev2## 5-byte register 1 mantissa + +FR2 = $E6 ;6-byte (internal) register 2 + +FRX = $EC ;1-byte temporary + +EEXP = $ED ;VALUE OF E + +FRSIGN = $EE ;##rev2## 1-byte floating point sign +NSIGN = $EE ;SIGN OF # + +PLYCNT = $EF ;##rev2## 1-byte polynomial degree +ESIGN = $EF ;SIGN OF EXPONENT + +SGNFLG = $F0 ;##rev2## 1-byte sign flag +FCHRFLG = $F0 ;1ST CHAR FLAG + +XFMFLG = $F1 ;##rev2## 1-byte transform flag +DIGRT = $F1 ;# OF DIGITS RIGHT OF DECIMAL + +CIX = $F2 ;CURRENT INPUT INDEX +INBUFF = $F3 ;POINTS TO USER'S LINE INPUT BUFFER + +ZTEMP1 = $F5 ;2-byte temporary +ZTEMP4 = $F7 ;2-byte temporary +ZTEMP3 = $F9 ;2-byte temporary + +;DEGFLG = $FB ;##old## same as RADFLG +;RADFLG = $FB ;##old## 0=RADIANS, 6=DEGREES + +FLPTR = $FC ;2-byte floating point number pointer +FPTR2 = $FE ;2-byte floating point number pointer + +;------------------------------------------------------------------------- +; Page Two Address Equates +;------------------------------------------------------------------------- + +INTABS = $0200 ;INTERRUPT RAM + +VDSLST = $0200 ;DISPLAY LIST NMI VECTOR +VPRCED = $0202 ;PROCEED LINE IRQ VECTOR +VINTER = $0204 ;INTERRUPT LINE IRQ VECTOR +VBREAK = $0206 ;SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR +VKEYBD = $0208 ;POKEY KEYBOARD IRQ VECTOR +VSERIN = $020A ;POKEY SERIAL INPUT READY IRQ +VSEROR = $020C ;POKEY SERIAL OUTPUT READY IRQ +VSEROC = $020E ;POKEY SERIAL OUTPUT COMPLETE IRQ +VTIMR1 = $0210 ;POKEY TIMER 1 IRG +VTIMR2 = $0212 ;POKEY TIMER 2 IRG +VTIMR4 = $0214 ;POKEY TIMER 4 IRG +VIMIRQ = $0216 ;IMMEDIATE IRG VECTOR +CDTMV1 = $0218 ;COUNT DOWN TIMER 1 +CDTMV2 = $021A ;COUNT DOWN TIMER 2 +CDTMV3 = $021C ;COUNT DOWN TIMER 3 +CDTMV4 = $021E ;COUNT DOWN TIMER 4 +CDTMV5 = $0220 ;COUNT DOWN TIMER 5 +VVBLKI = $0222 ;IMMEDIATE VERTICAL BLANK NMI VECTOR +VVBLKD = $0224 ;DEFERRED VERTICAL BLANK NMI VECTOR +CDTMA1 = $0226 ;COUNT DOWN TIMER 1 JSR ADDRESS +CDTMA2 = $0228 ;COUNT DOWN TIMER 2 JSR ADDRESS +CDTMF3 = $022A ;COUNT DOWN TIMER 3 FLAG +SRTIMR = $022B ;SOFTWARE REPEAT TIMER +CDTMF4 = $022C ;COUNT DOWN TIMER 4 FLAG +INTEMP = $022D ;IAN'S TEMP +CDTMF5 = $022E ;COUNT DOWN TIMER FLAG 5 +SDMCTL = $022F ;SAVE DMACTL REGISTER +SDLSTL = $0230 ;SAVE DISPLAY LIST LOW BYTE +SDLSTH = $0231 ;SAVE DISPLAY LIST HI BYTE +SSKCTL = $0232 ;SKCTL REGISTER RAM +LCOUNT = $0233 ;##1200xl## 1-byte relocating loader record +LPENH = $0234 ;LIGHT PEN HORIZONTAL VALUE +LPENV = $0235 ;LIGHT PEN VERTICAL VALUE +BRKKY = $0236 ;BREAK KEY VECTOR +;RELADR = $0238 ;##1200xl## 2-byte relocatable loader address +VPIRQ = $0238 ;##rev2## 2-byte parallel device IRQ vector +CDEVIC = $023A ;COMMAND FRAME BUFFER - DEVICE +CCOMND = $023B ;COMMAND +CAUX1 = $023C ;COMMAND AUX BYTE 1 +CAUX2 = $023D ;COMMAND AUX BYTE 2 + +TEMP = $023E ;TEMPORARY RAM CELL + +ERRFLG = $023F ;ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT + +DFLAGS = $0240 ;DISK FLAGS FROM SECTOR ONE +DBSECT = $0241 ;NUMBER OF DISK BOOT SECTORS +BOOTAD = $0242 ;ADDRESS WHERE DISK BOOT LOADER WILL 13E PUT +COLDST = $0244 ;COLDSTART FLAG (1=IN MIDDLE OF COLDSTART> +RECLEN = $0245 ;##1200xl## 1-byte relocating loader record length +DSKTIM = $0246 ;DISK TIME OUT REGISTER +;LINBUF = $0247 ;##old## CHAR LINE BUFFER +PDVMSK = $0247 ;##rev2## 1-byte parallel device selection mask +SHPDVS = $0248 ;##rev2## 1-byte PDVS (parallel device select) +PDIMSK = $0249 ;##rev2## 1-byte parallel device IRQ selection +RELADR = $024A ;##rev2## 2-byte relocating loader relative adr. +PPTMPA = $024C ;##rev2## 1-byte parallel device handler temporary +PPTMPX = $024D ;##rev2## 1-byte parallel device handler temporary + +CHSALT = $026B ;##1200xl## 1-byte character set alternate +VSFLAG = $026C ;##1200xl## 1-byte fine vertical scroll count +KEYDIS = $026D ;##1200xl## 1-byte keyboard disable +FINE = $026E ;##1200xl## 1-byte fine scrolling mode +GPRIOR = $026F ;GLOBAL PRIORITY CELL + +PADDL0 = $0270 ;1-byte potentiometer 0 +PADDL1 = $0271 ;1-byte potentiometer 1 +PADDL2 = $0272 ;1-byte potentiometer 2 +PADDL3 = $0273 ;1-byte potentiometer 3 +PADDL4 = $0274 ;1-byte potentiometer 4 +PADDL5 = $0275 ;1-byte potentiometer 5 +PADDL6 = $0276 ;1-byte potentiometer 6 +PADDL7 = $0277 ;1-byte potentiometer 7 + +STICK0 = $0278 ;1-byte joystick 0 +STICK1 = $0279 ;1-byte joystick 1 +STICK2 = $027A ;1-byte joystick 2 +STICK3 = $027B ;1-byte joystick 3 + +PTRIG0 = $027C ;1-byte paddle trigger 0 +PTRIG1 = $027D ;1-byte paddle trigger 1 +PTRIG2 = $027E ;1-byte paddle trigger 2 +PTRIG3 = $027F ;1-byte paddle trigger 3 +PTRIG4 = $0280 ;1-byte paddle trigger 4 +PTRIG5 = $0281 ;1-byte paddle trigger 5 +PTRIG6 = $0281 ;1-byte paddle trigger 6 +PTRIG7 = $0283 ;1-byte paddle trigger 7 + +STRIG0 = $0284 ;1-byte joystick trigger 0 +STRIG1 = $0285 ;1-byte joystick trigger 1 +STRIG2 = $0286 ;1-byte joystick trigger 2 +STRIG3 = $0287 ;1-byte joystick trigger 3 + +;CSTAT = $0288 ;##old## cassette status register +HIBYTE = $0288 ;##1200xl## 1-byte relocating loader high byte +WMODE = $0289 ;1-byte cassette WRITE mode +BLIM = $028A ;1-byte cassette buffer limit +IMASK = $028B ;##rev2## (not used) +JVECK = $028C ;2-byte jump vector or temporary +NEWADR = $028E ;##1200xl## 2-byte relocating address +TXTROW = $0290 ;TEXT ROWCRS +TXTCOL = $0291 ;TEXT COLCRS +TINDEX = $0293 ;TEXT INDEX +TXTMSC = $0294 ;FOOLS CONVRT INTO NEW MSC +TXTOLD = $0296 ;OLDROW & OLDCOL FOR TEXT (AND THEN SOME) +;TMPX1 = $029C ;##old## 1-byte temporary register +CRETRY = $029C ;##1200xl## 1-byte number of command frame retries +HOLD3 = $029D ;1-byte temporary +SUBTMP = $029E ;1-byte temporary +HOLD2 = $029F ;1-byte (not used) +DMASK = $02A0 ;1-byte display (pixel location) mask +TMPLBT = $02A1 ;1-byte (not used) +ESCFLG = $02A2 ;ESCAPE FLAG +TABMAP = $02A3 ;15-byte (120 bit) tab stop bit map +LOGMAP = $02B2 ;LOGICAL LINE START BIT MAP +INVFLG = $02B6 ;INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY) +FILFLG = $02B7 ;RIGHT FILL FLAG FOR DRAW +TMPROW = $02B8 ;1-byte temporary row +TMPCOL = $02B9 ;2-byte temporary column +SCRFLG = $02BB ;SET IF SCROLL OCCURS +HOLD4 = $02BC ;TEMP CELL USED IN DRAW ONLY +;HOLD5 = $02BD ;##old## DITTO +DRETRY = $02BD ;##1200xl## 1-byte number of device retries +SHFLOK = $02BE ;1-byte shift/control lock flags +BOTSCR = $02BF ;BOTTOM OF SCREEN 24 NORM 4 SPLIT + +PCOLR0 = $02C0 ;1-byte player-missile 0 color/luminance +PCOLR1 = $02C1 ;1-byte player-missile 1 color/luminance +PCOLR2 = $02C2 ;1-byte player-missile 2 color/luminance +PCOLR3 = $02C3 ;1-byte player-missile 3 color/luminance + +COLOR0 = $02C4 ;1-byte playfield 0 color/luminance +COLOR1 = $02C5 ;1-byte playfield 1 color/luminance +COLOR2 = $02C6 ;1-byte playfield 2 color/luminance +COLOR3 = $02C7 ;1-byte playfield 3 color/luminance + +COLOR4 = $02C8 ;1-byte background color/luminance + +PARMBL = $02C9 ;##rev2## 6-byte relocating loader parameter +RUNADR = $02C9 ;##1200xl## 2-byte run address +HIUSED = $02CB ;##1200xl## 2-byte highest non-zero page address +ZHIUSE = $02CD ;##1200xl## 2-byte highest zero page address + +OLDPAR = $02CF ;##rev2## 6-byte relocating loader parameter +GBYTEA = $02CF ;##1200xl## 2-byte GET-BYTE routine address +LOADAD = $02D1 ;##1200xl## 2-byte non-zero page load address +ZLOADA = $02D3 ;##1200xl## 2-byte zero page load address + +DSCTLN = $02D5 ;##1200xl## 2-byte disk sector length +ACMISR = $02D7 ;##1200xl## 2-byte ACMI interrupt service routine +KRPDEL = $02D9 ;##1200xl## 1-byte auto-repeat delay +KEYREP = $02DA ;##1200xl## 1-byte auto-repeat rate +NOCLIK = $02DB ;##1200xl## 1-byte key click disable +HELPFG = $02DC ;##1200xl## 1-byte HELP key flag (0 = no HELP) +DMASAV = $02DD ;##1200xl## 1-byte SDMCTL save/restore +PBPNT = $02DE ;##1200xl## 1-byte printer buffer pointer +PBUFSZ = $02DF ;##1200xl## 1-byte printer buffer size + +GLBABS = $02E0 ;4-byte global variables for non-DOS users +RUNAD = $02E0 ;##map## 2-byte binary file run address +INITAD = $02E2 ;##map## 2-byte binary file initialization address + +RAMSIZ = $02E4 ;RAM SIZE (HI BYTE ONLY) +MEMTOP = $02E5 ;TOP OF AVAILABLE USER MEMORY +MEMLO = $02E7 ;BOTTOM OF AVAILABLE USER MEMORY +HNDLOD = $02E9 ;##1200xl## 1-byte user load flag +DVSTAT = $02EA ;STATUS BUFFER +CBAUDL = $02EE ;1-byte low cassette baud rate +CBAUDH = $02EF ;1-byte high cassette baud rate +CRSINH = $02F0 ;CURSOR INHIBIT (00 = CURSOR ON) +KEYDEL = $02F1 ;KEY DELAY +CH1 = $02F2 ;1-byte prior keyboard character +CHACT = $02F3 ;CHACTL REGISTER RAM +CHBAS = $02F4 ;CHBAS REGISTER RAM + +NEWROW = $02F5 ;##1200xl## 1-byte draw destination row +NEWCOL = $02F6 ;##1200xl## 2-byte draw destination column +ROWINC = $02F8 ;##1200xl## 1-byte draw row increment +COLINC = $02F9 ;##1200xl## 1-byte draw column increment + +CHAR = $02FA ;1-byte internal character +ATACHR = $02FB ;ATASCII CHARACTER +CH = $02FC ;GLOBAL VARIABLE FOR KEYBOARD +FILDAT = $02FD ;RIGHT FILL DATA +DSPFLG = $02FE ;DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO +SSFLAG = $02FF ;START/STOP FLAG FOR PAGING (CNTL 1). CLEARE + +;------------------------------------------------------------------------- +; Page Three Address Equates +;------------------------------------------------------------------------- + +DCB = $0300 ;DEVICE CONTROL BLOCK +DDEVIC = $0300 ;PERIPHERAL UNIT 1 BUS I.D. NUMBER +DUNIT = $0301 ;UNIT NUMBER +DCOMND = $0302 ;BUS COMMAND +DSTATS = $0303 ;COMMAND TYPE/STATUS RETURN +DBUFLO = $0304 ;1-byte low data buffer address +DBUFHI = $0305 ;1-byte high data buffer address +DTIMLO = $0306 ;DEVICE TIME OUT IN 1 SECOND UNITS +DUNUSE = $0307 ;UNUSED BYTE +DBYTLO = $0308 ;1-byte low number of bytes to transfer +DBYTHI = $0309 ;1-byte high number of bytes to transfer +DAUX1 = $030A ;1-byte first command auxiliary +DAUX2 = $030B ;1-byte second command auxiliary + +TIMER1 = $030C ;INITIAL TIMER VALUE +;ADDCOR = $030E ;##old## ADDITION CORRECTION +JMPERS = $030E ;##1200xl## 1-byte jumper options +CASFLG = $030F ;CASSETTE MODE WHEN SET +TIMER2 = $0310 ;2-byte final baud rate timer value +TEMP1 = $0312 ;TEMPORARY STORAGE REGISTER +;TEMP2 = $0314 ;##old## TEMPORARY STORAGE REGISTER +TEMP2 = $0313 ;##1200xl## 1-byte temporary +PTIMOT = $0314 ;##1200xl## 1-byte printer timeout +TEMP3 = $0315 ;TEMPORARY STORAGE REGISTER +SAVIO = $0316 ;SAVE SERIAL IN DATA PORT +TIMFLG = $0317 ;TIME OUT FLAG FOR BAUD RATE CORRECTION +STACKP = $0318 ;SIO STACK POINTER SAVE CELL +TSTAT = $0319 ;TEMPORARY STATUS HOLDER + +HATABS = $031A ;35-byte handler address table (was 38 bytes) +PUPBT1 = $033D ;##1200xl## 1-byte power-up validation byte 1 +PUPBT2 = $033E ;##1200xl## 1-byte power-up validation byte 2 +PUPBT3 = $033F ;##1200xl## 1-byte power-up validation byte 3 + +IOCB = $0340 ;I/O CONTROL BLOCKS +ICHID = $0340 ;HANDLER INDEX NUMBER (FF=IOCB FREE) +ICDNO = $0341 ;DEVICE NUMBER (DRIVE NUMBER) +ICCOM = $0342 ;COMMAND CODE +ICSTA = $0343 ;STATUS OF LAST IOCB ACTION +ICBAL = $0344 ;1-byte low buffer address +ICBAH = $0345 ;1-byte high buffer address +ICPTL = $0346 ;1-byte low PUT-BYTE routine address - 1 +ICPTH = $0347 ;1-byte high PUT-BYTE routine address - 1 +ICBLL = $0348 ;1-byte low buffer length +ICBLH = $0349 ;1-byte high buffer length +ICAX1 = $034A ;1-byte first auxiliary information +ICAX2 = $034B ;1-byte second auxiliary information +ICAX3 = $034C ;1-byte third auxiliary information +ICAX4 = $034D ;1-byte fourth auxiliary information +ICAX5 = $034E ;1-byte fifth auxiliary information +ICSPR = $034F ;SPARE BYTE + +PRNBUF = $03C0 ;PRINTER BUFFER +SUPERF = $03E8 ;##1200xl## 1-byte editor super function flag +CKEY = $03E9 ;##1200xl## 1-byte cassette boot request flag +CASSBT = $03EA ;##1200xl## 1-byte cassette boot flag +CARTCK = $03EB ;##1200xl## 1-byte cartridge equivalence check +DERRF = $03EC ;##rev2## 1-byte screen OPEN error flag + +; Remainder of Page Three Not Cleared upon Reset + +ACMVAR = $03ED ;##1200xl## 11 bytes reserved for ACMI +BASICF = $03F8 ;##rev2## 1-byte BASIC switch flag +MINTLK = $03F9 ;##1200xl## 1-byte ACMI module interlock +GINTLK = $03FA ;##1200xl## 1-byte cartridge interlock +CHLINK = $03FB ;##1200xl## 2-byte loaded handler chain link +CASBUF = $03FD ;CASSETTE BUFFER + +;------------------------------------------------------------------------- +; Page Four/Five Address Equates +;------------------------------------------------------------------------- + +; USER AREA STARTS HERE AND GOES TO END OF PAGE FIVE +USAREA = $0480 ;128 bytes reserved for application + +LBPR1 = $057E ;LBUFF PREFIX 1 +LBPR2 = $057F ;LBUFF PREFIX 2 +LBUFF = $0580 ;128-byte line buffer + +PLYARG = $05E0 ;6-byte floating point polynomial argument +FPSCR = $05E6 ;6-byte floating point temporary +FPSCR1 = $05EC ;6-byte floating point temporary + +;LBFEND = $05FF ;##old## END OF LBUFF + +;------------------------------------------------------------------------- +; Cartridge Address Equates +;------------------------------------------------------------------------- + +CARTCS = $BFFA ;##rev2## 2-byte cartridge coldstart address +CART = $BFFC ;##rev2## 1-byte cartridge present indicator +CARTFG = $BFFD ;##rev2## 1-byte cartridge flags +CARTAD = $BFFE ;##rev2## 2-byte cartridge start vector + +;------------------------------------------------------------------------- +; CTIA/GTIA Address Equates +;------------------------------------------------------------------------- + +GTIA = $D000 ;CTIA/GTIA area + +; Read/Write Addresses + +CONSOL = $D01F ;console switches and speaker control + +; Read Addresses + +M0PF = $D000 ;missile 0 and playfield collision +M1PF = $D001 ;missile 1 and playfield collision +M2PF = $D002 ;missile 2 and playfield collision +M3PF = $D003 ;missile 3 and playfield collision + +P0PF = $D004 ;player 0 and playfield collision +P1PF = $D005 ;player 1 and playfield collision +P2PF = $D006 ;player 2 and playfield collision +P3PF = $D007 ;player 3 and playfield collision + +M0PL = $D008 ;missile 0 and player collision +M1PL = $D009 ;missile 1 and player collision +M2PL = $D00A ;missile 2 and player collision +M3PL = $D00B ;missile 3 and player collision + +P0PL = $D00C ;player 0 and player collision +P1PL = $D00D ;player 1 and player collision +P2PL = $D00E ;player 2 and player collision +P3PL = $D00F ;player 3 and player collision + +TRIG0 = $D010 ;joystick trigger 0 +TRIG1 = $D011 ;joystick trigger 1 + +TRIG2 = $D012 ;cartridge interlock +TRIG3 = $D013 ;ACMI module interlock + +PAL = $D014 ;##rev2## PAL/NTSC indicator + +; Write Addresses + +HPOSP0 = $D000 ;player 0 horizontal position +HPOSP1 = $D001 ;player 1 horizontal position +HPOSP2 = $D002 ;player 2 horizontal position +HPOSP3 = $D003 ;player 3 horizontal position + +HPOSM0 = $D004 ;missile 0 horizontal position +HPOSM1 = $D005 ;missile 1 horizontal position +HPOSM2 = $D006 ;missile 2 horizontal position +HPOSM3 = $D007 ;missile 3 horizontal position + +SIZEP0 = $D008 ;player 0 size +SIZEP1 = $D009 ;player 1 size +SIZEF2 = $D00A ;player 2 size +SIZEP3 = $D00B ;player 3 size + +SIZEM = $D00C ;missile sizes + +GRAFP0 = $D00D ;player 0 graphics +GRAFP1 = $D00E ;player 1 graphics +GRAFP2 = $D00F ;player 2 graphics +GRAFP3 = $D010 ;player 3 graphics + +GRAFM = $D011 ;missile graphics + +COLPM0 = $D012 ;player-missile 0 color/luminance +COLPM1 = $D013 ;player-missile 1 color/luminance +COLPM2 = $D014 ;player-missile 2 color/luminance +COLPM3 = $D015 ;player-missile 3 color/luminance + +COLPF0 = $D016 ;playfield 0 color/luminance +COLPF1 = $D017 ;playfield 1 color/luminance +COLPF2 = $D018 ;playfield 2 color/luminance +COLPF3 = $D019 ;playfield 3 color/luminance + +COLBK = $D01A ;background color/luminance + +PRIOR = $D01B ;priority select +VDELAY = $D01C ;vertical delay +GRACTL = $D01D ;graphic control +HITCLR = $D01E ;collision clear + +;------------------------------------------------------------------------- +; PBI Address Equates +;------------------------------------------------------------------------- + +PBI = $D100 ;##rev2## parallel bus interface area + +; Read Addresses + +PDVI = $D1FF ;##rev2## parallel device IRQ status + +; Write Addresses + +PDVS = $D1FF ;##rev2## parallel device select + +; PBI RAM Address Equates + +PBIRAM = $D600 ;##rev2## parallel bus interface RAM area + +; Parallel Device Address Equates + +PDID1 = $D803 ;##rev2## parallel device ID 1 +PDIDV = $D805 ;##rev2## parallel device I/O vector +PDIRQV = $D808 ;##rev2## parallel device IRQ vector +PDID2 = $D80B ;##rev2## parallel device ID 2 +PDVV = $D80D ;##rev2## parallel device vector table + +;------------------------------------------------------------------------- +; POKEY Address Equates +;------------------------------------------------------------------------- + +POKEY = $D200 ;POKEY area + +; Read Addresses + +POT0 = $D200 ;potentiometer 0 +POT1 = $D201 ;potentiometer 1 +POT2 = $D202 ;potentiometer 2 +POT3 = $D203 ;potentiometer 3 +POT4 = $D204 ;potentiometer 4 +POT5 = $D205 ;potentiometer 5 +POT6 = $D206 ;potentiometer 6 +POT7 = $D207 ;potentiometer 7 + +ALLPOT = $D208 ;potentiometer port status +KBCODE = $D209 ;keyboard code +RANDOM = $D20A ;random number generator +SERIN = $D20D ;serial port input +IRQST = $D20E ;IRQ interrupt status +SKSTAT = $D20F ;serial port and keyboard status + +; Write Addresses + +AUDF1 = $D200 ;channel 1 audio frequency +AUDC1 = $D201 ;channel 1 audio control + +AUDF2 = $D202 ;channel 2 audio frequency +AUDC2 = $D203 ;channel 2 audio control + +AUDF3 = $D204 ;channel 3 audio frequency +AUDC3 = $D205 ;channel 3 audio control + +AUDF4 = $D206 ;channel 4 audio frequency +AUDC4 = $D207 ;channel 4 audio control + +AUDCTL = $D208 ;audio control +STIMER = $D209 ;start timers +SKRES = $D20A ;reset SKSTAT status +POTGO = $D20B ;start potentiometer scan sequence +SEROUT = $D20D ;serial port output +IRQEN = $D20E ;IRQ interrupt enable +SKCTL = $D20F ;serial port and keyboard control + +;------------------------------------------------------------------------- +; PIA Address Equates +;------------------------------------------------------------------------- + +PIA = $D300 ;PIA area + +PORTA = $D300 ;port A direction register or jacks one/two +PORTB = $D301 ;port B direction register or memory management + +PACTL = $D302 ;port A control +PBCTL = $D303 ;port B control + +;------------------------------------------------------------------------- +; ANTIC Address Equates +;------------------------------------------------------------------------- + +ANTIC = $D400 ;ANTIC area + +; Read Addresses + +VCOUNT = $D40B ;vertical line counter +PENH = $D40C ;light pen horizontal position +PENV = $D40D ;light pen vertical position +NMIST = $D40F ;NMI interrupt status + +; Write Addresses + +DMACTL = $D400 ;DMA control +CHACTL = $D401 ;character control +DLISTL = $D402 ;low display list address +DLISTH = $D403 ;high display list address +HSCROL = $D404 ;horizontal scroll +VSCROL = $D405 ;vertical scroll +PMBASE = $D407 ;player-missile base address +CHBASE = $D409 ;character base address +WSYNC = $D40A ;wait for HBLANK synchronization +NMIEN = $D40E ;NMI enable +NMIRES = $D40F ;NMI iterrupt reset + +;------------------------------------------------------------------------- +; Floating Point Package Address Equates +;------------------------------------------------------------------------- + +AFP = $D800 ;convert ASCII to floating point +FASC = $D8E6 ;convert floating point to ASCII +IFP = $D9AA ;convert integer to floating point +FPI = $D9D2 ;convert floating point to integer +ZFR0 = $DA44 ;zero FR0 +ZF1 = $DA46 ;zero floating point number +FSUB = $DA60 ;subtract floating point numbers +FADD = $DA66 ;add floating point numbers +FMUL = $DADB ;multiply floating point numbers +FDIV = $DB28 ;divide floating point numbers +PLYEVL = $DD40 ;evaluate floating point polynomial +FLD0R = $DD89 ;load floating point number +FLD0P = $DD8D ;load floating point number +FLD1R = $DD98 ;load floating point number +PLD1P = $DD9C ;load floating point number +FST0R = $DDA7 ;store floating point number +FST0P = $DDAB ;store floating point number +FMOVE = $DDB6 ;move floating point number +LOG = $DECD ;calculate floating point logarithm +LOG10 = $DED1 ;calculate floating point base 10 logarithm +EXP = $DDC0 ;calculate floating point exponential +EXP10 = $DDCC ;calculate floating point base 10 exponential + +;------------------------------------------------------------------------- +; Device Handler Vector Table Address Equates +;------------------------------------------------------------------------- + +EDITRV = $E400 ;editor handler vector table +SCRENV = $E410 ;screen handler vector table +KEYBDV = $E420 ;keyboard handler vector table +PRINTV = $E430 ;printer handler vector table +CASETV = $E440 ;cassette handler vector table + +;------------------------------------------------------------------------- +; Jump Vector Address Equates +;------------------------------------------------------------------------- + +DISKIV = $E450 ;vector to initialize DIO +DSKINV = $E453 ;vector to DIO +CIOV = $E456 ;vector to CIO +SIOV = $E459 ;vector to SIO +SETVBV = $E45C ;vector to set VBLANK parameters +SYSVBV = $E45F ;vector to process immediate VBLANK +XITVBV = $E462 ;vector to process deferred VBLANK +SIOINV = $E465 ;vector to initialize SIO +SENDEV = $E468 ;vector to enable SEND +INTINV = $E46B ;vector to initialize interrupt handler +CIOINV = $E46E ;vector to initialize CIO +BLKBDV = $E471 ;vector to power-up display +WARMSV = $E474 ;vector to warmstart +COLDSV = $E477 ;vector to coldstart +RBLOKV = $E47A ;vector to read cassette block +CSOPIV = $E47D ;vector to open cassette for input +VCTABL = $E480 ;RAM vector initial value table +PUPDIV = $E480 ;##rev2## vector to power-up display +SLFTSV = $E483 ;##rev2## vector to self-test +PHENTV = $E486 ;##rev2## vector to enter peripheral handler +PHUNLV = $E489 ;##rev2## vector to unlink peripheral handler +PHINIV = $E48C ;##rev2## vector to initialize peripheral handler +GPDVV = $E48F ;##rev2## generic parallel device handler vector + +; NOTE: OS rom self-test labels are not included in this file + +;------------------------------------------------------------------------- +; Some misc. stuff from the 400/800 rev.B source +;------------------------------------------------------------------------- + +; THE FOLLOWING ARE IN BASIC CARTRIDGE: +SIN = $BD81 ;FR0 <- SIN (FR0) DEGFLG (0=RAD,6=DEG) CARRY +COS = $BD73 ;FR0 <- COS (FR0) CARRY +ATAN = $BE43 ;FR0 <- ATAN(FR0) CARRY +SQR = $BEB1 ;FR0 <- ROOT(FR0) CARRY + +RADON = 0 ;INDICATES RADIANS +DEGON = 6 ;INDICATES DEGREES + +ASCZER = '0' ;ASCII ZERO +COLON = $3A ;ASCII COLON +CR = $9B ;SYSTEM EOL (CARRIAGE RETURN) + +;------------------------------------------------------------------------- +; 6502 +;------------------------------------------------------------------------- + +NMIVEC = $FFFA +RESVEC = $FFFC +IRQVEC = $FFFE + +;------------------------------------------------------------------------- +; BASIC +;------------------------------------------------------------------------- + +LOMEM = $80 ;2-byte low memory pointer +VNTP = $82 ;2-byte variable name table address +VNTD = $84 ;2-byte variable name table end + 1 +VVTP = $86 ;2-byte variable value table +STMTAB = $88 ;2-byte statement table address +STMCUR = $8A ;2-byte current statement pointer +STARP = $8C ;2-byte string and array table pointer +RUNSTK = $8E ;2-byte runtime stack address +;MEMTOP = $90 ;2-byte top of memory pointer +STOPLN = $BA ;2-byte stopped line number +ERRSAVE = $C3 ;1-byte error code +PTABW = $C9 ;1-byte tab width + +;------------------------------------------------------------------------- +; DOS +;------------------------------------------------------------------------- + +DOS = $0700 + +RENAME = $20 ;RENAME DISK FILE +DELETE = $21 ;DELETE DISK FILE +FORMAT = $21 ;FORMAT +LOCKFL = $23 ;LOCK FILE TO READ ONLY +UNLOCK = $24 ;UNLOCK LOCKED FILE +POINT = $25 ;POINT SECTOR +NOTE = $26 ;NOTE SECTOR + +; Command line table, Index values for (DOSVEC),Y -- COMTAB +; Compatible with OS/A+, DOS XL and SpartaDOS + +COMTAB = 0 ;DOS entry jump vector +ZCRNAME = 3 ;file name crunch routine jump vector +BUFOFF = 10 ;next parameter buffer offset +COMFNAM = 33 ;destination buffer for crunch routine +LBUF = 63 ;command line input buffer + +;------------------------------------------------------------------------- +; ATASCII CHARACTER DEFS +;------------------------------------------------------------------------- + +ATCLR = $7D ;CLEAR SCREEN CHARACTER +ATRUB = $7E ;BACK SPACE (RUBOUT) +ATTAB = $7F ;TAB +ATEOL = $9B ;END-OF-LINE +ATDELL = $9C ;delete line +ATINSL = $9D ;insert line +ATCTAB = $9E ;clear TAB +ATSTAB = $9F ;set TAB +ATBEL = $FD ;CONSOLE BELL +ATDEL = $FE ;delete char. +ATINS = $FF ;insert char. +ATURW = $1C ;UP-ARROW +ATDRW = $1D ;DOWN-ARROW +ATLRW = $1E ;LEFT-ARROW +ATRRW = $1F ;RIGHT-ARROW +ATESC = $1B ;ESCAPE + +;------------------------------------------------------------------------- +; OFFSETS INTO SECTSIZETAB (DIO functions) +;------------------------------------------------------------------------- + +sst_flag = 0 ; length 1 +sst_sectsize = 1 ; 2 +sst_driveno = 3 ; 1 (drive #) +sst_size = 4 ; size of one entry + ; if changed, adapt diopncls.s + +;------------------------------------------------------------------------- +; OFFSETS INTO dio_phys_pos +;------------------------------------------------------------------------- + +diopp_head = 0 ; head +diopp_track = 1 ; track / cylinder +diopp_sector = 3 ; sector +diopp_size = 5 ; size of structure + +;------------------------------------------------------------------------- +; VALUES for dos_type +;------------------------------------------------------------------------- + +ATARIDOS = 0 +SPARTADOS = 1 +OSADOS = 2 ; OS/A+ +MYDOS = 3 +NODOS = 255 + +;------------------------------------------------------------------------- +; End of atari.inc +;------------------------------------------------------------------------- + -- 2.39.5