]> git.sur5r.net Git - cc65/blobdiff - asminc/atari.inc
Improved tv timing detection for the c64.
[cc65] / asminc / atari.inc
index 36fb550205ec6396e250cfcfcb1192768eda18e7..1b995e380731e2322512d05888dd9f17f257cb55 100644 (file)
@@ -1,6 +1,6 @@
 ;-------------------------------------------------------------------------
 ; Atari System Equates
-; by Freddy Offenga & Christian Groessler
+; by Freddy Offenga, Christian Groessler, and Christian Krueger
 ;
 ; References:
 ; - Atari 400/800 OS rev.B source code, Atari 1979
 ; - 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
+; ##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
+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
+SEIOCB  = 0*IOCBSZ      ;##rev2## screen editor IOCB index
+MAXIOC  = 8*IOCBSZ      ;first invalid IOCB index
 
-DSCTSZ = 128           ;##rev2## disk sector size
+DSCTSZ  = 128           ;##rev2## disk sector size
 
-LEDGE  = 2             ;left edge
-REDGE  = 39            ;right edge
+LEDGE   = 2             ;left edge
+REDGE   = 39            ;right edge
 
-INIML  = $0700         ;##rev2## initial MEMLO
+INIML   = $0700         ;##rev2## initial MEMLO
 
-ICSORG = $CC00         ;##rev2## international character set origin
-DCSORG = $E000         ;##rev2## domestic character set origin
+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
+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
+
+; DOS IOCB command codes
+
+RENAME  = $20           ;rename disk file
+DELETE  = $21           ;delete disk file
+LOCKFL  = $23           ;lock file (set to read-only)
+UNLOCK  = $24           ;unlock file
+POINT   = $25           ;point sector
+NOTE    = $26           ;note sector
+GETFL   = $27           ;get file length
+CHDIR_MYDOS     = $29   ;change directory (MyDOS)
+MKDIR   = $2A           ;make directory (MyDOS/SpartaDOS)
+RMDIR   = $2B           ;remove directory (SpartaDOS)
+CHDIR_SPDOS     = $2C   ;change directory (SpartaDOS)
+FORMAT  = $FE           ;format
+
+GETCWD  = $30           ;get current directory (MyDOS/SpartaDOS)
 
 ; Special Entry Command Equates
+; DOS Commands
+; 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
 
-; Screen Commands
+; Screen IOCB Commands
 
-DRAWLN = $11           ;draw line
-FILLIN = $12           ;draw line with right fill
+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
+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
+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
+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_RDPERCOM = $4E      ;read PERCOM block (XF551)
+SIO_WRPERCOM = $4F      ;write PERCOM block (XF551)
+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
+SIO_WRITETRK = $60      ;write track (Speedy)
+SIO_READTRK  = $62      ;read track (Speedy)
+
+; SIO Status Code (DSTATS)
+; Input: data direction
+;     Bit #7 - W (write operation)
+;         #6 - R (read operation)
+; Output: status code
+;     $01 (001) -- OPERATION COMPLETE (NO ERRORS)
+;     $8A (138) -- DEVICE TIMEOUT (DOESN'T RESPOND)
+;     $8B (139) -- DEVICE NAK
+;     $8C (140) -- SERIAL BUS INPUT FRAMING ERROR
+;     $8E (142) -- SERIAL BUS DATA FRAME OVERRUN ERROR
+;     $8F (143) -- SERIAL BUS DATA FRAME CHECKSUM ERROR
+;     $90 (144) -- DEVICE DONE ERROR
 
 ; Character and Key Code Equates
 
-CLS    = $7D           ;##rev2## clear screen
-EOL    = $9B           ;end of line (RETURN)
+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
+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: unrecognized 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
+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: unrecognized 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
+XNTBIN  = 180           ;($B4) XDOS: file not binary
 
 ; DCB Device Bus Equates
 
-DISKID = $31           ;##rev2## disk bus ID
-PDEVN  = $40           ;##rev2## printer bus ID
-CASET  = $60           ;##rev2## cassette bus ID
+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
+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
+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
+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
+FPREC   = 6             ;precision
 
-FMPREC = FPREC-1       ;##rev2## length of mantissa
+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)
+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
+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
+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
+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
+DATAER  = 156           ;##rev2## end of record appears before END
+MEMERR  = 157           ;##rev2## memory insufficient for load error
 
 ; Miscellaneous Equates
 
-IOCFRE = $FF           ;IOCB free indication
+IOCFRE  = $FF           ;IOCB free indication
 
