home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
EFFO
/
forum5.lzh
/
RECHNER
/
GEPARD
/
wd2797.doc
< prev
next >
Wrap
Text File
|
1988-06-03
|
5KB
|
100 lines
Heinz Joachim Weil Ursrainer Ring 101
D - 7400 Tⁿbingen
Tel. (07071) 68315
Zum Floppytreiber wd2797
========================
Der Floppytreiber wd2797 fⁿr den GEPARD entspricht im wesentlichen dem
entsprechenden Treiber unter GDOS 1.3 und wurde von MB an OS-9 angepa▀t.
ZusΣtzlich hat MB die M÷glichkeit eingebaut, diverse weitere
Diskettenformate zu lesen.
Mit der OS-9 Version 2.1 wurde auch eine neue Version des wd2797
ausgeliefert (Rev # 3 Ed # 3), die einige weitere, bisher nur im
Sourcetext dokumentierte ─nderungen enthΣlt.
Der Sektorpuffer
----------------
Hauptkritik der GEPARD-Besitzer an OS-9 war der langsame
Diskettenzugriff (besonders im Vergleich zu GDOS). Dieser ist vor allem
durch die Directory-Struktur unter OS-9 bedingt (s.a. os9_info auf OS-9
Forum 1). Um dem abzuhelfen, wurde in den Floppytreiber die M÷glichkeit
eingebaut, Diskettensektoren im Hauptspeicher zwischenzulagern.
Wird ein Sektor von Diskette gelesen, dann legt ihn der Treiber in einen
Puffer (oder Cache) ab. Ist der Puffer voll, dann werden die Sektoren,
die am lΣngsten ungenutzt zwischengespeichert waren, zuerst aus dem
Puffer entfernt. Wenn vom Betriebssystem ein Sektor angefordert wird,
schaut der Treiber zunΣchst im Puffer nach, ob der Sektor dort bereits
abgelegt ist; ist das der Fall, wird er von dort statt von Diskette
gelesen. Wird ein Sektor auf Diskette geschrieben, so wird er
anschlie▀end aus dem Puffer entfernt; damit wird vermieden, da▀ im Fall
eines Schreibfehlers verschiedene Versionen ein und desselben Sektors im
Puffer und auf Diskette existieren.
Fⁿr alle Floppy-Laufwerke wird nur ein Puffer angelegt. Bei geeigneter
Gr÷▀e (z.B. 128kB bei zwei Laufwerken) ist sichergestellt, da▀ sich die
Directories nach einmaligem Lesen praktisch immer im Hauptspeicher
befinden. Auch Hilfstexte, Sourcetexte beim Compilerlauf etc. befinden
sich hΣufig, wenn sie erneut gebraucht werden, noch im Puffer. Insgesamt
ergibt sich dadurch ein deutlich schnellerer Zugriff auf alle Dateien.
Nachteile ergeben sich allenfalls beim backup: hier sucht der Treiber
stets vergeblich die zu kopierenden Sektoren im Hauptspeicher und
verliert dadurch Zeit.
Wenn Disketten gewechselt werden, mⁿssen alle Sektoren, die dieser
Diskette zugeordnet sind, aus dem Puffer entfernt werden. Leider gibt es
keine zuverlΣssige Methode, einen Diskettenwechsel zu erkennen, wenn
dies nicht bereits das Laufwerk tut. Daher wird ein Sektorpuffern nur
dann angelegt, wenn Laufwerke mit "Tⁿrabfrage" angeschlossen sind.
Die Spurwechselzeiten
---------------------
Bisher entschied der Treiber anhand der Kennung der angeschlossenen
Floppy-Controller-Karte ⁿber die Spurwechselzeiten (step rates). Nun
k÷nnen die Spurwechselzeiten fⁿr jedes Laufwerk getrennt im Device
Descriptor vorgegeben werden. Das ist nⁿtzlich fⁿr spezielle
Kombinationen von FDC-Karte und Laufwerken (z.B. "neues" SONY-Laufwerk
an umgebauter "alter" FDC-Karte [Umbau s. GDOS Forum 9; dieser Umbau
wird vom Treiber unterstⁿtzt]).
Zum Device Descriptor
---------------------
Um die oben genannten Optionen zu aktivieren, mu▀ der Device
Descriptor fⁿr das jeweilige Laufwerk geΣndert werden. Dabei sollte
darauf verzichtet werden, die in systype.d definierten Makros zu Σndern,
die quasi einen Standard darstellen; vielmehr sollte der gewⁿnschte
Parameter einfach nach Aufruf des Makros gesetzt werden. Das k÷nnte
beispielsweise fⁿr den Device Descriptor d0.a so aussehen:
nam D0 Device Descriptor
use defsfile
use /DD/DEFS/rbfdesc.a
DiskD0
* Hier folgen beispielhaft einige ─nderungen:
StepRate set 2 6ms Spurwechselzeit z.B. fⁿr SONY-Slimline-Laufwerke
* Steht hier eine 7 (wie im Makro DiskD0), wird die
* Spurwechselzeit entsprechend der FDC-Karte gewΣhlt
TotalCyls set $200 Gr÷▀e des Sektorpuffers in Sektoren (hier 512 = 128kB)
* (TotalCyls ist eigentlich nur bei Festplatten definiert
* und hier zweckmΣ▀ig umdefiniert). TotalCyls ist
* entweder 0 (default) oder $100 bis $FFFF (64kB bis
* 4MB)
ends
Achtung: Da alle Laufwerke nur einen Sektorpuffer gemeinsam benutzen,
ist die Definition der Gr÷▀e des Puffers (TotalCyls) im Device Descriptor d0
ausschlaggebend. Dagegen k÷nnen Spurwechselzeiten (StepRate) fⁿr jedes
Laufwerk bzw. in jedem Device Descriptor einzeln definiert werden.
HJW 26.04.1988