C'est en Mai 1985 que Jester découvre l'informatique, grâce à l'EXL 100 offert pour son anniversaire. Au plaisir de la découverte, se dessine une véritable passion pour cette nouvelle technologie. Cependant, les nombreuses cartouches et cassettes dont il dispose le laisse perplexe: la logithèque de l'appareil est peu fournie, elle manque également de jeux à la hauteur de ses espoirs. Jester commence alors à développer des programmes devant son écran monochrome, et ce, grâce au seul outil de programmation en sa possession: «Exelbasic». Il rêve bien vite de programmer en Assembleur mais la cartouche «Exelmax» n'arrivera sur le marché que quelques années plus tard... Les limites de l'EXL 100 se faisant sentir, Jester fait l'acquisition deux ans plus tard du micro-ordinateur Atari 520ST puis se tournera enfin vers les compatibles PC durant son parcours universitaire. Aujourd'hui, Jester est enseignant chercheur en informatique. Il regarde le passé avec quelque nostalgique mais s'interroge surtout sur ce qu'aurait été EXL 100 si ce dernier avait été exploité à son maximum. Maintenant que Jester dispose du langage Assembleur pour EXL 100, il cherche à développer des programmes jamais tentés à l'époque. L'existence d'un émulateur EXL 100 en cours de réalisation - mais déjà bien avancé – et la puissance des outils d'aujourd'hui l'ont motivé dans son projet car il facilite toutes les phases de développement. Ensuite vient le plaisir d'allumer un vrai EXL 100 afin de tester le fruit de son développement…et de retrouver également ce bon vieux «Wizord», toujours vivant 25 ans après. Vous l'aurez compris, pour Jester, programmer est un jeu!
Fabrice: As-tu un messages que tu voudrais faire partager aux lecteurs concernant tes travaux sur EXL 100?
Jester: Développer n'est pas difficile, il faut juste se lancer en ayant bien épluché les documents techniques de l'appareil. Cela dit, on découvre la machine progressivement à cause d''informations souvent incomplètes. Je conseille à celles ou ceux qui se lanceraient dans une telle aventure de travailler sur l'émulateur bien sur... Le travail étant trop laborieux avec une vraie machine.
L'EXL 100 a une architecture un peu embrouillée, mais chaque élément est assez simple à mettre en oeuvre et les systèmes (DOS, CROS, ROM) sont développés de manière très professionnelle. On a l'impression d'une machine très en avance en ce qui concerne le logiciel contrairement à la partie hardware, ce qui est malheureusement assez frustrant: le microprocesseur est lent, doté d'un jeu d'instructions peu intéressant. Le processeur vidéo est sans grand intérêt... il complique tout. Le processeur son est quant à lui amusant mais il est peu utilisable en pratique.
Au début d'un projet, il faut se limiter beaucoup et bien penser le tout, comme dans tout problème d'ingénierie finalement. Pour ma part, je prends soin de tout mettre en place dans mon esprit, et ce, pendant quelques semaines; Ensuite je pose les choses sur papier, dans les grandes lignes; Et enfin je code.
Je n'ai pas encore assez de recul pour faire partager beaucoup d'éléments. Je renvoie les personnes intéresseés au code des quelques démos. Je me permets un seul conseil: Il faut prêter grande attention à l'utilisation des registres à cause d'une part aux interruptions qui en modifient beaucoup, et d'autre part à la pile qui écrase une partie de ces registres (une particularité qui limite le TMS7020). Le lanceur de ROM que j'ai développé et qui est présenté dans cette page est intéressant pour comprendre la gestion des E/S et la pagination.
Pour ceux qui veulent se lancer dans la création d'applications exploitant le graphisme de l'appareil, une chose doit rester à l'esprit: exploiter au maximum les pointeurs de la RAM VDP qui s'incrémentent automatiquement, éviter les appels fréquents pour replacer ses pointeurs. Il faut penser à optimiser le code immédiatement et ne pas employer les méthodes habituelles qui s'avèrent souvent contre productive avec ce contrôleur vidéo qui, s'il ressemble beaucoup à une carte EGA dans sa conception, est totalement inadapté à une machine 8bit. Je constate qu'il est aventureux de se lancer dans une gestion haute résolution au pixel près: la machine est lente... Il me semble plus approprié de déplacer les éléments graphiques par lot de 8 pixels et même de préférer le mode texte pour les jeux (dans le cas ou la gestion de transparence des sprites n'est pas importante), c'est un mode très performant sur EXL 100.
Fabrice: Comment vois-tu tes prochains développements?
Jester: J'aimerais pouvoir compter sur une équipe dans laquelle chacun aurait sa spécialité pour se lancer dans des projets encore plus ambitieux: composée de pros en graphisme, de personnes à l'aise avec les routines de gestion graphique, ainsi que des pros de l'audio (très utile pour émuler de la musique à travers le port K7 et pour maîtriser la génération de chaîne LPC pour le synthétiseur vocal).
Le côté Hardware n'est pas mon fort, aussi je me concentre uniquement sur l'aspect logiciel. Je suis d'ailleurs actuellement à la recherche d'un Exeldisk qui me permettra d'avancer dans mes développement car seul un test grandeur nature permet de finaliser un programme : l'émulateur n'est pas encore parfait (et ne pourra jamais l'être). D'ailleurs mon objectif n'est pas de développer des programmes pour une machine virtuelle mais, au contraire, de faire revivre un vieux coucou…on a jamais vu un collectionneur de vieille automobile se contenter de voitures radiocommandées !
Fabrice: Jester, je te remercie pour ces réponses et te félicite pour le travail accompli.
_________________________________________________________________________________________
La Disquette ROMDisk
Jouer à «Tennis» ou «Wizord» sans disposer des cartouches...cela vous tente? :-)
L'objectif est de proposer une disquette permettant de s'affranchir des cartouches Exelvision pour exécuter les programmes qu'elles contiennent. Cette disquette contient une compilation de 14 programmes tels que «Wizord», «Tennis», «Exelbasic+» ou bien «Exelpaint» ainsi qu'un chargeur permettant de les exécuter. Quel utilisateur de l'époque, et présent, n'a pas rêvé de posséder une telle disquette!
Le format disquette ayant été retenu, il vous sera d'abord nécessaire de recréer une disquette physique à partir de l'image disque téléchargeable un peu plus bas dans cette page. La régénération de la disquette se fera à l'aide du logiciel Omniflop ou Teledisk. L'équipement Exelvision nécessaire : l'unité de disquettes EXL 135 ou Exeldisk. La disquette ROMDisk fonctionne aussi bien sur EXL 100 qu'Exeltel.
Vous devez pour l'instant observer une limitation: Certains programmes prenant en charge le lecteur de disquettes deviennent instables quand il font appels aux fonctions d'EXELDOS car leur relocation en mémoire RAM écrase la zone de travail du DOS. Il ne vaut mieux pas charger ou sauver des documents via le lecteur de disquette avec «Exeltexte», «Edigraf» et «Exelogo». Un seul programme refuse de fonctionner correctement: «Exelbasic+» qui plantera dés l'exécution d'un programme basic (très certainement lié à la gestion du son ?).
La disquette se compose de fichiers .BIN, qui correspondent aux images des ROM, ainsi que de fichiers .OBJ qui sont les lanceurs dédiés à chaque ROM. Cerise sur le gateau: Les sources sont livrées avec la disquette!
Mode d'emploi
La disquette est ammorçable. Une fois insérée dans le lecteur de disquettes, allumez le micro-ordinateur ou pressez la touche RESET s'il est déjà en fonctionnement. Après chargement de la disquette, un curseur vous invite à saisir un ordre. Tapez la commande correspondant à la «cartouche» que vous désirez executer et validez par la touche «Entrée». Voici le tableau des commandes:
COMMANDE CARTOUCHE DESCRIPTION |
Note: La disquette doit être insérée dans le lecteur A.
Télécharger l'image de la disquette au format Omniflop ici
Omniflop, téléchargeable ici, fonctionne sur PC équipé de MS-Windows NT, 2000, XP et Vista
ainsi que d'un lecteur de disquette connecté à un contrôleur de disquettes (non USB).
Télécharger l'image de la disquette au format Teledisk ici
Teledisk, téléchargeable ici, fonctionne sur PC équipé de MS-DOS en mode natif.
_________________________________________________________________________________________
La commande «CAT»
Les personnes qui ont disposé, et disposent encore, du lecteur de disquette EXL135 ou Exeldisk sont unanimes sur la lenteur de certaines commandes d'Exeldos et particulièrement sur le temps de traitement de la commande «DIR». Convenable pour une disquette ne contenant qu'une quinzaine de fichiers, DIR devient vite insuportable au délà. Jester s'est penché sur le problème et vous propose sa commande CAT. Ses performances sont telles que l'on oublie définitivement la commande d'Exelvision!
Fonctionnalités et mode d'emploi
La commande CAT possède les fonctionnalités suivantes:
- Liste des fichiers formatés (NOM.EXT sans espace).
- Pause entre chaque page écran.
- Résumé du nombre de fichier et du lecteur en fin de page.
- Choix possible du lecteur de disquette (CAT A: ou CAT B:)
- Demande de changement de disquette si la commande s'applique sur le lecteur courant ([A] CAT A: ou [B] CAT B: ou [B] A:CAT B:)
- Filtrage par nom d'extension (CAT *.BAS), attention les caractères joker sont interdits (CAT *.?A? ne fonctionne pas).
- Arrêt prématuré du catalogue de la disquette à l'aide de la touche «».
Bien sur, vous pouvez combiner les options. Voici quelques exemples:
[A] CAT
[A] CAT *.*
[A] CAT *.BAS
[A] CAT A:*.*
[A] CAT B:*.DES
[B] A:CAT
[B] A:CAT B:*.*
Télécharger l'image de la disquette (au format Omniflop) contenant la commande CAT ici
Omniflop, téléchargeable ici, fonctionne sur PC équipé de MS-Windows NT, 2000, XP et Vista
ainsi que d'un lecteur de disquette connecté à un contrôleur de disquettes (non USB).
_________________________________________________________________________________________
La commande «EXEC»
La commande EXEC.OBJ permet de charger en mémoire RAM un fichier contenant du code binaire exécutable (le code contenu dans une cartouche ou dans une image d'exelmémoire par exemple). L'avantage du code binaire par rapport au code relogeable OBJ est sa vitesse de chargement (il n'y a pas d'interprétation à faire) et sa faible taille (il est directement l'image mémoire). Avec EXEC, l'execution de vos programmes provenant d'une ROM, d'une CRAM, ou n'importe quel fichier binaire n'aura jamais été si rapide!
La disquette proposée un peu plus bas contient la commande EXEC mais également les images des programmes suivants: Exelbasic, Burger Time, CB5, Descente, Exeldrums, Edigraph, Guppy, Imagix, Donkey Kong, Exelogo, Exelmax, Capt. Menkar, Exelpaint, Pindo, Pyrox, Quizzy, Slalom Géant, Le Sphinx d'Or, Tennis, Exeltexte, Virus et Wizord! Vous y retrouverez aussi la commande CAT présentée plus haut.
Fonctionnalités et mode d'emploi par Jester
La commande EXEC a donc besoin de fichiers BIN pour fonctionner. Son usage est très simple:
EXEC [A: | B:]NomFichier
NomFichier est le nom du fichier binaire sans l'extension .BIN (qui est implicite). A: ou B: est le lecteur où se trouve le fichier binaire. Par défaut la commande le cherche sur le lecteur ayant lancé la commande. Si la lettre est précisé et est identique au lecteur courant, alors une demande de changement de disquette a lieu.
Voici quelques exemple d'utilisation:
EXEC WIZORD
EXEC B:TENNIS
EXEC A:PINDO
Si le fichier binaire réclame une exelmémoire, sa présence est testée, puis une validation est demandée à l'utilisateur pour écraser son contenu. Il est possible d'utiliser la touche «Echap» pour annuler l'opération.
Un fichier binaire n'est pas l'image exact d'une cartouche ou d'une exelmémoire. Il contient juste le code utile (le jeu «Guppy» fait 5Ko et non pas 8ko par exemple) et un entête qui indique toutes les informations utiles.
Techniquement un fichier .BIN est composé de 2 enregistrements: l'entête (record 0) et le code binaire (record 1). L'entête fait 17 octets et est composé comme suit:
01-06 : identifiant (JESTER)
07-08 : version minimum requise pour EXEC.OBJ (01 00 pour l'instant)
...09 : flag très important dont 3 bits sont utilisés pour le moment:
..........bit 0: 1=>chargement en RAM directement,
....................0=>chargement intermédiaire en RAM VDP (risque d'écrasement du DOS)
..........bit 1: 1=>effacement de la VRAM avant exécution (utile pour GUPPY)
..........bit 2: 1=>présence d'exelmémoire requise
10-11 : adresse haute de chargement en mémoire (les routines disques remplissent la mémoire
........de manière décroissante du haut vers la bas)
12-13 : taille du code binaire
14-15 : adresse de branchement pour l'exécution du code en mémoire
16-17 : réservés à un usage futur
L'entête est stockée à l'envers dans le fichier afin d'optimiser le chargement (octet 17, 16, 15,… ,1). Idem pour le code binaire qui est aussi stocké à l'envers pour optimiser le chargement.
Dans la pratique j'ai aussi réalisé un outil primitif (en langage C) qui prend en entrée un fichier binaire, un fichier de configuration (avec les paramètres du code binaire) et qui génère en sortie un fichier .BIN avec l'entête ci-dessus et au format DCEXELDISK ready !
Si la commande EXEC est très pratique pour charger sans soucis l'image d'une cartouche ou d'une application sous Exelquad (Pindo, Burger, Pyrox, etc.), elle permettra aussi de charger de futurs programmes réalisés avec des Assembleurs modernes (non Exelmax).
Télécharger l'image de la disquette (au format Omniflop) contenant la commande EXEC ici
La disquette contient également les programmes en langage machine suivants: BASIC, BASIC+, BURGER, CAT, CB5,
DESCENTE, DRUMS, EDIGRAF, GUPPY, IMAGIX, KONG, LOGO, MAX, MENKAR, PAINT, PINDO, PYROX, QUIZZY,
SLALOM, SPHINX, TENNIS, TEXTE, VIRUS, WIZORD et KAMIKAR.
_________________________________________________________________________________________
Le «DevKit»
DevKit est sans conteste ce que tous les programmeurs de l'époque auraient souhaité disposer: un ensemble d'outils permettant de programmer pour EXL100 et Exeltel de façon très simple et rapide. Ces outils permettent également d'exploiter pleinement les ressources de l'ordinateur et d'obtenir des résulats jamais vus pour Exelvision.
Voici le contenu du DevKit:
BGR2SPR : commande de conversion d'un fichier image + fichier maque au format binaire BGR dans le format de sprite pour l'API ANIM
BIN2EXL : commande de conversion d'un fichier de données dans un format compatible Exelvision (avec sources + docs)
DESASM7000 : désassembleur pour TMS7020/7040 (avec sources +docs)
DIR2FD : commande de création d'une image de disquette ExelDos (avec sources +docs)
MUS2EXL : commande pour générer les données de partition à partir d'un script texte
OBJ2EXL : commande de conversation d'un code binaire dans un format compatible Exelvision (avec sources +docs)
TASM : cross-assembler pour TMS7020/7040 (avec sources + docs + fichiers de définition .EQU Exelvision)
PCX2JIF : outil de conversion d'image PCX en image JIF compressée pour support Exelvision (avec sources + docs)
DISK&TOOLS :
- sources des commandes ExelDOS EXEC (loader de binaire) et CAT (remplace DIR)
- disquette games.fd et tools.fd avec les commandes EXEC, CAT et tous les binaires disponibles pour machine Exelvision
- disquette Basic.fd avec la commande CAT et tous les programmes BASIC intéressants exécutable directement à l'aide de la commande LOADRUN nom_fichier_basic
- archive du logiciel QBOX pour générer des chaines LPC à partir de WAV
API : les différentes APIs disponibles au 08/2010 dans l'état (doc complète avec tutoriale un jour prochain)
Demos :
- Sprites contient les sources des démos d'animations Kinq Quest (ANIM3B pour EXL100/EXELTEL, ANIM4B pour EXELTEL)
- Sokoban contient les sources du jeu Sokoban et les exécutables K7, ROM, disquette
Pour PC et compatibles.
Télécharger le fichier au format .zip contenant le DevKit ici
_________________________________________________________________________________________
«Sokoban»
Ce jeu bénéficie d'une page qui lui est entièrement dédiée! ici
_________________________________________________________________________________________
Les logiciels sont proposés gracieusement. Ils ont été testés fonctionnels sur tous les ordinateurs qui ont servi aux tests. Ils vous sont cependant livrés "tel quel", sans garantie d'aucune sorte. Les auteurs ne seront tenus pour responsable de tout dommage subi par votre ordinateur ou toute perte de données consécutifs au téléchargement, à l'exécution de ces logiciels ou de leur mise en oeuvre.