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 |