exl100

Émulateur Exelvision EXL 100 (1984) dans le navigateur : dsp-cpp en WebAssembly, cartouches et cassettes BASIC
git clone https://git.schurger.org/exl100.git
Log | Files | Refs | README

commit 903d30aceaab7ef0bb8d8e10f92dc125519be155
parent 83ae722193a12c86417efa52775fa090e15feb11
Author: Jean Schurger <jean@schurger.org>
Date:   Thu,  5 Nov 2026 16:56:36 -0500

Aide : bibliothèque, Exelmémoire, Disquette et clavier mis à jour ; section « Limites actuelles »

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QyJB9yqUAYm3wRQi4uytj9

Diffstat:
Mweb/shell.html.in | 58+++++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 41 insertions(+), 17 deletions(-)

diff --git a/web/shell.html.in b/web/shell.html.in @@ -62,6 +62,8 @@ #disk-files tr.run:hover td { background: #2b2d35; color: #fff; } #disk-files td.go { color: var(--accent); } .pg-b { color: var(--accent); font-size: .78rem; margin-left: 8px; } + .limits { padding-left: 18px; margin: 6px 0; } + .limits li { margin: 4px 0; } .pg-side { margin-left: 6px; background: #1f3f3f; color: var(--accent); border: 1px solid #2b5c5c; border-radius: 6px; font-size: .75rem; padding: 1px 7px; cursor: pointer; } .pg-side:hover { background: #2a5555; color: #fff; } .pg-side.on { background: var(--accent); color: #000; border-color: var(--accent); } @@ -262,22 +264,26 @@ <p>Au lancement, la machine affiche le papillon arc-en-ciel et le logo <b>exelvision</b> sur fond cyan, exactement comme un EXL 100 à la mise sous tension. L'EXL 100 n'a pas de BASIC intégré : comme sur la vraie machine, tout vient d'une <b>cartouche</b> ou d'une <b>cassette</b>.</p> - <p>Cliquez un titre dans la <b>liste des programmes</b> (chaque entrée indique sa source : éditeur - et année) ; un filtre aide à s'y retrouver. Les <b>Cartouches</b> (ExelBASIC, Tennis, Guppy, - Virus, Exelpaint…) démarrent seules. Les <b>Cassettes (BASIC)</b> — une cinquantaine de jeux et - programmes — <b>se chargent toutes seules</b> : la page lance ExelBASIC puis tape - <code>LOAD "1"</code>, <kbd>Échap</kbd> et <code>RUN</code> pour vous ; patientez quelques secondes. - Vous pouvez aussi <b>charger votre propre fichier</b> (<code>.bin</code>, <code>.rom</code>, - <code>.k7</code>, <code>.wav</code>).</p> + <p>« <b>Choisir un programme…</b> » ouvre la bibliothèque (chaque entrée indique sa source : éditeur + et année) ; un filtre et des puces aident à s'y retrouver. Les <b>Cartouches</b> (ExelBASIC, Tennis, + Guppy, Virus, Exelpaint…) démarrent seules. Les <b>Cassettes BASIC</b> — près de trois cents jeux, + applications et cours — <b>se chargent toutes seules</b> : la page lance ExelBASIC puis tape + <code>LOAD "1"</code>, <kbd>Échap</kbd> et <code>RUN</code> pour vous ; patientez quelques secondes + (les gros programmes mettent jusqu'à une minute). Un programme sur plusieurs faces ou cassettes + tient sur une ligne, avec un bouton par face. Les <b>volumes Exelmémoire</b> (jeux diffusés par le + serveur Exelvision) se lancent sur l'EXL 100 par <code>CALL EXEC</code> tapé pour vous, et les + <b>disquettes</b> amorcent sur EXELDOS. Vous pouvez aussi <b>déposer votre propre fichier</b> + (cartouche <code>.bin</code>/<code>.rom</code>, cassette <code>.k7</code>/<code>.wav</code>, image + Exelmémoire <code>.cram</code>/<code>.bkp</code>, disquette <code>.fd</code>) : son type est détecté.</p> </div> <div> <h3>L'Exelmémoire</h3> <p>L'extension <b>Exelmémoire</b> (16 Ko de mémoire sauvegardée par pile) et son gestionnaire de fichiers <b>CROS64</b> (Format, Directory, Tape→Cram, Cram→Tape…) sont émulés. Sur l'<b>EXELTEL</b> elle est - toujours branchée : menu <i>Périphériques → Exelmémoire</i>. Sur l'<b>EXL 100</b>, cochez - « Exelmémoire » dans la barre : comme la vraie cartouche, elle démarre alors à la place du logo. Son - contenu est conservé dans ce navigateur (comme le fichier <code>.cram</code> de DCExel) ; <i>Format</i> - l'efface.</p> + toujours branchée : menu <i>Périphériques → Exelmémoire</i>. Sur l'<b>EXL 100</b>, le bouton + « 💾 Exelmémoire » permet de la brancher : comme la vraie cartouche, elle démarre alors à la place du + logo (gestionnaire CROS). Le même bouton montre le contenu du volume et l'importe ou l'exporte au format + <code>.cram</code> de DCExel ; le contenu est conservé dans ce navigateur, <i>Format</i> l'efface.</p> <h3>L'Exeldisk</h3> <p>Le lecteur de disquettes 3"½ <b>Exeldisk</b> (contrôleur WD1770, 640 Ko par disquette) est émulé d'après les équates du devkit et son ROM d'amorçage. Choisissez une disquette dans la bibliothèque ou @@ -285,15 +291,33 @@ <b>EXELDOS</b> ; à l'invite <code>[A]</code>, <code>DIR</code>, <code>HELP</code>, <code>EXEC</code>… Si la disquette contient des programmes <code>.BAS</code>, la cartouche ExelBASIC est insérée d'office (<code>LOADRUN NOM.BAS</code> les lance) ; les binaires d'<code>EXEC</code> se chargent dans - l'Exelmémoire. Les écritures restent en mémoire le temps de la session.</p> + l'Exelmémoire. Le bouton « 💽 Disquette » liste le contenu de la disquette en place : cliquer un + programme le lance (la commande est tapée pour vous). Les écritures restent en mémoire le temps de + la session.</p> <h3>Le clavier infrarouge</h3> <p>Le clavier et les manettes de l'EXL 100 étaient sans fil, reliés en infrarouge. Ici c'est votre clavier - d'ordinateur, aux positions de MAME. Cliquez d'abord dans l'écran pour lui donner le focus.</p> + d'ordinateur, aux positions de MAME. Cliquez dans l'écran : il prend le clavier (un message le dit, + espace et flèches ne font plus défiler la page) ; cliquez ailleurs pour le rendre.</p> <p>Les touches de fonction : <kbd>F2</kbd> pause, <kbd>F3</kbd> réinitialisation, <kbd>F6</kbd> pause - cassette, <kbd>F12</kbd> turbo. Un programme sur deux faces ou plusieurs cassettes le signale dans la - bibliothèque ; quand il réclame la suite, le bouton 📼 de la barre l'insère sans redémarrer (et « ⏏ insérer » - dans la liste change de cassette à chaud). Dans ExelBASIC, <code>LOAD"1"</code> lit la cassette et - <code>SAVE"1"</code> enregistre.</p> + cassette, <kbd>F12</kbd> turbo. Quand un programme réclame une autre face ou cassette, le bouton + « ⏏ Insérer Face B » de la barre la met en place sans redémarrer (le bouton du programme indique la + face en cours ; « ⏏ insérer » dans la liste change de cassette à chaud). Dans ExelBASIC, + <code>LOAD"1"</code> lit la cassette et <code>SAVE"1"</code> enregistre.</p> + <h3>Limites actuelles</h3> + <ul class="limits"> + <li>Tout n'a pas été essayé : la plupart des programmes n'ont été vus qu'à leur écran de titre.</li> + <li>Pas d'images Teledisk (<code>.td0</code>) : convertissez-les en <code>.fd</code>. Un seul lecteur + de disquettes, pas d'Exeldisk sur l'EXELTEL, et les écritures sur disquette ne survivent pas au + rechargement de la page (l'Exelmémoire, elle, est conservée).</li> + <li>Sur l'EXELTEL : pas de ligne téléphonique ni de Minitel, donc Téléphone, Répondeur, + Communication et Terminal restent sans effet ; CROS64 refuse les cassettes ExelBASIC en + Tape→Cram (format d'enregistrements différent).</li> + <li>Pas de manettes physiques : les manettes sont sur le clavier (positions de MAME). La boîte à + rythmes Exeldrums reste muette : ses sons venaient d'une puce PCF0705 non émulée.</li> + <li>Les cassettes qui n'existent qu'en enregistrement audio (<code>.wav</code>, chez webmo.fr) se + chargent mal : la bibliothèque s'en tient aux transferts numériques (TOSEC, DCExel). La parole du + TMS5220 est émulée, sa justesse n'a pas été comparée à la machine réelle.</li> + </ul> </div> <div> <h3>Sous le capot</h3>