]> git.sur5r.net Git - cc65/blob - libsrc/atari/atari.inc
ostype.o: new object file
[cc65] / libsrc / atari / atari.inc
1 ;-------------------------------------------------------------------------
2 ; Atari System Equates -- Version 1.0.0
3 ; By Freddy Offenga, 4/15/2000
4 ;
5 ; References:
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 ;
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 ;-------------------------------------------------------------------------
15
16 ;-------------------------------------------------------------------------
17 ; Configuration Equates
18 ;-------------------------------------------------------------------------
19
20 MAXDEV  = 33            ;offset to last possible entry of HATABS
21 IOCBSZ  = 16            ;length of IOCB
22
23 SEIOCB  = 0*IOCBSZ      ;##rev2## screen editor IOCB index
24 MAXIOC  = 8*IOCBSZ      ;first invalid IOCB index
25
26 DSCTSZ  = 128           ;##rev2## disk sector size
27
28 LEDGE   = 2             ;left edge
29 REDGE   = 39            ;right edge
30
31 INIML   = $0700         ;##rev2## initial MEMLO
32
33 ICSORG  = $CC00         ;##rev2## international character set origin
34 DCSORG  = $E000         ;##rev2## domestic character set origin
35
36 ; IOCB Command Code Equates
37
38 OPEN    = $03           ;open
39 GETREC  = $05           ;get record
40 GETCHR  = $07           ;get character(s)
41 PUTREC  = $09           ;put record
42 PUTCHR  = $0B           ;put character(s)
43 CLOSE   = $0C           ;close
44 STATIS  = $0D           ;status
45 SPECIL  = $0E           ;special
46
47 ; Special Entry Command Equates
48
49 ; Screen Commands
50
51 DRAWLN  = $11           ;draw line
52 FILLIN  = $12           ;draw line with right fill
53
54 ; ICAX1 Auxiliary Byte 1 Equates
55
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
62
63 ; Device Code Equates
64
65 CASSET  = 'C'           ;cassette
66 DISK    = 'D'           ;disk
67 SCREDT  = 'E'           ;screen editor
68 KBD     = 'K'           ;keyboard
69 PRINTR  = 'P'           ;printer
70 DISPLY  = 'S'           ;screen display
71
72 ; Character and Key Code Equates
73
74 CLS     = $7D           ;##rev2## clear screen
75 EOL     = $9B           ;end of line (RETURN)
76
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
83
84 ; Status Code Equates
85
86 SUCCES  = 1             ;($01) succesful operation
87
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
108
109 ; DCB Device Bus Equates
110
111 DISKID  = $31           ;##rev2## disk bus ID
112 PDEVN   = $40           ;##rev2## printer bus ID
113 CASET   = $60           ;##rev2## cassette bus ID
114
115 ; Bus Command Equates
116
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
122
123 ; Command Auxiliary Byte Equates
124
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
129
130 ; Bus Response Equates
131
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
136
137 ; Floating Point Miscellaneous Equates
138
139 FPREC   = 6             ;precision
140
141 FMPREC  = FPREC-1       ;##rev2## length of mantissa
142
143 ; Cassette Record Type Equates
144
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)
149
150 TONE1   = 2             ;##rev2## record
151 TONE2   = 1             ;##rev2## playback
152
153 ; Cassette Timing Equates
154
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
163
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
172
173 WIRGHI  = 0             ;##rev2## high WRITE IRG
174 RIRGHI  = 0             ;##rev2## high READ IRG
175
176 ; Power-up Validation Byte Value Equates
177
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
181
182 ; Relocating Loader Miscellaneous Equates
183
184 DATAER  = 156           ;##rev2## end of record appears before END
185 MEMERR  = 157           ;##rev2## memory insufficient for load error
186
187 ; Miscellaneous Equates
188
189 IOCFRE  = $FF           ;IOCB free indication
190
191 B19200  = $0028         ;##rev2## 19200 baud POKEY counter value
192 B00600  = $05CC         ;##rev2## 600 baud POKEY counter value
193
194 HITONE  = $05           ;##rev2## FSK high freq. POKEY counter value
195 LOTONE  = $07           ;##rev2## FSK low freq. POKEY counter value
196
197 NCOMLO  = $34           ;##rev2## PIA lower NOT COMMAND line command
198 NCOMHI  = $3C           ;##rev2## PIA raise NOT COMMAND line command
199
200 MOTRGO  = $34           ;##rev2## PIA cassette motor ON command
201 MOTRST  = $3C           ;##rev2## PIA cassette motor OFF command
202
203 NODAT   = $00           ;##rev2## SIO immediate operation
204 GETDAT  = $40           ;##rev2## SIO read data frame
205 PUTDAT  = $80           ;##rev2## SIO write data frame
206
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
210
211 NBUFSZ  = 40            ;##rev2## print normal buffer size
212 DBUFSZ  = 20            ;##rev2## print double buffer size
213 SBUFSZ  = 29            ;##rev2## print sideways buffer size
214
215 ;-------------------------------------------------------------------------
216 ; Page Zero Address Equates
217 ;-------------------------------------------------------------------------
218
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)
222
223 ; Not Cleared
224
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
230
231 ; Cleared upon Coldstart only
232
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
238
239 ; Cleared upon Coldstart or Warmstart
240
241 INTZBS  = $10           ;INTERRUPT HANDLER
242
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
251
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
256
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
272
273 ENTVEC  = $2C           ;##rev2## 2-byte (not used)
274 ICIDNO  = $2E           ;IOCB NUMBER X 16
275 CIOCHR  = $2F           ;CHARACTER BYTE FOR CURRENT OPERATION
276
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)
296
297 CRITIC  = $42           ;DEFINES CRITICAL SECTION (CRITICAL IF NON-Z)
298
299 FMSZPG  = $43           ;DISK FILE MANAGER SYSTEM ZERO PAGE
300
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
308
309
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
328
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
332
333 SAVADR  = $68           ;2-byte saved address
334 FRMADR  = $68           ;##rev2## 2-byte source address
335
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
353
354 ; Floating Point Package Page Zero Address Equates
355
356 FR0     = $D4           ;6-byte register 0
357 FR0M    = $D5           ;##rev2## 5-byte register 0 mantissa
358 QTEMP   = $D9           ;##rev2## 1-byte temporary
359
360 FRE     = $DA           ;6-byte (internal) register E
361
362 FR1     = $E0           ;FP REG1
363 FR1M    = $E1           ;##rev2## 5-byte register 1 mantissa
364
365 FR2     = $E6           ;6-byte (internal) register 2
366
367 FRX     = $EC           ;1-byte temporary
368
369 EEXP    = $ED           ;VALUE OF E
370
371 FRSIGN  = $EE           ;##rev2## 1-byte floating point sign
372 NSIGN   = $EE           ;SIGN OF #
373
374 PLYCNT  = $EF           ;##rev2## 1-byte polynomial degree
375 ESIGN   = $EF           ;SIGN OF EXPONENT
376
377 SGNFLG  = $F0           ;##rev2## 1-byte sign flag
378 FCHRFLG = $F0           ;1ST CHAR FLAG
379
380 XFMFLG  = $F1           ;##rev2## 1-byte transform flag
381 DIGRT   = $F1           ;# OF DIGITS RIGHT OF DECIMAL
382
383 CIX     = $F2           ;CURRENT INPUT INDEX
384 INBUFF  = $F3           ;POINTS TO USER'S LINE INPUT BUFFER
385
386 ZTEMP1  = $F5           ;2-byte temporary
387 ZTEMP4  = $F7           ;2-byte temporary
388 ZTEMP3  = $F9           ;2-byte temporary
389
390 ;DEGFLG = $FB           ;##old## same as RADFLG
391 ;RADFLG = $FB           ;##old## 0=RADIANS, 6=DEGREES
392
393 FLPTR   = $FC           ;2-byte floating point number pointer
394 FPTR2   = $FE           ;2-byte floating point number pointer
395
396 ;-------------------------------------------------------------------------
397 ; Page Two Address Equates
398 ;-------------------------------------------------------------------------
399
400 INTABS  = $0200         ;INTERRUPT RAM
401
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
442
443 TEMP    = $023E         ;TEMPORARY RAM CELL
444
445 ERRFLG  = $023F         ;ERROR FLAG - ANY DEVICE ERROR EXCEPT TIME OUT
446
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
460
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
466
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
475
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
480
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
489
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
494
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
527
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
532
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
537
538 COLOR4  = $02C8         ;1-byte background color/luminance
539
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
544
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
549
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
559
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
563
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
576
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
581
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
588
589 ;-------------------------------------------------------------------------
590 ; Page Three Address Equates
591 ;-------------------------------------------------------------------------
592
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
606
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
621
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
626
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
641
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
648
649 ; Remainder of Page Three Not Cleared upon Reset
650
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
657
658 ;-------------------------------------------------------------------------
659 ; Page Four/Five Address Equates
660 ;-------------------------------------------------------------------------
661
662 ; USER AREA STARTS HERE AND GOES TO END OF PAGE FIVE
663 USAREA  = $0480         ;128 bytes reserved for application
664
665 LBPR1   = $057E         ;LBUFF PREFIX 1
666 LBPR2   = $057F         ;LBUFF PREFIX 2
667 LBUFF   = $0580         ;128-byte line buffer
668
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
672
673 ;LBFEND = $05FF         ;##old## END OF LBUFF
674
675 ;-------------------------------------------------------------------------
676 ; Cartridge Address Equates
677 ;-------------------------------------------------------------------------
678
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
683
684 ;-------------------------------------------------------------------------
685 ; CTIA/GTIA Address Equates
686 ;-------------------------------------------------------------------------
687
688 GTIA    = $D000         ;CTIA/GTIA area
689
690 ; Read/Write Addresses
691
692 CONSOL  = $D01F         ;console switches and speaker control
693
694 ; Read Addresses
695
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
700
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
705
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
710
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
715
716 TRIG0   = $D010         ;joystick trigger 0
717 TRIG1   = $D011         ;joystick trigger 1
718
719 TRIG2   = $D012         ;cartridge interlock
720 TRIG3   = $D013         ;ACMI module interlock
721
722 PAL     = $D014         ;##rev2## PAL/NTSC indicator
723
724 ; Write Addresses
725
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
730
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
735
736 SIZEP0  = $D008         ;player 0 size
737 SIZEP1  = $D009         ;player 1 size
738 SIZEF2  = $D00A         ;player 2 size
739 SIZEP3  = $D00B         ;player 3 size
740
741 SIZEM   = $D00C         ;missile sizes
742
743 GRAFP0  = $D00D         ;player 0 graphics
744 GRAFP1  = $D00E         ;player 1 graphics
745 GRAFP2  = $D00F         ;player 2 graphics
746 GRAFP3  = $D010         ;player 3 graphics
747
748 GRAFM   = $D011         ;missile graphics
749
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
754
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
759
760 COLBK   = $D01A         ;background color/luminance
761
762 PRIOR   = $D01B         ;priority select
763 VDELAY  = $D01C         ;vertical delay
764 GRACTL  = $D01D         ;graphic control
765 HITCLR  = $D01E         ;collision clear
766
767 ;-------------------------------------------------------------------------
768 ; PBI Address Equates
769 ;-------------------------------------------------------------------------
770
771 PBI     = $D100         ;##rev2## parallel bus interface area
772
773 ; Read Addresses
774
775 PDVI    = $D1FF         ;##rev2## parallel device IRQ status
776
777 ; Write Addresses
778
779 PDVS    = $D1FF         ;##rev2## parallel device select
780
781 ; PBI RAM Address Equates
782
783 PBIRAM  = $D600         ;##rev2## parallel bus interface RAM area
784
785 ; Parallel Device Address Equates
786
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
792
793 ;-------------------------------------------------------------------------
794 ; POKEY Address Equates
795 ;-------------------------------------------------------------------------
796
797 POKEY   = $D200         ;POKEY area
798
799 ; Read Addresses
800
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
809
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
816
817 ; Write Addresses
818
819 AUDF1   = $D200         ;channel 1 audio frequency
820 AUDC1   = $D201         ;channel 1 audio control
821
822 AUDF2   = $D202         ;channel 2 audio frequency
823 AUDC2   = $D203         ;channel 2 audio control
824
825 AUDF3   = $D204         ;channel 3 audio frequency
826 AUDC3   = $D205         ;channel 3 audio control
827
828 AUDF4   = $D206         ;channel 4 audio frequency
829 AUDC4   = $D207         ;channel 4 audio control
830
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
838
839 ;-------------------------------------------------------------------------
840 ; PIA Address Equates
841 ;-------------------------------------------------------------------------
842
843 PIA     = $D300         ;PIA area
844
845 PORTA   = $D300         ;port A direction register or jacks one/two
846 PORTB   = $D301         ;port B direction register or memory management
847
848 PACTL   = $D302         ;port A control
849 PBCTL   = $D303         ;port B control
850
851 ;-------------------------------------------------------------------------
852 ; ANTIC Address Equates
853 ;-------------------------------------------------------------------------
854
855 ANTIC   = $D400         ;ANTIC area
856
857 ; Read Addresses
858
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
863
864 ; Write Addresses
865
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
877
878 ;-------------------------------------------------------------------------
879 ; Floating Point Package Address Equates
880 ;-------------------------------------------------------------------------
881
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
904
905 ;-------------------------------------------------------------------------
906 ; Device Handler Vector Table Address Equates
907 ;-------------------------------------------------------------------------
908
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
914
915 ;-------------------------------------------------------------------------
916 ; Jump Vector Address Equates
917 ;-------------------------------------------------------------------------
918
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
942
943 ; NOTE: OS rom self-test labels are not included in this file
944
945 ;-------------------------------------------------------------------------
946 ; Some misc. stuff from the 400/800 rev.B source
947 ;-------------------------------------------------------------------------
948
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
954
955 RADON   = 0             ;INDICATES RADIANS
956 DEGON   = 6             ;INDICATES DEGREES
957
958 ASCZER  = '0'           ;ASCII ZERO
959 COLON   = $3A           ;ASCII COLON 
960 CR      = $9B           ;SYSTEM EOL (CARRIAGE RETURN)
961
962 ;-------------------------------------------------------------------------
963 ; 6502
964 ;-------------------------------------------------------------------------
965
966 NMIVEC  = $FFFA
967 RESVEC  = $FFFC
968 IRQVEC  = $FFFE
969
970 ;-------------------------------------------------------------------------
971 ; BASIC
972 ;-------------------------------------------------------------------------
973
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
986
987 ;-------------------------------------------------------------------------
988 ; DOS
989 ;-------------------------------------------------------------------------
990
991 DOS     = $0700
992
993 RENAME  = $20           ;RENAME DISK FILE
994 DELETE  = $21           ;DELETE DISK FILE
995 FORMAT  = $21           ;FORMAT
996 LOCKFL  = $23           ;LOCK FILE TO READ ONLY
997 UNLOCK  = $24           ;UNLOCK LOCKED FILE
998 POINT   = $25           ;POINT SECTOR
999 NOTE    = $26           ;NOTE SECTOR
1000
1001 ; Command line table, Index values for (DOSVEC),Y -- COMTAB
1002 ; Compatible with OS/A+, DOS XL and SpartaDOS
1003
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
1009
1010 ;-------------------------------------------------------------------------
1011 ; ATASCII CHARACTER DEFS
1012 ;-------------------------------------------------------------------------
1013
1014 ATCLR   = $7D           ;CLEAR SCREEN CHARACTER
1015 ATRUB   = $7E           ;BACK SPACE (RUBOUT)
1016 ATTAB   = $7F           ;TAB
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
1024
1025 ;-------------------------------------------------------------------------
1026 ; End of atari.inc
1027 ;-------------------------------------------------------------------------
1028