CARDIAC Emulator para Casio FX-880P

Responder
dancresp
Mensajes: 6638
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Has thanked: 775 times
Been thanked: 1220 times

CARDIAC Emulator para Casio FX-880P

Mensaje por dancresp »

Equipo.jpg
Equipo.jpg (136.08 KiB) Visto 270 veces

El CARDIAC (CARDboard Illustrative Aid to Computation) es un ordenador de papel diseñado por David Hagelbarger y Saul Fingerman en 1968 en los Laboratorios Bell como una herramienta de aprendizaje para enseñar a estudiantes de secundaria cómo funcionan las computadoras.

Ahora el ordenador de bolsillo Casio FX-880P puede ejecutar los programas de este ordenador “de papel” de una forma mucho más rápida y sencilla.


EL ORDENADOR CARDIAC
El ordenador consiste en dos elementos de cartón que contienen distintas tiras de papel.

Cardiac_paper.jpg
Cardiac_paper.jpg (164.13 KiB) Visto 270 veces

El primero elemento contiene una tira de papel con la entrada de datos, llamado "INPUT", el registro Acumulator, el valor del registro Program Counter y una descripción de la instrucción a ejecutar.

La segunda parte contiene las 100 celdas de memoria y una tira de papel con la salida de datos, llamado "OUTPUT". Aquí se usan dos "bugs" para indicar donde está apuntando el registro Program Counter y en caso de saltar a una sub-rutina, desde que posición se ha saltado.

El sistema ejecuta 10 instrucciones distintas. Cada instrucción se compone de 3 dígitos. El primer dígito hace referencia a la instrucción en sí, y los dos dígitos de la derecha hacen referencia a una celda de la memoria, exceptuando la instrucción "SHIFT".

Para hacerlo funcionar necesitaremos un lápiz y una goma de borrar.


LAS INSTRUCCIONES
Tenemos 10 instrucciones distintas.

0 - INP : Input
Lee un número de INPUT y lo deja en la celda indicada.

1 - CLA : Clear & Add
Lee un número de INPUT y lo almacena en el registro Acumulator.

2 - ADD : Add
Suma al registro Acumulator el número contenido en la celda indicada.

3 - TAC : Test Acumulator Contents
Si el registro Acumulator es negativo, la ejecución del programa salta a la celda indicada.

4 - SFT : Shift
Desplaza los dígitos del registro Acumulator X posiciones a la izquierda e Y la derecha.

5 - OUT : Output
Guarda en OUTPUT los 3 dígitos de la derecha del registro Acumulator. Ignora los miles.

6 - STO : Store
Guarda los 3 dígitos de la derecha del registro Acumulator en la celda indicada.

7 - SUB : Subtract
Resta al registro Acumulator el número contenido en la celda indicada.

8 - JMP : Jump
La ejecución del programa salta a la celda indicada.

9 - HRS : Halt & Reset
Detiene la ejecución del programa.


LA MEMORIA
El sistema contiene 100 celdas de memoria que pueden contener un valor entre 999 y -999.

La celda 0 contiene la ROM del sistema, siempre es 001 (INP en 01) y sirve para hacer el bootloader de los programas.
La celda 99 es una posición de memoria que contiene la dirección de retorno de una sub-rutina, y siempre contiene un 8nn.

En las otras 98 celdas, de la 1 a la 98, podemos almacenar nuestro programa y las variables.


EL BOOTLOADER
Lo primero que hay que hacer es cargar el programa en memoria desde la tira de papel de INPUT.

El formato de la carga es el siguiente:
1) Al ejecutar el 001 de la ROM en la posición 00, cogemos un número de INPUT, lo escribimos en la celda 01 y avanzamos la tira de INPUT. Lo normal es que se haya cargado un 002 en la celda 01.

2) El registro Program Counter cambia a 01, y si hay un 002 se carga otro número de INPUT en la celda 02, avanzando INPUT otra posición. Este segundo valor suele ser un 800, un Jump a 00, que sirve para crear el bucle que cargará el resto del programa.

3) Al ejecutar el 800, saltamos de nuevo a la celda 00, y volvemos a cargar otro número de INPUT. Pero en este caso se van utilizando pares de valores de INPUT para cargar las instrucciones en el resto de la memoria. Un primer valor indica la posición de memoria con una instrucción 0nn, y un segundo valor de INPUT con la instrucción que se cargará en la celda indicada.

4) Para finalizar el bootloader se suele cargar una instrucción 8nn para saltar a la dirección donde se ha empezado a cargar el programa, para su ejecución.

