Navleistenbild

Zusatzchips - MMU 8722

Speicherverwalter

CCOM-Logo
Überblick Galerie Amiga CBM HOME Floppys Peripherie Software CPUs Chips Karten
MOS Technologies | Motorola | Amiga
VIA 6522 | CIA 6526 | SID 6581 / 8580 | VIC I 6561 | VIC II 6569 | TED 7360 | VDC 8563 | MMU 8722
 

Da der Prozessor 6502 einen 16 Bit breiten Adreßbus besitzt, kann er höchstens 65536 Bytes RAM direkt ansprechen. Beim C64 mit seinen 64 KByte RAM zuzüglich der 20 KByte ROM für Betriebssystem und Zeichensatz war der Prozessor also bereits an seinem Limit angelangt, wobei man hier schon ein wenig tricksen mußte um sowohl ROM als auch RAM ansprechen zu können. Beim C128 mit seinem doppelt so großen Hauptspeicher mußte man sich etwas anderes einfallen lassen.

Der C64 besitzt einen PLA-Baustein, der in Zusammenarbeit mit dem Prozessorport des 6510 das An- und Abschalten der Betriebssystem-ROMs sowie des I/O Bereichs regelt. Dies ist zum Ansprechen des Speichers "unter" den ROMs nötig. Aus Kompatibilitätsgründen (C64-Modus!) wurde an diesem Mechanismus nichts geändert, sondern man entwarf einen neuen Baustein für die Verwaltung des Speichers im C128. Heraus kam eine sogenannte MMU, eine Memory Management Unit (Speicherverwaltungseinheit). Dieser Bausteins ist in der Lage, dem Prozessor die 128 KByte des C128 stückweise zur Verfügung zu stellen. Der Prozessor selbst bekommt davon nichts mit, er "sieht" immer nur 64 KByte Speicher. Wo sich dieser Speicher tatsächlich befindet, das steuert die MMU.

Fähigkeiten der MMU

Dazu gibt es mehrere Möglichkeiten. Zum einen kann man zwischen maximal 4 verschiedenen RAM-Bänken zu je 64 KByte umschalten. Der C128 verfügt in seiner Grundausstattung über 2 Bänke, wovon eine dem Prozessor zur Verfügung gestellt werden kann. Um die Datenübergabe zu vereinfachen, gibt es die Möglichkeit eine sogenannte Common Area einzurichten, in der eine andere Speicherbank "durchscheint". Diese Common Area kann sowohl am oberen als auch am unteren Ende des Adreßbereichs eingerichtet werden und jeweils 1, 4, 8 oder 16 KByte groß sein. Darüber hinaus kann man noch die Zeropage und den Stapelbereich innerhalb des Adreßraums in 256 Byte-Schritten verschieben.

Die wichtigsten Einstellungen können über ein Konfigurationsregister getätigt werden. Dazu gehören die Auswahl der Speicherbank und die Auswahl der einzublendenden ROMs. Außerdem können 4 dieser Konfigurationen in MMU- Registern gespeichert werden und mit einem einfachen Speicherzugriff eingeschaltet werden. Um zu vermeiden dass man den Ast auf dem man sitzt absägt finden sich 5 Register (das Konfigurationsregister sowie die 4 Prekonfigurationsregister) in jeder Konfiguration ab der Adresse $ff00 wieder.

Das Moduskonfigurationsregister beinhaltet einige spezielle Optionen wie die Auswahl des zu verwendenden Prozessors (8502 oder Z-80), die Rechnerbetriebsart (C64 oder C128), der Status der 80-Zeichen Taste und mehr.

Im RAM-Konfigurationsregister kann man noch die Position und Größe der Common Area einstellen sowie die für den VIC-Chip zu verwendende Speicherbank.

