Intérprete de LEARN para CASIO PB/FX

dancresp
Mensajes: 5641
Registrado: 13 Nov 2010 02:08
Agradecido : 323 veces
Agradecimiento recibido: 455 veces

Intérprete de LEARN para CASIO PB/FX

Mensajepor dancresp » 27 Sep 2012 22:41

LEARN para CASIO PB/FX

Imagen

EL PROGRAMA
La calculadora programable CASIO FX-180P llevaba incorporado un sencillo lenguaje de programación llamado LEARN. Con el podíamos simplificar el cálculo de fórmulas, entre otras cosas.

Este programa es un intérprete, limitado, del lenguaje LEARN para ordenadores de bolsillo CASIO PB y FX, aunque el código es fácilmente adaptable a otros sistemas.

Características del Intérprete
Este intérprete reconoce las siguientes instrucciones:

PCL: Borra el programa introducido y entra en modo edición.
. : Finaliza la introducción del programa y empieza a ejecutarlo.
P1: Ejecuta el programa introducido.
ENT: Permite introducir un valor durante la ejecución del programa.
HLT: Detiene el programa y muestra el valor en curso.
RAN#: Calcula un número aleatorio.
+ : Hace una suma con el valor posterior (Número o registro K).
RTN: Vuelve al principio del programa.
X>0: Vuelve al principio si el valor es mayor de 0.
X<=M: Vuelve al principio si el valor es menor o igual al valor de la memoria.
MIN: Introduce un valor en la memoria M.
MR: Recupera el valor de la memoria M.
KIN: 1,2 o 3. Introduce un valor en uno de los 3 registros K.
KOUT: 1,2 o 3. Recupera el valor de uno de los 3 registros K.
KAC: Borra todos los registros K.
n : Valor numérico de hasta 7 cifras.

El intérprete admite la entrada de un único programa (2 en el original) de hasta 15 pasos (38 en el original) y el uso de 3 registros (6 en el original).
Solo permite realizar sumas.


COMO FUNCIONA
El programa tiene tres sencillos bloques:

Menú Principal:
5 - Seleccionamos entrar (PCL) o ejecutar el programa (P1).
7 - Si no se introduce "PCL" vuelve a la línea 5.

Introducción del programa:
10 - Bucle donde introducimos las instrucciones del programa. Pulsa "." para acabar.

Ejecución del programa:
15 - Bucle de inicio de ejecución del programa introducido.
16 - Si el primer carácter de un paso es un número, se interpreta que es un valor.
18 - Si no es un número nos quedamos solo con los dos primeros caracteres de la instrucción.
20 - Si es "RT" volvemos a ejecutar desde el principio del programa.
22 - Si el valor (X) es inferior al de la memoria M (T) vuelve al principio.
24 - Si el valor (X) es mayor o igual al de la memoria M (T) vuelve al principio.
26 - Si es "HL" muestra el valor en curso. Pulsando "RETURN" sigue la ejecución.
28 - Si es "EN" permite introducir un valor y lo guarda en X.
30 - Si es "KO" coge el valor del registro y lo pone en X.
32 - Si es "KI" coge el valor de X y lo pone en el registro K correspondiente.
34 - Si es "KA" inicializa el valor de los 3 registros K.
40 - Si es "MI" guarda en la memoria M (T) el valor actual.
42 - Si es "MR" recupera el valor de la memoria M.
44 - Si hay un número en la memoria M (T<>0), pone una M en pantalla.
46 - Si es "RAN#" se calcula un número aleatorio a partir del siguiente número. No se ha respetado la funcionalidad original.
50 - Si no hay una suma salta a la línea 80 para continuar el bucle.
52 - En caso de suma se coge la instrucción siguiente. Si es un número se suma.
54 - En caso de no ser un número se toma por defecto que es un valor de un registro K.
80 - Cierra el bucle. En caso de terminar de ejecutar el programa imprime el valor actual. Al pulsar "RETURN" vuelve al menú.


LISTADO BASIC

Imagen

ATENCIÓN:
Hay que tener en cuenta que las condiciones <> <= y => deben ser introducidas según los signos de la propia calculadora.


PROGRAMAS LEARN DE EJEMPLO
Para introducir un programa hacer "PCL" y teclear los comandos pulsando la tecla EXE entre uno y otro.
Para terminar la introducción y ejecutar el programa, pulsar la tecla punto (.) y EXE.
También se puede volver a ejecutar el programa poniendo "P1" en el menú.

