RKM 400

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Stub Dieser Artikel ist sehr kurz und nicht besonders ausführlich. Hilf bitte mit, ihn zu verbessern.
RKM 400
Typ Steckmodul
Neupreis Selbstbaugerät
Erscheinungsjahr 1987
Sonstiges 64'er 9/1987 S. 41, vereinfachte Version RKM 100 in der 9/1989 S. 28


Das RKM 400 ist ein Selbstbau-Steckmodul für den Expansionsport und fungiert als EPROM-Karte mit optionalem SRAM. Das von Thomas Mittermeier und Thomas Wenz entwickelte Modul wurde in der 64'er 9/1987[1] als "Hardware des Monats" vorgestellt.[2] In der 64'er 9/1989 folgte eine vereinfachte Version als RKM 100.[3] Eine Besonderheit dieser Karte gegenüber anderen EPROM-Karten ist, dass sich die ROMs als KERNAL einblenden lassen und dabei (eingeschränkt) das RAM "unter" dem Ersatz-KERNAL zugänglich bleibt.

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

In der PLA ist kein Modus direkt vorgesehen, mit dem sich der KERNAL durch einen extern angeschlossenen ROM-Baustein komplett kompatibel ersetzen ließe. Zwar gibt es den Ultimax-Modus, bei dem ein ROM die Rolle des KERNALs übernimmt - wird der dauerhaft aktiviert, sind große Teile des RAMs jedoch für die CPU nicht zugänglich. Wird der Ultimax-Modus nur (potenziell) kurzzeitig aktiviert, wenn auf $E000-$FFFF lesend zugegriffen wird, bleibt immer noch das Problem, dass das Modul nur anhand der vom Bus gelesenen Adresse nicht erkennen kann, ob tatsächlich auf den KERNAL zugegriffen werden soll oder auf das RAM in dem Bereich. Zu dieser Entscheidung müsste das Modul Kenntnis vom HIRAM-Status (siehe Prozessorport/$01) haben; dieses Signal liegt jedoch am Expansionsport nicht an.

Das Modul bedient sich eines Tricks:

  • In der Anfangsphase des VIC-II-DMAs (bei Badlines und Sprite-DMA) sind (meist) einige Buszyklen ungenutzt.
  • Der VIC-II signalisiert der CPU per BA-Signal, dass DMA ansteht, wartet dann drei Takte, bis die CPU in jedem Fall alle Schreibzyklen erledigt hat, und übernimmt dann erst wirklich den Bus.
  • Von den drei Takten werden jedoch nur die benutzt, in denen die CPU noch Schreibzugriffe ausführt.
  • Das Modul "übernimmt" die anderen Buszyklen, aktiviert den PLA-Modus zum Einblenden eines externen ROMs im BASIC-Bereich (GAME und EXROM werden aktiviert), legt eine Adresse im Bereich des BASIC-ROMs auf den Adressbus und schaut, ob die PLA daraufhin das ROMH-Signal aktiviert (Details siehe Abschnitt "Funktion" im Artikel zur PLA).
  • Ist das der Fall, sind ROMs eingeblendet (HIRAM ist inaktiv), ansonsten ist HIRAM aktiv.
  • Entsprechend wird dann bei folgenden Lesezugriffen auf $E000-$FFFF der Ultimax-Modus und damit das externe KERNAL-ROM aktiviert oder nicht.

Einschränkungen[Bearbeiten | Quelltext bearbeiten]

Bedingt durch den Ansatz wird eine Änderung des Prozessorports erst nach dem nächsten VIC-DMA vom Modul erkannt. Ein einfaches LDA #$30 STA $E000 STA $01 LDA $E000 - das eigentlich eine $30 aus dem RAM unter dem KERNAL zurücklesen sollte - wird also nicht funktionieren, weil in der kurzen Zeit zwischen dem letzten STA und dem letzten LDA kaum ein DMA-Zugriff stattgefunden hat.

In der Praxis bleibt die KERNAL-Funktionalität des Moduls dadurch leider wie bei anderen Modulen teilweise inkompatibel bzw. fehlerbehaftet.

Alternativen[Bearbeiten | Quelltext bearbeiten]

Es gibt einige zeitgenössische EPROM-Karten und andere Erweiterungskarten, denen das HIRAM-Signal per im Inneren des C64 angebrachtem Clip zugeführt wird (u.a. die RAMLink). Diese Karten erlauben den Zugriff auf das RAM unter dem KERNAL ohne Einschränkungen.

Manche neuere Hardware wie das EasyFlash³ nutzt einen anderen Trick, um den HIRAM-Status auch ohne Zusatzleitung abzuleiten, der jedoch timingkritisch ist und am C128 nicht funktioniert.


Quellen[Bearbeiten | Quelltext bearbeiten]

  1. 64'er 9/1987, Artikel "Super: Luxus-Kernelumschaltung ohne Löten!", Seiten 41-48
  2. 64'er 9/1987, Artikel "Luxus-Kernelumschaltung", Seite 36
  3. 64'er 9/1989, Artikel "Externes Betriebssystem für den C 64", Seiten 28-30