aldweb

Close I. aldweb

Close II. PC Freeware

Close III. Palm Freeware

Close IV. Palm Shareware

Close V. iziBasic Palm

Close VI. Palm Knowledge

Close VII. Pocket Computer

Close VIII. miniPortail

Search




Newsletter
To receive news about this website, consider subscribing to our Newsletter.
Subscribe
Unsubscribe
298 Subscribers
Webmaster - Infos
Visits

   visitors

   visitors online

article.gifThe hidden side of the Sharp PC-1211

La face cachée du Sharp PC-1211
© Christophe LE GLATIN, 1999 ( reproduit ici avec son aimable autorisation )





C'est quoi la "Face cachée" !?! C'est en quelque sorte l'accès à des possibilités non officielles, mais bien réelles de l'ordinateur. C'est sous couvert de cette raison que les pionniers du PC-1211 s'en sont donné à coeur joie pour faire délirer leurs micropoches, souvent pour une autre raison : Le goût de l'interdit : savoir "ce que SHARP tente de nous cacher" ! El la joie de dire dans la foulée "na na nèr-eu on sait !". Cependant cette exploration de la face cachée revêt un intérêt évident : comprendre le fonctionnement interne du PC-1211 !


Quand tout a commencé


A ma connaissance, c'est en avril 1981 (z'ont pas perdu de temps...) qu'est mentionnée pour la première fois un "accès interdit", dans le magazine "L'Ordinateur individuel" n° 26. Marc Saal et Christian Boyer nous expliquent de "faire la petite manipulation suivante : se positionner en mode PRO, faire NEW puis ENTER, taper 10 PRINT A ENTER, taper 10 ENTER (...) appelons alors A(204) ENTER, le résultat est 0.000151%01. C'est l'image de la ligne BASIC, inversée". Ceci est d'ores et déjà suffisant pour établir une première mouture de la table des codes des instructions standards...


Ce qu'on savait hier


Ce premier article lance les utilisateurs à la quête des trésors cachés du PC-1211 et c'est peu après que dans le n°1 du nouveau magazine "L'Ordinateur de poche" paraît l'article qui fera référence, "La fache cachée du SHARP PC-1211" de Serge Boisse et Jean-Paul Cotillon. Eux ne se contentent pas d'établir la table des codes, ils découvrent une manipulation "magique" au clavier, qu'ils baptisent "Sésame", et qui va leur permettre d'accédér à une sorte de moniteur système imprévu, le "Compteur hexadécimal", qui imposera au PC-1211 de révéler tous ses secrets... Ce "Sésame", outre le décodage d'instructions, va également permettre leur codage direct et c'est ainsi que par la suite figureront dans la presse des articles expliquant le comment et pourquoi de nouvelles instructions...

Alors bon, qu'est-ce qu'on a appris ? En premier lieu : il a existé deux générations de PC-1211. Ceux de la première portée, tiltés par le Sésame de l'OP n°1 nous révèlent l'ensemble de sa mémoire. Ceux de la deuxième, qui existent à beaucoup plus d'exemplaires, ont eu leur système mis à jour car ils sont récalcitrants au "Sésame" première version. Il a fallu trouver un Sésame next gen et celui ci ne permet que l'accès aux 1536 octets des TC5514. Le mien est un next gen...


Le Sésame pour PC-1211 next gen ?
* Faire NEW en mode PRO.
* Taper en mode PRO "10 PRINT 1", ENTER.
* Taper "20 PRINT", ENTER, ligne que l'on efface aussitôt par "20", ENTER.
* Passer en mode RUN.
* Taper "RUN", ENTER, affichage "1.".
* taper "MEM", ENTER, affichage "1419STEPS 177 MEMORIES".
* Taper BREAK, affichage "BREAK AT 10".
* Taper ENTER, l'affichage indique une erreur 1 à la ligne 0 (!).
* Taper CL, passer en mode PRO.
* Taper la touche flèche descendante et laisser appuyé dessus.
* Apparition de la ligne "20 PRINT" (ressucitée !).
* Apparition du compteur hexadécimal !

