6520 PIA Port B für RAM-Erweiterungen

Belegung der Bits von PIA Port B bei Atari 800 XL und höher
mit RAM-Erweiterungen

Achtung!!! Alle Angaben ohne Gewähr.

Bit   800 XL   130 XE              800 XL               800 XL
      (64K)    (128K)              (320K)               (320K)
                                   Version:             Version:
                                   ATARI-Magazin        Compy-Shop
                                   (Kürzel: AM)         (Kürzel: CS)
---------------------------------------------------------------------------
PB0   OS-ROM ein/aus
PB1   BASIC-ROM ein/aus
---------------------------------------------------------------------------
PB2   n.b.    Auswahl 1 RAM-Bank   Auswahl 1 RAM-Bank   Auswahl 1 RAM-Bank
PB3   n.b.    aus 4*16 K           aus 4*16 K           aus 4*16K
---------------------------------------------------------------------------
PB4   n.b.    0 = CPU-Zugriff    | Zusatz-RAM ein     | 0 = CPU-Zugriff
              auf Erweiterung    | (CPU & ANTIC)      | auf Erweiterung
              1 = CPU-Zugriff    |                    | 1 = CPU-Zugriff
              auf Hauptspeicher  |                    | auf Hauptspeicher
---------------------------------------------------------------------------
PB5   n.b.    0 = ANTIC-Zugriff  | Auswahl 1 RAM-Bank | 0 = ANTIC-Zugriff
              auf Erweiterung    | aus 4*64 K         | auf Erweiterung
              1 = ANTIC-Zugriff  |                    | 1 = ANTIC-Zugriff
              auf Hauptspeicher  |                    | auf Hauptspeicher
----------------------------------                    ---------------------
PB6   n.b.    n.b.               |                    | Auswahl 1 RAM-Bank
------------------------------------------------------| aus 4*64 K
PB7   Selbsttest spiegeln nach $5000                  |
---------------------------------------------------------------------------

n.b. = nicht benutzt

Achtung: Die Angaben für die Compy-Shop-Version sind ohne Garantie, da ich
selbst keine Original-CS-Version besitze noch den Schaltplan zur Verfügung
habe.


Erklärungen:
------------

Auswahl der Speicherbank:

Beim 130 XE (64 K Zusatzspeicher) wird aus 4 Speicherbänken zu je 16 K eine
Speicherbank ausgewählt. Dafür sind 2 Bit notwendig (PB2/3 = 00/01/10/11).

Bei Ataris mit 256 K Speichererweiterung (gesamt: 320 K) wird aus 16 Bänken
zu je 16 K eine Speicherbank ausgewählt. Dafür sind 4 Bit notwendig
(PB2/3/5/6 bzw. PB2/3/6/7).
Um mit dem 130 XE kompatibel zu bleiben und den Hardware-Aufwand für die
Erweiterungen so gering wie möglich zu halten, erfolgt hardwaremäßig die
Auswahl einer Speicherbank etwas anders: Zunächst wird aus 4 Speicherbänken
zu je 64 K eine Speicherbank ausgewählt (PB5/6 bzw. PB6/7). Danach wird aus
diesen 64 K eine Speicherbank von 16 K ausgewählt (PB2/3 wie beim 130 XE).
Für den Programmierer spielt es aber keine Rolle, ob die Auswahl 2-stufig
(erst 1 aus 4*64 K, dann 1 aus 4*16 K) oder einstufig (1 aus 16*16 K) ist.
Entscheidend ist, daß mit 4 Bit aus 16 möglichen Speicherbänken eine
Speicherbank von 16 K ausgewählt wird.


