dimanche 1 décembre 2013

La PB-2000C, une évolution de la PB-1000 ?

À la fin des années 80, avant mon Bac, j'avais fait l'acquisition de ma Casio PB-1000 avec son extension mémoire, et son boîtier d'interfaces. J'étais très satisfait de ce matériel lorsque, deux ou trois ans plus tard, je tombe sur la PB-2000C dans la vitrine de Gibert Joseph à Montpellier. Même si j'ai pu être tenté sur l'instant, je n'ai finalement pas acheté cette nouvelle calculatrice à l'époque. Concrètement, les améliorations qu'elle apportait par rapport à la PB-1000 me paraissaient insuffisantes.

Mais tout de même, voici les principaux avantages de la PB-2000C, sortie en 1989 :
  • meilleur contraste de son écran : d'une résolution de 192x32, identique à la PB-1000, il est dorénavant non tactile. Il faut savoir que sur PB-1000, avec des piles faibles, l'écran pouvait vite devenir illisible.
  • sa mémoire est de 32 Ko d'origine, extensible à 64 Ko via un module RP-33 comme la FX-850P ; légèrement différent du RP-32 dédié à la PB-1000.
  • son format mono-bloc : elle est plus compacte et plus légère que la PB-1000. Elle n'a besoin que de trois piles CR2032 et d'une CR1120, au lieu de trois "grosses" LR6. De plus, ce format est probablement plus fiable. La charnière de ma PB-1000 est passée une fois au SAV (nappe endommagée).
  • elle supporte plusieurs langages sur cartes ROM séparées : un interpréteur C, un Basic, un DL-Pascal (le plus rapide, pas développé par Casio), un Prolog, et un pseudo assembleur CASL pour les étudiants japonais.

La PB-2000C : le noir lui va si bien.

Mais, la PB-2000C a aussi des inconvénients :
  • son clavier n'est pas aussi bien disposé que celui de la PB-1000 : disparition de la large touche espace, disparition des deux touches shift et de la touche F. Et la sérigraphie de base n'est pas complète : pas de langage par défaut, pas d'accès direct aux fonctions mathématiques. De plus, les overlays clavier ne tiennent pas très bien en place.
  • elle ne contient pas d'assembleur intégré
  • les programmes, en ramdisk pourtant non volatile, sont perdus à chaque changement de carte ROM. Seuls les fichiers texte sont préservés.
  • pas d'horloge-calendrier intégrée, pas de fonction alarme. En réalité, l'horloge est physiquement présente ; mais elle a été désactivée quand la PB-2000C est arrêtée, pour éviter les conflits avec les cartes ROM ! Xerxes a découvert qu'il est toujours possible d'y accéder en assembleur. Démonstration : http://www.silicium.org/forum/viewtopic.php?f=46&t=34198

Pour comparer ses performances, j'ai recopié à l'identique mon programme sur les nombres premiers :

10 INPUT"N?",N
20 J=INT(SQR(N)):I=2
30 IF FRAC(N/2)=0 THEN80
40 FOR I=3 TO J STEP 2
50 IF FRAC(N/I)=0 THEN80
60 NEXT I
70 BEEP:PRINT"1":GOTO10
80 PRINT I:GOTO10

Le test sur le nombre 524 287 s'exécute ici en 10 secondes environ. C'est équivalent à la PB-1000 (et non deux fois plus rapide, comme je le croyais au début). Et ce résultat est bien normal : le CPU HD61700, ainsi que l'architecture matérielle, sont très proches entre ces deux machines.

Pour tester l'interpréteur C, j'ai recopié mon programme développé initialement pour le Casio Z-1 :

main() {
 double n,q;
 long i,j,intq;
 printf("n?");
 scanf("%lf",&n);
 j=(long)(sqrt(n));
 q=n/2;
 intq=(long)q;
 if ((q-intq)==0) {
  printf("2");
 } else {
  i=3;
  while (i<=j) {
   q=n/i;
   intq=(long)q;
   if ((q-intq)==0) {
    j=0;
   } else {
    i+=2;
   }
  }
  if (j==0) {
   printf("%ld",i);
  } else {
   printf("1");
  }
 }
}

Et là, les performances sur le test avec 524 287 sont plutôt catastrophiques ! En effet, il faut environ 1 minute et 19 secondes pour afficher le résultat. On peut considérer que le C sur ce type de machine est adapté pour l'apprentissage de la programmation ; mais, de toute évidence, cet interpréteur Casio ne permet pas une exploitation optimale du hardware.

Dernière chose, il y a quelques mois, j'avais ré-écrit un autre programme C pour PB-2000C : le jeu d'inversion. Rien de très compliqué, sauf peut-être le générateur de nombres aléatoires ; car cette machine ne possède pas l'instruction idoine en C (en Basic, il y a l'instruction RND). Sans accès à l'horloge interne pour générer la "graine" de l'agorithme aléatoire, j'ai utilisé l'écriture dans un fichier "seed.dat" :

http://www.silicium.org/forum/viewtopic.php?f=46&t=34989&start=15#p425526

En conclusion, c'est quand même une très belle machine, du plus bel effet dans ma collection ! On lui pardonne volontier ses défauts, et je la recommande sans hésiter.