    ROM-Signatur pruefen (CRC-Test) (bei der 1571: $924e)

    Einsprung von $AA39, $FF5D:

    AB1D: 08        PHP              vlg. Blockheader-CRC-Test ($da63)
    AB1E: 78        SEI
    AB1F: A5 02     LDA $02          Register retten
    AB21: 48        PHA
    AB22: A5 03     LDA $03
    AB24: 48        PHA
    AB25: A5 04     LDA $04
    AB27: 48        PHA
    AB28: A5 05     LDA $05
    AB2A: 48        PHA
    AB2B: A5 06     LDA $06
    AB2D: 48        PHA
    AB2E: A5 07     LDA $07
    AB30: 48        PHA
    AB31: A5 08     LDA $08
    AB33: 48        PHA
    AB34: A5 09     LDA $09
    AB36: 48        PHA
    AB37: A5 0A     LDA $0A
    AB39: 48        PHA

    AB3A: A9 FF     LDA #$FF         #$ffff: Startwert fuer Pruefsumme
    AB3C: 85 07     STA $07
    AB3E: 85 08     STA $08
    AB40: A9 00     LDA #$00         Startadresse auf $8000
    AB42: 85 09     STA $09
    AB44: A9 80     LDA #$80
    AB46: 85 0A     STA $0A
    AB48: A0 02     LDY #$02         bei $8002 anfangen

    Einsprung von $AB97, $AB9B:

    AB4A: B1 09     LDA ($09),Y      Der Test arbeitet mit 16-Bit-Werten
    AB4C: 85 03     STA $03          Wert aus ROM nach $03/$02
    AB4E: AA        TAX
    AB4F: C8        INY
    AB50: B1 09     LDA ($09),Y
    AB52: 85 02     STA $02
    AB54: 8A        TXA
    AB55: A2 10     LDX #$10         16 Verschiebungen

    [----  -- --     LDA   03       (Nur zum besseren Verstaendnis !!!)]

    Einsprung von $AB94:

    AB57: 85 04     STA $04          (aktuelles b15 merken)
    AB59: 18        CLC              Nun werden alle 16 Bits aus $02/$03 der
    AB5A: 26 02     ROL $02          Reihe nach (von Hi nach Lo) getestet.
    AB5C: 26 03     ROL $03

    AB5E: A9 00     LDA #$00         Ist das Bit nicht gesetzt, wird der
    AB60: 85 05     STA $05          Wert $0000, nach $05/$06 geschrieben.
    AB62: 85 06     STA $06
    AB64: 24 04     BIT $04
    AB66: 10 08     BPL $AB70
    AB68: A9 21     LDA #$21         Ist es gesetzt, dann wird der Wert $1021
    AB6A: 85 05     STA $05          nach $05/$06 geschrieben
    AB6C: A9 10     LDA #$10
    AB6E: 85 06     STA $06

    Einsprung von $AB66:

    AB70: 24 08     BIT $08          Ist das MSB von $07/$08 gesetzt, dann
    AB72: 10 0C     BPL $AB80        wird die Abfrage genau umgedreht
    AB74: A5 05     LDA $05          ($1021, wenn Bit=0)
    AB76: 49 21     EOR #$21
    AB78: 85 05     STA $05
    AB7A: A5 06     LDA $06
    AB7C: 49 10     EOR #$10
    AB7E: 85 06     STA $06

    Einsprung von $AB72:

    AB80: 18        CLC              $07/$08 * 2
    AB81: 26 07     ROL $07          (Das MSB wird geloescht)
    AB83: 26 08     ROL $08
    AB85: A5 07     LDA $07          $07/$08 = $07/$08 eor $05/06
    AB87: 45 05     EOR $05
    AB89: 85 07     STA $07
    AB8B: A5 08     LDA $08
    AB8D: 45 06     EOR $06
    AB8F: 85 08     STA $08
    AB91: A5 03     LDA $03          naechstes Bit testen
    AB93: CA        DEX
    AB94: D0 C1     BNE $AB57
    AB96: C8        INY
    AB97: D0 B1     BNE $AB4A        Naechsten 16-Bit Wert holen, ==>
    AB99: E6 0A     INC $0A          naechste Seite bearbeiten
    AB9B: D0 AD     BNE $AB4A        bis ROM-Ende weitermachen, ==>

    AB9D: A4 07     LDY $07          Pruefsumme in y/x merken
    AB9F: A6 08     LDX $08

    ABA1: 68        PLA              Register zurueckholen
    ABA2: 85 0A     STA $0A
    ABA4: 68        PLA
    ABA5: 85 09     STA $09
    ABA7: 68        PLA
    ABA8: 85 08     STA $08
    ABAA: 68        PLA
    ABAB: 85 07     STA $07
    ABAD: 68        PLA
    ABAE: 85 06     STA $06
    ABB0: 68        PLA
    ABB1: 85 05     STA $05
    ABB3: 68        PLA
    ABB4: 85 04     STA $04
    ABB6: 68        PLA
    ABB7: 85 03     STA $03
    ABB9: 68        PLA
    ABBA: 85 02     STA $02          (alles klar ?)

    ABBC: CC 00 80  CPY $8000        Ist die Pruefsumme Ok. ?
    ABBF: D0 07     BNE $ABC8        nein, ==>
    ABC1: EC 01 80  CPX $8001
    ABC4: D0 02     BNE $ABC8        nein, ==>
    ABC6: 28        PLP
    ABC7: 60        RTS              ROM Ok.

    Einsprung von $ABBF, $ABC4:

    ABC8: A2 03     LDX #$03         4x LED Blinken
    ABCA: 86 40     STX $40
    ABCC: 4C F5 AE  JMP $AEF5        Laufwerk verriegeln ==>

        Previous Page / Next Page