Les Casio FX-850P et Casio FX-880P sont deux ordinateurs de poche à vocation scientifique programmables en Basic sortis en 1987 pour le premier et en 1991 pour le second. Les deux modèles ne différent que par leur capacité mémoire qui sont respectivement de 3.536 octets et 21.456. Ce qui les distingue principalement des autres ordinateurs de poches ce sont les 116 programmes scientifiques, mathématiques et statistiques comme le calcul matriciel, les fonctions différentielles (je ne sais pas ce que c'est) ou la fonction Gamma (ça je sais). Cette idée de bibliothèque est aussi présente chez Sharp avec ses PC-E500 ou PC-E500S qui datent de la même époque.
Ces machines sont dotées d'un écran dont le contraste est modifiable via une molette et qui comporte deux lignes de 32 caractères chacune; chaque caractère majuscule ou minuscule étant représenté par une matrice de 5x7 pixels. A cet écran physique se greffe un écran "virtuel" de 8 lignes de 32 caractères dans lequel il est possible de naviguer avec les flèches et qui permet de reprendre des commandes ou des calculs déjà faits. Le clavier comporte 78 touches et n'est pas sans rappeler ceux du Sharp PC-1403 ou des PC-E500.
Elles disposent de différents modes. Bien entendu il y a les habituels modes calculatrice et Basic auxquels s'ajoute le mode Mémo qui permet de sauvegarder des numéros de téléphones par exemple. Comme son nom l'indique, le mode calculatrice (ex mode RUN) permet d'effectuer les calculs au clavier. On y passe en tapant MODE 0. Il permet aussi d'exécuter automatiquement les programmes enregistrés dans une des dix zones de programmes chères à la marque lorsqu'on en sélectionne une ([S] suivi d'un numéro de 0 à 9). A noter que dans ce mode la commande RUN est inopérante et renvoie un message d'erreur !
Le passage en mode Basic (ex mode WTR) se fait en tapant MODE 1. La sélection d'une zone programme se fait comme en mode calculatrice. Une fois la zone sélectionnée, il est possible de supprimer le programme courant grâce à la commande NEW voire supprimer tous les programmes avec un NEW ALL. Attention. La suppression d'un programme doit se faire obligatoirement avant de passer sur l'écran présentant toutes les zones mémoires. Dans ce mode, la commande RUN est active et elle exécute le programme. Cependant, je trouve très dangereux de l'utiliser dans ce contexte car si on oublie qu'on est en mode Basic et qu'on effectue un calcul, il sera interprété comme une ligne de programme. Cela aura pour conséquence soit d'ajouter une ligne qui le fera planter soit d'en remplacer une avec le même résultat.
Les numéros de lignes d'une zone doivent être compris entre 1 et 65.535 et une ligne peut contenir jusqu'à 255 caractères. Tant qu'on saisit un programme, il est possible de se balader entre les différentes lignes avec les différentes flèches. L'éditeur permet de se positionner sur le premier caractère d'une ligne ou bien sur le dernier grâce aux commandes L.TOP et L.END. Il permet même de remonter à la première ligne de l'écran virtuel avec la commande HOME.
Le Basic est très puissant. Déjà les noms de variables peuvent avoir jusqu'à 15 caractères ! Ils sont aussi sensibles à la casse. Cela signifie que PO, Po, pO et po sont des variables différentes ! Je trouve que c'est trop puissant car trop facile de se tromper.
Les noms des variables sont sensibles à la casse - 10 x 11 x 12 x 13 = 17160
Les variables numériques vont jusqu'à +/- 9.999999999^99 avec calculs sur 12 chiffres et les alphanumériques acceptent jusqu'à 255 caractères alors que sur des machines certes plus anciennes comme le Sharp PC-1500 ou le Casio FX-702P on avait par défaut et respectivement 16 et 7 caractères au maximum pour les variables A$ à Z$. Cerise sur le gâteau, A et A$ sont des variables différentes ! La mémoire allouée aux variables, par défaut 1536 octets pour le 850P et 8192 pour le 880P, peut être définie par l'utilisateur diminuant ou augmentant d'autant la mémoire programme grâce à la commande CLEAR suivie du nombre d'octets. Plus fort, les tableaux peuvent avoir une dimension n au lieu des deux habituellement présentes sur la plupart des autres machines toutes marques confondues. Si on ajoute les 29 niveaux d'imbrications de boucles FOR NEXT et les 99 niveaux pour les sous-programmes on se rend compte qu'on est "presque" illimité. Mine de rien, ça permet de faire de la programmation récursive du moment qu'on connaît à peu près combien le nombre d'imbrications !!! L'exemple ci-dessous montre le calcul d'une factorielle. Décidément ce pocket a tout d'un ordinateur de table (de l'époque bien entendu).
10 INPUT "A=",A 20 B = 1 30 GOSUB 1000 40 PRINT "......";B; 50 END 999 REM *** FACTORIELLE 1000 IF A = 0 THEN RETURN 1010 B = B * A 1020 A = A - 1 1030 GOSUB 1000 1040 RETURN |
Je disais donc que le Basic est très puissant. READ DATA RESTORE sont présents. De même ON GOTO, ON GOSUB, ON ERROR GOTO et ses RESUME, ERL et ERN qui permettent de traiter les erreurs sans oublier la panoplie des fonctions de manipulation de chaînes de caractères RIGHT$, MID$ ou MID, LEFT$, STR$, VAL, CHR$, ASC et il y a même un BEEP ! Les fonctions mathématiques ne sont pas oubliées puisqu'il s'agit d'un ordinateur scientifiques; toutes les fonctions trigonométriques et leurs réciproques avec hyperbolique et bien entendu tous les angles sans oublier les coordonnées polaires (POL) et rectangulaires (REC). Citons aussi la factorielle, les permutations et combinaisons ainsi que les racines carrée et cubique, les logarithmes, la fonction modulo (symbole du Yen) et tout le tralala. Par contre point de fonctions statistiques mais il y en a plein dans la bibliothèque de fonctions !
Plus rare et intéressante; la commande VALF qui permet d'évaluer une expression mathématique contenue dans une chaîne de caractères. Cette commande accepte même des noms de variables ou des fonctions mathématiques. Exemple : VALF("12*A*NCR(10,4)"). Intéressante aussi la commande LOCATE qui permet de positionner le curseur sur une colonne d'une ligne de l'écran virtuel. Sachant que l'écran "réel" n'est que de 2 lignes, je doute de l'utilité au-delà.
Du côté de la saisie des données en plus de l'habituel INPUT, la commande INPUT$ permet de saisir, sans les afficher, un nombre de caractères donné; utile pour la saisie des mots de passe. Par exemple : A= INPUT$(4) attend la saisie de 4 caractères avant de continuer l'exécution du programme ce qui me fait soupçonner une réutilisation de la commande INKEY$. Le IF THEN ou IF GOTO peut être combiné avec le ELSE mais seulement sur la même ligne.
Les pockets peuvent même exécuter des programmes sauvegardés pour le Casio PB-100 grâce aux commandes PBLOAD et PBGET. Ceci explique la présence de mots réservés comme MID ou VAC (Variable All Clear) qui appartiennent au Basic du PB-100 et de ses frères (Casio FX-700P, Casio FX-790P entre autres) ou bien de la variable $ qui peut contenir jusqu'à 30 caractères. Toutefois la compatibilité n'est pas totale et il est nécessaire d'adapter les programmes voire de les exécuter dans le mode DEFM s'ils utilisent des variables au-delà de Z (ce mode s'active en tapant la commande DEFM suivi d'un nombre de mémoires à ajouter).
Casio donne même les commandes pour accéder au contenu de la mémoire avec PEEK et pour le modifier avec POKE. Ces deux fonctions vont de pair avec la variable DEFSEG qui spécifie l'adresse du segment de base utilisé ensuite par PEEK et POKE. Au démarrage de la machine, DEFSEG est égal à 0. De cette manière PEEK et POKE peuvent utiliser n'importe quelle adresse comme sur des machines qui en seraient dépourvues. L'affectation d'une valeur à DEFSEG fait que cette valeur agira comme un point de départ pour les paramètres passés à PEEK ou POKE. Par exemple, si DEFSEG = &H1000 alors PEEK (&H00F0) retournera la valeur de l'adresse &H100F0 => Adresse = DEFSEG x 16 + valeur affectée à PEEK ou POKE. Par contre je n'ai pas vu de commande permettant d'exécuter un programme en langage machine. A ce sujet, il existe des fonctions non documentée qu'il est possible de voir si on désassemble les programmes de la bibliothèque (voir ce site http://mgc99.free.fr/casio.htm qui donne tous les éléments et chercher MODE3 avec votre navigateur). Les différents programmes BASIC laissent entrevoir les commandes MODE30 à MODE35. Il y a peu d'informations sur internet à propos de ces fonctions. Le club OISAC avait publié quelques pages à leur propos mais elles ne sont plus en ligne. Dommage.
Point de programmation structurée, comme sur le Sharp PC-E500S, qui permettrait de s'affranchir du tant décrié GOTO. Les branchements GOTO et GOSUB ne fonctionnent qu'avec des numéros de lignes mais comme les noms de variables peuvent contenir 15 caractères, on peut fort bien faire un FACTORIELLE = 1000 en début de programme puis plus loin un GOSUB FACTORIELLE. Il est bien entendu possible d'exécuter un programme présent dans une autre zone mémoire avec GOTO #n ou GOSUB #n mais pas il n'est pas possible de cibler une ligne particulière comme sur l'Elektronika MK 85.
Ces machines ont eu une large gamme de périphériques à commencer par les cartes mémoires qui permettent d'augmenter leurs capacités. Le module RP-8 ajoute 8 Ko et le RP-33 32. Le premier n'augmente que la mémoire programme portant celle du 850P de 3.536 octets à 11.728 et celle du 880P de 21.456 à 29.648. Le second porte la mémoire allouée par défaut aux variables du 850P de 1.536 à 8.192 et sa mémoire programme à 29.648. Quant au 880P la mémoire allouée aux variables reste à 8.192 octets mais celle allouée au programmes bondit à 54.224 ! Les autres périphériques sont; une interface cassette avec ports RS-232C et centronics nommée FA-6, une table traçante 4 couleurs sur papier format lettre (FP-100), une imprimante caractères (FP-40), deux câbles et un module d'interface (sic) SB-43 pour le FP-40.
Module d'extension de mémoire RP-33 de 32 Ko
Bien qu'elles ne soient plus commercialisées depuis des lustres, il y a toujours des développements autour de ces machines. Citons manib qui propose des interfaces USB pour les relier à un PC et permettre ainsi de s'en servir comme mémoire de masse ou comme base pour le développement de programmes qui pourront ensuite être chargés sur le pocket. En Juin 2022, j'ai acheté une interface de ce genre et c'est vraiment magique. De cette manière il est enfin possible d'utiliser ces vieilles machines avec les avantages de l'informatique moderne.
La boucle FOR NEXT de 1 à 1000 est avalée en 2.9 secondes, ce qui est plutôt rapide.
En conclusion, je dirai que ce sont deux machines intéressantes surtout le 880P. Un bon Basic, de bonnes possibilités d'extension et surtout le fait qu'on puisse les relier à un PC grâce au câble de manib qui les rendent utilisables encore aujourd'hui car, il ne faut pas se leurrer, si dans les années 1980, faute de mieux, on se contentait de leurs claviers pour entrer les programmes et des cassettes pour les sauvegarder de nos jours il faut être un puriste de chez puriste pour les utiliser de cette manière. Leurs équivalents chez Sharp sont les PC-E500 et E500S. Ce sont des machines assez recherchées donc assez chères bien qu'elles ne soient pas rares du tout. Mais elles sont assez fragiles et il n'est pas rare d'avoir des modèles sur lesquels il manque des pixels à l'écran et/ou avec des problèmes de clavier.
MOTS RESERVES DU BASIC |
A |
D |
G |
M |
R |
T |
ABS |
DATA |
GOSUB |
MID |
RAN# |
TAB |
ACS |
DEFM |
GOTO |
MID$ |
READ |
TAN |
ALL |
DEFSEG |
H |
MOD |
REC |
THEN |
AND |
DEG |
HEX$ |
MODE |
REM |
TO |
ANGLE |
DIL |
HYP |
N |
RESTORE |
TROFF |
AS |
DMS$ |
I |
NCR |
RESUME |
TRON |
ASC |
E |
IF |
NEW |
RETURN |
V |
ASN |
EDIT |
INKEY$ |
NEXT |
RIGHT$ |
VAC |
ATN |
ELSE |
INPUT |
NOT |
RND |
VAL |
B |
END |
INT |
NPR |
ROUND |
VALF |
BEEP |
EOF |
K |
O |
RUN |
VAR |
C |
ERASE |
KEY |
ON |
S |
VERIFY |
CALC |
ERL |
L |
OPEN |
SAVE |
W |
CHR$ |
ERR |
LEFT$ |
OR |
SET |
WRITE# |
CLEAR |
ERROR |
LEN |
OUT |
SGN |
X |
CLOSE |
EXP |
LET |
P |
SIN |
XOR |
CLS |
F |
LIST |
PASS |
SQR |
|
COS |
FACT |
LLIST |
PBGET |
STEP |
|
CSR |
FIX |
LN |
PBLOAD |
STOP |
|
CUR |
FOR |
LOAD |
PEEK |
STR$ |
|
|
FRAC |
LOCATE |
PI |
|
|
|
FRE |
LOG |
POKE |
|
|
|
|
LPRINT |
POL |
|
|
|
|
|
PRINT |
|
|
|
|
|
PUT |
|
|
Le verso de la boîte du Casio FX-880P. Celui du Casio FX-850P est identique au recto.
Le Casio FX-800P embarque beaucoup plus de mémoire que le Casio FX-850P
Le Casio FX-880P a quelques marques d'usure. Le Casio FX-850P est quant à lui comme neuf bien que sa boîte ait souffert !
La liste des codes erreurs.
La liste des 116 fonctions de la bibliothèque intégrée en ROM.
La documentation est commune aux deux machines.
Connecteur des Casio FX-850P / 880P.
La machine avec un module mémoire de 32 Ko Casio RP-33.
Je ne sais pas à quoi ces fiches servent mais j'adore trouver ce genre de témoignages dans les machines que j'achète !
Un Casio FX-880P relié au PC via l'interface USB. Le programme qu'on voit sur l'écran du PC a été transféré sur le Pocket? Le programme de transfert se nomme Communications Program INTERFACE V.1. Apparemment il a été développé par un Espagnol. Ce n'est pas étonnant au demeurant car cette machine semble être très diffusée au pays de Cervantès.
|