Auszug aus:

Kramer, Manfred:
PRAKTISCHE MIKROCOMPUTER TECHNIK
Reihe: Amateurbibliothek
Militärverlag der DDR - Berlin, 1987
ISBN 3-327-00361-0

Veröffentlichung mit freundlicher Genehmigung von Manfred Kramer

PRAKTISCHE MIKROCOMPUTER TECHNIK

Manfred Kramer - DL2KMK ex Y23VO

4. Weitere Mikrocomputerbauelemente und Geräte

4.6.1. Folienspeicher (Floppy-Disk)

Je umfangreicher die Programme und je größer ihre Anzahl, desto wichtiger ist es, sie übersichtlich auf externen Datenträgern zu speichern und schnell in den Computer laden zu können. Obwohl sicherlich für die meisten Amateure aus Kostengründen das Kassettenmagnetband auch in Zukunft das optimale Speichermedium bleiben wird, soll eine kurze Übersicht die Entscheidung für oder gegen die Folienspeichertechnik erleichtern helfen. Der Folienspeicher ist eine runde, flexible Scheibe mit magnetisierbarer Schicht, die in einer ausgekleideten Papiertasche rotiert. Übliche Bezeichnung sind auch "Floppy-Disk" oder "Diskette". Standard-Disketten haben 8 Zoll, Minidisketten 5,25 Zoll und die in letzter Zeit aufgekommenen Mikrodisketten 3,5 Zoll Durchmesser ( Bild 4.4 ). Die Speicherkapazität hängt von der Größe der Diskette, aber auch vom Aufzeichnungsverfahren ab. Das Minidiskettenlaufwerk K 5600.10 von robotron erlaubt z.B. die Speicherung in 40 konzentrischen Spuren mit je 16 Sektoren zu 256 Byte. Die Übertragungsrate beträgt 250 kbit/s, die Drehzahl der Diskette 300 U/min, die Schrittzeit von Spur zu Spur 8 ms. Bei den Disketten kann die Bestimmung der Sektoren mit optoelektronisch abgetasteten Löchern in der Diskette für jeden Sektor erfolgen, man spricht dann von Hard-Sektor-Disketten. Bei den Soft-Sektor-Disketten übernimmt ein Programm die Zuordnung, indem zwischen die Sektoren mit den Datenbytes "Lücken" geschrieben werden. Zur Synchronisation ist dann nur ein Index-Loch nötig. Die Bewegung des Magnetkopfes erfolgt mit einem Schrittmotor. Zur Steuerung des Laufwerks sowie des Speichervorgangs ist eine umfangreiche Elektronik erforderlich, die etwa einer Computerminimalkonfiguration entspricht. Für den Anwender bringen jedoch die große Speicherkapazität und der schnelle Zugriff eine beträchtliche Steigerung der Leistungsfähigkeit und des Komforts mit sich. Um möglichst große Flexibilität zu erreichen, legt man meist den gesamten Speicher des Computers als RAM aus. Anstelle des Monitors tritt ein sogenannter Urlader, der ein Betriebssystem genanntes Programm mit 4 bis 10 kByte Speicherbedarf gleich nach dem Einschalten von der Diskette in den Speicher des Computers lädt. Dieses Betriebssystem unterstützt oder steuert dann die weitere Arbeit. Programme können mit Namen versehen und unter diesem zum Laden in den Speicher aufgerufen werden. Wenn Programme oder Daten den Umfang des Speichers überschreiten, kann man nicht benötigte Teile auf die Diskette "auslagern". Diese Möglichkeiten machen ein Diskettenlaufwerk für jene Amateure unentbehrlich, die sich vorwiegend mit Software beschäftigen wollen und bereits über Erfahrungen in der Computertechnik und in der Programmierung verfügen.

30 KByte 68 KByte
Bild 4.4 Bild 4.5

4.6.1.Betriebssystem für Floppy-Disk

