Atarium: DOS-Partionierungen für GEMDOS verständlich gemacht

Erste Anzeichen darfür, daß sich das Jahr seinem Ende nähert, sind schon länger nicht mehr zu übersehen: In allen Supermärkten muß man zwischen Tischen mit Lebkuchen, Adventskalendern und Stollen Slalom laufen. Doch spätestens in dem Moment, da die erste Kolumne für das Jahr 1994 geschrieben werden muß (siebter Jahrgang!), wird auch dem Schreiberling klar, daß man ganz allmählich über Weihnachtsgeschenke nachzudenken beginnen muß.

Von ATARI ist in dieser Hinsicht bekanntlich nicht viel zu erwarten: Das größte Geschenk, das uns die Kalifornier machen können, ist ein Gelingen der Jaguar-Einführung. Die ersten Anzeichen waren auf jeden Fall vielversprechend.

Während also ATARIs Entwicklung von TOS-Hardware und -Software fast völlig stagniert, kam wenigstens vom neuen Support-Zentrum von ATARI Benelux ein Lebenszeichen. Der große Briefumschlag enthielt einige Ausgaben der „Entwickler-Newsletter", die deutschen Entwicklern seit Jahr und Tag vorenthalten wurde, sowie eine andere interessante Informationen zu Entwicklerdokumentation und Toolkits (wer wußte schon, daß es ein JPEG-Toolkit für den DSP gibt, das zu allem Überfluß sogar auch noch recht preiswert ist?).

Weiterhin wurde nach monatelangem Tauziehen eine fehlerkorrigierte Fassung von MetaDOS freigegeben (METADS22.ZIP,unter anderem Maus MS2, Maus MTK, der ST-Computer-Redaktions-Mailbox und ftp.uni-muenster.de/pub/atari/Atari). Die neue Version behebt zwei ärgerliche Fehler (Dateilängen konnten nicht richtig ermittelt werden, Schreiben über das Ende eines Speicherblocks beim Laden von Treibern). Nach wie vor sind die Treiber allerdings nur für CD-ROMs am TT-SCSI-Port sowie für das CDAR-504 an ACSI geeignet. Auch Multisession-CDs werden noch nicht unterstützt.

Vom CD-ROM zum Hauptthema dieses Monats überzuleiten ist leicht: es soll um den Datenaustausch mit DOS Rechnern gehen. Die Daten auf einem CD-ROM sind normalerweise nicht in irgendeinem herstellerspezifischen, sondern im ISO9660-Format gespeichert (vgL[1] und [2]). Die Gründe dafür sind nicht politischer' Natur, sondern liegen in den technischen Eigenheiten der CD (große Datenmengen, große Zugriffszeiten). Daher braucht eigentlich jedes Rechnersystem einen speziellen Dateisystemtreiber, um CD-ROMs zu lesen. Beispiele sind Microsofts MSCDEX für DOSen und eben der MetaDOS-Treiber ISOß660F.DOS (wen's interessiert: das F' steht für `final').

Mit dem FAT-Dateisystem ist das 'hauseigene' Massenspeicherformat bei MSDOS und GEMDOS aber ohnehin gleich, anderenfalls könnte man ja nicht so einfach Disketten austauschen, wie man es gemeinhin tut (sofern das Formatierprogramm sich halbwegs intelligent anstellt, aber darüber ist schon genug geschrieben worden). Schauen wir uns also an, wo die Gemeinsamkeiten liegen, welche Unterschiede bestehen und wie man diese eventuell überwinden kann.

Solange ein FAT-Dateisystem sich in den ursprünglich vorgesehenen Grenzen bewegt (maximal 32766 Cluster bzw. 65535 Sektoren zu 5 12 Bytes), gibt es in der Tat kaum Probleme. Damit wären schon mal 32 Megabyte große Datenträger austauschbar. Dochschon hier steckt der Teufel im Detail: laut Dokumentation verkraftet GEMDOS nur zwei Sektoren pro Cluster (und seit GEMDOS 0.20; also TOS 2.06/3.06 auch einen Sektor pro Cluster). MS-DOS legt Acht Partitionen jedoch mit vier Sektoren pro Cluster an. Damit scheint auch GEMDOS meist klarzukommen, doch dafür garantieren werd wohl keiner.

