radio fernsehen elektronik 04/89

 
Veröffentlichung mit freundlicher Genehmigung der Redaktion der Zeitschrift "rfe/eh ELEKTROHÄNDLER"

Erfahrungen mit Diskettenlaufwerken

Dipl. - Math. ECKHART SCHILLER

Seit Anfang 1988 werden im VEB Kombinat Robotron die neuen 2 x 80-Spuren-Diskettenlaufwerke K 5601 produziert. Viele Betriebe rüsten zur Typenbereinigung die älteren Bürocomputer, die noch die alten Laufwerke K 5600 enthalten, auf die neuen um. Oft können die alten Laufwerke von interessierten Amateuren billig erworben werden. Im folgenden Beitrag werden die Erfahrungen beschrieben, die beim Anschluß eines K-5600-Laufwerkes an einen U-880-Mikrorechner gewonnen wurden.

Speichermedium Diskette

Die Diskette, die auch als Floppy Disk bezeichnet wird, ist das typische Speichermedium für 8-bit-Personalcomputer, Sie ist billig, leicht austauschbar und hat mit einer Kapazität von 120 Kbyte bis 1,4 Mbyte ein ausreichendes Speichervermögen für die meisten Anwendungsfälle. Die Aufzeichnung der Daten auf Disketten erfolgt in konzentrischen Spuren. Die Spur 0 liegt außen, die Spuren selbst sind in Sektoren eingeteilt (Bild 1).Jeder Sektor besteht aus einem Kennzeichnungsfeld und einem Datenfeld, von denen jedes mit 15 Synchronbytes beginnt und mit der Prüfsumme CRC endet. Vor der ersten Benutzung muß eine fabrikneue Diskette formatiert werden. Dabei werden die Kennzeichnungs- und Datenfelder angelegt und die Datenfelder mit dem Byte 0E5H beschrieben. Bei allen späteren Schreibzugriffen werden nur noch die Datenfelder beschrieben.
Zur Auszeichnung wird fast nur noch das MFM-Verfahren verwendet (Bild 2), das gegenüber dem älteren FM-Verfahren die doppelte Aufzeichnungsdichte bietet.

Diskettenlaufwerk

Es wurde das Laufwerk vom Typ K 5600.10 verwendet. Tafel 1 sind seine technischen Daten, Tafel 2 die Belegung des 26poligen indirekten Steckverbinders zu entnehmen. Diese Laufwerke können Daten auf einer Seite der Diskette in 40 Spuren aufzeichnen. Sie wurden hauptsächlich in den Bürocomputern A 5120 und A 5130 eingesetzt. Daneben wurde noch der Typ K 5600.20 mit 80 Spuren (einseitig) angewendet. Er hat, wie die Importlaufwerke, einen 34poligen direkten Steckverbinder. Alle einseitigen Laufwerke lassen sich ohne Veränderungen mit der vorgestellten Schaltung verwenden. Bei 80-Spur-Laufwerken muß nur der Disk-Parameter-Header (DPB), der im BIOS-Programm enthalten ist, geändert werden. Zweiseitige Laufwerke erfordern größere Änderungen in Hard- und Software.

Anschlußsteuerung

Die Verbindung zwischen Rechnerbus und Diskettenlaufwerk bildet die Anschlußsteuerung. Ihre Hauptaufgaben bestehen in der Positionierung des Lesekopfes und der Umwandlung der seriellen Daten des Laufwerkes in die parallelen Daten des Rechnerbusses. Mit der Floppy-Disk-Controller-IS U 8272 steht ein Bauelement zur Verfügung, das fast alle diese Funktionen übernimmt [1]. Trotzdem wird noch eine nicht unwesentliche Außenschaltung benötigt.
Bild 3 zeigt eine einfache Variante.

Busankopplung

Die Ankopplung an den U-880-Bus erfolgt in der üblichen Weise. Der Bustreiber DS 8286 kann entfallen, wenn nicht mehr als zehn MOS- oder TTL-Bauelemente an eine Datenleitung angeschlossen werden. Mit der angegebenen Schaltungsvariante werden die Adressen 40H bis 4FH belegt. Auf eine Auswertung von A1 und A2 wurde verzichtet, da der volle E-A-Adreßraum des U 880 kaum ausgenutzt wird.

Verbindung mit dem Laufwerk

Das Diskettenlaufwerk benötigt alle Signale in negierter Form. Als Leitungstreiber wurde ein Gatter mit offenem Kollektor DL 003 vorgesehen, die Empfänger sind zur Leitungsanpassung mit Pull-up-Widerständen versehen worden. Für die Datenleitungen RD und WR sind angepaßte Leitungen notwendig (105 Ohm-Flachbandkabel oder verdrillter Klingeldraht). Bei einer Leitungsführung in einem vieladrigen Kabelbaum ergab sich eine deutliche Verschlechterung der Lesesicherheit.
Einige Anschlüsse am U 8272 sind doppelt belegt. Die Umschaltung erfolgt mit dem Signal /RW/SEEK. Da im Normalfall nur eine der beiden Funktionen benötigt wird, kann auf Multiplexer verzichtet werden.