Kurz vor Redaktionsschluß dieses Buches war es möglich, ein Floppy-Disk-Laufwerk zu erwerben. Natürlich wurde alles daran gesetzt, es so schnell wie möglich zu nutzen. Die im folgenden beschriebene Lösung arbeitet zwar schon zufriedenstellend, ist jedoch als vorläufig zu betrachten, denn besonders bei der Behandlung von Lesefehlern sind noch Verbesserungen in Hard- und Software möglich. Die Speicherung der Daten auf der Diskette erfolgt in strenger Ordnung, alle zu einem Programm gehörenden Bytes bilden eine Datei, die durch einen Namen und Sektornummern eindeutig festgelegt ist. Da ständig gelöscht und geschrieben wird, muß auf jeder Diskette ein Inhaltsverzeichnis die Kontrolle über möglicherweise völlig verteilt liegende Sektoren eines Programms bewahren helfen. Für die Dateiverwaltung und die Steuerung des Zugriffs für Schreiben und Lesen ist das erwähnte umfangreiche Betriebssystem erforderlich. Natürlich gibt es für diese Aufgabe recht unterschiedliche Lösungen. Eines der am weitesten verbreiteten Betriebssysteme ist CP/M. Es zeichnet sich durch folgende Vorteile aus:

- Umfangreiche Literatur.
- Viele Programme vorhanden.
- Es ist für die Anpassung an unterschiedliche Computer-Konfigurationen besonders gut geeignet, weil mehrere saubere Schnittstellen festgelegt sind.

Bild 4.6 zeigt die Aufteilung des Speichers. In seiner Minimalausführung arbeitet das Betriebssystem CP/M schon mit einem Speicher von 20 kByte, viele neuere Programme benötigen jedoch mehr Platz, so daß der Ausbau auf 64 kByte sinnvoll ist. In der sogenannten Grundseite (das ist der Speicherbereich von 0 bis 0FFH) liegen einige Speicherplätze, die sowohl vom Betriebssystern als auch von Anwenderprogrammen genutzt werden. Auf Adresse 0 beginnt ein Sprungbefehl zur Warmstart-Routine, mit der die Betriebssystemteile CCP und BDOS von der Diskette in den Speicher geladen werden. Aus dem Operanden dieses Sprungs, der auf den zweiten Befehl in der Einsprungtabelle am CBIOS-Anfang zeigt, können Anwenderprogramme die Größe des Speichers berechnen. Die Startadressen von CCP und BDOS können zwar je nach verfügbarem Speicher (z.B. 20 kByte oder 48 k) auf unterschiedlichen Adressen liegen, der Umfang dieser Programmteile steht aber fest. Adresse 3 nimmt das I/O-Byte ein. In fast gleicher Weise wie beim IN/OUT-Monitor des Grundgerätes beschrieben (Zeilen 22 bzw. 844 des Programms), dient es der Zuordnung von Peripheriegeräten. Das Byte auf Adresse 4 enthält in den unteren 4 bit den Code für das aktuelle Diskettenlaufwerk, denn CP/M kann bis zu 16 Geräte ansteuern. Die oberen 4 bit sind für den Amateur ohne Bedeutung, sie erlauben die Einteilung der Disketten in verschiedene Nutzerbereiche.
Auf Adresse 5 steht ein Sprung zum Diskettenbetriebssystem BDOS. Dies ist die eigentliche, geräteunabhängige Einsprungstelle in das System. Durch Parameter, die in den Registern C, D und E übergeben werden, kann man z.B. bei der Version 2.2 von CP/M 36 Funktionen auswählen.
TPA ist der Speicherbereich, in dem die Anwenderprogramme laufen. Sie werden durch Eingabe des Programmnamens über die Tastatur von der Diskette in diesen Teil des Speichers geladen und gestartet.
Die Abkürzung CCP steht für Console Command Processor. Dieses Programm erlaubt die Abarbeitung der fest eingebauten Kommandos:

DIR Anzeige des Inhalts von Disketten,
ERA Löschen von Dateien auf Disketten,
REN Umbenennen von Dateien auf Disketten,
SAVE Abspeichern von n "Seiten" des TPA auf Disketten,
USER Nutzerbereich festlegen,
TYPE ASCII-Dateien auf Bildschirm ausgeben.

