]> git.sur5r.net Git - cc65/blob - asminc/c64.inc
Removed (pretty inconsistently used) tab chars from source code base.
[cc65] / asminc / c64.inc
1 ;
2 ; C64 generic definitions. Stolen from Elite128
3 ;
4
5
6 ; ---------------------------------------------------------------------------
7 ; Zero page, Commodore stuff
8
9 TIME            := $A0          ; 60 HZ clock
10 FNAM_LEN        := $B7          ; Length of filename
11 SECADR          := $B9          ; Secondary address
12 DEVNUM          := $BA          ; Device number
13 FNAM            := $BB          ; Pointer to filename
14 KEY_COUNT       := $C6          ; Number of keys in input buffer
15 RVS             := $C7          ; Reverse flag
16 CURS_FLAG       := $CC          ; 1 = cursor off
17 CURS_BLINK      := $CD          ; Blink counter
18 CURS_CHAR       := $CE          ; Character under the cursor
19 CURS_STATE      := $CF          ; Cursor blink state
20 SCREEN_PTR      := $D1          ; Pointer to current char in text screen
21 CURS_X          := $D3          ; Cursor column
22 CURS_Y          := $D6          ; Cursor row
23 CRAM_PTR        := $F3          ; Pointer to current char in color RAM
24
25 BASIC_BUF       := $200         ; Location of command-line
26 BASIC_BUF_LEN   = 89            ; Maximum length of command-line
27
28 CHARCOLOR       := $286
29 CURS_COLOR      := $287         ; Color under the cursor
30 PALFLAG         := $2A6         ; $01 = PAL, $00 = NTSC
31
32
33 ; ---------------------------------------------------------------------------
34 ; Kernal routines
35
36 ; Direct entries
37 CLRSCR          := $E544
38 KBDREAD         := $E5B4
39 NMIEXIT         := $FEBC
40
41 ; ---------------------------------------------------------------------------
42 ; Vector and other locations
43
44 IRQVec          := $0314
45 BRKVec          := $0316
46 NMIVec          := $0318
47
48 ; ---------------------------------------------------------------------------
49 ; Screen size
50
51 XSIZE           = 40
52 YSIZE           = 25
53
54 ; ---------------------------------------------------------------------------
55 ; I/O: VIC
56
57 VIC             := $D000
58 VIC_SPR0_X      := $D000
59 VIC_SPR0_Y      := $D001
60 VIC_SPR1_X      := $D002
61 VIC_SPR1_Y      := $D003
62 VIC_SPR2_X      := $D004
63 VIC_SPR2_Y      := $D005
64 VIC_SPR3_X      := $D006
65 VIC_SPR3_Y      := $D007
66 VIC_SPR4_X      := $D008
67 VIC_SPR4_Y      := $D009
68 VIC_SPR5_X      := $D00A
69 VIC_SPR5_Y      := $D00B
70 VIC_SPR6_X      := $D00C
71 VIC_SPR6_Y      := $D00D
72 VIC_SPR7_X      := $D00E
73 VIC_SPR7_Y      := $D00F
74 VIC_SPR_HI_X    := $D010
75 VIC_SPR_ENA     := $D015
76 VIC_SPR_EXP_Y   := $D017
77 VIC_SPR_EXP_X   := $D01D
78 VIC_SPR_MCOLOR  := $D01C
79 VIC_SPR_BG_PRIO := $D01B
80
81 VIC_SPR_MCOLOR0 := $D025
82 VIC_SPR_MCOLOR1 := $D026
83
84 VIC_SPR0_COLOR  := $D027
85 VIC_SPR1_COLOR  := $D028
86 VIC_SPR2_COLOR  := $D029
87 VIC_SPR3_COLOR  := $D02A
88 VIC_SPR4_COLOR  := $D02B
89 VIC_SPR5_COLOR  := $D02C
90 VIC_SPR6_COLOR  := $D02D
91 VIC_SPR7_COLOR  := $D02E
92
93 VIC_CTRL1       := $D011
94 VIC_CTRL2       := $D016
95
96 VIC_HLINE       := $D012
97
98 VIC_VIDEO_ADR   := $D018
99
100 VIC_IRR         := $D019        ; Interrupt request register
101 VIC_IMR         := $D01A        ; Interrupt mask register
102
103 VIC_BORDERCOLOR := $D020
104 VIC_BG_COLOR0   := $D021
105 VIC_BG_COLOR1   := $D022
106 VIC_BG_COLOR2   := $D023
107 VIC_BG_COLOR3   := $D024
108
109 ; 128 stuff:
110 VIC_KBD_128     := $D02F        ; Extended kbd bits (visible in 64 mode)
111 VIC_CLK_128     := $D030        ; Clock rate register (visible in 64 mode)
112
113
114 ; ---------------------------------------------------------------------------
115 ; I/O: SID
116
117 SID             := $D400
118 SID_S1Lo        := $D400
119 SID_S1Hi        := $D401
120 SID_PB1Lo       := $D402
121 SID_PB1Hi       := $D403
122 SID_Ctl1        := $D404
123 SID_AD1         := $D405
124 SID_SUR1        := $D406
125
126 SID_S2Lo        := $D407
127 SID_S2Hi        := $D408
128 SID_PB2Lo       := $D409
129 SID_PB2Hi       := $D40A
130 SID_Ctl2        := $D40B
131 SID_AD2         := $D40C
132 SID_SUR2        := $D40D
133
134 SID_S3Lo        := $D40E
135 SID_S3Hi        := $D40F
136 SID_PB3Lo       := $D410
137 SID_PB3Hi       := $D411
138 SID_Ctl3        := $D412
139 SID_AD3         := $D413
140 SID_SUR3        := $D414
141
142 SID_FltLo       := $D415
143 SID_FltHi       := $D416
144 SID_FltCtl      := $D417
145 SID_Amp         := $D418
146 SID_ADConv1     := $D419
147 SID_ADConv2     := $D41A
148 SID_Noise       := $D41B
149 SID_Read3       := $D41C
150
151 ; ---------------------------------------------------------------------------
152 ; I/O: VDC (128 only)
153
154 VDC_INDEX       := $D600
155 VDC_DATA        := $D601
156
157 ; ---------------------------------------------------------------------------
158 ; I/O: CIAs
159
160 CIA1            := $DC00
161 CIA1_PRA        := $DC00
162 CIA1_PRB        := $DC01
163 CIA1_DDRA       := $DC02
164 CIA1_DDRB       := $DC03
165 CIA1_TOD10      := $DC08
166 CIA1_TODSEC     := $DC09
167 CIA1_TODMIN     := $DC0A
168 CIA1_TODHR      := $DC0B
169 CIA1_ICR        := $DC0D
170 CIA1_CRA        := $DC0E
171 CIA1_CRB        := $DC0F
172
173 CIA2            := $DD00
174 CIA2_PRA        := $DD00
175 CIA2_PRB        := $DD01
176 CIA2_DDRA       := $DD02
177 CIA2_DDRB       := $DD03
178 CIA2_TOD10      := $DD08
179 CIA2_TODSEC     := $DD09
180 CIA2_TODMIN     := $DD0A
181 CIA2_TODHR      := $DD0B
182 CIA2_ICR        := $DD0D
183 CIA2_CRA        := $DD0E
184 CIA2_CRB        := $DD0F
185
186 ; ---------------------------------------------------------------------------
187 ; Super CPU
188
189 SCPU_VIC_Bank1  := $D075
190 SCPU_Slow       := $D07A
191 SCPU_Fast       := $D07B
192 SCPU_EnableRegs := $D07E
193 SCPU_DisableRegs:= $D07F
194 SCPU_Detect     := $D0BC
195
196
197 ; ---------------------------------------------------------------------------
198 ; Processor Port at $01
199
200 LORAM           = $01           ; Enable the basic rom
201 HIRAM           = $02           ; Enable the kernal rom
202 IOEN            = $04           ; Enable I/O
203 CASSDATA        = $08           ; Cassette data
204 CASSPLAY        = $10           ; Cassette: Play
205 CASSMOT         = $20           ; Cassette motor on
206 TP_FAST         = $80           ; Switch Rossmoeller TurboProcess to fast mode
207
208 RAMONLY         = $F8           ; (~(LORAM | HIRAM | IOEN)) & $FF
209
210