Die Hardware des Atari

Hauptkategorie: 8-Bitter
Erstellt: 28 November 2011
Zugriffe: 2197

Es erstaunt nicht weiter, daß beim Atari 600XL/800XL neben der allgemein guten Konzeption auch die Hardware einen recht aufgeräumten und durchdachten Eindruck macht, wobei klar sein dürfte, daß in dieser Preisklasse nicht jedem alles recht gemacht werden kann.

Einen Großteil der Strukturierung der Baugruppen wird im 600XL/800XL, wie schon in den alten 400/800-er Modellen, von den hochintegrierten Spezialbausteinen ANTIC, POKEY und GTIA, in Verbindung mit den Standardbausteinen CPU und PIA übernommen.

Als Speicher werden in den beiden neuen Geräten ein 16KByte großes ROM für das Betriebssystem und ein 8KByte großes ROM für das eingebaute BASIC verwendet.

Der einzige große Unterschied zwischen 600XL und 800XL ist bekanntlich, daß der 800XL einen auf 64KByte erweiterten RAM-Bereich besitzt. Diese Erweiterung besteht nicht aus weiteren eingesteckten Bausteinen, sondern aus einer etwas anderen Konzeption.

Während der 600XL für seine 16KByte RAM zwei Bausteine verwendet, die jeweils 16.384 4bit-Worte enthalten, ist der 800XL mit 8 wesentlich gebräuchlicheren und damit preiswerteren Bausteinen ausgerüstet, die jeweils 65.536 1bitWorte enthalten.

Schon alleine bei der Stromversorgung bemerkt man, daß die Atari-Computer keine 'Wird schon funktionieren'-Ware sind.

Die vom extern geregelten Netzteil kommende Spannung wird gleich zu Beginn nach dem Hauptschalter in drei Pfade aufgeteilt, die alle gegeneinander durch Induktivitäten und Block-Kondensatoren entkoppelt sind.

Ein Pfad ist hauptsächlich für die hochintegrierten Bausteine und die direkt daran hängenden Pufferbausteine zuständig, der zweite Pfad führt zu den restlichen Logikbausteinen und den RAMs und der dritte Stromversorgungsteil ist ausschließlich für den HF-Modulator vorgesehen. Es ist auch der induktiv am besten entkoppelte Zweig, was Sörungen sowohl der Digitalsignale durch die Hochfrequenz als auch umgekehrt verhindern soll.

Das Herz des Computers ist dessen Taktgenerator. Dieser hier erzeugt eine quarzgenaue 3.546894 MHz-Schwingung, die direkt für die Farbtakterzeugung herangezogen wird.

Die Hälfte dieser Grundfrequenz (1.773477MHz) wird als Arbeitstakt für die CPU benutzt und steuert damit zeitlich alle nicht direkt zur Farbansteuerung gehörenden Funktionen.

Ein von der CPU geliefertes Taktsignal wird benutzt, um über eine sogenannte Spannungs-Verdopplerschaltung eine Referenzspannung für CADJ des GTIA zu erzeugen. Dies ist bei diesen Geräten notwendig, da beim alten 400/800 eine Versorgungsspannung von 12V existierte, die aufgrund der modernen RAMBausteine hier keine Verwendung mehr fände.

Um das System in einen geordneten Zustand bringen zu können, benötigt es einen Reset-Impuls. Dieser wird automatisch beim Einschalten durch ein RC-Glied erzeugt. Der dabei gegen Masse liegende Kondensator kann über eine externe Leitung entladen werden; diese externe Leitung führt zur RESET-Taste der Konsole. Es werden von diesem Signal die Bausteine ANTIC, PIA und CPU zurückgesetzt. Die anderen Bausteine benötigen dieses Signal nicht, sie werden softwaremäßig initialisiert.

Die CPU steuert über ihre Adreß-, Daten- und Kontrollbusleitungen die anderen hochintegrierten Schaltkreise an. Sie läßt sich jedoch auch über die vom ANTIC stammende HALTLeitung anhalten, so daß sie ihre Leitungen auf einen hochohmigen Pegel setzt. Das hat zur Folge, daß die Busleitungen jetzt frei sind, damit zum Beispiel der ANTIC seinen direkten Speicherzugriff (DMA) machen kann.

