1 ;-------------------------------------------------------------------------
2 ; Atari System Equates -- Version 1.0.0
3 ; By Freddy Offenga, 4/15/2000
6 ; - Atari 400/800 OS rev.B source code, Atari 1979
7 ; - Atari OS manual - XL addendum
8 ; - Atari XL/XE rev.2 source code, Atari 1984
9 ; - Mapping the Atari - revised edition, Ian Chadwick 1985
11 ; ##old## old OS rev.B label - moved or deleted
12 ; ##1200xl## new label introduced in 1200XL OS (rev.10/11)
13 ; ##rev2## new label introduced in XL/XE OS rev.2
14 ;-------------------------------------------------------------------------
16 ;-------------------------------------------------------------------------
17 ; Configuration Equates
18 ;-------------------------------------------------------------------------
20 MAXDEV = 33 ;offset to last possible entry of HATABS
21 IOCBSZ = 16 ;length of IOCB
23 SEIOCB = 0*IOCBSZ ;##rev2## screen editor IOCB index
24 MAXIOC = 8*IOCBSZ ;first invalid IOCB index
26 DSCTSZ = 128 ;##rev2## disk sector size
29 REDGE = 39 ;right edge
31 INIML = $0700 ;##rev2## initial MEMLO
33 ICSORG = $CC00 ;##rev2## international character set origin
34 DCSORG = $E000 ;##rev2## domestic character set origin
36 ; IOCB Command Code Equates
39 GETREC = $05 ;get record
40 GETCHR = $07 ;get character(s)
41 PUTREC = $09 ;put record
42 PUTCHR = $0B ;put character(s)
47 ; Special Entry Command Equates
51 DRAWLN = $11 ;draw line
52 FILLIN = $12 ;draw line with right fill
54 ; ICAX1 Auxiliary Byte 1 Equates
56 APPEND = $01 ;open write append (D:)
57 DIRECT = $02 ;open for directory access (D:)
58 OPNIN = $04 ;open for input (all devices)
59 OPNOT = $08 ;open for output (all devices)
60 MXDMOD = $10 ;open for mixed mode (E:, S:)
61 INSCLR = $20 ;open for input without clearing screen
65 CASSET = 'C' ;cassette
67 SCREDT = 'E' ;screen editor
70 DISPLY = 'S' ;screen display
72 ; Character and Key Code Equates
74 CLS = $7D ;##rev2## clear screen
75 EOL = $9B ;end of line (RETURN)
77 HELP = $11 ;##1200xl## key code for HELP
78 CNTLF1 = $83 ;##1200xl## key code for CTRL-F1
79 CNTLF2 = $84 ;##1200xl## key code for CTRL-F2
80 CNTLF3 = $93 ;##1200xl## key code for CTRL-F3
81 CNTLF4 = $94 ;##1200xl## key code for CTRL-F4
82 CNTL1 = $9F ;##1200xl## key code for CTRL-1
86 SUCCES = 1 ;($01) succesful operation
88 BRKABT = 128 ;($80) BREAK key abort
89 PRVOPN = 129 ;($81) IOCB already open error
90 NONDEV = 130 ;($82) nonexistent device error
91 WRONLY = 131 ;($83) IOCB opened for write only error
92 NVALID = 132 ;($84) invalid command error
93 NOTOPN = 133 ;($85) device/file not open error
94 BADIOC = 134 ;($86) invalid IOCB index error
95 RDONLY = 135 ;($87) IOCB opened for read only error
96 EOFERR = 136 ;($88) end of file error
97 TRNRCD = 137 ;($89) truncated record error
98 TIMOUT = 138 ;($8A) peripheral device timeout error
99 DNACK = 139 ;($8B) device does not acknowledge command
100 FRMERR = 140 ;($8C) serial bus framing error
101 CRSROR = 141 ;($8D) cursor overrange error
102 OVRRUN = 142 ;($8E) serial bus data overrun error
103 CHKERR = 143 ;($8F) serial bus checksum error
104 DERROR = 144 ;($90) device done (operation incomplete)
105 BADMOD = 145 ;($91) bad screen mode number error
106 FNCNOT = 146 ;($92) function not implemented in handler
107 SCRMEM = 147 ;($93) insufficient memory for screen mode
109 ; DCB Device Bus Equates
111 DISKID = $31 ;##rev2## disk bus ID
112 PDEVN = $40 ;##rev2## printer bus ID
113 CASET = $60 ;##rev2## cassette bus ID
115 ; Bus Command Equates
117 FOMAT = '!' ;##rev2## format command
118 PUTSEC = 'P' ;##rev2## put sector command
119 READ = 'R' ;##rev2## read command
120 STATC = 'S' ;##rev2## status command
121 WRITE = 'W' ;##rev2## write command
123 ; Command Auxiliary Byte Equates
125 DOUBLE = 'D' ;##rev2## print 20 characters double width
126 NORMAL = 'N' ;##rev2## print 40 characters normally
127 PLOT = 'P' ;##rev2## plot
128 SIDWAY = 'S' ;##rev2## print 16 characters sideways
130 ; Bus Response Equates
132 ACK = 'A' ;##rev2## device acknowledged
133 COMPLT = 'C' ;##rev2## device succesfully completed operation
134 ERROR = 'E' ;##rev2## device incurred error
135 NACK = 'N' ;##rev2## device did not understand
137 ; Floating Point Miscellaneous Equates
141 FMPREC = FPREC-1 ;##rev2## length of mantissa
143 ; Cassette Record Type Equates
145 HDR = $FB ;##rev2## header
146 DTA = $FC ;##rev2## data record
147 DT1 = $FA ;##rev2## last data record
148 EOT = $FE ;##rev2## end of tape (file)
150 TONE1 = 2 ;##rev2## record
151 TONE2 = 1 ;##rev2## playback
153 ; Cassette Timing Equates
155 WLEADN = 1152 ;##rev2## NTSC 19.2 second WRITE file leader
156 RLEADN = 576 ;##rev2## NTSC 9.6 second READ file leader
157 WIRGLN = 180 ;##rev2## NTSC 3.0 second WRITE IRG
158 RIRGLN = 120 ;##rev2## NTSC 2.0 second READ IRG
159 WSIRGN = 15 ;##rev2## NTSC 0.25 second WRITE short IRG
160 RSIRGN = 10 ;##rev2## NTSC 0.16 second READ short IRG
161 BEEPNN = 30 ;##rev2## NTSC 0.5 second beep duration
162 BEEPFN = 10 ;##rev2## NTSC 0.16 seconrd beep duration
164 WLEADP = 960 ;##rev2## PAL 19.2 second WRITE file leader
165 RLEADP = 480 ;##rev2## PAL 9.6 second READ file leader
166 WIRGLP = 150 ;##rev2## PAL 3.0 second WRITE IRG
167 RIRGLP = 100 ;##rev2## PAL 2.0 second READ IRG
168 WSIRGP = 13 ;##rev2## PAL 0.25 second WRITE short IRG
169 RSIRGP = 8 ;##rev2## PAL 0.16 second READ short IRG
170 BEEPNP = 25 ;##rev2## PAL 0.5 second beep duration
171 BEEPFP = 8 ;##rev2## PAL 0.16 seconrd beep duration
173 WIRGHI = 0 ;##rev2## high WRITE IRG
174 RIRGHI = 0 ;##rev2## high READ IRG
176 ; Power-up Validation Byte Value Equates
178 PUPVL1 = $5C ;##rev2## power-up validation value 1
179 PUPVL2 = $93 ;##rev2## power-up validation value 2
180 PUPVL3 = $25 ;##rev2## power-up validation value 3
182 ; Relocating Loader Miscellaneous Equates
184 DATAER = 156 ;##rev2## end of record appears before END
185 MEMERR = 157 ;##rev2## memory insufficient for load error
187 ; Miscellaneous Equates
189 IOCFRE = $FF ;IOCB free indication
191 B19200 = $0028 ;##rev2## 19200 baud POKEY counter value
192 B00600 = $05CC ;##rev2## 600 baud POKEY counter value
194 HITONE = $05 ;##rev2## FSK high freq. POKEY counter value
195 LOTONE = $07 ;##rev2## FSK low freq. POKEY counter value
197 NCOMLO = $34 ;##rev2## PIA lower NOT COMMAND line command
198 NCOMHI = $3C ;##rev2## PIA raise NOT COMMAND line command
200 MOTRGO = $34 ;##rev2## PIA cassette motor ON command
201 MOTRST = $3C ;##rev2## PIA cassette motor OFF command
203 NODAT = $00 ;##rev2## SIO immediate operation
204 GETDAT = $40 ;##rev2## SIO read data frame
205 PUTDAT = $80 ;##rev2## SIO write data frame
207 CRETRI = 13 ;##rev2## number of command frame retries
208 DRETRI = 1 ;##rev2## number of device retries
209 CTIM = 2 ;##rev2## command frame ACK timeout
211 NBUFSZ = 40 ;##rev2## print normal buffer size
212 DBUFSZ = 20 ;##rev2## print double buffer size
213 SBUFSZ = 29 ;##rev2## print sideways buffer size
215 ;-------------------------------------------------------------------------
216 ; Page Zero Address Equates
217 ;-------------------------------------------------------------------------
219 LINZBS = $00 ;LINBUG RAM (WILL BE REPLACED BY MONITOR RAM)
220 LNFLG = $00 ;##1200xl## 1-byte LNBUG flag (0 = not LNBUG)
221 NGFLAG = $01 ;##1200xl## 1-byte memory status (0 = failure)
225 CASINI = $02 ;CASSETTE INIT LOCATION
226 RAMLO = $04 ;RAM POINTER FOR MEMORY TEST
227 TRAMSZ = $06 ;TEMPORARY REGISTER FOR RAM SIZE
228 ;TSTDAT = $07 ;##old## RAM TEST DATA REGISTER
229 CMCMD = $07 ;##rev2## 1-byte command communications
231 ; Cleared upon Coldstart only
233 WARMST = $08 ;WARM START FLAG
234 BOOTQ = $09 ;SUCCESSFUL BOOT FLAG
235 DOSVEC = $0A ;DISK SOFTWARE START VECTOR
236 DOSINI = $0C ;DISK SOFTWARE INIT ADDRESS
237 APPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT
239 ; Cleared upon Coldstart or Warmstart
241 INTZBS = $10 ;INTERRUPT HANDLER
243 POKMSK = $10 ;SYSTEM MASK FOR POKEY IRG ENABLE
244 BRKKEY = $11 ;BREAK KEY FLAG
245 RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS>
246 BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER
247 ICCOMT = $17 ;COMMAND FOR VECTOR
248 DSKFMS = $18 ;DISK FILE MANAGER POINTER
249 DSKUTL = $1A ;DISK UTILITIES POINTER
250 ABUFPT = $1C ;##1200xl## 4-byte ACMI buffer pointer area
252 ;PTIMOT = $1C ;##old## PRINTER TIME OUT REGISTER
253 ;PBPNT = $1D ;##old## PRINT BUFFER POINTER
254 ;PBUFSZ = $1E ;##old## PRINT BUFFER SIZE
255 ;PTEMP = $1F ;##old## TEMPORARY REGISTER
257 ZIOCB = $20 ;ZERO PAGE I/O CONTROL BLOCK
258 IOCBAS = $20 ;16-byte page zero IOCB
259 ICHIDZ = $20 ;HANDLER INDEX NUMBER (FF = IOCB FREE)
260 ICDNOZ = $21 ;DEVICE NUMBER (DRIVE NUMBER)
261 ICCOMZ = $22 ;COMMAND CODE
262 ICSTAZ = $23 ;STATUS OF LAST IOCB ACTION
263 ICBALZ = $24 ;BUFFER ADDRESS LOW BYTE
264 ICBAHZ = $25 ;1-byte high buffer address
265 ICPTLZ = $26 ;PUT BYTE ROUTINE ADDRESS -1
266 ICPTHZ = $27 ;1-byte high PUT-BYTE routine address
267 ICBLLZ = $28 ;BUFFER LENGTH LOW BYTE
268 ICBLHZ = $29 ;1-byte high buffer length
269 ICAX1Z = $2A ;AUXILIARY INFORMATION FIRST BYTE
270 ICAX2Z = $2B ;1-byte second auxiliary information
271 ICSPRZ = $2C ;4-byte spares
273 ENTVEC = $2C ;##rev2## 2-byte (not used)
274 ICIDNO = $2E ;IOCB NUMBER X 16
275 CIOCHR = $2F ;CHARACTER BYTE FOR CURRENT OPERATION
277 STATUS = $30 ;INTERNAL STATUS STORAGE
278 CHKSUM = $31 ;CHECKSUM (SINGLE BYTE SUM WITH CARRY)
279 BUFRLO = $32 ;POINTER TO DATA BUFFER (LO BYTE)
280 BUFRHI = $33 ;POINTER TO DATA BUFFER (HI BYTE)
281 BFENLO = $34 ;NEXT BYTE PAST END OF THE DATA BUFFER LO
282 BFENHI = $35 ;NEXT BYTE PAST END OF THE DATA BUFFER HI
283 ;CRETRY = $36 ;##old## NUMBER OF COMMAND FRAME RETRIES
284 ;DRETRY = $37 ;##old## NUMBER OF DEVICE RETRIES
285 LTEMP = $36 ;##1200xl## 2-byte loader temporary
286 BUFRFL = $38 ;DATA BUFFER FULL FLAG
287 RECVDN = $39 ;RECEIVE DONE FLAG
288 XMTDON = $3A ;TRANSMISSION DONE FLAG
289 CHKSNT = $3B ;CHECKSUM SENT FLAG
290 NOCKSM = $3C ;NO CHECKSUM FOLLOWS DATA FLAG
291 BPTR = $3D ;1-byte cassette buffer pointer
292 FTYPE = $3E ;1-byte cassette IRG type
293 FEOF = $3F ;1-byte cassette EOF flag (0 = quiet)
294 FREQ = $40 ;1-byte cassette beep counter
295 SOUNDR = $41 ;NOISY I/0 FLAG. (ZERO IS QUIET)
297 CRITIC = $42 ;DEFINES CRITICAL SECTION (CRITICAL IF NON-Z)
299 FMSZPG = $43 ;DISK FILE MANAGER SYSTEM ZERO PAGE
301 ;CKEY = $4A ;##old## FLAG SET WHEN GAME START PRESSED
302 ZCHAIN = $4A ;##1200xl## 2-byte handler linkage chain pointer
303 ;CASSBT = $4B ;##old## CASSETTE BOOT FLAG
304 DSTAT = $4C ;DISPLAY STATUS
305 ATRACT = $4D ;ATRACT FLAG
306 DRKMSK = $4E ;DARK ATRACT MASK
307 COLRSH = $4F ;ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD
310 TMPCHR = $50 ;1-byte temporary character
311 HOLD1 = $51 ;1-byte temporary
312 LMARGN = $52 ;LEFT MARGIN (SET TO 1 AT POWER ON>
313 RMARGN = $53 ;RIGHT MARGIN (SET TO 38 AT POWER ON)
314 ROWCRS = $54 ;1-byte cursor row
315 COLCRS = $55 ;2-byte cursor column
316 DINDEX = $57 ;1-byte display mode
317 SAVMSC = $58 ;2-byte saved memory scan counter
318 OLDROW = $5A ;1-byte prior row
319 OLDCOL = $5B ;2-byte prior column
320 OLDCHR = $5D ;DATA UNDER CURSOR
321 OLDADR = $5E ;2-byte saved cursor memory address
322 FKDEF = $60 ;##1200xl## 2-byte function key definition table
323 ;NEWROW = $60 ;##old## POINT DRAW GOES TO
324 ;NEWCOL = $61 ;##old##
325 PALNTS = $62 ;##1200xl## 1-byte PAL/NTSC indicator (0 = NTSC)
326 LOGCOL = $63 ;POINTS AT COLUMN IN LOGICAL LINE
327 ADRESS = $64 ;2-byte temporary address
329 MLTTMP = $66 ;1-byte temporary
330 OPNTMP = $66 ;FIRST BYTE IS USED IN OPEN AS TEMP
331 TOADR = $66 ;##rev2## 2-byte destination address
333 SAVADR = $68 ;2-byte saved address
334 FRMADR = $68 ;##rev2## 2-byte source address
336 RAMTOP = $6A ;RAM SIZE DEFINED BY POWER ON LOGIC
337 BUFCNT = $6B ;BUFFER COUNT
338 BUFSTR = $6C ;EDITOR GETCH POINTER
339 BITMSK = $6E ;BIT MASK
340 SHFAMT = $6F ;1-byte shift amount for pixel justifucation
341 ROWAC = $70 ;2-byte draw working row
342 COLAC = $72 ;2-byte draw working column
343 ENDPT = $74 ;2-byte end point
344 DELTAR = $76 ;1-byte row difference
345 DELTAC = $77 ;2-byte column difference
346 KEYDEF = $79 ;##1200xl## 2-byte key definition table address
347 ;ROWINC = $79 ;##old##
348 ;COLINC = $7A ;##old##
349 SWPFLG = $7B ;NON-0 1F TXT AND REGULAR RAM IS SWAPPED
350 HOLDCH = $7C ;CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH
351 INSDAT = $7D ;1-byte temporary
352 COUNTR = $7E ;2-byte draw iteration count
354 ; Floating Point Package Page Zero Address Equates
356 FR0 = $D4 ;6-byte register 0
357 FR0M = $D5 ;##rev2## 5-byte register 0 mantissa
358 QTEMP = $D9 ;##rev2## 1-byte temporary
360 FRE = $DA ;6-byte (internal) register E
363 FR1M = $E1 ;##rev2## 5-byte register 1 mantissa
365 FR2 = $E6 ;6-byte (internal) register 2
367 FRX = $EC ;1-byte temporary
369 EEXP = $ED ;VALUE OF E
371 FRSIGN = $EE ;##rev2## 1-byte floating point sign
372 NSIGN = $EE ;SIGN OF #
374 PLYCNT = $EF ;##rev2## 1-byte polynomial degree
375 ESIGN = $EF ;SIGN OF EXPONENT
377 SGNFLG = $F0 ;##rev2## 1-byte sign flag
378 FCHRFLG = $F0 ;1ST CHAR FLAG
380 XFMFLG = $F1 ;##rev2## 1-byte transform flag
381 DIGRT = $F1 ;# OF DIGITS RIGHT OF DECIMAL
383 CIX = $F2 ;CURRENT INPUT INDEX
384 INBUFF = $F3 ;POINTS TO USER'S LINE INPUT BUFFER
386 ZTEMP1 = $F5 ;2-byte temporary
387 ZTEMP4 = $F7 ;2-byte temporary
388 ZTEMP3 = $F9 ;2-byte temporary
390 ;DEGFLG = $FB ;##old## same as RADFLG
391 ;RADFLG = $FB ;##old## 0=RADIANS, 6=DEGREES
393 FLPTR = $FC ;2-byte floating point number pointer
394 FPTR2 = $FE ;2-byte floating point number pointer
396 ;-------------------------------------------------------------------------
397 ; Page Two Address Equates
398 ;-------------------------------------------------------------------------
400 INTABS = $0200 ;INTERRUPT RAM
402 VDSLST = $0200 ;DISPLAY LIST NMI VECTOR
403 VPRCED = $0202 ;PROCEED LINE IRQ VECTOR
404 VINTER = $0204 ;INTERRUPT LINE IRQ VECTOR
405 VBREAK = $0206 ;SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR
406 VKEYBD = $0208 ;POKEY KEYBOARD IRQ VECTOR
407 VSERIN = $020A ;POKEY SERIAL INPUT READY IRQ
408 VSEROR = $020C ;POKEY SERIAL OUTPUT READY IRQ
409 VSEROC = $020E ;POKEY SERIAL OUTPUT COMPLETE IRQ
410 VTIMR1 = $0210 ;POKEY TIMER 1 IRG
411 VTIMR2 = $0212 ;POKEY TIMER 2 IRG
412 VTIMR4 = $0214 ;POKEY TIMER 4 IRG
413 VIMIRQ = $0216 ;IMMEDIATE IRG VECTOR
414 CDTMV1 = $0218 ;COUNT DOWN TIMER 1
415 CDTMV2 = $021A ;COUNT DOWN TIMER 2
416 CDTMV3 = $021C ;COUNT DOWN TIMER 3
417 CDTMV4 = $021E ;COUNT DOWN TIMER 4
418 CDTMV5 = $0220 ;COUNT DOWN TIMER 5
419 VVBLKI = $0222 ;IMMEDIATE VERTICAL BLANK NMI VECTOR
420 VVBLKD = $0224 ;DEFERRED VERTICAL BLANK NMI VECTOR
421 CDTMA1 = $0226 ;COUNT DOWN TIMER 1 JSR ADDRESS
422 CDTMA2 = $0228 ;COUNT DOWN TIMER 2 JSR ADDRESS
423 CDTMF3 = $022A ;COUNT DOWN TIMER 3 FLAG
424 SRTIMR = $022B ;SOFTWARE REPEAT TIMER
425 CDTMF4 = $022C ;COUNT DOWN TIMER 4 FLAG
426 INTEMP = $022D ;IAN'S TEMP
427 CDTMF5 = $022E ;COUNT DOWN TIMER FLAG 5
428 SDMCTL = $022F ;SAVE DMACTL REGISTER
429 SDLSTL = $0230 ;SAVE DISPLAY LIST LOW BYTE
430 SDLSTH = $0231 ;SAVE DISPLAY LIST HI BYTE
431 SSKCTL = $0232 ;SKCTL REGISTER RAM
432 LCOUNT = $0233 ;##1200xl## 1-byte relocating loader record
433 LPENH = $0234 ;LIGHT PEN HORIZONTAL VALUE
434 LPENV = $0235 ;LIGHT PEN VERTICAL VALUE
435 BRKKY = $0236 ;BREAK KEY VECTOR
436 ;RELADR = $0238 ;##1200xl## 2-byte relocatable loader address
437 VPIRQ = $0238 ;##rev2## 2-byte parallel device IRQ vector
438 CDEVIC = $023A ;COMMAND FRAME BUFFER - DEVICE
439 CCOMND = $023B ;COMMAND
440 CAUX1 = $023C ;COMMAND AUX BYTE 1
441 CAUX2 = $023D ;COMMAND AUX BYTE 2
443 TEMP = $023E ;TEMPORARY RAM CELL
445 ERRFLG = $023F ;ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT
447 DFLAGS = $0240 ;DISK FLAGS FROM SECTOR ONE
448 DBSECT = $0241 ;NUMBER OF DISK BOOT SECTORS
449 BOOTAD = $0242 ;ADDRESS WHERE DISK BOOT LOADER WILL 13E PUT
450 COLDST = $0244 ;COLDSTART FLAG (1=IN MIDDLE OF COLDSTART>
451 RECLEN = $0245 ;##1200xl## 1-byte relocating loader record length
452 DSKTIM = $0246 ;DISK TIME OUT REGISTER
453 ;LINBUF = $0247 ;##old## CHAR LINE BUFFER
454 PDVMSK = $0247 ;##rev2## 1-byte parallel device selection mask
455 SHPDVS = $0248 ;##rev2## 1-byte PDVS (parallel device select)
456 PDIMSK = $0249 ;##rev2## 1-byte parallel device IRQ selection
457 RELADR = $024A ;##rev2## 2-byte relocating loader relative adr.
458 PPTMPA = $024C ;##rev2## 1-byte parallel device handler temporary
459 PPTMPX = $024D ;##rev2## 1-byte parallel device handler temporary
461 CHSALT = $026B ;##1200xl## 1-byte character set alternate
462 VSFLAG = $026C ;##1200xl## 1-byte fine vertical scroll count
463 KEYDIS = $026D ;##1200xl## 1-byte keyboard disable
464 FINE = $026E ;##1200xl## 1-byte fine scrolling mode
465 GPRIOR = $026F ;GLOBAL PRIORITY CELL
467 PADDL0 = $0270 ;1-byte potentiometer 0
468 PADDL1 = $0271 ;1-byte potentiometer 1
469 PADDL2 = $0272 ;1-byte potentiometer 2
470 PADDL3 = $0273 ;1-byte potentiometer 3
471 PADDL4 = $0274 ;1-byte potentiometer 4
472 PADDL5 = $0275 ;1-byte potentiometer 5
473 PADDL6 = $0276 ;1-byte potentiometer 6
474 PADDL7 = $0277 ;1-byte potentiometer 7
476 STICK0 = $0278 ;1-byte joystick 0
477 STICK1 = $0279 ;1-byte joystick 1
478 STICK2 = $027A ;1-byte joystick 2
479 STICK3 = $027B ;1-byte joystick 3
481 PTRIG0 = $027C ;1-byte paddle trigger 0
482 PTRIG1 = $027D ;1-byte paddle trigger 1
483 PTRIG2 = $027E ;1-byte paddle trigger 2
484 PTRIG3 = $027F ;1-byte paddle trigger 3
485 PTRIG4 = $0280 ;1-byte paddle trigger 4
486 PTRIG5 = $0281 ;1-byte paddle trigger 5
487 PTRIG6 = $0281 ;1-byte paddle trigger 6
488 PTRIG7 = $0283 ;1-byte paddle trigger 7
490 STRIG0 = $0284 ;1-byte joystick trigger 0
491 STRIG1 = $0285 ;1-byte joystick trigger 1
492 STRIG2 = $0286 ;1-byte joystick trigger 2
493 STRIG3 = $0287 ;1-byte joystick trigger 3
495 ;CSTAT = $0288 ;##old## cassette status register
496 HIBYTE = $0288 ;##1200xl## 1-byte relocating loader high byte
497 WMODE = $0289 ;1-byte cassette WRITE mode
498 BLIM = $028A ;1-byte cassette buffer limit
499 IMASK = $028B ;##rev2## (not used)
500 JVECK = $028C ;2-byte jump vector or temporary
501 NEWADR = $028E ;##1200xl## 2-byte relocating address
502 TXTROW = $0290 ;TEXT ROWCRS
503 TXTCOL = $0291 ;TEXT COLCRS
504 TINDEX = $0293 ;TEXT INDEX
505 TXTMSC = $0294 ;FOOLS CONVRT INTO NEW MSC
506 TXTOLD = $0296 ;OLDROW & OLDCOL FOR TEXT (AND THEN SOME)
507 ;TMPX1 = $029C ;##old## 1-byte temporary register
508 CRETRY = $029C ;##1200xl## 1-byte number of command frame retries
509 HOLD3 = $029D ;1-byte temporary
510 SUBTMP = $029E ;1-byte temporary
511 HOLD2 = $029F ;1-byte (not used)
512 DMASK = $02A0 ;1-byte display (pixel location) mask
513 TMPLBT = $02A1 ;1-byte (not used)
514 ESCFLG = $02A2 ;ESCAPE FLAG
515 TABMAP = $02A3 ;15-byte (120 bit) tab stop bit map
516 LOGMAP = $02B2 ;LOGICAL LINE START BIT MAP
517 INVFLG = $02B6 ;INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY)
518 FILFLG = $02B7 ;RIGHT FILL FLAG FOR DRAW
519 TMPROW = $02B8 ;1-byte temporary row
520 TMPCOL = $02B9 ;2-byte temporary column
521 SCRFLG = $02BB ;SET IF SCROLL OCCURS
522 HOLD4 = $02BC ;TEMP CELL USED IN DRAW ONLY
523 ;HOLD5 = $02BD ;##old## DITTO
524 DRETRY = $02BD ;##1200xl## 1-byte number of device retries
525 SHFLOK = $02BE ;1-byte shift/control lock flags
526 BOTSCR = $02BF ;BOTTOM OF SCREEN 24 NORM 4 SPLIT
528 PCOLR0 = $02C0 ;1-byte player-missile 0 color/luminance
529 PCOLR1 = $02C1 ;1-byte player-missile 1 color/luminance
530 PCOLR2 = $02C2 ;1-byte player-missile 2 color/luminance
531 PCOLR3 = $02C3 ;1-byte player-missile 3 color/luminance
533 COLOR0 = $02C4 ;1-byte playfield 0 color/luminance
534 COLOR1 = $02C5 ;1-byte playfield 1 color/luminance
535 COLOR2 = $02C6 ;1-byte playfield 2 color/luminance
536 COLOR3 = $02C7 ;1-byte playfield 3 color/luminance
538 COLOR4 = $02C8 ;1-byte background color/luminance
540 PARMBL = $02C9 ;##rev2## 6-byte relocating loader parameter
541 RUNADR = $02C9 ;##1200xl## 2-byte run address
542 HIUSED = $02CB ;##1200xl## 2-byte highest non-zero page address
543 ZHIUSE = $02CD ;##1200xl## 2-byte highest zero page address
545 OLDPAR = $02CF ;##rev2## 6-byte relocating loader parameter
546 GBYTEA = $02CF ;##1200xl## 2-byte GET-BYTE routine address
547 LOADAD = $02D1 ;##1200xl## 2-byte non-zero page load address
548 ZLOADA = $02D3 ;##1200xl## 2-byte zero page load address
550 DSCTLN = $02D5 ;##1200xl## 2-byte disk sector length
551 ACMISR = $02D7 ;##1200xl## 2-byte ACMI interrupt service routine
552 KRPDEL = $02D9 ;##1200xl## 1-byte auto-repeat delay
553 KEYREP = $02DA ;##1200xl## 1-byte auto-repeat rate
554 NOCLIK = $02DB ;##1200xl## 1-byte key click disable
555 HELPFG = $02DC ;##1200xl## 1-byte HELP key flag (0 = no HELP)
556 DMASAV = $02DD ;##1200xl## 1-byte SDMCTL save/restore
557 PBPNT = $02DE ;##1200xl## 1-byte printer buffer pointer
558 PBUFSZ = $02DF ;##1200xl## 1-byte printer buffer size
560 GLBABS = $02E0 ;4-byte global variables for non-DOS users
561 RUNAD = $02E0 ;##map## 2-byte binary file run address
562 INITAD = $02E2 ;##map## 2-byte binary file initialization address
564 RAMSIZ = $02E4 ;RAM SIZE (HI BYTE ONLY)
565 MEMTOP = $02E5 ;TOP OF AVAILABLE USER MEMORY
566 MEMLO = $02E7 ;BOTTOM OF AVAILABLE USER MEMORY
567 HNDLOD = $02E9 ;##1200xl## 1-byte user load flag
568 DVSTAT = $02EA ;STATUS BUFFER
569 CBAUDL = $02EE ;1-byte low cassette baud rate
570 CBAUDH = $02EF ;1-byte high cassette baud rate
571 CRSINH = $02F0 ;CURSOR INHIBIT (00 = CURSOR ON)
572 KEYDEL = $02F1 ;KEY DELAY
573 CH1 = $02F2 ;1-byte prior keyboard character
574 CHACT = $02F3 ;CHACTL REGISTER RAM
575 CHBAS = $02F4 ;CHBAS REGISTER RAM
577 NEWROW = $02F5 ;##1200xl## 1-byte draw destination row
578 NEWCOL = $02F6 ;##1200xl## 2-byte draw destination column
579 ROWINC = $02F8 ;##1200xl## 1-byte draw row increment
580 COLINC = $02F9 ;##1200xl## 1-byte draw column increment
582 CHAR = $02FA ;1-byte internal character
583 ATACHR = $02FB ;ATASCII CHARACTER
584 CH = $02FC ;GLOBAL VARIABLE FOR KEYBOARD
585 FILDAT = $02FD ;RIGHT FILL DATA <DRAW>
586 DSPFLG = $02FE ;DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO
587 SSFLAG = $02FF ;START/STOP FLAG FOR PAGING (CNTL 1). CLEARE
589 ;-------------------------------------------------------------------------
590 ; Page Three Address Equates
591 ;-------------------------------------------------------------------------
593 DCB = $0300 ;DEVICE CONTROL BLOCK
594 DDEVIC = $0300 ;PERIPHERAL UNIT 1 BUS I.D. NUMBER
595 DUNIT = $0301 ;UNIT NUMBER
596 DCOMND = $0302 ;BUS COMMAND
597 DSTATS = $0303 ;COMMAND TYPE/STATUS RETURN
598 DBUFLO = $0304 ;1-byte low data buffer address
599 DBUFHI = $0305 ;1-byte high data buffer address
600 DTIMLO = $0306 ;DEVICE TIME OUT IN 1 SECOND UNITS
601 DUNUSE = $0307 ;UNUSED BYTE
602 DBYTLO = $0308 ;1-byte low number of bytes to transfer
603 DBYTHI = $0309 ;1-byte high number of bytes to transfer
604 DAUX1 = $030A ;1-byte first command auxiliary
605 DAUX2 = $030B ;1-byte second command auxiliary
607 TIMER1 = $030C ;INITIAL TIMER VALUE
608 ;ADDCOR = $030E ;##old## ADDITION CORRECTION
609 JMPERS = $030E ;##1200xl## 1-byte jumper options
610 CASFLG = $030F ;CASSETTE MODE WHEN SET
611 TIMER2 = $0310 ;2-byte final baud rate timer value
612 TEMP1 = $0312 ;TEMPORARY STORAGE REGISTER
613 ;TEMP2 = $0314 ;##old## TEMPORARY STORAGE REGISTER
614 TEMP2 = $0313 ;##1200xl## 1-byte temporary
615 PTIMOT = $0314 ;##1200xl## 1-byte printer timeout
616 TEMP3 = $0315 ;TEMPORARY STORAGE REGISTER
617 SAVIO = $0316 ;SAVE SERIAL IN DATA PORT
618 TIMFLG = $0317 ;TIME OUT FLAG FOR BAUD RATE CORRECTION
619 STACKP = $0318 ;SIO STACK POINTER SAVE CELL
620 TSTAT = $0319 ;TEMPORARY STATUS HOLDER
622 HATABS = $031A ;35-byte handler address table (was 38 bytes)
623 PUPBT1 = $033D ;##1200xl## 1-byte power-up validation byte 1
624 PUPBT2 = $033E ;##1200xl## 1-byte power-up validation byte 2
625 PUPBT3 = $033F ;##1200xl## 1-byte power-up validation byte 3
627 IOCB = $0340 ;I/O CONTROL BLOCKS
628 ICHID = $0340 ;HANDLER INDEX NUMBER (FF=IOCB FREE)
629 ICDNO = $0341 ;DEVICE NUMBER (DRIVE NUMBER)
630 ICCOM = $0342 ;COMMAND CODE
631 ICSTA = $0343 ;STATUS OF LAST IOCB ACTION
632 ICBAL = $0344 ;1-byte low buffer address
633 ICBAH = $0345 ;1-byte high buffer address
634 ICPTL = $0346 ;1-byte low PUT-BYTE routine address - 1
635 ICPTH = $0347 ;1-byte high PUT-BYTE routine address - 1
636 ICBLL = $0348 ;1-byte low buffer length
637 ICBLH = $0349 ;1-byte high buffer length
638 ICAX1 = $034A ;1-byte first auxiliary information
639 ICAX2 = $034B ;1-byte second auxiliary information
640 ICSPR = $034C ;FOUR SPARE BYTES
642 PRNBUF = $03C0 ;PRINTER BUFFER
643 SUPERF = $03E8 ;##1200xl## 1-byte editor super function flag
644 CKEY = $03E9 ;##1200xl## 1-byte cassette boot request flag
645 CASSBT = $03EA ;##1200xl## 1-byte cassette boot flag
646 CARTCK = $03EB ;##1200xl## 1-byte cartridge equivalence check
647 DERRF = $03EC ;##rev2## 1-byte screen OPEN error flag
649 ; Remainder of Page Three Not Cleared upon Reset
651 ACMVAR = $03ED ;##1200xl## 11 bytes reserved for ACMI
652 BASICF = $03F8 ;##rev2## 1-byte BASIC switch flag
653 MINTLK = $03F9 ;##1200xl## 1-byte ACMI module interlock
654 GINTLK = $03FA ;##1200xl## 1-byte cartridge interlock
655 CHLINK = $03FB ;##1200xl## 2-byte loaded handler chain link
656 CASBUF = $03FD ;CASSETTE BUFFER
658 ;-------------------------------------------------------------------------
659 ; Page Four/Five Address Equates
660 ;-------------------------------------------------------------------------
662 ; USER AREA STARTS HERE AND GOES TO END OF PAGE FIVE
663 USAREA = $0480 ;128 bytes reserved for application
665 LBPR1 = $057E ;LBUFF PREFIX 1
666 LBPR2 = $057F ;LBUFF PREFIX 2
667 LBUFF = $0580 ;128-byte line buffer
669 PLYARG = $05E0 ;6-byte floating point polynomial argument
670 FPSCR = $05E6 ;6-byte floating point temporary
671 FPSCR1 = $05EC ;6-byte floating point temporary
673 ;LBFEND = $05FF ;##old## END OF LBUFF
675 ;-------------------------------------------------------------------------
676 ; Cartridge Address Equates
677 ;-------------------------------------------------------------------------
679 CARTCS = $BFFA ;##rev2## 2-byte cartridge coldstart address
680 CART = $BFFC ;##rev2## 1-byte cartridge present indicator
681 CARTFG = $BFFD ;##rev2## 1-byte cartridge flags
682 CARTAD = $BFFE ;##rev2## 2-byte cartridge start vector
684 ;-------------------------------------------------------------------------
685 ; CTIA/GTIA Address Equates
686 ;-------------------------------------------------------------------------
688 GTIA = $D000 ;CTIA/GTIA area
690 ; Read/Write Addresses
692 CONSOL = $D01F ;console switches and speaker control
696 M0PF = $D000 ;missile 0 and playfield collision
697 M1PF = $D001 ;missile 1 and playfield collision
698 M2PF = $D002 ;missile 2 and playfield collision
699 M3PF = $D003 ;missile 3 and playfield collision
701 P0PF = $D004 ;player 0 and playfield collision
702 P1PF = $D005 ;player 1 and playfield collision
703 P2PF = $D006 ;player 2 and playfield collision
704 P3PF = $D007 ;player 3 and playfield collision
706 M0PL = $D008 ;missile 0 and player collision
707 M1PL = $D009 ;missile 1 and player collision
708 M2PL = $D00A ;missile 2 and player collision
709 M3PL = $D00B ;missile 3 and player collision
711 P0PL = $D00C ;player 0 and player collision
712 P1PL = $D00D ;player 1 and player collision
713 P2PL = $D00E ;player 2 and player collision
714 P3PL = $D00F ;player 3 and player collision
716 TRIG0 = $D010 ;joystick trigger 0
717 TRIG1 = $D011 ;joystick trigger 1
719 TRIG2 = $D012 ;cartridge interlock
720 TRIG3 = $D013 ;ACMI module interlock
722 PAL = $D014 ;##rev2## PAL/NTSC indicator
726 HPOSP0 = $D000 ;player 0 horizontal position
727 HPOSP1 = $D001 ;player 1 horizontal position
728 HPOSP2 = $D002 ;player 2 horizontal position
729 HPOSP3 = $D003 ;player 3 horizontal position
731 HPOSM0 = $D004 ;missile 0 horizontal position
732 HPOSM1 = $D005 ;missile 1 horizontal position
733 HPOSM2 = $D006 ;missile 2 horizontal position
734 HPOSM3 = $D007 ;missile 3 horizontal position
736 SIZEP0 = $D008 ;player 0 size
737 SIZEP1 = $D009 ;player 1 size
738 SIZEF2 = $D00A ;player 2 size
739 SIZEP3 = $D00B ;player 3 size
741 SIZEM = $D00C ;missile sizes
743 GRAFP0 = $D00D ;player 0 graphics
744 GRAFP1 = $D00E ;player 1 graphics
745 GRAFP2 = $D00F ;player 2 graphics
746 GRAFP3 = $D010 ;player 3 graphics
748 GRAFM = $D011 ;missile graphics
750 COLPM0 = $D012 ;player-missile 0 color/luminance
751 COLPM1 = $D013 ;player-missile 1 color/luminance
752 COLPM2 = $D014 ;player-missile 2 color/luminance
753 COLPM3 = $D015 ;player-missile 3 color/luminance
755 COLPF0 = $D016 ;playfield 0 color/luminance
756 COLPF1 = $D017 ;playfield 1 color/luminance
757 COLPF2 = $D018 ;playfield 2 color/luminance
758 COLPF3 = $D019 ;playfield 3 color/luminance
760 COLBK = $D01A ;background color/luminance
762 PRIOR = $D01B ;priority select
763 VDELAY = $D01C ;vertical delay
764 GRACTL = $D01D ;graphic control
765 HITCLR = $D01E ;collision clear
767 ;-------------------------------------------------------------------------
768 ; PBI Address Equates
769 ;-------------------------------------------------------------------------
771 PBI = $D100 ;##rev2## parallel bus interface area
775 PDVI = $D1FF ;##rev2## parallel device IRQ status
779 PDVS = $D1FF ;##rev2## parallel device select
781 ; PBI RAM Address Equates
783 PBIRAM = $D600 ;##rev2## parallel bus interface RAM area
785 ; Parallel Device Address Equates
787 PDID1 = $D803 ;##rev2## parallel device ID 1
788 PDIDV = $D805 ;##rev2## parallel device I/O vector
789 PDIRQV = $D808 ;##rev2## parallel device IRQ vector
790 PDID2 = $D80B ;##rev2## parallel device ID 2
791 PDVV = $D80D ;##rev2## parallel device vector table
793 ;-------------------------------------------------------------------------
794 ; POKEY Address Equates
795 ;-------------------------------------------------------------------------
797 POKEY = $D200 ;POKEY area
801 POT0 = $D200 ;potentiometer 0
802 POT1 = $D201 ;potentiometer 1
803 POT2 = $D202 ;potentiometer 2
804 POT3 = $D203 ;potentiometer 3
805 POT4 = $D204 ;potentiometer 4
806 POT5 = $D205 ;potentiometer 5
807 POT6 = $D206 ;potentiometer 6
808 POT7 = $D207 ;potentiometer 7
810 ALLPOT = $D208 ;potentiometer port status
811 KBCODE = $D209 ;keyboard code
812 RANDOM = $D20A ;random number generator
813 SERIN = $D20D ;serial port input
814 IRQST = $D20E ;IRQ interrupt status
815 SKSTAT = $D20F ;serial port and keyboard status
819 AUDF1 = $D200 ;channel 1 audio frequency
820 AUDC1 = $D201 ;channel 1 audio control
822 AUDF2 = $D202 ;channel 2 audio frequency
823 AUDC2 = $D203 ;channel 2 audio control
825 AUDF3 = $D204 ;channel 3 audio frequency
826 AUDC3 = $D205 ;channel 3 audio control
828 AUDF4 = $D206 ;channel 4 audio frequency
829 AUDC4 = $D207 ;channel 4 audio control
831 AUDCTL = $D208 ;audio control
832 STIMER = $D209 ;start timers
833 SKRES = $D20A ;reset SKSTAT status
834 POTGO = $D20B ;start potentiometer scan sequence
835 SEROUT = $D20D ;serial port output
836 IRQEN = $D20E ;IRQ interrupt enable
837 SKCTL = $D20F ;serial port and keyboard control
839 ;-------------------------------------------------------------------------
840 ; PIA Address Equates
841 ;-------------------------------------------------------------------------
843 PIA = $D300 ;PIA area
845 PORTA = $D300 ;port A direction register or jacks one/two
846 PORTB = $D301 ;port B direction register or memory management
848 PACTL = $D302 ;port A control
849 PBCTL = $D303 ;port B control
851 ;-------------------------------------------------------------------------
852 ; ANTIC Address Equates
853 ;-------------------------------------------------------------------------
855 ANTIC = $D400 ;ANTIC area
859 VCOUNT = $D40B ;vertical line counter
860 PENH = $D40C ;light pen horizontal position
861 PENV = $D40D ;light pen vertical position
862 NMIST = $D40F ;NMI interrupt status
866 DMACTL = $D400 ;DMA control
867 CHACTL = $D401 ;character control
868 DLISTL = $D402 ;low display list address
869 DLISTH = $D403 ;high display list address
870 HSCROL = $D404 ;horizontal scroll
871 VSCROL = $D405 ;vertical scroll
872 PMBASE = $D407 ;player-missile base address
873 CHBASE = $D409 ;character base address
874 WSYNC = $D40A ;wait for HBLANK synchronization
875 NMIEN = $D40E ;NMI enable
876 NMIRES = $D40F ;NMI iterrupt reset
878 ;-------------------------------------------------------------------------
879 ; Floating Point Package Address Equates
880 ;-------------------------------------------------------------------------
882 AFP = $D800 ;convert ASCII to floating point
883 FASC = $D8E6 ;convert floating point to ASCII
884 IFP = $D9AA ;convert integer to floating point
885 FPI = $D9D2 ;convert floating point to integer
886 ZFR0 = $DA44 ;zero FR0
887 ZF1 = $DA46 ;zero floating point number
888 FSUB = $DA60 ;subtract floating point numbers
889 FADD = $DA66 ;add floating point numbers
890 FMUL = $DADB ;multiply floating point numbers
891 FDIV = $DB28 ;divide floating point numbers
892 PLYEVL = $DD40 ;evaluate floating point polynomial
893 FLD0R = $DD89 ;load floating point number
894 FLD0P = $DD8D ;load floating point number
895 FLD1R = $DD98 ;load floating point number
896 PLD1P = $DD9C ;load floating point number
897 FST0R = $DDA7 ;store floating point number
898 FST0P = $DDAB ;store floating point number
899 FMOVE = $DDB6 ;move floating point number
900 LOG = $DECD ;calculate floating point logarithm
901 LOG10 = $DED1 ;calculate floating point base 10 logarithm
902 EXP = $DDC0 ;calculate floating point exponential
903 EXP10 = $DDCC ;calculate floating point base 10 exponential
905 ;-------------------------------------------------------------------------
906 ; Device Handler Vector Table Address Equates
907 ;-------------------------------------------------------------------------
909 EDITRV = $E400 ;editor handler vector table
910 SCRENV = $E410 ;screen handler vector table
911 KEYBDV = $E420 ;keyboard handler vector table
912 PRINTV = $E430 ;printer handler vector table
913 CASETV = $E440 ;cassette handler vector table
915 ;-------------------------------------------------------------------------
916 ; Jump Vector Address Equates
917 ;-------------------------------------------------------------------------
919 DISKIV = $E450 ;vector to initialize DIO
920 DSKINV = $E453 ;vector to DIO
921 CIOV = $E456 ;vector to CIO
922 SIOV = $E459 ;vector to SIO
923 SETVBV = $E45C ;vector to set VBLANK parameters
924 SYSVBV = $E45F ;vector to process immediate VBLANK
925 XITVBV = $E462 ;vector to process deferred VBLANK
926 SIOINV = $E465 ;vector to initialize SIO
927 SENDEV = $E468 ;vector to enable SEND
928 INTINV = $E46B ;vector to initialize interrupt handler
929 CIOINV = $E46E ;vector to initialize CIO
930 BLKBDV = $E471 ;vector to power-up display
931 WARMSV = $E474 ;vector to warmstart
932 COLDSV = $E477 ;vector to coldstart
933 RBLOKV = $E47A ;vector to read cassette block
934 CSOPIV = $E47D ;vector to open cassette for input
935 VCTABL = $E480 ;RAM vector initial value table
936 PUPDIV = $E480 ;##rev2## vector to power-up display
937 SLFTSV = $E483 ;##rev2## vector to self-test
938 PHENTV = $E486 ;##rev2## vector to enter peripheral handler
939 PHUNLV = $E489 ;##rev2## vector to unlink peripheral handler
940 PHINIV = $E48C ;##rev2## vector to initialize peripheral handler
941 GPDVV = $E48F ;##rev2## generic parallel device handler vector
943 ; NOTE: OS rom self-test labels are not included in this file
945 ;-------------------------------------------------------------------------
946 ; Some misc. stuff from the 400/800 rev.B source
947 ;-------------------------------------------------------------------------
949 ; THE FOLLOWING ARE IN BASIC CARTRIDGE:
950 SIN = $BD81 ;FR0 <- SIN (FR0) DEGFLG (0=RAD,6=DEG) CARRY
951 COS = $BD73 ;FR0 <- COS (FR0) CARRY
952 ATAN = $BE43 ;FR0 <- ATAN(FR0) CARRY
953 SQR = $BEB1 ;FR0 <- ROOT(FR0) CARRY
955 RADON = 0 ;INDICATES RADIANS
956 DEGON = 6 ;INDICATES DEGREES
958 ASCZER = '0' ;ASCII ZERO
959 COLON = $3A ;ASCII COLON
960 CR = $9B ;SYSTEM EOL (CARRIAGE RETURN)
962 ;-------------------------------------------------------------------------
964 ;-------------------------------------------------------------------------
970 ;-------------------------------------------------------------------------
972 ;-------------------------------------------------------------------------
974 LOMEM = $80 ;2-byte low memory pointer
975 VNTP = $82 ;2-byte variable name table address
976 VNTD = $84 ;2-byte variable name table end + 1
977 VVTP = $86 ;2-byte variable value table
978 STMTAB = $88 ;2-byte statement table address
979 STMCUR = $8A ;2-byte current statement pointer
980 STARP = $8C ;2-byte string and array table pointer
981 RUNSTK = $8E ;2-byte runtime stack address
982 ;MEMTOP = $90 ;2-byte top of memory pointer
983 STOPLN = $BA ;2-byte stopped line number
984 ERRSAVE = $C3 ;1-byte error code
985 PTABW = $C9 ;1-byte tab width
987 ;-------------------------------------------------------------------------
989 ;-------------------------------------------------------------------------
993 RENAME = $20 ;RENAME DISK FILE
994 DELETE = $21 ;DELETE DISK FILE
996 LOCKFL = $23 ;LOCK FILE TO READ ONLY
997 UNLOCK = $24 ;UNLOCK LOCKED FILE
998 POINT = $25 ;POINT SECTOR
999 NOTE = $26 ;NOTE SECTOR
1001 ; Command line table, Index values for (DOSVEC),Y -- COMTAB
1002 ; Compatible with OS/A+, DOS XL and SpartaDOS
1004 COMTAB = 0 ;DOS entry jump vector
1005 ZCRNAME = 3 ;file name crunch routine jump vector
1006 BUFOFF = 10 ;next parameter buffer offset
1007 COMFNAM = 33 ;destination buffer for crunch routine
1008 LBUF = 63 ;command line input buffer
1010 ;-------------------------------------------------------------------------
1011 ; ATASCII CHARACTER DEFS
1012 ;-------------------------------------------------------------------------
1014 ATCLR = $7D ;CLEAR SCREEN CHARACTER
1015 ATRUB = $7E ;BACK SPACE (RUBOUT)
1017 ATEOL = $9B ;END-OF-LINE
1018 ATDELL = $9C ;Delete line
1019 ATBEL = $FD ;CONSOLE BELL
1020 ATURW = $1C ;UP-ARROW
1021 ATDRW = $1D ;DOWN-ARROW
1022 ATLRW = $1E ;LEFT-ARROW
1023 ATRRW = $1F ;RIGHT-ARROW
1025 ;-------------------------------------------------------------------------
1027 ;-------------------------------------------------------------------------