Mitwirkende
- Code — NoRecess
- Engine — CPCEC, von Cesar Nicolas-Gonzalez
Mitwirkende, wie sie in der Release stehen.
Hinweis: cpcec-gtk ist ein aufgegebenes Projekt. Es wird nicht mehr entwickelt, und Unterstützung gibt es dazu keine. Was folgt, beschreibt es so, wie es 2022 liegen gelassen wurde.
cpcec-gtk ist ein Emulator für Amstrad CPC, Plus und GX-4000 für Linux auf Debian-Basis — Debian, Ubuntu, Pop!_OS und Verwandte. Die Emulation selbst ist CPCEC, der genaue, in C geschriebene Kern von César „cngsoft“ Nicolás-González, veröffentlicht unter der GPL v3; alles darum herum — die GTK3-Oberfläche, die Debugging-Fenster, die Paketierung und die
Dokumentation — stammt von mir, geschrieben zwischen 2021 und 2022 auf dem Stand jenes Kerns vom Januar 2022. Das gesamte Projekt, den Kern eingeschlossen, liegt auf Bitbucket.
Es gibt es aus einem einzigen Grund: unter Linux einen Emulator zu haben, in dem ein CPC-Programmierer arbeiten kann statt daneben. Eine Datei, die sich auf der Platte ändert, wird von selbst neu geladen und neu gestartet, sodass eine Toolchain, die ein .dsk neu baut, den neuen Build ohne einen einzigen Tastendruck auf den Bildschirm bringt; die Symboldateien, die rasm erzeugt, werden gelesen, sodass der Disassembler die Namen zeigt, die der Quelltext benutzt hat; und der ganze Debugger öffnet sich in dem Moment, in dem die
Emulation angehalten wird.
Was es kann
- führt Diskettenabbilder
.dsk, Cartridges.cprfür Plus und GX-4000 sowie Snapshots.snaaus und schaltet beim Einlegen einer Cartridge von selbst auf eine Plus-Maschine um - öffnet eine Datei per Drag & Drop, über das Menü oder aus einer Softwarebibliothek, die es rekursiv erfasst und nach Endung oder nach ein paar Buchstaben des Namens filtert
- lädt und startet eine eingelegte Datei neu, sobald sich ihr Inhalt auf der Platte ändert
- steuert zwei Diskettenlaufwerke und legt ein leeres
.dskvon Grund auf an - verwaltet die internen ROMs, unteres und obere 0 bis 127, listet die BASIC-RSXs auf, die jedes mitbringt, und lässt sie umsortieren
- liest die Symboldateien, die rasm schreibt, sowohl Label-Symbole (
-sz) als auch ROM-Labels (-er) - nimmt externe Gamecontroller an, im laufenden Betrieb ein- und ausgesteckt, und bietet allen ohne einen solchen einen virtuellen Joystick auf den Pfeiltasten — mit dem Tastenvorrang-Verhalten einer echten Amstrad-Tastatur
- reagiert auf
ALT+0..9für den Ziffernblock, den ein Laptop nicht hat, und aufALTfür die Amstrad-Taste COPY - zoomt das Fenster, hält ein 1:1-Pixelverhältnis und kann jene Teile des CRT-Monitors zeigen, die ein Programm eigentlich verborgen halten will
- speichert Bildschirmfotos als
.pngund Snapshots als.sna, schaltet stumm, hält an und läuft mit 1x oder 4x - behält Fensterpositionen, Bibliothekspfad, zuletzt benutzte Dateien und Stummschaltung in
~/.config/cpcec-gtk/config.ini
Jede emulierte Maschine startet mit einer 512-KB-Speichererweiterung, außer der GX-4000, die die
64 KB bekommt, mit denen sie ausgeliefert wurde.
Der Debugger
Wird die Emulation angehalten, öffnen sich die Debugging-Fenster; esc schließt sie alle und macht weiter, space geht einen Z80-Befehl weiter. Das Z80-Fenster zeigt Disassembler, Register und
Stack, nimmt Haltepunkte auf B an, setzt den NOP-Zähler auf T zurück, disassembliert ab jeder gewünschten Adresse und versteht den Opcode ED FF als einen in den Code selbst geschriebenen Haltepunkt.
Der Speicherinspektor liest den Speicher, wie er gerade dasteht, wechselt zwischen READ- und WRITE-Werten und meldet die darunterliegende Konfiguration von Gate Array und ASIC — mit den ROM-Labels, sofern eine Symboldatei sie geliefert hat.
Das Fenster der Bildschirmanzeige ist fürs Rennen gegen den Elektronenstrahl: Es nennt den aktuellen Modus und die
Adresse im Videospeicher, und seine Felder für CRTC-Zeile und Monitor-Rasterzeile sind interaktiv — einen Wert eintippen, auf den Pfeil daneben drücken, und die Emulation läuft weiter, bis diese Zeile erreicht ist. Auf einem Plus oder einer GX-4000 listet ein ASIC-Fenster die Register auf, mit Sprite-Vorschauen und Bitbeschreibungen in den
Tooltips. Die Speichervisualisierung zeichnet ein Pixel je Byte der Haupt-64 KB und der ersten vier Bänke, bei jedem VSync aufgefrischt, in MODUS 0 oder 1 und in der Palette des Programms selbst oder in
Grau — und ein Modus last write fading zeigt nur die Schreibzugriffe, wobei die älteren Bilder nach
Schwarz verblassen.
Bildschirmfotos









Installation
sudo apt install libsdl2-2.0-0 libgtk-3-0, dann sudo dpkg -i cpcec-gtk.deb; sudo apt
purge cpcec-gtk entfernt es wieder. Das Binary landet in /usr/bin, seine Ressourcen — die Amstrad-ROMs, die Dokumentation — in /usr/share/cpcec-gtk/, und sonst bleibt nirgends etwas zurück.