So richtig knifflig wird es allerdings bei größeren Dateisystemen, da ATARI und Microsoft verschiedene Lösungswege eingeschlagen haben.

Auf dem ATARI sieht es so aus: Seit AHDI/HDX-Version 3.0 werden dem GEMDOS gegebenenfalls einfach größere Sektoren vorgespiegelt. So initialisierte Festplattenp artitionen tragen die Kennung BGM, damit sie nicht versehentlich von älteren Festplattentreibern angesprochen werden. Dieser Trick hat den riesigen Vorteil, daß er auch mit allen alten GEMDOS-Versionen (von TurboDOS abgesehen) funktioniert. Microsoft hat dagegen zwei andere Beschränkungen gelockert. So können ab DOS 3.11 fast 65536 Cluster benutzt werden (die Cluster-Nummern ab 0x8000 sind nicht mehr reserviert). Zusätzlich wird die Anzahl der Sektoren pro Cluster auf höhere Werte gesetzt. Dabei entstehen natürlich Sektornummern, die sich nicht mehr als 16-BitZahl darstellen lassen. In den Boot-Sektoren solcher Dateisysteme ist daher als Sektornummer 0 eingetragen, und die wirkliche' Sektorzahl steht als 32-Bit-Zahl an anderer Stelle. Um diese neuen' Dateisysteme vor alten DOS-Versionen zu schützen, tragen sie - Überraschung - eine andere Partitionskennung.

Mithin ein klarer Fall von `tja': mehr als 32 Megabyte bekommt man nicht so hin, daß sowohl GEMDOS als auch MS-DOS glücklich sind. Abhilfe können da nur neue GEMDOS-Versionen schaffen; aber bekanntlich ist ja bei ATARI Sunnyvale in dieser Hinsicht im Moment nichts los.

Nun sind ja auch 32 Megabyte schon eine ganze Menge (es sei denn, man ist gerade mit elektronischer Bildbearbeitung oder Harddisk-Recording beschäftigt). Für große Dateisysteme kommen sowieso eigentlich nur Fest- und Wechselplatten in Frage, und die können ja normalerweise mehrere Partitionen - also mehrmals 32 Megabyte - fassen.

typedef struct {
 byte m_flg;
 byte m_ahead, m_ssec, m_scyl;
 byte m_id;
 byte m_ehead, m_esec, m_ecyl;
 byte m_st[4]; /* Intel-Format! */
 byte m_siz[4]; /* Intel-Format! */
} DOSPENTRY;
typedef atruct
 char reserved[0x1be];
 DOSPENTRY part[4];
 uword sig; /* 0x55aa */
} DOSROOTSEC;

Abbildung 1: Aufbau eines DOS-Root-Sektors

Doch damit sind wir schon bei der nächsten Hürde angelangt: Die Inhalte der Partitionen sind zwar (relativ) kompatibel, doch das eigentliche Partitionsformat nicht. Das (erweiterte) ATARI-Partitionsformat ist ja gut dokumentiert (lebe etwa [3] oder [4]), doch wie sieht es mit DOS aus?

Ähnlich. Abbildung 1 zeigt die Datenstrukturen, aus denen ein DOS-Root-Setor aufgebaut ist.Genau wie beim ATARI gibt es vier Einträge (DOSPENTRY) für Partirionsdaten. Jeder von ihnen enthält ein Bootflag(m_flg), eine Typangabe(m_id), Anfangs- und Endposition in Kopf-, Sektor-, Zylinder-Notation, die absolute Startadresse (m st) sowie die Länge (m_siz).

Wozu die merkwürdige Darstellung in Kopf-, Sektor- und Zylindernummer gebraucht wird, ist für den ATARI Benutzer zunächst kaum einzusehen. Man muß einfach wissen, daß auf dem PC das BIOS nicht über absolute Sektornummern, sondern eben über diese Geometrieangaben auf Platten zugreift. Wie wir noch sehen werden, hat das weitreichende Auswirkungen.

Glücklicherweise enthalten die Einträge aber auch normale' Sektornummern und Längenangaben, so daß es für einen Festplattentreiber recht einfach .ist, auch diese Root-Sektoren zu verstehen. Zusätzlich muß man noch wissen, daß der Partitionstyp 1 für 12-Bit-FAT-Dateisysteme,4 für 16-Bit-FAT-Dateisysteme und 6 für die neuen großen' Dateisysteme steht. Und tatsächlich kommen viele Festplattentreiber (AHD1 ab 3.00, HuSHIab 3.OO,ICD,CBHD,HDDRIVER und vermutlich noch einige andere) mit solchen Root-Sektoren zurecht. Damit kann man also Fest- und Wechselplatten bis 128 MB (viermal 3 2 MB ) schon mal so einrichten,daßsie auf DOS Rechnern und ATARIs benutzbar sind.

Mehr als vier Partitionen

Genau wie auf dem ATARI waren aber auch DOS-Benutzer nicht lange mit vier Partitionen zufrieden. Unter DOS wurden daherdie `extended partitions' eingeführt (Typ 5), die tatsächlich bis ins Detail genauso wie die XGM Partitionen auf dem ATARI funktionieren (sie stellen im Prinzip eine verkettete Liste zusätzlicher Root-Sektoren her). Wer also schon immer wissen wollte, wie ATARI auf dieses merkwürdige Format gekommen ist: hier ist die Erklärung. Bleibt zu erwähnen, daß die angesprochenen Festplattentreiber natürlich auch mit diesen erweiterten DOSPartitionen arbeiten können.

