Installation de z80pack

Le guide part du code source de z80pack‑1.37, disponible sur le site du projet. Après extraction dans $HOME/lib/z80pack-1.37, le cœur de l’émulateur se compile avec

cd ~/lib/z80pack-1.37/cpmsim/srcsim
make -f Makefile.linux
puis les outils d’accompagnement avec
cd ~/lib/z80pack-1.37/cpmsim/srctools
make -f Makefile.linux
. Cette procédure repose sur un environnement Linux standard : gcc, make et les en‑têtes du noyau. Aucun paquet pré‑existant n’est requis, ce qui garantit que la version construite correspond exactement aux options du développeur.

Gestion des disques virtuels

z80pack représente chaque support physique par un fichier image. Par défaut, le répertoire ./disks contient les images attendues sous les noms drivea.dsk, driveb.dsk, etc. Le simulateur expose six périphériques : les lecteurs de disquette A‑D et les disques durs I et P. Le minimum pour démarrer CP/M 3 est l’image disks/library/cpm3-1.dsk, copiée en drivea.dsk. Une seconde image, cpm3-2.dsk, fournit des utilitaires supplémentaires et est placée en driveb.dsk.

cp disks/library/cpm3-1.dsk disks/drivea.dsk
cp disks/library/cpm3-2.dsk disks/driveb.dsk
Pour créer un disque dur de 4 Mo, on utilise mkfs.cpm du paquet cpmtools :
/usr/local/bin/mkfs.cpm -fz80pack-hd disks/drivei.dsk
Le paramètre -fz80pack-hd indique à l’outil la table de définition z80pack‑hd située dans /usr/local/share/diskdefs. Sans ce paramètre, l’image serait limitée à 720 kB, la taille d’une disquette 8 inches.

Installation de Zork 1 et exécution

Le port CP/M de Zork 1 se compose de deux fichiers : ZORK1.COM (exécutable) et ZORK1.DAT (données du Z‑machine). Ils sont transférés dans le disque dur virtuel avec cpmcp :

/usr/local/bin/cpmcp -fz80pack-hd disks/drivei.dsk ZORK1.COM 0:
/usr/local/bin/cpmcp -fz80pack-hd disks/drivei.dsk ZORK1.DAT 0:
Le chiffre 0: désigne l’« user area » zéro, l’équivalent CP/M d’un répertoire racine. Une fois les fichiers en place, le simulateur démarre CP/M 3 via ./cpm3, puis l’invite de commande A> permet de lancer le jeu avec ZORK1.COM. Le texte apparaît dans le terminal Linux, mais le traitement du caractère de retour arrière nécessite une adaptation : CP/M attend le code ASCII 8 (Ctrl‑H) alors que la plupart des terminaux envoient ASCII 127 (DEL). La solution consiste à reconfigurer le profil du terminal (ex. Gnome Terminal → Compatibilité) afin que la touche Backspace génère Ctrl‑H. Cette modification garantit que les commandes de navigation dans le texte d’aventure fonctionnent comme prévu.

Limites et considérations pratiques

Le processus décrit ne vise pas la jouabilité optimale ; il sert à illustrer la chaîne complète : compilation d’un émulateur Z80, création d’images de disques CP/M, transfert de fichiers via cpmcp et adaptation du terminal. La licence du jeu reste incertaine : aucune source officielle n’est fournie, et l’auteur du tutoriel indique qu’il a obtenu les fichiers depuis un dépôt tiers. De plus, CP/M 3 supporte théoriquement jusqu’à 500 Mo de stockage, mais le simulateur ne gère que les tailles d’image créées par mkfs.cpm. Enfin, l’émulateur ne reproduit pas les timings matériels du Z80, ce qui peut affecter des programmes dépendants du cycle d’horloge, bien que Zork 1, étant purement textuel, reste fonctionnel.