    Reset-Routine ($eaa0)

    I/O initialisieren

    AF24: 78        SEI
    AF25: D8        CLD
    AF26: A9 FE     LDA #$FE         Port A (PA) und
    AF28: 8D 00 40  STA $4000
    AF2B: A9 65     LDA #$65         Datenrichtung A (DDRA)
    AF2D: 8D 02 40  STA $4002
    AF30: A9 D5     LDA #$D5
    AF32: 8D 01 40  STA $4001        PB setzen
    AF35: A9 3A     LDA #$3A
    AF37: 8D 03 40  STA $4003        DDRB
    AF3A: A9 00     LDA #$00         Timer A fuer FSM auf $0006 stellen
    AF3C: 8D 05 40  STA $4005        [3,5 ęs Takt, 2 Takte pro Bit, 8 Bits
    AF3F: A9 06     LDA #$06          = 56 ęs Uebertragungsdauer fuer 1 Byte
    AF41: 8D 04 40  STA $4004         = 2,9 s fuer 202 Blocks]
    AF44: A9 01     LDA #$01         Timer A starten
    AF46: 8D 0E 40  STA $400E
    AF49: A9 9A     LDA #$9A         IRQ bei: b1: Unterlauf von Timer B;
    AF4B: 8D 0D 40  STA $400D                 b3: SDR-voll/leer; b4: ATN-Signal
    Zero-Page testen

    AF4E: A0 00     LDY #$00
    AF50: A2 00     LDX #$00

    Einsprung von $AF56:

    AF52: 8A        TXA
    AF53: 95 00     STA $00,X        :0000  00 01 02 03 .. ..
    AF55: E8        INX              in entsprechende Z-Adressen schreiben
    AF56: D0 FA     BNE $AF52

    Einsprung von $AF6D:

    AF58: 8A        TXA
    AF59: D5 00     CMP $00,X        und pruefen
    AF5B: D0 95     BNE $AEF2        ungleich, (RAM-Fehler) ==>

    Einsprung von $AF60:

    AF5D: F6 00     INC $00,X        256 mal incrementieren
    AF5F: C8        INY
    AF60: D0 FB     BNE $AF5D
    AF62: D5 00     CMP $00,X        muss alten Wert ergeben
    AF64: D0 8C     BNE $AEF2        ansonsten RAM-Fehler ==>
    AF66: 94 00     STY $00,X        y=0 abspeichern
    AF68: B5 00     LDA $00,X        ist Speicherzelle wirklich 0 ?
    AF6A: D0 86     BNE $AEF2        nein, (RAM-Fehler) ==>
    AF6C: E8        INX              ganze Z-Page testen
    AF6D: D0 E9     BNE $AF58

    ROM testen

    AF6F: E6 40     INC $40          = 1
    AF71: A2 7F     LDX #$7F         Anfangen bei $8002
    AF73: 86 47     STX $47
    AF75: E8        INX              x=$80 (ROM-Laenge)
    AF76: A9 00     LDA #$00
    AF78: 85 46     STA $46
    AF7A: A0 02     LDY #$02
    AF7C: 18        CLC

    Einsprung von $AF85:

    AF7D: E6 47     INC $47

    Einsprung von $AF82:

    AF7F: 71 46     ADC ($46),Y      Alle Bytes des ROMs addieren
    AF81: C8        INY              (bei Uebertrag +1)
    AF82: D0 FB     BNE $AF7F
    AF84: CA        DEX
    AF85: D0 F6     BNE $AF7D
    AF87: 69 FF     ADC #$FF         +$ff
    AF89: 85 47     STA $47          sollte 0 ergeben
    AF8B: D0 3A     BNE $AFC7

    RAM mit Testwerten fuellen
    Page 1 mit $01,$02,$03, ...
    Page 2 mit $02,$03,$04, ...
    ...

    AF8D: A9 01     LDA #$01         Bei $0100 anfangen
    AF8F: 85 47     STA $47
    AF91: E6 40     INC $40          = 2
    AF93: A2 1F     LDX #$1F         RAM-Groesse

    Einsprung von $AF9C, $AFA1:

    AF95: 98        TYA              Index
    AF96: 18        CLC
    AF97: 65 47     ADC $47          + PageNr
    AF99: 91 46     STA ($46),Y      abspeichern
    AF9B: C8        INY
    AF9C: D0 F7     BNE $AF95
    AF9E: E6 47     INC $47
    AFA0: CA        DEX
    AFA1: D0 F2     BNE $AF95
    RAM testen und loeschen

    AFA3: A2 1F     LDX #$1F         RAM-Groesse

    Einsprung von $AFBE:

    AFA5: C6 47     DEC $47          RAM rueckwaerts testen

    Einsprung von $AFBB:

    AFA7: 88        DEY              Anfangen mit $ff
    AFA8: 98        TYA              Index
    AFA9: 18        CLC
    AFAA: 65 47     ADC $47          + PageNr
    AFAC: D1 46     CMP ($46),Y      sollte abgespeichert sein
    AFAE: D0 17     BNE $AFC7        wenn nicht, (RAM-Fehler) ==>
    AFB0: 49 FF     EOR #$FF         Bits negieren
    AFB2: 91 46     STA ($46),Y      und abspeichern
    AFB4: 51 46     EOR ($46),Y      Dies sollte 0 ergeben
    AFB6: 91 46     STA ($46),Y      RAM loeschen
    AFB8: D0 0D     BNE $AFC7        <>0, (RAM-Fehler) ==>
    AFBA: 98        TYA
    AFBB: D0 EA     BNE $AFA7        naechstes Byte der Page testen, ==>
    AFBD: CA        DEX
    AFBE: D0 E5     BNE $AFA5        naechste Page testen, ==>

    AFC0: A9 80     LDA #$80         Autoboot einschalten
    AFC2: 8D FB 01  STA $01FB
    AFC5: D0 03     BNE $AFCA

    Einsprung von $AF8B, $AFAE, $AFB8:

    AFC7: 4C F5 AE  JMP $AEF5        RAM/ROM-Fehler ==>

        Previous Page / Next Page