Crédits
- Code — NoRecess
- Moteur — CPCEC, by Cesar Nicolas-Gonzalez
Crédits tels qu’ils figurent dans la release.
Note : cpcec-gtk est un projet abandonné. Il n’est plus développé, et aucun support ne l’accompagne. Ce qui suit le décrit tel qu’il a été laissé, en 2022.
cpcec-gtk est un émulateur Amstrad CPC, Plus et GX-4000 pour Linux à base Debian — Debian, Ubuntu, Pop!_OS et leurs proches. L’émulation elle-même, c’est CPCEC, le core fidèle écrit en C par César « cngsoft » Nicolás-González et publié sous GPL v3 ; tout ce qui l’entoure — l’interface GTK3, les fenêtres de debug, le packaging et la documentation — est de moi, écrit entre 2021 et 2022 par-dessus la version de janvier 2022 de ce core. Le projet entier, le core compris, est sur Bitbucket.
Il existe pour une seule raison : avoir, sous Linux, un émulateur dans lequel un programmeur CPC peut travailler plutôt qu’à côté duquel il travaille. Un fichier qui change sur le disque est rechargé et relancé tout seul, si bien qu’une toolchain qui reconstruit un .dsk met la nouvelle version à l’écran sans une seule touche ; les fichiers de symboles produits par rasm sont lus, si bien que le désassemblage se lit avec les noms du source ; et tout le debugger s’ouvre à la seconde où l’émulation est mise en pause.
Ce qu’il fait
- lance les images disquette
.dsk, les cartouches.cprdu Plus et de la GX-4000, et les snapshots.sna, et bascule tout seul sur une machine Plus quand une cartouche est insérée - ouvre un fichier par glisser-déposer, depuis le menu, ou depuis une bibliothèque de logiciels qu’il indexe récursivement et filtre par extension ou par quelques lettres du nom
- recharge et relance un fichier inséré dès que son contenu change sur le disque
- pilote deux lecteurs de disquettes, et crée un
.dskvide de zéro - gère les ROMs internes, lower et upper 0 à 127, en listant les RSX BASIC que chacune apporte et en permettant de les réordonner
- lit les fichiers de symboles écrits par rasm, aussi bien les label symbols (
-sz) que les ROM labels (-er) - accepte les manettes externes, branchées ou débranchées pendant qu’il tourne, et propose un joystick virtuel sur les flèches pour qui n’en a pas — avec le comportement de touches d’un vrai clavier Amstrad
- répond à
ALT+0..9pour le pavé numérique qu’un portable n’a pas, et àALTpour la touche COPY de l’Amstrad - zoome la fenêtre, tient un ratio de pixels 1:1, et sait montrer les parties du moniteur CRT qu’un programme cherche à cacher
- enregistre les captures en
.pnget les snapshots en.sna, coupe le son, met en pause, et tourne à 1x ou 4x - garde la position des fenêtres, le chemin de la bibliothèque, les derniers fichiers et le réglage de son dans
~/.config/cpcec-gtk/config.ini
Chaque machine émulée démarre avec une extension mémoire de 512 Ko, sauf la GX-4000, qui reçoit les 64 Ko avec lesquels elle est sortie.
Le debugger
Mettre l’émulation en pause ouvre les fenêtres de debug ; esc les ferme toutes et reprend, space avance d’une instruction Z80. La fenêtre Z80 montre le désassemblage, les registres et la pile, pose des breakpoints avec B, remet à zéro le compteur de NOPs avec T, désassemble depuis n’importe quelle adresse qu’on lui demande, et comprend l’opcode ED FF comme un breakpoint écrit dans le code lui-même. L’inspecteur mémoire montre la mémoire telle qu’elle est, bascule entre les valeurs READ et WRITE, et rapporte en dessous la configuration Gate Array et ASIC — avec les ROM labels quand un fichier de symboles les a fournis.
La fenêtre d’affichage vidéo est faite pour courir après le canon : elle donne le mode courant et l’adresse mémoire vidéo, et ses champs de ligne CRTC et de scanline moniteur sont interactifs — on tape une valeur, on presse la flèche à côté, et l’émulation continue jusqu’à cette ligne. Sur un Plus ou une GX-4000, une fenêtre ASIC liste les registres, avec les aperçus de sprites et la description des bits dans les infobulles. Le visualiseur mémoire dessine un pixel par octet des 64 Ko principaux et des quatre premiers banks, rafraîchi à chaque VSync, en MODE 0 ou 1 et avec la palette du programme ou en gris — et un mode last write fading ne montre que les écritures, les frames plus anciennes s’effaçant vers le noir.
Captures d’écran









L’installer
sudo apt install libsdl2-2.0-0 libgtk-3-0, puis sudo dpkg -i cpcec-gtk.deb ; sudo apt
purge cpcec-gtk le retire. Le binaire va dans /usr/bin, ses ressources — les ROMs Amstrad, la documentation — dans /usr/share/cpcec-gtk/, et rien n’est laissé ailleurs.