Sämtliche Speicher (also RAM wie ROM) werden über einen weiteren, weniger hoch integrierten Baustein angesteuert.

Dieses IC ist ein programmierbarer Logikbaustein (PAL) und erfüllt unter anderem die Aufgaben einer Speicher-DekodierLogik, die sonst mit diversen Standard-Dekodern hätte aufgebaut werden müssen. Da sie jedoch nicht nur Dekodier-, sonden auch Speicherblock-Verschiebeaufgaben besitzt, wäre die Bezeichnung 'Memory-Decoder' ihr nicht gerecht geworden.

Da dieses IC in gewissem Rahmen auch eine Verwaltungslogik beinhaltet, ist der Ausdruck Memory-Management-Unit (MMU) wohl der bestgeeignete.

Bevor die einzelnen Ein- und Ausgänge diskutiert werden sollen, noch eine kleine Bemerkung zur Syntax der Leitungsbezeichner: Hinter jedem Signal steht hinter einem Doppelpunkt der Pegel, bei dem das Signal aktiv ist. Ist also zum Beispiel Signal XYZ bei Low-Pegel aktiv, so heißt das Signal XYZ:L, sonst XYZ:H.

Als Eingänge besitzt die MMU zum Beispiel die fünf obersten Adressbit und die vom ANTIC stammende REFresh-Information, die besagt, daß es sich bei dem folgenden Speicherzugriff um einen Refresh-Zyklus handelt (die verwendeten RAM-Bausteine müssen in bestimmten Zeitabständen angesprochen werden, sonst verlieren sie ihre Inhalte. Siehe allgemeine Datenblätter dynamischer RAMs).

Mit diesen Grundinformationen ist die MMU schon in der Lage, den gesamten 64KByte-Speicherbereich in 32 2Kbyte große Blöcke aufzuteilen. Die Blöcke würden prinzipiell gehen von

Block 0   $0000 bis $07ff
Block 1   $0800 bis $0fff
Block 2   $1000 bis $17ff
  .         .         .
  .         .         .
  .         .         .
Block 30  $f000 bis $f7ff
Block 31  $f800 bis $ffff

Die MMU faßt jedoch größere Blockgruppen jeweils zu Einheiten zusammen.

So ist zum Beispiel der Bereich von $0000 bis $4fff (die untersten 16KByte) immer eine Einheit, die sowohl beim 600XL als auch beim 800XL aus RAM besteht. Dann kommt ein Block, der besondere Beachtung verdient, um dann von $5800 bis $7fff wieder einen normalen RAM-Speicherbereich anzusprechen, egal, ob dort physikalische RAM-Bausteine liegen oder nicht.

Der Block Nummer 10 ($5000 bis $57ff) hat, wie gesagt, einen speziellen Status. Der Bereich ist normalerweise für den Einsatz von RAM vorgesehen, es läßt sich jedoch auch in diesem Block abschalten. Dazu führt von PIA-PORT B7 eine Leitung zum MAP-Eingang der MMU. Ist dieser Eingang auf 1, so bleibt wie gewohnt das RAM eingeschaltet. Geht er jedoch auf Null, so wird RAM-Block 10 abgeschaltet und der hinter den I/O-Bausteinen in Block 26 ($d000 bis $d7ff) versteckt liegende ROM-Bereich wird hier hinuntergespiegelt. Es handelt sich bei diesen 2KByte Programm um die SelbsttestRoutine, die eingeschaltet wird, wenn beim Einschalten des Computers die OPTION-Taste gedrückt wird und keine Diskette angeschlossen ist.

Aber noch zwei andere Umschalteleitungen führen von Port B zur MMU: PORT B0 führt direkt zu ROM:H/RAM:L an der MMU und bewirkt dort, daß beim Nullwerden der Leitung das im Bereich $c000 bis $cfff und $d800 bis $ffff liegende BetriebssystemROM ab- und das eventuell dahinter liegende RAM eingeschaltet wird. Bei Benutzung dieser Adressen ist unbedingt darauf zu achten, daß das System abstürzt, wenn kein RAM an dieser Stelle vorhanden ist oder kein vernünftiges System darin steht.

Um sicherzustellen, daß beim Kaltstart immer das ROM aktiviert ist, geht man davon aus, daß solch ein PIA-Pin nach einem RESET-Impuls automatisch als Eingang programmiert wird. Es muß dann nur noch der nun offene Eingang über einen Pull-up-Widerstand hochgezogen werden und schon ist das ROM eingeschaltet.