Unterschiede der Erweiterungen:
Wie der Tabelle zu entnehmen ist, sind nur beim Original 130 XE und der
CS-Version ein getrennter Zugriff von CPU und ANTIC auf zusätzliches RAM
und Hauptspeicher möglich. Bei der AM-Version ist nur ein gemeinsamer Zugriff
entweder auf den Hauptspeicher oder auf das Zusatz-RAM möglich.
Um bei der CS-Version die Funktionalität von PB4/5 des 130 XE zu erhalten,
mußte für das 4. Speicherbank-Auswahl-Bit ein anderes Bit doppelt benutzt
werden. Hier hat man sich für das Selbsttest-Bit entschieden, da dieser
ohnehin nur beim Einschalten/Reset benötigt wird.
Bei der AM-Version ist ein gleichzeitiges Benutzen von RAM-Erweiterung und
Selbsttest möglich (wer braucht das?), dafür fehlt der getrennte CPU/ANTIC-
Zugriff.


Was bringt der getrennte Zugriff von ANTIC und CPU?

(Für die Freaks: Diese Erklärung ist absolut vereinfacht.)

Bis auf wenige Spezialbauten kann bei "normalen" Computern technisch immer nur
eine Einheit auf eine Speicherzelle zugreifen (auch bei heutigen PCs). Dies
liegt daran, das es je nur einen Adreßbus/Datenbus gibt, mit dem eine
Speicherzelle ausgewählt und gelesen/geschrieben werden kann. Müssen nun
mehrere Einheiten auf Speicher zugreifen, so müssen diese sich den Bus teilen
und entsprechend warten, wenn dieser gerade belegt ist.

Jetzt zu den Ataris:
Der ANTIC, der für die Bildschirmausgabe zuständig ist, greift regelmäßig auf
den Speicher zu, um die Display List abzuarbeiten und den
Bildschirmspeicherinhalt auszulesen.

Bei "normalen" Ataris mit 64 K ist es möglich, den ANTIC komplett
auszuschalten. Dann arbeitet die CPU ca. 30% schneller, da sie ja nicht mehr
mit dem ANTIC teilen muß. Allerdings ist dann keine Bildschirmausgabe mehr
möglich.
Eines der wenigen Programme, die den ANTIC abschalten, ist der Software-
Synthesizer SoftSynth, bei dem die CPU jede Menge mit der Berechnung der
Samples zu tun hat.

Beim 130 XE und der CS-Erweiterung ist ein getrennter Zugriff möglich, d.h.
die CPU könnte auf den Zusatzspeicher der ausgewählten RAM-Bank zugreifen,
während gleichzeitig der ANTIC seine Grafikdaten aus dem Hauptspeicher holt.
Bei der AM-Version können CPU und ANTIC nur gemeinsam entweder auf den
Hauptspeicher oder auf den Erweiterungsspeicher zugreifen.

Wer braucht den getrennten Zugriff wirklich?
Gute Frage - mir ist kein Programm bekannt, das dies wirklich nutzt.
(Zumindest kein Programm, das man unbedingt haben muß).
Letztendlich erreicht man durch den getrennten Zugriff, das zusätzlich zum
kompletten Hauptspeicher noch auf eine RAM-Bank zugegriffen werden kann.
Bei der AM-Version kann bei Einblendung einer Speicherbank auf den jetzt
darunterliegenden, ausgeblendeten Hauptspeicher (der ja an der gleichen
Adresse liegt) nicht mehr zugegriffen werden.
Bei der 130 XE/CS-Version hat man also im Vergleich zu der AM-Version nicht
insgesamt mehr Speicher zur Verfügung, kann aber bei einer
Speicherbankeinblendung weiterhin auf den darunterliegenden
Hauptspeicherbereich (an der gleichen Adresse) zugreifen. Man hat zu jedem
Zeitpunkt also mehr Speicher im Zugriff (in der Größe einer eingeblendeten
RAM-Bank).


Welche Version ist die Bessere?
Hmmm, gut Frage. Die CS-Version ist "kompatibler", da sie die wenigsten
Einschränkungen hat (nur der Selbsttest). Dafür ist die AM-Version
verbreiteter und meines Erachtens auch von Programmen besser unterstützt.


