Projet expérimental émulateur Minitel sur MSX 1

Hello!

Voici un premier (enfin, Xième !) jet d’un projet (expérimental, pour le fun) que j’ai, à savoir un émulateur Minitel pour micro-ordinateur MSX1 (avec toutes ses contraintes quant au graphisme pour ceux qui connaissent !)

La première étape est donc de pouvoir afficher plus ou moins correctement des fichiers videotex, à la norme CEPT2.

Pas facile, sachant qu’un écran videotex est composé de 25 lignes de 40 caractères de 8 pixels X 8 pixels, pour une résolution de 320 x 200, avec 2 couleurs parmi 8 par caractère.

Et scrolling vertical haut et bas pris en charge ainsi que les caractères double hauteur, double largeur et double taille.

Bref, pas du tout la résolution d’un MSX 1 : 24 lignes de 32 caractères de 8x8 pixels, 256x192 pixels, avec une limite de 2 couleurs pa rangées de 8 pixels. C’est le challenge !

Deux possibilités s’offraient : afficher uniquement des lignes de 32 caractères et proposer un scrolling horizontal pour voir les 8 caractères manquants.

Ou redéfinir l’écran pour obtenir 40 caractères de 6 pixels de large.

J’ai choisi la deuxième solution, la plus complexe : les caractères sont de 6 pixels de large x 8 pixels de haut et dessinés « à cheval » entre chaque tuile (emplacement) avec un décalage variable cyclique.

Et les couleurs doivent suivre (comme elles peuvent, sachant qu’avec le décalage on peut se retrouver avec 4 couleurs alors qu’on ne peut en afficher que 2), avec la contrainte du mode Screen2 des MSX de 2 couleurs par ligne 8 pixels !

L’écran est donc de 40 caractères sur 24 lignes (et non 25 comme sur un minitel : la ligne 00 (celle du haut) est affiché en ligne 1, mais se comporte comme la ligne 0 dans ce cas).

J’ai repris la police de caractères des vrais minitels.

Voici le résultat pour le moment, soyez indulgent c’est mon premier projet (hors programmes en Basic en 1985) sur MSX (et même sur n’importe quel ordinosaure !) :

Video Eminex 0.0.1, sur émulateur MSX1 Canon V20

Alors, l’émulation est je pense correcte à 75%.
C’est peu et beaucoup à la fois, compte tenu des contraintes.

Plus la page est chargée en graphisme « complexes », plus cela est difficile pour obtenir un affichage correct.

On ne peut parfois (souvent) pas obtenir l’affichage comme on désirerai du aux contraintes de l’ordi.

Certaines choses ne sont pas émulées, dont: séquences CSI, masquage, DRCS,…
Tout comme le clignotement, hors de portée je pense, le MSX1 ne le prenant pas en charge nativement.

Le scrolling serait à revoir, tout comme la propagation des couleurs de fond et du soulignement.

Ainsi qu’une optimisation de la vitesse d’affichage (mettre toutes mes variables en globale serait parait-il bon pour cela…)

Je suis relativement content car le résultat est un affichage somme toute tout à fait utilisable.

Le prochaine étape (hormis optimiser ce qui est déjà fait), est la partie connexion.

Pour cela je pense utiliser la cartouche modem BadCat Wifi que j’ai qui permet à un ordinateur MSX de se connecter en Wifi.

Si j’arrive à obtenir une connexion telnet avec MiniPavi, cela sera alors parfait !

4 « J'aime »

J’adore l’idée de recréer le minitel sur d’autres plates-formes ! J’avais eu pour idée de créer une cartouche Nintendo DS Minitel, mais j’avais besoin de recréer (/ ajouter en externe) un modem et l’espace physique est très limité

2 « J'aime »

Mais où s’arrêtera-t-il ?

1 « J'aime »

C’est déjà pas mal avancé, bravo!
Par contre, pour caser ton soulignement, tu penses « écraser » les caractères? Les cases sur minitel font 10px de haut, pas huit.

ah oui, 10 lignes tu as raison !
Le soulignement je le gère déjà, c’est sa propagation que je ne gère pas.
Oui, j’écrase la dernière ligne du caractère ! Pas le choix !

Bonjour Ludojey :slightly_smiling_face:

Bravo pour tes avancées et le travail. Je te suis aussi sur le village MSX également et c’est trés intéressant de voir la progression et les échanges techniques. En théorie, ce que tu réalise pour le MSX1 sera compatible avec les autres générations du standard (MSX2 et suite).

Tous mes encouragements. J’ai bien hâte de tester une connection au site, que ce soit par l’un de mes MSX2 et plus) ou via mon Minitel 1B et sa carte Minitel ESP32.

1 « J'aime »

Bonjour,

Serait-il possible d’utiliser cet émulateur avec un modem d’époque pour MSX, si il en existe qui prennent en charge le V23?

Cordialement.

En théorie, il devrait être possible d’adapter le programme pour qu’il communique avec un modem adapté, ou via un port rs232.

La je vais me concentrer pour que cela fonctionne avec la cartouche Wi-Fi que j’ai.

Après mon retour, car le je fais le touriste jusqu’à février !

1 « J'aime »

Bonne idée d’allié l’ancien au moderne :slight_smile:

Sinon, ce modem pourrait peut-être être un bon candidat, il est compatible V23 :slight_smile:

Cordialement.

1 « J'aime »

Et voilà une version 0.1 de prête !

L’émulation est loin d’être parfaite, déjà à cause des contraintes d’affichage des MSX1 (mode Screen 2, 192x256 pixels, 2 couleurs max par blocs de 8x1 pixels alors que la font utilisée est de 6x8 pour faire tenir les 40 colonnes sur l’écran), ensuite cette version n’émule pas l’entièreté de la norme.

Ajouté à cela quelques bug d’affichage !

Enfin, c’est déjà pas mal je trouve pour la version 0.1 !

Voici une video YT de démo (sur un Canon V20) équipé d’une cartouche BadCat modem Wifi (pour la connexion internet):

Et quelques photos :

Le dépôt GitHub où se trouve le programme est ici :

Lorsque j’aurais corrigé quelques bugs et nettoyé le code, je publierai également les sources (C).

Il y a deux versions :

  • Une pour un chargement par K7 : cela permet à ceux qui auraient un ordi MSX 1 sans rien d’autre (pas de gotek ou autres trucs de ce genre) de pouvoir tout de même charger le programme via le port K7 en connectant celui-ci à la sortie audio d’un PC/mac ou mobile. Je voulais que le programme soit accessible au plus grand monde (d’où le choix d’une compatibilité avec les premières versions du MSX, et pas seulement à partir des MSX2)
  • Une pour un chargement par disquette (qui permet également la visualisation de fichiers videotex présents sur celle-ci).
4 « J'aime »