Emulateur exl100

J’ai toujours trouvé cette machine étrange, et n’ai jamais été particulièrement attiré par elle… Maintenant je sais pourquoi…
Émuler cette chose reste un exercice intéressant, d’une part les documents Texas Instrument sont globalement bien réalisés, et d’autre part, l’absence d’information fiable oblige à investiguer et à pratiquer le reverse-engineering. Pour autant cette machine reste limitée, et assez bancale… La médiocrité extrême du clavier achève le tout…

Cet émulateur dérive partiellement du driver MESS initialement écrit par R.Nabet.

Le module d’émulation TMS 7xxx a été codé par T.Linder pour l’émulation du TI CC40.

Un petit screenshot d’un jeu célèbre de cette machine …

wizord

Cet émulateur est à ce jour incomplet… Mais il avance doucement…

Correctif sur la gestion du timer et gestion synchro video R0.8d

En streaming audio et passage a la librairie Allegro 4.4 R0.8

Correctif sur la gestion des pointeurs VDP R0.8b (VERSION STABLE)

La version WX widget devient la plus à jour, gestion de tout le clavier et des attributs du 3556 R0.8 (version MACOS)

Mise à niveau de la version WX Widget, correction de l’absence des touches de pavé numérique et entrée R0.7b

Correction de la gestion des trames 5220, synthèse vocale pour la version Allegro, Debugger pour la version WX R0.7

Merge des versions allegro et Wxwidget (WIN32)   R0.6 (aussi pour MACOSX)

Ajout de la lecture des K7 au format WAV   R0.5b

Une version apte à faire tourner la majorité des ROMS   R0.5

Une version qui commence à faire des choses   R0.4b 🙂

Une version intermédiaire   R0.3

La préversion à télécharger…R0.1

Les news

  • 01/08/2010 Ajout des outils de gestion des K7, il est maintenant possible de convertir (outil séparé) des fichiers .K7 de dcexel pour les relire ici
  • 21/06/2010 Gestion des bits de Synchro VBL, correction du timer
  • 07/06/2010 Correction du son avec passage en mode streaming pour Allegro (qui passe en 4.4 DLL)
  • 29/05/2010 Correctif sur la gestion des pointeurs VDP pour compatibilité avec le sokoban de Jester
  • 01/03/2010 Pré-version pour la gestion du son 1 bit... avec quelques cliquetis… 
  • 16/02/2010 Grace à la publication du manuel du TMS3556 par Jean Louis, les attributs de caractères sont enfin gérés.
  • 10/02/2010 Enfin compris pourquoi les touches n’étaient pas toutes mappées sur wxwidget (question de style par défaut sur l’objet wxPanel…)
  • 09/02/2010 Intégration puis optimisation de la gestion de la synthèse vocale par Olivier pour la version Wx/SDL, bientôt en ligne 🙂 
  • 06/02/2010 Ajout du debugger pour la version wxwidget.
  • 05/02/2010 Et maintenant, il parle (mais mal), en préversion ici (WIN32, Allegro)
  • 27/01/2010 Fusion des sources Allegro et wxWidget (contribution d’OlivierP, forum system-cfg). A compiler avec devcpp et les devpacks Allegro4.2 ou Wxwidget2.8 et SDL 1.2
  • 23/01/2010 Ajout de la lecture des K7 au format WAV. Gestion la plus simple possible, le sample est lu à sa fréquence normale. La valeur du bit A4 est positionné à 0 ou 1 sur dépassement de seuil.
  • 21/01/2010 Correction du principal bug résiduel, l’opcode JPZ (jump if positive OR zero) est incorrectement documenté dans la spécification Texas Instrument. La véritable condition est N=0. Z=1 est absurde… Tim Linder a lu cette doc… J’ai contrôlé 10 fois en relisant cette doc… Ce soir j’ai oublié la doc pour me demander ce que devait faire un JPZ…
  • 20/01/2010 Compilation sous Linux sans trop de difficulté (1 chemin d’accès à un fichier à modifier…), correctifs sur des blocages de clavier…
  • 16/01/2010 Correctifs sur l’occupation du CPU à 100% et la régulation de vitesse. R0.4b
  • 14/01/2010 La refonte du module de 7041 est maintenant achevée, l’émulation est (beaucoup) plus stable. Wizord fonctionne sans blocage. L’embryon d’émulation du 5220 reste imparfait car les séquence LPC ne vont généralement pas jusqu’à la fin. L’émulation du 7020 est corrigé petit à petit… 
  • 04/01/2010 Refonte du module d’émulation du 7041, qui reste basé sur un automate d’état. Il n’y a plus de patch de la ROM 7020, tous les échanges sont relativement conformes au code du 7041. Pas de release pour le moment (mais les fichiers sont sur CVS) car il est nécessaire d’émuler partiellement le 5220, en effet il faut détecter les fins de commande Speech pour générer les events corrects.
  • 17/12/2009 L’émulation du 7041 par automate d’état est trop éloignée de l’original et ne traite pas bien les commandes dans lesquelles le 7041 reçoit des données. Le désassemblage et commentaire de la rom 7041 (extraite par Torlus) avance. Peu de surprises pour le moment, juste quelques précisions par rapport à la documentation. Le support du clavier et surtout la communication avec le 5220 devraient enfin être satisfaisants bientôt…