Comment ça marche ? Le PC-1211 est un 4 bits : Il adresse donc sa mémoire par quartets. Les trois premiers chiffres (hexa) en guise de numéro de ligne correspondent à l'adresse actuelle du pointeur (de 000 à FFF, ce qui lui permet d'adresser 4096 quartets). Les 4 chiffres suivants sont toujours "8000". A la suite, s'il y a quelque chose en mémoire, les données apparaissent sous forme interprétée en BASIC en commençant par le code dont l'adresse est celle affichée, augmentée de 4. Ca va, vous me suivez toujours ? Ca a l'air compliqué comme ça, mais on s'y fait vite.

Après moults explorations et recherches, voici la carte de la mémoire que l'on peut établir :
000 - 05F : zone de la mémoire de réserve (96 quartets soit 48 o)
060 - B7F : zone de la mémoire utilisateur (2848 quartets soit 1424 o)
B80 - BBF : zone des variables fixes Z à W (64 quartets soit 32 o)
BC0 - BFF : pile des boucles, des sous-programmes et des parenthèses (64 quartets soit 32 o)
C00 - FFF : miroir de la zone 800 - BFF

Bien, OK pour le décodage. A présent le codage, comment on fait ? On sait déjà que le codage dans les variables se fait dans le "sens inverse" que celui dans le programme BASIC. Et, ce qui est intéressant, c'est que même si les codes sont interprétés par groupe de deux quartets, le codage inverse dans les variables s'effectue quartet par quartet...


