📄 atari.inc
字号:
;-------------------------------------------------------------------------; 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 HATABSIOCBSZ = 16 ;length of IOCBSEIOCB = 0*IOCBSZ ;##rev2## screen editor IOCB indexMAXIOC = 8*IOCBSZ ;first invalid IOCB indexDSCTSZ = 128 ;##rev2## disk sector sizeLEDGE = 2 ;left edgeREDGE = 39 ;right edgeINIML = $0700 ;##rev2## initial MEMLOICSORG = $CC00 ;##rev2## international character set originDCSORG = $E000 ;##rev2## domestic character set origin; IOCB Command Code EquatesOPEN = $03 ;openGETREC = $05 ;get recordGETCHR = $07 ;get character(s)PUTREC = $09 ;put recordPUTCHR = $0B ;put character(s)CLOSE = $0C ;closeSTATIS = $0D ;statusSPECIL = $0E ;special; Special Entry Command Equates; Screen CommandsDRAWLN = $11 ;draw lineFILLIN = $12 ;draw line with right fill; ICAX1 Auxiliary Byte 1 EquatesAPPEND = $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 EquatesCASSET = 'C' ;cassetteDISK = 'D' ;diskSCREDT = 'E' ;screen editorKBD = 'K' ;keyboardPRINTR = 'P' ;printerDISPLY = 'S' ;screen display; SIO Command Code EquatesSIO_FORMAT = $21 ;format disk (default density)SIO_FORMATS = $22 ;1050: format medium densitySIO_CONFIG = $44 ;configure driveSIO_CONFIGSF = $4B ;slow/fast configure drive??SIO_WRITE = $50 ;write sectorSIO_READ = $52 ;read sectorSIO_STAT = $53 ;get status informationSIO_VERIFY = $56 ;verify sector SIO_WRITEV = $57 ;write sector with verify; Character and Key Code EquatesCLS = $7D ;##rev2## clear screenEOL = $9B ;end of line (RETURN)HELP = $11 ;##1200xl## key code for HELPCNTLF1 = $83 ;##1200xl## key code for CTRL-F1CNTLF2 = $84 ;##1200xl## key code for CTRL-F2CNTLF3 = $93 ;##1200xl## key code for CTRL-F3CNTLF4 = $94 ;##1200xl## key code for CTRL-F4CNTL1 = $9F ;##1200xl## key code for CTRL-1; Status Code EquatesSUCCES = 1 ;($01) succesful operationBRKABT = 128 ;($80) BREAK key abortPRVOPN = 129 ;($81) IOCB already open errorNONDEV = 130 ;($82) nonexistent device errorWRONLY = 131 ;($83) IOCB opened for write only errorNVALID = 132 ;($84) invalid command errorNOTOPN = 133 ;($85) device/file not open errorBADIOC = 134 ;($86) invalid IOCB index errorRDONLY = 135 ;($87) IOCB opened for read only errorEOFERR = 136 ;($88) end of file errorTRNRCD = 137 ;($89) truncated record errorTIMOUT = 138 ;($8A) peripheral device timeout errorDNACK = 139 ;($8B) device does not acknowledge commandFRMERR = 140 ;($8C) serial bus framing errorCRSROR = 141 ;($8D) cursor overrange errorOVRRUN = 142 ;($8E) serial bus data overrun errorCHKERR = 143 ;($8F) serial bus checksum errorDERROR = 144 ;($90) device done (operation incomplete)BADMOD = 145 ;($91) bad screen mode number errorFNCNOT = 146 ;($92) function not implemented in handlerSCRMEM = 147 ;($93) insufficient memory for screen modeDSKFMT = 148 ;($94) SpartaDOS: urecognized disk formatINCVER = 149 ;($95) SpartaDOS: disk was made with incompat. versionDIRNFD = 150 ;($96) SpartaDOS: directory not foundFEXIST = 151 ;($97) SpartaDOS: file existsNOTBIN = 152 ;($98) SpartaDOS: file not binaryLSYMND = 154 ;($9A) SDX: loader symbol not definedBADPRM = 156 ;($9C) SDX: bad parameterOUTOFM = 158 ;($9E) SDX: out of memoryINVDEV = 160 ;($A0) invalid device numberTMOF = 161 ;($A1) too many open filesDSKFLL = 162 ;($A2) disk fullFATLIO = 163 ;($A3) fatal I/O errorFNMSMT = 164 ;($A4) internal file number mismatchINVFNM = 165 ;($A5) invalid file namePDLERR = 166 ;($A6) point data length errorEPERM = 167 ;($A7) permission deniedDINVCM = 168 ;($A8) command invalid for diskDIRFLL = 169 ;($A9) directory fullFNTFND = 170 ;($AA) file not foundPNTINV = 171 ;($AB) point invalidBADDSK = 173 ;($AD) bad diskINCFMT = 176 ;($B0) DOS 3: incompatible file system; DCB Device Bus EquatesDISKID = $31 ;##rev2## disk bus IDPDEVN = $40 ;##rev2## printer bus IDCASET = $60 ;##rev2## cassette bus ID; Bus Command EquatesFOMAT = '!' ;##rev2## format commandPUTSEC = 'P' ;##rev2## put sector commandREAD = 'R' ;##rev2## read commandSTATC = 'S' ;##rev2## status commandWRITE = 'W' ;##rev2## write command; Command Auxiliary Byte EquatesDOUBLE = 'D' ;##rev2## print 20 characters double widthNORMAL = 'N' ;##rev2## print 40 characters normallyPLOT = 'P' ;##rev2## plotSIDWAY = 'S' ;##rev2## print 16 characters sideways; Bus Response EquatesACK = 'A' ;##rev2## device acknowledgedCOMPLT = 'C' ;##rev2## device succesfully completed operationERROR = 'E' ;##rev2## device incurred errorNACK = 'N' ;##rev2## device did not understand; Floating Point Miscellaneous EquatesFPREC = 6 ;precisionFMPREC = FPREC-1 ;##rev2## length of mantissa; Cassette Record Type EquatesHDR = $FB ;##rev2## headerDTA = $FC ;##rev2## data recordDT1 = $FA ;##rev2## last data recordEOT = $FE ;##rev2## end of tape (file)TONE1 = 2 ;##rev2## recordTONE2 = 1 ;##rev2## playback; Cassette Timing EquatesWLEADN = 1152 ;##rev2## NTSC 19.2 second WRITE file leaderRLEADN = 576 ;##rev2## NTSC 9.6 second READ file leaderWIRGLN = 180 ;##rev2## NTSC 3.0 second WRITE IRGRIRGLN = 120 ;##rev2## NTSC 2.0 second READ IRGWSIRGN = 15 ;##rev2## NTSC 0.25 second WRITE short IRGRSIRGN = 10 ;##rev2## NTSC 0.16 second READ short IRGBEEPNN = 30 ;##rev2## NTSC 0.5 second beep durationBEEPFN = 10 ;##rev2## NTSC 0.16 seconrd beep durationWLEADP = 960 ;##rev2## PAL 19.2 second WRITE file leaderRLEADP = 480 ;##rev2## PAL 9.6 second READ file leaderWIRGLP = 150 ;##rev2## PAL 3.0 second WRITE IRGRIRGLP = 100 ;##rev2## PAL 2.0 second READ IRGWSIRGP = 13 ;##rev2## PAL 0.25 second WRITE short IRGRSIRGP = 8 ;##rev2## PAL 0.16 second READ short IRGBEEPNP = 25 ;##rev2## PAL 0.5 second beep durationBEEPFP = 8 ;##rev2## PAL 0.16 seconrd beep durationWIRGHI = 0 ;##rev2## high WRITE IRGRIRGHI = 0 ;##rev2## high READ IRG; Power-up Validation Byte Value EquatesPUPVL1 = $5C ;##rev2## power-up validation value 1PUPVL2 = $93 ;##rev2## power-up validation value 2PUPVL3 = $25 ;##rev2## power-up validation value 3; Relocating Loader Miscellaneous EquatesDATAER = 156 ;##rev2## end of record appears before ENDMEMERR = 157 ;##rev2## memory insufficient for load error; Miscellaneous EquatesIOCFRE = $FF ;IOCB free indicationB19200 = $0028 ;##rev2## 19200 baud POKEY counter valueB00600 = $05CC ;##rev2## 600 baud POKEY counter valueHITONE = $05 ;##rev2## FSK high freq. POKEY counter valueLOTONE = $07 ;##rev2## FSK low freq. POKEY counter valueNCOMLO = $34 ;##rev2## PIA lower NOT COMMAND line commandNCOMHI = $3C ;##rev2## PIA raise NOT COMMAND line commandMOTRGO = $34 ;##rev2## PIA cassette motor ON commandMOTRST = $3C ;##rev2## PIA cassette motor OFF commandNODAT = $00 ;##rev2## SIO immediate operationGETDAT = $40 ;##rev2## SIO read data framePUTDAT = $80 ;##rev2## SIO write data frameCRETRI = 13 ;##rev2## number of command frame retriesDRETRI = 1 ;##rev2## number of device retriesCTIM = 2 ;##rev2## command frame ACK timeoutNBUFSZ = 40 ;##rev2## print normal buffer sizeDBUFSZ = 20 ;##rev2## print double buffer sizeSBUFSZ = 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 ClearedCASINI = $02 ;CASSETTE INIT LOCATIONRAMLO = $04 ;RAM POINTER FOR MEMORY TESTTRAMSZ = $06 ;TEMPORARY REGISTER FOR RAM SIZE;TSTDAT = $07 ;##old## RAM TEST DATA REGISTERCMCMD = $07 ;##rev2## 1-byte command communications; Cleared upon Coldstart onlyWARMST = $08 ;WARM START FLAGBOOTQ = $09 ;SUCCESSFUL BOOT FLAGDOSVEC = $0A ;DISK SOFTWARE START VECTORDOSINI = $0C ;DISK SOFTWARE INIT ADDRESSAPPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT; Cleared upon Coldstart or WarmstartINTZBS = $10 ;INTERRUPT HANDLERPOKMSK = $10 ;SYSTEM MASK FOR POKEY IRG ENABLEBRKKEY = $11 ;BREAK KEY FLAGRTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS>BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTERICCOMT = $17 ;COMMAND FOR VECTORDSKFMS = $18 ;DISK FILE MANAGER POINTERDSKUTL = $1A ;DISK UTILITIES POINTERABUFPT = $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 REGISTERZIOCB = $20 ;ZERO PAGE I/O CONTROL BLOCKIOCBAS = $20 ;16-byte page zero IOCBICHIDZ = $20 ;HANDLER INDEX NUMBER (FF = IOCB FREE)ICDNOZ = $21 ;DEVICE NUMBER (DRIVE NUMBER)ICCOMZ = $22 ;COMMAND CODEICSTAZ = $23 ;STATUS OF LAST IOCB ACTIONICBALZ = $24 ;BUFFER ADDRESS LOW BYTEICBAHZ = $25 ;1-byte high buffer addressICPTLZ = $26 ;PUT BYTE ROUTINE ADDRESS -1ICPTHZ = $27 ;1-byte high PUT-BYTE routine addressICBLLZ = $28 ;BUFFER LENGTH LOW BYTEICBLHZ = $29 ;1-byte high buffer lengthICAX1Z = $2A ;AUXILIARY INFORMATION FIRST BYTEICAX2Z = $2B ;1-byte second auxiliary informationICSPRZ = $2C ;4-byte sparesENTVEC = $2C ;##rev2## 2-byte (not used)ICIDNO = $2E ;IOCB NUMBER X 16CIOCHR = $2F ;CHARACTER BYTE FOR CURRENT OPERATIONSTATUS = $30 ;INTERNAL STATUS STORAGECHKSUM = $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 LOBFENHI = $35 ;NEXT BYTE PAST END OF THE DATA BUFFER HI;CRETRY = $36 ;##old## NUMBER OF COMMAND FRAME RETRIES;DRETRY = $37 ;##old## NUMBER OF DEVICE RETRIESLTEMP = $36 ;##1200xl## 2-byte loader temporaryBUFRFL = $38 ;DATA BUFFER FULL FLAGRECVDN = $39 ;RECEIVE DONE FLAGXMTDON = $3A ;TRANSMISSION DONE FLAGCHKSNT = $3B ;CHECKSUM SENT FLAGNOCKSM = $3C ;NO CHECKSUM FOLLOWS DATA FLAGBPTR = $3D ;1-byte cassette buffer pointerFTYPE = $3E ;1-byte cassette IRG typeFEOF = $3F ;1-byte cassette EOF flag (0 = quiet)FREQ = $40 ;1-byte cassette beep counterSOUNDR = $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 PRESSEDZCHAIN = $4A ;##1200xl## 2-byte handler linkage chain pointer;CASSBT = $4B ;##old## CASSETTE BOOT FLAGDSTAT = $4C ;DISPLAY STATUSATRACT = $4D ;ATRACT FLAGDRKMSK = $4E ;DARK ATRACT MASKCOLRSH = $4F ;ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELDTMPCHR = $50 ;1-byte temporary characterHOLD1 = $51 ;1-byte temporaryLMARGN = $52 ;LEFT MARGIN (SET TO 1 AT POWER ON>RMARGN = $53 ;RIGHT MARGIN (SET TO 38 AT POWER ON)ROWCRS = $54 ;1-byte cursor rowCOLCRS = $55 ;2-byte cursor columnDINDEX = $57 ;1-byte display modeSAVMSC = $58 ;2-byte saved memory scan counterOLDROW = $5A ;1-byte prior rowOLDCOL = $5B ;2-byte prior columnOLDCHR = $5D ;DATA UNDER CURSOROLDADR = $5E ;2-byte saved cursor memory addressFKDEF = $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 LINEADRESS = $64 ;2-byte temporary addressMLTTMP = $66 ;1-byte temporaryOPNTMP = $66 ;FIRST BYTE IS USED IN OPEN AS TEMPTOADR = $66 ;##rev2## 2-byte destination addressSAVADR = $68 ;2-byte saved address
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -