Fix for crc after read command

This commit is contained in:
Unknown 2017-08-13 13:46:00 +02:00 committed by Florian Reitz
parent 92f8061ea8
commit 3edc480c74
4 changed files with 221 additions and 207 deletions

Binary file not shown.

View File

@ -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,157 +616,164 @@ 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

View File

@ -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

View File

@ -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