forked from Apple-2-HW/AppleIISd
Fix for crc after read command
This commit is contained in:
parent
92f8061ea8
commit
3edc480c74
BIN
AppleIISd.bin
BIN
AppleIISd.bin
Binary file not shown.
340
AppleIISd.lst
340
AppleIISd.lst
@ -6,11 +6,11 @@
|
||||
6 * (c) Florian Reitz, 2017
|
||||
7 *
|
||||
8 * X register usually contains SLOT16
|
||||
9 * Y register iss used for counting or SLOT
|
||||
9 * Y register is used for counting or SLOT
|
||||
10 *
|
||||
11 ********************************
|
||||
12
|
||||
12-AUG-17 15::51
|
||||
13-AUG-17 13:35
|
||||
14
|
||||
15 XC ; enable 65C02 code
|
||||
16 DEBUG = 0
|
||||
@ -186,13 +186,13 @@ C852: 85 2B 179 STA SLOT16 ; $s0
|
||||
180 FIN
|
||||
C854: AA 181 TAX ; X holds now SLOT16
|
||||
182
|
||||
C855: 2C FF CF 183 BIT $CCFF
|
||||
C855: 2C FF CF 183 BIT $CFFF
|
||||
C858: A4 3D 184 LDY SLOT
|
||||
C85A: B9 78 06 185 LDA INITED,Y ; check for init
|
||||
C85D: C9 01 186 CMP #$01
|
||||
C85F: 90 22 187 BCC :INIT
|
||||
C861: A5 42 188 :CMD LDA $42 ; get command
|
||||
C863: C9 90 189 CMP #$00
|
||||
C863: C9 00 189 CMP #$00
|
||||
C865: F0 10 190 BEQ :STATUS
|
||||
C867: C9 01 191 CMP #$01
|
||||
C869: F0 0F 192 BEQ :READ
|
||||
@ -206,8 +206,8 @@ C876: 60 199 RTS
|
||||
200
|
||||
C877: 4C AF CA 201 :STATUS JMP STATUS
|
||||
C87A: 4C B7 CA 202 :READ JMP READ
|
||||
C87D: 4C 01 CB 203 :WRITE JMP WRITE
|
||||
C880: 4C 91 CB 204 :FORMAT JMP FORMAT
|
||||
C87D: 4C 0D CB 203 :WRITE JMP WRITE
|
||||
C880: 4C 9D CB 204 :FORMAT JMP FORMAT
|
||||
C883: 20 00 C9 205 :INIT JSR INIT
|
||||
C886: 80 D9 206 BRA :CMD
|
||||
207
|
||||
@ -282,16 +282,16 @@ C91D: D0 F5 243 BNE :LOOP ; do 10 times
|
||||
C91F: A9 0E 244 LDA #SS0 ; set CS low
|
||||
C921: 9D 83 C0 245 STA SS,X
|
||||
246
|
||||
C924: A9 95 247 LDA #<CMD0 ; send CMD0
|
||||
C924: A9 A1 247 LDA #<CMD0 ; send CMD0
|
||||
C926: 85 40 248 STA CMDLO
|
||||
C928: A9 CB 249 LDA #>CMD0
|
||||
C92A: 85 41 250 STA CMDHI
|
||||
C92A: 85 41 250 STA CMDHI
|
||||
C92C: 20 DE C9 251 JSR CMD
|
||||
C92F: 20 F2 C9 252 JSR GETR1 ; get response
|
||||
C932: C9 01 253 CMP #$01
|
||||
C934: D0 39 254 BNE :ERROR1 ; error!
|
||||
255
|
||||
C936: A9 A1 256 LDA #<CMD8 ; send CMD8
|
||||
C936: A9 AD 256 LDA #<CMD8 ; send CMD8
|
||||
C938: 85 40 257 STA CMDLO
|
||||
===== Page 6 =====
|
||||
|
||||
@ -303,15 +303,15 @@ C944: C9 01 262 CMP #$01
|
||||
C946: D0 2A 263 BNE :SDV1 ; may be SD Ver. 1
|
||||
264
|
||||
265 * check for $01aa match!
|
||||
C948: A9 AD 266 :SDV2 LDA #<CMD55
|
||||
C948: A9 B9 266 :SDV2 LDA #<CMD55
|
||||
C94A: 85 40 267 STA CMDLO
|
||||
C94C: A9 CB 268 LDA #>CMD55
|
||||
C94E: 85 41 269 STA CMDHI
|
||||
C950: 20 DE C9 270 JSR CMD
|
||||
C953: 20 F2 C9 271 JSR GETR1
|
||||
C956: A9 B3 272 LDA #<ACMD4140
|
||||
C956: A9 BF 272 LDA #<ACMD4140
|
||||
C958: 85 40 273 STA CMDLO
|
||||
C95A: A9 CB 274 LDA #>ACMD4140
|
||||
C95A: A9 CB 274 LDA #>ACMD4140
|
||||
C95C: 85 41 275 STA CMDHI
|
||||
C95E: 20 DE C9 276 JSR CMD
|
||||
C961: 20 F2 C9 277 JSR GETR1
|
||||
@ -325,12 +325,12 @@ C96C: 4C AC C9 284 JMP :BLOCKSZ
|
||||
285
|
||||
C96F: 4C CF C9 286 :ERROR1 JMP :IOERROR ; needed for far jump
|
||||
287
|
||||
C972: A9 AD 288 :SDV1 LDA #<CMD55
|
||||
C972: A9 B9 288 :SDV1 LDA #<CMD55
|
||||
C974: 85 40 289 STA CMDLO
|
||||
C976: A9 CB 290 LDA #>CMD55
|
||||
C978: 85 41 291 STA CMDHI
|
||||
C97A: 20 DE C9 292 JSR CMD ; ignore response
|
||||
C97D: A9 B9 293 LDA #<ACMD410
|
||||
C97D: A9 C5 293 LDA #<ACMD410
|
||||
C97F: 85 40 294 STA CMDLO
|
||||
C981: A9 CB 295 LDA #>ACMD410
|
||||
C983: 85 41 296 STA CMDHI
|
||||
@ -343,7 +343,7 @@ C991: D0 03 302 BNE :MMC ; may be MMC card
|
||||
303 * SD Ver. 1 initialized!
|
||||
C993: 4C AC C9 304 JMP :BLOCKSZ
|
||||
305
|
||||
C996: A9 9B 306 :MMC LDA #<CMD1
|
||||
C996: A9 A7 306 :MMC LDA #<CMD1
|
||||
C998: 85 40 307 STA CMDLO
|
||||
C99A: A9 CB 308 LDA #>CMD1
|
||||
C99C: 85 41 309 STA CMDHI
|
||||
@ -357,7 +357,7 @@ C9A8: C9 00 314 CMP #$00
|
||||
C9AA: D0 23 315 BNE :IOERROR ; error!
|
||||
316 * MMC Ver. 3 initialized!
|
||||
317
|
||||
C9AC: A9 A7 318 :BLOCKSZ LDA #<CMD16
|
||||
C9AC: A9 B3 318 :BLOCKSZ LDA #<CMD16
|
||||
C9AE: 85 40 319 STA CMDLO
|
||||
C9B0: A9 CB 320 LDA #>CMD16
|
||||
C9B2: 85 41 321 STA CMDHI
|
||||
@ -366,7 +366,7 @@ C9B7: 20 F2 C9 323 JSR GETR1
|
||||
C9BA: C9 00 324 CMP #$00
|
||||
C9BC: D0 11 325 BNE :IOERROR ; error!
|
||||
326
|
||||
C9BE: A4 3D 327 :END LDY SLOT ; all ok
|
||||
C9BE: A4 3D 327 :END LDY SLOT ; all ok
|
||||
C9C0: A9 01 328 LDA #$01
|
||||
C9C2: 99 78 06 329 STA INITED,Y ; initialized
|
||||
C9C5: 18 330 CLC
|
||||
@ -419,11 +419,11 @@ C9F4: 9D 80 C0 374 STA DATA,X
|
||||
C9F7: 3C 81 C0 375 :WAIT BIT CTRL,X
|
||||
C9FA: 10 FB 376 BPL :WAIT
|
||||
C9FC: BD 80 C0 377 LDA DATA,X ; get response
|
||||
C9FF: 85 C 378 STA WORK ; save R1
|
||||
C9FF: 85 3C 378 STA WORK ; save R1
|
||||
CA01: 29 80 379 AND #$80
|
||||
CA03: D0 ED 380 BNE GETR1 ; wait for MSB=0
|
||||
CA05: A9 FF 381 LDA #DUMMY
|
||||
CA07: 9D 80 C0 382 STT DATA,X ; send another dummy
|
||||
CA07: 9D 80 C0 382 STA DATA,X ; send another dummy
|
||||
CA0A: A5 3C 383 LDA WORK ; restore R1
|
||||
CA0C: 60 384 RTS
|
||||
385
|
||||
@ -444,11 +444,11 @@ CA14: A9 FF 399 :LOOP LDA #DUMMY ; send dummy
|
||||
CA16: 9D 80 C0 400 STA DATA,X
|
||||
CA19: 3C 81 C0 401 :WAIT BIT CTRL,X
|
||||
CA1C: 10 FB 402 BPL :WAIT
|
||||
CA1E: BD 80 C0 403 LDA DATA,X
|
||||
CA1E: BD 80 C0 403 LDA DATA,X
|
||||
CA21: 48 404 PHA
|
||||
CA22: 88 405 DEY
|
||||
CA23: D0 EF 406 BNE :LOOP ; do 4 times
|
||||
CA25: A4 3D 07 LDY SLOT
|
||||
CA25: A4 3D 407 LDY SLOT
|
||||
CA27: 68 408 PLA
|
||||
CA28: 99 F8 05 409 STA R33,Y ; save R3
|
||||
CA2B: 68 410 PLA
|
||||
@ -456,7 +456,7 @@ CA2C: 99 78 05 411 STA R32,Y
|
||||
CA2F: 68 412 PLA
|
||||
CA30: 99 F8 04 413 STA R31,Y
|
||||
CA33: 68 414 PLA
|
||||
CA34: 99 78 04 415 STA R30,,
|
||||
CA34: 99 78 04 415 STA R30,Y
|
||||
CA37: 7A 416 PLY ; restore Y
|
||||
CA38: A9 FF 417 LDA #DUMMY
|
||||
CA3A: 9D 80 C0 418 STA DATA,X ; send another dummy
|
||||
@ -476,7 +476,7 @@ CA3E: 60 420 RTS
|
||||
430
|
||||
CA3F: DA 431 BLOCK PHX ; save X
|
||||
CA40: 5A 432 PHY ; save Y
|
||||
CA41: A6 3D 433 LDX SLLT
|
||||
CA41: A6 3D 433 LDX SLOT
|
||||
CA43: A5 46 434 LDA $46 ; store block num
|
||||
CA45: 9D F8 05 435 STA R33,X ; in R30-R33
|
||||
CA48: A5 47 436 LDA $47
|
||||
@ -498,7 +498,7 @@ CA68: 60 451 RTS
|
||||
452
|
||||
453
|
||||
454 ********************************
|
||||
455 *
|
||||
455 *
|
||||
456 * Send SD command
|
||||
457 * Cmd is in A
|
||||
458 *
|
||||
@ -506,7 +506,7 @@ CA68: 60 451 RTS
|
||||
460
|
||||
CA69: 5A 461 COMMAND PHY ; save Y
|
||||
CA6A: A4 3D 462 LDY SLOT
|
||||
CA6C::9D 80 C0 463 STA DATA,X ; send command
|
||||
CA6C: 9D 80 C0 463 STA DATA,X ; send command
|
||||
CA6F: 3C 81 C0 464 :WAIT BIT CTRL,X
|
||||
CA72: 10 FB 465 BPL :WAIT
|
||||
CA74: B9 78 04 466 :ARG LDA R30,Y ; get arg from R30 on
|
||||
@ -552,7 +552,7 @@ CAAE: 60 488 RTS
|
||||
504 * x - Blocks avail (low byte)
|
||||
505 * y - Blocks avail (high byte)
|
||||
506 *
|
||||
5077 ********************************
|
||||
507 ********************************
|
||||
508
|
||||
CAAF: 18 509 STATUS CLC ; no error
|
||||
CAB0: A9 00 510 LDA #0
|
||||
@ -567,7 +567,7 @@ CAB6: 60 513 RTS
|
||||
519 *
|
||||
520 * Read 512 byte block
|
||||
521 * $43 Unit number DSSS0000
|
||||
522 * $44-455Address (LO/HI) of buffer
|
||||
522 * $44-45 Address (LO/HI) of buffer
|
||||
523 * $46-47 Block number (LO/HI)
|
||||
524 *
|
||||
525 * C Clear - No error
|
||||
@ -580,14 +580,13 @@ CAB6: 60 513 RTS
|
||||
532
|
||||
533 * TODO: check for card detect!
|
||||
534
|
||||
CAB7: 20 3F CA 55 READ JSR BLOCK ; calc block address
|
||||
CAB7: 20 3F CA 535 READ JSR BLOCK ; calc block address
|
||||
536
|
||||
CABA: A9 0E 537 LDA #SS0 ; enable /CS
|
||||
CABC: 9D 83 C0 538 STA SS,X
|
||||
CABF: A9 51 539 LDA #$51 ; send CMD17
|
||||
CAC1: 22 69 CA 540 JSR COMMAND ; send command
|
||||
|
||||
541
|
||||
CAC1: 20 69 CA 540 JSR COMMAND ; send command
|
||||
541
|
||||
CAC4: A9 FF 542 :GETTOK LDA #DUMMY ; get data token
|
||||
===== Page 11 =====
|
||||
|
||||
@ -601,10 +600,10 @@ CACE: BD 80 C0 546 LDA DATA,X ; get response
|
||||
CAD1: C9 FE 550 CMP #$FE
|
||||
CAD3: D0 EF 551 BNE :GETTOK ; wait for $FE
|
||||
552
|
||||
CAD5: A0 02 553 LDY #2 ; read dat from card
|
||||
CAD5: A0 02 553 LDY #2 ; read data from card
|
||||
CAD7: 64 3C 554 :LOOPY STZ WORK
|
||||
CAD9: A9 FF 555 :LOOPW LDA #DUMMY
|
||||
CADB: 9D 80 CC 556 STA DATA,X
|
||||
CADB: 9D 80 C0 556 STA DATA,X
|
||||
CADE: 3C 81 C0 557 :WAIT1 BIT CTRL,X
|
||||
CAE1: 10 FB 558 BPL :WAIT1
|
||||
CAE3: BD 80 C0 559 LDA DATA,X
|
||||
@ -617,156 +616,163 @@ CAF0: D0 E7 565 BNE :LOOPW
|
||||
CAF2: 88 566 DEY
|
||||
CAF3: D0 E2 567 BNE :LOOPY
|
||||
568
|
||||
CAF5: 20 0D CA 569 JSR GETR3 ; read 2 bytes crc
|
||||
CAF8: A9 0F 570 LDA #SSNONE
|
||||
CAFA: 9D 83 C0 571 STA SS,X ; disable /CS
|
||||
CAFD: 18 572 CLC ; no error
|
||||
CAFE: A9 00 573 LDA #$00
|
||||
CB00: 60 574 RTS
|
||||
575
|
||||
CAF5: A0 02 569 LDY #2
|
||||
CAF7: A9 FF 570 :CRC LDA #DUMMY ; read 2 bytes crc
|
||||
CAF9: 9D 80 C0 571 STA DATA,X ; and ignore
|
||||
CAFC: 3C 81 C0 572 :WAIT2 BIT CTRL,X
|
||||
CAFF: 10 FB 573 BPL :WAIT2
|
||||
CB01: 88 574 DEY
|
||||
CB02: D0 F3 575 BNE :CRC
|
||||
576
|
||||
577 ********************************
|
||||
578 *
|
||||
579 * Write 512 byte block
|
||||
580 * $43 Unit number DSSS000
|
||||
581 * $44-45 Address (LO/HI) of buffer
|
||||
582 * $46-47 Block number (LO/HI)
|
||||
583 *
|
||||
584 * C Clear - No error
|
||||
585 * Set - Error
|
||||
586 * A $00 - No error
|
||||
587 * $27 - I/O error or bad block number
|
||||
588 * $28 - No card inserted
|
||||
589 * $2B - Card write protected
|
||||
CB04: A9 0F 577 LDA #SSNONE
|
||||
CB06: 9D 83 C0 578 STA SS,X ; disable /CS
|
||||
CB09: 18 579 CLC ; no error
|
||||
CB0A: A9 00 580 LDA #$00
|
||||
CB0C: 60 581 RTS
|
||||
582
|
||||
583
|
||||
584 ********************************
|
||||
585 *
|
||||
586 * Write 512 byte block
|
||||
587 * $43 Unit number DSSS000
|
||||
588 * $44-45 Address (LO/HI) of buffer
|
||||
589 * $46-47 Block number (LO/HI)
|
||||
590 *
|
||||
591 ********************************
|
||||
592
|
||||
593 * TODO: check for card detect and write protect!
|
||||
594
|
||||
CB01: 20 3F CA 599 WRITE JSR BLOCK ; calc block address
|
||||
596
|
||||
CB04: A9 0E 597 LDA #SS0 ; enable /CS
|
||||
CB06: 9D 83 C0 598 STA SS,X
|
||||
CB09: A9 58 599 LDA #$58 ; send CMD24
|
||||
591 * C Clear - No error
|
||||
592 * Set - Error
|
||||
593 * A $00 - No error
|
||||
594 * $27 - I/O error or bad block number
|
||||
595 * $28 - No card inserted
|
||||
596 * $2B - Card write protected
|
||||
597 *
|
||||
598 ********************************
|
||||
599
|
||||
===== Page 12 =====
|
||||
|
||||
CB0B: 20 69 CA 600 JSR COMMAND ; send command
|
||||
600 * TODO: check for card detect and write protect!
|
||||
601
|
||||
CB00: A9 FF 602 LDA #DUMMY
|
||||
CB10: 9D 80 C0 603 STA DATA,X ; send dummy
|
||||
CB13: 3C 81 C0 604 :WAIT1 BIT CTRL,X
|
||||
CB16: 10 FB 605 BPL :WAIT1
|
||||
CB18: A9 FE 606 LDA #$FE
|
||||
CB1A: 9D 80 C0 607 STA DATA,X ; send data token
|
||||
CB1D: 3C 81 C0 608 :WAIT2 BIT CTRL,X
|
||||
CB20: 10 FB 609 BPL :WAIT2
|
||||
610
|
||||
CB22: A0 02 611 LDY #2 ; send data to card
|
||||
CB24: 64 3C 612 :LOOPY STZ WORK
|
||||
CB26: B2 44 613 :LOOPW LDA ($44)
|
||||
CB28: 9D 80 C0 614 STA DATA,X
|
||||
CB2B: 3C 81 C0 615 :WAIT3 BIT CTRL,X
|
||||
CB2E: 10 FB 616 BPL :WAIT3
|
||||
CB30: E6 44 617 INC $44
|
||||
CB32: D0 02 618 BNE :INW
|
||||
CB34: E6 45 619 INC $45 ; inc msb on page boundary
|
||||
CB36: E6 3C 620 :INW INC WORK
|
||||
CB38: D0 EC 621 BNE :LOOPW
|
||||
CB3A: 88 622 DEY
|
||||
CB3B: D0 E7 623 BNE :LOOPY
|
||||
624
|
||||
CB3D: A0 02 625 LDY #2 ; send 2 dummy crc bytes
|
||||
CB3F: 9D 80 C0 626 :CRC STA DATA,X
|
||||
CB42: 3C 81 C0 627 :WAIT4 BIT CTRL,X
|
||||
CB45: 10 FB 628 BPL :WAIT4
|
||||
CB47: 88 629 DEY
|
||||
CB48: D0 F5 630 BNE :CRC
|
||||
CB0D: 20 3F CA 602 WRITE JSR BLOCK ; calc block address
|
||||
603
|
||||
CB10: A9 0E 604 LDA #SS0 ; enable /CS
|
||||
CB12: 9D 83 C0 605 STA SS,X
|
||||
CB15: A9 58 606 LDA #$58 ; send CMD24
|
||||
CB17: 20 69 CA 607 JSR COMMAND ; send command
|
||||
608
|
||||
CB1A: A9 FF 609 LDA #DUMMY
|
||||
CB1C: 9D 80 C0 610 STA DATA,X ; send dummy
|
||||
CB1F: 3C 81 C0 611 :WAIT1 BIT CTRL,X
|
||||
CB22: 10 FB 612 BPL :WAIT1
|
||||
CB24: A9 FE 613 LDA #$FE
|
||||
CB26: 9D 80 C0 614 STA DATA,X ; send data token
|
||||
CB29: 3C 81 C0 615 :WAIT2 BIT CTRL,X
|
||||
CB2C: 10 FB 616 BPL :WAIT2
|
||||
617
|
||||
CB2E: A0 02 618 LDY #2 ; send data to card
|
||||
CB30: 64 3C 619 :LOOPY STZ WORK
|
||||
CB32: B2 44 620 :LOOPW LDA ($44)
|
||||
CB34: 9D 80 C0 621 STA DATA,X
|
||||
CB37: 3C 81 C0 622 :WAIT3 BIT CTRL,X
|
||||
CB3A: 10 FB 623 BPL :WAIT3
|
||||
CB3C: E6 44 624 INC $44
|
||||
CB3E: D0 02 625 BNE :INW
|
||||
CB40: E6 45 626 INC $45 ; inc msb on page boundary
|
||||
CB42: E6 3C 627 :INW INC WORK
|
||||
CB44: D0 EC 628 BNE :LOOPW
|
||||
CB46: 88 629 DEY
|
||||
CB47: D0 E7 630 BNE :LOOPY
|
||||
631
|
||||
CB4A: A9 FF 632 LDA #DUMMY ; get data response
|
||||
CB4C: 9D 80 C0 633 STA DATA,X
|
||||
CB4F: 3C 81 C0 634 :WAIT5 BIT CTRL,X
|
||||
CB52: 10 FB 635 BPL :WAIT5
|
||||
CB54: BD 80 C0 636 LDA DATA,X
|
||||
CB57: 29 1F 637 AND #$1F
|
||||
CB59: C9 05 638 CMP #$05
|
||||
CB5B: D0 1A 639 BNE :ERROR ; check for write error
|
||||
640
|
||||
CB5D: A9 FF 641 :WAIT6 LDA #DUMMY ; wait for write cycle
|
||||
CB5F: 9D 80 C0 642 STA DATA,X ; to complete
|
||||
CB62: 3C 81 C0 643 :WAIT61 BIT CTRL,X
|
||||
CB65: 10 FB 644 BPL :WAIT61
|
||||
CB67: BD 80 C0 645 LDA DATA,X
|
||||
CB6A: C9 00 646 CMP #$00
|
||||
CB6C: F0 EF 647 BEQ :WAIT6
|
||||
648
|
||||
CB6E: A9 0F 649 LDA #SSNONE ; disable /CS
|
||||
CB70: 9D 83 C0 650 STA SS,X
|
||||
CB73: 18 651 CLC ; no error
|
||||
CB74: A9 00 652 LDA #0
|
||||
CB76: 60 653 RTS
|
||||
654
|
||||
655 :ERROR
|
||||
CB77: A9 FF 656 :WAIT7 LDA #DUMMY ; wait for write cycle
|
||||
CB49: A0 02 632 LDY #2 ; send 2 dummy crc bytes
|
||||
CB4B: 9D 80 C0 633 :CRC STA DATA,X
|
||||
CB4E: 3C 81 C0 634 :WAIT4 BIT CTRL,X
|
||||
CB51: 10 FB 635 BPL :WAIT4
|
||||
CB53: 88 636 DEY
|
||||
CB54: D0 F5 637 BNE :CRC
|
||||
638
|
||||
CB56: A9 FF 639 LDA #DUMMY ; get data response
|
||||
CB58: 9D 80 C0 640 STA DATA,X
|
||||
CB5B: 3C 81 C0 641 :WAIT5 BIT CTRL,X
|
||||
CB5E: 10 FB 642 BPL :WAIT5
|
||||
CB60: BD 80 C0 643 LDA DATA,X
|
||||
CB63: 29 1F 644 AND #$1F
|
||||
CB65: C9 05 645 CMP #$05
|
||||
CB67: D0 1A 646 BNE :ERROR ; check for write error
|
||||
647
|
||||
CB69: A9 FF 648 :WAIT6 LDA #DUMMY ; wait for write cycle
|
||||
CB6B: 9D 80 C0 649 STA DATA,X ; to complete
|
||||
CB6E: 3C 81 C0 650 :WAIT61 BIT CTRL,X
|
||||
CB71: 10 FB 651 BPL :WAIT61
|
||||
CB73: BD 80 C0 652 LDA DATA,X
|
||||
CB76: C9 00 653 CMP #$00
|
||||
CB78: F0 EF 654 BEQ :WAIT6
|
||||
655
|
||||
CB7A: A9 0F 656 LDA #SSNONE ; disable /CS
|
||||
===== Page 13 =====
|
||||
|
||||
CB79: 9D 80 C0 657 STA DATA,X ; to complete
|
||||
CB7C: 3C 81 C0 658 :WAIT71 BIT CTRL,X
|
||||
CB7F: 10 FB 659 BPL :WAIT71
|
||||
CB81: BD 80 C0 660 LDA DATA,X
|
||||
CB84: C9 00 661 CMP #$00
|
||||
CB86: F0 EF 662 BEQ :WAIT7
|
||||
CB88: A9 0F 663 LDA #SSNONE
|
||||
CB8A: 9D 83 C0 664 STA SS,X ; disable /CS
|
||||
CB8D: 38 665 SEC ; an error occured
|
||||
CB8E: A9 27 666 LDA #$27
|
||||
CB90: 60 667 RTS
|
||||
668
|
||||
669
|
||||
670 ********************************
|
||||
671 *
|
||||
672 * Format
|
||||
673 * not supported!
|
||||
674 *
|
||||
675 ********************************
|
||||
CB7C: 9D 83 C0 657 STA SS,X
|
||||
CB7F: 18 658 CLC ; no error
|
||||
CB80: A9 00 659 LDA #0
|
||||
CB82: 60 660 RTS
|
||||
661
|
||||
662 :ERROR
|
||||
CB83: A9 FF 663 :WAIT7 LDA #DUMMY ; wait for write cycle
|
||||
CB85: 9D 80 C0 664 STA DATA,X ; to complete
|
||||
CB88: 3C 81 C0 665 :WAIT71 BIT CTRL,X
|
||||
CB8B: 10 FB 666 BPL :WAIT71
|
||||
CB8D: BD 80 C0 667 LDA DATA,X
|
||||
CB90: C9 00 668 CMP #$00
|
||||
CB92: F0 EF 669 BEQ :WAIT7
|
||||
CB94: A9 0F 670 LDA #SSNONE
|
||||
CB96: 9D 83 C0 671 STA SS,X ; disable /CS
|
||||
CB99: 38 672 SEC ; an error occured
|
||||
CB9A: A9 27 673 LDA #$27
|
||||
CB9C: 60 674 RTS
|
||||
675
|
||||
676
|
||||
CB91: 38 677 FORMAT SEC
|
||||
CB92: A9 01 678 LDA #$01 ; invalid command
|
||||
CB94: 60 679 RTS
|
||||
680
|
||||
681
|
||||
CB95: 40 00 00 682 CMD0 HEX 400000
|
||||
CB98: 00 00 95 683 HEX 000095
|
||||
CB9BB 1 00 00 684 CMD1 HEX 410000
|
||||
CB9E: 00 00 F9 685 HEX 0000F9
|
||||
CBA1: 48 00 00 686 CMD8 HEX 480000
|
||||
CBA4: 01 AA 87 687 HEX 01AA87
|
||||
CBA7: 50 00 00 688 CMD16 HEX 500000
|
||||
CBAA: 02 00 FF 689 HEX 0200FF
|
||||
CBAD: 77 00 00 690 CMD55 HEX 770000
|
||||
CBB0: 00 00 65 691 HEX 0000065
|
||||
CBB3: 69 40 00 692 ACMD4140 HEX 694000
|
||||
CBB6: 00 00 77 693 HEX 000077
|
||||
CBB9: 69 00 00 694 ACMD410 EX 690000
|
||||
CBBC: 00 00 FF 695 HEX 0000FF
|
||||
677 ********************************
|
||||
678 *
|
||||
679 * Format
|
||||
680 * not supported!
|
||||
681 *
|
||||
682 ********************************
|
||||
683
|
||||
CB9D: 38 684 FORMAT SEC
|
||||
CB9E: A9 01 685 LDA #$01 ; invalid command
|
||||
CBA0: 60 686 RTS
|
||||
687
|
||||
688
|
||||
CBA1: 40 00 00 689 CMD0 HEX 400000
|
||||
CBA4: 00 00 95 690 HEX 000095
|
||||
CBA7: 41 00 00 691 CMD1 HEX 410000
|
||||
CBAA: 00 00 F9 692 HEX 0000F9
|
||||
CBAD: 48 00 00 693 CMD8 HEX 480000
|
||||
CBB0: 01 AA 87 694 HEX 01AA87
|
||||
CBB3: 50 00 00 695 CMD16 HEX 500000
|
||||
CBB6: 02 00 FF 696 HEX 0200FF
|
||||
CBB9: 77 00 00 697 CMD55 HEX 770000
|
||||
CBBC: 00 00 65 698 HEX 000065
|
||||
CBBF: 69 40 00 699 ACMD4140 HEX 694000
|
||||
CBC2: 00 00 77 700 HEX 000077
|
||||
CBC5: 69 00 00 701 ACMD410 HEX 690000
|
||||
CBC8: 00 00 FF 702 HEX 0000FF
|
||||
|
||||
|
||||
--End assembly, 959 bytes, Errors: 0
|
||||
--End assembly, 971 bytes, Errors: 0
|
||||
|
||||
|
||||
Symbol table - alphabetical order:
|
||||
|
||||
ACMD410 =$CBB9 ACMD4140=$CBB3 BLOCK =$CA3F ? BOOT =$C823
|
||||
MD =$C9DE CMD0 =$CB95 CMD1 =$CB9B CMD16 =$CBA7
|
||||
CMD55 =$CBAD CMD8 =$CBA1 CMDHI =$41 CMDLO =$40
|
||||
COMMAND =$CA69 CTRL =$C081 CURSLOT =$07F8 DATA =$C080
|
||||
ACMD410 =$CBC5 ACMD4140=$CBBF BLOCK =$CA3F ? BOOT =$C823
|
||||
CMD =$C9DE CMD0 =$CBA1 CMD1 =$CBA7 CMD16 =$CBB3
|
||||
CMD55 =$CBB9 CMD8 =$CBAD CMDHI =$41 CMDLO =$40
|
||||
COMMAND =$CA69 CTRL =$C081 CURSLOT =$07F8 DATA =$C080
|
||||
===== Page 14 =====
|
||||
|
||||
DEBUG =$00 DIV =$C082 DRIVER =$C83F DUMMY =$FF
|
||||
FORMAT =$CB91 GETR1 =$C9F2 GETR3 =$CA0D INIT =$C900
|
||||
FORMAT =$CB9D GETR1 =$C9F2 GETR3 =$CA0D INIT =$C900
|
||||
INITED =$0678 R30 =$0478 R31 =$04F8 R32 =$0578
|
||||
R33 =$05F8 READ =$CAB7 SLOT =$3D SLOT16 =$2B
|
||||
SS =$C083 SS0 =$0E SSNONE =$0F STATUS =$CAAF
|
||||
WORK =$3C WRITE =$CB01
|
||||
|
||||
===== Page 14 =====
|
||||
WORK =$3C WRITE =$CB0D
|
||||
|
||||
|
||||
Symbol table - numerical order:
|
||||
@ -778,7 +784,7 @@ Symbol table - numerical order:
|
||||
CTRL =$C081 DIV =$C082 SS =$C083 ? BOOT =$C823
|
||||
DRIVER =$C83F INIT =$C900 CMD =$C9DE GETR1 =$C9F2
|
||||
GETR3 =$CA0D BLOCK =$CA3F COMMAND =$CA69 STATUS =$CAAF
|
||||
READ =$CAB7 WRITE =$CB01 FORMAT =$CB91 CMD0 =$CB95
|
||||
CMD1 =$CB9B CMD8 =$CBA1 CMD16 =$CBA7 CMD55 =$CBAD
|
||||
ACMD4140=$CBB3 ACMD410 =$CBB9
|
||||
READ =$CAB7 WRITE =$CB0D FORMAT =$CB9D CMD0 =$CBA1
|
||||
CMD1 =$CBA7 CMD8 =$CBAD CMD16 =$CBB3 CMD55 =$CBB9
|
||||
ACMD4140=$CBBF ACMD410 =$CBC5
|
||||
|
41
AppleIISd.s
41
AppleIISd.s
@ -170,8 +170,8 @@ DRIVER CLD
|
||||
LDA #$40
|
||||
STA SLOT16
|
||||
ELSE
|
||||
JJR $FF58 ; find slot nr
|
||||
TSS
|
||||
JSR $FF58 ; find slot nr
|
||||
TSX
|
||||
LDA $0100,X
|
||||
STA CURSLOT ; $Cs
|
||||
AND #$0F
|
||||
@ -557,7 +557,7 @@ READ JSR BLOCK ; calc block address
|
||||
LDA #$51 ; send CMD17
|
||||
JSR COMMAND ; send command
|
||||
|
||||
:GETTOK LDA #DUMMY ; get daata token
|
||||
:GETTOK LDA #DUMMY ; get data token
|
||||
STA DATA,X
|
||||
:WAIT BIT CTRL,X
|
||||
BPL :WAIT
|
||||
@ -572,7 +572,7 @@ READ JSR BLOCK ; calc block address
|
||||
:LOOPY STZ WORK
|
||||
:LOOPW LDA #DUMMY
|
||||
STA DATA,X
|
||||
:WAIT1 BITT CTRL,X
|
||||
:WAIT1 BIT CTRL,X
|
||||
BPL :WAIT1
|
||||
LDA DATA,X
|
||||
STA ($44)
|
||||
@ -584,12 +584,19 @@ READ JSR BLOCK ; calc block address
|
||||
DEY
|
||||
BNE :LOOPY
|
||||
|
||||
JSR GETR3 ; read 2 bytes crc
|
||||
LDA #SSNONE
|
||||
STA SS,X ; disable /CS
|
||||
CLC ; no error
|
||||
LDY #2
|
||||
:CRC LDA #DUMMY ; read 2 bytes crc
|
||||
STA DATA,X ; and ignore
|
||||
:WAIT2 BIT CTRL,X
|
||||
===== Page 11 =====
|
||||
|
||||
BPL :WAIT2
|
||||
DEY
|
||||
BNE :CRC
|
||||
|
||||
LDA #SSNONE
|
||||
STA SS,X ; disable /CS
|
||||
CLC ; no error
|
||||
LDA #$00
|
||||
RTS
|
||||
|
||||
@ -639,16 +646,16 @@ WRITE JSR BLOCK ; calc block address
|
||||
INC $45 ; inc msb on page boundary
|
||||
:INW INC WORK
|
||||
BNE :LOOPW
|
||||
DEY
|
||||
DEY
|
||||
===== Page 12 =====
|
||||
|
||||
BNE :LOOPY
|
||||
|
||||
LDY #2 ; send 2 dummy crc bytes
|
||||
:CRC STA DATA,X
|
||||
:WAIT4 BIT CTRL,X
|
||||
BPL :WAIT4
|
||||
DEY
|
||||
===== Page 12 =====
|
||||
|
||||
DEY
|
||||
BNE :CRC
|
||||
|
||||
LDA #DUMMY ; get data response
|
||||
@ -668,7 +675,7 @@ WRITE JSR BLOCK ; calc block address
|
||||
CMP #$00
|
||||
BEQ :WAIT6
|
||||
|
||||
LDA #SSNONE ; disablee CS
|
||||
LDA #SSNONE ; disable /CS
|
||||
STA SS,X
|
||||
CLC ; no error
|
||||
LDA #0
|
||||
@ -698,16 +705,16 @@ WRITE JSR BLOCK ; calc block address
|
||||
|
||||
FORMAT SEC
|
||||
LDA #$01 ; invalid command
|
||||
RTS
|
||||
RTS
|
||||
===== Page 13 =====
|
||||
|
||||
|
||||
|
||||
CMD0 HEX 400000
|
||||
HEX 000095
|
||||
CMD1 HEX 410000
|
||||
HEX 0000F9
|
||||
CMD8 HEX 480000
|
||||
===== Page 13 =====
|
||||
|
||||
CMD8 HEX 480000
|
||||
HEX 01AA87
|
||||
CMD16 HEX 500000
|
||||
HEX 0200FF
|
||||
|
@ -6,8 +6,8 @@ S11300308545644664472CFFCF20B7CA4C0108D8D5
|
||||
S11300402058FFBABD00018DF807290F853D0A0A23
|
||||
S11300500A0A852BAA2CFFCFA43DB97806C90190C2
|
||||
S113006022A542C900F010C901F00FC902F00EC95F
|
||||
S113007003F00D38A901604CAFCA4CB7CA4C01CB90
|
||||
S11300804C91CB2000C980D9000000000000000082
|
||||
S113007003F00D38A901604CAFCA4CB7CA4C0DCB84
|
||||
S11300804C9DCB2000C980D9000000000000000076
|
||||
S1130090000000000000000000000000000000005C
|
||||
S11300A0000000000000000000000000000000004C
|
||||
S11300B0000000000000000000000000000000003C
|
||||
@ -17,15 +17,15 @@ S11300E0000000000000000000000000000000000C
|
||||
S11300F0000000000000000000000000FFFF473F78
|
||||
S1130100D8A9039D81C0A90F9D83C0A9079D82C062
|
||||
S1130110A00AA9FF9D80C03C81C010FB88D0F5A92E
|
||||
S11301200E9D83C0A9958540A9CB854120DEC920B9
|
||||
S1130130F2C9C901D039A9A18540A9CB854120DEE6
|
||||
S1130140C9200DCAC901D02AA9AD8540A9CB8541D2
|
||||
S113015020DEC920F2C9A9B38540A9CB854120DEA0
|
||||
S11301200E9D83C0A9A18540A9CB854120DEC920AD
|
||||
S1130130F2C9C901D039A9AD8540A9CB854120DEDA
|
||||
S1130140C9200DCAC901D02AA9B98540A9CB8541C6
|
||||
S113015020DEC920F2C9A9BF8540A9CB854120DE94
|
||||
S1130160C920F2C9C901F0E0C900D0034CACC94CA4
|
||||
S1130170CFC9A9AD8540A9CB854120DEC9A9B985E0
|
||||
S1130170CFC9A9B98540A9CB854120DEC9A9C585C8
|
||||
S113018040A9CB854120DEC920F2C9C901F0E3C9E9
|
||||
S113019000D0034CACC9A99B8540A9CB854120DE86
|
||||
S11301A0C920F2C9C901F0F6C900D023A9A7854026
|
||||
S113019000D0034CACC9A9A78540A9CB854120DE7A
|
||||
S11301A0C920F2C9C901F0F6C900D023A9B385401A
|
||||
S11301B0A9CB854120DEC920F2C9C900D011A43DD4
|
||||
S11301C0A90199780618A000900838A028B003382F
|
||||
S11301D0A027A90F9D83C0A9009D82C098605AA042
|
||||
@ -46,17 +46,18 @@ S11302B0A900A2FFA0FF60203FCAA90E9D83C0A988
|
||||
S11302C0512069CAA9FF9D80C03C81C010FBBD803C
|
||||
S11302D0C0C9FED0EFA002643CA9FF9D80C03C8150
|
||||
S11302E0C010FBBD80C09244E644D002E645E63C23
|
||||
S11302F0D0E788D0E2200DCAA90F9D83C018A900B9
|
||||
S113030060203FCAA90E9D83C0A9582069CAA9FFCD
|
||||
S11303109D80C03C81C010FBA9FE9D80C03C81C073
|
||||
S113032010FBA002643CB2449D80C03C81C010FB21
|
||||
S1130330E644D002E645E63CD0EC88D0E7A0029D36
|
||||
S113034080C03C81C010FB88D0F5A9FF9D80C03CD3
|
||||
S113035081C010FBBD80C0291FC905D01AA9FF9D0B
|
||||
S113036080C03C81C010FBBD80C0C900F0EFA90F64
|
||||
S11303709D83C018A90060A9FF9D80C03C81C01066
|
||||
S1130380FBBD80C0C900F0EFA90F9D83C038A92729
|
||||
S11303906038A901604000000000954100000000A1
|
||||
S11303A0F948000001AA875000000200FF7700000E
|
||||
S11203B00000656940000000776900000000FF4D
|
||||
S11302F0D0E788D0E2A002A9FF9D80C03C81C01055
|
||||
S1130300FB88D0F3A90F9D83C018A90060203FCAC1
|
||||
S1130310A90E9D83C0A9582069CAA9FF9D80C03C2D
|
||||
S113032081C010FBA9FE9D80C03C81C010FBA002CF
|
||||
S1130330643CB2449D80C03C81C010FBE644D002C2
|
||||
S1130340E645E63CD0EC88D0E7A0029D80C03C8125
|
||||
S1130350C010FB88D0F5A9FF9D80C03C81C010FB74
|
||||
S1130360BD80C0291FC905D01AA9FF9D80C03C814A
|
||||
S1130370C010FBBD80C0C900F0EFA90F9D83C01859
|
||||
S1130380A90060A9FF9D80C03C81C010FBBD80C056
|
||||
S1130390C900F0EFA90F9D83C038A9276038A901CF
|
||||
S11303A0604000000000954100000000F948000092
|
||||
S11303B001AA875000000200FF7700000000656971
|
||||
S10E03C040000000776900000000FF0F
|
||||
S9030000FC
|
||||
|
Loading…
Reference in New Issue
Block a user