Un exemple ? Admettons que l'on place dans la variable A$(202) une chaîne de 7 "Z" (code 6A) et que l'on regarde par le Sésame dans la mémoire (pour voir le contenu de cette variable interprétée en BASIC, c'est à dire "à l'endroit"), à l'adresse de cette variable on obtiendra une série de fonctions "EXP" de code... A6 ! Là c'était un exemple où les codes 6A et A6 sont standards.

Autre exemple : Remplacez les 7 "Z" par 7 "H" (code 58) dans cette même variable et retournez voir ce que l'on obtient par le Sésame : Plus de EXPs, mais visiblement quelque chose d'inlistable, et qui joue avec les indicateurs et le BEEP du SHARP. Le code 85 ne semble pas être, lui, vraiment standard...

Certes, le code 85 ne sert pas à grand chose. Mais grâce à cette possibilité, certains sont partis à la quête de nouvelles intructions "utiles", et la table des codes s'en est trouvée agrandie d'autant... On a trouvé, notamment, un autre caractère "insertion" et un autre caractère "guillemets", parfaitement programmables et mémorisables (codes respectifs 3A et 3C). On a aussi trouvé le moyen de programmer et mémoriser le curseur (code 50). on a trouvé aussi un autre code, le 3F, qui s'affiche "#" mais qui est très utile si on l'exécute : Il permet d'obtenir un affichage graphique point par point. Enfin pour finir, deux petites sucreries : les instructions STEPS et MEMORIES (codes AE et AF). Ces fonctions sont parfaitement inutiles, mais c'est juste pour le sport. Et MEMORIES peut se vanter d'être l'instruction la plus longue du PC-1211... Par contre leur intérêt n'est pas complètement nul : Si on liste STEPS et MEMORIES sur la CE-122, on obtient respectivement PI et SQR ! Cela veut dire que d'une part la CE-122 a sa propre table des codes, et d'autre part que SHARP avait en projet (sans suite) de concevoir un autre micropoche qui disposerait des intructions SQR et PI et qui s'enficherait dans la CE-122...


Voilà ! A l'époque, on savait donc pas mal de choses. Mais à regarder de près, on ne pouvait s'empêcher de constater qu'ils restait encore des "blancs" dans la table des codes. Les manquants étaient impossible à synthétiser directement avec le PC-1211 seul. Pour les synthétiser, le seul moyen serait une aide extérieure...


Ce que l'on sait aujourd'hui


Aujourd'hui nous disposons d'outils informatiques extrêmement puissants. En particulier aptes au traitement du son. Les enregistrements cassette du PC-1211 sont des fichiers sonores...

Nous avons des pécés modernes : servons-nous en pour traiter les enregistrements sonores du PC-1211 !! Encore faut-il connaître la structure des enregistrements cassette du PC-1211. C'est là que l'article de Christian Boyer (eh oui, encore lui !), paru dans L'OI n° 31, va nous être d'un grand secours : tout y est expliqué. Alors une fois qu'on sait comment ça marche, il suffit d'échantillonner en WAV (en 44,1 KHz pour bien voir les bits) un CSAVE, d'y modifier les bits que l'on veut à l'aide de votre logiciel de traitement du son favori (en corrigeant les checksums !), et de réinjecter le tout dans le micropoche. J'ai testé pour vous, ça marche.

Ca veut dire quoi ? Tout simplement que, grâce cette technique, on est totalement libre de programmer n'importe quel code dans le PC-1211. Le PC moderne au service du premier micropoche : C'est beau, non ?


Voici la table complète des codes Basic.


Dans cette table, les codes sur fond blanc sont les codes standards, ceux sur fond gris ne peuvent être obtenus directement, enfin ceux sur fond noir provoquent en plus un comportement anormal du PC-1211 lors de leur listage BASIC.

Bref, aujourd'hui, on sait tout. Le PC-1211 n'a plus de secrets. Et mon Pentium bien aimé m'apporte désormais ce qui a toujours manqué dans le PC-1211 : les précieuses fonctionnalités de PEEK et de POKE...


Conclusion


Une seule conclusion s'impose : synthétiser l'ensemble des codes "cachés" utiles du PC-1211 dans une même configuration de mémoire de réserve pour les avoir à disposition en permanence ! C'est ce que j'ai réalisé et que je vous propose maintenant :


Le fichier WAV de l'enregistrement cassette
de la configuration de la mémoire de réserve
"Face cachée"


Pour le charger, raccordez la sortie de votre carte son vers l'entrée EAR de votre CE-121 ou CE-122, en mettant assez fort pour que le PC-1211 entende bien, tapez y CLOAD "FCACHEE" ENTER et lisez le fichier WAV à l'aide de votre player favori. A l'issue, vous devez obtenir :
L'instruction STEPS (code AE) affectée à la touche A
L'instruction MEMORIES (code AF) affectée à la touche S
L'instruction # (code 3F) affectée à la touche D
Le caractère "insertion" (code 3A) affectée à la touche Z
Le caractère "guillemets" (code 3C) affectée à la touche X
Le caractère "curseur" (code 50) affectée à la touche C
Il ne vous reste plus qu'à effectuer un CSAVE normal (sur cassette) de cette configuration de la mémoire de réserve et d'utiliser ces nouveaux codes comme vous l'entendez dans vos programmes...

Si vous avez des commentaires, infos, critiques (constructives) à apporter à cette page, n'hésitez-pas à me contacter.


Creation date : 07/02/2003 @ 19:51
Last update : 18/03/2018 @ 15:19
Category :


Print the article Print the article

 
react.gifReactions to this article


Reaction #11 

by SergeBoisse 29/01/2012 @ 19:23

Ah les enfants, que de souvenirs ! C'est vrai qu'avec mon copain jean-paul on avait fait cet article dans le N°1 de l'OP...  Puis on a basculé sur le FX702P dont le codage interne des instructions permettait de "caser" des programmes plus long en mémoire. Je suis encore revenu chez sharp avec le PC1251 puis le PC1500... dire que ça fait plus de trente ans !
http://sboisse.free.fr/technique/info/vintage.php

Reaction #10 

by Jean 03/06/2011 @ 18:59

J'ai 56 ans et toujours mon TRS-80 sous la main.

De bons vieux souvenirs

JF

Reaction #9 

by aldweb 22/02/2009 @ 12:33

Bonjour garry,

On peut trouver le manuel (en anglais) du CE-122 ici : http://www.classiccmp.org/dunfield/t80ppc/

Viser la ligne PC-1 Printer/Cassette interface manual, le Radio Shack PC-1 étant le clone du Sharp PC-1211.

@+
aldweb

Reaction #8 

by garry 22/02/2009 @ 10:59

Je ne sais pas comment utiliser avec le "printer" CE-122
je n'ais pas trouver les commands LPRINT ou LLIST
j'ais le manual de PC-1211 mais non de CE-122

Reaction #7 

by aldweb 24/01/2007 @ 22:27

Bravo Sébastien d'y voir un rajeunissement !

@+
aldweb
StartPrevious [ 1 2 3 ] NextEnd
 
Special !



Mobile version of
the aldweb Site

m.aldweb.com


Neither French, nor English?

Try one of these flags then:
[de] [es] [it] [pt]
Weather / Spam / www

Lyon Weather


aldweb against spam


Family's web sites

Friends News
Poll
What do you think of the new design of the aldweb Site?
 
Great !
Beautiful
Average
So ugly...
Results
^ Top ^