|
Le mot de passe est stocké en clair dans la RAM (sans
cryptage) à l'adresse &H74B jusqu'à &H752
(8 caractères). Pour lire ce mot de passe, il suffit donc
d'executer la commande PRINT CHR$(PEEK(A)) , la variable A allant
de &H74B jusqu'à &H752 ou jusqu'à ce que
PEEK(A) soit égal à 0. Ainsi, pour anuler le mot
de passe, on utilisera un POKE &H74B,0. Ces manipulations
sont possibles même quand la machine est vérouillée
car les instructions PEEK et POKE ne sont pas affectées
par la mise en place du mot de passe.
Le calcul de la formule mémorisée, normalement effectuée avec la touche [CALC] peut aussi être lancée à partir d'un programme avec la commande CALCJMP. Pour mettre une formule en mémoire (l'équivalent de la touche [IN]), on utilisera la fonction CALC$. Celle-ci s'emploi comme une variable alphanumérique, à la différence que son contenu correspond à celui de la mémoire formule. On peut donc imaginer un petit programme qui sélectionnerait automatiquement une formule (d'après une liste prédéfinie), la placerait dans la mémoire de calcul et lancerait son execution. Par exemple, pour la conversion degrés Celsius <=> degrés Fahrenheit :
5 DIM F$(2) 10 F$(1)="T[d°C]=5/9*(t[d°F]-32)" 20 F$(2)="T[d°F]=9/5*t[d°C]+32" 30 CLS:PRINT"1:d°C => d°F";:PRINT:PRINT"2:d°F => d°C"; 40 K=VAL(INKEY$):IF K=1 OR K=2 THEN CALC$=F$(K):CALCJMP:ELSE 40
Contrairement à ce qui est écrit page 184 du manuel de l'utilisateur, il est tout à fait possible d'exécuter les fonctions de la bibliothèque depuis un programme BASIC. Pour cela, il existe deux commandes :
GOTO "LIB0:XXXX" GOSUB "LIB0:XXXX"
XXXX est le numéro de la fonction à appeler (respecter le format sur 4 chiffres). Apparemment, il n'y a pas de différence de fonctionnement entre ces deux commandes.
Une fonction non documentée de la bibliothèque effectue une série de tests sur la RAM, la ROM, l'affichage, l'impression etc. Il suffit de lancer la fonction 0400.
Main 8 Kbyte Option 32 Kbyte OK RAM OK 512*2 ROM ? 04 32 72 22 8D 2C
Il existe également la fonction 0800 qui teste l'imprimante. Mais comme je n'ai pas d'imprimante, je n'ai pas pu l'essayer... (Merci à Rodolphe Gand pour l'information).
Les caractères bizarres allant de 166 à 221 sont en fait des katakanas, un des deux systèmes phonétiques de l'écriture japonaise. La Casio peut afficher ces caractères directement à partir d'une saisie au clavier d'après leur correspondance en caractères occidentaux (romaji). En affichant le caractère CHR$(26) on bascule la machine en mode katakana (comme l'indique le symbole affiché en haut à gauche de l'écran). Toute séquence de touches tapée au clavier sera retranscrite en katakanas à l'écran. Pour repasser en mode normal, il suffit d'afficher le caractère CHR$(27). Pour simplifier, on peut utiliser un petit programme qui commutera automatiquement d'un mode à l'autre :
10 KANA=KANA XOR 1:PRINT CHR$(27-KANA); 15 CLS:PRINT "Clavier "; 20 IF KANA=1 THEN PRINT "japonais"; ELSE PRINT "francais";
Enfin, les caratères 241 à 246 sont également d'origne japonaise mais ce sont des idéogrammes. La signification de ceux-ci est la suivante :
241 : yen
242 : année
243 : lune, mois
244 : soleil, jour
245 : 1000
246 : 10000
Apparemment, on ne peut pas les afficher avec le clavier en mode katakana (uniquement avec la commande CHR$).
Une autre commande non documentée, DEFCHR$, permet de redéfinir les caractères 252 à 255 (ceux notés en hachurés dans le tableau page 421). La syntaxe de cette commande est la suivante :
DEFCHR$(N)="H1H2H3H4H5"
N=Numéro du caractère à redéfinir
(252-255)
H1 à H5 : Une valeur hexadécimale (2chiffres
chaque) correspondant au codage binaire de chaque colone de points
du caractère. Le bit de poids fort est celui du haut et
le bit de poids faible est non pas celui du bas mais un en dessous,
qui ne correspond donc à aucun point affiché. Pour
être plus clair, voici un exemple (avec le caractère
@):
|
|
|
|
|
Pixels affichés |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bits non affichés |
|
|
|
|
|
Valeurs hexa |
H1=01001100=&H4C H2=10010010=&H92 H3=10011110=&H9E H4=10000010=&H82 H5=01111100=&H7C DEFCHR$(N)="4C929E827C"
Pour éviter ce fastidueux travail de calcul à
chaque caractère redéfini, voici un petit programme
pour faire ça plus facilement.
Une dernière remarque : les caractères redéfinis
sont remis à zéro à l'arrêt de la machine.
On peut connaître les adresses de début et de fin des programmes BASIC (ainsi que de la banque MEMO) en examinant certaines adresses de la zone de contrôle de programmes de la RAM (voir page Cartographie de la RAM). La fonction de calcul de la taille des programmes est inclue dans mon moniteur (voir page Programmes) mais on peut en faire un programme indépendant :
10 A0=PEEK(&H6B4)*256+PEEK(&H6B3)-165 20 INPUT"N° du programme(10=MEMO):",I:IF I<0 OR I>10 THEN 20 30 A=A0+(10-I)*15 40 M=PEEK(A+3)-PEEK(A)+(PEEK(A+4)-PEEK(A+1))*256-1 50 IF I<>10 THEN PRINT"P";I;":"; ELSE PRINT "Banque MEMO :"; 60 PRINT M;"octets":GOTO 20
L'erreur OM (Out of Memory) peut survenir lorsque la mémoire est saturée. Mais cela ne concerne pas seulement la zone programmes. On peut également renconter cette erreur lors de l'utilisation des fonctions de la bibliothèque. Lorsqu'elles sont exécutées, celles-ci créent des variables (en fonction des valeurs qu'elles doivent manipuler). On peut visualiser ces variables avec la commande VARLIST. Si la zone de variables est saturée, les fonctions ne peuvent pas créer de nouvelles variables et on a donc l'erreur OM. La solution est de supprimer les variables actuellement en mémoire avec la commande CLEAR. Si ça ne résoud pas le problème, c'est peut-être que la zone de variables est trop petite (à vérifier avec FRE2). Dans ce cas, il faut la redimensionner avec la commande CLEAR suivi de la nouvelle valeur. Pour plus de détails, voir l'utilisation des commandes FRE et CLEAR.
L'erreur OM peut également se produire lors d'une défaillance de l'alimentation (si on change les trois piles en même temps par exemple) ou quand on ajoute ou enlève un module de mémoire. Ceci peut entraîner une mauvaise réinitialisation de la mémoire. Dans ce cas, il faut réiniatliser complétement la mémoire avec la manipulatuion suivante :
ATTENTION ! Cette manipulation efface tout le contenu de la mémoire de la machine. Elle ne doit être utilisée que suite aux circonstances décrites ci-dessus. Circonstances dans lesquelles, à prioris, la mémoire est déja perdue...