Le code source

Le projet est hébergé sur sourceforge.

L’essentiel des ressources concernant l’exelvision est sur l’excellente page de Fabrice : www.exelvision.fr

L’émulateur exelvision le plus abouti à ce jour est l’oeuvre de Daniel, son site DCexel est également une référence (malgré l’adoption de ce format de document tellement mieux que tout… mais si difficile à relire sur 99% des PC 🙂 )

SDK C/ASM thomson

Version actuelle : vital-to8-sdk-r1.1.zip

Les TO8 et TO9+ sont des machines relativement puissantes et dont la RAM vidéo reste d’une taille raisonnable, il est donc possible d’obtenir des demos et jeux de bonne qualité sur ces machines.

Le but de ce projet est de constituer une chaine de développement complête et réutilisable pour développer en C et ASM sur ces machines.

La cible est la constitution d’une image disque au format SAP, à partir d’un ensemble de sources C et assembleur. Le tout avec une séparation suffisante du framework et de projet lui même.

Un projet type sera livré, il s’agit de terminer une version TO8 du célebre Asteroid.

L’existant

Les éléments GCC6809 et les outils périphériques proviendront pour le moment de la page nostalgies.thomsonistes.org

D’autres élements (dont un make adapté au mode ligne de commande DOS) proviendront du SDK vectrex.

Des versions plus récente de GCC seront ajoutées par la suite (les versions 2.81 et 2.95 commencent à dater un peu…), probablement par ajout et non par remplacement.

Etape 1 : Tester les éléments

 A partir du tutoriel fourni sur le site nostalgies.thomsonistes.org, on contrôle que tous les éléments permettent effectivement de compiler des choses… Un simple « Hello world » pour le moment

[edit du 28/08/2009]

Pas vraiment de succès dans cette étape:
Les outils de nostalgies.thomsonistes.org sont un peu bordéliques et pas totalement fonctionnels sous Win XP, éventuellement en modifiant le PATH on doit pouvoir s’en sortir mais bof, le but est de placer ses fichiers dans un répertoire puis lancer un make ou tout au plus un ..\..\make.

De plus la cible n’est pas d’avoir une libC, il ne s’agit pas de redévelopper UNIX sur thomson, juste d’avoir un langage compilé efficace.
 
Les outils vectrex sont mieux packagés mais trop vieux, l’outil stobin ne fonctionne pas sous WINXP, il utilise l’extendeur DOS v1.0 de djgpp.

Il faut au minimum reconstituer un STOBIN qui tourne sous WinXP. Cet outil pourra en retour être repackagé dans le compilateur C Vectrex…

