Casio PB-110.

Leng Año
Disp.
Exp.
Gráf.
Medidas
HD61913 455Khz BASIC 1983 1 K 544 B 1 K 12 Car No 2 tonos No 116 gr 165x71x10 2 x CR2032
Resg.
Valor 1
Valor 2
Valor 3
I. Rareza
Observaciones
XX 931s XX 40 € 55 € 80 € Modelo destacado
Descripción general.

La PB-110 es una de las calculadoras de la serie 100, por tanto comparte la mayoría de las características de la PB-100. Sin duda alguna es el modelo más conseguido y completo de toda la serie, y aunque haya muchas variaciones, habrá que esperar hasta la serie 730 (FX-730P) para ver un modelo superior con funciones más avanzadas que lo definan como tal.

Tiene un conjunto de comandos ligeramente superior a la PB-100 y además, como característica principal, puede gestionar un banco de datos a través de teclas especiales en el teclado, o comandos específicos.

En cuanto a la memoria, de fábrica trae una capacidad bastante reducida. Los 544 bytes libres para los programas, son bastante escasos. Otra característica limitada es su reducida pantalla, que con sólo 12 caracteres no permite mucha visualización. Como aspecto muy positivo, es que el paso de los años no afecta a estas pantallas LED como a las SHARP, que sufren un sangrado del cuarzo líquido que llega a inhabilitarlas. El teclado es adecuado y cómodo, con un formato QWERTY. El modelo es de tamaño bastante reducido, y pesa muy poco, lo que la hace extremadamente portátil.

Nos encontramos delante de una pequeña gran maravilla de la época que aguanta muy bien el paso del tiempo. Todos los modelos de Casio, bien cuidados, siguen presentando un gran aspecto, permaneciendo nuevas, en muchos casos. Ello es debido a la gran calidad de materiales y fabricación de Casio.

Teclado. Dispone del típico teclado QWERTY al que le acompaña en el lateral derecho un teclado numérico. En la parte superior del teclado tiene la tecla "S" SHIFT, los cursores y la tecla MEMO para acceso al banco de datos. Con la combinación MODE + "." se entra en el teclado extendido que permite acceder a los caracteres en minúscula y especiales.

Memoria. En cuanto a la memoria, de fábrica trae una capacidad bastante reducida. Los 544 bytes libres para los programas, son bastante escasos. No obstante, se puede ampliar con un módulo OR-1 de 1K adicional (1024 bytes).

Para obtener información de la memoria libre disponible, se debe ir al área de programas pulsando "MODE" + "1" y en los dígitos pequeños superiores de la derecha de la pantalla aparecerá la información.

Pantalla. Este modelo tiene la típica pantalla Casio de 1 línea de 12 caracteres, tamaño que queda algo limitado para la presentación de datos, y por supuesto para la programación.

Modelo de almacenamiento de programas. Presenta el formato de Casio de 10 áreas de programa numeradas de P0 a P9. Para acceder a ellas hay que pulsar las teclas MODE +"1" para entrar en modo WRT o de escritura de programas. Con SHIFT y el número correspondiente vamos cambiando entre las 10 áreas para poder entrar o editar los programas almacenados. Con MODE + "0" volvemos al modo RUN o de ejecución, si en ese modo introducimos el comando RUN, se ejecutará el programa del área en el que la calculador esté en ese momento. Podemos ejecutar un programa de manera rápida simplemente pulsando SHIFT y sin necesidad de mantenerla pulsada, a continuación el número del 0 a 9 del programa que deseemos ejecutar.

Pros y contras.

PROs
CONTRAs
Formato muy compacto y portátil.Pantalla de 12 caracteres que se queda muy pequeña.
El banco de datos aumenta mucho las posibilidades de almacenamiento de datos y programación.No dispone de batería de respaldo de datos para cuando se cambian las pilas.
Manejo muy sencillo y apto para principiantes.

Circuitos principales.
Los circuitos principales son dos chips. Uno, de 4 bits (HD61913), gestiona el procesador de lógica, la ROM, el control de pantalla y teclado; mientras que el segundo (HD61914) es una RAM estática de 8 bits, organizada en 2048 palabras de 4 bits.

Características no documentadas y trucos.

Hay dos modos no documentados que se convierten en los famosos PEEK(leer contenido de una dirección de memoria) y POKE(escribir contenido), de otras versiones BASIC. Sólo funcionan dentro de un programa y la escritura en el contenido de memoria debe hacerse con mucha precaución ya que podemos colgar el sistema y tener que resetear toda la máquina con la consiguiente pérdida de datos.
  • MODE 18(A,B): B=PEEK(A). En B se cargará con el contenido de la dirección de memoria A.
  • MODE 19(A,B): POKE A,B. Insertar en la dirección A, el valor B.

