TOS 2.06 - Nachrüstung für jedermann

TOS-Erweiterungskarten gibt es mittlerweile haufenweise. Der Grund, warum wir nun auch noch mit einem Bastelprojekt in diese Kerbe schlagen wollen, liegt in der pfiffigen und einfachen Realisierung einer TOS-Erweiterung mit nur einem GAL.

Mit Erscheinen der Mega-STE-Serie wurde wieder einmal das Betriebssystem für den ATARI ST entscheidend verbessert. Die Icons von Dateien (Programmen) kann man einfach auf dem Desktop ablegen und von dort ohne lästiges Suchen direkt öffnen. Die Anzahl der verfügbaren Icons ist gestiegen, und wem die mitgelieferten nicht ausreichen, der kann sich mit Hilfe des Resource Construction Sets beliebige neue Icons erstellen. Die Funktionstasten hat das Betriebssystem nun auch kennengelernt. Mit ihrer Hilfe können bis zu 20 Programme direkt gestartet werden. Die einzelnen Menüpunkte des Desktops können jetzt auch mit vom Anwender editierbaren Tastaturbefehlen schnell aufgerufen werden. Die Anzahl der gleichzeitig öffenbaren Fenster ist von vier auf sieben gestiegen. Als weitere wichtige Funktion ist das Durchsuchen eines Laufwerks nach Dateien, welche mit Hilfe von Wildcards spezifiziert werden können, im Desktop implementiert worden. Diese Funktion lernt man als Besitzer einer Festplatte besonders zu schätzen. Wird beim Booten die Control-Taste gedrückt gehalten, werden die Programme im Autoordner nicht ausgeführt, keine Accessories geladen und die Desktop-Konfigurierungsdatei „DESK-TOP.INF“, welche ab TOS 2.05 „NEW-DESK.INF“ heißt, ignoriert. Stürzt der Rechner aufgrund eines Defekts in einem automatisch startenden Programm oder eines Fehlers in der Desktop-Info Datei beim Booten von Festplatte ab, kann man damit die Ausführung verhindern und sicher starten. Bisher gab es auch schon komfortable Festplattentreiber wie den „CBHD“ aus dem Buch „Scheibenkleister - Massenspeicher am ATARI ST“ von Claus Brod, mit welchem man in einem solchen Fall durch einfachen Tastendruck von einer/m beliebigen Partition oder Laufwerk bootete. Auch das Nachladen einer Desktop-Info-Datei ist ab jetzt ohne neues Booten möglich, dadurch kann man sein Desktop immer nach der Anwendung, die man gerade bearbeiten möchte, z.B. Textverarbeitung oder Programmentwicklungsumgebung, konfigurieren.

Neuer Adreßraum

Da sich der ROM-Adreßbereich für TOS V. 1.0 bis V. 1.4 von $ FC 00 00 bis $FE FF FF erstreckte, war eine maximale Betriebssystemgröße von 192 KB möglich. TOS 2.05 aus der Mega-STE-Serie wurde aufgrund der neuen Funktionen und geänderten Hardware (z.B. Stereo-Sound, neuer Video-Controller) 256 KB groß. ATARI mußte deshalb den Betriebssystembereich erweitern. Eine Erweiterung auf $FC 00 00 bis $FF FF FF schied aus, da in dem zusätzlich benötigten Bereich die Register der Uhr, des Video-Controllers, der MMU usw. liegen. Man entschied sich also den Speicherbereich nach $E0 00 00 bis $E3 FF FF zu verschieben. Die geänderte Hardware im STE unterstützt den Zugriff auf den neuen Speicherbereich, so daß man nur die Ansteuerung des neuen Speicherbereichs im normalen ST zu implementieren bräuchte, um auch dort das neue Betriebssystem zur Verfügung zu haben, wenn nicht die fehlende Zusatz-Hardware der STE-Serie zu einem Betriebssystemfehler führen würde.

Mit Erscheinen des neuen TOS 2.06 wurde auch dieses Problem behoben. Das Betriebssystem erkennt während der Systeminitialisierung, auf welchem Rechnertyp es läuft und spricht fortan nur noch die Systemkomponenten an, die auf dem jeweiligen System wirklich vorhanden sind. Jetzt benötigt man nur noch eine Ansteuerschaltung, die bei einem lesenden Speicherzugriff auf den Bereich $E0 00 00 bis $E3 FF FF das DTACK-Signal (DaTa ACKnowledge/Datenquittierung) für die CPU erzeugt. Dies wurde im Rahmen dieses Projektes mit Hilfe eines GALs in nur einem Baustein realisiert.