-B19200 = $0028         ;##rev2## 19200 baud POKEY counter value
-B00600 = $05CC         ;##rev2## 600 baud POKEY counter value
+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
+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
+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
+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
+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
+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
+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)
+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
+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
+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 (normally 2, cc65 C startup code sets it to 0)
-RMARGN = $53           ;right margin (normally 39 if no XEP80 is used)
-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
+INTZBS  = $10           ;INTERRUPT HANDLER
+
+POKMSK  = $10           ;SYSTEM MASK FOR POKEY IRQ ENABLE (shadow of IRQEN)
+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 (normally 2, cc65 C startup code sets it to 0)
+RMARGN  = $53           ;right margin (normally 39 if no XEP80 is used)
+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
+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
+FRE     = $DA           ;6-byte (internal) register E
 
-FR1    = $E0           ;FP REG1
-FR1M   = $E1           ;##rev2## 5-byte register 1 mantissa
+FR1     = $E0           ;FP REG1
+FR1M    = $E1           ;##rev2## 5-byte register 1 mantissa
 
-FR2    = $E6           ;6-byte (internal) register 2
+FR2     = $E6           ;6-byte (internal) register 2
 
-FRX    = $EC           ;1-byte temporary
+FRX     = $EC           ;1-byte temporary
 
-EEXP   = $ED           ;VALUE OF E
+EEXP    = $ED           ;VALUE OF E
 
-FRSIGN = $EE           ;##rev2## 1-byte floating point sign
-NSIGN  = $EE           ;SIGN OF #
+FRSIGN  = $EE           ;##rev2## 1-byte floating point sign
+NSIGN   = $EE           ;SIGN OF #
 
-PLYCNT = $EF           ;##rev2## 1-byte polynomial degree
-ESIGN  = $EF           ;SIGN OF EXPONENT
+PLYCNT  = $EF           ;##rev2## 1-byte polynomial degree
+ESIGN   = $EF           ;SIGN OF EXPONENT
 
-SGNFLG = $F0           ;##rev2## 1-byte sign flag
-FCHRFLG        = $F0           ;1ST CHAR FLAG
+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
+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
+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
+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
+;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
+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 BE 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
+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 IRQ
+VTIMR2  = $0212         ;POKEY TIMER 2 IRQ
+VTIMR4  = $0214         ;POKEY TIMER 4 IRQ
+VIMIRQ  = $0216         ;IMMEDIATE IRQ 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 BE 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
+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
+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
+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
 
-LBPR1  = $057E         ;LBUFF PREFIX 1
-LBPR2  = $057F         ;LBUFF PREFIX 2
-LBUFF  = $0580         ;128-byte line buffer
+;LBFEND = $05FF         ;##old## END OF LBUFF
 
-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
+DOS     = $0700
 
 ;-------------------------------------------------------------------------
 ; 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
+CARTCS  = $BFFA         ;##rev2## 2-byte cartridge coldstart address
+CART    = $BFFC         ;##rev2## 1-byte cartridge present indicator
+                        ;0=Cart Exists
+CARTFG  = $BFFD         ;##rev2## 1-byte cartridge flags
+                        ;D7  0=Not a Diagnostic Cart
+                        ;    1=Is a Diagnostic cart and control is
+                        ;      given to cart before any OS is init.
+                        ;D2  0=Init but Do not Start Cart
+                        ;    1=Init and Start Cart
+                        ;D0  0=Do not boot disk
+                        ;    1=Boot Disk
+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
-SIZEP2 = $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
+GTIA    = $D000         ;CTIA/GTIA area
+.include "atari_gtia.inc"
 
 ;-------------------------------------------------------------------------
 ; PBI Address Equates
 ;-------------------------------------------------------------------------
 
-PBI    = $D100         ;##rev2## parallel bus interface area
+PBI     = $D100         ;##rev2## parallel bus interface area
 
 ; Read Addresses
 
-PDVI   = $D1FF         ;##rev2## parallel device IRQ status
+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
+PDVS    = $D1FF         ;##rev2## parallel device select
 
 ;-------------------------------------------------------------------------
 ; POKEY Address Equates
 ;-------------------------------------------------------------------------
 
-POKEY  = $D200         ;POKEY area
+POKEY     = $D200         ;POKEY area
+.include  "atari_pokey.inc"
 
-; 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
+;-------------------------------------------------------------------------
+; ANTIC Address Equates
+;-------------------------------------------------------------------------
 
-AUDF1  = $D200         ;channel 1 audio frequency
-AUDC1  = $D201         ;channel 1 audio control
+ANTIC     = $D400         ;ANTIC area
+.include  "atari_antic.inc"
 