In Ausnahmefällen können Anwenderprogramme den CCP überschreiben, wenn der Speicherplatz im TPA sonst nicht ausreicht. Sie müssen dann mit einem "Warmstart" (Sprung auf Adresse 0 der Grundseite) enden, um das Betriebssystem nach dem Abschluß wieder in den Speicher zu laden.
Mit dem Programmteil CBIOS erfolgt die Anpassung des Betriebssystems an unterschiedliche Hardware-Konfigurationen ähnlich wie im Abschnitt 2.3. für die IN/OUT-Routinen des Monitors erläutert. Zu den bereits dort vorgestellten Routinen für Tastatur, Bildschirm, Kassetteninterface und Drucker kommen im CBIOS noch Routinen für die Ansteuerung des bzw. der Floppy-Laufwerke. In industriellen Geräten fehlt fast immer ein Monitorprogramm, an denen darf aber auch meist nicht "gebastelt" werden. Für den Amateur ist der Monitor schon deshalb sinnvoll, weil mit seiner Hilfe die Schaltung und das Betriebssystem leichter in Gang zu bringen sind. Im Abschnitt 5.2. sind sowohl HEX-Listing des auf Adresse F000 verschobenen Monitors als auch ein CBIOS dargestellt. Beim Monitor fehlt hier der Disassembler, denn der Platz oberhalb des Debuggers wird für den RAM des Monitors benötigt. Das Grundgerät nach Abschnitt 1.2. wurde wie folgt verändert:

- Speicherumschaltung ähnlich Bild 3.9, jedoch unter Verwendung eines Erweiterungsgatters (Adresse F000H).
- Einbeziehung des Kassetteninterface nach Bild 4.1 in die Monitor-Routinen RI und WO.
- Erhöhung der Prozessor-Taktfrequenz auf 2,625 MHz (10,5 MHz: 4). Daraus folgt die Zeitkonstante 0D4H im System-RAM für das Druckprogramm im CBIOS.

Mit diesen Änderungen ist der Computer ohne den restlichen Speicher betriebsfähig, man kann also auch so mit dem Aufbau beginnen.
Das Programm CBIOS wird z.Z. mit dem Monitor von Kassette geladen. Es enthält vor allem Programme für die Arbeit mit Disketten. Viel Platz nimmt darin der sogenannte Physische Treiber für die Anschlußsteuerung ein, mit der die Elektronik des Laufwerkes an den Computer-Bus gekoppelt wird. Weitere Routinen sind für die Arbeit mit BDOS nötig. Denn da dieses geräteunabhängig arbeiten soll, bei den Laufwerken aber große und kleine Disketten mit unterschiedlichen Speicherkapazitäten möglich sind, gibt es eine Reihe von genormten Schnittpunkten. Das BDOS verwendet grundsätzlich Datenblöcke von 128 Byte. Üblich sind jedoch bei doppelter Schreibdichte Blöcke mit 256 Byte. Im CBIOS muß man deshalb beim Lesen die Sektoren "spalten" und beim Schreiben "zusammensetzen". In der vorläufigen Version ist dies in den Unterprogrammen RFLOP, WFLOP und TRANS noch recht primitiv ausgeführt. Durch größere Blöcke läßt sich auf der Diskette Speicherplatz gewinnen, denn es fallen Kennzeichnungsfelder für Sektoren weg.
Um Programme von einer Diskette auf eine andere kopieren zu können, benötigt man entweder ein Programm, bei dem durch mehrmaliges Tauschen der Quell- und Zieldiskette größere Programme "stückweise" übertragen werden können, oder ein zweites Laufwerk. Letzteres kann man auf einfache Weise durch ein Programm im Speicher simulieren (Unterprogramm RAM-DISK im CBIOS).
So richtig lohnt sich dies sicher erst, wenn der dafür benötigte Speicherplatz zusätzlich zur Verfügung steht und nicht vom TPA abgeht, aber die vorgestellte Lösung ist erst einmal besser als gar keine Kopiermöglichkeit.
Dieser simulierte Floppy-Speicher erlaubt es auch, einige CP/M-Programme völlig ohne Diskettenstation zu betreiben. Die Programme und Daten muß man dann allerdings von der Kassette laden.
Den Abschluß des CBIOS bildet ein Druckprogramm für große und kleine Buchstaben mit dem Empfangsfernschreiber F 1219. Auch dieses Programm entstand in kurzer Zeit und läßt sich bezüglich des benötigten Speicherplatzes noch optimieren.

