###   Projekte und Informationen rund um den KC85   ### 

Zwei Festplatten am KC

von Mario Leubner

In den letzten News war es bereits angekündigt und auf dem Clubtreffen in Frankfurt/Oder zu sehen: Auch am KC lassen sich zwei Festplatten anschließen. Wer das GIDE-Interface eingebaut hat, für den ist auch der Einbau der zweiten Festplatte kein Problem. Doch wozu zwei Festplatten am KC? Die Kapazität einer einzelnen Festplatte reicht völlig aus für die anfallenden Daten des KC!

Für mich gab es einen wichtigen Grund, warum ich mir eine zweite Festplatte eingebaut habe:

Meine Festplatte bringt mehr und mehr Fehler. Deshalb habe ich mir eine andere Festplatte besorgt. Doch wie bringt man die Daten einer 100MB-Platte auf eine andere?

  • Man kann 125 Disketten (800 KByte pro Diskette) verwenden und ein Backup-Programm (z.B. BU17) – und natürlich reichlich Geduld beim Diskettenwechseln.
  • Oder man geht mittels der MTOOLs über den PC, verliert dabei aber sämtliche Datumseinträge.
  • Oder man könnte die alte und neue Platte parallel an den KC anschließen und die Dateien einfach mit dem COPY-Befehl kopieren.

Die letzte Möglichkeit ist am einfachsten, hier reicht zum Beispiel der Befehl COPY C:*.* F: und alle Dateien werden von C: nach F: kopiert. Jetzt muß man nur noch für jeden genutzten USER-Bereich einmal einen solchen Befehl eintippen (oder gleich eine SUBMIT-Datei für alle USER-Bereiche), und eine Partition wäre kopiert.

Der zweite Grund, um zwei Festplatten am KC nutzen zu können, ist die Möglichkeit CF-Card’s wie eine Festplatte zu benutzen. Guido Speer hat das getestet und auch in Frankfurt gezeigt. Damit hat man jetzt einen großen Wechseldatenträger am KC. Bei gleicher Installation an zwei KC’s braucht man nur die CF-Card zu wechseln und hat alle Daten auf dem anderen KC, also wie bei einer Diskette – nur mit 8 MByte oder mehr!

Was ist nun erforderlich, um zwei Festplatten am KC zu betreiben?

Der Hardwareaufwand ist minimal: Man braucht ein IDE-Kabel mit zwei parallel angeschlossenen 40-poligen Steckern (das ist bei den handelsüblichen Kabeln stets der Fall). Dann braucht die zweite Festplatte noch einen Stromanschluß, da kann man ein so genanntes Y-Kabel benutzen, das gibt es auch fertig zu kaufen.

Und dann braucht man noch eine zweite Festplatte! Und, ganz wichtig: Von beiden Festplatten muß man genau wissen, wie die Jumper zu setzen sind, um sie als MASTER oder SLAVE zu betreiben. Meist bekommt man bei gebrauchten Festplatten diese Informationen nicht dazu. Bei einigen Platten steht es direkt auf dem Gehäuse, für ältere Modelle bekommt man auch im Internet Hilfe.



Bild 3: Clubtreffen 2003: Trotz des Kabelwirrwarrs gut zu erkennen: in diesem Gehäuse befinden sich zwei Festplatten, die im Master-Slave-Betrieb am GIDE- Interface angeschlossen sind.

Allgemeingültige Aussagen gibt es nicht, da jeder Hersteller eigene Varianten hat. Manche Festplatten brauchen als Master-Festplatte andere Jumper-Einstellungen, als wenn sie einzeln (Single) betrieben werden. Andere Platten haben bei Single- und Master-Betrieb die gleichen Jumperstellungen. Also am besten erst informieren und dann loslegen!

Kommen wir zur Software:

