005
03.05.2009, 22:54 Uhr
jmueller
|
@ambrosius: Ich stehe schon mit allen mir bekannten Leuten in Verbindung, die einen AC1 oder LLC2 ihr eigen nennen, auch mit Johann Spannenkrebs. Trotzdem danke für den Tipp!
@all: Ich möchte das Modul 3 in meinem Emulator JKCEMU mit emulieren. Dazu habe ich schon vor mehreren Leuten viel Material erhalten. Da möchte ich hier auch mal öffentlich ein großes Dankeschön sagen!
Wenn man aus diesem ganzen Material das herauszieht, was die Funktionsweise des SCCH-Moduls 3 beschreibt, reduziert sich die Ausbeute auf wenige A4-Seiten. Ich habe das mal zusammengepackt und hochgeladen: http://www.jens-mueller.org/tmp/scch_modul_3.zip
Herauslesen kann man aus den Dokumenten folgendes:
Gesteuert wird das Modul über den IO-POrt EDh: Bit 0..3 selektieren einen 64K-Bereich Bit 6=1: die ausgewählten 64K der RAM-Disk werden lesend, in den Arbeitsspeicher eingeblendet, Schreibzugriffe gehen auf den normalen RAM Bit 7=1: die ausgewählten 64K der RAM-Disk werden schreibend in den Arbeitsspeicher eingeblendet, Lesezugriffe gehen auf den normalen RAM
Optional kann man D32 bestücken. Dann werden auch Bits 4 und 5 ausgewertet: Bit 5=1, Bit4=0: Der Bereich 4000h-BFFFh der 64K-Seite wird lesend und schreibend in den Arbeitsspeiher eingeblendet (gleicher Adressbereich) Bit 5=1, Bit4=1: Die Bereiche 0000h-4000h und C000-FFFF der 64K-Seite (A15 negiert) werden lesend und schreibend in 4000h-BFFFh in den Arbeitsspeiher eingeblendet.
Ich habe zwei CP/L-Versionen, die dieses Modul 3 verwenden. Eine Version ist wohl die Originalversion von Herrn Mau. Die andere eine modifizierte.
Wenn man nun das Modul 3 so emuliert wie oben beschrieben, stürzt das CP/L beim Initialisieren der RAM-Disk ab. Da ist mir dann irgendwann mal das M1-Signal im Schaltplan aufgefallen und habe die Emulation so umprogrammiert, dass Lesezugriffe im M1-Zyklus immer auf den normalen RAM gehen, auch wenn die RAM-Disk gerade lesend eingebunden ist (Bit 6=1). Damit scheint das CP/L erstmal zu funktionieren. Da das nirgends so beschrieben ist, stellt sich für mich natürlich die Frage: Ist das wirklich so?
Und dann gibt es noch eine Ungereimtheit: Das CP/L verwendet die erste 64K-Seite der RAM-Disk (EDh: Bits 0..3 = 0) als Ersatz für den Hauptspeicher, da der normale RAM von 4000-BFFF als Pixelspeicher verwendet wird (HIRES-Erweiterung). Des weiteren wird in dieser ersten 64K-Seite auch eine Kopie des CCP gehalten.
Wenn nun aber die RAM-Disk initialisert wird, selektiert das CP/L die 64K-Seite 1100 (Bits 3..0 von EDh), d.h. die Seite im Adressraum von 768K bis 832K. Das Modul 3 kann aber nur bis max. 512 KByte bestückt werden. Wo sind da also die Lücken im Adressraum?
Mein Work around: Ich belege einfach den ganzen Adressraum mit RAM, sprich ich emuliere eine 1MB große RAM-Disk. Damit geht es zwar, entspricht aber nicht so ganz der Realität.
Also mein Wissensstand zum SCCH-Modul 3 ist recht dürftig, doch meine Variante der Emulation scheint zu funktionieren. Wenn jemand da genauere Infos zur Funktionsweise hat, würde mir das viel helfen.
Jens |