23 KByte 71 KByte
Bild 4.6 Bild 4.7

4.6.2. Floppy-Disk-Schaltkreis U8272

Der U 8272 ist ein hochintegrierter Peripherieschaltkreis, der den größten Teil der Elektronik zum Anschluß von Diskettenlaufwerken an einen Computer-Bus enthält. Er erlaubt die Ansteuerung von bis zu 4 Laufwerken, die man mit unterschiedlichen Aufzeichnungsverfahren betreiben kann. Der Schaltkreis liefert Signale sowohl für den Prozessor, für einen DMA-Schaltkreis (bei Bedarf) und für das Laufwerk.
Tabelle 4.2. zeigt die Anschlußbezeichnungen. Er kann 15 verschiedene Kommandos ausführen, die z.T. mit bis zu 9 Bytes programmiert werden. Die Adreßmarken kann der Schaltkreis völlig selbständig feststellen, die Steuerung einer PLL-Schaltung vereinfacht sich. Die vom Laufwerk abhängigen Zeiten für Schritt, Kopf laden und halten sind programmierbar. Der Schaltkreis erlaubt es sogar, mit einem Kommando Daten von beiden Seiten der Diskette zu lesen bzw. beidseitig zu schreiben. Der U 8272 enthält zwei Register, die durch den Prozessor kontrolliert werden können, ein Status- und ein Datenregister. Das 8-bit-Hauptstatusregister enthält den aktuellen Zustand des Floppy-Disk-Controllers (FDC) und kann zu beliebigen Zeiten von der CPU abgefragt werden.
Das 8-bit-Datenregister besteht aus mehreren Registern, von denen immer nur eines zu einer bestimmten Zeit mit dem Datenbus verbunden ist. Dort sind Daten, Kommandobytes, Parameter und Informationen über den aktuellen Zustand des Laufwerkes gespeichert. Tabelle 4.3. enthält die bits des Hauptstatusregisters und ihre Bedeutung.
Die Programmierung des U 8272 unterscheidet sich etwas von der bei anderen Peripherieschaltkreisen. Man unterscheidet bei den Kommandos drei Phasen:

- Kommandophase: Der Schaltkreis erhält alle Daten für ein bestimmtes Kommando.
- Ausführungsphase: Der FDC führt das Kommando aus.
- Resultatphase: Nach dem Abschluß der Operation sind Status- und andere Informationen (z.B. Spur-Nr. usw.) verfügbar.

Während der Kommandophase - Programmierung des Schaltkreises - darf das nächste Byte erst in den Schaltkreis geschrieben werden, wenn das Hauptstatusregister die Bereitschaft des Schaltkreises dazu meldet.
Die bits 6 und 7 erlauben es, den Datenverkehr mit Quittungssignalen für "Bereitschaft" und "Richtung" abzuwickeln.
In der Ausführungsphase ist das Lesen des Hauptstatusregisters nur in der Betriebsart ohne DMA-Schaltkreis nötig und außerdem vereinfacht. Dabei kann die Bereitschaft des Schaltkreises zur Datenübertragung auch durch die Interruptleitung signalisiert werden. Die Interruptroutine oder die Abfrage muß bei doppelter Schreibdichte (Aufzeichnungsverfahren MFM) recht schnell erfolgen. Alle 13 µs liegt ein Byte von der Diskette an.
Den Abschluß der Ausführungsphase bildet der Ende-Impuls, den der Floppy-Controller vom Prozessor erhält.
Danach beginnt die Resultatphase. Dabei müssen alle Bytes, die in Tabelle 4.4. beim jeweiligen Kommando in dieser Phase angegeben sind, auch gelesen werden, sonst ist das Kommando nicht richtig beendet und der Schaltkreis nimmt ein neues nicht an.
Wie aus der Tabelle ersichtlich ist, enthält der U 8272 noch 4 weitere Statusregister, die nur in der Resultatphase gelesen werden können. Nach der Initialisierung des Schaltkreises mit dem Kommando "Specify" erfolgt ohne weitere Programmierung die Abfrage der Floppy-Laufwerke auf ihren Bereitschaftsstatus. Die Auswahlleitungen werden kurzzeitig aktiviert und die Ready-Leitung geprüft. Ist eine Klappe offen oder ein Laufwerk nicht vorhanden, kann das der Prozessor leicht feststellen. Diese Abfrage erfolgt auch zwischen den Kommandos.