Die Festplatte wird vom BIOS angesprochen, deshalb mußte in das BIOS ein neuer Festplattentreiber rein. Dieser muß zwischen Master- und Slave-Platte unterscheiden können. Im Prinzip reicht dazu 1 Bit aus, das für jede Festplatte im erweiterten DPB enthalten ist. Das BIOS liest bei den Operationen nur noch das Bit, baut es in die Befehle ein, die zum GIDE ausgegeben werden und schon funktioniert es. Der Treiber im BIOS wurde dazu nur ein Byte größer als in der vorherigen Version.

Der größere Aufwand entstand bei der Erkennung und Initialisierung der beiden Festplatten beim Systemstart. Dieser Programmteil, der in SYSGEN.COM enthalten ist und beim Start aus den Systemspuren geladen wird, ist in großen Teilen neu geschrieben worden.



Bild 4: Clubtreffen 2003: Beim Booten der neuen MLDOS-Version werden die angeschlossenen IDE-Laufwerke angezeigt, hier als Master eine normale Festplatte und als Slave eine CF-Card von SanDisk.

Zu erkennen ist jetzt auch (wie beim PC), welche Festplatten erkannt worden sind. Dazu lese ich die Informationen direkt aus der Platte aus. Es ist also eine direkte Kontrolle vorhanden, daß die Platte erkannt wird.

Soviel zur Funktion der Software. Kommen wir jetzt dazu, wie wir ein solches System mit zwei Festplatten erstellen. Es dürfte nicht viel schwieriger sein als mit einer Festplatte. Man benötigt nur die Daten (Anzahl der Spuren, Köpfe und Sektoren) von jeder Platte, die man am besten mit GIDETEST.COM ermittelt.

Dazu muß man aber die Platte jeweils als Master anschließen, da es in GIDETEST keine Master/Slave-Umschaltung gibt. Dann gibt es wieder eine zentrale Datei, wo die Einstellungen vorgenommen werden: die bekannte Datei OPTION.INC. In der nun aktuellen Version gibt es aber ein paar Neuerungen; deshalb gehe ich alle Punkte nochmals einzeln durch.

Aber auch in die Datei OPTION.INC selbst habe ich viele Kommentare geschrieben, so daß eigentlich nichts schief gehen sollte. Zum Ändern sind jeweils die Werte vorgesehen, die mit Großbuchstaben geschrieben sind und kein Semikolon in der ersten Spalte enthalten:

NDRIVES EQU 8

Hier wird zunächst die Anzahl der logischen Laufwerke (zwischen 5 und 16 ist möglich) eingegeben, entsprechend viele Laufwerke stehen dann zur Verfügung. Bei 5 sind es die Laufwerke A: bis E:, bei 6 A: bis F: usw. bis maximal A: bis P: bei 16 Laufwerken (im Beispiel sind es die Laufwerke A: bis H:).

HARD EQU 6

Als nächstes muß man hier eintragen, wieviele Partitionen von Festplatte(n) belegt werden. Dabei ist noch keine Unterscheidung zwischen Master- und Slave-Platte erforderlich, anzugeben ist die Gesamtanzahl aller Festplattenpartitionen! Maximal können 6 Partitionen von Festplatten gebildet werden, die erste Partition ist immer C:, die anderen schließen sich unmittelbar daran an.

Bei 6 Partitionen (z.B. 3 Master- und 3 Slave-Partitionen) müssen aber auch mindestens 8 logische Laufwerke in NDRIVES definiert werden. Die Angabe HARD=0 kann für Systeme ohne GIDE-Interface verwendet werden, dann wird der RTC-Uhrentreiber durch einen CTC-Uhrentreiber wie in MicroDOS ersetzt. Das war aber bisher auch schon so.

Nun haben wir die Anzahl der Laufwerke definiert. Jetzt muß noch angegeben werden, welche Parameter die angeschlossenen Festplatten haben. Da jetzt 2 Festplatten möglich sind, gibt es auch 2 Bereiche, wo Angaben zu machen sind:

CYLS0 EQU 732 ; Anzahl Zylinder
HEAD0 EQU 8 ; Anzahl Köpfe
SECS0 EQU 35 ; Anzahl Sektoren

Das wären die Angaben für die Master-Festplatte, zu erkennen an der 0 am Ende der Variablen, im Beispiel sind das die Daten meiner “ALPS D311C“ mit 100 MByte. Der gleiche Parametersatz folgt noch einmal für die Slave-Festplatte, die Variablen haben zur Unterscheidung am Ende eine 1. Wer nur eine Festplatte einsetzt, kann diese Eintragungen unverändert lassen:

CYLS1 EQU 928 ; Anzahl Zylinder 
HEAD1 EQU 8 ; Anzahl Köpfe
SECS1 EQU 32 ; Anzahl Sektoren

Die Werte entsprechen einer “Conner CP2121“ mit 119 MByte. In der Datei OPTION.INC sind einige weitere Festplattendaten enthalten, die bereits am KC getestet worden sind. Die letzten 3 Werte sind dabei die Spuren, die für die drei Partitionen verwendet wurden – als Vorschlag.

Der nächste Schritt wäre die Partitionierung der Festplatte(n). Um eine Festplatte auf mehrere logische Laufwerke aufzuteilen, muß festgelegt werden, wie groß jede Partition werden soll. Dazu erhält jede Partition einen Teil der Gesamtzylinder einer Festplatte. Es müssen nicht alle vorhandenen Zylinder benutzt werden, dann bleibt eben ein Teil der Gesamtkapazität der Festplatte ungenutzt. Die maximale Partitionsgröße beträgt 64 MByte! In Abhängigkeit von den Parametern der Festplatte variiert die Speicherkapazität je Zylinder. Zur Berechnung der Spurgröße gilt:

HEADS ∗ SECS ∗ 0,5 = KByte/Zylinder

Für die als Master eingesetzte “ALPS D311C“ ergibt sich demnach

∗ 35 ∗ 0,5 = 140 KByte/Zylinder

und für die als Slave eingesetzte “Conner CP2121“

∗ 32 ∗ 0,5 = 128 KByte/Zylinder

Für Partition C: sollte eine Systemspur (mindestens 32 KByte) definiert werden, in der später ein Bootsektor untergebracht werden kann. Bei den meisten Festplatten dürfte eine einzige Spur hierfür mehr als ausreichend sein. Mit den errechneten Werten für die Kapazität eines Zylinders kann man auch berechnen, wieviele Zylinder eine Partition maximal enthalten kann, denn man muß unter 64 MByte bleiben!

Für die ALPS D311C:

max. Zylinder 64 MByte / 140K = 468,11 also max. 468 Zylinder


Für die Conner CP2121:

max. Zylinder 64 MByte / 128K = 512 also max. 511 Zylinder

 

Diese Werte sollte man zumindest als Richtwert kennen, um die folgenden Einstellungen vorzunehmen. Für jedes logische Festplattenlaufwerk ist in 6 Parametern anzugeben, welche Größe das Laufwerk haben soll. Bisher gab es nur die Option BIG=0 oder BIG=1. Jetzt kann man flexibel die Aufteilung der einzelnen Parameter gestalten.

Für jedes Laufwerk ist anzugeben:

  • Laufwerksbuchstabe
  • MASTER (0) oder SLAVE (1), bei nur einem Laufwerk MASTER eingeben!
  • erste genutzte Spur (Zylinder) dieser Partition
  • Anzahl der genutzten Spuren (Zylinder) in dieser Partition
  • Anzahl Systemspuren (nur bei C: erforderlich)
  • Blockgröße (4 KByte oder 8 KByte)
  • Anzahl Verzeichniseinträge (1024, 2048 oder 4096)

Dabei sollte beachtet werden, daß bei einer Blockgröße von 4 KByte max. 2048 Verzeichniseinträge möglich sind und nur bei einer Blockgröße von 8 KByte die maximalen 4096 Verzeichniseinträge erreicht werden können. Die relevanten Zeilen sehen im Beispiel wie folgt aus, zunächst für die Partitionierung der Master-Festplatte:

PART   C,0,  0,150,1,4,2048   ; C: mit 150 Spuren ab Spur   0 (20 MB) 
PART D,0,150,300,0,8,4096 ; D: mit 300 Spuren ab Spur 150 (41 MB)
PART E,0,450,282,0,8,4096 ; E: mit 282 Spuren ab Spur 450 (38 MB)

und dann noch für die Partitionierung der Slave-Festplatte:

PART   F,1,  0,180,1,4,2048   ; F: mit 180 Spuren ab Spur   0 (22 MB) 
PART G,1,180,374,0,8,4096 ; G: mit 374 Spuren ab Spur 180 (46 MB)
PART H,1,554,374,0,8,4096 ; H: mit 374 Spuren ab Spur 554 (46 MB)

Die maximalen Zylinderanzahlen wurden eingehalten. Falls hier ein zu großer Wert angegeben wurde, passiert nichts weiter als daß durch einen Arithmetik-Überlauf bei der Assemblierung nur noch der Modulo-Rest über 64 MByte benutzt wird. Zur Kontrolle zeigt der Assemblerlauf aber die Laufwerksgrößen noch einmal an und man kann den Fehler erkennen. Für die Slave-Festplatte habe ich in der ersten Partition F: ebenfalls eine Systemspur angegeben, da ich geplant habe, diese Platte später als Masterplatte einzusetzen und dann dort die Systemspur zum Booten benötige. Bei der Übernahme vorhandener Systeme ist noch wichtig zu wissen, was die bisherigen Angaben BIG=0 und BIG=1 bedeuten.

In der alten Datei OPTION.INC ist das angegeben, hier gab es noch Unterschiede zwischen C: und D:/E:. Wer die alte Datei OPTION.INC nicht mehr findet und auch seine Werte nicht kennt, dem empfehle ich DIMA.COM. Damit bekommt man alle Informationen des aktuell angewählten Laufwerkes angezeigt und kann sich die Werte notieren. Denn nur wenn alle Werte genauso übernommen wurden wie im alten System, kann auf die Dateien fehlerfrei zugegriffen werden!



Bild 5: Clubtreffen 2003: Der Einsatz zweier Festplatten am KC ermöglicht ein bequemes Backup des Inhalts der einen Festplatte auf eine andere. Mit wenigen Kommandos lassen sich große Datenmengen bewegen.

Als letzter Schritt folgt noch die Definition der Diskettenlaufwerke. Hier hat sich nichts geändert. Die Laufwerke A: (RAM-Floppy) und B: (Bootlaufwerk 780K) sind fest vorgegeben und lassen sich nicht ändern. Dann folgen die Festplattenpartitionen entsprechend der Anzahl in HARD. Die restlichen zu erzeugenden Diskettenlaufwerke (entsprechend der Anzahl NDRIVES − − HARD) sind im folgenden Abschnitt zu definieren.

Für jedes Laufwerk sind 5 Parameter anzugeben:

  • der Laufwerksbuchstabe
  • das physische Format (1...9, entsprechend 160 KByte bis 800 KByte laut Tabelle)
  • die Blockgröße (1, 2 oder 4 KByte)
  • die Anzahl der Verzeichniseinträge (64, 128 oder 256)
  • die Anzahl der Systemspuren
  • die verwendete physische Einheit (0...3)

Hier ein paar Beispiele für erprobte Formate:

LAUFW   C,7,2,128,2,0   ; C: 624k, Lw 0 (SCP-Format) 
LAUFW D,9,2,128,0,0 ; D: 800k, Lw 0 (KC-Datenlaufwerk)
LAUFW E,8,2,128,0,1 ; E: 720k, Lw 1 (DOS-Format)
LAUFW   F,9,2,128,2,1   ; F: 780k, Lw 1 (KC-Standard)
LAUFW G,8,4,128,1,1 ; G: 708k, Lw 1 (Vortex)
LAUFW H,9,2,128,2,2 ; H: 780k, Lw 2 (KC-Standard)
LAUFW   I,2,1, 64,3,3   ; I: 185k, Lw 3 (Osborne 1 - SSDD) 
LAUFW J,2,1, 64,0,3 ; J: 200k, Lw 3 (CP/A-200)
LAUFW K,4,2, 64,2,3 ; K: 342k, Lw 3 (Siemens PG-675)
LAUFW L,8,2,256,2,3 ; L: 702k, Lw 3 (Siemens PG-685)
LAUFW M,9,2,192,0,3 ; M: 800k, Lw 3 (KC mit 192 DIR-Einträgen)
LAUFW N,7,2,128,2,3 ; N: 624k, Lw 3 (KC-Standard)
LAUFW O,9,2,128,2,3 ; O: 780k, Lw 3 (KC-Standard)
LAUFW P,9,2,128,2,3 ; P: 780k, Lw 3 (KC-Standard)

Hinweis: Es werden nur die Parameter der tatsächlich benutzten Laufwerke (entsprechend NDRIVES und HARD) ausgewertet. Die restlichen Definitionen müssen zumindest korrekte Werte enthalten, können aber auch gelöscht werden.

Sind diese Einstellungen vorgenommen, braucht man nur noch ein System zu erzeugen, unter der Verwendung von ASM.COM, LINK131.COM und anschließend SYSGEN.COM. Wer die Syntax nicht weiß, tippt zunächst SYSGEN // ein und bekommt eine Hilfeseite angezeigt. SYSGEN hat jetzt die Versionsnummer 1.3 bekommen, so könnte man auch das damit erzeugte ML-DOS mit der Versionsnummer 1.3 bezeichnen. Am fertigen System läßt sich die Versionsnummer allerdings nicht mehr anzeigen, man bekommt beim Bootvorgang aber das Fertigstellungsdatum, hier der 19.01.2003 angezeigt. Alle erforderlichen Dateien sind in MLDOS13.PMA enthalten.

CF-Card am GIDE-Interface

Mit diesem System ist es auch möglich, CF-Cards als Festplatte zu betreiben. Guido Speer hat berichtet, daß er an dem käuflich erworbenen CF-Card-Adapter Änderungen (fehlende Masseverbindungen) vornehmen mußte. Ich habe inzwischen den gleichen Adapter gekauft und er läuft auch ohne Änderungen als Slave mit gestecktem Jumper 2–3.



Bild 6: Clubtreffen 2003: Der Master-Slave-Betrieb am GIDE-Interface ermöglicht auch den parallelen Einsatz alternativer Speichermedien, wie hier eine CompactFlash-Speicherkarte.

Allerdings habe ich es mit verschiedenen Festplatten als Master ausprobiert und festgestellt daß es nicht mit jeder Platte klappt.

Es funktioniert mit:

  • ALPS DR311C
  • CAVIAR WDAC 2120
  • Conner CP30061
  • Seagate ST-157A
  • Quantum Fireball ST1.6A

Es funktioniert nicht mit:

  • Maxtor 7131 AT
  • Conner CP2121

Teilweise gibt es aber auch Probleme zu erkennen, ob eine CF-Card gesteckt ist oder nicht. Die korrekte Erkennung (kein Slave vorhanden) klappt nur mit der ALPS DR311C und der Caviar WDAC 2120. Die Conner CP30061 zeigt Pseudodaten an, die Seagate ST-157A bleibt beim Erkennungstest einfach hängen.

Für eine bessere Funktion wären weitere Tests erforderlich. Vielleicht arbeiten auch nicht alle echten Festplatten korrekt zusammen? Erfahrungen und Problemberichte interessieren mich. Vielleicht kann man ja auch noch etwas an der Erkennungsroutine verbessern.

Also dann viel Erfolg mit ML-DOS 1.3!