Laufwerksauswahl

Bei nur einem vorhandenen Laufwerk erübrigt sich eine Laufwerksauswahl. Das Selektsignal /SE wird auf Masse gelegt. Für die Motoreinschaltung /MO wurde eine Verzögerungsschaltung entworfen. Bei jedem Zugriff des U 880 auf den FDC U 8272 wird C1 entladen und der Motor eingeschaltet. Wenn eine Sekunde lang kein Diskettenzugriff stattfand, schaltet sich der Motor wieder aus. Damit werden Diskette und Laufwerk geschont. Außerdem verringert sich die Geräuschbelästigung.
Das Signal zum Andrücken des Lese-Schreibkopfes /HL ist im Laufwerk mit den Signalen /MO und /SE verkoppelt (s. Bild 4). Bei stehendem Motor wird also der Andruckfilz abgehoben, obwohl /HL auf Masse gelegt wurde. Beim Positionieren bleibt der Kopf angedrückt (wie im PC 1715). Zur Schonung der Disketten kann natürlich auch das /HL-Signal vom U 8272 verwendet werden.

Takterzeugung

Der Floppy-Disk-Controller U 8272 benötigt einen fast symmetrischen Takt von 4 MHz. Dieser läßt sich am einfachsten mit einem 8-MHz- oder 16-MHz-Quarz, aber auch mit einer frequenzstabilen LC-Schaltung erzeugen.
Der Schreibtakt WRCLK hat eine Breite von etwa 250 ns bei einer Frequenz von 500 kHz.

Einfacher Datenseparator

Etwas problematischer ist die Gewinnung des Lesetaktes. Eine einfache und relativ zuverlässige Lösung aus [2] zeigt Bild 3. Sie hat den Vorteil, daß keinerlei Abgleich nötig ist. Bei Disketten, die vom gleichen Laufwerk beschrieben wurden, gibt es keine Probleme. Bei fremden Disketten treten etwa ab Spur 30 verstärkt Lesefehler auf. Die Lösung ist also bei einem Laufwerk durchaus brauchbar. Das Prinzip besteht darin, daß die DL 193 bei jedem Impuls von /RD auf den Zählerstand 4 gesetzt wird (Bild 5). Da die Zählfrequenz nicht geregelt wird, treten bei Drehzahl- und Frequenzschwankungen leicht Fehler auf.

Datenseparator mit PLL (Bild 6)

Bei höheren Anforderungen sollte mit einem spannungsgesteuerten Oszillator VCO und einer PLL-Schaltung gearbeitet werden (Bild 6). Das Monoflop D3.1 arbeitet als Oszillator. Der frequenzbestimmende Kondensator C3 wird über R8 aufgeladen. Zusätzlich wird über R7 ein Strom eingespeist, der die Frequenz des Oszillators noch einmal um ±100 kHz verändern kann. Die Nadelimpulse von D3.1 werden von D1 in eine symmetrische Rechteckform umgewandelt. Die /RD-Impulse vom Laufwerk verlängert D3.2 auf etwa 700 ns. Sie werden in D2 mit den Impulsen vom Oszillator verglichen. Bei Phasenverschiebungen entsteht an N1 eine Spannungsdifferenz, die verstärkt wird und über R7 den Oszillator nachregelt.
Beim Aufbau dieser PLL-Schaltung sollten temperaturstabile Bauelemente verwendet werden. Für C1 bis C4 kommen nur Folienkondensatoren in Frage. R1 und R2, C1 und C2 sowie R3 und R4 sollten möglichst gepaart sein. Zum Abgleich wird unbedingt ein digitaler Frequenzmesser benötigt. Nach dem Aufbau der gesamten PLL-Schaltung wird zunächst überprüft, ob am Ausgang von N1 eine Spannung von 2,5 V anliegt, die notfalls mit R5 nachgeregelt wird. Dann wird die Frequenz des Oszillators mit Dickschichtregler R8 auf 1 MHz eingestellt. Nun wird an den /RD-Eingang ein regelbarer Impulsgenerator mit einer Frequenz von 250 kHz angeschlossen, der z.B, ein weiterer DL-123-Oszillator sein kann. Die Frequenz an D3.1 darf sich dabei nicht verändern. Mit dem Impulsgenerator wird jetzt der Frequenzbereich von 200...300 kHz in beiden Richtungen langsam durchfahren. Spätestens bei 225 kHz bzw. 275 kHz muß die PLL-Frequenz einrasten und sich bis zur anderen Grenze mitziehen lassen. Wenn der Fangbereich zu klein ist, kann er mit R7 beeinflußt werden. Zum Schluß wird mit R9 bei einer Frequenz von 250 kHz der Ausgangsimpuls von D5 in die Mitte der Impulse an D1.2 eingestellt. Dieser Vorgang muß mit Hilfe eines Oszillografen kontrolliert werden. Damit ist der Abgleich abgeschlossen, und das Einlesen echter Daten von der Diskette kann beginnen.
Wenn das Diskettenlaufwerk arbeitet, können zur weiteren Optimierung die Werte von R8, R9 sowie R1 und R2 noch einmal vorsichtig verändert werden. Dazu wird mit dem Programm Power (Funktion DS) in der Routine BIOS der Wert von VZAHL auf 1 gesetzt. Nun wird mit der Funktion Test eine gesamte Diskette gelesen. Das Programm Power am Ende gibt die Zahl der aufgetretenen Lesefehler aus, so daß sich optimale Werte für die Widerstände finden lassen. Der Impulsverlauf der PLL-Schaltung ist aus Bild 7 ersichtlich.

