Connexion directe entre deux Pocket

Depuis les premiers pas de PockEmul dans la multi-émulation, je rêvais de faire fonctionner le câble EA-128C permettant de relier directement deux pocket pour un CSAVE/CLOAD sans stockage K7 intermédiaire. La synchronistion m’a toujours posé problème mais j’ai tout de même fait un essai avec un petit succés:

Le premier coup, j’ai eu une ERROR 8 et au second essai c’est passé. Chose bizarre, il y a eu le dernier caractère qui n’est pas conforme. Je pensais qu’il y avait un checksum évitant les erreurs de transmission… Il faut que je regarde ça plus en détail.
De toute façon, j’avais une chance de faire marcher ce transfert car les deux pockets sont à la même fréquence d’horloge, mais avec un 576Khz d’un côté et un 768Khz de l’autre il n’y a aucune chance pour que cela marche en l’état…

Le chaînage des périphériques

Bonjour à tous,
J’ai maintenant le CE-140F qui est quasi complètement émulé et en faisant mes tests, je me suis aperçu que le système de gestion des connecteurs entre pocket et périphériques était trop limité pour pouvoir supporter le chaînage de plusieurs périphériques sur le même port. J’ai donc remis un peu à plat cette gestion et mes premiers essais sont concluant.

Je vais maintenant faire l’expérience avec une ce-126P branchée sur le ce-140F… mais sans la ce-120p…
Edit: Eh bien ça marche aussi 🙂

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:

Continuer la lecture de « Les instructions cachées du PC-1251 (suite) »

Les instructions cachées du PC-1251

Depuis les débuts du PC-1251, il est apparu que des instructions non documentées étaient présentes dans la ROM du PC-1251.
Ces instructions sont : INSTAT, OUTSTAT, SETCOM, KEY, ERROR et ROM
Avec Pockemul j’ai pu m’appercevoir que les instructions INSTAT , ROM et OUTSTAT 1 envoient des informations sur le connecteur 11 pins avec une ERROR 8.
Je n’ai pas encore testé les autres car elles necessitent des paramètres qui lorsqu’ils sont omis produisent une ERROR 1.
Continuer la lecture de « Les instructions cachées du PC-1251 »

CE-140F la suite

Après avoir remis en état mon ce-140f je me suis lancé dans l’utilisation de mon analyseur logique pour essayer de comprendre ce que répond le floppy au pocket.Grosse désillusion.
Autant mon analyseur fonctionne trés bien avec une CE-126P ou pour la phase de négociation du code du périphérique, autant plus rien ne marche lorsque le bidirectionnel commence. Il y a surement une explication à ça, j’y comprend pas grand chose en électronique …
J’ai donc cherché une autre piste d’investigation. J’ai trouvé sur le site de mon ami Simon un schéma simulant le floppy sur une interface serie avec son executable côté PC. Je me suis dis que cet executable devait avoir toutes les informations qu’il me manque. Je l’ai donc désassemblé (c’est du DOS x86 16bit) et décortiqué (dur l’ASM généré par un compilateur) afin d’extraire les réponses qu’il fait au pocket. Ce fut un peu long certes, mais ça en valait la peine.
J’ai pour l’instant les instructions suivantes qui fonctionnent : DSKF, FILES, SAVE, LOAD et KILL.
Je suis trop content de moi car c’était pas évident de trouver notamment le découpage par bloc de 256 octets , le calcul des Checksum et bien d’autres bizarreries.

Maintenant la question que je me pose c’est si je gère chaque fichier dans le File System du pc ou si je  simule le File System du floppy. Je me demande s’il est compatible avec le FS du ce-1600F …
Bon ben voilà, à bientôt pour la suite.