Programme erkennen nur die halbe Größe einer RAM-Erweiterung:

Dann ist das Programm für eine andere RAM-Disk-Version geschrieben. Dies
passiert z.B. häufig bei CS-Programmen auf Rechnern mit AM-Version. Da diese
RAM-Disk-Versionen sich in einem Port-Bit unterscheiden, wird nur die Hälfte
erkannt.
Abhilfe:
1. Programm ändern, viel Spaß
2. Ram-Disk umlöten, s.u.

šbrigens: Das RAM-Disk-Testprogramm vom Compy-Shop (Bibo-DOS) erkennt bei der
AM-Version nur die halbe RAM-Disk (warum wohl 8-)...). Der getrennte Zugriff
auf den Speicher kann natürlich auch nur bei einer CS-Version funktionieren.
Deshalb stürzt das Testprogramm bei anderen Versionen auch ab. Dies ist also
kein Hinweis auf eine defekte RAM-Disk, wenn es sich um eine andere Version
handelt.
Mit anderen Worten: Das CS-Testprogramm kann man nur mit einer CS-kompatiblen
RAM-Disk nutzen.


Umbauten, Tips, Ergänzungen:

Wenn man PB4 an einem Schalter aus dem Gehäuse führt, kann man die RAM-Disk
bequem ein-/ausschalten.

Wer noch einen zusätzlichen Schalter für PB5/6 bzw. PB6/7 einbaut, kann
zwischen beiden RAM-Disk-Versionen umschalten. Voraussetzung ist allerdings,
daß die Software keinen getrennten Zugriff von CPU und ANTIC benutzt - den
kann man natürlich nicht ein-/ausschalten.

Umbau der Version:
Ich hatte mir zunächst eine 256 K-Erweiterung mit AM-Bitbelegung gebaut.
Diese kann man leicht in die CS-Bitbelegung umbauen, indem man an der PIA
statt PB5/6 die beiden Anschlüsse PB6/7 verwendet. Voraussetzung ist auch
hier, daß die Software keinen getrennten Zugriff von CPU und ANTIC benötigt.


mögliche Erweiterungen:

Wer volle Kompatibilität (130 XE-Version und Selbsttest) wünscht, kann nur
3 Bit benutzen (PB2/3/6). Damit kommt man auf 128 K RAM-Disk-Größe (8*16 K).

Wer die AM-Version verwendet und zusätzlich noch das Bit für den Selbsttest
benutzt (wie bei der CS-Version), kann noch einmal verdoppeln:
5 Bit (PB2/3/5/6/7) = 32*16 K = 512 K RAM-Erweiterung.

Zusätzlich gibt es RAM-Disk-Versionen, die statt 16 K gleich 32 K
Zusatzspeicher einblenden. Auch auf diese Weise kann man den Zusatzspeicher
verdoppeln. Meines Erachtens gibt es aber keine Software, die diese Version
unterstützen.
Zusammen mit der 5-Bit-Version wären das dann 32*32 K = 1 MByte Erweiterung...

Durch Anschluß einer zusätzlichen 6520-PIA am Erweiterungsport hätte man noch
einmal 16 Bit zur Verfügung...aber das ist nun wirklich Träumerei...


Ich hoffe, dieser Text hat etwas Licht in das RAM-Disk-Dunkel gebracht. Falls
noch Fragen offen sind, Mail: henrik@bytecruncher.de
Bitte keine Fragen zu Schaltplankopien o.ä., diese gibts auf einschlägigen
Internet-Seiten; beim Abbuc (www.abbuc.de) - oder bei Obi (www.obi.de)...
Auch kann ich keine Tips zum Aufbau geben, da ich "Softie" bin und von
Hardware nur so viel verstehe, um sie vernünftig ansprechen zu können...8-)))

Zur Hauptseite Zur Atari-Übersicht