diff --git a/README.md b/README.md index 8ccc3af..1f1ce93 100644 --- a/README.md +++ b/README.md @@ -547,96 +547,96 @@ On my //e it looks this: ORG $C65C P5.ReadSector - C65C:18 ^0 CLC ; C=0 Look Address D5,AA,96 - C65D:08 ^1 PHP ; C=1 Look Data D5,AA,AD + C65C:18 ^0 CLC ; C=0 Look Address D5,AA,96 + C65D:08 ^1 PHP ; C=1 Look Data D5,AA,AD C65E:BD 8C C0 ^2 LDA DRIVE_DATA,X - C661:10 FB BPL ^2 ;^ $C65E + C661:10 FB BPL ^2 ;^ $C65E C663:49 D5 ^3 EOR #ADDR_PROLOG_1 - C665:D0 F7 BNE ^2 ;^ $C65E + C665:D0 F7 BNE ^2 ;^ $C65E C667:BD 8C C0 ^4 LDA DRIVE_DATA,X - C66A:10 FB BPL ^4 ;^ $C667 + C66A:10 FB BPL ^4 ;^ $C667 C66C:C9 AA CMP #ADDR_PROLOG_2 - C66E:D0 F3 BNE ^3 ;^ $C663 + C66E:D0 F3 BNE ^3 ;^ $C663 C670:EA NOP C671:BD 8C C0 ^5 LDA DRIVE_DATA,X - C674:10 FB BPL ^5 ;^ $C671 + C674:10 FB BPL ^5 ;^ $C671 C676:C9 96 CMP #ADDR_PROLOG_3 ; NOTE: C=1 for $C68C ! - C678:F0 09 BEQ ^6 ;v $C683 + C678:F0 09 BEQ ^6 ;v $C683 - C67A:28 PLP ;Looking for Address or Data prologue? - C67B:90 DF BCC ^0 ;^ $C65C + C67A:28 PLP ;Looking for Address or Data prologue? + C67B:90 DF BCC ^0 ;^ $C65C C67D:49 AD EOR #DATA_PROLOG_3 - C67F:F0 25 BEQ ^10 ;v $C6A6 - C681:D0 D9 BNE ^0 ;^ $C65C - C683:A0 03 ^6 LDY #$03 ; Read 3 nibbles: Vol,Track,Sec, skip Checksum - C685:85 40 ^7 STA TrackHave ; Eventually contains Track but init #$96 from $C676 + C67F:F0 25 BEQ ^10 ;v $C6A6 + C681:D0 D9 BNE ^0 ;^ $C65C + C683:A0 03 ^6 LDY #$03 ; Read 3 nibbles: Vol,Track,Sec, skip Checksum + C685:85 40 ^7 STA TrackHave ; Eventually contains Track but init #$96 from $C676 C687:BD 8C C0 ^8 LDA DRIVE_DATA,X - C68A:10 FB BPL ^8 ;^ $C687 mask = $FF since: C=1 from $C676 - C68C:2A ROL ; ... 4&4 encoded: 1a1c1e1g, C=1 since A > $80 - C68D:85 3C STA P5.SecHave ; ... 1st half A= a1c1e1gC + C68A:10 FB BPL ^8 ;^ $C687 mask = $FF since: C=1 from $C676 + C68C:2A ROL ; ... 4&4 encoded: 1a1c1e1g, C=1 since A > $80 + C68D:85 3C STA P5.SecHave ; ... 1st half A= a1c1e1gC C68F:BD 8C C0 ^9 LDA DRIVE_DATA,X - C692:10 FB BPL ^9 ;^ $C68F &= 1b1d1f1h - C694:25 3C AND P5.SecHave ; ... 2nd half = abcdefgh + C692:10 FB BPL ^9 ;^ $C68F &= 1b1d1f1h + C694:25 3C AND P5.SecHave ; ... 2nd half = abcdefgh C696:88 DEY - C697:D0 EC BNE ^7 ;^ $C685 - C699:28 PLP ; Don't care about carry, restore stack - C69A:C5 3D CMP P5.SecWant ; A=SectorHave == SectorWant? (init $00 from $C654) - C69C:D0 BE BNE ^0 ;^ $C65C + C697:D0 EC BNE ^7 ;^ $C685 + C699:28 PLP ; Don't care about carry, restore stack + C69A:C5 3D CMP P5.SecWant ; A=SectorHave == SectorWant? (init $00 from $C654) + C69C:D0 BE BNE ^0 ;^ $C65C C69E:A5 40 LDA P5.TrackHave ; (read from prologue) C6A0:C5 41 CMP P5.TrackWant - C6A2:D0 B8 BNE ^0 ;^ $C65C != - C6A4:B0 B7 BCS ^1 ;^ $C65D >= - C6A6:A0 56 ^10 LDY #$56 ; Decode $56 nibbles in 6&2 + C6A2:D0 B8 BNE ^0 ;^ $C65C != + C6A4:B0 B7 BCS ^1 ;^ $C65D >= + C6A6:A0 56 ^10 LDY #$56 ; Decode $56 nibbles in 6&2 C6A8:84 3C ^11 STY P5.Nibs C6AA:BC 8C C0 ^12 LDY DRIVE_DATA,X - C6AD:10 FB BPL ^12 ;^ $C6AA - C6AF:59 D6 02 EOR $36C-$96,Y ; [$96] $36C:00, $36C-$96=$2D6 - C6B2:A4 3C LDY P5.Nibs ; [$FF] $3D5:3F, $2D6+$FF=$3D5 + C6AD:10 FB BPL ^12 ;^ $C6AA + C6AF:59 D6 02 EOR $36C-$96,Y ; [$96] $36C:00, $36C-$96=$2D6 + C6B2:A4 3C LDY P5.Nibs ; [$FF] $3D5:3F, $2D6+$FF=$3D5 C6B4:88 DEY - C6B5:99 00 03 STA $0300,Y ; Buf1 = [$300 .. $35B] - C6B8:D0 EE BNE ^11 ;^ $C6A8 + C6B5:99 00 03 STA $0300,Y ; Buf1 = [$300 .. $35B] + C6B8:D0 EE BNE ^11 ;^ $C6A8 - C6BA:84 3C ^13 STY P5.Nibs ; Y = #00 + C6BA:84 3C ^13 STY P5.Nibs ; Y = #00 C6BC:BC 8C C0 ^14 LDY DRIVE_DATA,X - C6BF:10 FB BPL ^14 ;^ $C6BC + C6BF:10 FB BPL ^14 ;^ $C6BC C6C1:59 D6 02 EOR $36C-$96,Y C6C4:A4 3C LDY P5.Nibs C6C6:91 26 STA (P5.Dest),Y C6C8:C8 INY - C6C9:D0 EF BNE ^13 ;^ $C6BA - C6CB:BC 8C C0 ^15 LDY DRIVE_DATA,X + C6C9:D0 EF BNE ^13 ;^ $C6BA, Total $156 = 342 disk nibbles + C6CB:BC 8C C0 ^15 LDY DRIVE_DATA,X ; And read checksum C6CE:10 FB BPL ^15 C6D0:59 D6 02 EOR $36C-$96,Y - C6D3:D0 87 ^16 BNE ^0 ;^ $C65C used as trampoline by $C6F6 + C6D3:D0 87 ^16 BNE ^0 ;^ $C65C used as trampoline by $C6F6 C6D5:A0 00 LDY #$00 C6D7:A2 56 ^17 LDX #$56 C6D9:CA ^18 DEX - C6DA:30 FB BMI ^17 ; $C6D7 + C6DA:30 FB BMI ^17 ; $C6D7 C6DC:B1 26 LDA (P5.Dest),Y - C6DE:5E 00 03 LSR $0300,X ; $0300[ $00 .. $55 ] + C6DE:5E 00 03 LSR $0300,X ; $0300[ $00 .. $55 ] C6E1:2A ROL - C6E2:5E 00 03 LSR $0300,X ; $0300[ $00 .. $55 ] + C6E2:5E 00 03 LSR $0300,X ; $0300[ $00 .. $55 ] C6E5:2A ROL C6E6:91 26 STA (P5.Dest),Y C6E8:C8 INY - C6E9:D0 EE BNE ^18 ;^ $C6D9 + C6E9:D0 EE BNE ^18 ;^ $C6D9 - C6EB:E6 27 INC P5.Dest+1 ; DestAddr += $0100 - C6ED:E6 3D INC P5.SecWant ; SectorsLoaded++ - C6EF:A5 3D LDA P5.SecWant ; also alias for NextSectorToLoad - C6F1:CD 00 08 CMP P5.SecTotal ; SectorsLoaded <= SectorsTotal ? - C6F4:A6 2B LDX P5.SlotX16 ; - C6F6:90 DB BCC ^16 ;^ $C6D3 target ^0 is > +128 bytes away + C6EB:E6 27 INC P5.Dest+1 ; DestAddr += $0100 + C6ED:E6 3D INC P5.SecWant ; SectorsLoaded++ + C6EF:A5 3D LDA P5.SecWant ; also alias for NextSectorToLoad + C6F1:CD 00 08 CMP P5.SecTotal ; SectorsLoaded <= SectorsTotal ? + C6F4:A6 2B LDX P5.SlotX16 ; + C6F6:90 DB BCC ^16 ;^ $C6D3 target ^0 is > +128 bytes away - C6F8:4C 01 08 JMP $0801 ; $0800 = Num of Sectors to read - C6FB:00 DS $C700-* ; unused last 5 bytes + C6F8:4C 01 08 JMP $0801 ; $0800 = Num of Sectors to read + C6FB:00 DS $C700-* ; unused last 5 bytes C6FC:00 00 00 00 ```