Ne laissons pas mourir le PC-1211

Bonjour à tous,
Les PC-1211 sont en train de disparaître à cause principalement de leurs problèmes d’écran. Bientôt il ne sera plus possible de faire fonctionner ce qui fut le premier Pocket BASIC.
Ne pensez vous pas qu’il serai important de pouvoir créer une Simulation/Émulation pour ce vénérable Pocket ?
Je me suis un peu penché sur la question et je reconnais que ça n’est pas simple. Voici les différentes pistes envisageables :
– Emulation :
– DUMPER la ROM. à priori aucun moyen de faire cela de façon logicielle, il faute donc intervenir en HARD. Pas de problème je pense pour sacrifier une machine, il y en a tellement qui ne fonctionnent pas, mais je ne connais pas la marche à suivre pour dumper physiquement une ROM.
– Trouver les infos sur le processeur SC43178. J’ai chercher et rien trouvé, donc il faudrait faire du reverse ingeneering …
– Simulation :
Alors il y a la solution de la simulation, et je vous avoue que j’ai commencé quelque chose la-dessus. Moi qui suis habitué à l’émulation, je ne suis pas à l’aise avec ce monde là. c’est une autre façon de penser.
Quand je vois la masse de code nécessaire à simuler le FX-702P, je me dis que c’est un énorme boulot. Il serait bien de rendre cela le plus générique possible afin d’avoir un moteur de simulation à même d’être décliner pour différents modèles.
– Hybride:
Une autre piste qui me trotte dans la tête serai de modifier la ROM d’un PC-1251 (le plus proche fonctionnellement) pour le brider et le faire fonctionner comme un pc-1211.
– On désassemble la ROM (facile)
– On modifie .
– on reassemble
– on intègre ça dans PockEmul
Après ces réflexions, je me suis lancé dans la simulation. J’ai une première version qui tourne avec beaucoup de limitations pour l’instant:
– pas d’éditeur. Il faut retaper la ligne BASIC si on fait une erreur.
– pas de gestion du mode Reserve
– quelque fonctions de calcul manquantes

Détail de l’instruction ROM du PC-1251

L’instruction ROM permet de charger directement en mémoire à l’adresse &B831 un programme BASIC ou Langage Machine.
Le système de communication est un simple échange série sur les broches D_IN et D_OUT, régulé par les broches ACK et BUSY.
Le Pocket envoie le code &7C et charge les données qui suivent. Les datas doivent être envoyés par paquet de 8 Bytes, chaque paquet étant suivi d’un Checksum. Le Checksum se calcule de la manière suivante :
On additionne les 4bits de poids fort puis les 4 bits de poids faible. S’il y a un Carry suite à l’addition des poids faibles on ajoute 1.
Si le dernier bloc de 8 Bytes commence par &75 alors les 7 bytes suivants du bloc correspondent au password.
Pour ce qui est du LM, il suffit de coder un prog BASIC du genre :
10 CALL &B841 suivi des codes machine,
et donc envoyer les codes : E0 10 C9 1F 52 48 44 40 00 FF xx xx xx xx xx xx ….. 37 (xx correspondant aux codes du prog LM).
La commande ROM se charge de mettre correctement à jours les pointeurs de début et fin de prog.
voilà, je suis un peu déçu qu’il n’y ai pas d’autorun … ou alors je ne l’ai pas encore trouvé.

Les instructions cachées du PC-1251 (suite)

Je viens de rajouter un truc super sympa dans PockEmul, et en plus ça n’a pas été très complexe à faire.
Je viens de créer un nouveau périphérique sur port 11 pins pouvant être paramétré en live par du javascript. On a ainsi la possibilité de rapidement faire des essais.
C’est ainsi que pour l’instruction SETCOM j’ai pu faire réagir le pocket:

Continue reading “Les instructions cachées du PC-1251 (suite)”