]> git.sur5r.net Git - cc65/commitdiff
added here from libsrc/atari
authorcpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 12 Aug 2003 19:52:00 +0000 (19:52 +0000)
committercpg <cpg@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 12 Aug 2003 19:52:00 +0000 (19:52 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2293 b7a2c559-68d2-44c3-8de9-860c34a00d81

asminc/atari.inc [new file with mode: 0644]

diff --git a/asminc/atari.inc b/asminc/atari.inc
new file mode 100644 (file)
index 0000000..61ebb36
--- /dev/null
@@ -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 <DRAW>
+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
+;-------------------------------------------------------------------------
+