42 KByte 67 KByte 34 KByte 38 KByte
Tabelle 4.2. Tabelle 4.3. Tabelle 4.4. Tabelle 4.5.

4.6.3. Anschlußsteuerung für Floppy-Disk-Laufwerk und Inbetriebnahme

Bild 4.8 zeigt den Stromlaufplan, der für die Aufzeichnung mit doppelter Dichte (Verfahren MFM) ausgelegt ist. Neben dem Quarzoszillator und den Puffern sind insbesondere für die Trennung der Daten- und Taktimpulse noch einige weitere Bauelemente nötig (Schaltkreise 15, 16, 17, 21). Beim Schreiben auf die Diskette besorgen die Schaltkreise 19 und 20 die Aufbereitung der Takt- und Datensignale.
Da der U 8272 D ständig, auch wenn nicht geschrieben oder gelesen wird, den Status des Laufwerks abfragt, muß man dessen Elektronik so verändern, daß ein Ready-Signal unabhängig vom Signal "Kopf laden" entsteht. Dazu ist die Verbindung des Ausgangs 10 mit einer Diode auf den Anschluß 11 von IC 22 zu führen.
Die Inbetriebnahme erfolgt nach Aufbau der Hardware, indem man die Unterprogramme des CBIOS mit dem Monitor von der Kassette lädt und mit der Initialisierung des U 8272 beginnend (Kommando INIFD) einzeln mit Haltepunkten auf jedem RET testet (für das Kommando SEEK muß auf dem Speicherplatz Track ein Wert ungleich Null stehen).
Der nächste Schritt ist das Lesen eines Sektors (Unterprogramm R 8272). Hierzu ist eine initialisierte Diskette notwendig. Den Dateninhalt des gelesenen Sektors kann man sich im Puffer FDMA mit dem D-Kommando des Monitors ansehen. Bei fehlerhafter Arbeit des Programms steht im Register A der Wert 1. Die genaue Art des Fehlers kann mit Hilfe der Tabelle 5.10. und den Werten auf den Speicherplätzen RESLT ermittelt werden. Die nun erforderlichen Programme des Betriebssystems CCP und BDOS werden auf einem anderen CP/M-Rechner erstellt und auf EPROM gespeichert. Danach kann man sie im eigenen Rechner auf Kassette mit CBIOS übertragen. Nach dem Einlesen der Teile auf die richtigen Adressen müßte CP/M funktionieren (Sprung auf GOCPM des CBIOS). Nun muß das Betriebssystem auf eine Diskette übertragen werden.
Am Mustergerät traten anfangs Probleme beim Lesen der inneren Spuren der Disketten auf. Ursache ist vorwiegend die einfache Schaltung des Datenseparators. Industrielle Schaltungen verwenden ausschließlich PLL-Schaltungen, die Schwankungen der Drehzahl des Laufwerks ausgleichen können. Die zweite mögliche Ursache sind zu große Toleranzen in der Einstellung der Laufwerke K 5100 durch den Service. Aus den Erfahrungen mit "schnellen" Kassetteninterface lag die Vermutung nahe, daß die Toleranzen des eigenen Laufwerks zu beherrschen sind, wenn die Disketten mit diesem initialisiert wurden. Wenn sie jetzt von anderen Laufwerken beschrieben werden, kann sie das Gerät trotzdem ohne Probleme lesen. Das Formatierprogramm 5.2.10. ist im Anhang zu finden.

247 KByte
Bild 4.8

5. Anhang

5.2.8. CBIOS

365 KByte 358 KByte 389 KByte
CBIOS, Seite 186/187 CBIOS, Seite 188/189 CBIOS, Seite 190/191

387 KByte 364 KByte 278 KByte 272 KByte
CBIOS, Seite 192/193 CBIOS, Seite 194/195 CBIOS, Seite 196/197 CBIOS, Seite 198

5.2.10. Programm zum Formatieren von Disketten

294 KByte 326 KByte
Disketten-INIT, Seite 200/201 Disketten-INIT, Seite 202/203