GeoRAM

Aus C64-Wiki
Zur Navigation springenZur Suche springen
GeoRAM
512 KByte GEORAM-Modul.
512 KByte GEORAM-Modul.
Typ Speichererweiterung
Hersteller Berkeley Softworks
Neupreis US$ 125[1] (1990, entspricht etwa 213 € heute)
Erscheinungsjahr 1990
Produktionsende 1993
Sonstiges Für C64/128


GeoRAM ist eine 512-KByte-Speichererweiterung für den C64 und C128 von Berkeley Softworks bzw. REX Datentechnik. Sie ist ein doppelt hohes Steckmodul für den Expansionsport. Im Gegensatz zur REU ist sie nicht DMA-fähig, sondern blendet jeweils 256 Bytes des erweiterten Speichers in den Adressbereich der CPU ein. Mit GeoRAM ist der Zugriff bis zu 35-mal schneller als bei Standard-GEOS-Plattenzugriffen.

Hintergrund[Bearbeiten | Quelltext bearbeiten]

Zwar gab es mit der REU bereits eine Speichererweiterung für den Expansionsport des C64, allerdings war sie verhältnismäßig teuer, wenig verbreitet und baute auf einem Commodore-eigenen ASIC auf. Da GEOS recht stark von einer Speichererweiterung profitiert, wollte Berkeley Softworks anscheinend die Gelegenheit nutzen, eine günstig selbst produzierte Hardware im Zusammenhang mit GEOS zu verkaufen, und hat so die GeoRAM entwickelt.

Technische Realisierung[Bearbeiten | Quelltext bearbeiten]

Die Daten werden im ersten I/O-Bereich von $DE00-$DEFF eingeblendet.
Welche "Page" (256 Bytes) eingeblendet wird, bestimmen zwei Register im zweiten I/O-Bereich ab $DF00:

  • Das Register an den geraden Speicherstellen trägt mit seinen unteren sechs Bits zur Auswahl bei.
  • Das Register an den ungeraden Speicherstellen trägt mit seinen unteren fünf Bits zur Auswahl bei.

Insgesamt gibt es also 6 + 5 = 11 Adressbits, also 2 hoch 11 = 2048 einblendbare Speicherseiten. Da vier Seiten einem KByte entsprechen, ergibt das die erwähnten 512 KByte Gesamtspeicher.

Als Programmierer wünscht man sich statt "6 und 5 Bits" Registerbreite eigentlich eher "8 und 3 Bits", da für 8 Bits keine Verschiebeoperationen nötig sind. Möglicherweise wurde "6 und 5" deshalb gewählt, weil dann die Spur- und Sektorwerte einer 1541-Diskette direkt abgebildet werden können: Die Nummer der Spur passt in das 6-Bit-Register und die Nummer des Sektors in das 5-Bit-Register. Die beiden Register als "Track" und "Sector"-Register zu bezeichnen kann dann auch gleich als Eselsbrücke dienen, um sich die Reihenfolge der Register bzw. deren Breite in Bits zu merken.

Nachbauten der GeoRAM erweitern das zweite Register oft auf eine Breite von 6, 7 oder 8 signifikanten Bits und erreichen damit dann Speichergrößen von 1, 2 oder 4 MByte (siehe Tabelle):

RAM (KByte) "Track" ($DFFE) "Sector" ($DFFF)
total signifikante Bits Dezimal Hexadezimal signifikante Bits Dezimal Hexadezimal
512 6 0–63 $00–$3F 5 0–31 $00–$1F
1024 6 0–63 $00–$3F 6 0–63 $00–$3F
2048 6 0–63 $00–$3F 7 0–127 $00–$7F
4096 6 0–63 $00–$3F 8 0–255 $00–$FF

Theoretisch können über die zwei Register sogar 16 MByte adressiert werden, dafür müssten dann beide Register auf jeweils 8 signifikante Bits erweitert werden.

Nachbauten[Bearbeiten | Quelltext bearbeiten]

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. Robert Bixby: "The GEOS Column: Closeup on GEORAM", Compute!'s Gazette, Issue 83, Vol. 8, No. 5, May 1990, p 14

Weblinks[Bearbeiten | Quelltext bearbeiten]

Wikipedia: GeoRAM