[edit du 31/08/2009]

Un nouvel utilitaire stobin compilé avec mingw32 a été constitué à partir d’éléments maison (issus d’une première version d’un SDK TO8). Le tout sur une nouvelle page spécifique à un SDK vectrex porté win XP. Le tout est presque suffisant pour créer des cartouches pour la famille des TO/MO.

Etape 2 : Constituer le Makefile

La compilation ne doit pas se faire dans la douleur. Une simple commande doit permettre d’enchainer toutes les étapes de la compilation jusqu’à la constitution d’une image disquette. L’émulateur doit également pouvoir être lancé immédiatement, idéalement par une rêgle du makefile.

Etape 3 : Repackager

Le compilateur C vectrex ayant été remis sur pied, on ajoute la possibilité de compiler pour TO8 à ce même package.

Cela donne l’archive suivante: TO8_SDK.ZIP ( [edit] Attention : ce SDK est obsolète)

Etape 4 : Tester

Un premier Hello World… (demo dans projets/TO8_DEMO)

D’autres tests sont à faire pour confirmer le fonctionnement du compilateur:

_ test des appels de fonction;

_ test de différentes structures C, différents types de donnée (integer, char, struct);

_ ajout d’autres fonctions du moniteur;

_ tenter un projet de taille plus importante.

Etape 5 : Tout refaire

Il faut reconnaitre que le SDK première version est difficilement utilisable. GCC n’est pas fiable sur le code 6809. Il existerait un autre portage plus récent mais ca reste du GCC, c’est un peu lourd à mettre en oeuvre pour du déceloppement 8bits.

Après quelques recherches, ce sont l’obscur mc09 associé à l’assembleur cc6809 de prehisto qui formeront la chaine de compilation. Quelques outils de packaging spécifiques sont ajoutés (sapfs, un stobin thomson…) pour former le SDK thomson Vitalmotion (puisque j’ai intégré ce groupe de demomakers).


La nouvelle mouture du SDK est donc ici vital-to8-sdk-r1.1.zip

3 exemples sont inclus:

_ un programme purement asm (toujours l’asteroid incomplet);

_ une chaine de restitution de modules .mod sur to8

_ un tout petit exemple de code C avec mc09

Émulateur TO8 (TEO)

Il s’agit ici de la version « historique » de TEO. Le projet est depuis des années sur sourceforge.

Les rares utilisateurs thomson encore vivants en 1997 ont migré vers les TO8 et TO9, cette machine est donc une cible plus intéressante.
Je trouve en brocante une machine à remettre en état, elle a visiblement séjourné dans l’eau mais se contente d’un nettoyage poussé pour démarrer correctement. Sa ROM est transférée sur disquette, puis transférée sur le PC avec les outils TDS (pour Thomson Disk System).
Je dérive un émulateur à partir de l’émulateur MO5. Le projet intéresse quelques personnes dont E.Botcazou qui le reprendra intégralement en 1999 (il reprendra par la suite le projet Allegro). Par la suite le projet est resté un peu en l’état jusqu’en 2011 environ (il existait quelques versions alternatives non diffusées). En 2011 le projet reprend avec Prehisto en lead dev et d’autres contributeurs pour moderniser le tout et avoir une émulation encore plus fidèle au hardware.

XProfile Tool

La carte Xprofile ™ est un contrôleur de disque dur compatible avec les Apple lisa et ///. Le Xprofile peut utiliser une carte compact Flash pour stocker 2 volumes (odd et even)

Cet outil a été réalisé pour simplifier le backup des cartes mémoires créées avec le Xprofile et simplifier le transfert de système entre l’émulateur IDLE et une véritable machine.

Infos techniques…

Le véritable HDD profile utilise une taille de secteur inhabituelle de 532 octets (au lieu de 512). Pour obtenir cette taille sur un périphérique moderne, la carte Xprofile définit 3 stratégies de stockage. Ce paramètre est le « STAR type » dans la documentation Xprofile.

