CRC-Pruefsumme des Blockheaders testen
Einsprung von $CD36:
DA63: A5 38 LDA $38 Vgl. ROM-Test ($ab1d)
DA65: 48 PHA
DA66: A5 39 LDA $39 Rechenregister retten
DA68: 48 PHA
DA69: A5 3A LDA $3A
DA6B: 48 PHA
DA6C: A5 3B LDA $3B
DA6E: 48 PHA
DA6F: A5 3C LDA $3C
DA71: 48 PHA
DA72: A5 3D LDA $3D
DA74: 48 PHA
DA75: A5 3E LDA $3E
DA77: 48 PHA
DA78: A9 30 LDA #$30 Startwert ist $b230
DA7A: 85 3D STA $3D
DA7C: A9 B2 LDA #$B2
DA7E: 85 3E STA $3E
DA80: A0 00 LDY #$00
Einsprung von $DAD3:
DA82: B9 1F 00 LDA $001F,Y 2-Byte Wert aus Blockheader
DA85: 85 39 STA $39 nach $38/$39 holen
DA87: AA TAX
DA88: C8 INY
DA89: B9 1F 00 LDA $001F,Y
DA8C: 85 38 STA $38
DA8E: 8A TXA
DA8F: A2 10 LDX #$10 16 Bits muessen getestet werden
[da91 -- -- lda 39 (zum besseren Verstaendnis) ]
Einsprung von $DACE:
DA91: 85 3A STA $3A Hi-Byte fuer BIT-Test merken
DA93: 18 CLC
DA94: 26 38 ROL $38 naechstes Bit zum Testen bereitstellen
DA96: 26 39 ROL $39
DA98: A9 00 LDA #$00
DA9A: 85 3B STA $3B
DA9C: 85 3C STA $3C
DA9E: 24 3A BIT $3A ist das zu testende Bit (b7) =0 ?
DAA0: 10 08 BPL $DAAA ja, ($3b/$3c = $0000) ==>
DAA2: A9 21 LDA #$21 nein, ($3b/$3c = $1021)
DAA4: 85 3B STA $3B
DAA6: A9 10 LDA #$10
DAA8: 85 3C STA $3C
Einsprung von $DAA0:
DAAA: 24 3E BIT $3E ist das MSB der Pruefsumme =1 ?
DAAC: 10 0C BPL $DABA nein, ==>
DAAE: A5 3B LDA $3B ja, Wert in $3b/$3c austauschen
DAB0: 49 21 EOR #$21
DAB2: 85 3B STA $3B (aus $0000 wird $1021,
DAB4: A5 3C LDA $3C aus $1021 wird $0000)
DAB6: 49 10 EOR #$10
DAB8: 85 3C STA $3C
Einsprung von $DAAC:
DABA: 18 CLC Pruefsumme *2
DABB: 26 3D ROL $3D
DABD: 26 3E ROL $3E
DABF: A5 3D LDA $3D $3d/$3e = $3d/$3e eor $3b/$3c
DAC1: 45 3B EOR $3B
DAC3: 85 3D STA $3D
DAC5: A5 3E LDA $3E
DAC7: 45 3C EOR $3C
DAC9: 85 3E STA $3E
DACB: A5 39 LDA $39
DACD: CA DEX muessen noch Bits getestet werden?
DACE: D0 C1 BNE $DA91 ja, ==>
DAD0: C8 INY
DAD1: C0 05 CPY #$05 naechsten 16-Bit-Wert holen ?
DAD3: 90 AD BCC $DA82 ja, ==>
DAD5: A4 3D LDY $3D Die Pruefsumme muss $0000 ergeben
DAD7: A6 3E LDX $3E
DAD9: 68 PLA Register zurueckholen
DADA: 85 3E STA $3E
DADC: 68 PLA
DADD: 85 3D STA $3D
DADF: 68 PLA
DAE0: 85 3C STA $3C
DAE2: 68 PLA
DAE3: 85 3B STA $3B
DAE5: 68 PLA
DAE6: 85 3A STA $3A
DAE8: 68 PLA
DAE9: 85 39 STA $39
DAEB: 68 PLA
DAEC: 85 38 STA $38
DAEE: C0 00 CPY #$00 Pruefsumme <> $0000 ?
DAF0: D0 06 BNE $DAF8 ja, ==>
DAF2: E0 00 CPX #$00
DAF4: D0 02 BNE $DAF8 ja, ==>
DAF6: 18 CLC
DAF7: 60 RTS
Einsprung von $DAF0, $DAF4:
DAF8: A9 09 LDA #$09 CRC-Error
DAFA: 4C CC CD JMP $CDCC
Previous Page / Next Page