    FSM: Byte ausgeben (bei der 1571: $9228)

    Einsprung von $BF91:

    BF83: 4C 15 AD  JMP $AD15        ATN-Modus testen

    Einsprung von $AAC8, $BAE3, $BB59, $BE8E, $BE93, $BE99, $BE9F, $BEA4, $BEB2,
                  $BFAD:

    BF86: 48        PHA              <-- Einsprung

    Einsprung von $BF8D, $BF97:

    BF87: AD 01 40  LDA $4001        Normalen Bus auslesen
    BF8A: CD 01 40  CMP $4001
    BF8D: D0 F8     BNE $BF87        und entprellen
    BF8F: 29 FF     AND #$FF         nz-Flags neu setzen
    BF91: 30 F0     BMI $BF83        ATN, (dann Abbruch) ==>
    BF93: 45 76     EOR $76          letzter FSM-Clock-Zustand
    BF95: 29 04     AND #$04         (b2: CLOCK IN)
    BF97: F0 EE     BEQ $BF87        Clock-gekippt ? nein, ==>
    BF99: 68        PLA              Ja: Byte ausgeben
    BF9A: 8D 0C 40  STA $400C        Byte in FSM-Schieberegister schreiben
    BF9D: A5 76     LDA $76          neuen Clock-Zustand merken
    BF9F: 49 04     EOR #$04
    BFA1: 85 76     STA $76
    BFA3: A9 08     LDA #$08         Schiebevorgang abwarten

    Einsprung von $BFA8:

    BFA5: 2C 0D 40  BIT $400D        b3=1: Vorgang beendet ?
    BFA8: F0 FB     BEQ $BFA5        nein, ==>
    BFAA: 60        RTS

        Previous Page / Next Page