Wie läuft’s?

Der asynchrone Lesezugriff auf eine Speicherstelle des 68000ers wird anhand von Diagramm 1 erläutert. Zuerst sind die Daten auf dem Adreßbus ungültig. Danach wird die Adresse auf den Adreßbus gelegt. Sobald diese einen stabilen Pegel haben, wird die RAV-Leitung mit einem High-Pegel auf Lesen oder mit einem Low-Pegel auf Schreiben eingestellt. Gleichzeitig wird die auf den Adreßleitungen anliegende Adresse mit Hilfe des AS-Signals (Adress Strobe) als gültig gekennzeichnet. Das Decoder-GAL wertet jetzt die Adreßleitungen Al8 - A23 aus und aktiviert bei einem lesenden Zugriff auf den Bereich $E0 00 00 bis $E3 FF FF das C£-Signal der neuen Speicherbausteine. Gleichzeitig wird der CPU mit einem Low-Pegel auf der DTACK-Leitung angezeigt, daß die Daten auf dem Datenbus gültig sind. Ob ein Zugriff auf das Low- oder High-Byte erfolgt, wird mit Hilfe der Signale LDS (Lower Data Strobe) und UDS (Upper Data Strobe) angezeigt. Nachdem der Prozessor die Daten übernommen hat, werden das AS, UDS und LDS wieder auf High gesetzt, gleichzeitig wird das GAL am DTACK-Ausgang (Tri-State-Ausgang) wieder hochohmig. Da der DTACK-Ausgang des GALs nur einen Low-Pegel annehmen oder hochohmig sein kann, ist sein Eingang fest auf Masse gelegt.

Die Reset-Phase

Beim Einschalten des Rechners oder nach einem Reset erwartet die 68000-CPU bei Adresse $0 den Anfangswert für den Supervisor-Stackpointer und in Adresse $4 einen Pointer auf die Adresse des ersten auszuführenden Befehls (ProgramCounter). Da der RAM-Speicher beim Ausschalten jedoch gelöscht wird, handelt es sich bei den ersten 8 Bytes ab Adresse $0 nicht um RAM, sondern um die ersten 8 Bytes des ROMs ab Adresse $FC 00 00, welche die MMU durch entsprechende Adressendekodierung an den Anfang des RAM-Bereiches spiegelt. Bei Rechnern mit TOS V2.06 müssen aber nicht die ersten 8 Bytes ab Adresse $FC 00 00, sondern ab Adresse $E0 00 00 an den Anfang des RAM-Bereiches gespiegelt werden. Dazu wird das CE der alten Bausteine an das GAL angeschlossen, und sobald ein Zugriff auf den alten ROM-Bereich erfolgt, auf die neuen ROMs zugegriffen. Der Speicherbereich von $FC 00 00 bis $FE FF FF ist also identisch mit dem Bereich von $E0 00 00 bis $E2 FF FF. Der Datensatz zum Decoder-GAL ist in Listing 1 angegeben. Die Anschlußbelegung wurde so gewählt, daß man das GAL mit den Füßchen nach oben, um die Kurzschlußgefahr zu verringern, direkt neben der CPU befestigen kann.

Die ursprüngliche ROM-Bestückung bestand für TOS 1.0 (1985) aus sechs 256 KBit-Bausteinen, wobei jeweils zwei Chips ein Daten wort für den 16 Bit breiten Datenbus des 68000er bilden. Diese sind in ein High-Byte, welches über UDS (Upper Data Strobe), und ein Low-Byte, welches über LDS (Lower Data Strobe) angesprochen wird, aufgeteilt. Mit Einführung des TOS 1.02 (1987) wurden die ausgelieferten Rechner nur noch mit zwei Mega-bit-ROMs ausgeliefert. Es gab aber parallel für Besitzer älterer Rechner TOS 1.02 in sechs Stück 256-KBit-ROMs nachzukaufen. Dies gilt analog auch fürTOS 1.04 von 1989. Bei Rechnern mit 256-KBit-ROMs, welche zur 27256-EPROM-Serie pinkompatibel sind, benötigt man zum Einbau des 2.06er-TOS einen Adaptersockel, wie in Bild 1 angegeben. Die Adreßleitungen A16 und A17 müssen direkt von der CPU geholt werden, der CE_in- Anschluß des GALs muß in den Sockel von HI0 (520ST/M, 260ST: U4, 1040STF/M: U63, Mega ST: U9) oder LOO (520ST/M, 260ST: U7, 1040STF/M: U67, Mega ST: U10) PIN 20 gesteckt werden.