Einbindung des Diskettenlaufwerks in das Betriebssystem

Während bei der Hardware eines Computers noch weitgehend eigene Vorstellungen verwirklicht werden können, ist man bei der Software auf die standardisierten Betriebssysteme der industriellen Computer angewiesen, wenn deren umfangreiche Programmbibliotheken genutzt werden sollen. Dabei sind natürlich die Vorschriften des Geheimnisschutzes und des Urheberrechts zu beachten.
Das Standardbetriebssystem für 8-bit-Personalcomputer ist CP/M, die dazu kompatiblen DDR-Systeme sind u.a. SCP, CP/A und Micro-DOS.
CP/M besteht aus dem Kommandoprozessor CCP, dem logischen Betriebssystem BDOS und den physischen Routinen BIOS. CCP und BDOS sind universell, nur BIOS muß an den jeweiligen Computer angepaßt werden.
Die Anzahl der Datenbytes in einem Sektor ist bei CP/M unterschiedlich. Sie kann 128 byte, 256 byte, 512 byte oder 1024 byte betragen. In der DDR haben sich die Spurformate 16 x 256 byte und 5 x 1024 byte durchgesetzt. Bei 256-byte-Sektoren besitzt eine einseitige Diskette mit 40 Spuren eine Datenkapazität von 148 Kbyte. Die ersten drei Spuren sind für das Betriebssystem reserviert. Interessanter für den Amateur ist das Format mit 1024-byte-Sektoren. Hier passen 200 Kbyte auf eine Diskette, wenn auf die Spuren für das Betriebssystem verzichtet wird. Wie Versuche gezeigt haben, ist beim Laufwerk K 5600.10 auch Spur 41 noch nutzbar, so daß eine Kapazität von sogar 205 Kbyte erreicht wird.
Tafel 3 zeigt eine BIOS-Version für die vorgestellte Schaltung. Vorgesehen sind drei logische Laufwerke. Die Laufwerke A und B beziehen sich beide auf das eine wirklich vorhandene K 5600. Mit Laufwerk A werden Disketten im Format von 5 Sektoren zu 1024 byte auf 41 Spuren verarbeitet. Dabei bilden 1024 byte eine Gruppe. Dieses Format sichert die maximale Diskettenausnutzung mit 205 Kbyte.
Auf Systemspuren wurde verzichtet. Da auf jeden Fall ein Urlader-EPROM für den Systemanlauf benötigt wird, kann in diesem auch das ganze Betriebssystem untergebracht werden (CCP, BDOS und BIOS benötigen zusammen nur vier IS U2716).
Laufwerk B ist für den Datenaustausch mit SCP-Computern auf 148-Kbyte-Disketten vorgesehen. Laufwerk C wurde für den Einsatz einer RAM-Floppy mit 128 Kbyte vorbereitet. Die Unterprogramme für das Lesen und Schreiben eines 128-byte-Sektors müssen noch eingefügt werden.
Das Programm ist nicht als "Kochrezept" zu verstehen, sondern soll Anregungen für die Entwicklung eigener BIOS-Versionen geben. Eine vollständige Behandlung dieser Problematik kann aus Platzgründen nicht erfolgen (s.[3] [4]).

Erläuterungen zu den BIOS-Routinen

