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