Burst-Befehle $02,$12: Write (bei der 1571: $83ec)
Einsprung von $BC93:
BC01: A5 25 LDA $25 wurde die Diskette gewechselt ?
BC03: D0 F1 BNE $BBF6 ja, ==>
BC05: A5 7C LDA $7C Burst-Kommandobyte holen; L-Flag (b7)=1:
BC07: 10 03 BPL $BC0C logisches Format angegeben ? nein, ==>
BC09: 4C 81 BB JMP $BB81 ja: Write mit logischen Sektorangaben ==>
Write mit physikalischen Sektorangaben (bei der 1571: $8df6)
Cache mit Spurdaten fuellen; ggf. alte Daten speichern
Einsprung von $BC07:
BC0C: A2 00 LDX #$00 Jobspeicher 0 waehlen
BC0E: A5 7C LDA $7C Burst-Kommandobyte holen
BC10: 29 10 AND #$10 S-Flag in den Job-Seitenspeicher (SIDS)
BC12: 9D CE 01 STA $01CE,X uebertragen
BC15: AD 03 02 LDA $0203 Track- und Sektornummer in Jobspeicher
BC18: 95 0B STA $0B,X schreiben
BC1A: AD 04 02 LDA $0204
BC1D: 95 0C STA $0C,X
BC1F: A9 B4 LDA #$B4 TPWRT_DV: ggf. Cache auf Diskette schreiben
BC21: 20 B0 BF JSR $BFB0 und neue Spur einlesen; Job ausfuehren
BC24: 20 66 BF JSR $BF66 Burst-Status setzen
BC27: C9 02 CMP #$02 ist ein Fehler aufgetreten ?
BC29: 90 0A BCC $BC35 nein, ==>
BC2B: A9 00 LDA #$00 Flag: 'Cachepuffer veraendert' loeschen
BC2D: 85 87 STA $87
Einsprung von $BBFE:
BC2F: A5 7C LDA $7C Fehler-Flag im Burst-Kommandobyte setzen
BC31: 09 08 ORA #$08
BC33: 85 7C STA $7C
Daten vom Computer in den Cachepuffer uebertragen
Einsprung von $BC29:
BC35: 20 99 BC JSR $BC99 Zeiger in Cachepuffer ($7e) berechnen
BC38: A6 91 LDX $91 Sektorgroesse holen
BC3A: E0 03 CPX #$03 Sektorgroesse in Speicherseiten berechnen
BC3C: D0 01 BNE $BC3F [Veraenderung ist nur bei 1024-Byte-Bloecken
BC3E: E8 INX notwedig.]
Einsprung von $BC3C, $BC5C, $BC61:
BC3F: AD 01 40 LDA $4001 Bus-Register auslesen; CLOCK-OUT kippen und
BC42: 49 08 EOR #$08 damit ein neues Byte anfordern
BC44: 2C 0D 40 BIT $400D Flag: 'Byte empfangen' des SDR loeschen
BC47: 8D 01 40 STA $4001 Burst-Clock setzen
BC4A: A9 08 LDA #$08
Einsprung von $BC54, $BC68:
BC4C: 2C 01 40 BIT $4001 ATN testen
BC4F: 30 14 BMI $BC65 ist ein ATN empfangen worden ? ja, ==>
BC51: 2C 0D 40 BIT $400D b3=1: auf Uebertragungsende testen
BC54: F0 F6 BEQ $BC4C Uebertragung abwarten, ==>
BC56: AD 0C 40 LDA $400C Byte aus SDR auslesen
BC59: 91 7E STA ($7E),Y und in Cache schreiben
BC5B: C8 INY
BC5C: D0 E1 BNE $BC3F ganze Speicherseite uebertragen, ==>
BC5E: E6 7F INC $7F Cachezeiger Hi erhoehen
BC60: CA DEX Anzahl zu uebertragender Seiten -1
BC61: D0 DC BNE $BC3F noch eine Seite zu uebertragen, ==>
BC63: F0 0C BEQ $BC71 fertig mit dem Block ==>
Einsprung von $BC4F:
BC65: 20 15 AD JSR $AD15 ATN-Modus testen
BC68: 4C 4C BC JMP $BC4C und weiter warten
Einsprung von $BC78:
BC6B: AD EA 01 LDA $01EA Burst-Status aus Zwischenspeicher holen
BC6E: 4C FC BA JMP $BAFC und an den Computer senden
Einsprung von $BC63:
BC71: 20 03 AD JSR $AD03 CLOCK OUT auf Lo setzen
BC74: A5 7C LDA $7C Burst-Kommando holen
BC76: 29 08 AND #$08 ist das Fehler-Flag gesetzt ?
BC78: D0 F1 BNE $BC6B ja, ==>
BC7A: 20 5A BF JSR $BF5A Status an den Computer senden
BC7D: 24 7C BIT $7C Burst-Kommando holen; ist das E-Flag (b6)=1
BC7F: 70 0A BVS $BC8B (Schreibfehler ignorieren) ? ja, ==>
BC81: AD EA 01 LDA $01EA Jobrueckmeldung holen
BC84: C9 02 CMP #$02 kein Fehler aufgetreten ?
BC86: 90 03 BCC $BC8B ja, ==>
BC88: 4C 0A BB JMP $BB0A Fehlermeldung im Klartext ausgeben
Einsprung von $BC7F, $BC86:
BC8B: CE 05 02 DEC $0205 Anzahl abzuspeichernder Blocks -1
BC8E: F0 06 BEQ $BC96 =0 (Ende), ==>
BC90: 20 40 C0 JSR $C040 naechsten physikalischen Sektor holen
BC93: 4C 01 BC JMP $BC01 naechsten Block vom Compi holen ==>
Einsprung von $BC8E:
BC96: 4C 47 BF JMP $BF47 Kopf ggf. auf die angegebene Spur setzen
Zeiger in Cachepuffer berechnen
Einsprung von $BC35:
BC99: A0 00 LDY #$00 Zeiger Lo = 0
BC9B: 84 7E STY $7E
BC9D: AD 04 02 LDA $0204 aktuelle Sektornummer holen
BCA0: 38 SEC
BCA1: E5 94 SBC $94 - 1. Sektornummer auf der Spur
BCA3: A6 91 LDX $91
Einsprung von $BCA9:
BCA5: CA DEX * Sektorlaenge
BCA6: F0 04 BEQ $BCAC
BCA8: 0A ASL
BCA9: 4C A5 BC JMP $BCA5
Einsprung von $BCA6:
BCAC: 18 CLC
BCAD: 65 8C ADC $8C + Cache-Start
BCAF: 85 7F STA $7F = Zeiger Hi
BCB1: 60 RTS
Previous Page / Next Page