    Burst-Befehl: Write mit logischen Blockangaben

    Einsprung von $BB83:

    BB74: A9 8D     LDA #$8D         b0-3: kein logisches Diskettenformat
    BB76: 8D EA 01  STA $01EA        b7: Fremdformat; Burststatus ausgeben
    BB79: A5 7C     LDA $7C          Burst-Kommandobyte holen
    BB7B: 09 08     ORA #$08         Flag: 'Nachdem die Daten empfangen worden
    BB7D: 85 7C     STA $7C          sind, Fehlermeldung ausgeben' setzen
    BB7F: D0 04     BNE $BB85        ==>

    (bei der 1571: $840e)

    Einsprung von $BBF0, $BC09:

    BB81: A5 8A     LDA $8A          <--  Burst-Status-OR-Maske holen
    BB83: 30 EF     BMI $BB74        b7=1: Fremdformat ?

    Einsprung von $BB7F:

    BB85: A0 00     LDY #$00
    BB87: 84 7E     STY $7E          Pufferzeiger auf $0300 setzen
    BB89: A9 03     LDA #$03
    BB8B: 85 7F     STA $7F

    Einsprung von $BBAA:

    BB8D: AD 01 40  LDA $4001        Burst-Clock kippen (und damit ein neues
    BB90: 49 08     EOR #$08         Byte anfordern)
    BB92: 2C 0D 40  BIT $400D        Flag: 'Byte empfangen' des SDR loeschen
    BB95: 8D 01 40  STA $4001        Burst-Clock setzen
    BB98: A9 08     LDA #$08

    Einsprung von $BBA2, $BBB1:

    BB9A: 2C 01 40  BIT 4001       IST $B7=1:  ATN empfangen ?
    BB9D: 30 0F     BMI $BBAE        ja, ==>
    BB9F: 2C 0D 40  BIT $400D
    BBA2: F0 F6     BEQ $BB9A        warten, bis b3=1: Byte empfangen, ==>
    BBA4: AD 0C 40  LDA $400C        Byte aus dem Schieberegister holen
    BBA7: 91 7E     STA ($7E),Y      und in Puffer schreiben
    BBA9: C8        INY
    BBAA: D0 E1     BNE $BB8D        ganzen Block einlesen, ==>
    BBAC: F0 0C     BEQ $BBBA        ==>

    Einsprung von $BB9D:

    BBAE: 20 15 AD  JSR $AD15        ATN-Modus testen
    BBB1: 4C 9A BB  JMP $BB9A        weiter auf Byte warten ==>

    Einsprung von $BBC1:

    BBB4: AD EA 01  LDA $01EA        Burst-Status aus Zwischenspeicher holen
    BBB7: 4C FC BA  JMP $BAFC        und an Computer senden

    Einsprung von $BBAC:

    BBBA: 20 03 AD  JSR $AD03        CLOCK OUT auf Lo setzen
    BBBD: A5 7C     LDA $7C          Burst-Kommandobyte holen
    BBBF: 29 08     AND #$08         b3=1: kein logisches Format ?
    BBC1: D0 F1     BNE $BBB4        ja, (Fehler ausgeben) ==>
    BBC3: A2 00     LDX #$00
    BBC5: AD 03 02  LDA $0203        Zielblock setzen
    BBC8: 95 0B     STA $0B,X        Tracknummer
    BBCA: AD 04 02  LDA $0204
    BBCD: 95 0C     STA $0C,X        Sektornummer
    BBCF: A9 90     LDA #$90         Job $90: WRITE_DV
    BBD1: 20 B0 BF  JSR $BFB0        Job aufrufen
    BBD4: 20 66 BF  JSR $BF66        Burst-Status setzen
    BBD7: 20 5A BF  JSR $BF5A        und an Computer senden
    BBDA: 24 7C     BIT $7C          Burst-Kommandobyte holen
    BBDC: 70 0A     BVS $BBE8        E-Flag (b6)=1: Fehler ignorieren ? ja, ==>
    BBDE: AD EA 01  LDA $01EA        Fehlercode holen
    BBE1: C9 02     CMP #$02         < 2 ?
    BBE3: 90 03     BCC $BBE8        ja, ==>
    BBE5: 4C 0A BB  JMP $BB0A        Fehler im Klartext ausgeben

    Einsprung von $BBDC, $BBE3:

    BBE8: CE 05 02  DEC $0205        Anzahl zu schreibender Bloecke -1
    BBEB: F0 06     BEQ $BBF3        alle Bloecke geschrieben, ==>
    BBED: 20 7A C0  JSR $C07A        naechsten logischen Sektor holen
    BBF0: 4C 81 BB  JMP $BB81        Daten vom Compi holen und abspeichern ==>

    Einsprung von $BBEB:

    BBF3: 4C 44 BF  JMP $BF44        Kopf ggf. auf die angegebene Spur setzen

        Previous Page / Next Page