PockEmul sur Android

Voilà quelques temps, je découvert qu’il existait un portage de Qt sur Android.

Qt est la librairie que j’utilise afin de rendre PockEmul compatible multi-plateformes (Linux, Mac, Windows).

Aprés une simple recompilation, voici PockEmul disponible sur Android. Bien sûr j’ai du ajoutés quelques petites directives de compilation afin de prendre en compte la spécificité d’un tel OS, principalement en enlevant le menu pour le remplacer par quelques icones,  en affichant le menu contextuel par un Tap and Hold, et en gérant le pinch pour le zoom

J’en ai également profité pour changer l’écran de choix du pocket afin de le mettre un peu plus à la mode TouchScreen.

Continue reading

Posted in Work in Progress | 6 Comments

Un compilateur C dans PockEmul

Il y a quelques temps, j’ai commencé à intégrer dans PockEmul un compilateur C rudimentaire. J’ai traduit en C++ LittleC compiler développé par Simon (http://www.lehmayr.de/) en Delphi. C’est un compilateur assez simple qui m’a permis de mieux comprendre le principe de fonctionnement d’un tel module.

Le compilateur produit du code ASM qui est ensuite transformé en code machine par un Assembleur également développé par Simon. Continue reading

Posted in Pocket, Work in Progress | Tagged , , , , | Leave a comment

un petit binaire pour ceux qui veulent jouer un peu

Je passe mon temps à ajouter de nouvelles fonctionnalités en repoussant toujours à plus tard la sortie d’une release. Avec tout cela, les derniers binaires publiés sont la 0.9.2.1 qui datent énormement.

Je vous propose donc en téléchargement la 0.9.3.0 courante pour Windows que je vais m’attacher à peaufiner.

Il y a plein de truc non documentés et pas trés intuitifs, alors n’hésitez pas à me demander des précisions.

Posted in Extension, Pocket, Work in Progress | 2 Comments

Connexion directe entre deux Pockets (suite 2)

L’utilisation d’un timer à la nanoseconde afin de gérer la communication entre deux pocket n’est pas satisfaisante d’un point de vue performance. Je suis donc revenu à l’ancien système calé par tranche de 1ms.

J’ai un peu réfléchi et en fait la solution est assez simple. Tout en gardant un étalonnage de la vitesse toute les 1ms, je lance l’execution de chaque pocket pour un nombre de cycles correspondant à 1/8000ème de seconde. Cela fait que les Pockets sont suffisament synchronisés pour la fréquence de 4Khz utilisée pour le transfert K7.

Cela semble fonctionner mais je n’ai pas encore tout testé.

Posted in Pocket, Work in Progress | Leave a comment

Connexion directe entre deux Pockets (suite)

J’ai changé le système permettant le calibrage de la vitesse d’émulation dans PockEmul.
La version beta de Qt 4.8 permet de mesurer le temps en descendant à la nanoseconde, ce qui me faisait espérer pouvoir gérer les fréquences de 2 et 4Khz utilisées pour le transfert sur K7 en ayant une émulation de la vitesse régulière et non plus saccadée par tranche de 1ms.
Bref, mon premier essai entre un pc-1251 et un pc-1262 est un succés malgrés les deux fréquences de fonctionnement différentes des Pockets. Il me reste plus qu’à tester cela sur Mac, car je ne sais pas si le timer nanoseconde est vraiment multiplateforme.

Posted in Extension, Pocket | Leave a comment

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…

Posted in Pocket, Work in Progress | Leave a comment

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 🙂

Posted in CE-120P, CE-140F, Extension, PC-1280, Pocket, Work in Progress | Leave a comment

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é.

Posted in PC-1251, Pocket, Work in Progress | Leave a comment

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

Posted in Extension, PC-1251, Pocket, Work in Progress | Leave a comment

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.

Continue reading

Posted in PC-1251, Pocket, Work in Progress | Leave a comment