Die dritte und letzte Verbindung zwischen MMU und PIA wird durch PORT B1 festgelegt, dessen Signal direkt an BasE:L geht. Ist diese Leitung auf Null, so ist der 8 KByte große Bereich $a000 bis $bfff mit dem internen BASIC-ROM belegt, ansonsten ist dieser Bereich frei für anderes.

Dieses 'andere' ist im Normalfall RAM, das an diese Stelle eingeblendet werden kann unter der Voraussetzung, daß es sich um einen 800XL oder 600XL mit 64KByte-Karte handelt.

Die MMU hat jedoch noch zwei weitere Eingangsleitungen, mit denen sie Speicherbereiche umschalten kann; sie dienen der hardwaremäßigen Verarbeitung von Cartridges, also Steckmodulen.

Liegt ein Steckmodul im Speicherbereich von $a000 bis $bfff (zum Beispiel das alte BASIC-Modul, das jetzt eingebaut ist oder der Atari-Assembler oder Spiele wie STARRAIDER u.ä.), so wird dies der MMU über die Leitung EN5:H mitgeteilt, liegt das ROM-Modul (auch) im Bereich $8000 bis $9fff, so wird (auch) die Leitung EN4:H auf High gesetzt. Dadurch 'weiß' die MMU entsprechend, daß sie das dahinterliegende RAM nicht aktivieren darf.

Als letzte Eingangsleitung ist noch die MPD:L Leitung zu nennen. Sie ist eine externe Schaltleitung und bewirkt, daß aus dem Betriebssystembereich der auf die I/O-Gruppen folgende Bereich $d800 bis $dfff (Mathematikroutinen-ROM, deshalb auch Math-Pack-Disable-Leitung) abgeschaltet wird. Dies wird für spätere Hardwareergänzungen verwendet.

Neben diesen ganzen Eingangsleitungen verfügt die MMU selbstverständlich auch über Ausgangsleitungen, die alle als Selektierungsleitungen dienen.

Ist EN4:H oder EN5:H High, so wird beim Ansprechen des entsprechenden Adressbereichs (also $8000 bis $9fff respektive $a000 bis $bfff) die Leitung SEL4:L beziehungsweise SEL5:L auf Null gezogen, um das entsprechende ROM-Modul zu aktivieren.

Das Betriebssystem-ROM wird durch die Leitung OS:L nach folgenden Kriterien selektiert:

MPD:L     ROM:H/RAM:L    Adressbereich       Ausgang OS:L
------------------------------------------------------------
  H           H          $c000 bis $cfff          L
  H           H          $d800 bis $ffff          L
  x           L          generell inaktiv         H
  L           H          $c000 bis $cfff          L
  L           H          $d800 bis $dfff          H
  L           H          $e000 bis $ffff          L

Die Leitung I/O:L bewirkt beim Ansprechen des Bereichs $d000 bis $d7ff, daß der Memory-map-I/O angesprochen wird. Memory- map heißt hier, daß für die Ein-/Ausgabebausteine kein sepa- rater Adreßraum zur Verfügung gestellt wird, sondern ein Teilbereich des Speicherraums dafür abgezweigt wird.

RAM-Speicher kann dort, wo es notwendig ist, über die Lei- tung CasInh:L von der MMU abgeschaltet werden. Diese Aus- gangsleitung bewirkt bei entsprechender Decodierung beim RAM, daß das sogenannte Column Address Strobe, was die letztendliche Selektion einer dynamischen Speicherstelle bewirkt, unterdrückt wird. Dies wird deshalb auf diesem Wege vollzogen, weil sichergestellt werden muß, daß trotz aller Deselektion immer noch der Refresh zu den RAM-Bausteinen durchkommt.

Um von der MMU gleich zu den RAM-Bausteinen weiterzugehen, bedarf es auf elektronischem Weg einiger Timing-Glieder.

Allgemein kann man sagen, daß die Ansteuerung dynamischer Speicher nur wegen der genau einzuhaltenden zeitlichen Folge der von den Speicherbausteinen verlangten Signale extrem kompliziert ist.

