Was die »TOS 1.4 Release Notes« verraten
Die Düsseldorfer Messe hat ja bekanntlicherweise nicht nur an der Hardware-Front einige Neuigkeiten gebracht. Mit der endgültigen Freigabe des »Rainbow TOS« und dem Erscheinen des offiziellen Festplattentreibers AHDI 3.01 ist auch bei der Systemsoftware wieder einiges aufzuarbeiten.
Zunächst hat Atari endlich das Format der Physical-Unit-Struktur offiziell dokumentiert. Die in C formulierte Struktur finden Sie im Listing. Diese Struktur wird vom AHDI gesetzt, wobei der Zeiger auf die Struktur in der Systemvariablen $516 liegt. Bevor Sie auf die Informationen in der PUN_INFO-Struktur zugreifen, müssen Sie zunächst überprüfen, ob auch eine korrekte Struktur vorhanden ist. Denn bislang setzte ausschließlich AHDI 3.01 eine solche Struktur. Dafür hat Atari gleich eine Reihe Absicherungen vorgesehen: Zunächst gibt es einen »Magic cookie«, in dem der Wert $41484449 (»AHDI«) stehen muß. Im darauffolgenden Langwort muß zusätzlich ein Zeiger auf den »cookie« weisen. Und schließlich gibt es noch einen Eintrag für die Treiberversion - so kann Atari später die Struktur problemlos erweitern. Eine C-Funktion, die all dies überprüft, finden Sie im abgedruckten Listing.
Was kann man nun mit den Informationen in dieser Struktur anfangen? Zunächst finden Sie in »puns« die Anzahl der vom Hard-Disk-Treiber gefundenen Festplatten. In »pun« finden Sie zu jedem logischen Laufwerk die entsprechende ACSI-Gerätenummer. Dabei bedeutet der Wert $FF, daß sich der Festplattentreiber für dieses Gerät nicht zuständig fühlt. Man darf darauf gespannt sein, wie der AHDI auf dem TT zwischen Festplatten am ACSI-Bus und am SCSI-Bus unterscheidet... In »part_start« finden Sie für jede Partition den Startsektor auf der Platte. »p_max_sector« beschreibt schließlich die größte auftretbare Blockgröße für BIOS-Sektoren. Da es auch Wechselplatten gibt, reicht es eben nicht, mit »Getbpb()« die Sektorgrößen auf allen Geräten abzufragen - daher wohl auch der ungewohnte Aufwand, den Atari hier getrieben hat.
Noch ein Wort zur Versionsprüfung: Obwohl im »Cookie« die Zeichenkette »AHDI« steht, muß der installierte Festplattentreiber nicht unbedingt von Atari sein. Ist der Cookie richtig gesetzt und »p_version« größer oder gleich $300, so ist das folgendermaßen zu interpretieren: Die Informationen in der PUN_INFO-Struktur sind gültig und der installierte Treiber ist auf BIOS-Ebene voll kompatibel zu AHDI 3.00.
So mancher wird sich schon getagt haben, was denn die oberen 15 Bit in der ROM-Header-Variablen »os_palmode« (Offset $1C ab sys_base) zu bedeuten haben. Atari hat die Gelegenheit der TOS-Release-Notes am Schopf gegriffen und endlich beschrieben, was es damit auf sich hat: Die Variable heißt jetzt »os_conf« und enthält in den oberen 15 Bit eine Länderkennung für das eingebaute Betriebssystem. Damit fragen Sie endlich in eigenen Programmen sauber ab, welche Landessprache, welches Datums- und welches Währungsformat aktuell ist. Eine Liste der Landeskennungen finden Sie im Textkasten. Auch wenn Sie noch nicht das TOS 1.4 besitzen, können Sie diese Angabe nutzen, denn die Länderkennung funktioniert schon ab TOS 1.0. Da einige Programme es für nötig halten, die Systemvariable »_sysbase« auf eine Tabelle im RAM umzubiegen, sollten Sie mit Hilfe von »os_beg« (Offset 8 in der Tabelle) zunächst den tatsächlichen ROM-Header finden. Zur Erinnerung: Es war schon immer dokumentiert, daß das Betriebssystem nicht unbedingt bei $FC0000 anfängt. Beim TOS 1.6 im STE und bei TOS 3.0 im TT ist der Fall nun auch tatsächlich eingetreten.
Land | Kürzel | Nummer |
---|---|---|
U.S.A | USA | 0 |
Deutschland | FRG | 1 |
Frankreich | FRA | 2 |
Großbritannien | UK | 3 |
Spanien | SPA | 4 |
Italien | ITA | 5 |
Schweden | SWE | 6 |
franz. Schweiz | SWF | 7 |
deutsche Schweiz | SWG | 8 |
Türkei | TUR | 9 |
Finnland | FIN | 10 |
Norwegen | NOR | 11 |
Dänemark | DEN | 12 |
Saudi-Arabien | SAU | 13 |
Niederlande | HOL | 14 |
Wärmstens empfohlen sei an dieser Stelle das GEM-Buch von Dieter und Jürgen Geiß (vom Hüthig-Verlag): Die beiden durch die ST-Version von Adimens bekannten Programmierer haben all ihr Wissen über GEM zusammengetragen und dabei auch GEM-Versionen auf anderen Computern nicht aus den Augen verloren. Als Beispielprogramm finden Sie im Buch das GEM-Clipboard-Accessory: Es stellt Metafiles, Images und Texte in Fenstern dar, benutzt die Message-Pipe, verlegt Drop-Down-Menüs in Fenster und vieles mehr.
(ba)
Listing: Das Format der PUN_INFO-Struktur und wie Sie diese bekommen: pun_info.c
Und zum Abschluß noch einige Nachbemerkungen zu unseren Programmiertricks in der Oktober-Ausgabe [1], denn leider hatten sich einige kleine Unkorrektheiten eingeschlichen:
In Tip 16 behaupteten wir, daß es reicht, bei TOS Aufrufen die Register d0, dl, a0 und a1 zu retten. Das mag funktionieren, Atari hat aber dokumentiert, daß auch a2 und d2 verändert werden könnten: »Registers d0-d2 and a0-a2 can be modified...« [2]. Also gehen Sie sicher und retten auch d2 und a2.
Tip 29 rät dazu, die Line-A Routinen statt der VDI-Funktionen zu benutzen. Mal davon abgesehen, daß die Line ARoutinen das Zeichnen von Kreisen etc. nicht unterstützen: Die Line-A Funktionen werden laut Atari auf künftigen Grafikkarten und auch schon im TT nicht mehr unterstützt. Wer portabel sein will, läßt also seine Finger von den Line-A Funktionen.
In Tip 48 rieten wir Ihnen, alle Interrupts zu sperren, um optimale Geschwindigkeit zu erhalten. Der Geschwindigkeitsgewinn ist allerdings geringfügig, so daß sich diese Methode nur in besonders zeitkritischen Programmteilen eignet.
Im Textkasten finden Sie die allerneueste XBRA-Liste, die gerade nach der Atari-Messe deutlich gewachsen ist. Sollten Sie ebenfalls ein vektorverbiegendes Programm entwickelt haben, zögern Sie nicht, und informieren Sie uns. Wenden Sie sich in diesem Fall an die im Textkasten aufgeführte Adresse.
(ba)
Quellennachweis:
[1] »50 Programmiertricks«, ST Magazin 10/1989, Seite 20
[2] »Atari GEMDOS Reference Manual«
[3] Dieter und Jürgen Geiß, »Vom Anfänger zum GEM-Profi«, ISBN 3-7785-1792-9, Hüthig Buch Verlag GmbH .
XBRA-ID | Autor, Programm |
AMC1 | T A. Beißner, Software zur Monitor-Switchbox von Hard&Soft |
AMC2 | A. Beißner, Treibersoftware zum XT-Tastatur interface von Hard&Soft |
AVOJ | O. Joppich, Anti-Virus-Programm |
BIGS | J. Reschke, BigScreen, Ganzseitenemulation, ST Magazin 11/1988 |
CB2K | C. Brod, Patch zur Behebung des »2KB-GEMDOS Bugs« |
CBCE | C. Brod, modifizierter Critical-Error-Handler |
CBHD | C. Brod, Harddisktreiber |
CBHY | C. Brod, Tastaturtreiber in »Hyperformat« |
CBIT | G. Sawade, c't Bus-Interface-Treiber |
CISY | I. Ciechowski, CISYSTEM (Ciechowsky Computer Innovations) |
CLK1 | D. Jankowski, Utility für MEGA-ST Hardwareuhr |
COLO | M. Schneider, »Colos« (Mono- >Color-Converter; Vertrieb ASH) |
CRAC | Protar, Protar-Festplattentreiber DPRS W. Cordes, Druckerbuffer (PD) |
ETM | M. Nick, Entmauser |
FLXD | A. Esser, Flexdisk (in Vorbereitung befindliche Version) |
GNUC | E. Röder, GNU-CC-Libraries |
HABO | J. Reschke, HaBoo 1.8, Harddiskcache (erstmals veröffentlicht in ST-Magazin 6/1988) |
_HD_ | U. Seimet, HDDRIVER (im Lieferumfang des CCD Tools Diskus«) ' |
HDJR | Hard & Soft, Hard & Soft Harddisk-Interface |
HMOC | A. Alich, Object-Cache für Hänisch-Modul« |
IDSK | S. Becker, ICON-Desk (aus ST-Digital) |
IMAC | W. Cordes, Bootsektor-Wächter (PD) |
JSHD | J. Stessun, Hyper-Density Kontrollprogramm (ST Computer 7/1989) |
KbEv | M. Seyfried, Keyboard-Handling-Modul für MM2 |
KIM | J. Reschke, Keyboard Interrupt Manager |
LPCD | L. Prüßner, Carrier-Detector |
LPJM | L. Prüßner, Joy-Mouse (ST-Magazin 7/89) |
MM2_ | T Tempelmann, Megamax Modula 2 |
MAST | Naumann&Röder, Master (ab V5.6) |
MJAF | M. Jahr, AUTOFONT |
MUPF | G. Steffens, - Mupfel« (Unix-Shell) |
N203 | N. Kruysbergen, Multipurpose Accessory |
OVER | B. Gebauer, Treiber zum Hyperscreen/Overscan Umbau |
PROT | M. Schneider, »Protos« (Screen-Utility; Vertrieb ASH) |
PRTR | Protar, Protar Wechselplattentreiber |
QIKM | G. Steffens, QuickMouse, überarbeitete Version des Mausbeschleunigers aus der c't |
QMAC | W: Cordes, Quickmaustreiber-Acc (PD) |
QMCP | W. Cordes, Quickmaustreiber in CHEMPLOT |
RING | J. Reschke, Telefonklingel-Detektor |
ROTS | T Fürhölter, Rotate |
SBKM | S. Brück, RING-Erkennung in Modem-Routinen |
SBTE | S. Brück, Terminalprogramm |
SBTS | S. Brück, Trap-Spy |
SCAH | J. Reschke, Speed Cache (Hard & Soft) |
SCRS | U. Thürmann, Bildschirmschoner |
SELC | M. Haydn, File-Selector von C-Lab |
SENV | A. Groß, Environment-Setter |
SMon | K. Isakovic, System-Monitor |
SNAP | K. Hinsen, That's-Snap-Accessory |
SPEX | S. Eissing, Steve's Printing Exzessory V1.3 (erstmals veröffentlicht in ST-Magazin 4/1988) |
TMon | T Tempelmann, Tempelmon |
TSEN | J. Kriege, TSE-NET (Netzwerk von Inotec) |
TWFS | K. Hinsen, That's-Write-File-Selector-Accessory |
UKBl | U. Koloska, Fastload |
UKB3 | U. Koloska, Fastload & Midi-Through |
Vsco | A. Griesert, Virusscope (Maxon PD-Disk 227) |
VSTM | F. Frentzen, Transfer (über MIDI, PD) |
WINZ | C. Brod, WINZ-RAM-Disk (aus dem Buch »Scheibenkleister«) |
XKBD | A. Esser, Extended Keyboard, aktuelle Version |