2017-08-26 22:37:54 +00:00
|
|
|
|
1 ********************************
|
|
|
|
|
2 *
|
|
|
|
|
3 * Apple][Sd Firmware
|
2017-10-15 14:48:13 +00:00
|
|
|
|
4 * Version 0.7
|
2017-08-26 22:37:54 +00:00
|
|
|
|
5 *
|
|
|
|
|
6 * (c) Florian Reitz, 2017
|
|
|
|
|
7 *
|
|
|
|
|
8 * X register usually contains SLOT16
|
|
|
|
|
9 * Y register is used for counting or SLOT
|
|
|
|
|
10 *
|
|
|
|
|
11 ********************************
|
2017-08-27 13:02:58 +00:00
|
|
|
|
12
|
2017-10-16 22:06:33 +00:00
|
|
|
|
16-OCT-17 23:58
|
2017-08-27 13:02:58 +00:00
|
|
|
|
14
|
2017-08-26 22:37:54 +00:00
|
|
|
|
15 XC ; enable 65C02 code
|
2017-08-27 13:02:58 +00:00
|
|
|
|
16 DEBUG = 0
|
|
|
|
|
17 DO DEBUG
|
|
|
|
|
18 ORG $8000
|
|
|
|
|
19 ELSE
|
2017-08-26 22:37:54 +00:00
|
|
|
|
20 ORG $C800 ; Expansion ROM
|
2017-08-27 13:02:58 +00:00
|
|
|
|
21 FIN
|
|
|
|
|
22
|
2017-08-26 22:37:54 +00:00
|
|
|
|
23 * Memory defines
|
2017-08-27 13:02:58 +00:00
|
|
|
|
24
|
2017-08-26 22:37:54 +00:00
|
|
|
|
25 SLOT16 = $2B ; $s0 -> slot * 16
|
2017-08-27 13:02:58 +00:00
|
|
|
|
26 WORK = $3C
|
2017-08-26 22:37:54 +00:00
|
|
|
|
27 SLOT = $3D ; $0s
|
2017-08-27 13:02:58 +00:00
|
|
|
|
28 CMDLO = $40
|
|
|
|
|
29 CMDHI = $41
|
|
|
|
|
30
|
2017-10-15 14:48:13 +00:00
|
|
|
|
31 DCMD = $42 ; Command code
|
|
|
|
|
32 BUFFER = $44 ; Buffer address
|
|
|
|
|
33 BLOCK = $46 ; Block number
|
|
|
|
|
34
|
|
|
|
|
35 CURSLOT = $07F8 ; $Cs
|
|
|
|
|
36 DATA = $C080
|
|
|
|
|
37 CTRL = DATA+1
|
|
|
|
|
38 DIV = DATA+2
|
|
|
|
|
39 SS = DATA+3
|
|
|
|
|
40 R30 = $0478
|
|
|
|
|
41 R31 = $04F8
|
|
|
|
|
42 R32 = $0578
|
|
|
|
|
43 R33 = $05F8
|
|
|
|
|
44
|
|
|
|
|
45 * Constants
|
|
|
|
|
46
|
|
|
|
|
47 DUMMY = $FF
|
|
|
|
|
48 FRX = $10 ; CTRL register
|
|
|
|
|
49 ECE = $04
|
|
|
|
|
50 SS0 = $01 ; SS register
|
|
|
|
|
51 WP = $20
|
|
|
|
|
52 CD = $40
|
|
|
|
|
53 INITED = $80
|
|
|
|
|
54
|
|
|
|
|
55
|
2017-10-16 22:06:33 +00:00
|
|
|
|
56 ********************************
|
|
|
|
|
57 *
|
|
|
|
|
58 * Initialize SD card
|
|
|
|
|
59 *
|
|
|
|
|
60 * C Clear - No error
|
|
|
|
|
61 * Set - Error
|
|
|
|
|
62 * A $00 - No error
|
|
|
|
|
63 * $27 - I/O error - Init failed
|
|
|
|
|
64 * $2F - No card inserted
|
|
|
|
|
65 *
|
|
|
|
|
66 ********************************
|
|
|
|
|
67
|
|
|
|
|
C800: D8 68 INIT CLD
|
|
|
|
|
C801: A9 03 69 LDA #$03 ; set SPI mode 3
|
|
|
|
|
C803: 9D 81 C0 70 STA CTRL,X
|
|
|
|
|
C806: BD 83 C0 71 LDA SS,X
|
|
|
|
|
C809: 09 01 72 ORA #SS0 ; set CS high
|
|
|
|
|
C80B: 9D 83 C0 73 STA SS,X
|
|
|
|
|
C80E: A9 07 74 LDA #7
|
|
|
|
|
C810: 9D 82 C0 75 STA DIV,X
|
|
|
|
|
C813: A0 0A 76 LDY #10
|
|
|
|
|
C815: A9 FF 77 LDA #DUMMY
|
|
|
|
|
78
|
|
|
|
|
C817: 9D 80 C0 79 :LOOP STA DATA,X
|
|
|
|
|
C81A: 3C 81 C0 80 :WAIT BIT CTRL,X
|
|
|
|
|
C81D: 10 FB 81 BPL :WAIT
|
|
|
|
|
C81F: 88 82 DEY
|
|
|
|
|
C820: D0 F5 83 BNE :LOOP ; do 10 times
|
|
|
|
|
C822: BD 83 C0 84 LDA SS,X
|
|
|
|
|
C825: 29 FE 85 AND #$FF!SS0 ; set CS low
|
|
|
|
|
C827: 9D 83 C0 86 STA SS,X
|
|
|
|
|
87
|
|
|
|
|
C82A: A9 C5 88 LDA #<CMD0 ; send CMD0
|
|
|
|
|
C82C: 85 40 89 STA CMDLO
|
|
|
|
|
C82E: A9 CA 90 LDA #>CMD0
|
|
|
|
|
C830: 85 41 91 STA CMDHI
|
|
|
|
|
C832: 20 F0 C8 92 JSR CMD
|
|
|
|
|
C835: 20 04 C9 93 JSR GETR1 ; get response
|
|
|
|
|
C838: C9 01 94 CMP #$01
|
|
|
|
|
C83A: D0 39 95 BNE :ERROR1 ; error!
|
|
|
|
|
96
|
|
|
|
|
C83C: A9 D1 97 LDA #<CMD8 ; send CMD8
|
|
|
|
|
C83E: 85 40 98 STA CMDLO
|
|
|
|
|
C840: A9 CA 99 LDA #>CMD8
|
|
|
|
|
C842: 85 41 100 STA CMDHI
|
|
|
|
|
C844: 20 F0 C8 101 JSR CMD
|
|
|
|
|
C847: 20 1F C9 102 JSR GETR3
|
|
|
|
|
C84A: C9 01 103 CMP #$01
|
|
|
|
|
C84C: D0 2A 104 BNE :SDV1 ; may be SD Ver. 1
|
2017-10-15 14:48:13 +00:00
|
|
|
|
105
|
2017-10-16 22:06:33 +00:00
|
|
|
|
106 * check for $01aa match!
|
|
|
|
|
C84E: A9 DD 107 :SDV2 LDA #<CMD55
|
|
|
|
|
C850: 85 40 108 STA CMDLO
|
|
|
|
|
C852: A9 CA 109 LDA #>CMD55
|
|
|
|
|
C854: 85 41 110 STA CMDHI
|
|
|
|
|
C856: 20 F0 C8 111 JSR CMD
|
|
|
|
|
C859: 20 04 C9 112 JSR GETR1
|
|
|
|
|
C85C: A9 E3 113 LDA #<ACMD4140
|
|
|
|
|
C85E: 85 40 114 STA CMDLO
|
|
|
|
|
C860: A9 CA 115 LDA #>ACMD4140
|
|
|
|
|
C862: 85 41 116 STA CMDHI
|
|
|
|
|
C864: 20 F0 C8 117 JSR CMD
|
|
|
|
|
C867: 20 04 C9 118 JSR GETR1
|
|
|
|
|
C86A: C9 01 119 CMP #$01
|
|
|
|
|
C86C: F0 E0 120 BEQ :SDV2 ; wait for ready
|
|
|
|
|
C86E: C9 00 121 CMP #$00
|
|
|
|
|
C870: D0 03 122 BNE :ERROR1 ; error!
|
|
|
|
|
123 * send CMD58
|
|
|
|
|
124 * SD Ver. 2 initialized!
|
|
|
|
|
C872: 4C B2 C8 125 JMP :BLOCKSZ
|
|
|
|
|
126
|
|
|
|
|
C875: 4C DE C8 127 :ERROR1 JMP :IOERROR ; needed for far jump
|
|
|
|
|
128
|
|
|
|
|
C878: A9 DD 129 :SDV1 LDA #<CMD55
|
|
|
|
|
C87A: 85 40 130 STA CMDLO
|
|
|
|
|
C87C: A9 CA 131 LDA #>CMD55
|
|
|
|
|
C87E: 85 41 132 STA CMDHI
|
|
|
|
|
C880: 20 F0 C8 133 JSR CMD ; ignore response
|
|
|
|
|
C883: A9 E9 134 LDA #<ACMD410
|
|
|
|
|
C885: 85 40 135 STA CMDLO
|
|
|
|
|
C887: A9 CA 136 LDA #>ACMD410
|
|
|
|
|
C889: 85 41 137 STA CMDHI
|
|
|
|
|
C88B: 20 F0 C8 138 JSR CMD
|
|
|
|
|
C88E: 20 04 C9 139 JSR GETR1
|
|
|
|
|
C891: C9 01 140 CMP #$01
|
|
|
|
|
C893: F0 E3 141 BEQ :SDV1 ; wait for ready
|
|
|
|
|
C895: C9 00 142 CMP #$00
|
|
|
|
|
C897: D0 03 143 BNE :MMC ; may be MMC card
|
|
|
|
|
144 * SD Ver. 1 initialized!
|
|
|
|
|
C899: 4C B2 C8 145 JMP :BLOCKSZ
|
|
|
|
|
146
|
|
|
|
|
C89C: A9 CB 147 :MMC LDA #<CMD1
|
|
|
|
|
C89E: 85 40 148 STA CMDLO
|
|
|
|
|
C8A0: A9 CA 149 LDA #>CMD1
|
|
|
|
|
C8A2: 85 41 150 STA CMDHI
|
|
|
|
|
C8A4: 20 F0 C8 151 :LOOP1 JSR CMD
|
|
|
|
|
C8A7: 20 04 C9 152 JSR GETR1
|
|
|
|
|
C8AA: C9 01 153 CMP #$01
|
|
|
|
|
C8AC: F0 F6 154 BEQ :LOOP1 ; wait for ready
|
|
|
|
|
C8AE: C9 00 155 CMP #$00
|
|
|
|
|
C8B0: D0 2C 156 BNE :IOERROR ; error!
|
|
|
|
|
157 * MMC Ver. 3 initialized!
|
|
|
|
|
158
|
|
|
|
|
C8B2: A9 D7 159 :BLOCKSZ LDA #<CMD16
|
|
|
|
|
C8B4: 85 40 160 STA CMDLO
|
|
|
|
|
C8B6: A9 CA 161 LDA #>CMD16
|
|
|
|
|
C8B8: 85 41 162 STA CMDHI
|
|
|
|
|
C8BA: 20 F0 C8 163 JSR CMD
|
|
|
|
|
C8BD: 20 04 C9 164 JSR GETR1
|
|
|
|
|
C8C0: C9 00 165 CMP #$00
|
|
|
|
|
C8C2: D0 1A 166 BNE :IOERROR ; error!
|
|
|
|
|
167
|
|
|
|
|
C8C4: BD 83 C0 168 :END LDA SS,X
|
|
|
|
|
C8C7: 09 80 169 ORA #INITED ; initialized
|
|
|
|
|
C8C9: 9D 83 C0 170 STA SS,X
|
|
|
|
|
C8CC: BD 81 C0 171 LDA CTRL,X
|
|
|
|
|
C8CF: 09 04 172 ORA #ECE ; enable 7MHz
|
|
|
|
|
C8D1: 9D 81 C0 173 STA CTRL,X
|
|
|
|
|
C8D4: 18 174 CLC ; all ok
|
|
|
|
|
C8D5: A0 00 175 LDY #0
|
|
|
|
|
C8D7: 90 08 176 BCC :END1
|
|
|
|
|
C8D9: 38 177 :CDERROR SEC
|
|
|
|
|
C8DA: A0 2F 178 LDY #$2F ; no card error
|
|
|
|
|
C8DC: B0 03 179 BCS :END1
|
|
|
|
|
C8DE: 38 180 :IOERROR SEC
|
|
|
|
|
C8DF: A0 27 181 LDY #$27 ; init error
|
|
|
|
|
C8E1: BD 83 C0 182 :END1 LDA SS,X ; set CS high
|
|
|
|
|
C8E4: 09 01 183 ORA #SS0
|
|
|
|
|
C8E6: 9D 83 C0 184 STA SS,X
|
|
|
|
|
C8E9: A9 00 185 LDA #0 ; set div to 2
|
|
|
|
|
C8EB: 9D 82 C0 186 STA DIV,X
|
|
|
|
|
C8EE: 98 187 TYA ; retval in A
|
|
|
|
|
C8EF: 60 188 RTS
|
|
|
|
|
189
|
|
|
|
|
190
|
|
|
|
|
191 ********************************
|
|
|
|
|
192 *
|
|
|
|
|
193 * Send SD command
|
|
|
|
|
194 * Call with command in CMDHI and CMDLO
|
|
|
|
|
195 *
|
|
|
|
|
196 ********************************
|
|
|
|
|
197
|
|
|
|
|
C8F0: 5A 198 CMD PHY
|
|
|
|
|
C8F1: A0 00 199 LDY #0
|
|
|
|
|
C8F3: B1 40 200 :LOOP LDA (CMDLO),Y
|
|
|
|
|
C8F5: 9D 80 C0 201 STA DATA,X
|
|
|
|
|
C8F8: 3C 81 C0 202 :WAIT BIT CTRL,X ; TC is in N
|
|
|
|
|
C8FB: 10 FB 203 BPL :WAIT
|
|
|
|
|
C8FD: C8 204 INY
|
|
|
|
|
C8FE: C0 06 205 CPY #6
|
|
|
|
|
C900: 90 F1 206 BCC :LOOP
|
|
|
|
|
C902: 7A 207 PLY
|
|
|
|
|
C903: 60 208 RTS
|
|
|
|
|
209
|
|
|
|
|
210
|
|
|
|
|
211 ********************************
|
|
|
|
|
212 *
|
|
|
|
|
213 * Get R1
|
|
|
|
|
214 * R1 is in A
|
|
|
|
|
215 *
|
|
|
|
|
216 ********************************
|
|
|
|
|
217
|
|
|
|
|
C904: A9 FF 218 GETR1 LDA #DUMMY
|
|
|
|
|
C906: 9D 80 C0 219 STA DATA,X
|
|
|
|
|
C909: 3C 81 C0 220 :WAIT BIT CTRL,X
|
|
|
|
|
C90C: 10 FB 221 BPL :WAIT
|
|
|
|
|
C90E: BD 80 C0 222 LDA DATA,X ; get response
|
|
|
|
|
C911: 85 3C 223 STA WORK ; save R1
|
|
|
|
|
C913: 29 80 224 AND #$80
|
|
|
|
|
C915: D0 ED 225 BNE GETR1 ; wait for MSB=0
|
|
|
|
|
C917: A9 FF 226 LDA #DUMMY
|
|
|
|
|
C919: 9D 80 C0 227 STA DATA,X ; send another dummy
|
|
|
|
|
C91C: A5 3C 228 LDA WORK ; restore R1
|
|
|
|
|
C91E: 60 229 RTS
|
|
|
|
|
230
|
|
|
|
|
231
|
|
|
|
|
232 ********************************
|
|
|
|
|
233 *
|
|
|
|
|
234 * Get R3
|
|
|
|
|
235 * R1 is in A
|
|
|
|
|
236 * R3 is in scratchpad ram
|
|
|
|
|
237 *
|
|
|
|
|
238 ********************************
|
|
|
|
|
239
|
|
|
|
|
C91F: 20 04 C9 240 GETR3 JSR GETR1 ; get R1 first
|
|
|
|
|
C922: 48 241 PHA ; save R1
|
|
|
|
|
C923: 5A 242 PHY ; save Y
|
|
|
|
|
C924: A0 04 243 LDY #04 ; load counter
|
|
|
|
|
C926: A9 FF 244 :LOOP LDA #DUMMY ; send dummy
|
|
|
|
|
C928: 9D 80 C0 245 STA DATA,X
|
|
|
|
|
C92B: 3C 81 C0 246 :WAIT BIT CTRL,X
|
|
|
|
|
C92E: 10 FB 247 BPL :WAIT
|
|
|
|
|
C930: BD 80 C0 248 LDA DATA,X
|
|
|
|
|
C933: 48 249 PHA
|
|
|
|
|
C934: 88 250 DEY
|
|
|
|
|
C935: D0 EF 251 BNE :LOOP ; do 4 times
|
|
|
|
|
C937: A4 3D 252 LDY SLOT
|
|
|
|
|
C939: 68 253 PLA
|
|
|
|
|
C93A: 99 F8 05 254 STA R33,Y ; save R3
|
|
|
|
|
C93D: 68 255 PLA
|
|
|
|
|
C93E: 99 78 05 256 STA R32,Y
|
|
|
|
|
C941: 68 257 PLA
|
|
|
|
|
C942: 99 F8 04 258 STA R31,Y
|
|
|
|
|
C945: 68 259 PLA
|
|
|
|
|
C946: 99 78 04 260 STA R30,Y
|
|
|
|
|
C949: 7A 261 PLY ; restore Y
|
|
|
|
|
C94A: A9 FF 262 LDA #DUMMY
|
|
|
|
|
C94C: 9D 80 C0 263 STA DATA,X ; send another dummy
|
|
|
|
|
C94F: 68 264 PLA ; restore R1
|
|
|
|
|
C950: 60 265 RTS
|
|
|
|
|
266
|
|
|
|
|
267
|
|
|
|
|
268 ********************************
|
|
|
|
|
269 *
|
|
|
|
|
270 * Calculate block address
|
|
|
|
|
271 * Unit number is in $43 DSSS0000
|
|
|
|
|
272 * Block no is in $46-47
|
|
|
|
|
273 * Address is in R30-R33
|
|
|
|
|
274 *
|
|
|
|
|
275 ********************************
|
|
|
|
|
276
|
|
|
|
|
C951: DA 277 GETBLOCK PHX ; save X
|
|
|
|
|
C952: 5A 278 PHY ; save Y
|
|
|
|
|
C953: A6 3D 279 LDX SLOT
|
|
|
|
|
C955: A5 46 280 LDA BLOCK ; store block num
|
|
|
|
|
C957: 9D F8 05 281 STA R33,X ; in R30-R33
|
|
|
|
|
C95A: A5 47 282 LDA BLOCK+1
|
|
|
|
|
C95C: 9D 78 05 283 STA R32,X
|
|
|
|
|
C95F: A9 00 284 LDA #0
|
|
|
|
|
C961: 9D F8 04 285 STA R31,X
|
|
|
|
|
C964: 9D 78 04 286 STA R30,X
|
|
|
|
|
287
|
|
|
|
|
C967: A9 80 288 LDA #$80 ; drive number
|
|
|
|
|
C969: 24 43 289 BIT $43
|
|
|
|
|
C96B: F0 05 290 BEQ :SHIFT ; D1
|
|
|
|
|
C96D: A9 01 291 LDA #1 ; D2
|
|
|
|
|
C96F: 9D F8 04 292 STA R31,X
|
|
|
|
|
293
|
|
|
|
|
C972: A0 09 294 :SHIFT LDY #9 ; ASL can't be used with Y
|
|
|
|
|
C974: 1E F8 05 295 :LOOP ASL R33,X ; mul block num
|
|
|
|
|
C977: 3E 78 05 296 ROL R32,X ; by 512 to get
|
|
|
|
|
C97A: 3E F8 04 297 ROL R31,X ; real address
|
|
|
|
|
C97D: 3E 78 04 298 ROL R30,X
|
|
|
|
|
C980: 88 299 DEY
|
|
|
|
|
C981: D0 F1 300 BNE :LOOP
|
|
|
|
|
C983: 7A 301 PLY ; restore Y
|
|
|
|
|
C984: FA 302 PLX ; restore X
|
|
|
|
|
C985: 60 303 RTS
|
|
|
|
|
304
|
|
|
|
|
305
|
|
|
|
|
306 ********************************
|
|
|
|
|
307 *
|
|
|
|
|
308 * Send SD command
|
|
|
|
|
309 * Cmd is in A
|
|
|
|
|
310 *
|
|
|
|
|
311 ********************************
|
|
|
|
|
312
|
|
|
|
|
C986: 5A 313 COMMAND PHY ; save Y
|
|
|
|
|
C987: A4 3D 314 LDY SLOT
|
|
|
|
|
C989: 9D 80 C0 315 STA DATA,X ; send command
|
|
|
|
|
C98C: B9 78 04 316 LDA R30,Y ; get arg from R30 on
|
|
|
|
|
C98F: 9D 80 C0 317 STA DATA,X
|
|
|
|
|
C992: B9 F8 04 318 LDA R31,Y
|
|
|
|
|
C995: 9D 80 C0 319 STA DATA,X
|
|
|
|
|
C998: B9 78 05 320 LDA R32,Y
|
|
|
|
|
C99B: 9D 80 C0 321 STA DATA,X
|
|
|
|
|
C99E: B9 F8 05 322 LDA R33,Y
|
|
|
|
|
C9A1: 9D 80 C0 323 STA DATA,X
|
|
|
|
|
C9A4: A9 FF 324 LDA #DUMMY
|
|
|
|
|
C9A6: 9D 80 C0 325 STA DATA,X ; dummy crc
|
|
|
|
|
C9A9: 20 04 C9 326 JSR GETR1
|
|
|
|
|
C9AC: 7A 327 PLY ; restore Y
|
|
|
|
|
C9AD: 60 328 RTS
|
|
|
|
|
329
|
|
|
|
|
330
|
|
|
|
|
331 ********************************
|
|
|
|
|
332 *
|
|
|
|
|
333 * Check for card detect
|
|
|
|
|
334 *
|
|
|
|
|
335 * C Clear - card in slot
|
|
|
|
|
336 * Set - no card in slot
|
|
|
|
|
337 *
|
|
|
|
|
338 ********************************
|
|
|
|
|
339
|
|
|
|
|
C9AE: 48 340 CARDDET PHA
|
|
|
|
|
C9AF: A9 40 341 LDA #CD ; 0: card in
|
|
|
|
|
C9B1: 3C 83 C0 342 BIT SS,X ; 1: card out
|
|
|
|
|
C9B4: 18 343 CLC
|
|
|
|
|
C9B5: F0 01 344 BEQ :DONE ; card is in
|
|
|
|
|
C9B7: 38 345 SEC ; card is out
|
|
|
|
|
C9B8: 68 346 :DONE PLA
|
|
|
|
|
C9B9: 60 347 RTS
|
|
|
|
|
348
|
|
|
|
|
349
|
|
|
|
|
350 ********************************
|
|
|
|
|
351 *
|
|
|
|
|
352 * Check for write protect
|
|
|
|
|
353 *
|
|
|
|
|
354 * C Clear - card not protected
|
|
|
|
|
355 * Set - card write protected
|
|
|
|
|
356 *
|
|
|
|
|
357 ********************************
|
|
|
|
|
358
|
|
|
|
|
C9BA: 48 359 WRPROT PHA
|
|
|
|
|
C9BB: A9 20 360 LDA #WP ; 0: write enabled
|
|
|
|
|
C9BD: 3C 83 C0 361 BIT SS,X ; 1: write disabled
|
|
|
|
|
C9C0: 18 362 CLC
|
|
|
|
|
C9C1: F0 01 363 BEQ :DONE
|
|
|
|
|
C9C3: 38 364 SEC
|
|
|
|
|
C9C4: 68 365 :DONE PLA
|
|
|
|
|
C9C5: 60 366 RTS
|
|
|
|
|
367
|
|
|
|
|
368
|
|
|
|
|
369 ********************************
|
|
|
|
|
370 *
|
|
|
|
|
371 * Status request
|
|
|
|
|
372 * $43 Unit number DSSS000
|
|
|
|
|
373 * $44-45 Unused
|
|
|
|
|
374 * $46-47 Unused
|
|
|
|
|
375 *
|
|
|
|
|
376 * C Clear - No error
|
|
|
|
|
377 * Set - Error
|
|
|
|
|
378 * A $00 - No error
|
|
|
|
|
379 * $2B - Card write protected
|
|
|
|
|
380 * $2F - No card inserted
|
|
|
|
|
381 * X - Blocks avail (low byte)
|
|
|
|
|
382 * Y - Blocks avail (high byte)
|
|
|
|
|
383 *
|
|
|
|
|
384 ********************************
|
2017-10-15 14:48:13 +00:00
|
|
|
|
385
|
2017-10-16 22:06:33 +00:00
|
|
|
|
C9C6: A9 00 386 STATUS LDA #0 ; no error
|
|
|
|
|
C9C8: A2 FF 387 LDX #$FF ; 32 MB partition
|
|
|
|
|
C9CA: A0 FF 388 LDY #$FF
|
|
|
|
|
389
|
|
|
|
|
C9CC: 20 AE C9 390 JSR CARDDET
|
|
|
|
|
C9CF: 90 04 391 BCC :WRPROT
|
|
|
|
|
C9D1: A9 2F 392 LDA #$2F ; no card inserted
|
|
|
|
|
C9D3: 80 07 393 BRA :DONE
|
|
|
|
|
394
|
|
|
|
|
C9D5: 20 BA C9 395 :WRPROT JSR WRPROT
|
|
|
|
|
C9D8: 90 02 396 BCC :DONE
|
|
|
|
|
C9DA: A9 2B 397 LDA #$2B ; card write protected
|
|
|
|
|
398
|
|
|
|
|
C9DC: 60 399 :DONE RTS
|
|
|
|
|
400
|
|
|
|
|
401
|
|
|
|
|
402 ********************************
|
|
|
|
|
403 *
|
|
|
|
|
404 * Read 512 byte block
|
|
|
|
|
405 * $43 Unit number DSSS0000
|
|
|
|
|
406 * $44-45 Address (LO/HI) of buffer
|
|
|
|
|
407 * $46-47 Block number (LO/HI)
|
2017-10-15 14:48:13 +00:00
|
|
|
|
408 *
|
2017-10-16 22:06:33 +00:00
|
|
|
|
409 * C Clear - No error
|
|
|
|
|
410 * Set - Error
|
|
|
|
|
411 * A $00 - No error
|
|
|
|
|
412 * $27 - Bad block number
|
|
|
|
|
413 * $28 - No card inserted
|
|
|
|
|
414 *
|
|
|
|
|
415 ********************************
|
|
|
|
|
416
|
|
|
|
|
C9DD: 20 AE C9 417 READ JSR CARDDET
|
|
|
|
|
C9E0: B0 64 418 BCS :ERROR ; no card inserted
|
|
|
|
|
419
|
|
|
|
|
C9E2: 20 51 C9 420 JSR GETBLOCK ; calc block address
|
|
|
|
|
421
|
|
|
|
|
C9E5: BD 83 C0 422 LDA SS,X ; enable /CS
|
|
|
|
|
C9E8: 29 FE 423 AND #$FF!SS0
|
|
|
|
|
C9EA: 9D 83 C0 424 STA SS,X
|
|
|
|
|
C9ED: A9 51 425 LDA #$51 ; send CMD17
|
|
|
|
|
C9EF: 20 86 C9 426 JSR COMMAND ; send command
|
2017-10-15 14:48:13 +00:00
|
|
|
|
427
|
2017-10-16 22:06:33 +00:00
|
|
|
|
C9F2: C9 00 428 CMP #0 ; check for error
|
|
|
|
|
C9F4: D0 50 429 BNE :ERROR
|
|
|
|
|
430
|
|
|
|
|
C9F6: A9 FF 431 :GETTOK LDA #DUMMY ; get data token
|
|
|
|
|
C9F8: 9D 80 C0 432 STA DATA,X
|
|
|
|
|
C9FB: BD 80 C0 433 LDA DATA,X ; get response
|
|
|
|
|
C9FE: C9 FE 434 CMP #$FE
|
|
|
|
|
CA00: D0 F4 435 BNE :GETTOK ; wait for $FE
|
|
|
|
|
436
|
|
|
|
|
CA02: A0 02 437 LDY #2 ; read data from card
|
|
|
|
|
CA04: BD 81 C0 438 LDA CTRL,X ; enable FRX
|
|
|
|
|
CA07: 09 10 439 ORA #FRX
|
|
|
|
|
CA09: 9D 81 C0 440 STA CTRL,X
|
|
|
|
|
CA0C: A9 FF 441 LDA #DUMMY
|
|
|
|
|
CA0E: 9D 80 C0 442 STA DATA,X
|
|
|
|
|
CA11: 64 3C 443 :LOOPY STZ WORK
|
|
|
|
|
CA13: BD 80 C0 444 :LOOPW LDA DATA,X
|
|
|
|
|
CA16: 92 44 445 STA (BUFFER)
|
|
|
|
|
CA18: E6 44 446 INC BUFFER
|
|
|
|
|
CA1A: D0 02 447 BNE :INW
|
|
|
|
|
CA1C: E6 45 448 INC BUFFER+1 ; inc msb on page boundary
|
|
|
|
|
CA1E: E6 3C 449 :INW INC WORK
|
|
|
|
|
CA20: D0 F1 450 BNE :LOOPW
|
|
|
|
|
CA22: 88 451 DEY
|
|
|
|
|
CA23: D0 EC 452 BNE :LOOPY
|
|
|
|
|
453
|
|
|
|
|
CA25: BD 80 C0 454 :CRC LDA DATA,X ; read two bytes crc
|
|
|
|
|
CA28: BD 80 C0 455 LDA DATA,X ; and ignore
|
|
|
|
|
CA2B: BD 80 C0 456 LDA DATA,X ; read a dummy byte
|
|
|
|
|
457
|
|
|
|
|
CA2E: BD 81 C0 458 LDA CTRL,X ; disable FRX
|
|
|
|
|
CA31: 29 EF 459 AND #$FF!FRX
|
|
|
|
|
CA33: 9D 81 C0 460 STA CTRL,X
|
|
|
|
|
CA36: 18 461 CLC ; no error
|
|
|
|
|
CA37: A9 00 462 LDA #0
|
2017-09-09 18:34:24 +00:00
|
|
|
|
463
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CA39: 08 464 :DONE PHP
|
|
|
|
|
CA3A: 48 465 PHA
|
|
|
|
|
CA3B: BD 83 C0 466 LDA SS,X
|
|
|
|
|
CA3E: 09 01 467 ORA #SS0
|
|
|
|
|
CA40: 9D 83 C0 468 STA SS,X ; disable /CS
|
|
|
|
|
CA43: 68 469 PLA
|
|
|
|
|
CA44: 28 470 PLP
|
|
|
|
|
CA45: 60 471 RTS
|
2017-10-15 14:48:13 +00:00
|
|
|
|
472
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CA46: 38 473 :ERROR SEC ; an error occured
|
|
|
|
|
CA47: A9 27 474 LDA #$27
|
|
|
|
|
CA49: 80 EE 475 BRA :DONE
|
|
|
|
|
476
|
|
|
|
|
477
|
|
|
|
|
478 ********************************
|
|
|
|
|
479 *
|
|
|
|
|
480 * Write 512 byte block
|
|
|
|
|
481 * $43 Unit number DSSS0000
|
|
|
|
|
482 * $44-45 Address (LO/HI) of buffer
|
|
|
|
|
483 * $46-47 Block number (LO/HI)
|
|
|
|
|
484 *
|
|
|
|
|
485 * C Clear - No error
|
|
|
|
|
486 * Set - Error
|
|
|
|
|
487 * A $00 - No error
|
|
|
|
|
488 * $27 - I/O error or bad block number
|
|
|
|
|
489 * $2B - Card write protected
|
|
|
|
|
490 *
|
|
|
|
|
491 ********************************
|
|
|
|
|
492
|
|
|
|
|
CA4B: 20 AE C9 493 WRITE JSR CARDDET
|
|
|
|
|
CA4E: B0 67 494 BCS :IOERROR ; no card inserted
|
|
|
|
|
495
|
|
|
|
|
CA50: 20 BA C9 496 JSR WRPROT
|
|
|
|
|
CA53: B0 67 497 BCS :WPERROR ; card write protected
|
|
|
|
|
498
|
|
|
|
|
CA55: 20 51 C9 499 JSR GETBLOCK ; calc block address
|
2017-10-15 14:48:13 +00:00
|
|
|
|
500
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CA58: BD 83 C0 501 LDA SS,X ; enable /CS
|
|
|
|
|
CA5B: 29 FE 502 AND #$FF!SS0
|
|
|
|
|
CA5D: 9D 83 C0 503 STA SS,X
|
|
|
|
|
CA60: A9 58 504 LDA #$58 ; send CMD24
|
|
|
|
|
CA62: 20 86 C9 505 JSR COMMAND ; send command
|
|
|
|
|
506
|
|
|
|
|
CA65: C9 00 507 CMP #0 ; check for error
|
|
|
|
|
CA67: D0 4E 508 BNE :IOERROR
|
|
|
|
|
509
|
|
|
|
|
CA69: A9 FF 510 LDA #DUMMY
|
|
|
|
|
CA6B: 9D 80 C0 511 STA DATA,X ; send dummy
|
|
|
|
|
CA6E: A9 FE 512 LDA #$FE
|
|
|
|
|
CA70: 9D 80 C0 513 STA DATA,X ; send data token
|
|
|
|
|
514
|
|
|
|
|
CA73: A0 02 515 LDY #2 ; send data to card
|
|
|
|
|
CA75: 64 3C 516 :LOOPY STZ WORK
|
|
|
|
|
CA77: B2 44 517 :LOOPW LDA (BUFFER)
|
|
|
|
|
CA79: 9D 80 C0 518 STA DATA,X
|
|
|
|
|
CA7C: E6 44 519 INC BUFFER
|
|
|
|
|
CA7E: D0 02 520 BNE :INW
|
|
|
|
|
CA80: E6 45 521 INC BUFFER+1 ; inc msb on page boundary
|
|
|
|
|
CA82: E6 3C 522 :INW INC WORK
|
|
|
|
|
CA84: D0 F1 523 BNE :LOOPW
|
|
|
|
|
CA86: 88 524 DEY
|
|
|
|
|
CA87: D0 EC 525 BNE :LOOPY
|
2017-09-09 18:34:24 +00:00
|
|
|
|
526
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CA89: 9D 80 C0 527 :CRC STA DATA,X ; send 2 dummy crc bytes
|
|
|
|
|
CA8C: 9D 80 C0 528 STA DATA,X
|
|
|
|
|
529
|
|
|
|
|
CA8F: 9D 80 C0 530 STA DATA,X ; get data response
|
|
|
|
|
CA92: BD 80 C0 531 LDA DATA,X
|
|
|
|
|
CA95: 29 1F 532 AND #$1F
|
|
|
|
|
CA97: C9 05 533 CMP #$05
|
|
|
|
|
CA99: D0 1C 534 BNE :IOERROR ; check for write error
|
|
|
|
|
CA9B: 18 535 CLC ; no error
|
|
|
|
|
CA9C: A9 00 536 LDA #0
|
|
|
|
|
537
|
|
|
|
|
CA9E: 08 538 :DONE PHP
|
|
|
|
|
CA9F: 48 539 PHA
|
|
|
|
|
CAA0: A9 FF 540 :WAIT LDA #DUMMY
|
|
|
|
|
CAA2: 9D 80 C0 541 STA DATA,X ; wait for write cycle
|
|
|
|
|
CAA5: BD 80 C0 542 LDA DATA,X ; to complete
|
|
|
|
|
CAA8: C9 00 543 CMP #$00
|
|
|
|
|
CAAA: F0 F4 544 BEQ :WAIT
|
2017-09-09 18:34:24 +00:00
|
|
|
|
545
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CAAC: BD 83 C0 546 LDA SS,X ; disable /CS
|
|
|
|
|
CAAF: 09 01 547 ORA #SS0
|
|
|
|
|
CAB1: 9D 83 C0 548 STA SS,X
|
|
|
|
|
CAB4: 68 549 PLA
|
|
|
|
|
CAB5: 28 550 PLP
|
|
|
|
|
CAB6: 60 551 RTS
|
|
|
|
|
552
|
|
|
|
|
CAB7: 38 553 :IOERROR SEC ; an error occured
|
|
|
|
|
CAB8: A9 27 554 LDA #$27
|
|
|
|
|
CABA: 80 E2 555 BRA :DONE
|
|
|
|
|
556
|
|
|
|
|
CABC: 38 557 :WPERROR SEC
|
|
|
|
|
CABD: A9 2B 558 LDA #$2B
|
|
|
|
|
CABF: 80 DD 559 BRA :DONE
|
|
|
|
|
560
|
|
|
|
|
561
|
|
|
|
|
562
|
|
|
|
|
563 ********************************
|
|
|
|
|
564 *
|
|
|
|
|
565 * Format
|
|
|
|
|
566 * not supported!
|
|
|
|
|
567 *
|
|
|
|
|
568 ********************************
|
|
|
|
|
569
|
|
|
|
|
CAC1: 38 570 FORMAT SEC
|
|
|
|
|
CAC2: A9 01 571 LDA #$01 ; invalid command
|
|
|
|
|
CAC4: 60 572 RTS
|
|
|
|
|
573
|
|
|
|
|
574
|
|
|
|
|
575 ********************************
|
|
|
|
|
576 *
|
|
|
|
|
577 * Test routine
|
|
|
|
|
578 *
|
|
|
|
|
579 ********************************
|
|
|
|
|
580
|
|
|
|
|
581 DO DEBUG
|
|
|
|
|
582 TEST
|
|
|
|
|
583
|
|
|
|
|
584 * get buffer
|
|
|
|
|
585 LDA #2 ; get 512 byte buffer
|
|
|
|
|
586 JSR $BEF5 ; call GETBUFR
|
|
|
|
|
587 BCS :ERROR
|
|
|
|
|
588 STA BUFADD+1
|
|
|
|
|
589 STA BUFFER+1
|
|
|
|
|
590 STZ BUFADD
|
|
|
|
|
591 STZ BUFFER
|
|
|
|
|
592
|
|
|
|
|
593 * fill buffer
|
|
|
|
|
594 LDY #0
|
|
|
|
|
595 :LOOP TYA
|
|
|
|
|
596 STA (BUFFER),Y
|
|
|
|
|
597 INY
|
|
|
|
|
598 BNE :LOOP
|
|
|
|
|
599 INC BUFFER+1
|
|
|
|
|
600 :LOOP1 TYA
|
|
|
|
|
601 STA (BUFFER),Y
|
|
|
|
|
602 INY
|
|
|
|
|
603 BNE :LOOP1
|
|
|
|
|
604
|
|
|
|
|
605 * write to card
|
|
|
|
|
606 LDA #2 ; write cmd
|
|
|
|
|
607 STA DCMD
|
|
|
|
|
608 LDA BUFADD ; buffer address
|
|
|
|
|
609 STA BUFFER
|
|
|
|
|
610 LDA BUFADD+1
|
|
|
|
|
611 STA BUFFER+1
|
|
|
|
|
612 STZ BLOCK ; block number
|
|
|
|
|
613 STZ BLOCK+1
|
|
|
|
|
614 LDX SLOT16
|
|
|
|
|
615 JSR DRIVER
|
|
|
|
|
616 BCS :ERROR
|
2017-10-03 15:46:50 +00:00
|
|
|
|
617
|
2017-10-16 22:06:33 +00:00
|
|
|
|
618 * read from card
|
|
|
|
|
619 LDA #1 ; read cmd
|
|
|
|
|
620 STA DCMD
|
|
|
|
|
621 LDA BUFADD ; buffer address
|
|
|
|
|
622 STA BUFFER
|
|
|
|
|
623 LDA BUFADD+1
|
|
|
|
|
624 STA BUFFER+1
|
|
|
|
|
625 STZ BLOCK ; block number
|
|
|
|
|
626 STZ BLOCK+1
|
|
|
|
|
627 LDX SLOT16
|
|
|
|
|
628 JSR DRIVER
|
|
|
|
|
629 BCS :ERROR
|
|
|
|
|
630
|
|
|
|
|
631 * check for errors
|
|
|
|
|
632 LDA BUFADD ; buffer address
|
|
|
|
|
633 STA BUFFER
|
|
|
|
|
634 LDA BUFADD+1
|
|
|
|
|
635 STA BUFFER+1
|
|
|
|
|
636 LDY #0
|
|
|
|
|
637 :LOOP2 TYA
|
|
|
|
|
638 CMP (BUFFER),Y
|
|
|
|
|
639 BNE :ERRCMP ; error in buffer
|
|
|
|
|
640 INY
|
|
|
|
|
641 BNE :LOOP2
|
|
|
|
|
642 INC BUFFER+1
|
|
|
|
|
643 :LOOP3 TYA
|
|
|
|
|
644 CMP (BUFFER),Y
|
|
|
|
|
645 BNE :ERRCMP
|
|
|
|
|
646 INY
|
|
|
|
|
647 BNE :LOOP3
|
|
|
|
|
648
|
|
|
|
|
649 * free buffer
|
|
|
|
|
650 JSR $BEF8 ; call FREEBUFR
|
|
|
|
|
651 CLC
|
|
|
|
|
652 LDA #0
|
|
|
|
|
653 RTS
|
|
|
|
|
654
|
|
|
|
|
655 :ERROR BRK
|
|
|
|
|
656 :ERRCMP BRK
|
|
|
|
|
657
|
|
|
|
|
658 BUFADD DW 0
|
|
|
|
|
659 FIN
|
|
|
|
|
660
|
|
|
|
|
661
|
|
|
|
|
CAC5: 40 00 00 662 CMD0 HEX 400000
|
|
|
|
|
CAC8: 00 00 95 663 HEX 000095
|
|
|
|
|
CACB: 41 00 00 664 CMD1 HEX 410000
|
|
|
|
|
CACE: 00 00 F9 665 HEX 0000F9
|
|
|
|
|
CAD1: 48 00 00 666 CMD8 HEX 480000
|
|
|
|
|
CAD4: 01 AA 87 667 HEX 01AA87
|
|
|
|
|
CAD7: 50 00 00 668 CMD16 HEX 500000
|
|
|
|
|
CADA: 02 00 FF 669 HEX 0200FF
|
|
|
|
|
CADD: 77 00 00 670 CMD55 HEX 770000
|
|
|
|
|
CAE0: 00 00 65 671 HEX 000065
|
|
|
|
|
CAE3: 69 40 00 672 ACMD4140 HEX 694000
|
|
|
|
|
CAE6: 00 00 77 673 HEX 000077
|
|
|
|
|
CAE9: 69 00 00 674 ACMD410 HEX 690000
|
|
|
|
|
CAEC: 00 00 FF 675 HEX 0000FF
|
|
|
|
|
676
|
|
|
|
|
677
|
|
|
|
|
678 ********************************
|
|
|
|
|
679 *
|
|
|
|
|
680 * This region is mapped to
|
|
|
|
|
681 * the $CsXX space. On the ROM
|
|
|
|
|
682 * it must appear at address $700
|
|
|
|
|
683 *
|
|
|
|
|
684 ********************************
|
|
|
|
|
685
|
|
|
|
|
686 DO DEBUG-1
|
|
|
|
|
CAEF: 00 00 00 687 DS \
|
|
|
|
|
CAF2: 00 00 00 00
|
|
|
|
|
CAF6: 00 00 00 00
|
|
|
|
|
CAFA: 00 00 00 00
|
|
|
|
|
CAFE: 00 00
|
|
|
|
|
CB00: 00 00 00 688 DS $400
|
|
|
|
|
CB03: 00 00 00 00
|
|
|
|
|
CB07: 00 00 00 00
|
|
|
|
|
CB0B: 00 00 00 00
|
|
|
|
|
CB0F: 00 00 00 00
|
|
|
|
|
CB13: 00 00 00 00
|
|
|
|
|
CB17: 00 00 00 00
|
|
|
|
|
CB1B: 00 00 00 00
|
|
|
|
|
CB1F: 00 00 00 00
|
|
|
|
|
CB23: 00 00 00 00
|
|
|
|
|
CB27: 00 00 00 00
|
|
|
|
|
CB2B: 00 00 00 00
|
|
|
|
|
CB2F: 00 00 00 00
|
|
|
|
|
CB33: 00 00 00 00
|
|
|
|
|
CB37: 00 00 00 00
|
|
|
|
|
CB3B: 00 00 00 00
|
|
|
|
|
CB3F: 00 00 00 00
|
|
|
|
|
CB43: 00 00 00 00
|
|
|
|
|
CB47: 00 00 00 00
|
|
|
|
|
CB4B: 00 00 00 00
|
|
|
|
|
CB4F: 00 00 00 00
|
|
|
|
|
CB53: 00 00 00 00
|
|
|
|
|
CB57: 00 00 00 00
|
|
|
|
|
CB5B: 00 00 00 00
|
|
|
|
|
CB5F: 00 00 00 00
|
|
|
|
|
CB63: 00 00 00 00
|
|
|
|
|
CB67: 00 00 00 00
|
|
|
|
|
CB6B: 00 00 00 00
|
|
|
|
|
CB6F: 00 00 00 00
|
|
|
|
|
CB73: 00 00 00 00
|
|
|
|
|
CB77: 00 00 00 00
|
|
|
|
|
CB7B: 00 00 00 00
|
|
|
|
|
CB7F: 00 00 00 00
|
|
|
|
|
CB83: 00 00 00 00
|
|
|
|
|
CB87: 00 00 00 00
|
|
|
|
|
CB8B: 00 00 00 00
|
|
|
|
|
CB8F: 00 00 00 00
|
|
|
|
|
CB93: 00 00 00 00
|
|
|
|
|
CB97: 00 00 00 00
|
|
|
|
|
CB9B: 00 00 00 00
|
|
|
|
|
CB9F: 00 00 00 00
|
|
|
|
|
CBA3: 00 00 00 00
|
|
|
|
|
CBA7: 00 00 00 00
|
|
|
|
|
CBAB: 00 00 00 00
|
|
|
|
|
CBAF: 00 00 00 00
|
|
|
|
|
CBB3: 00 00 00 00
|
|
|
|
|
CBB7: 00 00 00 00
|
|
|
|
|
CBBB: 00 00 00 00
|
|
|
|
|
CBBF: 00 00 00 00
|
|
|
|
|
CBC3: 00 00 00 00
|
|
|
|
|
CBC7: 00 00 00 00
|
|
|
|
|
CBCB: 00 00 00 00
|
|
|
|
|
CBCF: 00 00 00 00
|
|
|
|
|
CBD3: 00 00 00 00
|
|
|
|
|
CBD7: 00 00 00 00
|
|
|
|
|
CBDB: 00 00 00 00
|
|
|
|
|
CBDF: 00 00 00 00
|
|
|
|
|
CBE3: 00 00 00 00
|
|
|
|
|
CBE7: 00 00 00 00
|
|
|
|
|
CBEB: 00 00 00 00
|
|
|
|
|
CBEF: 00 00 00 00
|
|
|
|
|
CBF3: 00 00 00 00
|
|
|
|
|
CBF7: 00 00 00 00
|
|
|
|
|
CBFB: 00 00 00 00
|
|
|
|
|
CBFF: 00 00 00 00
|
|
|
|
|
CC03: 00 00 00 00
|
|
|
|
|
CC07: 00 00 00 00
|
|
|
|
|
CC0B: 00 00 00 00
|
|
|
|
|
CC0F: 00 00 00 00
|
|
|
|
|
CC13: 00 00 00 00
|
|
|
|
|
CC17: 00 00 00 00
|
|
|
|
|
CC1B: 00 00 00 00
|
|
|
|
|
CC1F: 00 00 00 00
|
|
|
|
|
CC23: 00 00 00 00
|
|
|
|
|
CC27: 00 00 00 00
|
|
|
|
|
CC2B: 00 00 00 00
|
|
|
|
|
CC2F: 00 00 00 00
|
|
|
|
|
CC33: 00 00 00 00
|
|
|
|
|
CC37: 00 00 00 00
|
|
|
|
|
CC3B: 00 00 00 00
|
|
|
|
|
CC3F: 00 00 00 00
|
|
|
|
|
CC43: 00 00 00 00
|
|
|
|
|
CC47: 00 00 00 00
|
|
|
|
|
CC4B: 00 00 00 00
|
|
|
|
|
CC4F: 00 00 00 00
|
|
|
|
|
CC53: 00 00 00 00
|
|
|
|
|
CC57: 00 00 00 00
|
|
|
|
|
CC5B: 00 00 00 00
|
|
|
|
|
CC5F: 00 00 00 00
|
|
|
|
|
CC63: 00 00 00 00
|
|
|
|
|
CC67: 00 00 00 00
|
|
|
|
|
CC6B: 00 00 00 00
|
|
|
|
|
CC6F: 00 00 00 00
|
|
|
|
|
CC73: 00 00 00 00
|
|
|
|
|
CC77: 00 00 00 00
|
|
|
|
|
CC7B: 00 00 00 00
|
|
|
|
|
CC7F: 00 00 00 00
|
|
|
|
|
CC83: 00 00 00 00
|
|
|
|
|
CC87: 00 00 00 00
|
|
|
|
|
CC8B: 00 00 00 00
|
|
|
|
|
CC8F: 00 00 00 00
|
|
|
|
|
CC93: 00 00 00 00
|
|
|
|
|
CC97: 00 00 00 00
|
|
|
|
|
CC9B: 00 00 00 00
|
|
|
|
|
CC9F: 00 00 00 00
|
|
|
|
|
CCA3: 00 00 00 00
|
|
|
|
|
CCA7: 00 00 00 00
|
|
|
|
|
CCAB: 00 00 00 00
|
|
|
|
|
CCAF: 00 00 00 00
|
|
|
|
|
CCB3: 00 00 00 00
|
|
|
|
|
CCB7: 00 00 00 00
|
|
|
|
|
CCBB: 00 00 00 00
|
|
|
|
|
CCBF: 00 00 00 00
|
|
|
|
|
CCC3: 00 00 00 00
|
|
|
|
|
CCC7: 00 00 00 00
|
|
|
|
|
CCCB: 00 00 00 00
|
|
|
|
|
CCCF: 00 00 00 00
|
|
|
|
|
CCD3: 00 00 00 00
|
|
|
|
|
CCD7: 00 00 00 00
|
|
|
|
|
CCDB: 00 00 00 00
|
|
|
|
|
CCDF: 00 00 00 00
|
|
|
|
|
CCE3: 00 00 00 00
|
|
|
|
|
CCE7: 00 00 00 00
|
|
|
|
|
CCEB: 00 00 00 00
|
|
|
|
|
CCEF: 00 00 00 00
|
|
|
|
|
CCF3: 00 00 00 00
|
|
|
|
|
CCF7: 00 00 00 00
|
|
|
|
|
CCFB: 00 00 00 00
|
|
|
|
|
CCFF: 00 00 00 00
|
|
|
|
|
CD03: 00 00 00 00
|
|
|
|
|
CD07: 00 00 00 00
|
|
|
|
|
CD0B: 00 00 00 00
|
|
|
|
|
CD0F: 00 00 00 00
|
|
|
|
|
CD13: 00 00 00 00
|
|
|
|
|
CD17: 00 00 00 00
|
|
|
|
|
CD1B: 00 00 00 00
|
|
|
|
|
CD1F: 00 00 00 00
|
|
|
|
|
CD23: 00 00 00 00
|
|
|
|
|
CD27: 00 00 00 00
|
|
|
|
|
CD2B: 00 00 00 00
|
|
|
|
|
CD2F: 00 00 00 00
|
|
|
|
|
CD33: 00 00 00 00
|
|
|
|
|
CD37: 00 00 00 00
|
|
|
|
|
CD3B: 00 00 00 00
|
|
|
|
|
CD3F: 00 00 00 00
|
|
|
|
|
CD43: 00 00 00 00
|
|
|
|
|
CD47: 00 00 00 00
|
|
|
|
|
CD4B: 00 00 00 00
|
|
|
|
|
CD4F: 00 00 00 00
|
|
|
|
|
CD53: 00 00 00 00
|
|
|
|
|
CD57: 00 00 00 00
|
|
|
|
|
CD5B: 00 00 00 00
|
|
|
|
|
CD5F: 00 00 00 00
|
|
|
|
|
CD63: 00 00 00 00
|
|
|
|
|
CD67: 00 00 00 00
|
|
|
|
|
CD6B: 00 00 00 00
|
|
|
|
|
CD6F: 00 00 00 00
|
|
|
|
|
CD73: 00 00 00 00
|
|
|
|
|
CD77: 00 00 00 00
|
|
|
|
|
CD7B: 00 00 00 00
|
|
|
|
|
CD7F: 00 00 00 00
|
|
|
|
|
CD83: 00 00 00 00
|
|
|
|
|
CD87: 00 00 00 00
|
|
|
|
|
CD8B: 00 00 00 00
|
|
|
|
|
CD8F: 00 00 00 00
|
|
|
|
|
CD93: 00 00 00 00
|
|
|
|
|
CD97: 00 00 00 00
|
|
|
|
|
CD9B: 00 00 00 00
|
|
|
|
|
CD9F: 00 00 00 00
|
|
|
|
|
CDA3: 00 00 00 00
|
|
|
|
|
CDA7: 00 00 00 00
|
|
|
|
|
CDAB: 00 00 00 00
|
|
|
|
|
CDAF: 00 00 00 00
|
|
|
|
|
CDB3: 00 00 00 00
|
|
|
|
|
CDB7: 00 00 00 00
|
|
|
|
|
CDBB: 00 00 00 00
|
|
|
|
|
CDBF: 00 00 00 00
|
|
|
|
|
CDC3: 00 00 00 00
|
|
|
|
|
CDC7: 00 00 00 00
|
|
|
|
|
CDCB: 00 00 00 00
|
|
|
|
|
CDCF: 00 00 00 00
|
|
|
|
|
CDD3: 00 00 00 00
|
|
|
|
|
CDD7: 00 00 00 00
|
|
|
|
|
CDDB: 00 00 00 00
|
|
|
|
|
CDDF: 00 00 00 00
|
|
|
|
|
CDE3: 00 00 00 00
|
|
|
|
|
CDE7: 00 00 00 00
|
|
|
|
|
CDEB: 00 00 00 00
|
|
|
|
|
CDEF: 00 00 00 00
|
|
|
|
|
CDF3: 00 00 00 00
|
|
|
|
|
CDF7: 00 00 00 00
|
|
|
|
|
CDFB: 00 00 00 00
|
|
|
|
|
CDFF: 00 00 00 00
|
|
|
|
|
CE03: 00 00 00 00
|
|
|
|
|
CE07: 00 00 00 00
|
|
|
|
|
CE0B: 00 00 00 00
|
|
|
|
|
CE0F: 00 00 00 00
|
|
|
|
|
CE13: 00 00 00 00
|
|
|
|
|
CE17: 00 00 00 00
|
|
|
|
|
CE1B: 00 00 00 00
|
|
|
|
|
CE1F: 00 00 00 00
|
|
|
|
|
CE23: 00 00 00 00
|
|
|
|
|
CE27: 00 00 00 00
|
|
|
|
|
CE2B: 00 00 00 00
|
|
|
|
|
CE2F: 00 00 00 00
|
|
|
|
|
CE33: 00 00 00 00
|
|
|
|
|
CE37: 00 00 00 00
|
|
|
|
|
CE3B: 00 00 00 00
|
|
|
|
|
CE3F: 00 00 00 00
|
|
|
|
|
CE43: 00 00 00 00
|
|
|
|
|
CE47: 00 00 00 00
|
|
|
|
|
CE4B: 00 00 00 00
|
|
|
|
|
CE4F: 00 00 00 00
|
|
|
|
|
CE53: 00 00 00 00
|
|
|
|
|
CE57: 00 00 00 00
|
|
|
|
|
CE5B: 00 00 00 00
|
|
|
|
|
CE5F: 00 00 00 00
|
|
|
|
|
CE63: 00 00 00 00
|
|
|
|
|
CE67: 00 00 00 00
|
|
|
|
|
CE6B: 00 00 00 00
|
|
|
|
|
CE6F: 00 00 00 00
|
|
|
|
|
CE73: 00 00 00 00
|
|
|
|
|
CE77: 00 00 00 00
|
|
|
|
|
CE7B: 00 00 00 00
|
|
|
|
|
CE7F: 00 00 00 00
|
|
|
|
|
CE83: 00 00 00 00
|
|
|
|
|
CE87: 00 00 00 00
|
|
|
|
|
CE8B: 00 00 00 00
|
|
|
|
|
CE8F: 00 00 00 00
|
|
|
|
|
CE93: 00 00 00 00
|
|
|
|
|
CE97: 00 00 00 00
|
|
|
|
|
CE9B: 00 00 00 00
|
|
|
|
|
CE9F: 00 00 00 00
|
|
|
|
|
CEA3: 00 00 00 00
|
|
|
|
|
CEA7: 00 00 00 00
|
|
|
|
|
CEAB: 00 00 00 00
|
|
|
|
|
CEAF: 00 00 00 00
|
|
|
|
|
CEB3: 00 00 00 00
|
|
|
|
|
CEB7: 00 00 00 00
|
|
|
|
|
CEBB: 00 00 00 00
|
|
|
|
|
CEBF: 00 00 00 00
|
|
|
|
|
CEC3: 00 00 00 00
|
|
|
|
|
CEC7: 00 00 00 00
|
|
|
|
|
CECB: 00 00 00 00
|
|
|
|
|
CECF: 00 00 00 00
|
|
|
|
|
CED3: 00 00 00 00
|
|
|
|
|
CED7: 00 00 00 00
|
|
|
|
|
CEDB: 00 00 00 00
|
|
|
|
|
CEDF: 00 00 00 00
|
|
|
|
|
CEE3: 00 00 00 00
|
|
|
|
|
CEE7: 00 00 00 00
|
|
|
|
|
CEEB: 00 00 00 00
|
|
|
|
|
CEEF: 00 00 00 00
|
|
|
|
|
CEF3: 00 00 00 00
|
|
|
|
|
CEF7: 00 00 00 00
|
|
|
|
|
CEFB: 00 00 00 00
|
|
|
|
|
CEFF: 00
|
|
|
|
|
689 ERR *-1/$CF00 ; must be at $CF00
|
|
|
|
|
690 FIN
|
2017-10-15 14:48:13 +00:00
|
|
|
|
691
|
2017-10-16 22:06:33 +00:00
|
|
|
|
692 * signature bytes
|
|
|
|
|
693
|
|
|
|
|
CF00: A2 20 694 START LDX #$20
|
|
|
|
|
CF02: A0 00 695 LDY #$00
|
|
|
|
|
CF04: A2 03 696 LDX #$03
|
|
|
|
|
CF06: A0 FF 697 LDY #$FF ; neither 5.25 nor Smartport
|
|
|
|
|
698
|
|
|
|
|
699 * find slot nr
|
|
|
|
|
700
|
|
|
|
|
701 DO DEBUG
|
|
|
|
|
702 LDA #$04
|
|
|
|
|
703 STA SLOT
|
|
|
|
|
704 LDA #$C4
|
|
|
|
|
705 STA CURSLOT
|
|
|
|
|
706 LDA #$40
|
|
|
|
|
707
|
|
|
|
|
708 ELSE
|
|
|
|
|
CF08: 20 58 FF 709 JSR $FF58
|
|
|
|
|
CF0B: BA 710 TSX
|
|
|
|
|
CF0C: BD 00 01 711 LDA $0100,X
|
|
|
|
|
CF0F: 8D F8 07 712 STA CURSLOT ; $Cs
|
|
|
|
|
CF12: 29 0F 713 AND #$0F
|
|
|
|
|
CF14: 85 3D 714 STA SLOT ; $0s
|
|
|
|
|
CF16: 0A 715 ASL A
|
|
|
|
|
CF17: 0A 716 ASL A
|
|
|
|
|
CF18: 0A 717 ASL A
|
|
|
|
|
CF19: 0A 718 ASL A
|
|
|
|
|
719 FIN
|
|
|
|
|
720
|
|
|
|
|
CF1A: 85 2B 721 STA SLOT16 ; $s0
|
|
|
|
|
CF1C: AA 722 TAX ; X holds now SLOT16
|
|
|
|
|
CF1D: 2C FF CF 723 BIT $CFFF
|
|
|
|
|
CF20: 20 AE C9 724 JSR CARDDET
|
|
|
|
|
CF23: 90 03 725 BCC :INIT
|
|
|
|
|
CF25: A9 27 726 LDA #$27 ; no card inserted
|
|
|
|
|
CF27: 00 727 BRK
|
|
|
|
|
728
|
|
|
|
|
CF28: 20 00 C8 729 :INIT JSR INIT
|
|
|
|
|
730
|
|
|
|
|
731
|
|
|
|
|
732 ********************************
|
|
|
|
|
733 *
|
|
|
|
|
734 * Install SD card driver
|
|
|
|
|
735 *
|
|
|
|
|
736 ********************************
|
|
|
|
|
737
|
|
|
|
|
738 DO DEBUG
|
|
|
|
|
739
|
|
|
|
|
740 * see if slot has a driver already
|
2017-10-15 14:48:13 +00:00
|
|
|
|
741
|
2017-10-16 22:06:33 +00:00
|
|
|
|
742 LDX $BF31 ; get devcnt
|
|
|
|
|
743 INSTALL LDA $BF32,X ; get a devnum
|
|
|
|
|
744 AND #$70 ; isolate slot
|
|
|
|
|
745 CMP SLOT16 ; slot?
|
|
|
|
|
746 BEQ :INSOUT ; yes, skip it
|
|
|
|
|
747 DEX
|
|
|
|
|
748 BPL INSTALL ; keep up the search
|
|
|
|
|
749
|
|
|
|
|
750 * restore the devnum to the list
|
|
|
|
|
751
|
|
|
|
|
752 LDX $BF31 ; get devcnt again
|
|
|
|
|
753 CPX #$0D ; device table full?
|
|
|
|
|
754 BNE :INST2
|
|
|
|
|
755
|
|
|
|
|
756 JSR $FF3A ; bell
|
|
|
|
|
757 JMP :INSOUT ; do something!
|
2017-10-15 14:48:13 +00:00
|
|
|
|
758
|
2017-10-16 22:06:33 +00:00
|
|
|
|
759 :INST2 LDA $BF32-1,X ; move all entries down
|
|
|
|
|
760 STA $BF32,X ; to make room at front
|
|
|
|
|
761 DEX ; for a new entry
|
|
|
|
|
762 BNE :INST2
|
|
|
|
|
763 LDA #$04 ; ProFile type device
|
|
|
|
|
764 ORA SLOT16
|
|
|
|
|
765 STA $BF32 ; slot, drive 1 at top of list
|
|
|
|
|
766 INC $BF31 ; update devcnt
|
|
|
|
|
767
|
|
|
|
|
768 * now insert the device driver vector
|
2017-10-15 14:48:13 +00:00
|
|
|
|
769
|
2017-10-16 22:06:33 +00:00
|
|
|
|
770 LDA SLOT
|
|
|
|
|
771 ASL
|
|
|
|
|
772 TAX
|
|
|
|
|
773 LDA #<DRIVER
|
|
|
|
|
774 STA $BF10,X ; write to driver table
|
|
|
|
|
775 LDA #>DRIVER
|
|
|
|
|
776 STA $BF11,X
|
|
|
|
|
777 :INSOUT RTS
|
|
|
|
|
778
|
2017-10-15 14:48:13 +00:00
|
|
|
|
779
|
2017-10-16 22:06:33 +00:00
|
|
|
|
780 ********************************
|
|
|
|
|
781 *
|
|
|
|
|
782 * Boot from SD card
|
|
|
|
|
783 *
|
|
|
|
|
784 ********************************
|
|
|
|
|
785
|
|
|
|
|
786 ELSE
|
|
|
|
|
787
|
|
|
|
|
CF2B: C9 00 788 BOOT CMP #0 ; check for error
|
|
|
|
|
CF2D: F0 01 789 BEQ :BOOT1
|
|
|
|
|
CF2F: 00 790 BRK
|
|
|
|
|
791
|
|
|
|
|
CF30: A9 01 792 :BOOT1 LDA #$01
|
|
|
|
|
CF32: 85 42 793 STA DCMD ; load command
|
|
|
|
|
CF34: A6 2B 794 LDX SLOT16
|
|
|
|
|
CF36: 85 43 795 STA $43 ; slot number
|
|
|
|
|
CF38: 64 44 796 STZ BUFFER ; buffer lo
|
|
|
|
|
CF3A: A9 08 797 LDA #$08
|
|
|
|
|
CF3C: 85 45 798 STA BUFFER+1 ; buffer hi
|
|
|
|
|
CF3E: 64 46 799 STZ BLOCK ; block lo
|
|
|
|
|
CF40: 64 47 800 STZ BLOCK+1 ; block hi
|
|
|
|
|
CF42: 2C FF CF 801 BIT $CFFF
|
|
|
|
|
CF45: 20 DD C9 802 JSR READ ; call driver
|
|
|
|
|
CF48: 4C 01 08 803 JMP $801 ; goto bootloader
|
|
|
|
|
804
|
|
|
|
|
805 FIN
|
|
|
|
|
806
|
|
|
|
|
807
|
|
|
|
|
808 ********************************
|
|
|
|
|
809 *
|
|
|
|
|
810 * Jump table
|
|
|
|
|
811 *
|
|
|
|
|
812 ********************************
|
2017-10-15 14:48:13 +00:00
|
|
|
|
813
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CF4B: D8 814 DRIVER CLD
|
|
|
|
|
815
|
|
|
|
|
816 DO DEBUG
|
|
|
|
|
817 LDA #$04
|
|
|
|
|
818 STA SLOT
|
|
|
|
|
819 LDA #$C4
|
|
|
|
|
820 STA CURSLOT
|
|
|
|
|
821 LDA #$40
|
|
|
|
|
822
|
|
|
|
|
823 ELSE
|
|
|
|
|
CF4C: 20 58 FF 824 JSR $FF58 ; find slot nr
|
|
|
|
|
CF4F: BA 825 TSX
|
|
|
|
|
CF50: BD 00 01 826 LDA $0100,X
|
|
|
|
|
CF53: 8D F8 07 827 STA CURSLOT ; $Cs
|
|
|
|
|
CF56: 29 0F 828 AND #$0F
|
|
|
|
|
CF58: 85 3D 829 STA SLOT ; $0s
|
|
|
|
|
CF5A: 0A 830 ASL A
|
|
|
|
|
CF5B: 0A 831 ASL A
|
|
|
|
|
CF5C: 0A 832 ASL A
|
|
|
|
|
CF5D: 0A 833 ASL A
|
|
|
|
|
834 FIN
|
|
|
|
|
835
|
|
|
|
|
CF5E: 85 2B 836 STA SLOT16 ; $s0
|
|
|
|
|
CF60: AA 837 TAX ; X holds now SLOT16
|
|
|
|
|
CF61: 2C FF CF 838 BIT $CFFF
|
|
|
|
|
CF64: 20 AE C9 839 JSR CARDDET
|
|
|
|
|
CF67: 90 04 840 BCC :INITED
|
|
|
|
|
CF69: A9 27 841 LDA #$27 ; no card inserted
|
|
|
|
|
CF6B: 80 1B 842 BRA :DONE
|
|
|
|
|
843
|
|
|
|
|
CF6D: A9 80 844 :INITED LDA #INITED ; check for init
|
|
|
|
|
CF6F: 3C 83 C0 845 BIT SS,X
|
|
|
|
|
CF72: F0 22 846 BEQ :INIT
|
|
|
|
|
847
|
|
|
|
|
CF74: A5 42 848 :CMD LDA DCMD ; get command
|
|
|
|
|
CF76: C9 00 849 CMP #0
|
|
|
|
|
CF78: F0 10 850 BEQ :STATUS
|
|
|
|
|
CF7A: C9 01 851 CMP #1
|
|
|
|
|
CF7C: F0 0F 852 BEQ :READ
|
|
|
|
|
CF7E: C9 02 853 CMP #2
|
|
|
|
|
CF80: F0 0E 854 BEQ :WRITE
|
|
|
|
|
CF82: C9 03 855 CMP #3
|
|
|
|
|
CF84: F0 0D 856 BEQ :FORMAT
|
|
|
|
|
857 DO DEBUG
|
|
|
|
|
858 CMP #$FF
|
|
|
|
|
859 BEQ :TEST
|
|
|
|
|
860 FIN
|
|
|
|
|
CF86: A9 01 861 LDA #1 ; unknown command
|
|
|
|
|
862
|
|
|
|
|
CF88: 38 863 :DONE SEC
|
|
|
|
|
CF89: 60 864 RTS
|
|
|
|
|
865
|
|
|
|
|
CF8A: 4C C6 C9 866 :STATUS JMP STATUS
|
|
|
|
|
CF8D: 4C DD C9 867 :READ JMP READ
|
|
|
|
|
CF90: 4C 4B CA 868 :WRITE JMP WRITE
|
|
|
|
|
CF93: 4C C1 CA 869 :FORMAT JMP FORMAT
|
|
|
|
|
CF96: 20 00 C8 870 :INIT JSR INIT
|
|
|
|
|
CF99: B0 ED 871 BCS :DONE ; init failure
|
|
|
|
|
CF9B: 80 D7 872 BRA :CMD
|
|
|
|
|
873
|
|
|
|
|
874 DO DEBUG
|
|
|
|
|
875 :TEST JMP TEST ; do device test
|
|
|
|
|
876 FIN
|
|
|
|
|
877
|
|
|
|
|
878
|
|
|
|
|
879 * Signature bytes
|
|
|
|
|
880
|
|
|
|
|
CF9D: 00 00 00 881 DS \ ; fill with zeroes
|
|
|
|
|
CFA0: 00 00 00 00
|
|
|
|
|
CFA4: 00 00 00 00
|
|
|
|
|
CFA8: 00 00 00 00
|
|
|
|
|
CFAC: 00 00 00 00
|
|
|
|
|
CFB0: 00 00 00 00
|
|
|
|
|
CFB4: 00 00 00 00
|
|
|
|
|
CFB8: 00 00 00 00
|
|
|
|
|
CFBC: 00 00 00 00
|
|
|
|
|
CFC0: 00 00 00 00
|
|
|
|
|
CFC4: 00 00 00 00
|
|
|
|
|
CFC8: 00 00 00 00
|
|
|
|
|
CFCC: 00 00 00 00
|
|
|
|
|
CFD0: 00 00 00 00
|
|
|
|
|
CFD4: 00 00 00 00
|
|
|
|
|
CFD8: 00 00 00 00
|
|
|
|
|
CFDC: 00 00 00 00
|
|
|
|
|
CFE0: 00 00 00 00
|
|
|
|
|
CFE4: 00 00 00 00
|
|
|
|
|
CFE8: 00 00 00 00
|
|
|
|
|
CFEC: 00 00 00 00
|
|
|
|
|
CFF0: 00 00 00 00
|
|
|
|
|
CFF4: 00 00 00 00
|
|
|
|
|
CFF8: 00 00 00 00
|
|
|
|
|
CFFC: 00 00 00 00
|
|
|
|
|
882 DS -4 ; locate to $xxFC
|
|
|
|
|
CFFC: FF FF 883 DW $FFFF ; 65535 blocks
|
|
|
|
|
CFFE: 17 884 DB $17 ; Status bits
|
|
|
|
|
CFFF: 4B 885 DB #<DRIVER ; LSB of driver
|
2017-08-26 22:37:54 +00:00
|
|
|
|
|
|
|
|
|
|
2017-10-16 22:06:33 +00:00
|
|
|
|
--End assembly, 2048 bytes, Errors: 0
|
2017-08-27 13:02:58 +00:00
|
|
|
|
|
2017-08-26 22:37:54 +00:00
|
|
|
|
|
2017-08-27 13:02:58 +00:00
|
|
|
|
Symbol table - alphabetical order:
|
2017-08-26 22:37:54 +00:00
|
|
|
|
|
2017-10-16 22:06:33 +00:00
|
|
|
|
ACMD410 =$CAE9 ACMD4140=$CAE3 BLOCK =$46 ? BOOT =$CF2B
|
|
|
|
|
BUFFER =$44 CARDDET =$C9AE CD =$40 CMD =$C8F0
|
|
|
|
|
CMD0 =$CAC5 CMD1 =$CACB CMD16 =$CAD7 CMD55 =$CADD
|
|
|
|
|
CMD8 =$CAD1 CMDHI =$41 CMDLO =$40 COMMAND =$C986
|
2017-10-15 14:48:13 +00:00
|
|
|
|
CTRL =$C081 CURSLOT =$07F8 DATA =$C080 DCMD =$42
|
2017-10-16 22:06:33 +00:00
|
|
|
|
DEBUG =$00 DIV =$C082 DRIVER =$CF4B DUMMY =$FF
|
|
|
|
|
ECE =$04 FORMAT =$CAC1 FRX =$10 GETBLOCK=$C951
|
|
|
|
|
GETR1 =$C904 GETR3 =$C91F INIT =$C800 INITED =$80
|
2017-10-15 14:48:13 +00:00
|
|
|
|
R30 =$0478 R31 =$04F8 R32 =$0578 R33 =$05F8
|
2017-10-16 22:06:33 +00:00
|
|
|
|
READ =$C9DD SLOT =$3D SLOT16 =$2B SS =$C083
|
|
|
|
|
SS0 =$01 ? START =$CF00 STATUS =$C9C6 WORK =$3C
|
|
|
|
|
WP =$20 WRITE =$CA4B WRPROT =$C9BA
|
2017-08-26 22:37:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Symbol table - numerical order:
|
|
|
|
|
|
2017-08-27 13:02:58 +00:00
|
|
|
|
DEBUG =$00 SS0 =$01 ECE =$04 FRX =$10
|
2017-09-09 18:34:24 +00:00
|
|
|
|
WP =$20 SLOT16 =$2B WORK =$3C SLOT =$3D
|
2017-10-15 14:48:13 +00:00
|
|
|
|
CMDLO =$40 CD =$40 CMDHI =$41 DCMD =$42
|
|
|
|
|
BUFFER =$44 BLOCK =$46 INITED =$80 DUMMY =$FF
|
|
|
|
|
R30 =$0478 R31 =$04F8 R32 =$0578 R33 =$05F8
|
2017-10-16 22:06:33 +00:00
|
|
|
|
CURSLOT =$07F8 DATA =$C080 CTRL =$C081 DIV =$C082
|
|
|
|
|
SS =$C083 INIT =$C800 CMD =$C8F0 GETR1 =$C904
|
|
|
|
|
GETR3 =$C91F GETBLOCK=$C951 COMMAND =$C986 CARDDET =$C9AE
|
|
|
|
|
WRPROT =$C9BA STATUS =$C9C6 READ =$C9DD WRITE =$CA4B
|
|
|
|
|
FORMAT =$CAC1 CMD0 =$CAC5 CMD1 =$CACB CMD8 =$CAD1
|
|
|
|
|
CMD16 =$CAD7 CMD55 =$CADD ACMD4140=$CAE3 ACMD410 =$CAE9
|
|
|
|
|
? START =$CF00 ? BOOT =$CF2B DRIVER =$CF4B
|
2017-08-26 22:37:54 +00:00
|
|
|
|
|