80-Bus Journal |
September 1983 · Ausgabe 9 |
Die Tabelle bedarf wohl einiger Erläuterung.
Nach dem Indexloch auf der Diskette, durch das sich das Laufwerk mit einer Lichtschranke orientiert, folgt einmalig das Index-Gap (gap=Spalte, Freiraum). Danach einige Nullen zum Synchronisieren und das Byte FE, das als ID Address Mark den Beginn des Sektors angibt. Darauf folgt die Spurnummer (0-39) und ein Zero zum Trennen. Die Sektornummer (1-max.18 bei SD) wird von einem Byte für die Sektorlänge gefolgt.
Ist Bit3 in den Schreib/Leseroutinen 1, dann gilt für die Sektorlänge:
00 | 128 | Bytes |
01 | 256 | Bytes |
02 | 512 | Bytes |
03 | 1024 | Bytes |
Dies ist bei uns der Fall, und mit den Längen bei rückgesetztem Bit3 sollten wir uns nicht belasten.
Nach der Sektorlänge wird F7 ausgegeben. Mit diesem Befehl erzeugt der Controller eine 2Byte-Prüfsumme.
Die folgenden FFs (Gap 2) trennen den Sektorkopf vom Datenblock ab, der wiederum durch Nullen zur Synchronisation eingeleitet wird.
FB signalisiert den eigentlichen Beginn der Daten (Data Address Mark), und an die Daten schließt sich wieder die Prüfsumme an (beim Schreiben durch F7 erzeugt). Gap 3 schließt den Sektor ab.
Alle Sektoren einer Spur sind so gleich aufgebaut. Ans Ende des letzten Sektors wird nun noch das Pre-Index-Gap angehängt, das bis zum Indexloch reicht. Dieses Format ist in der Format-Tabelle (TRKTAB) angelegt. Die „Expand“-Routine nimmt zwei Bytes und interpretiert das erste als Anzahl, das zweite als Zeichen. So wird in Zeile 4820 32 mal das Byte FF in den Speicher geschrieben. Trifft die Routine ein 00, dann kehrt sie zurück.
Die Spurnummern werden fortlaufend erhöht, die Sektornummern werden der Sektortabelle in Zeile 5000 entnommen. Im Falle der Osborne-Formatierung sind sie ebenfalls fortlaufend, in nachstehendem Programmausschnitt sind sie so gelegt, daß sie schneller eingelesen werden können (Oberle). Das Format des Beispiels entspricht dem Shugart-Vorschlag.
Seite 10 von 28 |
---|