Como no, todo esto hay que hacerlo con lápiz y goma, mientras se van moviendo las tiras de papel necesarias.
Es algo curioso, y como no, extremadamente lento, pero realmente funciona y acabamos con el programa en memoria listo para ser ejecutado.

Un programa puede estar contenido en varias tiras de papel, y se han de ir cambiando a medida que se va leyendo su último valor.

Evidentemente no hay nada que nos impida escribir directamente los números en las celdas de memoria correspondientes, para saltarnos la parte del bootloader.


CONCLUSIÓN
Este ordenador puede parecer una chorrada, pero realmente funciona y se pueden ejecutar programas más que curiosos... si tienes la paciencia de ir ejecutando correctamente todas las instrucciones del programa y controlando todos los pasos correspondientes.


DOCUMENTACIÓN DEL SISTEMA
En esta URL tenéis un montón de información sobre su funcionamiento, y todo lo que se puede llegar a hacer con este ordenador:
https://www.cs.drexel.edu/~bls96/museum/cardiac.html

En esta URL tenéis un manual en formato PDF. Para ser el original, es bastante mejorable.
https://archive.org/details/CardiacCard ... on_Manual/

Hay disponibles distintos emuladores de este sistema, ya sean para probar a través del navegador o como aplicaciones instalables.
https://www.cs.drexel.edu/~bls96/museum/cardsim.html


¿CÓMO HACERSE UN CARDIAC?
En los siguientes enlaces tenemos acceso a PDF que contienen el diseño del CARDIAC para ser impreso e incluso troquelado.
https://vonkonow.com/cardiac-recreating ... from-1968/
https://www.instructables.com/CARDIAC-C ... putation-/

En mi caso imprimí el modelo del primer link en una imprenta, en papel de 350 grs, y la verdad es que ha quedado de maravilla. Se puede escribir y borrar en el sin que el papel sufra más de la cuenta.

Posteriormente me tocó troquelar con un cúter tipo bisturí para que fuera totalmente funcional, pero me quedé con las ganas de troquelas las 100 posiciones de memoria, que son redondas.


EL EMULADOR
Este emulador para la Casio FX-880P emula perfectamante todos los programas de este ordenador.

Para hacer el programa más compacto se ha optado por hacer la introducción de los códigos del programa mediante líneas DATA que se han de introducir a partir de la línea 900. Si se opta por el método del Snapshot, el último código debe ser un 9999.

El programa usa un BASIC muy estándar, de forma que será fácilmente adaptable en otros equipos.

El BASIC de la Casio FX-880P es básicamente el mismo del que disponen los modelos PB-110, pero se ha mejorado el uso de strings con las instrucciones LEFT$ y RIGHT$, que además se pueden usar con cualquier variable de cadena, y no se limita al uso de la variable $. También se ha mejorado el uso de las matrices.

Disponemos de una pantalla de 2 filas y 32 columnas a las que podemos acceder mediante la instrucción LOCATE.

Con todo, el equipo sigue siendo fiel al pobre rendimiento de todos estos ordenadores pocket de Casio. De forma que el emulador funciona, pero a su ritmo. Con todo, sigue siendo más rápido que hacerlo a mano, con lápiz y goma de borrar.


OPCIONES DEL EMULADOR
El emulador dispone de un menú principal que nos permite ejecutar un programa introducido previamente en líneas DATA del código BASIC o consultar la memoria.

MENU.jpg
MENU.jpg (44.83 KiB) Visto 270 veces

EXEC:
Las siguientes dos opciones nos permiten ejecutar un programa codificado de una de las dos formas permitidas. Al finalizar la ejecución aparece “HALT” en pantalla, y queda a la espera de pulsar una tecla para volver al menú principal.

EXEC.jpg
EXEC.jpg (36.06 KiB) Visto 270 veces
HALT.jpg
HALT.jpg (42.98 KiB) Visto 270 veces

1-BOOT:
Ejecuta un programa que se cargará mediante el bootloader típico del CARDIAC. Para cargar cada instrucción del programa se han de usar dos pasos de programa. Un primer código indica la dirección donde se ha de cargar la instrucción indicada en el segundo código. El programa es más lento ya que la carga del programa consume su tiempo.

2-SNAP:
Ejecuta un programa que se ha cargado mediante un volcado de la memoria. Así, cada instrucción está en la posición correspondiente. El primer código se cargará en la posición de memoria 1, ya que la posición 0 está reservada por el sistema. La ejecución es más rápida ya que no hay que cargar el programa mediante el bootloader. Se empieza a ejecutar desde la dirección 1.