Le Xprofile ajoute également une petite partition FAT12 en début de volume pour éviter d’effacer accidentellement la carte CF si celle-ci est insérée dans un PC ou un mac.

Utilisation de l’outil…

Avec WIN32 vous pouvez utiliser cet outil (diskimage) pour gerer les images de disque brutes:

Choisissez le disque physique:

_ write to file : pour un transfert de la CF vers l’émulateur

_ Import from file : pour recopier une image sur la CF (par exemple une image modifiée avec l’outil xprofile_tool)

Pour le moment, l’outil ne peut pas écrire une image de Xprofile complete, vous devez donc formatter votre CF sur le Xprofile avec les bons paramètres STAR, puis manipuler cette image avec l’outil.

Ce que peut faire l’outil…

_ insérer dans une image de CF une image de HDD créée avec l’émulateur IDLE.

_ extraire une image de HDD d’une image de CF, puis utiliser cette image avec l’émulateur IDLE.

Limitations…

_ 5Mb profile uniquement

_ STAR types 04 et 06 uniquement

Emulation Apple LISA

Posséder un lisa était un vieux fantasme, né de la lecture de quelques pages de la revue MicroSysteme au tout début des années 80. Cette machine me fascinait… Lorsque j’ai commencé à collectionner les vieilleries, j’ai commencé à vouloir utiliser cette machine. Les occasions sur les sites d’enchères étaient trop rares et trop chères, quelques documents techniques étaient en ligne sur certaines pages, l’émulateur de Ray semblait au point mort, celui de Raphael ne marchait pas…

Je me suis donc lancé dans l’aventure…
J’ai assemblé quelques éléments, l’émulation du 68000 de Castaway, remplacée ensuite par le moteur Musashi…
Au bout de quelques semaines Macworks fonctionnait assez correctement.
Ray a probablement un peu précipité la sortie de lisaem en voyant l’avancée de mon émulateur… Et c’est tant mieux… Disons qu’il s’agit d’émulation dans un second sens…
Quelques mois plus tard mon émulateur fait tourner lisaOS puis les 2 UNIX connus pour lisa (XENIX et Uniplus).

Il me reste à reporter les amélioration du 68000 dans MESS pour corriger l’émulation lisa, ce sera pour plus tard…

Le projet n’est pas hébergé directement sur ce site mais sur le site communautaire Sourceforge : La page sur sourceforge

Lisa n’est pas encore mort(e), il(elle) bouge encore parfois sur la liste lisalist (dorénavant sur un groupe google), et également sur lowendmac.

Émulateur MO5

Nous sommes en 1995 (si si, il suffit d’y croire), mon service national se déroule tranquillement, Internet commence à se développer timidement… Quelques émulateurs de ZX Spectrum sont téléchargeables sur des sites de FTP… J’ai conservé quelques manuels de ma première machine… Manuel technique du MO5. Je commence à coder quelques instructions pour émuler un 6809, je retrouve un MO5 en vide grenier… Tout est à développer et à inventer, il faut tout d’abord dumper la ROM sans matériel spécifique… Un câble entre le lecteur de K7 du MO5 et un port annexe du port série d’un PC feront l’affaire, quelques lignes de C sous DOS (avec gestion du PIT (programmable Interval Timer) et IRQ). Un décodage FM rudimentaire et la ROM livre ses secrets.

Les premières versions sont codées en turbo C2.0 puis en pacific-C sans usage de librairie externe.

Le portage vers le mode DPMI est l’occasion de passer à GCC (plus précisément DJGPP) et Allegro.

Quelques contacts se créent autour de l’émulation MO5, C.Lesur transfère une grande quantité de K7 avec un cable que je lui envoie par la poste (je n’ai jamais encaissé son chèque de quelques francs), E.Forler développe son propre émulateur.

Lien vers la page MO5 de mon ancien site 🙂