Nehmen wir als ganz konkretes Beispiel den Austausch von 88MB-Wechselplatten: Man partitioniere unter DOS mit fdisk in drei Partitionen mit jeweils weniger als 32 Megabyte, reboote und richte mit format auf jeder dieser Partitionen ein DOS-Dateisystem ein. Von dem schon oben erwähnten Schönheitsfehler abgesehen (vier Sektoren pro Cluster anstelle von zwei), hat man damit einen auf beiden Systemen benutzbaren Datenträger.

Doch was tun, wenn man in dem Moment, wo die Cartridge eingerichtet werden soll, keinen Zugriff auf einen DOS Rechner mit SCSI-Controller hat? Ganz einfach, man braucht ein Programm auf dem ATARI, das DOS-kompatibel partitionieren kann.

Köpfe, Sektoren und Zylinder

Was zunächst recht einfach klingt, stellt sich nach genauer Untersuchung der Rahmenbedingungen auf dem PC als ernsthaftes Problem heraus: Im Gegensatz zum Plattentreiber auf dem ATARI ist nämlich DOS auf korrekte Angaben in den Kopf-, Sektor- und Zylinderfeldern angewiesen. Schlimmer noch: Partitionen müssen immer auf Zylindergrenzen beginnen.

Das wäre noch kein Beinbruch, würde die Methode von Köpfen', Sektoren' und Zylindern' heutzutage überhaupt noch angewandt. Moderne Platten benutzen statt dessen normalerweise Zone Recording' (auf die äußeren Spuren passen mehr Sektoren). BeiIDE-und SCSI-Platten sind die zurückgelieferten Werte nur eine vorgespiegelte' Geometrie, und manche SCSI-Platten machen sich erst gar nicht die Mühe (und liefern Null für unbekannt').

SCSI-Controller am PC ignorieren daher die Angaben der Platte und spiegeln dem PC-BIOS einfach eine feste Geometrie vor. Der weitverbreitete Adaptec-Controller wählt beispielsweise normalerweise 64 Sektoren pro Spur und 32 Köpfe (macht genau ein Megabyte pro Zylinder).

Womit wir beim Problem angelangt wären: Unterschiedliche PC-SCSI-Controller benutzen unterschiedliche Werte, und daher sind die Wechselplatten noch nicht einmal zwischen verschiedenen DOS-Rechnern austauschbar, wenn sie nichtzufällig über kompatible SCSI-Controller verfügen.

Beim Partitionieren auf dem ATARI muß man daher gezwungenermaßen vorher wissen, was für ein SCSI-Host Adapter auf dem Ziel-PC benutzt wird. In SCSI-Tool - meines Wissens das einzige Programm auf dem ATARI, das DOS-kompatibel partitionieren kann - wird dies beispielsweise in einem speziellen Dialog eingestellt (siehe Abbildungen 2a und 2b, nähere Informationen zu SCSI-Tool findet man in [5]).