Beim 600XL/800XL werden diese Zeitprobleme nun durch spezi- elle Zeitglieder gelöst, die eingehende Signale um wenig- stens 25, höchstes ca. 260 milliardstel Sekunden verzögern.

Auf die gesamte Decoderlogik wirken zwei Selektionssignale: Zum einen das CasInh:L von der MMU, zum anderen ein extern anzulegendes ExtSel:L, das beim Nullwerden das Ansteuern des internen RAMs verhindert.

Neben der Speicherverwaltung gibt es noch zwei andere große Schaltungsbereiche innerhalb des Atari. Der eine wäre die Erzeugung der Farb-, Bild- und Tonsignale, zu denen nichts weiter besonderes zu sagen ist, da sie aus Standard-Hardware bestehen, wie zum Beispiel einem Digital-Analogwandler für die Luminanzwerte des GTIA oder einen 3-stufigen HF-Verstär- ker für das komplette FBAS-Signal. Außerdem ist es von Atari nicht vorgesehen, daß in diesen Schaltungsteil von externer Hardware eingegriffen wird.

Der zweite Bereich ist die Ein-/Ausgabe:

So existieren Multiplexer/Demultiplexer für die Tastaturan- steuerung, Analog- und Digitaleingänge von POKEY und PORT A für Paddle und Joystick sowie zwei Systembusverbinder.

Die Analog- und Digitaleingänge sind über Pull-up- Widerstände und gegen Masse gelegte Kondensatoren entstört.

Im Gegensatz zu den alten 400/800-er Modellen ist zu beachten, daß die Ein-/Ausgänge der PIA nicht mehr durch Serienwiderstände gegen Überlast gesichert sind. Das hat den Nachteil, daß die Ausgänge nun beim Experimentieren leicht zerstört werden können, demgegenüber widerum den Vorteil, keine Probleme mehr zu bekommen, wenn der Ausgang mit normalen Lasten in seinem Grenzbereich betrieben werden soll.

Die Joysickeingänge und Paddle-Leitungen werden über 9- polige D-SUB-Miniaturbuchsen herausgeführt, deren Anschlußbild aus der folgenden Tabelle zu entnehmen ist:

Pin Nummer     Anschluß geht intern zu      Wird benutzt für
                   Joy1 / Joy2
------------------------------------------------------------
     1         PORT A0  /  A4               Vorwärts  (Joy)
     2         PORT A1  /  A5               Rückwärts (Joy)
     3         PORT A2  /  A6               N. links  (JOY), linker Auslöser beim Paddle
     4         PORT A3  /  A7               N. rechts (Joy), rechter Auslöser beim Paddle
     5         POKEY P1 / P3                linker Potentiometerwert Paddle
     6         GTIA  T0 / T1                Trigger (Feuerknopf) vom Joystick oder Lightpeneingang
     7         Ub   +5V / +5V               Betriebsspannung normal belastbar
     8              GND / GND               Signalmasse
     9         POKEY P0 / P2                recht. Potentiometerwert Paddle

 

An dem hinten am Gerät installierten CPU-Bus liegen wesentlich mehr Signale an. Neben allen 16 Adress- und 8 Datenbits liegt an mehreren Stellen des Verbinders eine Masseverbindung und für die +5V-Versorgung sind ebenfalls zwei Leitungen vorgesehen.

Die Leitung ExtSel:L sperrt im aktiven Zustand das intern vorhandene RAM und wird hauptsächlich bei Anstecken einer RAM-Karte an den 600XL benötigt.

RESET:L ist das nichtsynchronisierte Ausgangssignal, mit dem die internen Bausteine zurückgesetzt werden.

IRQ:L ist ein Eingang, der am CPU-Pin IRQ anliegt. Es ist darauf zu achten, daß alle anderen unterbrechenden Geräte wie der POKEY und die PIA ebenfalls ihre Open-Drain-Ausgänge auf dieser Leitung zu liegen haben, und daß dieser Eingang durch einen 3kOhm-Widerstand intern bereits 'gepullt' wird.

LR:H/W:L ist ein gelatchtes, gepuffertes Signal, das dem CPU-R/W entspricht. Das Latchen geschieht zeitabhängig von o2 zum gleichen Zeitpunkt, an dem die Verknüpfung aus CasInh:L und ExtSel:L gelatcht wird und kann direkt zur Ansteuerung von Speicherbausteinen verwendet werden.

