Vers la fin du mois de Mars 2020, lors d'une de mes visites périodiques à un magasin
Hard Off (une chaîne japonaise vendant, entre-autre, du matériel électronique usagé), je suis
tombé par hasard sur un ordinateur MSX fabriqué par Sony, modèle HB-10. Il n'était pas testé, mais il était physiquement
en bon était et le prix semblait raisonnable alors j'ai décidé de l'acheter.
L'ordinateur Sony HB-10 que j'ai acheté
Je ne connais strictement rien aux ordinateurs MSX. C'était très peu commun il me semble là où j'ai grandi au Canada.
Je soupçonne que ce type d'ordinateur a connu beaucoup plus de succés au Japon et en Europe... Quoi qu'il en soit,
je suis curieux et le Retro Challenge Retry est la parfaite occasion
pour passer du temps à faire fonctionner cet ordinateur Sony HB-10 et à me familiariser avec l'écosystème MSX.
Une fois que mon MSX sera fonctionnel (sans trop de difficultés j'espère) mon premier objectif sera
de jouer à un certain jeu qu'un développeur que je suis sur Twitter (@reidrac)
a récemment terminé de créer. Ce nouveau jeu MSX qui semble vraiment très bien est nommé Uchūsen Gamma. Voici quelques screenshots:
Petite inspection visuelle
Il ne manque aucune touche au clavier. Restera à faire un bon nettoyage plus tard.
Il y avait de légères traces d'oxydation sur les connecteurs, en particulier sur la sortie RF.
Mais sinon l'intérieur était en parfait état, sauf un peu de poussière.
Alimenter la bête!
L'ordinateur était vendu sans câbles et sans bloc d'alimentation. L'absence de bloc d'alimentation
était d'ailleur l'excuse du magain pour ne pas avoir testé cet item. J'allais donc devoir me débrouiller
pour l'alimenter.
Selon l'étiquette du dessous, il faudrait fournir 6V DC et 16V AC...
Je n'avais rien sous la main pour fournir ces tensions alors je me suis demandé, cette machine fonctionne
surement avec 5v DC à l'interne... Puis-je simplement injecter 5v DC? Pourquoi la machine demande-t-elle
une alimentation 16v AC? Quel usage en fait-elle?
Pour répondre à ces questions, j'ai consulté le manuel de service d'un modèle similaire qui était
disponible sur Archive.org. Ce manuel n'est pas exactement le bon, j'ai la version japonaise HB-10 alors
que ce manuel est pour les modèles HB-10P (Europe) et HB-10B (Angleterre). Mais selon cette
page concernant la série HB-10 du Wiki MSX,
les différences seraient surtout au niveau du clavier et des connecteurs Audio/Vidéo.
6V DC: Tension abaissée à 5V DC à l'aide d'un régulateur 7805.
16V AC: Utilisé pour générer 12V et -12V à l'aide de régulateur 7812 et 7912.
12V: Présent sur le port de cassette dans les fentes pour cartouche.
-12V: Présent sur les fentes pour cartouches.
Je n'ai trouvé aucun endroit sur la carte mère où les alimentations 12 et -12v sont utilisés. Je prévois
me servir du port de casstte, mais il sera branché à la sortie audio d'un PC. Je n'utiliserai pas le 12v.
Je ne possède pas encore de cartouches, mais je soupçonne que la plupart fonctionnent avec 5v seulement.
Conclusion: Pour le moment, je peux me contenter d'injecter 5v, car je n'utiliserai pas les tensions +12,-12, et l'alimentation
6V brute (avant d'être abaissée à 5v) ne sert pas. Je ferai peut-être mieux plus tard, mais pour l'instant, j'ai simplement
soudé un câble USB à la sortie du régulateur...
J'ai raccordé l'ordinateur à un écran PVM de Sony (très approprié, même marque que le PC) et j'ai branché le câble USB...
Et l'ordinateur semble fonctionner à merveille!
Toutes les touches du clavier fonctionnent bien! Je me suis amusé à coder un petit programme Hello, World! en BASIC.
J'ai eu de la chance, l'ordinateur ne semble pas avoir besoin de réparations! Je suis un peu déçu, un petit déboggage
de carte mère, un remplacement de CPU ou de mémoire (pièces qui sont soudées) aurait été un petit défi amusant à relever,
mais bon...
Prochaine étape: Charger le jeu Uchūsen Gamma!
Uchūsen Gamma
Uchūsen Gamma est distribué sous forme de fichier ROM (cartouche) et fichier CAS (cassette). Mon plan était de charger le jeu par le port
de cassette de l'ordinateur en le raccordant à la carte de son de mon PC. Pour cela, il me fallait un câble! Comme je n'avais
le bon type de connecteur DIN sous la main, j'ai simplement utilisé des fils. Les pièces pour faire un câble plus propre sont en commande...
Connecteur audio et fils
Fils dans le connecteur DIN
Pour transformer le fichier .CAS en son, j'ai utilisé le projet MSX CAS Packager
qui permet d'obtenir un fichier .WAV.
J'ai passé le fichier .WAV à VLC, tapé load"cas:",r sur le MSX et appuyé sur PLAY dans VLC. Quelques
secondes plus tard, les mots "Found:ugamma" sont apparus à l'écran. Très bon signe!
Mais il était trop tôt pour crier victoire. Car peu de temps après....
Mais je croyais que Uchūsen Gamma était un jeu pour MSX avec 16k de RAM.. J'avais mal lu la page du jeu. La version cassette
demande 64k... C'est logique, car après tout, s'il n'est pas en ROM, le code du jeu doit être chargé en mémoire...
Bon, alors mon modèle de MSX n'a que 16k de mémoire. Dans la série HB-10, seul le modèle japonais (le mien) a 16k de mémore. Tous les
autres modèles ont 64k. Vraiment pas de chance... Il n'y a qu'une chose à faire: Ajouter de la mémoire et réessayer!
Extension de mémoire
Selon les informations disponibles sur le wiki MSX concernant la
série HB-10, le modèle HB-10 comporte 16k de mémoire dans la SLOT 0
alors que tous les autres modèles (HB-10P, HB-10B, HB-10D) auraient 64k dans la SLOT 3.
Je vais tenter deux approches pour augmenter la mémoire de mon HB-10.
Fabriquer une cartouche de mémoire. Il suffira de l'insérer dans une des deux fentes pour ajouter 64k de mémoire vive au système.
Modifier la carte mère pour avoir 64k de mémoire.
Les pièces pour les deux approches sont déjà en commande et arriveront vers la fin du mois.
J'ai bon espoir pour la modification de la carte mère. En ce moment, deux puces TMS4416 (IC10 et IC11) sont installées.
On remarque tout de suite les inscriptions sur le circuit imprimé 4416(N) et 4464(P). Je pense que N est pour NTSC et
P pour PAL. Dans le contexte du HB-10, sachant qu'il a été vendu au Japon et en Europe, NTSC = Japon, PAL = Europe, et qui
dit Europe dit 64k! Le plan est donc de remplacer les deux TMS4416 par des TMS4464 et faire les autres modifications
qui s'imposeront. Par exemple, en regardant la carte, je peux voir d'autres composants optionnels identifiés par (N) et (P),
notammant R61 et C43.
Je n'ai pas le manuel de service Japonais, mais j'ai celui de la version européenne qui provient de archive.org. Le schéma
du circuit de mémoire me sera surement très utile pour comprendre les modifications!
Câble de cassette
La pièce qui me manquait pour fabriquer un câble de cassette, un connecteur DIN à 8 broches, est arrivée!
Les composants
Câblage
Câblage
Et voilà!
Câble branché
BASIC 10-liners et KansasEncoder
En attendant les pièces pour augmenter la mémoire de mon MSX, j'ai eu l'idée d'essayer
des jeux du concours annuel de programmation BASIC en 10 lignes
(Basic 10 liner contest).
Pour ne pas avoir à les taper, je les charge par le port de cassette!
Pour convertir le programme en son, j'utilise un petit outil tout à fait génial qui tourne à même un navigateur web:
KansasEncoder for MSX. Il suffit de copier-coller
le texte du programme dans la boîte et d'appuyer sur Play après avoir tapé Load"cas:" sur le MSX!
À titre d'exemple, voici un jeu que j'ai beaucoup apprécié dans le concours 2019 (Il a remporté la huitième place) Ballistic Challenge!
Je récupère d'abord le code...
Le code de Ballistic Challenge sur github
Je le recopie dans KansasEncoder...
Le code dans KansasEncoder
Je tape load"cas:" sur le MSX, j'appuie sur Play dans KansasEncoder, et quelques instants plus tard...
Et hop! Le jeu tourne sur mon MSX!
Voici un autre jeu vraiment pas mal pour seulement 10 lignes, SuperFish! (Celui-ci a remporté la quatrième place du concours)
Le jeu dans KansasEncoder..
Et il tourne sur mon MSX!
Cartouche mémoire 64KB
J'ai finalement reçu les pièces pour me fabriquer une cartouche permettant d'ajouter 64 kilo-octets à ma machine MSX qui n'en a que 16.
J'ai conçu un petit circuit imprimé utilisant une puce SRAM de 128KB. La raison pour l'emploi d'une puce SRAM du double de la taille
requise est que je voulais utiliser des pièces neuvent, et malheureusement le choix est limité de nos jours...
Schéma
Alors bon, voici d'abord le schéma:
Lors de la conception, j'ai fait mon possible pour suivre les conseils
disponibles sur le Wiki MSX à
https://www.msx.org/wiki/Hardware_Design, du moins ceux qui me semblaient
applicables à ma situation. En particulier, je me suis assuré d'utiliser une SRAM
compatible TTL et pour faciliter des modifications et expériences futures, j'ai
bien exposé tous les signaux du connecteur de cartouche.
Circuit imprimé
Le circuit imprimé est aux dimensions des circuits de type Konami.
Circuit imprimé
Assemblé et installé
Vous en voulez un tout fait?
Conformément à mon habitude, j'en ai fabriqué plusieurs et ils sont en vente sur
raphnet-tech.com
Test 1
Le premier test que j'ai fait était de vérifier si BASIC voyait la mémoire supplémentaire. Et oui, la mémoire
libre passe de 12431 octets à 28815 octets!
Avant...
Carte insérée...
Et après!
Seulement 28815 alors que je viens d'ajouter une cartouche de 64kB? C'est normal. L'unité centrale peut
accéder un espace de 64k, et 32k sont d'entrée de jeu occupés par le ROM qui contient le code du BIOS et BASIC.
Comme BASIC utilise un peu de mémoire RAM également, des 32768 octets de mémoire ne restent que 28815 octets.
BASIC ne touchant qu'à 32kB de mémoire, j'ai eu recours à un autre outil conçu pour examiner
le contenu des différentes "slots" dans le système. Il s'agit de TINY SLOT CHECKER par Tiny-yarou.
http://www.tiny-yarou.com/slotchecker.html
Le .zip de cet outil contient plusieurs version de l'outil, dont une version cassette au format .WAV bien
pratique pour moi. Suffit d'utiliser VLC et le câble de cassette que j'ai fabriqué.
Test avec Tiny Slot Checker
On voit ci-dessus que Tiny Slot Checker détecte de la mémoire dans slot 1 (fente pour cartouche de gauche),
et c'est bien là où j'ai inséré mon extension de mémoire. La page 3 de slot 0 est la mémoire vive interne,
et c'est de là que l'outil s'exécute. La version mémoire vive (contrairement à la version cartouche) de Tiny
Slot Checker ne peut pas inspecter la page 3, ce qui explique les cases vides...
Test 3
J'aurais aimé faire un test avec un outil spécialement conçu pour tester la mémoire vive, mais je
n'ai pas trouvé un tel outil en format cassette... alors il ne restait qu'un chose à faire:
Réessayer de jouer à Uchūsen Gamma!
Cette fois avec 64k de mémoire, il ne devrait pas y avoir de problèmes!
Eh oui, après quelques instants, plutôt qu'un message comme quoi il n'y a pas assez de mémoire, un écran
de chargement est apparu! Et environ 5 minutes plus tard, le jeu était lancé!
Écran de chargement
Enfin le jeu!
Enfin le jeu!
J'espère bientôt (les pièces sont commandées) pouvoir remplacer ma cartouche d'expansion de mémoire par une modification
internel de la machine qui consistera à remplacer les deux puces 4416 par une paire de puces 4464 (plus quelques
modifications qui s'imposent). Comme ce sera amusant!
Mais en attendant, je vais jouer à quelques jeux et peut-être faire un adaptateur de joystick...
À suivre...
Fin du RC2020/04 et suite
J'ai tenté de modifier ma machine pour y intégrer directement 64k de mémoire vive en remplaçant les puces 4416 par des 4464 et en modifiant l'emplacement
de plusieurs fils et résistances, selon les indications (P) et (N) sur la carte mère, mais malheureusement j'ai échoué. Et le RetroChallenge a pris fin.
J'ai toutefois continué (et continuerai probablement très longtemps) de jouer avec mon MSX, et le tout sera documenté dans les sections suivantes.
PCB ROM 64k (48k)
Le temps de chargement des jeux par le port cassette est un peu long, je dois patienter 5 minutes chaque fois que j'ai
envie de jouer à Uchuusen gamma! Pour régler ce petit problème, j'ai décidé de concevoir un petit circuit imprimé simple
permettant d'utiliser un EPROM de 64k. Les dimensions et l'emplacement des trous permettent au circuit d'être installé
dans un boîtier de style Konami.
Le circuit imprimé, côté pièces
Le circuit imprimé, côté soudure
Il s'agit d'un câblage direct utilisant le signal SLTSL (Slot select). L'entièreté de la slot où le
circuit est inséré est donc occupée par l'EPROM. Naturellement, seulement 48k risquent d'êtres utilisables, puisqu'il faudra normalement
garder une page de mémoire vive active. (J'ai quelques idées de techniques de programmation qui pourraient permettre de contourner
cet obstacle, en particulier sur un MSX ayant au delà de 16k de mémoire vive, mais j'ignore s'il existe des logiciels qui font
ce genre de chose)
Lorsqu'on programme un EPROM pour un jeu ou outil de moins de 48k, disons 16k par exemple, il faut programmer les adresses
correspondant à la page 1, c'est à dire les addresse 4000 à 7FFF. Il est aussi possible d'utiliser un EPROM plus petit que 64k,
par exemple 32k, mais puisque mon circuit utilise le signal de SLOT SELECT, le contenu du ROM sera répété (les pages 0 et 2 seront
identiques, de même que les pages 1 et 3).
Selon la taille du fichier ROM à programmer et la taille de l'EPROM utilisé, le tableau ci-dessous indique à quelle addresse le contenu
du fichier devrait être programmé dans l'EPROM:
Il pourrait y avoir des exceptions. Je n'ai pas encore fait beaucoup de tests.
Il y a une petite complication pour le cas d'un fichier 32k sur EPROM 32k. Si le contenu est destiné aux pages 1 et 2 et est stocké dans cet ordre dans le fichier,
la machine verra ce contenu dans les pages 0 et 1 (et répété dans les pages 2 et 3) - autrement dit, les pages ne seront pas dans le bon ordre! Pour
remédier à cela, il faut soit modifier le fichier pour inverser les deux blocs de 16k, soit programmer en deux passes, configurant à chaque étape l'adresse
source et l'adresse de destination à être utilisées par le programmeur d'EPROM. C'est ce que j'ai fait quand j'ai testé Cold Blood.
Voici les jeux et les puces que j'ai testés jusqu'à présent:
Voici quelques photos démontrant quelques utilisations:
Avec EPROM AT27C512R
Avec un socket
Avec un EEPROM dans un socket
Il vous en faut un?
Ce circuit est disponible dans la boutique en ligne
raphnet-tech.com.
Manette de jeu
Il est normalement possible de jouer par le clavier, mais je préfère tout de même utiliser une manette. Mon MSX est doté de
deux ports de manette sur le côté droit. Il s'agit de connecteurs à 9 broches genre DE-9 comme on retrouve sur l'Atari 2600,
le Commodore 64, la Sega Master system, la Megadrive (et bien d'autres).
J'ai branché une manette pour Master System pour voir, et cela semblait fonctionner. Mais je me suis rapidement rendu compte qu'il manquait
quelque-chose: Un seul bouton fonctionnait!
Quelques minutes plus tard, j'avais trois tableaux devant les yeux et comparait le câblage des ports SMS, Megadrive et MSX.
Broche
MSX
SMS
Megadrive
1
Haut
Haut
Haut
2
Bas
Bas
Bas
3
Gauche
Gauche
0 / Gauche
4
Droite
Droite
0 / Droite
5
+5v
+5v
6
Bouton 1
Bouton 1
Bouton A / Bouton B
7
Bouton 2
SELECT
8
Sortie(OUT)
GND
GND
9
GND
Bouton 2
Bouton C
La manette de SMS est câblée pour que le GND soit sur la broche 8 alors que la broche 8 sur MSX est une sortie pouvant
être contrôlé par le logiciel. Par défaut, la sortie est à un niveau logique bas (plus ou moins équivalent à GND), c'est
pourquoi la manette de SMS fonctionne partiellement. Mais aucune chance pour le bouton 2.
SMS
MSX
Fonction
1
1
Haut
2
2
Bas
3
3
Gauche
4
Droite
5
5*
Alimentation 5 volt (utilisée par les manettes Megadrive)
6
6
Bouton 1
7
Non câblé
8
9
GND
9
7
Bouton 2
Je me suis demandé si je devais relier la broche MSX 8 (OUT) à la broche SELECT pour les manettes Genesis. Mais le signal
OUT étant par défaut à un niveau logique bas, les directions Gauche/Droite n'aurait pas fonctionnés, et les boutons
fonctionnels auraient été Start et A.
J'aurais pu utiliser un inverseur, comme le fait le projet JoyMega, ce qui
a comme avantage de permettre l'utilisation des boutons supplémentaires des manettes Megadrive avec certains jeux et outils.
Mais comme je ne voulais qu'une manette avec deux boutons fonctionnels et un D-pad confortable pour jouer, j'ai câblé mon
adaptateur selon le tableau ci-dessus.
L'adaptateur que j'ai construit
En utilisation sur mon Sony HB-10 et une manette pour SMS
Vous en voulez un tout fait?
Conformément à mon habitude, j'en ai fabriqué plusieurs et ils sont en vente sur
raphnet-tech.com