1 ;-------------------------------------------------------------------------
3 ; by Freddy Offenga, Christian Groessler, and Christian Krueger
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
10 ; - SpartaDOS-X User Guide (Aug-8-2016)
12 ; ##old## old OS rev.B label - moved or deleted
13 ; ##1200xl## new label introduced in 1200XL OS (rev.10/11)
14 ; ##rev2## new label introduced in XL/XE OS rev.2
15 ;-------------------------------------------------------------------------
17 ;-------------------------------------------------------------------------
18 ; Configuration Equates
19 ;-------------------------------------------------------------------------
21 MAXDEV = 33 ;offset to last possible entry of HATABS
22 IOCBSZ = 16 ;length of IOCB
24 SEIOCB = 0*IOCBSZ ;##rev2## screen editor IOCB index
25 MAXIOC = 8*IOCBSZ ;first invalid IOCB index
27 DSCTSZ = 128 ;##rev2## disk sector size
30 REDGE = 39 ;right edge
32 INIML = $0700 ;##rev2## initial MEMLO
34 ICSORG = $CC00 ;##rev2## international character set origin
35 DCSORG = $E000 ;##rev2## domestic character set origin
37 ; IOCB Command Code Equates
40 GETREC = $05 ;get record
41 GETCHR = $07 ;get character(s)
42 PUTREC = $09 ;put record
43 PUTCHR = $0B ;put character(s)
48 ; DOS IOCB command codes
50 RENAME = $20 ;rename disk file
51 DELETE = $21 ;delete disk file
52 LOCKFL = $23 ;lock file (set to read-only)
53 UNLOCK = $24 ;unlock file
54 POINT = $25 ;point sector
55 NOTE = $26 ;note sector
56 GETFL = $27 ;get file length
57 CHDIR_MYDOS = $29 ;change directory (MyDOS)
58 MKDIR = $2A ;make directory (MyDOS/SpartaDOS)
59 RMDIR = $2B ;remove directory (SpartaDOS)
60 CHDIR_SPDOS = $2C ;change directory (SpartaDOS)
63 GETCWD = $30 ;get current directory (MyDOS/SpartaDOS)
65 ; Special Entry Command Equates
67 ; Command line table, Index values for (DOSVEC),Y -- COMTAB
68 ; Compatible with OS/A+, DOS XL and SpartaDOS
70 COMTAB = 0 ;DOS entry jump vector
71 ZCRNAME = 3 ;file name crunch routine jump vector
72 BUFOFF = 10 ;next parameter buffer offset
73 COMFNAM = 33 ;destination buffer for crunch routine
74 LBUF = 63 ;command line input buffer
76 ; Screen IOCB Commands
78 DRAWLN = $11 ;draw line
79 FILLIN = $12 ;draw line with right fill
81 ; ICAX1 Auxiliary Byte 1 Equates
83 APPEND = $01 ;open write append (D:)
84 DIRECT = $02 ;open for directory access (D:)
85 OPNIN = $04 ;open for input (all devices)
86 OPNOT = $08 ;open for output (all devices)
87 MXDMOD = $10 ;open for mixed mode (E:, S:)
88 INSCLR = $20 ;open for input without clearing screen
92 CASSET = 'C' ;cassette
94 SCREDT = 'E' ;screen editor
97 DISPLY = 'S' ;screen display
99 ; SIO Command Code Equates
101 SIO_FORMAT = $21 ;format disk (default density)
102 SIO_FORMATS = $22 ;1050: format medium density
103 SIO_CONFIG = $44 ;configure drive
104 SIO_CONFIGSF = $4B ;slow/fast configure drive??
105 SIO_RDPERCOM = $4E ;read PERCOM block (XF551)
106 SIO_WRPERCOM = $4F ;write PERCOM block (XF551)
107 SIO_WRITE = $50 ;write sector
108 SIO_READ = $52 ;read sector
109 SIO_STAT = $53 ;get status information
110 SIO_VERIFY = $56 ;verify sector
111 SIO_WRITEV = $57 ;write sector with verify
112 SIO_WRITETRK = $60 ;write track (Speedy)
113 SIO_READTRK = $62 ;read track (Speedy)
115 ; SIO Status Code (DSTATS)
116 ; Input: data direction
117 ; Bit #7 - W (write operation)
118 ; #6 - R (read operation)
119 ; Output: status code
120 ; $01 (001) -- OPERATION COMPLETE (NO ERRORS)
121 ; $8A (138) -- DEVICE TIMEOUT (DOESN'T RESPOND)
122 ; $8B (139) -- DEVICE NAK
123 ; $8C (140) -- SERIAL BUS INPUT FRAMING ERROR
124 ; $8E (142) -- SERIAL BUS DATA FRAME OVERRUN ERROR
125 ; $8F (143) -- SERIAL BUS DATA FRAME CHECKSUM ERROR
126 ; $90 (144) -- DEVICE DONE ERROR
128 ; Character and Key Code Equates
130 CLS = $7D ;##rev2## clear screen
131 EOL = $9B ;end of line (RETURN)
133 HELP = $11 ;##1200xl## key code for HELP
134 CNTLF1 = $83 ;##1200xl## key code for CTRL-F1
135 CNTLF2 = $84 ;##1200xl## key code for CTRL-F2
136 CNTLF3 = $93 ;##1200xl## key code for CTRL-F3
137 CNTLF4 = $94 ;##1200xl## key code for CTRL-F4
138 CNTL1 = $9F ;##1200xl## key code for CTRL-1
140 ; Status Code Equates
142 SUCCES = 1 ;($01) succesful operation
144 BRKABT = 128 ;($80) BREAK key abort
145 PRVOPN = 129 ;($81) IOCB already open error
146 NONDEV = 130 ;($82) nonexistent device error
147 WRONLY = 131 ;($83) IOCB opened for write only error
148 NVALID = 132 ;($84) invalid command error
149 NOTOPN = 133 ;($85) device/file not open error
150 BADIOC = 134 ;($86) invalid IOCB index error
151 RDONLY = 135 ;($87) IOCB opened for read only error
152 EOFERR = 136 ;($88) end of file error
153 TRNRCD = 137 ;($89) truncated record error
154 TIMOUT = 138 ;($8A) peripheral device timeout error
155 DNACK = 139 ;($8B) device does not acknowledge command
156 FRMERR = 140 ;($8C) serial bus framing error
157 CRSROR = 141 ;($8D) cursor overrange error
158 OVRRUN = 142 ;($8E) serial bus data overrun error
159 CHKERR = 143 ;($8F) serial bus checksum error
160 DERROR = 144 ;($90) device done (operation incomplete)
161 BADMOD = 145 ;($91) bad screen mode number error
162 FNCNOT = 146 ;($92) function not implemented in handler
163 SCRMEM = 147 ;($93) insufficient memory for screen mode
165 DSKFMT = 148 ;($94) SpartaDOS: unrecognized disk format
166 INCVER = 149 ;($95) SpartaDOS: disk was made with incompat. version
167 DIRNFD = 150 ;($96) SpartaDOS: directory not found
168 FEXIST = 151 ;($97) SpartaDOS: file exists
169 NOTBIN = 152 ;($98) SpartaDOS: file not binary
170 LSYMND = 154 ;($9A) SDX: loader symbol not defined
171 BADPRM = 156 ;($9C) SDX: bad parameter
172 OUTOFM = 158 ;($9E) SDX: out of memory
173 INVDEV = 160 ;($A0) invalid device number
174 TMOF = 161 ;($A1) too many open files
175 DSKFLL = 162 ;($A2) disk full
176 FATLIO = 163 ;($A3) fatal I/O error
177 FNMSMT = 164 ;($A4) internal file number mismatch
178 INVFNM = 165 ;($A5) invalid file name
179 PDLERR = 166 ;($A6) point data length error
180 EPERM = 167 ;($A7) permission denied
181 DINVCM = 168 ;($A8) command invalid for disk
182 DIRFLL = 169 ;($A9) directory full
183 FNTFND = 170 ;($AA) file not found
184 PNTINV = 171 ;($AB) point invalid
185 BADDSK = 173 ;($AD) bad disk
186 INCFMT = 176 ;($B0) DOS 3: incompatible file system
187 XNTBIN = 180 ;($B4) XDOS: file not binary
189 ; DCB Device Bus Equates
191 DISKID = $31 ;##rev2## disk bus ID
192 PDEVN = $40 ;##rev2## printer bus ID
193 CASET = $60 ;##rev2## cassette bus ID
195 ; Bus Command Equates
197 FOMAT = '!' ;##rev2## format command
198 PUTSEC = 'P' ;##rev2## put sector command
199 READ = 'R' ;##rev2## read command
200 STATC = 'S' ;##rev2## status command
201 WRITE = 'W' ;##rev2## write command
203 ; Command Auxiliary Byte Equates
205 DOUBLE = 'D' ;##rev2## print 20 characters double width
206 NORMAL = 'N' ;##rev2## print 40 characters normally
207 PLOT = 'P' ;##rev2## plot
208 SIDWAY = 'S' ;##rev2## print 16 characters sideways
210 ; Bus Response Equates
212 ACK = 'A' ;##rev2## device acknowledged
213 COMPLT = 'C' ;##rev2## device succesfully completed operation
214 ERROR = 'E' ;##rev2## device incurred error
215 NACK = 'N' ;##rev2## device did not understand
217 ; Floating Point Miscellaneous Equates
221 FMPREC = FPREC-1 ;##rev2## length of mantissa
223 ; Cassette Record Type Equates
225 HDR = $FB ;##rev2## header
226 DTA = $FC ;##rev2## data record
227 DT1 = $FA ;##rev2## last data record
228 EOT = $FE ;##rev2## end of tape (file)
230 TONE1 = 2 ;##rev2## record
231 TONE2 = 1 ;##rev2## playback
233 ; Cassette Timing Equates
235 WLEADN = 1152 ;##rev2## NTSC 19.2 second WRITE file leader
236 RLEADN = 576 ;##rev2## NTSC 9.6 second READ file leader
237 WIRGLN = 180 ;##rev2## NTSC 3.0 second WRITE IRG
238 RIRGLN = 120 ;##rev2## NTSC 2.0 second READ IRG
239 WSIRGN = 15 ;##rev2## NTSC 0.25 second WRITE short IRG
240 RSIRGN = 10 ;##rev2## NTSC 0.16 second READ short IRG
241 BEEPNN = 30 ;##rev2## NTSC 0.5 second beep duration
242 BEEPFN = 10 ;##rev2## NTSC 0.16 seconrd beep duration
244 WLEADP = 960 ;##rev2## PAL 19.2 second WRITE file leader
245 RLEADP = 480 ;##rev2## PAL 9.6 second READ file leader
246 WIRGLP = 150 ;##rev2## PAL 3.0 second WRITE IRG
247 RIRGLP = 100 ;##rev2## PAL 2.0 second READ IRG
248 WSIRGP = 13 ;##rev2## PAL 0.25 second WRITE short IRG
249 RSIRGP = 8 ;##rev2## PAL 0.16 second READ short IRG
250 BEEPNP = 25 ;##rev2## PAL 0.5 second beep duration
251 BEEPFP = 8 ;##rev2## PAL 0.16 seconrd beep duration
253 WIRGHI = 0 ;##rev2## high WRITE IRG
254 RIRGHI = 0 ;##rev2## high READ IRG
256 ; Power-up Validation Byte Value Equates
258 PUPVL1 = $5C ;##rev2## power-up validation value 1
259 PUPVL2 = $93 ;##rev2## power-up validation value 2
260 PUPVL3 = $25 ;##rev2## power-up validation value 3
262 ; Relocating Loader Miscellaneous Equates
264 DATAER = 156 ;##rev2## end of record appears before END
265 MEMERR = 157 ;##rev2## memory insufficient for load error
267 ; Miscellaneous Equates
269 IOCFRE = $FF ;IOCB free indication
271 B19200 = $0028 ;##rev2## 19200 baud POKEY counter value
272 B00600 = $05CC ;##rev2## 600 baud POKEY counter value
274 HITONE = $05 ;##rev2## FSK high freq. POKEY counter value
275 LOTONE = $07 ;##rev2## FSK low freq. POKEY counter value
277 NCOMLO = $34 ;##rev2## PIA lower NOT COMMAND line command
278 NCOMHI = $3C ;##rev2## PIA raise NOT COMMAND line command
280 MOTRGO = $34 ;##rev2## PIA cassette motor ON command
281 MOTRST = $3C ;##rev2## PIA cassette motor OFF command
283 NODAT = $00 ;##rev2## SIO immediate operation
284 GETDAT = $40 ;##rev2## SIO read data frame
285 PUTDAT = $80 ;##rev2## SIO write data frame
287 CRETRI = 13 ;##rev2## number of command frame retries
288 DRETRI = 1 ;##rev2## number of device retries
289 CTIM = 2 ;##rev2## command frame ACK timeout
291 NBUFSZ = 40 ;##rev2## print normal buffer size
292 DBUFSZ = 20 ;##rev2## print double buffer size
293 SBUFSZ = 29 ;##rev2## print sideways buffer size
295 ;-------------------------------------------------------------------------
296 ; Page Zero Address Equates
297 ;-------------------------------------------------------------------------
299 LINZBS = $00 ;LINBUG RAM (WILL BE REPLACED BY MONITOR RAM)
300 LNFLG = $00 ;##1200xl## 1-byte LNBUG flag (0 = not LNBUG)
301 NGFLAG = $01 ;##1200xl## 1-byte memory status (0 = failure)
305 CASINI = $02 ;CASSETTE INIT LOCATION
306 RAMLO = $04 ;RAM POINTER FOR MEMORY TEST
307 TRAMSZ = $06 ;TEMPORARY REGISTER FOR RAM SIZE
308 ;TSTDAT = $07 ;##old## RAM TEST DATA REGISTER
309 CMCMD = $07 ;##rev2## 1-byte command communications
311 ; Cleared upon Coldstart only
313 WARMST = $08 ;WARM START FLAG
314 BOOTQ = $09 ;SUCCESSFUL BOOT FLAG
315 DOSVEC = $0A ;DISK SOFTWARE START VECTOR
316 DOSINI = $0C ;DISK SOFTWARE INIT ADDRESS
317 APPMHI = $0E ;APPLICATIONS MEMORY HI LIMIT
319 ; Cleared upon Coldstart or Warmstart
321 INTZBS = $10 ;INTERRUPT HANDLER
323 POKMSK = $10 ;SYSTEM MASK FOR POKEY IRQ ENABLE (shadow of IRQEN)
324 BRKKEY = $11 ;BREAK KEY FLAG
325 RTCLOK = $12 ;REAL TIME CLOCK (IN 16 MSEC UNITS>
326 BUFADR = $15 ;INDIRECT BUFFER ADDRESS REGISTER
327 ICCOMT = $17 ;COMMAND FOR VECTOR
328 DSKFMS = $18 ;DISK FILE MANAGER POINTER
329 DSKUTL = $1A ;DISK UTILITIES POINTER
330 ABUFPT = $1C ;##1200xl## 4-byte ACMI buffer pointer area
332 ;PTIMOT = $1C ;##old## PRINTER TIME OUT REGISTER
333 ;PBPNT = $1D ;##old## PRINT BUFFER POINTER
334 ;PBUFSZ = $1E ;##old## PRINT BUFFER SIZE
335 ;PTEMP = $1F ;##old## TEMPORARY REGISTER
337 ZIOCB = $20 ;ZERO PAGE I/O CONTROL BLOCK
338 IOCBAS = $20 ;16-byte page zero IOCB
339 ICHIDZ = $20 ;HANDLER INDEX NUMBER (FF = IOCB FREE)
340 ICDNOZ = $21 ;DEVICE NUMBER (DRIVE NUMBER)
341 ICCOMZ = $22 ;COMMAND CODE
342 ICSTAZ = $23 ;STATUS OF LAST IOCB ACTION
343 ICBALZ = $24 ;BUFFER ADDRESS LOW BYTE
344 ICBAHZ = $25 ;1-byte high buffer address
345 ICPTLZ = $26 ;PUT BYTE ROUTINE ADDRESS -1
346 ICPTHZ = $27 ;1-byte high PUT-BYTE routine address
347 ICBLLZ = $28 ;BUFFER LENGTH LOW BYTE
348 ICBLHZ = $29 ;1-byte high buffer length
349 ICAX1Z = $2A ;AUXILIARY INFORMATION FIRST BYTE
350 ICAX2Z = $2B ;1-byte second auxiliary information
351 ICSPRZ = $2C ;4-byte spares
353 ENTVEC = $2C ;##rev2## 2-byte (not used)
354 ICIDNO = $2E ;IOCB NUMBER X 16
355 CIOCHR = $2F ;CHARACTER BYTE FOR CURRENT OPERATION
357 STATUS = $30 ;INTERNAL STATUS STORAGE
358 CHKSUM = $31 ;CHECKSUM (SINGLE BYTE SUM WITH CARRY)
359 BUFRLO = $32 ;POINTER TO DATA BUFFER (LO BYTE)
360 BUFRHI = $33 ;POINTER TO DATA BUFFER (HI BYTE)
361 BFENLO = $34 ;NEXT BYTE PAST END OF THE DATA BUFFER LO
362 BFENHI = $35 ;NEXT BYTE PAST END OF THE DATA BUFFER HI
363 ;CRETRY = $36 ;##old## NUMBER OF COMMAND FRAME RETRIES
364 ;DRETRY = $37 ;##old## NUMBER OF DEVICE RETRIES
365 LTEMP = $36 ;##1200xl## 2-byte loader temporary
366 BUFRFL = $38 ;DATA BUFFER FULL FLAG
367 RECVDN = $39 ;RECEIVE DONE FLAG
368 XMTDON = $3A ;TRANSMISSION DONE FLAG
369 CHKSNT = $3B ;CHECKSUM SENT FLAG
370 NOCKSM = $3C ;NO CHECKSUM FOLLOWS DATA FLAG
371 BPTR = $3D ;1-byte cassette buffer pointer
372 FTYPE = $3E ;1-byte cassette IRG type
373 FEOF = $3F ;1-byte cassette EOF flag (0 = quiet)
374 FREQ = $40 ;1-byte cassette beep counter
375 SOUNDR = $41 ;NOISY I/0 FLAG. (ZERO IS QUIET)
377 CRITIC = $42 ;DEFINES CRITICAL SECTION (CRITICAL IF NON-Z)
379 FMSZPG = $43 ;DISK FILE MANAGER SYSTEM ZERO PAGE
381 ;CKEY = $4A ;##old## FLAG SET WHEN GAME START PRESSED
382 ZCHAIN = $4A ;##1200xl## 2-byte handler linkage chain pointer
383 ;CASSBT = $4B ;##old## CASSETTE BOOT FLAG
384 DSTAT = $4C ;DISPLAY STATUS
385 ATRACT = $4D ;ATRACT FLAG
386 DRKMSK = $4E ;DARK ATRACT MASK
387 COLRSH = $4F ;ATRACT COLOR SHIFTER (EOR'ED WITH PLAYFIELD
390 TMPCHR = $50 ;1-byte temporary character
391 HOLD1 = $51 ;1-byte temporary
392 LMARGN = $52 ;left margin (normally 2, cc65 C startup code sets it to 0)
393 RMARGN = $53 ;right margin (normally 39 if no XEP80 is used)
394 ROWCRS = $54 ;1-byte cursor row
395 COLCRS = $55 ;2-byte cursor column
396 DINDEX = $57 ;1-byte display mode
397 SAVMSC = $58 ;2-byte saved memory scan counter
398 OLDROW = $5A ;1-byte prior row
399 OLDCOL = $5B ;2-byte prior column
400 OLDCHR = $5D ;DATA UNDER CURSOR
401 OLDADR = $5E ;2-byte saved cursor memory address
402 FKDEF = $60 ;##1200xl## 2-byte function key definition table
403 ;NEWROW = $60 ;##old## POINT DRAW GOES TO
404 ;NEWCOL = $61 ;##old##
405 PALNTS = $62 ;##1200xl## 1-byte PAL/NTSC indicator (0 = NTSC)
406 LOGCOL = $63 ;POINTS AT COLUMN IN LOGICAL LINE
407 ADRESS = $64 ;2-byte temporary address
409 MLTTMP = $66 ;1-byte temporary
410 OPNTMP = $66 ;FIRST BYTE IS USED IN OPEN AS TEMP
411 TOADR = $66 ;##rev2## 2-byte destination address
413 SAVADR = $68 ;2-byte saved address
414 FRMADR = $68 ;##rev2## 2-byte source address
416 RAMTOP = $6A ;RAM SIZE DEFINED BY POWER ON LOGIC
417 BUFCNT = $6B ;BUFFER COUNT
418 BUFSTR = $6C ;EDITOR GETCH POINTER
419 BITMSK = $6E ;BIT MASK
420 SHFAMT = $6F ;1-byte shift amount for pixel justifucation
421 ROWAC = $70 ;2-byte draw working row
422 COLAC = $72 ;2-byte draw working column
423 ENDPT = $74 ;2-byte end point
424 DELTAR = $76 ;1-byte row difference
425 DELTAC = $77 ;2-byte column difference
426 KEYDEF = $79 ;##1200xl## 2-byte key definition table address
427 ;ROWINC = $79 ;##old##
428 ;COLINC = $7A ;##old##
429 SWPFLG = $7B ;NON-0 1F TXT AND REGULAR RAM IS SWAPPED
430 HOLDCH = $7C ;CH IS MOVED HERE IN KGETCH BEFORE CNTL & SH
431 INSDAT = $7D ;1-byte temporary
432 COUNTR = $7E ;2-byte draw iteration count
434 ; Floating Point Package Page Zero Address Equates
436 FR0 = $D4 ;6-byte register 0
437 FR0M = $D5 ;##rev2## 5-byte register 0 mantissa
438 QTEMP = $D9 ;##rev2## 1-byte temporary
440 FRE = $DA ;6-byte (internal) register E
443 FR1M = $E1 ;##rev2## 5-byte register 1 mantissa
445 FR2 = $E6 ;6-byte (internal) register 2
447 FRX = $EC ;1-byte temporary
449 EEXP = $ED ;VALUE OF E
451 FRSIGN = $EE ;##rev2## 1-byte floating point sign
452 NSIGN = $EE ;SIGN OF #
454 PLYCNT = $EF ;##rev2## 1-byte polynomial degree
455 ESIGN = $EF ;SIGN OF EXPONENT
457 SGNFLG = $F0 ;##rev2## 1-byte sign flag
458 FCHRFLG = $F0 ;1ST CHAR FLAG
460 XFMFLG = $F1 ;##rev2## 1-byte transform flag
461 DIGRT = $F1 ;# OF DIGITS RIGHT OF DECIMAL
463 CIX = $F2 ;CURRENT INPUT INDEX
464 INBUFF = $F3 ;POINTS TO USER'S LINE INPUT BUFFER
466 ZTEMP1 = $F5 ;2-byte temporary
467 ZTEMP4 = $F7 ;2-byte temporary
468 ZTEMP3 = $F9 ;2-byte temporary
470 ;DEGFLG = $FB ;##old## same as RADFLG
471 ;RADFLG = $FB ;##old## 0=RADIANS, 6=DEGREES
473 FLPTR = $FC ;2-byte floating point number pointer
474 FPTR2 = $FE ;2-byte floating point number pointer
476 ;-------------------------------------------------------------------------
477 ; Page Two Address Equates
478 ;-------------------------------------------------------------------------
480 INTABS = $0200 ;INTERRUPT RAM
482 VDSLST = $0200 ;DISPLAY LIST NMI VECTOR
483 VPRCED = $0202 ;PROCEED LINE IRQ VECTOR
484 VINTER = $0204 ;INTERRUPT LINE IRQ VECTOR
485 VBREAK = $0206 ;SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR
486 VKEYBD = $0208 ;POKEY KEYBOARD IRQ VECTOR
487 VSERIN = $020A ;POKEY SERIAL INPUT READY IRQ
488 VSEROR = $020C ;POKEY SERIAL OUTPUT READY IRQ
489 VSEROC = $020E ;POKEY SERIAL OUTPUT COMPLETE IRQ
490 VTIMR1 = $0210 ;POKEY TIMER 1 IRQ
491 VTIMR2 = $0212 ;POKEY TIMER 2 IRQ
492 VTIMR4 = $0214 ;POKEY TIMER 4 IRQ
493 VIMIRQ = $0216 ;IMMEDIATE IRQ VECTOR
494 CDTMV1 = $0218 ;COUNT DOWN TIMER 1
495 CDTMV2 = $021A ;COUNT DOWN TIMER 2
496 CDTMV3 = $021C ;COUNT DOWN TIMER 3
497 CDTMV4 = $021E ;COUNT DOWN TIMER 4
498 CDTMV5 = $0220 ;COUNT DOWN TIMER 5
499 VVBLKI = $0222 ;IMMEDIATE VERTICAL BLANK NMI VECTOR
500 VVBLKD = $0224 ;DEFERRED VERTICAL BLANK NMI VECTOR
501 CDTMA1 = $0226 ;COUNT DOWN TIMER 1 JSR ADDRESS
502 CDTMA2 = $0228 ;COUNT DOWN TIMER 2 JSR ADDRESS
503 CDTMF3 = $022A ;COUNT DOWN TIMER 3 FLAG
504 SRTIMR = $022B ;SOFTWARE REPEAT TIMER
505 CDTMF4 = $022C ;COUNT DOWN TIMER 4 FLAG
506 INTEMP = $022D ;IAN'S TEMP
507 CDTMF5 = $022E ;COUNT DOWN TIMER FLAG 5
508 SDMCTL = $022F ;SAVE DMACTL REGISTER
509 SDLSTL = $0230 ;SAVE DISPLAY LIST LOW BYTE
510 SDLSTH = $0231 ;SAVE DISPLAY LIST HI BYTE
511 SSKCTL = $0232 ;SKCTL REGISTER RAM
512 LCOUNT = $0233 ;##1200xl## 1-byte relocating loader record
513 LPENH = $0234 ;LIGHT PEN HORIZONTAL VALUE
514 LPENV = $0235 ;LIGHT PEN VERTICAL VALUE
515 BRKKY = $0236 ;BREAK KEY VECTOR
516 ;RELADR = $0238 ;##1200xl## 2-byte relocatable loader address
517 VPIRQ = $0238 ;##rev2## 2-byte parallel device IRQ vector
518 CDEVIC = $023A ;COMMAND FRAME BUFFER - DEVICE
519 CCOMND = $023B ;COMMAND
520 CAUX1 = $023C ;COMMAND AUX BYTE 1
521 CAUX2 = $023D ;COMMAND AUX BYTE 2
523 TEMP = $023E ;TEMPORARY RAM CELL
525 ERRFLG = $023F ;ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT
527 DFLAGS = $0240 ;DISK FLAGS FROM SECTOR ONE
528 DBSECT = $0241 ;NUMBER OF DISK BOOT SECTORS
529 BOOTAD = $0242 ;ADDRESS WHERE DISK BOOT LOADER WILL BE PUT
530 COLDST = $0244 ;COLDSTART FLAG (1=IN MIDDLE OF COLDSTART>
531 RECLEN = $0245 ;##1200xl## 1-byte relocating loader record length
532 DSKTIM = $0246 ;DISK TIME OUT REGISTER
533 ;LINBUF = $0247 ;##old## CHAR LINE BUFFER
534 PDVMSK = $0247 ;##rev2## 1-byte parallel device selection mask
535 SHPDVS = $0248 ;##rev2## 1-byte PDVS (parallel device select)
536 PDIMSK = $0249 ;##rev2## 1-byte parallel device IRQ selection
537 RELADR = $024A ;##rev2## 2-byte relocating loader relative adr.
538 PPTMPA = $024C ;##rev2## 1-byte parallel device handler temporary
539 PPTMPX = $024D ;##rev2## 1-byte parallel device handler temporary
541 CHSALT = $026B ;##1200xl## 1-byte character set alternate
542 VSFLAG = $026C ;##1200xl## 1-byte fine vertical scroll count
543 KEYDIS = $026D ;##1200xl## 1-byte keyboard disable
544 FINE = $026E ;##1200xl## 1-byte fine scrolling mode
545 GPRIOR = $026F ;GLOBAL PRIORITY CELL
547 PADDL0 = $0270 ;1-byte potentiometer 0
548 PADDL1 = $0271 ;1-byte potentiometer 1
549 PADDL2 = $0272 ;1-byte potentiometer 2
550 PADDL3 = $0273 ;1-byte potentiometer 3
551 PADDL4 = $0274 ;1-byte potentiometer 4
552 PADDL5 = $0275 ;1-byte potentiometer 5
553 PADDL6 = $0276 ;1-byte potentiometer 6
554 PADDL7 = $0277 ;1-byte potentiometer 7
556 STICK0 = $0278 ;1-byte joystick 0
557 STICK1 = $0279 ;1-byte joystick 1
558 STICK2 = $027A ;1-byte joystick 2
559 STICK3 = $027B ;1-byte joystick 3
561 PTRIG0 = $027C ;1-byte paddle trigger 0
562 PTRIG1 = $027D ;1-byte paddle trigger 1
563 PTRIG2 = $027E ;1-byte paddle trigger 2
564 PTRIG3 = $027F ;1-byte paddle trigger 3
565 PTRIG4 = $0280 ;1-byte paddle trigger 4
566 PTRIG5 = $0281 ;1-byte paddle trigger 5
567 PTRIG6 = $0281 ;1-byte paddle trigger 6
568 PTRIG7 = $0283 ;1-byte paddle trigger 7
570 STRIG0 = $0284 ;1-byte joystick trigger 0
571 STRIG1 = $0285 ;1-byte joystick trigger 1
572 STRIG2 = $0286 ;1-byte joystick trigger 2
573 STRIG3 = $0287 ;1-byte joystick trigger 3
575 ;CSTAT = $0288 ;##old## cassette status register
576 HIBYTE = $0288 ;##1200xl## 1-byte relocating loader high byte
577 WMODE = $0289 ;1-byte cassette WRITE mode
578 BLIM = $028A ;1-byte cassette buffer limit
579 IMASK = $028B ;##rev2## (not used)
580 JVECK = $028C ;2-byte jump vector or temporary
581 NEWADR = $028E ;##1200xl## 2-byte relocating address
582 TXTROW = $0290 ;TEXT ROWCRS
583 TXTCOL = $0291 ;TEXT COLCRS
584 TINDEX = $0293 ;TEXT INDEX
585 TXTMSC = $0294 ;FOOLS CONVRT INTO NEW MSC
586 TXTOLD = $0296 ;OLDROW & OLDCOL FOR TEXT (AND THEN SOME)
587 ;TMPX1 = $029C ;##old## 1-byte temporary register
588 CRETRY = $029C ;##1200xl## 1-byte number of command frame retries
589 HOLD3 = $029D ;1-byte temporary
590 SUBTMP = $029E ;1-byte temporary
591 HOLD2 = $029F ;1-byte (not used)
592 DMASK = $02A0 ;1-byte display (pixel location) mask
593 TMPLBT = $02A1 ;1-byte (not used)
594 ESCFLG = $02A2 ;ESCAPE FLAG
595 TABMAP = $02A3 ;15-byte (120 bit) tab stop bit map
596 LOGMAP = $02B2 ;LOGICAL LINE START BIT MAP
597 INVFLG = $02B6 ;INVERSE VIDEO FLAG (TOGGLED BY ATARI KEY)
598 FILFLG = $02B7 ;RIGHT FILL FLAG FOR DRAW
599 TMPROW = $02B8 ;1-byte temporary row
600 TMPCOL = $02B9 ;2-byte temporary column
601 SCRFLG = $02BB ;SET IF SCROLL OCCURS
602 HOLD4 = $02BC ;TEMP CELL USED IN DRAW ONLY
603 ;HOLD5 = $02BD ;##old## DITTO
604 DRETRY = $02BD ;##1200xl## 1-byte number of device retries
605 SHFLOK = $02BE ;1-byte shift/control lock flags
606 BOTSCR = $02BF ;BOTTOM OF SCREEN 24 NORM 4 SPLIT
608 PCOLR0 = $02C0 ;1-byte player-missile 0 color/luminance
609 PCOLR1 = $02C1 ;1-byte player-missile 1 color/luminance
610 PCOLR2 = $02C2 ;1-byte player-missile 2 color/luminance
611 PCOLR3 = $02C3 ;1-byte player-missile 3 color/luminance
613 COLOR0 = $02C4 ;1-byte playfield 0 color/luminance
614 COLOR1 = $02C5 ;1-byte playfield 1 color/luminance
615 COLOR2 = $02C6 ;1-byte playfield 2 color/luminance
616 COLOR3 = $02C7 ;1-byte playfield 3 color/luminance
618 COLOR4 = $02C8 ;1-byte background color/luminance
620 PARMBL = $02C9 ;##rev2## 6-byte relocating loader parameter
621 RUNADR = $02C9 ;##1200xl## 2-byte run address
622 HIUSED = $02CB ;##1200xl## 2-byte highest non-zero page address
623 ZHIUSE = $02CD ;##1200xl## 2-byte highest zero page address
625 OLDPAR = $02CF ;##rev2## 6-byte relocating loader parameter
626 GBYTEA = $02CF ;##1200xl## 2-byte GET-BYTE routine address
627 LOADAD = $02D1 ;##1200xl## 2-byte non-zero page load address
628 ZLOADA = $02D3 ;##1200xl## 2-byte zero page load address
630 DSCTLN = $02D5 ;##1200xl## 2-byte disk sector length
631 ACMISR = $02D7 ;##1200xl## 2-byte ACMI interrupt service routine
632 KRPDEL = $02D9 ;##1200xl## 1-byte auto-repeat delay
633 KEYREP = $02DA ;##1200xl## 1-byte auto-repeat rate
634 NOCLIK = $02DB ;##1200xl## 1-byte key click disable
635 HELPFG = $02DC ;##1200xl## 1-byte HELP key flag (0 = no HELP)
636 DMASAV = $02DD ;##1200xl## 1-byte SDMCTL save/restore
637 PBPNT = $02DE ;##1200xl## 1-byte printer buffer pointer
638 PBUFSZ = $02DF ;##1200xl## 1-byte printer buffer size
640 GLBABS = $02E0 ;4-byte global variables for non-DOS users
641 RUNAD = $02E0 ;##map## 2-byte binary file run address
642 INITAD = $02E2 ;##map## 2-byte binary file initialization address
644 RAMSIZ = $02E4 ;RAM SIZE (HI BYTE ONLY)
645 MEMTOP = $02E5 ;TOP OF AVAILABLE USER MEMORY
646 MEMLO = $02E7 ;BOTTOM OF AVAILABLE USER MEMORY
647 HNDLOD = $02E9 ;##1200xl## 1-byte user load flag
648 DVSTAT = $02EA ;STATUS BUFFER
649 CBAUDL = $02EE ;1-byte low cassette baud rate
650 CBAUDH = $02EF ;1-byte high cassette baud rate
651 CRSINH = $02F0 ;CURSOR INHIBIT (00 = CURSOR ON)
652 KEYDEL = $02F1 ;KEY DELAY
653 CH1 = $02F2 ;1-byte prior keyboard character
654 CHACT = $02F3 ;CHACTL REGISTER RAM
655 CHBAS = $02F4 ;CHBAS REGISTER RAM
657 NEWROW = $02F5 ;##1200xl## 1-byte draw destination row
658 NEWCOL = $02F6 ;##1200xl## 2-byte draw destination column
659 ROWINC = $02F8 ;##1200xl## 1-byte draw row increment
660 COLINC = $02F9 ;##1200xl## 1-byte draw column increment
662 CHAR = $02FA ;1-byte internal character
663 ATACHR = $02FB ;ATASCII CHARACTER
664 CH = $02FC ;GLOBAL VARIABLE FOR KEYBOARD
665 FILDAT = $02FD ;RIGHT FILL DATA <DRAW>
666 DSPFLG = $02FE ;DISPLAY FLAG DISPLAY CNTLS IF NON-ZERO
667 SSFLAG = $02FF ;START/STOP FLAG FOR PAGING (CNTL 1). CLEARE
669 ;-------------------------------------------------------------------------
670 ; Page Three Address Equates
671 ;-------------------------------------------------------------------------
673 DCB = $0300 ;DEVICE CONTROL BLOCK
674 DDEVIC = $0300 ;PERIPHERAL UNIT 1 BUS I.D. NUMBER
675 DUNIT = $0301 ;UNIT NUMBER
676 DCOMND = $0302 ;BUS COMMAND
677 DSTATS = $0303 ;COMMAND TYPE/STATUS RETURN
678 DBUFLO = $0304 ;1-byte low data buffer address
679 DBUFHI = $0305 ;1-byte high data buffer address
680 DTIMLO = $0306 ;DEVICE TIME OUT IN 1 SECOND UNITS
681 DUNUSE = $0307 ;UNUSED BYTE
682 DBYTLO = $0308 ;1-byte low number of bytes to transfer
683 DBYTHI = $0309 ;1-byte high number of bytes to transfer
684 DAUX1 = $030A ;1-byte first command auxiliary
685 DAUX2 = $030B ;1-byte second command auxiliary
687 TIMER1 = $030C ;INITIAL TIMER VALUE
688 ;ADDCOR = $030E ;##old## ADDITION CORRECTION
689 JMPERS = $030E ;##1200xl## 1-byte jumper options
690 CASFLG = $030F ;CASSETTE MODE WHEN SET
691 TIMER2 = $0310 ;2-byte final baud rate timer value
692 TEMP1 = $0312 ;TEMPORARY STORAGE REGISTER
693 ;TEMP2 = $0314 ;##old## TEMPORARY STORAGE REGISTER
694 TEMP2 = $0313 ;##1200xl## 1-byte temporary
695 PTIMOT = $0314 ;##1200xl## 1-byte printer timeout
696 TEMP3 = $0315 ;TEMPORARY STORAGE REGISTER
697 SAVIO = $0316 ;SAVE SERIAL IN DATA PORT
698 TIMFLG = $0317 ;TIME OUT FLAG FOR BAUD RATE CORRECTION
699 STACKP = $0318 ;SIO STACK POINTER SAVE CELL
700 TSTAT = $0319 ;TEMPORARY STATUS HOLDER
702 HATABS = $031A ;35-byte handler address table (was 38 bytes)
703 PUPBT1 = $033D ;##1200xl## 1-byte power-up validation byte 1
704 PUPBT2 = $033E ;##1200xl## 1-byte power-up validation byte 2
705 PUPBT3 = $033F ;##1200xl## 1-byte power-up validation byte 3
707 IOCB = $0340 ;I/O CONTROL BLOCKS
708 ICHID = $0340 ;HANDLER INDEX NUMBER (FF=IOCB FREE)
709 ICDNO = $0341 ;DEVICE NUMBER (DRIVE NUMBER)
710 ICCOM = $0342 ;COMMAND CODE
711 ICSTA = $0343 ;STATUS OF LAST IOCB ACTION
712 ICBAL = $0344 ;1-byte low buffer address
713 ICBAH = $0345 ;1-byte high buffer address
714 ICPTL = $0346 ;1-byte low PUT-BYTE routine address - 1
715 ICPTH = $0347 ;1-byte high PUT-BYTE routine address - 1
716 ICBLL = $0348 ;1-byte low buffer length
717 ICBLH = $0349 ;1-byte high buffer length
718 ICAX1 = $034A ;1-byte first auxiliary information
719 ICAX2 = $034B ;1-byte second auxiliary information
720 ICAX3 = $034C ;1-byte third auxiliary information
721 ICAX4 = $034D ;1-byte fourth auxiliary information
722 ICAX5 = $034E ;1-byte fifth auxiliary information
723 ICSPR = $034F ;SPARE BYTE
725 PRNBUF = $03C0 ;PRINTER BUFFER
726 SUPERF = $03E8 ;##1200xl## 1-byte editor super function flag
727 CKEY = $03E9 ;##1200xl## 1-byte cassette boot request flag
728 CASSBT = $03EA ;##1200xl## 1-byte cassette boot flag
729 CARTCK = $03EB ;##1200xl## 1-byte cartridge equivalence check
730 DERRF = $03EC ;##rev2## 1-byte screen OPEN error flag
732 ; Remainder of Page Three Not Cleared upon Reset
734 ACMVAR = $03ED ;##1200xl## 11 bytes reserved for ACMI
735 BASICF = $03F8 ;##rev2## 1-byte BASIC switch flag
736 MINTLK = $03F9 ;##1200xl## 1-byte ACMI module interlock
737 GINTLK = $03FA ;##1200xl## 1-byte cartridge interlock
738 CHLINK = $03FB ;##1200xl## 2-byte loaded handler chain link
739 CASBUF = $03FD ;CASSETTE BUFFER
741 ;-------------------------------------------------------------------------
742 ; Page Four/Five Address Equates
743 ;-------------------------------------------------------------------------
745 ; USER AREA STARTS HERE AND GOES TO END OF PAGE FIVE
746 USAREA = $0480 ;128 bytes reserved for application
748 LBPR1 = $057E ;LBUFF PREFIX 1
749 LBPR2 = $057F ;LBUFF PREFIX 2
750 LBUFF = $0580 ;128-byte line buffer
752 PLYARG = $05E0 ;6-byte floating point polynomial argument
753 FPSCR = $05E6 ;6-byte floating point temporary
754 FPSCR1 = $05EC ;6-byte floating point temporary
756 ;LBFEND = $05FF ;##old## END OF LBUFF
761 ;-------------------------------------------------------------------------
762 ; SpartaDOS-X Definitions
763 ;-------------------------------------------------------------------------
765 SDX_FLAG = DOS ; 'S' for SpartaDOS
766 SDX_VERSION = $0701 ; SD version (e.g. $32 = 3.2, $40 = 4.0)
767 ; address $0702 contains sub-version, e.g.
768 ; 8 in case of SDX 4.48
769 SDX_KERNEL = $0703 ; SDX kernel entry point
770 SDX_BLOCK_IO = $0706 ; block I/O entry point
771 SDX_MISC = $0709 ; "misc" entry point
773 SDX_DATE = $077B ; day, month, year (3 bytes)
774 SDX_TIME = $077E ; hour, min, sec (3 bytes)
776 SDX_PATH = $07A0 ; 64 bytes
777 SDX_IFSYMBOL = $07EB ; only valid on SDX 4.40 or newer
778 SDX_S_LOOKUP = SDX_IFSYMBOL ; alternative name for SDX_IFSYMBOL
780 ; values for SDX_DEVICE
782 SDX_CLK_DEV = $10 ; clock device
784 ; clock device functions
786 SDX_KD_GETTD = 100 ; get time and date
787 SDX_KD_SETTD = 101 ; set time and date
789 ;-------------------------------------------------------------------------
790 ; Cartridge Address Equates
791 ;-------------------------------------------------------------------------
793 CARTCS = $BFFA ;##rev2## 2-byte cartridge coldstart address
794 CART = $BFFC ;##rev2## 1-byte cartridge present indicator
796 CARTFG = $BFFD ;##rev2## 1-byte cartridge flags
797 ;D7 0=Not a Diagnostic Cart
798 ; 1=Is a Diagnostic cart and control is
799 ; given to cart before any OS is init.
800 ;D2 0=Init but Do not Start Cart
801 ; 1=Init and Start Cart
802 ;D0 0=Do not boot disk
804 CARTAD = $BFFE ;##rev2## 2-byte cartridge start vector
806 ;-------------------------------------------------------------------------
807 ; CTIA/GTIA Address Equates
808 ;-------------------------------------------------------------------------
810 GTIA = $D000 ;CTIA/GTIA area
811 .include "atari_gtia.inc"
813 ;-------------------------------------------------------------------------
814 ; PBI Address Equates
815 ;-------------------------------------------------------------------------
817 PBI = $D100 ;##rev2## parallel bus interface area
821 PDVI = $D1FF ;##rev2## parallel device IRQ status
825 PDVS = $D1FF ;##rev2## parallel device select
827 ;-------------------------------------------------------------------------
828 ; POKEY Address Equates
829 ;-------------------------------------------------------------------------
831 POKEY = $D200 ;POKEY area
832 .include "atari_pokey.inc"
834 ;-------------------------------------------------------------------------
835 ; ANTIC Address Equates
836 ;-------------------------------------------------------------------------
838 ANTIC = $D400 ;ANTIC area
839 .include "atari_antic.inc"
841 ; PBI RAM Address Equates
843 PBIRAM = $D600 ;##rev2## parallel bus interface RAM area
845 ; Parallel Device Address Equates
847 PDID1 = $D803 ;##rev2## parallel device ID 1
848 PDIDV = $D805 ;##rev2## parallel device I/O vector
849 PDIRQV = $D808 ;##rev2## parallel device IRQ vector
850 PDID2 = $D80B ;##rev2## parallel device ID 2
851 PDVV = $D80D ;##rev2## parallel device vector table
853 ;-------------------------------------------------------------------------
854 ; PIA Address Equates
855 ;-------------------------------------------------------------------------
857 PIA = $D300 ;PIA area
859 PORTA = $D300 ;port A direction register or jacks one/two
860 PORTB = $D301 ;port B direction register or memory management
862 PACTL = $D302 ;port A control
863 PBCTL = $D303 ;port B control
865 ;-------------------------------------------------------------------------
866 ; Floating Point Package Address Equates
867 ;-------------------------------------------------------------------------
869 AFP = $D800 ;convert ASCII to floating point
870 FASC = $D8E6 ;convert floating point to ASCII
871 IFP = $D9AA ;convert integer to floating point
872 FPI = $D9D2 ;convert floating point to integer
873 ZFR0 = $DA44 ;zero FR0
874 ZF1 = $DA46 ;zero floating point number
875 FSUB = $DA60 ;subtract floating point numbers
876 FADD = $DA66 ;add floating point numbers
877 FMUL = $DADB ;multiply floating point numbers
878 FDIV = $DB28 ;divide floating point numbers
879 PLYEVL = $DD40 ;evaluate floating point polynomial
880 FLD0R = $DD89 ;load floating point number
881 FLD0P = $DD8D ;load floating point number
882 FLD1R = $DD98 ;load floating point number
883 PLD1P = $DD9C ;load floating point number
884 FST0R = $DDA7 ;store floating point number
885 FST0P = $DDAB ;store floating point number
886 FMOVE = $DDB6 ;move floating point number
887 LOG = $DECD ;calculate floating point logarithm
888 LOG10 = $DED1 ;calculate floating point base 10 logarithm
889 EXP = $DDC0 ;calculate floating point exponential
890 EXP10 = $DDCC ;calculate floating point base 10 exponential
892 ;-------------------------------------------------------------------------
893 ; Device Handler Vector Table Address Equates
894 ;-------------------------------------------------------------------------
896 EDITRV = $E400 ;editor handler vector table
897 SCRENV = $E410 ;screen handler vector table
898 KEYBDV = $E420 ;keyboard handler vector table
899 PRINTV = $E430 ;printer handler vector table
900 CASETV = $E440 ;cassette handler vector table
902 ;-------------------------------------------------------------------------
903 ; Jump Vector Address Equates
904 ;-------------------------------------------------------------------------
906 DISKIV = $E450 ;vector to initialize DIO
907 DSKINV = $E453 ;vector to DIO
909 .ifndef SHRAM_HANDLERS
910 .import CIO_handler, SIO_handler, SETVBV_handler
912 .define CIOV CIO_handler
913 .define SIOV SIO_handler
914 .define SETVBV SETVBV_handler
915 CIOV_org = $E456 ;vector to CIO
916 SIOV_org = $E459 ;vector to SIO
917 SETVBV_org = $E45C ;vector to set VBLANK parameters
919 CIOV = $E456 ;vector to CIO
920 SIOV = $E459 ;vector to SIO
921 SETVBV = $E45C ;vector to set VBLANK parameters
922 ; aliases in order not to have to sprinkle common code with .ifdefs
927 SYSVBV = $E45F ;vector to process immediate VBLANK
928 XITVBV = $E462 ;vector to process deferred VBLANK
929 SIOINV = $E465 ;vector to initialize SIO
930 SENDEV = $E468 ;vector to enable SEND
931 INTINV = $E46B ;vector to initialize interrupt handler
932 CIOINV = $E46E ;vector to initialize CIO
933 BLKBDV = $E471 ;vector to power-up display
934 WARMSV = $E474 ;vector to warmstart
935 COLDSV = $E477 ;vector to coldstart
936 RBLOKV = $E47A ;vector to read cassette block
937 CSOPIV = $E47D ;vector to open cassette for input
938 VCTABL = $E480 ;RAM vector initial value table
939 PUPDIV = $E480 ;##rev2## vector to power-up display
940 SLFTSV = $E483 ;##rev2## vector to self-test
941 PHENTV = $E486 ;##rev2## vector to enter peripheral handler
942 PHUNLV = $E489 ;##rev2## vector to unlink peripheral handler
943 PHINIV = $E48C ;##rev2## vector to initialize peripheral handler
944 GPDVV = $E48F ;##rev2## generic parallel device handler vector
946 ; NOTE: OS rom self-test labels are not included in this file
948 ;-------------------------------------------------------------------------
949 ; Some misc. stuff from the 400/800 rev.B source
950 ;-------------------------------------------------------------------------
952 ; THE FOLLOWING ARE IN BASIC CARTRIDGE:
953 SIN = $BD81 ;FR0 <- SIN (FR0) DEGFLG (0=RAD,6=DEG) CARRY
954 COS = $BD73 ;FR0 <- COS (FR0) CARRY
955 ATAN = $BE43 ;FR0 <- ATAN(FR0) CARRY
956 SQR = $BEB1 ;FR0 <- ROOT(FR0) CARRY
958 RADON = 0 ;INDICATES RADIANS
959 DEGON = 6 ;INDICATES DEGREES
961 ASCZER = '0' ;ASCII ZERO
962 COLON = $3A ;ASCII COLON
963 CR = $9B ;SYSTEM EOL (CARRIAGE RETURN)
965 ;-------------------------------------------------------------------------
967 ;-------------------------------------------------------------------------
973 ;-------------------------------------------------------------------------
975 ;-------------------------------------------------------------------------
977 LOMEM = $80 ;2-byte low memory pointer
978 VNTP = $82 ;2-byte variable name table address
979 VNTD = $84 ;2-byte variable name table end + 1
980 VVTP = $86 ;2-byte variable value table
981 STMTAB = $88 ;2-byte statement table address
982 STMCUR = $8A ;2-byte current statement pointer
983 STARP = $8C ;2-byte string and array table pointer
984 RUNSTK = $8E ;2-byte runtime stack address
985 BMEMTOP = $90 ;2-byte top of memory pointer
986 STOPLN = $BA ;2-byte stopped line number
987 ERRSAVE = $C3 ;1-byte error code
988 PTABW = $C9 ;1-byte tab width
990 ;-------------------------------------------------------------------------
991 ; ATASCII CHARACTER DEFS
992 ;-------------------------------------------------------------------------
994 ATCLR = $7D ;CLEAR SCREEN CHARACTER
995 ATRUB = $7E ;BACK SPACE (RUBOUT)
997 ATEOL = $9B ;END-OF-LINE
998 ATDELL = $9C ;delete line
999 ATINSL = $9D ;insert line
1000 ATCTAB = $9E ;clear TAB
1001 ATSTAB = $9F ;set TAB
1002 ATBEL = $FD ;CONSOLE BELL
1003 ATDEL = $FE ;delete char.
1004 ATINS = $FF ;insert char.
1005 ATURW = $1C ;UP-ARROW
1006 ATDRW = $1D ;DOWN-ARROW
1007 ATLRW = $1E ;LEFT-ARROW
1008 ATRRW = $1F ;RIGHT-ARROW
1011 ;-------------------------------------------------------------------------
1012 ; OFFSETS INTO SECTSIZETAB (DIO functions)
1013 ;-------------------------------------------------------------------------
1015 sst_flag = 0 ; length 1
1016 sst_sectsize = 1 ; 2
1017 sst_driveno = 3 ; 1 (drive #)
1018 sst_size = 4 ; size of one entry
1019 ; if changed, adapt diopncls.s
1021 ;-------------------------------------------------------------------------
1022 ; OFFSETS INTO dio_phys_pos
1023 ;-------------------------------------------------------------------------
1025 diopp_head = 0 ; head
1026 diopp_track = 1 ; track / cylinder
1027 diopp_sector = 3 ; sector
1028 diopp_size = 5 ; size of structure
1030 ;-------------------------------------------------------------------------
1031 ; VALUES for dos_type
1032 ;-------------------------------------------------------------------------
1042 ; The DOSes with dos_type below or equal MAX_DOS_WITH_CMDLINE do support
1043 ; command line arguments.
1044 MAX_DOS_WITH_CMDLINE = XDOS
1046 ;-------------------------------------------------------------------------
1047 ; XDOS defines (version 2.4, taken from xdos24.pdf)
1048 ;-------------------------------------------------------------------------
1050 XOPT = $070B ; XDOS options
1051 XCAR = $070C ; XDOS cartridge address (+ $70D)
1052 XPAT = $086F ; XDOS bugfix and patch number
1053 XVER = $0870 ; XDOS version number
1054 XFILE = $087D ; XDOS filename buffer
1055 XLINE = $0880 ; XDOS DUP input line
1056 XGLIN = $0871 ; get line
1057 XSKIP = $0874 ; skip parameter
1059 .ifndef SHRAM_HANDLERS
1060 .import XMOVE_handler
1062 .define XMOVE XMOVE_handler
1063 XMOVE_org = $0877 ; move filename
1065 XMOVE = $0877 ; move filename
1067 XGNUM = $087A ; get number
1069 ;-------------------------------------------------------------------------
1071 ;-------------------------------------------------------------------------