RDY:L ist verbunden mit dem gleichnamigen CPU-Pin, aber es ist zu beachten, daß der ANTIC über seine ebenfalls gleichnamige Open-Drain-Leitung immer Zugriff auf die CPU haben muß. Bei Verwendung dieser Leitung gilt also die gleiche Vorsicht wie bei der IRQ:L-Leitung.

CasInh:L ist, wie schon bei der MMU besprochen, Ausgangssignal zum Disablen externer dynamischer RAMs. Es kann auch für statische Baugruppen verwendet werden, erfordert dann jedoch leichte vorherige Umwandlungsarbeit.

CAS:L ist das reine Timing-Signal, wann der Column-Address-Strobe beim dynamischen Speicher zu erfolgen hat, wenn nicht CasInh:L oder ExtSel:L aktiv sind.

Für RAS:L gilt ähnliches wie für CAS:L, nur daß dieses Signal auch beim Refresh-Zyklus generiert wird und nicht von CasInh:L abhängig ist.

Ref:L ist die Hardwarekopie des entsprechenden Ausgangs beim ANTIC und findet nur dann Verwendung, wenn aus den RAS/CAS- Signalen Informationen über den momentanen Busstatus gezogen werden sollen. Dies wäre zum Beispiel notwendig, wenn über RAS:L und CAS:L Baugruppen angesprochen werden sollen, die keinen Refresh benötigen. In wieweit dies sinnvoll ist und nicht einfach benötigte Signale aus dem restlichen CPU- Timing entnommen werden, bleibt dem jeweiligen Entwickler überlassen; wichtig werden diese Signale, wenn von außen auf das System zugegriffen werden soll.

MPD:L ist der über Pull-Up inaktiv gehaltene MMU-Eingang zum Disablen des Mathematikroutinen-ROMs im Bereich $d800 bis $dfff und wird bislang noch von keiner (im Handel bekannten) Hardware verwendet.

Das letzte auf dem Bus verwendbare Signal ist Audio In, über das Signale in den vom Rechner generierten Sound eingemischt werden können. Der Eingang ist über einen 4u7F-Kondensator gleichspannungsentkoppelt, kann jedoch auch unter bestimmten Voraussetzungen wie nochmaliger Verstärkung etc. als Ausgang verwendet werden. Dabei wäre dann mit einem Ausgangsspannungspegel von maximal 200mV zu rechnen.

Als Gesamtübersicht über diesen Verbinder läßt sich sagen, daß er alle Erweiterungsmöglichkeiten nach außen hin offen läßt, wobei er es unmöglich macht, etwas an der internen Hardwarestruktur zu ändern, was nicht von Atari direkt geplant war. Als weiterer wichtiger Punkt dürfte herausgekommen sein, daß es sich bei dieser Schnittstelle nicht etwa um eine Centronics-kompatible handelt, wie es leider immer wieder von unwissenden Verkäufern erzählt wird.

Allgemein sind die Signale, die nach außen geführt werden, nicht gepuffert. Es ist also davon auszugehen, daß die Daten- und Adressleitungen jeweils eine LS-TTL-Last vertragen, die anderen Signale wie RESET:L, CAS:L und andere vertragen nicht mehr als 5 weitere LS-TTL-Lasten. Es ist gerade bei CAS:L und RAS:L zu beachten, daß dynamische Speicher extrem hohe Eingangskapazitäten besitzen, die das Fan-out der Signalquellen erheblich schwächen.

ANSCHLUSSPLÄNE UND SPEICHERAUFTEILUNG

Speicheraufteilung

Speicherplan des Atari

Anschlussplan der 6502C CPU

6502C CPU

Anschlussbelegung des ANTIC

Anschlussbelegung des ANTIC

Anschlussbelegung des GTIA

Anschlussbelegung des GTIA

Anschlussbelegung des POKEY

Anschlussbelegung des POKEY

Anschlussbelegung der PIA

Anschlussbelegung der PIA

Anschlussplan der Memory Management Unit (MMU)

Anschlussplan der MMU

Anschlussplan der seriellen Schnittstelle

Anschlussplan der seriellen Schnittstelle

Anschlussplan des Joystick-Ports

Anschlussplan des Joystick-Ports

Anschlussplan des Cartridge-Slots

Anschlussplan des Cartridge-Slots