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