goapple2/docs/chivalry-debug.org

6.8 KiB

Debugging the Chivalry disk

Ascending memory references from $1F76.

Disassembly of routine that is overwriting from $1F76

$73,$74 $77,$78 $5B $5C $5D $62

$1F51: A0 00 LDY #$00 $1F53: B1 73 LDA ($73),Y $1F55: 85 5C STA $5C $1F57: C8 INY $1F58: B1 73 LDA ($73),Y $1F5A: 85 5B STA $5B $1F5C: C8 INY $1F5D: 18 CLC $1F5E: 98 TYA $1F5F: 65 73 ADC $73 $1F61: 85 73 STA $73 $1F63: A9 00 LDA #$00 $1F65: 65 74 ADC $74 $1F67: 85 74 STA $74 $1F69: 20 9C 1D JSR $1D9C $1F6C: A2 00 LDX #$00 $1F6E: A0 00 LDY #$00 $1F70: A5 5C LDA $5C $1F72: 85 5D STA $5D $1F74: B1 73 LDA ($73),Y $1F76: 91 77 STA ($77),Y $1F78: C8 INY $1F79: C6 5D DEC $5D $1F7B: D0 F7 BNE $1F74 $1F7D: 18 CLC $1F7E: 98 TYA $1F7F: 65 73 ADC $73 $1F81: 85 73 STA $73 $1F83: A9 00 LDA #$00 $1F85: 65 74 ADC $74 $1F87: 85 74 STA $74 $1F89: E6 62 INC $62 $1F8B: C6 5B DEC $5B $1F8D: D0 DA BNE $1F69 $1F8F: 60 RTS

Routine it calls: $1D9C

$5E $61 $62 $64 $77 $78

$1D9C: A5 62 LDA $62 $1D9E: AA TAX $1D9F: 0A ASL $1DA0: 0A ASL $1DA1: 29 1C AND #$1C $1DA3: 85 78 STA $78 $1DA5: 8A TXA $1DA6: 6A ROR $1DA7: AA TAX $1DA8: 6A ROR $1DA9: 6A ROR $1DAA: 6A ROR $1DAB: 08 PHP $1DAC: 29 03 AND #$03 $1DAE: 05 78 ORA $78 $1DB0: 05 5E ORA $5E $1DB2: 85 78 STA $78 $1DB4: 8A TXA $1DB5: 29 60 AND #$60 $1DB7: 85 77 STA $77 $1DB9: 6A ROR $1DBA: 28 PLP $1DBB: 6A ROR $1DBC: 29 98 AND #$98 $1DBE: 05 77 ORA $77 $1DC0: 85 77 STA $77 $1DC2: A6 61 LDX $61 $1DC4: BD D2 1D LDA $1DD2,X $1DC7: 18 CLC $1DC8: 65 77 ADC $77 $1DCA: 85 77 STA $77 $1DCC: BD 5E 1E LDA $1E5E,X $1DCF: 85 64 STA $64 $1DD1: 60 RTS

Boot sector addresses

$26 buffer pointer $2B boot slot $3D Last bsectr read $3E address btemp $5C offset to reader

