KCEMU

Der Emulator KCEMU von Torsten Paul http://kcemu.sourceforge.net/ emuliert viele DDR-Heimcomputer und ist für Linux und Windows verfügbar. Er ist Freeware und Open Source!

Hier möchte ich einige Tipps zu diesem Emulator (Version 0.38) und konkret zur Emulation des LC 80 geben.

Hilfe

Unter Windows funktioniert die Kommandozeilenhilfe nicht richtig. kcemu -? liefert keine Ausgabe, eine Umleitung in eine Datei schafft hier Abhilfe:

kcemu -? > hilfe.txt
kcemu -v >> hilfe.txt
kcemu -V >> hilfe.txt

erzeugt eine komplette Hilfedatei aller Kommandozeilenoptionen des Emulators.

Der Emulator erlaubt es, neben der Kurzform mit -1 .. -9 auch Konfigurationsdateien mit KC-Typ, geladenen Modulen, Sound, Grafikoptionen etc. zu nutzen. Dazu ist die Datei kcemurc (c:\Programme\KCemu\share\KCemu\doc\kcemurc.sample) zu modifizieren und unter eigenem Dateinamen speichern. Es gibt leider noch keine Möglichkeit, eine Konfiguration vom Emulator aus zu speichern.

Der Aufruf einer solchen Konfiguration erfolgt mit

kcemu -c kcemurc

kcemu-lc80.jpg

In KCEMU ist die LC 80-Emulation mit kcemu -8 erreichbar. Die LC 80-Emulation unterstützt Tonausgabe (Version 3.8 nicht unter Windows) und erweiterten Speicherausbau (Module RAM2400, RAM2800, RAM3000, RAM4000, RAM8000). Emuliert wird die 2x1K-Version.

Konfigurationsdatei

Ein Beispiel einer Konfigurationsdatei für eine LC 80 mit 4K RAM ist im Paket kcemu.zip enthalten:

kcemurc.lc80
#LC 80
Tape File: lc80.kct
Default KC Model: lc80
Display Scale: 1
Display Effect: 1
Display Debug: 0
Frame Skip: 0
Enable Sound: 0
#Module
# RAM2400 RAM Modul 2400h-27ffh
# RAM2800 RAM Modul 2800h-2fffh
# RAM3000 RAM Modul 3000h-3fffh
# RAM4000 RAM Modul 4000h-7fffh
# RAM8000 RAM Modul 8000h-ffffh
Module_00000000: RAM2400
Module_00000001: RAM2800

Tasten

PC-Taste LC 80-Äquivalent
ESC Reset
0-9, A-F(a-f), +, - 0-9, A-F, +, -
F1 ADR
F2 DAT
F3 LD
F4 ST

die NMI-Taste (interner Code 0x127) ist wohl nur über die Tastaturansicht erreichbar.

Implementierte Programme

Der Emulator enthält eine versteckte Funktion: die ersten drei Beispiele der LC 80-Anleitung sind direkt im Emulator implementiert.

Eingaben Beispiel Beschreibung
„LD“, „0000“, F10 Beispiel 1
HELPUS
Anzeige 'HELPUS': Unter Verwendung des Unterprogrammes DAK1 ist der Text 'HELPUS' anzuzeigen, solange nicht die Taste „+“ gedrückt wird. In diesem Fall soll der Rechner in den HALT-Zustand gehen.
„LD“, „0001“, F11 Beispiel 2
HELPUS
Blinkende Anzeige 'HELPUS': Das Programm DAK2 steuert die Anzeige für die Dauer von rund 10 ms an. Der Text 'HELPUS' soll alle 0,5 Sekunden für 0,5 Sekunden aufleuchten.
„LD“, „0002“, F12 Beispiel 3
Blinklicht
Blinklicht-Steuerung: Das OUT-LED soll durch HIGH- bzw. LOW-Signale angesteuert werden, so dass diese LED blinkt.

Emulation des Kassetteninterfaces

Leider bietet der Emulator momentan noch keine Möglichkeit, Programme zu speichern. Geladen werden können Programme aber als Binärdateien: wenn diese prog_0x2000.bin heißt, läßt sie sich über „Emulator→Load“ einzeln an die Adresse 0x2000 laden. Per „Emulator→Run“ geht auch Autostart, wenn die Datei prog_0x2000_0x2000.bin heißt. (prog steht für einen beliebigen Programmnamen). Diese Binärdateien können auch in ein „Tape“ eingeladen werden. Mit Doppelklick auf den entsprechenden Eintrag im Tape (über „Emulator>Kassette“ erreichbar) wird das Programm in den Speicher des LC 80 geladen und kann gestartet werden: RES,ADR,EX bzw. im Emulator: ESC,F1,ENTER.

Im Beispieltape kcemu.zip stehen die Spielprogramme zum Ausprobieren bereit!

die LC 80-betreffenden Dateien des Emulators haben die Endung 8. In pio8.cc stehen die 3 integrierten Programmbeispiele; die Tastaturfunktionen sind in keyb8k.h und keyb8.cc (Codes vgl. keys.h) kodiert. mod_list.cc definiert die Module, beim LC 80 sind das RAM-Erweiterungen.