BINGO
RAN#
90
+
1
HLT
RTN


SUMA 2 NUMEROS
ENT
KIN1
ENT
KIN2
KOUT1
+
KOUT2
HLT
RTN


APUNTES FINALES
El BASIC de las primeras CASIO era bastante lento y limitado. Detallo algunas de sus limitaciones:

No hay posibilidad de hacer un AND o un OR. En el primer caso hay que usar un THEN IF y en el segundo hay que hacer un nuevo IF en otra línea.

En este BASIC, y por compatibilidad con la PB-110 (que es aún más simple), se puede sustituir el THEN por un punto y coma (;).
El tema variables también es muy limitado ya que los nombres de las variables solo pueden tener una letra. Para almacenar más variables hay que usar matrices, asignando una parte de la memoria RAM con el comando DEFM.

También hay que tener en cuenta que las matrices realmente ocupan la misma memoria que las variables de una letra. Así A(1)=B, A(3)=D, B(1)=C, etc.

Debido al tema de las variables, y teniendo en cuenta que la primera versión la programé en 1986 en una PB-110 con solo 544 pasos, he tenido que limitar la longitud del programa en LEARN que nos permite introducir (15 en lugar de 38), las operaciones matemáticas que podemos realizar (solo suma) y la cantidad de registros (solo 3).

La versión original ocupaba 538 pasos, pero en esta revisión lo he conseguido rebajar a 495 pasos a pesar de incorporar dos comandos más. También he depurado ciertas partes para optimizar el código.

Se podría acelerar la ejecución del intérprete poniendo un "GOTO 80" al final de las líneas 26, 28, 30, 32, 34, 40, 42 y 46, pero lo he omitido para hacer el programa más corto.

Pues nada más, solo me queda...

Invitaros a probarlo.

Imagen
Buscando la IP de la W.O.P.R. he encontrado mi índice

jepalza

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor jepalza » 28 Sep 2012 06:49

¡Jopé chico! ¡Qué paciencia tenías escribiendo los programas "a mano" en un cuarderno!

Yo NUNCA usé papel para escribir el código. Directamente iba a lo bestia, a "pinrel", lo metía todo a base de tesón, y luego, venian los problemas, cuando había que revisar, que me tiraba mas tiempo, que el empleado para escribirlo.

Yo no tenía (ni tengo hoy día) paciencia para "perder el tiempo" escribiendo dos veces.

Me admira tu paciencia en ese caso.

Avatar de Usuario
flopping
Mensajes: 2573
Registrado: 26 Jun 2011 17:50
Agradecido : 3 veces
Agradecimiento recibido: 120 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor flopping » 28 Sep 2012 07:58

Es lo que tiene, si es que, las cosas con paciencia y bien hechas solo se hacen una vez, tenemos mucho que aprender, jajajajaaj....
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2020, 38 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

dancresp
Mensajes: 5641
Registrado: 13 Nov 2010 02:08
Agradecido : 323 veces
Agradecimiento recibido: 455 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor dancresp » 28 Sep 2012 09:11

jepalza escribió:¡Jopé chico! ¡Qué paciencia tenías escribiendo los programas "a mano" en un cuarderno!

En aquellos tiempos descubrí el concepto de "Impresora de mano". !tongue

jepalza escribió:Yo no tenía (ni tengo hoy día) paciencia para "perder el tiempo" escribiendo dos veces.

Hombre, primero programaba y cuando funcionaba lo pasaba a papel. Eso, o perder el trabajo realizado al entrar un nuevo programa.

Gracias a ello, más de 25 años después todavía los conservo. Como se puede ver, es la segunda libreta, con 40 programas, pero hay una primera con más de 30.

Lo que si que es cierto es que programar en un aparato con una pantalla de 12 caracteres en una única línea sirve para desarrollar un algo especial, porque o lo tienes bien planificado "mentalmente" o cuando vienen los fallos no te aclaras.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 19235
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2203 veces
Agradecimiento recibido: 1992 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor ron » 28 Sep 2012 09:46

wally eres una caja de pandora !!! vaya crack

xgipe
Mensajes: 535
Registrado: 02 May 2011 15:44

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor xgipe » 28 Sep 2012 10:25