Am Anfang des BIOS-Systems befindet sich die Liste mit den Einsprüngen in die Unterprogramme.
Beim Warmstart (WBOOT) muß noch das Laden von CCP und BDOS vom EPROM in den RAM eingebaut werden. Das BIOS läuft ebenfalls nur im RAM. Weiterhin fehlen die Programme für Bildschirm, Tastatur und Drucker. Sie müssen unter Beachtung der CP/M-Schnittstellen individuell für den jeweiligen Computer erstellt werden.
READ und WRITE beinhalten die Umblockung der Sektoren von 1024-byte- oder 256byte-Disketten auf die 128-byte-CP/M-Sektoren. Bei einem Fehler von READ oder WRITE wird der Vorgang zehnmal wiederholt (VZAHL). Nach dem dritten Fehler wird der Kopf neu positioniert.
Zusätzlich wurde das Unterprogramm Format aufgenommen. Es dient zur Formatierung einer Spur im Format 5 x 1024 byte. Um eine fabrikneue Diskette zu formatieren, muß für alle 41 Spuren zunächst SETTRK und dann Format aufgerufen werden.

Installation des Betriebssystems

Nachdem das BIOS-System mit den eigenen Unterprogrammen vervollständigt wurde, wird es mit M80 (bzw. ASM) übersetzt und mit dem Kommando

LINKMT CPM = CCP, BDOS, BIOS/P:XX00

gelinkt (M80.COM, LINKMT.COM, CCP.REL und BDOS.REL befinden sich auf der Installationsdiskette von CP/A). XX00 ist die Anfangsadresse des CCP. Sie ergibt sich aus dem Platz, den das gesamte Betriebssystem, vom Speicherende gerechnet, benötigt. Das Programm CPM.COM wird nun zusammen mit dem Urlader im EPROM gespeichert. Der Urlader muß nach dem Systemreset das BIOS-System in den RAM laden und dann zu BOOT springen. Danach meldet sich der Computer mit A>.
Nun kann man versuchen, auf Laufwerk B: eine Diskette einzulesen. Sie muß auf einem Laufwerk K 5600.10 mit 148 Kbyte formatiert worden sein. Disketten, die mit 80-Spur-Laufwerken beschrieben wurden, bringen oft Probleme beim Lesen.
Wenn beim Lesen Fehler auftreten, kann die Ursache festgestellt werden, indem der Inhalt der RESULT-Zellen mit Hilfe des Monitors kontrolliert wird. Die wichtigsten Fehler mit ihren wahrscheinlichsten Ursachen sind:

Wenn der letzte Fehler laufend auftritt, liegt ein grundlegender Fehler in der Leseelektronik vor, oder die Taktfrequenz des Lesetakts bzw. die Drehzahl der Diskette liegen außerhalb des Toleranzbereiches von 3 %.
Die Bedeutung der restlichen Fehlerbits kann [1] entnommen werden.

Kopieren von Disketten

Das Kopieren von Disketten ist normalerweise die einzige Gelegenheit, bei der wirklich zwei Laufwerke benötigt werden. Wenn eine RAM-Floppy vorhanden ist, gibt es dabei keine Probleme.
Steht keine zur Verfügung, kann man sich mit dem Programm Power behelfen. Mit dem Kommando

LOAD Datei.xyz 3D00

wird die Datei (maximal 39 Kbyte - bei 10-Kbyte-System ohne CCP) in den Hauptspeicher ab Adresse 3D00 geladen. Nach Diskettenwechsel und CTRL-C wird die Datei mit

SAVE Datei.xyz 3D00 anz

auf die andere Diskette übertragen. Dabei ist anz die Anzahl der Sektoren, die das Programm Power nach LOAD gemeldet hat.

Literatur

[1] Böhl, E.: Integrierte Floppy-Disk-Controller-Schaltungen U 8272 D 08 und U 8272 D 04.
radio fernsehen elektronik, Berlin 36 (1987) 11, S. 703 bis 715
[2] Kramer, M.: Praktische Mikrocomputertechnik.
Berlin: Mililärverlag der DDR 1987
[3] Beschreibung des Betriebssystems CP/A.
Institut für Informatik und Rechentechnik der Akademie der Wissenschaften der DDR 1985
[4] Anwenderdokumentation SCP 1520;
Anleitung für den Programmierer und Anleitung für den Systemprogrammierer.
VEB Robotron-Buchungsmaschinenwerk Karl-Marx-Stadt 1984
[5] Böhl, E.: Der Floppy-Disk-Controller U 8272 D und sein Einsatz.
Mikroprozessortechnik, Berlin 2 (1988 ) 4, S. 102-104
[6] Lanßky, S.: Minidisketten-Laufwerk robotron K 5600.
Neue Technik im Büro, Berlin 27 (1983) 1, S. 29-32


40 KByte 65 KByte 16 KByte
Tafel 1 Bild 1 Bild 2

142 KByte 48 KByte 37 KByte
Bild 3 Tafel 2 Bild 4

22 KByte 81 KByte 19 KByte
Bild 5 Bild 6 Bild 7

364 KByte
Tafel 3