Adapter-Sockel

Bei Rechnern mit nur zwei Megabit-ROMs, die 256 KB Daten fassen, wurden nur 192 KB angesprochen. Durch Weglassen der PINs für die Programmierspannung, des Programmier-Pins, eines unbelegten sowie des Output-Enable (OE)-PINs schaffte es ATARI, den Megabit-ROM im 28poligen DIL-Gehäuse unterzubringen. Die Bausteine für TOS 2.06 sind PIN- und funktionskompatibel zu EPROMs der Typen 27C1024/27C1001 /27C010 mit 32 PINs, deshalb benötigt man auch bei Rechnern mit Megabit-ROMs einen Adaptersockel. Diesmal jedoch nach Bild 2. Es müssen jedoch keine Signale mehr mit der CPU verbunden werden. Es müssen nur noch das alte CE an das GAL herangeführt und das neue CE mit den neuen ROMs verbunden werden. Auch hier braucht man wieder einen Adaptersockel, wie in Bild 2 gezeigt, da die ATARI-ROMs nur 28polig sind.

Ist man in der glücklichen Lage, einen ST zu besitzen, der mit 2 Megabit-ROMs und trotzdem noch mit 6 Betriebssystemplätzen ausgestattet ist, kann man die alten Bausteine in ihren Fassungen lassen und nur das CE-Signal auftrennen. Durch Einsetzen der neuen ROMs (unter Benutzung der Adaptersockel nach Bild 2) in einen der jeweils zwei freien Steckplätze für High- und Low-Byte und Benutzung des Decoder-GALs nach Listing 2 hat man das alte und neue Betriebssystem zum Umschalten. Das CE_out des GALs muß an die alten und das CE an die neuen ROMs gelegt werden. CE_in muß wie vorher in einen der alten Sockel gesteckt werden. Bei einem Low-Pegel an SEL hat man nun das neue TOS 2.06 und bei High-Pegel das alte TOS zur Verfügung. Nach einem Umschalten des Betriebssystems muß selbstverständlich die Reset-Taste gedrückt werden.

Das GAL nach Listing 2 ist anschluß- und funktionskompatibel zum GAL nach Listing 1, wenn man den SEL-Anschluß auf Masse legt. Fertigprogrammierte GALs nach Listing 2 können für DM 20 per V-Scheck beim Autor bezogen werden.

Diese Schaltung wurde bereits auf einem 260 ST und 520 STM erfolgreich eingesetzt. Da die Bauhöhe mit dem Adaptersockel zunimmt, wurde dort der Baustein mit dem High-Byte in den Sockel U4 und mit dem Low-Byte in U5 eingesetzt. Die Zugriffszeit für das GAL16V8 kann bis zu 25ns betragen. Die Zugriffszeit für die ROMs darf 200ns nicht überschreiten. Vorsicht ist bei Rechnern mit IMP-Chipsatz geboten. Diese sind am Aufdruck IMP auf den ATARI-Customchips zu erkennen. Ein Mega ST 1 mit lMP-Chip ließ sich weder mit dem vorgestellten Anpassungs-GAL noch mit einer handelsüblichen Extension-Card Umrüsten. Wahrscheinlich erzeugt die GLUE beim Zugriff auf den bisher nicht benutzten Speicherbereich von $E0 00 00 bi s $E3 FF FF einen Bus-Error. Sollte jemand dieses Problem losen, so wäre der Autor für eine Nachricht dankbar.

Bezugsquelle für fertige GALs:

Willi Stüber
Kurt-Schumacherstraße 42
W-6750 Kaiserslautern

Das Timing-Diagramm der Datenübergabe
Bild 2: Anschlußbelegung der PROMs
Die Schaltung der TOS-Ansteuerung

Willi Stüber
Aus: ST-Computer 01 / 1993, Seite 98

Links

Copyright-Bestimmungen: siehe Über diese Seite