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 |