Die MMU im 128er ist zwar ein wirklich interessanter Baustein, trotz ihres Namens ermöglicht sie aber nicht die bei heutigen PMMUs gängige seitenweise Umsetzung von Virtuellen Speicheradressen in Physikalische, wie sie beispielsweise für virtuellen Speicher benötigt wird. Auch gibt es keinen Speicherschutz oder ähnliches.

blind blind
panelbild  Verwendet in
blind
Commodore 128
blind blind blind

blindRegister 0 / $0: Konfigurationsregister
76...... RW RAM-Bank Auswahl: 00 = Bank 1, 01 = Bank 2, 10 = Bank 3, 11 = Bank 4
..54.... RW Bereich C000-FFFF: 00 = ROM, 01 = Internes ROM, 10 = Externes ROM, 11 = RAM
....32.. RW Bereich 8000-BFFF: 00 = Basic ROM (high), 01 = Internes ROM, 10 = Externes ROM, 11 = RAM
......1. RW Bereich 4000-7FFF: 0 = Basic ROM (low), 1 = RAM
.......0 RW Bereich D000-DFFF: 0 = I/O-Bereich, 1 = Entweder RAM oder ROM, je nach Status von Bit 4 und 5
blindRegister 1 / $1: Prekonfigurationsregister 1
76543210 RW Identisch zu Register 0
blindRegister 2 / $2: Prekonfigurationsregister 2
76543210 RW Identisch zu Register 0
blindRegister 3 / $3: Prekonfigurationsregister 3
76543210 RW Identisch zu Register 0
blindRegister 4 / $4: Prekonfigurationsregister 4
76543210 RW Identisch zu Register 0
blindRegister 5 / $5: Modus-Konfigurationsregister
7....... RW 40/80-Zeichentaste: 0 = gedrückt, 1 = nicht gedrückt
.6...... RW Betriebsart: 0 = C128, 1 = C64
..5..... RW Exrom
...4.... RW Game
....3... RW FSDIR: Ausgabe für schnellen seriellen Datenpuffer
.....21. R Ungenutzt: immer 1
.......0 RW Aktive CPU: 0 = Z80, 1 = 8502
blindRegister 6 / $6: RAM-Konfigurationsregister
7....... RW VIC-Bankzeiger: Ungenutzt
.6...... RW VIC-Bankzeiger: 0 = Bank 1, 1 = Bank 2
..54.... RW Ungenutzt
....3... RW Obere Common Area: 0 = Aus, 1 = An
.....2.. RW Untere Common Area: 0 = Aus, 1 = An
......10 RW Größe jeder Common Area: 00 = 1 KByte, 01 = 4 KByte, 10 = 8 KByte, 11 = 16 KByte
blindRegister 7 / $7: Zeropage Pointer Page
76543210 RW Nummer der Page wohin die Zeropage verschoben werden soll: 0 - 255
blindRegister 8 / $8: Zeropage Pointer Bank. Muß VOR Register 7 beschrieben werden
7654.... RW Nummer der Bank wohin die Zeropage verschoben werden soll: 0 - 15
....3210 RW Ungenutzt
blindRegister 9 / $9: Stackpage Pointer Page
76543210 RW Nummer der Page wohin die Stackpage verschoben werden soll: 0 - 255
blindRegister 10 / $a: Stackpage Pointer Bank. Muß VOR Register 9 beschrieben werden
7654.... RW Nummer der Bank wohin die Stackpage verschoben werden soll: 0 - 15
....3210 RW Ungenutzt
blindRegister 11 / $b: Versionsregister
7654.... RW Anzahl der verfügbaren 64 KByte-Bänke: 1 - 16
....3210 RW Versionsnummer der MMU


Überblick Galerie Amiga CBM HOME Floppys Peripherie Software CPUs Chips Karten
 

SlayRadio

VCFe 10.0 vom 1.-3.Mai 2009 in München

Kontakt / Impressum - Diese Seite wurde am 28.02.2008 um 19:18 Uhr zum letzen Mal aktualisiert.