apple][js shim

disk_categories['Local Saves'].push({category: 'Game', filename: 'http://localhost:8000/chivalry.json', name: 'Chivalry'})

Nybble files

apple2js

d5 aa 96 ff fe aa aa af af fa fb de aa eb

d5 aa ad ff 96 96 a7 9d ae 96 d6 b4 ed 96 96 96 a7 9e b2 96 d6 b6 f2 9b 96 96 a7 96 b2 97 d7 b6 ef 9a 96 96 9d 97 97 96 d6 b5 ee 97 96 96 96 96 96 96 d6 b9 f9 9a 9b a7 ae ae 96 96 d6 96 fa 9e a6 a7 a7 a7 96 96 b4 f3 9f 97 9b 9d 9d 9d 96 96 d6 ed ef d7 f2 ed b9 bd ae ea 96 96 96 ac ad 96 96 ad ad 97 96 96 96 a7 ac ac ac ac 9b af 96 96 96 b2 ac ad ad ac ac 97 96 96 96 ac ac 96 96 ac ac da 9f 96 96 96 96 96 96 96 96 9a a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 97 97 96 96 96 96 96 96 96 96 db 96 96 96 ac ad 96 96 ad ad 97 96 96 96 a7 ac ac ac ac 9b af 96 96 96 b2 ac ad ad ac ac 97 96 96 96 ac ac 96 96 ac ac da 9f 96 96 96 96 96 96 96 96 9a a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 97 97 96 96 96 96 96 96 96 96 9f 96 96 96 96 96 96 96 b2 f3 fb ef be ad af eb 9a de aa eb

Mine

d5 aa 96 ff fe aa aa af af fa fb de aa eb

d5 aa ad ff 96 96 a7 9d ae 96 d6 b4 ed 96 96 96 a7 9e b2 96 d6 b6 f2 9b 96 96 a7 96 b2 97 d7 b6 ef 9a 96 96 9d 97 97 96 d6 b5 ee 97 96 96 96 96 96 96 d6 b9 f9 9a 9b a7 ae ae 96 96 d6 96 fa 9e a6 a7 a7 a7 96 96 b4 f3 9f 97 9b 9d 9d 9d 96 96 d6 ed ef d7 f2 ed b9 df ae ce 96 96 96 ac ad 96 96 ad ad 97 96 96 96 a7 ac ac ac ac 9b af 96 96 96 b2 ac ad ad ac ac 97 96 96 96 ac ac 96 96 ac ac da 9f 96 96 96 96 96 96 96 96 9a a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 97 97 96 96 96 96 96 96 96 96 db 96 96 96 ac ad 96 96 ad ad 97 96 96 96 a7 ac ac ac ac 9b af 96 96 96 b2 ac ad ad ac ac 97 96 96 96 ac ac 96 96 ac ac da 9f 96 96 96 96 96 96 96 96 9a a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 96 a6 96 96 96 96 96 96 96 a6 97 97 96 96 96 96 96 96 96 96 9f 96 96 96 96 96 96 96 b2 f3 fb ef be ad af eb 9a de aa eb

Divergence?

$B700: (797128) No $8004: (14016092) Yes

Slot 6 accesses from:

1 Slot6 access from $C632 1 Slot6 access from $C635 1 Slot6 access from $C638 1 Slot6 access from $C63B 1 Slot6 access from $C640 1 Slot6 access from $C64A

$C661: 14, 367, 767, etc. $C6AD: 86 $C6BF: 256

$B952: 10, 367, etc. $B907: 86 $B918: 256

0xB942: error return 0xB942: good return

Possibly innocuous differences:

38,39c38,40 < $0026: FD FD --- > $0026: F7 F2

< $002C: FD 02 --- > $002C: F2 0D

< $01FC: 30 --- > $01FC: 34

26,27 2C: 2D:

2D: 0D - sector number from header 2E: 01 - track number from sector header 2F: FE - volume number from sector header 2C: F2 - sector header checksum

CURRENT.TRACK .EQ $478 DRIVE.1.TRACK .EQ $478 THRU 47F (INDEX BY SLOT) DRIVE.2.TRACK .EQ $4F8 THRU 4FF (INDEX BY SLOT) SEARCH.COUNT .EQ $4F8 RETRY.COUNT .EQ $578 SLOT .EQ $5F8 SEEK.COUNT .EQ $6F8 SECTOR .EQ $2D TRACK .EQ $2A VOLUME .EQ $2F DRIVE.NO .EQ $35 DCT.PNTR .EQ $3C,3D BUF.PNTR .EQ $3E,3F MOTOR.TIME .EQ $46,47 IOB.PNTR .EQ $48,49

Append A,X,Y,SP,P,PC

NOP: EA LDA #$00: A9 00 LDX #$00: A2 00 LDY #$00: A0 00 CMP #$AA: C9 AA PHP #$08 PLA #$68

Notes - status

0xB99E - is not a good address, because it's used to return from READ.ADDRESS as well as READ.SECTOR.

After 69th sector access

100: a2js: 0xB8C7, goa2: 0xB8C7 - match 125000: a2js: 0x1DC0, goa2: 0x1DC0 - match 187500: a2js: 0x1DA5, goa2: 0x1DA5 - match 195312: a2js: 0x1F69, goa2: 0x1F69 - match 197265: a2js: 0x1DB7, goa2: 0x1DB7 - match 197509: a2js: 0x02F8, goa2: 0x02F8 - match 197631: a2js: 0x030C, goa2: 0x030C - match 197646: a2js: 0xBD13, goa2: 0xBD13 - match 197653: a2js: 0xBD3F, goa2: 0xBD3F - match 197657: a2js: 0xBD43, goa2: 0xBD43 - match 197659: a2js: 0xBD49, goa2: 0xBD49 - DIFF in P 197661: a2js: 0xBD4F, goa2: 0xBD4C - LOTS! 197692: a2js: 0xBD70, goa2: 0xBD3C - LOTS! 197753: a2js: 0xBA03, goa2: 0xBD5A - DIFF! 198241: a2js: 0xBA03, goa2: 0xBA03 - DIFF in A,X 199218: a2js: 0xBA02, goa2: 0xBA02 - DIFF in X 203125: a2js: 0xBA03, goa2: 0xBA03 - DIFF in A,X 218750: a2js: 0xBA05, goa2: 0xBA02 - DIFF! 250000: a2js: 0xBA03, goa2: 0xBA0C - DIFF! 500000: a2js: 0xBDA0, goa2: 0xBDA1 - DIFF!

(/ (+ 197657 197661) 2) 197659