DUMP:
Estas opciones nos permiten hacer un volcado de la memoria. Pulsando ENTER avanzamos 10 direcciones, y con cualquier otra tecla volvemos al menú principal.

DUMP.jpg
DUMP.jpg (40.28 KiB) Visto 270 veces

3-OUT:
Esta opción permite acceder al buffer que contiene hasta 30 resultados del programa, grabados mediante la instrucción OUT.

4-MEM:
Esta opción muestra las 100 posiciones de la memoria del sistema.


Descargar el listado en formato TXT:
CARDIAC FX-880P.zip
(1.54 KiB) Descargado 8 veces
Nota:
A partir de la línea 900 está el programa COUNTER 0-10 codificado para cargar como Bootloader, y en 950 el mismo programa en formato Snapshot. Poner en la línea 900 la versión deseada, o tu propio programa.


EL LISTADO (Incompleto)

Código: Seleccionar todo

NO DEJA PEGAR EL CÓDIGO !!!



	' ------------------
	' DUMP DE LA MEMORIA
	' ------------------
200 I=0:IF K$="3" THEN C=29 ELSE C=99
202 CLS:PRINT "[DUMP]";
204 FOR F=0 TO 1:LOCATE 6,F:Z=I:GOSUB 310:PRINT K$;": ";
206 FOR I=I TO I+4:IF C=29 THEN Z=O(I) ELSE Z=M(I)
208 GOSUB 310:PRINT K$;" ";:NEXT I:NEXT F
210 GOSUB 300:IF ASC(K$)<>13 OR I>C THEN 20 ELSE 202

	' Rutina lectura del teclado
300 K$=INKEY$:IF K$="" THEN 300
302 IF INKEY$<>"" THEN 302 ELSE RETURN



	' Menomtécnicos de las instrucciones
800 DATA "INP","CLA","ADD","TAC","SFT"
802 DATA "OUT","STO","SUB","JMP","HRS"

	' Programa Counter 0-10: Bootloader
900 DATA 2,800,10,100,11,605
902 DATA 12,104,13,322,14,505
904 DATA 15,105,16,200,17,605
906 DATA 18,104,19,700,20,604
908 DATA 21,812,22,900,4,9,2,810

	' Programa Counter 0-10: Snapshot
950	DATA 810,0,0,9,0,0,0,0,0,100
952 DATA 605,104,322,505,105,200,605,104,700,604
954 DATA 812,900,9999

Pues nada más,

Os invito a probarlo
Buscando la IP de la W.O.P.R. he encontrado mi índice
tolaemon
Mensajes: 246
Registrado: 30 Jul 2011 21:09
Has thanked: 20 times
Been thanked: 37 times
Contactar:

Re: CARDIAC Emulator para Casio FX-880P

Mensaje por tolaemon »

Vaya, que interesante lo del Cardiac este, primera noticia que tengo. Gracias por compartir!
Avatar de Usuario
Luis
Mensajes: 2089
Registrado: 03 Nov 2010 19:00
Ubicación: Villaquijada del Tuerto
Has thanked: 1426 times
Been thanked: 685 times

Re: CARDIAC Emulator para Casio FX-880P

Mensaje por Luis »

A ver si lo pruebo, ya he tecleado la mitad en mi 850P. En cuanto tenga un rato, con calma acabaré de introducir el programa y veremos si aprendo a programar ese CARDIAC.

Muy bueno, como suele ser lo habitual -thumbup
AHA! YOU GOT THE WUMPUS!
HEE HEE HEE - THE WUMPUS'LL GET YOU NEXT TIME!!
dancresp
Mensajes: 6638
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Has thanked: 775 times
Been thanked: 1220 times

Re: CARDIAC Emulator para Casio FX-880P

Mensaje por dancresp »

Luis escribió: 25 Feb 2025 16:16 A ver si lo pruebo, ya he tecleado la mitad en mi 850P. En cuanto tenga un rato, con calma acabaré de introducir el programa y veremos si aprendo a programar ese CARDIAC.
Se teclea bastante rápido.
Luis escribió: 25 Feb 2025 16:16 Muy bueno, como suele ser lo habitual -thumbup
Bueno, ya sabes que hago lo que buenamente puedo... -grin
Buscando la IP de la W.O.P.R. he encontrado mi índice
Responder

Volver a “Ordenadores de Bolsillo y Calculadoras”