Mápa del área de memoria:
Cuando se habla de palabras(words), son palabras de 4 bits (medio byte).
   (0d) $0000-$003F     128 words(64 bytes)   Buffer de propósito general
  (64d) $0040-$007F     128 words(64 bytes)   Buffer de propósito general
 (128d) $0080-$0087     16 words(8 bytes)     Variable ANS (no comprobado)
 (136d) $0088-$008F     16 words(8 bytes)     Semilla RAN#, inicial=0.43429448190 (no comprobado)
 (240d) $00F0-$010F     64 words(32 bytes)    La variable especial de cadena $
 (272d) $0110-$072F     3136 words (1568 b)   Área de programas de BASIC
(1840d) $0730-$0737     16 words( 8 bytes)    Variable Z(ya sea cadena o numérica)
(1848d) $0738-$073F     16 words( 8 bytes)    Variable Y(ya sea cadena o numérica)
(1856d) $0740-$0747     16 words( 8 bytes)    Variable X(ya sea cadena o numérica)
(1864d) $0748-$074F     16 words( 8 bytes)    Variable W(ya sea cadena o numérica)
-------------------     ------------------    ...................................
(2024d) $07E8-$07EF     16 words( 8 bytes)    Variable C(ya sea cadena o numérica)
(2032d) $07F0-$07F7     16 words( 8 bytes)    Variable B(ya sea cadena o numérica)
(2040d) $07F8-$07FF     16 words( 8 bytes)    Variable A(ya sea cadena o numérica)

Para ver el contenido de memoria, y aprovechando los comandos ocultos, escribimos un programa monitor que nos sirva para movernos por la memoria, ver su contenido, y cambiar su contenido:
PROGRAMA REDUCIDO
===============================================
10 INPUT "Dir",D
20 MODE 18(D,C)
22 PRINT STR$(D);C;
30 INPUT O$
40 IF O$="" THEN D=D+1:GOTO 20
50 C=VAL(O$):IF C>=0 THEN MODE 19(D,C):GOTO 20
60 D=INT(-C):GOTO 20
PROGRAMA COMPLETO CON CONTENIDO EN &HEX
===============================================
5 DATA  A,B,C,D,E,F
6 READ R$,S$,T$,U$,V$,W$
10 INPUT "Dir",D
20 MODE 18(D,C)
22 PRINT STR$(D);C;
23 PRINT " &";
24 X=INT(C/16):GOSUB 100
25 X=C-16*INT(C/16):GOSUB 100
30 INPUT O$
40 IF O$="" THEN D=D+1:GOTO 20
50 C=VAL(O$):IF C>=0 THEN MODE 19(D,C):GOTO 20
60 D=INT(-C):GOTO 20
100 IF X<=9 THEN Y$=STR$(X)
130 IF X>9 THEN X=X-10:Y$=R$(X)
140 PRINT Y$;
150 RETURN
El programa reducido de la izquierda sólo muestra la dirección de memoria en decimal, y su contenido en decimal.
El de la derecha lo hemos completado para que muestre además de lo anterior, el contenido hexadecimal de la memoria.
Su funcionamiento es muy sencillo:
  • Al ejecutarlo nos pedirá inicialmente la dirección de la memoria desde la que queremos empezar a ver su contenido. Debe introducirse en decimal, es decir, si queremos ver el inicio del área de programas, introduciremos 272; si queremos ver el contenido de la variable $, introduciremos 240.
  • A continuación veremos la siguiente pantalla:
    • Programa corto "272 16?", que significa "dirección de memoria decimal, contenido de memoria decimal, ?"
    • Programa completo "272 16 &10?", que significa "dirección de memoria decimal, contenido de memoria decimal, contenido hexadecimal, ?"
  • Si pulsamos símplemente EXE, iremos a la siguiente dirección, y así sucesivamente.
  • Si introducimos un valor positivo de 0 a 255, se modificará el contenido de la memoria.
  • Para saltar a otra dirección de memoria, poner la dirección en negativo. Ejemplo: -240.

Almacenamiento de programas en la Memoria:
Como se ha comentado en el mapa de memoria, los programas BASIC en la PB-110 comienzan en la dirección decimal 272(110 HEX). No varía incluso si se tiene instalada la ampliación de memoria de 1K.
Para comprender el contenido de la memoria, nos hace falta conocer dos tablas.

La primera es la Tabla de códigos de caracteres que viene en la página 179 del manual en español.

Espacio es &00, : es &FE

