]> git.sur5r.net Git - cc65/blob - libsrc/cbm510/cbm510.inc
For the CBM platforms, make revers() machine dependent and use the RVS flag
[cc65] / libsrc / cbm510 / cbm510.inc
1 ;
2 ; Zero page variables and I/O definitions for the CBM 510
3 ;
4 ; Taken from a kernal disassembly done by myself in 2000/2001.
5 ;
6 ; Ullrich von Bassewitz, 13.09.2001
7
8
9 ;-----------------------------------------------------------------------------
10 ; Zeropage stuff
11
12 ExecReg         = $0000
13 IndReg          = $0001
14
15 ; Up to $20 and $60-8F used by runtime and fixed values
16 ; -----------------------------------
17
18 KbdScanBuf      = $20           ; Intermediate for keyboard scan
19 ; RS232 stuff
20 RecvHead        = $21           ; Head of receive buffer
21 RecvTail        = $22           ; Tail of receive buffer
22 RecvFreeCnt     = $23           ; Number of bytes in receive buffer
23 SendHead        = $24           ; Head of send buffer
24 SendTail        = $25           ; Tail of send buffer
25 SendFreeCnt     = $26           ; Number of bytes free in send buffer
26
27 FileNameAdrLo   = $90
28 FileNameAdrHi   = $91
29 FileNameAdrSeg  = $92
30 SaveAdrLow      = $93
31 SaveAdrHi       = $94
32 SaveAdrSeg      = $95
33 EndAdrLow       = $96
34 EndAdrHi        = $97
35 EndAdrSeg       = $98
36 StartAdrLow     = $99
37 StartAdrHi      = $9A
38 StartAdrSeg     = $9B
39 Status          = $9C
40 FileNameLen     = $9D
41 LogicalAdr      = $9E
42 FirstAdr        = $9F
43 SecondAdr       = $A0
44 DefInpDev       = $A1
45 DefOutDev       = $A2
46 TapeBufPtr      = $A3
47 TapeBufPtrSeg   = $A5
48 rs232BufPtr     = $A6
49 rs232BufPtrSeg  = $A8
50 StopKeyFlag     = $A9
51 CTemp           = $AA
52 snsw1           = $AB
53 SegChgPtr       = $AC
54 PChighSave      = $AE
55 PClowSave       = $AF
56 SRSave          = $B0
57 ACSave          = $B1
58 XRSave          = $B2
59 YRSave          = $B3
60 SPSave          = $B4
61 IndSegSave      = $B5
62 IRQSaveHi       = $B7
63 IRQSaveLo       = $B8
64 Adr1            = $B9
65 Adr2            = $BB
66 MoniCntr        = $BD
67 MoniTmp         = $BE
68 MoniDevNr       = $BF
69 PgmKeyBuf       = $C0
70 PgmKeyPtr       = $C2
71 sedsal          = $C4
72 sedeal          = $C6
73 SCREEN_PTR      = $C8
74 CURS_Y          = $CA
75 CURS_X          = $CB
76 GrafMode        = $CC
77 LastIndex       = $CD
78 LastLine        = $CE
79 LastCol         = $CF
80 crsw            = $D0
81 KeyIndex        = $D1
82 QuoteSw         = $D2
83 Insrt           = $D3
84 Config          = $D4
85 LastLinePos     = $D5
86 PgmKeyIndex     = $D6
87 RepeatCount     = $D7
88 RepeatDelay     = $D8
89 sedt1           = $D9           ; Temp
90 sedt2           = $DA           ; Temp, frequently used
91 PrtData         = $DB
92 ScreenTop       = $DC
93 ScreenBot       = $DD
94 ScreenLeft      = $DE
95 ScreenRight     = $DF
96 ModKey          = $E0
97 NorKey          = $E1
98 BitTable        = $E2
99 CURS_FLAG       = $E6           ; 1 = no cursor
100 CURS_BLINK      = $E7           ; cursor blink counter
101 CRAM_PTR        = $E8
102 TempColor       = $EA
103 CURS_STATE      = $EB           ; Cursor blink state
104 CHARCOLOR       = $EC
105 CURS_COLOR      = $ED           ; Color behind cursor
106 OutCharTmp      = $EE
107 ScreenSeq       = $EF           ; Segment of video RAM
108
109 ;-----------------------------------------------------------------------------
110 ; Page 3 variables
111
112 ;
113 ; system ram vectors
114 ;
115
116 IRQVec               = $0300
117 BRKVec               = $0302
118 NMIVec               = $0304
119 openVec              = $0306
120 closeVec             = $0308
121 chkinVec             = $030A
122 ckoutVec             = $030C
123 clrchVec             = $030E
124 basinVec             = $0310
125 bsoutVec             = $0312
126 stopVec              = $0314
127 getinVec             = $0316
128 clallVec             = $0318
129 loadVec              = $031A
130 saveVec              = $031C
131 usrcmd               = $031E
132 escvec               = $0320
133 ctrlvec              = $0322
134 secndVec             = $0324
135 tksaVec              = $0326
136 acptrVec             = $0328
137 cioutVec             = $032A
138 untlkVec             = $032C
139 unlsnVec             = $032E
140 listnVec             = $0330
141 talkVec              = $0332
142
143 ;
144 ;
145 ;
146
147 LogicalAdrTable      = $0334
148 FirstAdrTable        = $033E
149 SecondAdrTable       = $0348
150 SysMemBot            = $0352
151 SysMemTop            = $0355
152 UsrMemBot            = $0358
153 UsrMemTop            = $035B
154 TimOut               = $035E
155 VerifyFlag           = $035F
156 DevTabIndex          = $0360
157 MsgFlag              = $0361
158 CassBufPtr           = $0362
159 t1                   = $0363
160 t2                   = $0364
161 XSave                = $0365
162 SaveX                = $0366
163 SaveXt               = $0367
164 temp                 = $0368
165 alarm                = $0369
166 TapeVec              = $036A
167 LoadStAdr            = $036F
168 CassMotFlag          = $0375
169 m6551Ctrl            = $0376
170 m6551Cmd             = $0377
171 rs232status          = $037A
172 dcddsr               = $037B
173 rs232head            = $037C
174 rs232tail            = $037D
175 PgmKeyEnd            = $0380
176 PgmKeySeg            = $0382
177 RVS                  = $0383
178 linetmp              = $0398
179 LastPrtChar          = $0399
180 InsertFlag           = $039A
181 ScrollFlag           = $039B
182 FktTemp              = $039C
183 PgmKeyIdx            = $039D
184 LogScrollFlag        = $039E
185 BellMode             = $039F    ; Bell on/off 00 = an
186 SegSave              = $03A0
187 TabStopTable         = $03A1    ; 80 bits for tabstops
188 KeyBuf               = $03AB    ; Keyboard buffer
189 funvec               = $03B5    ; Vector for function key handline
190 sedt3                = $03B9
191 MoniSegSave          = $03f0
192 wstvec               = $03F8
193 WstFlag              = $03FA    ; Warm start flag
194
195 ;-----------------------------------------------------------------------------
196 ; I/O Definitions
197
198 ; I/O  $d800: VIC
199
200 VIC_SPR0_X      = $00
201 VIC_SPR0_Y      = $01
202 VIC_SPR1_X      = $02
203 VIC_SPR1_Y      = $03
204 VIC_SPR2_X      = $04
205 VIC_SPR2_Y      = $05
206 VIC_SPR3_X      = $06
207 VIC_SPR3_Y      = $07
208 VIC_SPR4_X      = $08
209 VIC_SPR4_Y      = $09
210 VIC_SPR5_X      = $0A
211 VIC_SPR5_Y      = $0B
212 VIC_SPR6_X      = $0C
213 VIC_SPR6_Y      = $0D
214 VIC_SPR7_X      = $0E
215 VIC_SPR7_Y      = $0F
216 VIC_SPR_HI_X    = $10
217 VIC_SPR_ENA     = $15
218 VIC_SPR_EXP_X   = $17
219 VIC_SPR_EXP_Y   = $1D
220 VIC_SPR_MCOLOR  = $1C
221 VIC_SPR_BG_PRIO = $1B
222
223 VIC_SPR_MCOLOR0 = $25
224 VIC_SPR_MCOLOR1 = $26
225
226 VIC_SPR0_COLOR  = $27
227 VIC_SPR1_COLOR  = $28
228 VIC_SPR2_COLOR  = $29
229 VIC_SPR3_COLOR  = $2A
230 VIC_SPR4_COLOR  = $2B
231 VIC_SPR5_COLOR  = $2C
232 VIC_SPR6_COLOR  = $2D
233 VIC_SPR7_COLOR  = $2E
234
235 VIC_CTRL1       = $11
236 VIC_CTRL2       = $16
237
238 VIC_HLINE       = $12
239
240 VIC_VIDEO_ADR   = $18
241
242 VIC_IRR         = $19           ; Interrupt request register
243 VIC_IMR         = $1A           ; Interrupt mask register
244
245 VIC_BORDERCOLOR = $20
246 VIC_BG_COLOR0   = $21
247 VIC_BG_COLOR1   = $22
248 VIC_BG_COLOR2   = $23
249 VIC_BG_COLOR3   = $24
250
251
252
253 ; I/O  $da00: SID 6581
254
255 SID_S1Lo        = $00
256 SID_S1Hi        = $01
257 SID_PB1Lo       = $02
258 SID_PB1Hi       = $03
259 SID_Ctl1        = $04
260 SID_AD1         = $05
261 SID_SUR1        = $06
262
263 SID_S2Lo        = $07
264 SID_S2Hi        = $08
265 SID_PB2Lo       = $09
266 SID_PB2Hi       = $0A
267 SID_Ctl2        = $0B
268 SID_AD2         = $0C
269 SID_SUR2        = $0D
270
271 SID_S3Lo        = $0E
272 SID_S3Hi        = $0F
273 SID_PB3Lo       = $10
274 SID_PB3Hi       = $11
275 SID_Ctl3        = $12
276 SID_AD3         = $13
277 SID_SUR3        = $14
278
279 SID_FltLo       = $15
280 SID_FltHi       = $16
281 SID_FltCtl      = $17
282 SID_Amp         = $18
283 SID_ADConv1     = $19
284 SID_ADConv2     = $1A
285 SID_Noise       = $1B
286 SID_Read3       = $1C
287
288
289 ; I/O  $db00: CIA 6526 Inter Process Communication
290 ; I/O  $dc00: CIA 6526
291
292 CIA_PRA         = $00
293 CIA_PRB         = $01
294 CIA_DDRA        = $02
295 CIA_DDRB        = $03
296 CIA_ICR         = $0D
297 CIA_CRA         = $0E
298 CIA_CRB         = $0F
299
300
301 ; I/O  $dd00: ACIA 6551
302
303 ;       acia            =       $dd00
304
305         ADataReg        =       $00
306         AStatusReg      =       $01
307         ACmdReg         =       $02
308         ACtrlReg        =       $03
309
310
311
312 ; I/O  $de00: Triport #1 6525
313
314 ;       tpi1            =       $de00
315
316         tpiPortA        =       $00
317         tpiPortB        =       $01
318         tpiPortC        =       $02
319         tpiIntLatch     =       $02
320         tpiDDRA         =       $03
321         tpiDDRB         =       $04
322         tpiDDRC         =       $05
323         tpiIntMask      =       $05
324         tpiCtrlReg      =       $06
325         tpiActIntReg    =       $07
326
327
328
329 ; I/O  $df00: Triport #2 6525
330
331 ;       tpi2            =       $df00
332
333
334
335 ; Out video memory address
336
337 COLOR_RAM   = $D400                     ; System bank
338