Présentation
Le site https://abagames.github.io/z80-repl/index.html propose un REPL (Read‑Eval‑Print Loop) dédié au processeur Z80. Il s’agit d’une interface web où l’on peut saisir du code assembleur Z80, le lancer immédiatement et observer le résultat sous forme de registres et de mémoire. L’hébergement sur GitHub Pages indique que l’application est entièrement statique et s’exécute dans le navigateur, sans serveur dédié.
Architecture technique
Le cœur du REPL repose sur un émulateur Z80 implémenté en JavaScript. Cette approche exploite le moteur JavaScript du navigateur pour reproduire le cycle d’instruction du processeur 8 bits, incluant le décodage des opcodes, la mise à jour des registres (AF, BC, DE, HL, PC, SP) et la gestion du bus mémoire. Le code source étant chargé depuis le répertoire z80-repl du dépôt GitHub, il est probable que le projet utilise des modules ES6 pour séparer l’émulateur de l’interface utilisateur.
Fonctionnement interactif
Lorsqu’un utilisateur saisit une ligne d’assembleur, le texte est transmis à un assembleur intégré qui traduit l’instruction en opcode binaire. L’émulateur exécute alors cet opcode dans le même cycle d’horloge que le processeur réel, puis renvoie l’état des registres et le contenu mémoire modifié. Cette boucle « read‑eval‑print » se répète à chaque soumission, offrant un retour immédiat. Le fait que le processus soit entièrement client‑side élimine la latence réseau, mais impose les limites de performance du moteur JavaScript.
Implications et limites
Le REPL constitue un outil pédagogique efficace pour explorer la programmation Z80 sans matériel physique. Cependant, l’émulation JavaScript ne reproduit pas les périphériques externes (UART, timers, bus I/O) qui sont souvent indispensables pour des programmes complets. De plus, l’absence de compilation native signifie que les performances restent inférieures à celles d’un émulateur en C ou WebAssembly. Enfin, le projet ne fournit pas de documentation détaillée sur les extensions possibles, ce qui restreint son usage aux scénarios d’apprentissage basiques.