Was ist der Zweck des Dummy-Eintrags?
Na, ja - irgendwie muß man die Datei ja später wieder finden können.
"Dummy" deswegen, weil der Directory-Eintrag schon *vor* dem Schreiben der eigentlichen Sektor-Daten angelegt wird, und eben wie oben beschrieben, unvollständig ist; d.h. Eintrag für Startsektor und -track sowie Blocklänge fehlen.
Edit: hab' noch mal genauer nachgeschaut - tatsächlich wird dieser Teil auf dem Computer ausgeführt und schreibt einfach eine "leere" Datei. Die belegt trotzdem einen Block und definiert damit auch den Starttrack und -sektor. Der Rest, s.u.
Wie weit verwendest Du für das Schreiben (GCR-Kodierung, Ansteuern des Lese-/Schreibkopfes, Suchen des Sektors, Schreiben der GCR-Daten) eigene Routinen oder Routinen aus dem ROM?
Ich bin ja jetzt nicht der Autor. Allerdings habe ich mir vor ein paar Jahren mal das Hypra-System für den VC genauer angeschaut, und bei der Gelegenheit auch ein paar offensichtliche Fehler ausgebügelt. Der Code ist jetzt frei verschiebbar und statisch - das Original konnte man nicht in ein ROM für BLK5 (ab $A000) brennen, da selbstmodifizierend ...
Soweit ich das überblicken kann, wird effektiv nur die Datenübertragung beschleunigt. Und, wie gesagt, die Logik zum Wegschreiben der Sektoren ist auch noch im Floppycode drin. Es ist keine schnellere GCR-Kodierung erkennbar (keine gehörigen Tabellen, etc.) - läuft also wohl über die normalen DOS-Routinen ... mal schauen ...
Also, das hier sind die JSRs/JMPs in dem Teil vom Floppycode, der nicht für den schnellen Transfer da ist (Kommentare von AAY1541):
JMP $F969: Error entry disk controller
JSR $F121: Find and allocate free block
JSR $F5E9: Calculate parity for data buffer
JSR $F7A3: Convert 260 bytes to 325 bytes group code
JMP $F581: Write data block to disk
JSR $F510: Read block header
JMP $FE00: Switch to reading
JSR $F50A: Find start of data block
JMP $F6C5: Compare written data with data on disk (Einsprung für "write error")
JSR $F119: Buffer number for BAM
JSR $D042: Load BAM
JSR $D107: Open channel for writing
JMP $CFF8: Write data byte in buffer (Einsprung für "file not open")
JSR $DE3E: Get track and sector
JSR $D57D: DOS mismatch error (?)
JSR $D599: Verify execution
JMP $DB23: Close file
... sieht schon mal wie eine gute Blaupause aus.