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