MiNT 1.09, Betatest-Version für Programmierer
mint108s.zoo (301949 Bytes) Sourcecode der Betatest-Version von MiNT 1.08;geeignet für GNU-CC und Pure-C
diff1819.zoo (4780 Bytes) Diff-Datei, um von Version 1,08 nach 1.09 zu kommen (benötigt 'patch,ttp')
MiNT-Libraries (Patchlevel 39, mit viel interessantem Beispielcode):
mntinc39.zoo (115021 Bytes) Headerfiles
mntlib39.zoo (436048 Bytes) Die C-Quelltexte (zum Übersetzen wird GCC oder PureC sowie wg. langer Dateinamen das Minix-Dateisystem unter MiNT benötigt)
Diese Dateien sollten in jeder besser sortierten Mailbox zu finden sein. Leser mit Internet-Zugang können die Dateien u.a. auch auf den ftp-Servern atari.archive.umich.edu und ftp.uni-muenster.de im Verzeichnis atari/Mint bzw. atari/MintlLibfinden.Selbst verständlich kann es sein, daß bis zum Erscheinungstermin eine neue MiNT Version oder neue Libraries(Patchlevel>= 40) verfügbar sind.

Wechselmedium als Diskette

Nun ist eine Partitionierung gar nicht so zwingend, wie mancher denkt. Solange keine technischen Gründe gegen große Dateisysteme sprechen, gibt es eigentlich keinen Grund, auf die Partitionierung ganz zu verzichten und das ganze Medium wie eine Diskette zu benutzen. Die Firma 'Insite' sieht dies auch tatsächlich als Standardformat für die Floptical-Medien (20-MB-Disketten vor). Und unter OS/2 2.1 (zumindest in der ausgelieferten Version mit den Standardtreibern) können Syquest-Wechselmedien sowieso nur als große Disketten betrieben werden (keine Partitionierung, kein HPFS).

Für solche Fälle benötigt man einen Festplattentreiber, der auch solche Medien richtig erkennt und nach Möglichkeit einbindet. Grundsätzlich sollte dazujeder geeignet sein, der von sich behauptet, Flopticals korrekt zu unterstützen. Mit SCSI-Tool ist es beispielsweise möglich, eine Syquest-Cartridge wie eine 32 MB große Diskette zu behandeln. Damit verschenkt man zwar einen Teil des Platzes, aber immerhin kann man so überhaupt Daten mit einem OS/2-Rechner austauschen.

Abschließend sei noch erwähnt, daß die Lage auf dem Apple Macintosh ähnlich aussieht, nur daß dort schon zum Lesen von DOS-Dateisystemen spezielle Treiber benötigt werden (die dann allerdings nicht die Einschränkungen von GEMDOS haben). Auch für den Mac gibt es Programme, die DOS-kompatibel partitionieren, so daß man auf diesem Weg auch mit Macs Daten austauschen können müßte.

MiNT-News

Soviel zu diesem Themenkreis. Nun noch ein Hinweis zur MiNT-Library: Diese ist mittlerweile im Patchlevel 39 verfügbar und an den bekannten Orten erhältlich (siehe Abbildung 3).

_Bis zum nächsten Monat!
Julian F. Reschke _

Literatur:
[1] Julian F. Reschke: „Ausgerechnet MetaDOS!", ST-Magazin 7/1993, Seite 90
[2] Julian F. Reschke: „Ausgerechnet MetaDOS!", ST-Magazin 8/1993, Seite 45
[3] Jankowski/Rabich/Reschke: „ATARI Profibuch ST-STE-77", 12.Auflage, Sybex Düsseldorf 1992, ISBN 3-88745-888-5
[4] ATARI Corporation: „AHDI 3.00 Release Notes", Mai 1989
[5] „Festplattentreiber what you drive is what you get", ST-Computer 11/1993, Seite 32


Julian F. Reschke
Aus: ST-Computer 01 / 1994, Seite 95

Links

Copyright-Bestimmungen: siehe Über diese Seite