    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