-AUDF2  = $D202         ;channel 2 audio frequency
-AUDC2  = $D203         ;channel 2 audio control
+; PBI RAM Address Equates
 
-AUDF3  = $D204         ;channel 3 audio frequency
-AUDC3  = $D205         ;channel 3 audio control
+PBIRAM  = $D600         ;##rev2## parallel bus interface RAM area
 
-AUDF4  = $D206         ;channel 4 audio frequency
-AUDC4  = $D207         ;channel 4 audio control
+; Parallel Device Address Equates
 
-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
+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
 
 ;-------------------------------------------------------------------------
 ; 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
+PIA     = $D300         ;PIA area
 
-; Write Addresses
+PORTA   = $D300         ;port A direction register or jacks one/two
+PORTB   = $D301         ;port B direction register or memory management
 
-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
+PACTL   = $D302         ;port A control
+PBCTL   = $D303         ;port B control
 
 ;-------------------------------------------------------------------------
 ; 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
+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
+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
+DISKIV  = $E450         ;vector to initialize DIO
+DSKINV  = $E453         ;vector to DIO
+.ifdef __ATARIXL__
+.ifndef SHRAM_HANDLERS
+.import CIO_handler, SIO_handler, SETVBV_handler
+.endif
+.define CIOV    CIO_handler
+.define SIOV    SIO_handler
+.define SETVBV  SETVBV_handler
+CIOV_org    = $E456     ;vector to CIO
+SIOV_org    = $E459     ;vector to SIO
+SETVBV_org  = $E45C     ;vector to set VBLANK parameters
+.else
+CIOV    = $E456         ;vector to CIO
+SIOV    = $E459         ;vector to SIO
+SETVBV  = $E45C         ;vector to set VBLANK parameters
+; aliases in order not to have to sprinkle common code with .ifdefs
+CIOV_org    = CIOV
+SIOV_org    = SIOV
+SETVBV_org  = SETVBV
+.endif
+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
 
@@ -985,117 +921,120 @@ GPDVV   = $E48F         ;##rev2## generic parallel device handler vector
 ;-------------------------------------------------------------------------
 
 ; 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
+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
+RADON   = 0             ;INDICATES RADIANS
+DEGON   = 6             ;INDICATES DEGREES
 
-ASCZER = '0'           ;ASCII ZERO
-COLON  = $3A           ;ASCII COLON 
-CR     = $9B           ;SYSTEM EOL (CARRIAGE RETURN)
+ASCZER  = '0'           ;ASCII ZERO
+COLON   = $3A           ;ASCII COLON
+CR      = $9B           ;SYSTEM EOL (CARRIAGE RETURN)
 
 ;-------------------------------------------------------------------------
 ; 6502
 ;-------------------------------------------------------------------------
 
-NMIVEC = $FFFA
-RESVEC = $FFFC
-IRQVEC = $FFFE
+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
-LOCKFL = $23           ;LOCK FILE TO READ ONLY
-UNLOCK = $24           ;UNLOCK LOCKED FILE
-POINT  = $25           ;POINT SECTOR
-NOTE   = $26           ;NOTE SECTOR
-FORMAT = $FE           ;FORMAT
-
-; 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
+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
+BMEMTOP = $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
 
 ;-------------------------------------------------------------------------
 ; 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
+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
+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
+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
+SPARTADOS    = 0
+OSADOS       = 1        ; OS/A+
+XDOS         = 2
+ATARIDOS     = 3
+MYDOS        = 4
 NODOS        = 255
+; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support
+; command line arguments.
+MAX_DOS_WITH_CMDLINE = XDOS
 
 ;-------------------------------------------------------------------------
-; End of atari.inc
+; XDOS defines (version 2.4, taken from xdos24.pdf)
 ;-------------------------------------------------------------------------
 
+XOPT         = $070B    ; XDOS options
+XCAR         = $070C    ; XDOS cartridge address (+ $70D)
+XPAT         = $086F    ; XDOS bugfix and patch number
+XVER         = $0870    ; XDOS version number
+XFILE        = $087D    ; XDOS filename buffer
+XLINE        = $0880    ; XDOS DUP input line
+XGLIN        = $0871    ; get line
+XSKIP        = $0874    ; skip parameter
+.ifdef __ATARIXL__
+.ifndef SHRAM_HANDLERS
+.import XMOVE_handler
+.endif
+.define XMOVE XMOVE_handler
+XMOVE_org    = $0877    ; move filename
+.else
+XMOVE        = $0877    ; move filename
+.endif
+XGNUM        = $087A    ; get number
+
+;-------------------------------------------------------------------------
+; End of atari.inc
+;-------------------------------------------------------------------------