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 |