Hay algo que no he entendido bien: si el LEARN está incorporado en la máquina, ¿para qué sirve el listado en BASIC?... :(

Avatar de Usuario
ron
Mensajes: 19235
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2203 veces
Agradecimiento recibido: 1992 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor ron » 28 Sep 2012 10:38

xgipe escribió:Hay algo que no he entendido bien: si el LEARN está incorporado en la máquina, ¿para qué sirve el listado en BASIC?... :(


xgipe , jaajaa, realmente entendiste el post de wally ? , vuelve a leerlo y fíjate juasajuasjuasjas

dancresp
Mensajes: 5641
Registrado: 13 Nov 2010 02:08
Agradecido : 323 veces
Agradecimiento recibido: 455 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor dancresp » 28 Sep 2012 10:51

jijiji !!! !mola

La calculadora CASIO FX-180P lleva un sencillo lenguaje de programación que se llama LEARN (LRN).

El ordenador de bolsillo CASIO PB-nnn lleva incorporado un BASIC.

Lo que he hecho ha sido programar, en BASIC, un intérprete de LEARN para que lo puedas usar en la CASIO PB-100 o similares.
Buscando la IP de la W.O.P.R. he encontrado mi índice

xgipe
Mensajes: 535
Registrado: 02 May 2011 15:44

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor xgipe » 28 Sep 2012 11:46

¡Ah! Entendido...
"ejque" estas maquinitas no son lo mío, precisamente... :P

race8086
Mensajes: 456
Registrado: 29 Oct 2010 22:05
Agradecido : 1 vez
Agradecimiento recibido: 15 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor race8086 » 28 Sep 2012 13:45

Que bueno!, me estas picando compañero !baila , con este post y el de la 180 me has hecho recordad a mi querida fx-3600p, la primera calculadora que tuve y que usaba algo muy parecido, sino igual al 'LEARN'

dancresp
Mensajes: 5641
Registrado: 13 Nov 2010 02:08
Agradecido : 323 veces
Agradecimiento recibido: 455 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor dancresp » 28 Sep 2012 13:58

race8086 escribió:... con este post y el de la 180 me has hecho recordad a mi querida fx-3600p, la primera calculadora que tuve y que usaba algo muy parecido, sino igual al 'LEARN'

Efectivamente, el LEARN lo incorporaban varios modelos de CASIO y alguna otra marca. Entre ellas la que tu dices.

En la portada de la libreta lo pone, pero en la foto no se aprecia bien.
Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
Luis
Mensajes: 1378
Registrado: 03 Nov 2010 19:00
Agradecido : 565 veces
Agradecimiento recibido: 264 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor Luis » 29 Sep 2012 04:50

Ya tengo algo para cacharrear hoy, ¡gracias!

Una observación: cuando hago un programa BASIC en mi PB-100 y lo tengo listo y probado, modifico la numeración de las líneas a 1,2,3,4... te ahorras unos preciosos bytes así, ya que una línea llamada "10" ocupa un byte más que una llamada "1" :)

Qué bueno, un "emulador" que funciona en una PB-100 !tongue
+++no carrier

Tolvatar
Mensajes: 445
Registrado: 30 Jun 2012 17:56
Agradecido : 1 vez
Agradecimiento recibido: 2 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor Tolvatar » 29 Sep 2012 09:15

Que este hilo se convierta en ficha a la de tres. Tres

dancresp
Mensajes: 5641
Registrado: 13 Nov 2010 02:08
Agradecido : 323 veces
Agradecimiento recibido: 455 veces

Re: Intérprete de LEARN para CASIO PB/FX

Mensajepor dancresp » 01 Oct 2012 21:50

harnas escribió:Una observación: cuando hago un programa BASIC en mi PB-100 y lo tengo listo y probado, modifico la numeración de las líneas a 1,2,3,4... te ahorras unos preciosos bytes así, ya que una línea llamada "10" ocupa un byte más que una llamada "1" :)

Lo he probado porque me extrañaba, y veo que funciona tal y como pensaba, aunque tal y como lo indicas puede llevar a error.

Las lineas...

1 PRINT
10 PRINT
1000 PRINT

... ocupan exactamente la misma memoria, ya que normalmente en los BASIC el número de línea ocupa 2 bytes fijos.

Pero efectivamente ...

1 GOTO 1
1 GOTO 20
1 GOTO 200

... cada número a continuación del GOTO o GOSUB ocupan tantos bytes como cifras tiene el número.

La verdad es que no lo había parado a pensar, pero si hacemos programas con números de línea inferior a 100, efectivamente podemos ahorrar unos preciosos bytes.

Gracias harnas porque no lo había parado a pensar nunca. !birra
Buscando la IP de la W.O.P.R. he encontrado mi índice


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado