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 us Takt, 2 Takte pro Bit, 8 Bits
AF3F: A9 06     LDA #$06          = 56 us 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 00     BNE $AF8D        Fehler ignorieren

* Old ROM:
AF8B: D0 3A     BNE $AFC7        zur Fehlerroutine

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