La segunda es la tabla de códigos de almacenamiento de las palabras clave BASIC, ya que éstas se almacenarán ocupando un sólo byte de acuerto a esta tabla.
$80 SIN     $90 LEN(    $A0 FOR     $B0 VAC     $C0 DEFM
$81 COS     $91 VAL(    $A1 NEXT    $B1 SET     $C1 SAVE
$82 TAN     $92 MID(    $A2 GOTO    $B2 PUT     $C2 LOAD
$83 ASN     $93 KEY     $A3 GOSUB   $B3 GET     $C3 VERIFY
$84 ACS     $94 CSR     $A4 RETURN  $B4         $C4 LIST
$85 ATN     $95 TO      $A5 IF      $B5         $C5 RUN
$86 LOG     $96 STEP    $A6 PRINT   $B6         $C6 NEW
$87 LN      $97 THEN    $A7 INPUT   $B7         $C7 PASS
$88 EXP     $98 DEG(    $A8 MODE    $B8         $C8 LRAM
$89 SQR     $99         $A9 STOP    $B9         $C9 SRM
$8A INT     $9A STR$    $AA END     $BA         $CA WRITE#
$8B FRAC    $9B DMS$    $AB ON      $BB         $CB
$8C ABS     $9C MID$    $AC READ    $BC         $CC
$8D SGN     $9D ALL     $AD RESTORE $BD         $CD
$8E RND(    $9E BEEP    $AE DATA    $BE         $CE
$8F RAN#    $9F LET     $AF REM     $BF         $CF

Una vez conocida la existencia de estas tablas, se describe el formato de almacenamiento de los programas. La primera línea del primer programa almacenado comienza en la dirección de memoria 272.
  • Los dos primeros bytes indican el número de línea en formato digital.
  • A continuación va el contenido de la línea programa. Si el siguiente byte es mayor o igual que 128 (&80H), debe leerse como una palabra reservada del BASIC, de acuerdo a la segunda tabla. Ejemplo: Si es 166 (&A6H), será el comando PRINT.
  • Si es menor que 128, se leerá tal cual de acuerdo al caracter que represente de la primera tabla. Normalmente será la asignación de una variable.
  • Los siguientes bytes se van leyendo a lo establecido en los apartados anteriores, de tal modo que si son >=128, son una palabra clave, y al contrario se leerán como caracteres de la tabla 1
  • Si el byte es 254 decimal (&FEH), corresponderá a un separador de sentencias en la misma línea ":".
  • Si el byte es 255 decimal (&FFH), indicará el final de línea, y por tanto, los dos siguientes bytes habrá que interpretarlos como el número de la siguiente línea.
  • No existen códigos especiales de separación entre programas de diferentes áreas de programa. Se suceden sin ningún indicador. (ver bytes 314, 315 y 316 del siguiente ejemplo). Esta estructura se controla en otro área del sistema.

  • A continuación se expone un ejemplo en el que en el área P0 se ha almacenado el programa contador simple. Hemos hecho un volcado de memoria a partir de la dirección 272 decimal, y esto es lo que se obtiene:
    DIR  DEC  HEX  Explicación  | DIR  DEC  HEX  Explicación  | DIR  DEC  HEX  Explicación  |
    =========================== | =========================== | =========================== |
    272  16   10   10           | 278  32   20   20           | 287  48   30   30           |
    273  0    00                | 279  0    00                | 288  0    00                |
    274  32   20   A            | 280  166  A6   PRINT        | 289  32   20   A            |
    275  12   0C   =            | 281  148  94   CSR          | 290  12   0C   =            |
    276  17   11   1            | 282  16   10   0            | 291  32   20   A            |
    277  255  ff   Fin línea    | 283  94   5E   ;            | 292  1    01   +            |
                                | 284  32   20   A            | 293  17   10   1            |
                                | 285  94   5E   ;            | 294  255  FF   Fin Línea    |
                                | 286  255  FF   Fin Línea    |                             |
    
    DIR  DEC  HEX  Explicación  | DIR  DEC  HEX  Explicación  |  PROGRAMA ANALIZADO EN P0   |
    =========================== | =========================== | =========================== |
    295  64   40   40           | 309  80   50   50           | 10 A=1                      |
    296  0    00                | 310  0    00                | 20 PRINT CSR0;A;            |
    297  165  A5   IF           | 311  158  9E   BEEP         | 30 A=A+1                    |
    298  32   20   A            | 312  254  FE   :            | 40 IF A<10001 THEN 20       |
    299  14   0E   <            | 313  158  9E   BEEP         | 50 BEEP : BEEP              |
    300  17   11   1            | 314  255  FF   Fin Línea    |                             |
    301  16   10   0            |                             |                             |
    302  16   10   0            |                             |                             |
    303  16   10   0            | 315  16   10   Comienza P1  |                             |
    304  17   11   1            | 316  0    00                |                             |
    305  151  97   THEN         |                             |                             |
    306  18   12   2            |                             |                             |
    307  16   10   0            |                             |                             |
    308  255  FF   Fin Línea    |                             |                             |
    

    Enlaces a páginas de interés.
    A continuación te mostramos los enlaces más interesantes sobre este ordenador personal.