SYSGEN-Update, Version 1.4
von Mario Leubner
In gewohnter Art und Weise will ich auch dieses Mal wieder ein paar Neuerungen am Betriebssystem verbreiten. In der Ausgabe 2/2003 habe ich ja bereits erläutert, wie man am GIDE-Interface zwei Festplatten am KC betreibt. Leider gibt es dabei immer noch ein paar Probleme, die ich noch etwas näher untersucht habe: Und zwar arbeiten nicht alle Festplatten untereinander zusammen! Aber das ist kein Problem des KC oder des GIDE-Interface, sondern ein allgemeines Problem der unterschiedlichen Hersteller der Platten – denn das tritt genau so auch am PC auf.
Nun habe ich mir vorgenommen, zumindest beim Systemstart eine Abfrage einzubauen, die so gut wie möglich erkennt, welche Master- und Slave-Platten angeschlossen sind. Dazu habe ich in allen machbaren Kombinationen von den mir zur Verfügung stehenden 7 Festplatten und 2 CF-Cards, deren Zusammenarbeit und die Erkennung getestet.
Bild 4: Clubtreffen 2004: Mario Leubner zeigt die Ergebnisse der Festplattentests.
Das Ergebnis: Von 79 möglichen Kombinationen (auch Einzelbetrieb der Platten eingeschlossen) ist
- 53 mal korrekter Betrieb und Erkennung möglich.
- 17 mal wird eine Slave-Platte nicht korrekt erkannt, trotzdem kann mit der Master-Platte gearbeitet werden.
- 7 mal wird nicht korrekt erkannt, daß kein Slave vorhanden ist.
- 2 mal ist kein Zugriff möglich (Meldung: nicht bereit).
Das genaue Ergebnis ist in Bild 6 zu sehen.
(volle Größe)
Bild 6: Ergebnisse von Festplattentests am KC85-GIDE
Es gibt auch keine generelle Aussagemöglichkeit, wann zwei Platten zusammenarbeiten und wann nicht. Wenn die Platten vom gleichen Hersteller sind, dann ist zwar die Wahrscheinlichkeit höher, daß es funktioniert, es muß aber nicht so sein. Manchmal hilft es sogar, Master und Slave einfach zu vertauschen: siehe z.B. Maxtor 7131AT und ALPS DR311C. Die Maxtor als Master geht nicht in dieser Kombination, aber ist die ALPS der Master, dann funktioniert es!
Um nun von vornherein eine Aussage zu finden, welche Platten wie miteinander arbeiten oder nicht, kann man zum einen das erweiterte GIDETEST (aus GIDE09.PMA) verwenden. Das Programm hat Frank Dachselt in den KC-News 2/2003 vorgestellt.
Für einen Schnelltest habe ich noch ein kleines Hilfsprogramm entwickelt: Ich habe es einfach GIDE.COM genannt. Es macht im Prinzip die gleichen Tests als wenn man den KC bootet, nur lädt GIDE.COM nichts von den Festplatten und schreibt auch keine Daten. Es werden nur die Infos ausgewertet, die die Platten selbst melden. Und diese Infos kommen auf dem Bildschirm zur Anzeige. Man kann also die Platten in Ruhe ausprobieren, ohne etwas zu zerstören und – falls es doch nicht funktionieren sollte – die Platte unverändert wieder dort einsetzen, wo man sie her hat. Die Anzeige beim Aufruf von GIDE.COM sieht etwa so aus:
KC GIDE-Diagnosetool (c) ML 22.01.2004
--------------------------------------Real-Time-Clock: 22.01.2004 18:44:33
GIDE-Reset: OK.
Motor ein: OK.
Diagnose : 01hexMaster-HDD: SAMSUNG CF/ATA
- Anzahl Zylinder = 496
- Anzahl Koepfe = 16
- Anzahl Sektoren/Spur = 32Slave-HDD : ST9840AG
- Anzahl Zylinder = 1628
- Anzahl Koepfe = 16
- Anzahl Sektoren/Spur = 63
In diesem Fall waren zwei Festplatten angeschlossen und wurden auch erkannt. Zunächst wird die RTC-Uhr gelesen – daran erkennt man, ob der Zugriff auf das GIDE überhaupt klappt! Danach erfolgt ein RESET am GIDE-Interface, es wird der Festplattenmotor eingeschaltet (falls die Platten nicht von selbst anlaufen) und zuletzt die Diagnose ausgelöst. Hier gibt es eigentlich nur zwei gültige Werte: 01h heißt OK für Master und Slave und 81h heißt OK für Master und Slave nicht vorhanden. Alles andere kann man als nicht bereit deuten. Bei allen 4 Tests kann es mitunter eine kurze Wartezeit geben, bis die Rückmeldung kommt. Aber auch das ist abhängig von den Festplatten.
Falls dann noch gültige Daten von den Festplatten übermittelt wurden, erscheinen diese im Klartext darunter. Man kann sich die Werte aufschreiben oder ausdrucken und später bei der Erstellung der OPTION.INC verwenden.
Falls der Slave nicht korrekt erkannt wurde oder ungültige Daten im Parameterblock vorgefunden werden, dann erhält man statt der ausgewerteten Anzeige eine Fehlermeldung und einen Hexdump der ersten 96 Byte der gelesenen Daten. Das sieht dann etwa so aus:
KC GIDE-Diagnosetool (c) ML 18.01.2004
--------------------------------------Real-Time-Clock: 18.01.2004 18:05:54
GIDE-Reset: OK.
Motor ein: OK.
Diagnose : 01hexMaster-HDD: SAMSUNG CF/ATA
- Anzahl Zylinder = 496
- Anzahl Koepfe = 16
- Anzahl Sektoren/Spur = 32Slave-HDD : Konfigurationsbyte1 = 0 erkannt!
Laufwerksinfo (Auszug):00: 04 00 0C 00 2C 00 AC 00 EC 00 EC 00 EC 00 EC 00 ....,...........10: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................20: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................30: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................40: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................50: EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 EC 00 ................
Obwohl bei der Diagnose 01hex gemeldet wird, kommen vom Slave keine gültigen Daten an. Diese Kombination der Festplatten ist also nicht geeignet. Für die Erkennung, ob der Datensatz gültig ist, werden mehrere Tests durchgeführt:
- Konfigurationsbyte 0 darf nicht Null sein
- Zylinderanzahl darf nicht Null sein
- Kopfanzahl darf nicht Null sein
- Sektoranzahl darf nicht Null sein
- Bit 7 in der Modellbezeichnung darf nicht gesetzt sein
Die Abfrage des zweiten Konfigurationsbytes habe ich wieder verworfen, da gibt es einige Platten, bei denen das Byte Null ist. Alle anderen Daten lassen sich auch nicht automatisch auswerten. Dazu habe ich umfangreiche Tests gemacht und ich möchte mich auch noch einmal bei allen bedanken, die mich dabei unterstützt haben (besonders Enrico Grämer, Guido Grohmann und Silvio Güldner).
Doch nun zum eigentlichen SYSGEN 1.4:
Die gewonnenen Erkenntnisse habe ich in SYSGEN 1.4 einfließen lassen. Und wie schon erwähnt, laufen beim Bootvorgang die gleichen Tests ab wie bei GIDE.COM – nur die Anzeige und Fehlerauswertung erfolgt nicht so ausführlich.
Wichtig war mir nur, daß eine nicht funktionierende Festplattenkombination auch beim Bootvorgang erkannt wird und die zugehörigen Partitionen in einem solchen Fall ausgeblendet werden.
Alle Kommandos zum GIDE-Interface wurden außerdem mit einer TimeOut-Schleife programmiert, so daß man jetzt auch booten kann, wenn weder Master noch Slave funktionieren. Es sind dann zwar keine Zugriffe auf die Festplattenpartitionen möglich, man könnte aber Programme von Diskette starten.
Bei der Anzeige der Festplattenbezeichnungen werden jetzt alle nicht darstellbaren Zeichencodes ausgefiltert (falls doch noch einmal eine Erkennung ungültiger Daten nicht möglich war).
Und eine wesentliche Neuerung, die besonders für mich von Bedeutung ist: Nach dem Einlesen einer SYS-Datei erhält man ab sofort eine Auflistung aller eingestellten Laufwerke. So hat man auch später noch einen Überblick, was in den SYS-Dateien für Einstellungen erzeugt worden waren. Bei 8 möglichen Zeichen im Dateinamen lassen sich ja nicht so viele Informationen unterbringen, wie eigentlich nötig wären. Und wenn sich im Laufe der Zeit einige Dateien angesammelt haben, dann ist das schon hilfreich.
Was ist nun zu tun, um ein Update auf die Version 1.4 zu machen? Und für wen lohnt es sich überhaupt?
Die bisher erzeugten SYS-Dateien sind alle weiterhin verwendbar. Niemand braucht also wieder die OPTION.INC zu ändern oder einen Assembler auszuführen – vorausgesetzt man will nichts neu machen.
Und wer keine Probleme mit der Version 1.3 hat, der braucht auch nicht unbedingt auf die 1.4 umsteigen. Wenn aber beim Booten z.B. manchmal der Cursor verschwindet oder andere kryptische Zeichen auf dem Bildschirm erscheinen, wenn die Slave-Platte getestet wird, dann hilft die Version 1.4 weiter:
Es muß nur SYSGEN14 aufgerufen werden. Dann wie gewohnt zu allen Menüpunkten die Einstellungen vornehmen und neu in die Systemspuren schreiben. Das war’s dann auch schon und ab sofort wird mit dem neuen ML-DOS 1.4 gebootet.
Bild 5: Clubtreffen 2004: Der Plotter K6418 hat gerade das Begrüßungsplakat fertiggestellt.
