Spur formatieren Einsprung von $C3BE, $CB41: C3D6: A5 88 LDA $88 Solltrack: Spur mit angegebener Tracknummer C3D8: 8D 01 60 STA $6001 formatieren (auch wenn Kopf wo anders ist) C3DB: 20 E3 CF JSR $CFE3 Precompensation ein-/ausschalten C3DE: A5 94 LDA $94 1. Sektornummer auf der Spur C3E0: 85 39 STA $39 merken C3E2: A5 92 LDA $92 Anzahl der Sektoren C3E4: 85 3A STA $3A merken C3E6: AD E3 01 LDA $01E3 Controller Befehl 'Write Track' C3E9: 20 F4 CB JSR $CBF4 Befehl an Controller geben C3EC: A2 20 LDX #$20 32 mal $4e schreiben Einsprung von $C3F6, $C3FE: C3EE: AD 00 60 LDA $6000 (Zeit, um auf Schreibmodus umschalten zu C3F1: 29 03 AND #$03 koennen) C3F3: 4A LSR Controller-Ready ? C3F4: 90 26 BCC $C41C ja, (Sprung nach $c544) ==> C3F6: F0 F6 BEQ $C3EE Byte-Ready ? nein, ==> C3F8: A9 4E LDA #$4E C3FA: 8D 03 60 STA $6003 $4e ins Datenregister schreiben C3FD: CA DEX C3FE: D0 EE BNE $C3EE 32 mal, ==> Einsprung von $C529: C400: A2 0C LDX #$0C 12 mal $00 schreiben (Sync-Markierung) Einsprung von $C40A, $C412: C402: AD 00 60 LDA $6000 C405: 29 03 AND #$03 C407: 4A LSR C408: 90 12 BCC $C41C [lauter bcc bis $c544] C40A: F0 F6 BEQ $C402 C40C: A9 00 LDA #$00 C40E: 8D 03 60 STA $6003 C411: CA DEX C412: D0 EE BNE $C402 C414: A2 03 LDX #$03 3 mal $f5 schreiben Einsprung von $C41E, $C426: C416: AD 00 60 LDA $6000 C419: 29 03 AND #$03 [$f5 ist das Zeichen fuer den Controller, C41B: 4A LSR fuer alle folgenden Bytes eine Einsprung von $C3F4, $C408: C41C: 90 51 BCC $C46F CRC-Pruefsumme zu berechnen. C41E: F0 F6 BEQ $C416 $f7 veranlasst den Controller spaeter, C420: A9 F5 LDA #$F5 die Pruefsumme auf Diskette zu schreiben. C422: 8D 03 60 STA $6003 Auch beim spaeteren Lesen werden diese C425: CA DEX Zeichen erkannt und ausgefuehrt.] C426: D0 EE BNE $C416 C428: EA NOP Einsprung von $C431: C429: AD 00 60 LDA $6000 1 mal $fe schreiben C42C: 29 03 AND #$03 (bedeutet zusammen mit den $f5, C42E: 4A LSR dass der Blockheader folgt) C42F: 90 3E BCC $C46F C431: F0 F6 BEQ $C429 C433: A9 FE LDA #$FE C435: 8D 03 60 STA $6003 C438: EA NOP Einsprung von $C441: C439: AD 00 60 LDA $6000 Spurnummer schreiben C43C: 29 03 AND #$03 C43E: 4A LSR C43F: 90 2E BCC $C46F C441: F0 F6 BEQ $C439 C443: AD 01 60 LDA $6001 C446: 8D 03 60 STA $6003 Einsprung von $C451: C449: AD 00 60 LDA $6000 Aktuelle Seite schreiben C44C: 29 03 AND #$03 C44E: 4A LSR C44F: 90 1E BCC $C46F C451: F0 F6 BEQ $C449 C453: A5 96 LDA $96 C455: 8D 03 60 STA $6003 C458: EA NOP Einsprung von $C461: C459: AD 00 60 LDA $6000 Aktuelle Sektornummer schreiben C45C: 29 03 AND #$03 C45E: 4A LSR C45F: 90 0E BCC $C46F C461: F0 F6 BEQ $C459 C463: A5 39 LDA $39 C465: 8D 03 60 STA $6003 C468: EA NOP Einsprung von $C471: C469: AD 00 60 LDA $6000 Sektorgroesse schreiben C46C: 29 03 AND #$03 C46E: 4A LSR Einsprung von $C41C, $C42F, $C43F, $C44F, $C45F: C46F: 90 33 BCC $C4A4 C471: F0 F6 BEQ $C469 C473: A5 91 LDA $91 C475: 8D 03 60 STA $6003 C478: EA NOP Einsprung von $C481: C479: AD 00 60 LDA $6000 $f7: CRC-Pruefsumme schreiben C47C: 29 03 AND #$03 (s. $c419) C47E: 4A LSR C47F: 90 23 BCC $C4A4 C481: F0 F6 BEQ $C479 C483: A9 F7 LDA #$F7 C485: 8D 03 60 STA $6003 C488: A2 16 LDX #$16 22 mal $4e schreiben Einsprung von $C492, $C49A: C48A: AD 00 60 LDA $6000 (einfache Luecke) C48D: 29 03 AND #$03 C48F: 4A LSR C490: 90 12 BCC $C4A4 C492: F0 F6 BEQ $C48A C494: A9 4E LDA #$4E C496: 8D 03 60 STA $6003 C499: CA DEX C49A: D0 EE BNE $C48A C49C: A2 0C LDX #$0C 12 mal $00 schreiben Einsprung von $C4A6, $C4AE: C49E: AD 00 60 LDA $6000 (Sync-Markierung) C4A1: 29 03 AND #$03 C4A3: 4A LSR Einsprung von $C46F, $C47F, $C490: C4A4: 90 3B BCC $C4E1 C4A6: F0 F6 BEQ $C49E C4A8: A9 00 LDA #$00 C4AA: 8D 03 60 STA $6003 C4AD: CA DEX C4AE: D0 EE BNE $C49E C4B0: A2 03 LDX #$03 3 mal $f5 schreiben Einsprung von $C4BA, $C4C2: C4B2: AD 00 60 LDA $6000 (CRC-Check anfangen) C4B5: 29 03 AND #$03 C4B7: 4A LSR C4B8: 90 27 BCC $C4E1 C4BA: F0 F6 BEQ $C4B2 C4BC: A9 F5 LDA #$F5 C4BE: 8D 03 60 STA $6003 C4C1: CA DEX C4C2: D0 EE BNE $C4B2 C4C4: EA NOP Einsprung von $C4CD: C4C5: AD 00 60 LDA $6000 1 mal $fb schreiben C4C8: 29 03 AND #$03 (bedeutet zusammen mit den $f5, C4CA: 4A LSR dass der Datenblock folgt) C4CB: 90 14 BCC $C4E1 C4CD: F0 F6 BEQ $C4C5 C4CF: A9 FB LDA #$FB C4D1: 8D 03 60 STA $6003 C4D4: A4 91 LDY $91 Sektorgroesse in 256 Bytes C4D6: C0 03 CPY #$03 feststellen C4D8: D0 01 BNE $C4DB C4DA: C8 INY Einsprung von $C4D8, $C4E3, $C4F8, $C4FD: C4DB: AD 00 60 LDA $6000 Daten schreiben C4DE: 29 03 AND #$03 C4E0: 4A LSR Einsprung von $C4A4, $C4B8, $C4CB: C4E1: 90 61 BCC $C544 C4E3: F0 F6 BEQ $C4DB C4E5: A5 9B LDA $9B Fuellbyte = $f5 ? C4E7: C9 F5 CMP #$F5 C4E9: D0 08 BNE $C4F3 nein, (Block mit Fuellbyte fuellen) ==> C4EB: 84 82 STY $82 ja, Daten aus Cache benutzen C4ED: A0 00 LDY #$00 C4EF: B1 4A LDA ($4A),Y C4F1: A4 82 LDY $82 Einsprung von $C4E9: C4F3: 8D 03 60 STA $6003 C4F6: E6 4A INC $4A Zeiger in Cachepuffer erhoehen C4F8: D0 E1 BNE $C4DB C4FA: E6 4B INC $4B C4FC: 88 DEY noch einen 256-Byte Block schreiben C4FD: D0 DC BNE $C4DB Einsprung von $C507: C4FF: AD 00 60 LDA $6000 $f7: CRC-Pruefsumme schreiben C502: 29 03 AND #$03 C504: 4A LSR C505: 90 3D BCC $C544 C507: F0 F6 BEQ $C4FF C509: A9 F7 LDA #$F7 C50B: 8D 03 60 STA $6003 C50E: A6 9A LDX $9A Anzahl der $4e-Bytes fuer die Luecke zwischen C510: EA NOP zwischen zwei Sektoren holen Einsprung von $C519, $C521: C511: AD 00 60 LDA $6000 x mal $4e schreiben C514: 29 03 AND #$03 C516: 4A LSR C517: 90 2B BCC $C544 C519: F0 F6 BEQ $C511 C51B: A9 4E LDA #$4E C51D: 8D 03 60 STA $6003 C520: CA DEX C521: D0 EE BNE $C511 C523: C6 3A DEC $3A Anzahl der noch zu schreibenden C525: F0 06 BEQ $C52D Sektoren =0 ? ja, ==> C527: E6 39 INC $39 Sektornummer + 1 C529: 4C 00 C4 JMP $C400 naechsten Block ==> C52C: EA NOP Einsprung von $C525, $C535, $C53D: C52D: AD 00 60 LDA $6000 so lange $4e schreiben, bis C530: 29 03 AND #$03 'Controller ready' C532: 4A LSR C533: 90 0A BCC $C53F C535: F0 F6 BEQ $C52D C537: 18 CLC C538: A9 4E LDA #$4E C53A: 8D 03 60 STA $6003 C53D: D0 EE BNE $C52D Einsprung von $C533: C53F: 20 EC CB JSR $CBEC auf 'Controller ready' warten C542: 18 CLC Ok. C543: 24 B $24 Einsprung von $C4E1, $C505, $C517: C544: 38 SEC Error-Ende C545: 60 RTS Previous Page / Next Page |