]> git.sur5r.net Git - cc65/blob - libsrc/cbm510/cbm510.inc
Fixed sprite expand registers
[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 ; Screen size
197
198 XSIZE           = 40
199 YSIZE           = 25
200
201 ;-----------------------------------------------------------------------------
202 ; I/O Definitions
203
204 ; I/O  $d800: VIC
205
206 VIC_SPR0_X      = $00
207 VIC_SPR0_Y      = $01
208 VIC_SPR1_X      = $02
209 VIC_SPR1_Y      = $03
210 VIC_SPR2_X      = $04
211 VIC_SPR2_Y      = $05
212 VIC_SPR3_X      = $06
213 VIC_SPR3_Y      = $07
214 VIC_SPR4_X      = $08
215 VIC_SPR4_Y      = $09
216 VIC_SPR5_X      = $0A
217 VIC_SPR5_Y      = $0B
218 VIC_SPR6_X      = $0C
219 VIC_SPR6_Y      = $0D
220 VIC_SPR7_X      = $0E
221 VIC_SPR7_Y      = $0F
222 VIC_SPR_HI_X    = $10
223 VIC_SPR_ENA     = $15
224 VIC_SPR_EXP_Y   = $17
225 VIC_SPR_EXP_X   = $1D
226 VIC_SPR_MCOLOR  = $1C
227 VIC_SPR_BG_PRIO = $1B
228
229 VIC_SPR_MCOLOR0 = $25
230 VIC_SPR_MCOLOR1 = $26
231
232 VIC_SPR0_COLOR  = $27
233 VIC_SPR1_COLOR  = $28
234 VIC_SPR2_COLOR  = $29
235 VIC_SPR3_COLOR  = $2A
236 VIC_SPR4_COLOR  = $2B
237 VIC_SPR5_COLOR  = $2C
238 VIC_SPR6_COLOR  = $2D
239 VIC_SPR7_COLOR  = $2E
240
241 VIC_CTRL1       = $11
242 VIC_CTRL2       = $16
243
244 VIC_HLINE       = $12
245
246 VIC_VIDEO_ADR   = $18
247
248 VIC_IRR         = $19           ; Interrupt request register
249 VIC_IMR         = $1A           ; Interrupt mask register
250
251 VIC_BORDERCOLOR = $20
252 VIC_BG_COLOR0   = $21
253 VIC_BG_COLOR1   = $22
254 VIC_BG_COLOR2   = $23
255 VIC_BG_COLOR3   = $24
256
257
258
259 ; I/O  $da00: SID 6581
260
261 SID_S1Lo        = $00
262 SID_S1Hi        = $01
263 SID_PB1Lo       = $02
264 SID_PB1Hi       = $03
265 SID_Ctl1        = $04
266 SID_AD1         = $05
267 SID_SUR1        = $06
268
269 SID_S2Lo        = $07
270 SID_S2Hi        = $08
271 SID_PB2Lo       = $09
272 SID_PB2Hi       = $0A
273 SID_Ctl2        = $0B
274 SID_AD2         = $0C
275 SID_SUR2        = $0D
276
277 SID_S3Lo        = $0E
278 SID_S3Hi        = $0F
279 SID_PB3Lo       = $10
280 SID_PB3Hi       = $11
281 SID_Ctl3        = $12
282 SID_AD3         = $13
283 SID_SUR3        = $14
284
285 SID_FltLo       = $15
286 SID_FltHi       = $16
287 SID_FltCtl      = $17
288 SID_Amp         = $18
289 SID_ADConv1     = $19
290 SID_ADConv2     = $1A
291 SID_Noise       = $1B
292 SID_Read3       = $1C
293
294
295 ; I/O  $db00: CIA 6526 Inter Process Communication
296 ; I/O  $dc00: CIA 6526
297
298 CIA_PRA         = $00
299 CIA_PRB         = $01
300 CIA_DDRA        = $02
301 CIA_DDRB        = $03
302 CIA_ICR         = $0D
303 CIA_CRA         = $0E
304 CIA_CRB         = $0F
305
306
307 ; I/O  $dd00: ACIA 6551
308
309 ;       acia            =       $dd00
310
311         ADataReg        =       $00
312         AStatusReg      =       $01
313         ACmdReg         =       $02
314         ACtrlReg        =       $03
315
316
317
318 ; I/O  $de00: Triport #1 6525
319
320 ;       tpi1            =       $de00
321
322         tpiPortA        =       $00
323         tpiPortB        =       $01
324         tpiPortC        =       $02
325         tpiIntLatch     =       $02
326         tpiDDRA         =       $03
327         tpiDDRB         =       $04
328         tpiDDRC         =       $05
329         tpiIntMask      =       $05
330         tpiCtrlReg      =       $06
331         tpiActIntReg    =       $07
332
333
334
335 ; I/O  $df00: Triport #2 6525
336
337 ;       tpi2            =       $df00
338
339
340
341 ; Out video memory address
342
343 COLOR_RAM   = $D400                     ; System bank
344