Olivetti Programma-101 Trainer/Emulator

Foro dedicado a la emulación de sistemas clásicos en el PC o en otros sistemas.
dancresp
Amiga 1200
Amiga 1200
Mensajes: 1391
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 2 veces
Gracias recibidas: 19 veces

Olivetti Programma-101 Trainer/Emulator

Mensajepor dancresp » 06 Nov 2012, 15:11

INTRODUCCIÓN – Un poco de historia
El PROGRAMMA 101 fue la primera computadora de escritorio producida comercialmente. Lanzada por OLIVETTI en la Feria Mundial de Nueva York de 1964, su producción en masa se inició en 1965, con un diseño futurista para su época, el PROGRAMMA 101 tuvo un precio de 3.200$ (23.000$ si se ajusta al 2011). Cerca de 44.000 unidades se vendieron, principalmente en Estados Unidos.

programma101_1.jpg
programma101_1.jpg (36.41 KiB) Visto 4488 veces


El Programma 101 es capaz de calcular las cuatro funcionas aritméticas básicas (suma, resta, multiplicación y división), además de la raíz cuadrada, valor absoluto, y parte fraccionaria. También limpiar, transferir, intercambiar y detener una entrada. tiene 16 instrucciones de salto y 16 instrucciones condicionales de salto. 32 etiquetas están disponibles como destino para las 32 instrucciones de salto y/o las cuatro teclas de inicio (V, W, Y, Z).

Cada registro completo llevó a cabo una serie de 22 dígitos con signo y punto decimal.

Su memoria consiste en 10 registros: tres para operaciones (M, A, R); dos para almacenamiento (B, C); tres para almacenamiento y/o programa (asignable según se necesite: D, E, F); y dos para programa solamente (p1, p2). Cinco de los registros (B, C, D, E, F) pueden ser subdivididos en medio registros, conteniendo números de 11 dígitos con signo y punto decimal. Cuando se usa en programación, cada registro completo guarda 24 instrucciones.

Se imprimen los programas y los resultados en un rollo de papel, similar al de calculadoras o cajas registradoras.

La programación era similar al lenguaje ensamblador, pero simplificado, ya que tenía menos opciones. Está dirigido al intercambio entre los registros de la memoria y los registros de cálculo y las operaciones con los registros.

p101xmpl.gif
p101xmpl.gif (3.75 KiB) Visto 4488 veces


Los programas almacenados pueden ser grabados en las tarjetas de plástico de aproximadamente 10 cm x 20 cm que tenía una capa magnética en un lado y una superficie para escribir en el otro. Cada tarjeta puede ser grabada en dos franjas, lo que le permite almacenar dos programas. Los diez registros se almacenan en la tarjeta, permitiendo que los programas utilizan un máximo de diez registros de 11 dígitos.

programma101_2.jpg
programma101_2.jpg (35.96 KiB) Visto 4488 veces


Todos los cálculos se manejan por medio de dispositivos discretos (transistores y diodos montados en tarjetas de circuito de resina fenólica), ya que no habían microprocesadores y los circuitos integrados estaban en su infancia. Se utiliza una memoria de línea de retardo acústica con alambres de metal como un dispositivo de almacenamiento de datos. Bits de datos sobre la entrada de los imanes provocan al transductor a contraer o expandir (basado en el valor binario) y gire el extremo del alambre. La onda resultante de la torsión se mueve por el cable. Un transductor piezoeléctrico convierte los bits en una señal electrónica que puede ser amplificada y enviada de vuelta con un retardo de 2.2 milisegundos. Normalmente, los bits estarían en tránsito por el retraso, y el ordenador los seleccionados por contar y comparar a un reloj maestro para encontrar el bit requerido.

programma101_3.jpg
programma101_3.jpg (32.14 KiB) Visto 4488 veces


Fue diseñada por el ingeniero de Olivetti Pier Giorgio Perotto en Ivrea. El estilo, atribuido a Marco Zanuso pero en realidad de Mario Bellini, fue ergonómico e innovador para la época, por lo que obtuvo el premio de diseño industrial Compasso d'Oro.



EL PROYECTO
A raíz del post de jepalza en RetroWiki “Documental ‘Canal de Historia: Programma 101’” del 30 de mayo de 2012, este equipo captó mi atención.

Que una calculadora pudiera funcionar sin circuitos integrados lo tenía claro, incluso que se pudiera programar, como ya lo hacían antiguamente mediante válvulas o relés, pero lo que me sorprendió de este equipo fue su tamaño y prestaciones.

Lo primero que hice fue descargar un manual en PDF y al leerlo comprobé que realmente a parte de hacer los cálculos más básicos, permite la programación con instrucciones orientadas a cálculos, intercambio entre registros, e incluso a controlar el flujo del programa mediante saltos condicionales e incondicionales. Por si fuera poco, los programas podían ser grabados en tarjetas magnéticas para volver a ser ejecutados más tarde.

Lo segundo que hice fue mirar si existen emuladores de este sistema. Encontré dos:

PROG101.EXE: Aplicación en MS-DOS del año 1.996 que se limita a la ejecución de programas. Muy frío para usar.

p101.exe: Esta aplicación en Windows es más real pero no está bien depurado, o no le gusta el Windows 7.

Así que me decidí a hacer un emulador/entrenador en MS-DOS, para que al menos el funcionamiento sea más parecido al real, con ciertas modificaciones para hacerlo más cómodo de usar. De aquí el tema del "Trainer". El emulador tenía que facilitar la introducción y corrección de los programas.

Así que aquí tenéis una primera versión del emulador, con la intención de hacer una nueva versión en Windows y con imágenes reales de la máquina.

Su programación, revisión y fase de pruebas me ha llevado unas 3 semanas de trabajo.

Espero lo encontréis interesante.



EL EMULADOR / ENTRENADOR
Este entrenador es un emulador que nos permite usar y programar un PROGRAMMA-101 de una forma rápida y sencilla. Prácticamente todas las funciones de este sistema han sido reproducidas en el emulador.

1340315866_35_FT16006_101_1.gif
1340315866_35_FT16006_101_1.gif (10.22 KiB) Visto 4488 veces


BLOQUES
La pantalla está dividida en varias partes:

- En la parte superior izquierda se puede visualizar el papel de la impresora donde se van mostrando los resultados, y la zona de “debug” del programa. En el modo de edición del programa se muestran las 120 posiciones de programa que se pueden introducir.

- En la parte inferior izquierda hay una reproducción de las distintas teclas del PROGRAMMA-101 original. Prácticamente todas las teclas se corresponden con lo que aparece en este teclado. Para ver las diferencias, pulsar “F1”.

- En la parte superior derecha hay la zona de entrada de valores y los indicadores del programa en uso.

- En la zona inferior derecha se muestran los valores de los registros.

En la zona de los registros se muestra el valor de 8 de los 10 registros disponibles. Los otros dos están reservados para almacenar el programa y no son relevantes. En los registros “B, C, D, E, F” aparece también las letras “b, c, d, e, f” debido a la capacidad de dividir estos registros de 22 dígitos en dos de 11.

Registros:
"M": Se almacena la entrada del teclado, entre otras funciones.
"A": Es el acumulador. En este registro se almacena el resultado de todas las operaciones.
"R": Es una copia del acumulador, salvo excepciones. El valor almacenado no está afectado el número de decimales seleccionados.
"B","C","D","E" y "F": En estos registros se pueden almacenar valores de hasta 22 dígitos más signo y punto decimal. Con la función "/" se pueden partir en dos, "B" y "b" por ejemplo, que almacenan 11 dígitos más signo y punto decimal. Esto permite que pasemos de 5 a 10 registros donde guardar los distintos valores.

Input:
La línea de entrada "INPUT" nos permite comunicarnos con el entrenador mediante una serie de comandos a los que se accede pulsando una tecla.



FUNCIONAMIENTO

C - CALC
Entramos en modo calculadora.

Este modo nos permite realizar la mayoría de las funciones de este sistema, pero no podemos ejecutar programas.
Hay que tener en cuenta que esta calculadora funciona por el método de notación polaca inversa (RPN), con lo que el orden de introducción de los valores no es el mismo que en las calculadoras algebraicas normales.

Por ejemplo, para hacer una suma se procede así:

5 [To A] : Se introduce el valor del registro “M” en el acumulador “A”.
8 + : Se suma el valor introducido en “M” con el del acumulador “A”, guardando el resultado en “A” y “R”.
A [P] : Se imprime el resultado en la impresora.


P - PROGRAM
Entramos en modo programación. Este modo nos permite introducir y editar un programa.

Al entrar en este modo se nos muestra una rejilla de 10 columnas con 12 filas. Esto corresponde a los 120 pasos de programación que permite el sistema.

Cuando el cursor esta rojo:
Con las teclas cursoras podemos mover el cursor y situarlo en la posición deseada.
Con “Ins” podemos desplazar una posición las instrucciones a partir de la posición del cursor.
Con “Supr” podemos suprimir la instrucción que está debajo del cursor, desplazando el resto del programa una posición.
Con “Return” entramos en el modo de edición del programa y el cursor se vuelve verde.
Con “Esc” salimos del modo de programación.

Cuando el cursor esta verde:
En este modo podemos ir introduciendo las distintas instrucciones del programa.
No hay que pulsar “Return” después de cada instrucción ya que el sistema sabe cuando finaliza cada paso de programa.
Pulsando “Esc” el cursor se vuelve rojo y entramos en el modo anterior.


R - RUN
Ejecuta el programa en el modo seleccionado, hasta que encuentra el final del programa.

Este sistema permite introducir hasta 4 subrutinas independientes, una a continuación de la otra.
Por eso, primero de todo nos pide que pulsemos una de las siguientes 4 teclas “V, W, Y ó Z”, ó “Return” si hay un único programa.

En el modo DEBUG, se ejecuta una instrucción cada vez que se pulsa una tecla, y en la zona de “DEBUG” aparece la instrucción que se está ejecutando en rojo, más las 5 anteriores y posteriores. Con esto podemos ver el orden en el que se procesan las instrucciones y el efecto que tiene sobre los registros.

Con la tecla “Esc” se detiene la ejecución del programa en cualquier modo.


M - MODE
Cambia el modo de ejecución del programa.

Hay tres modos:
FAST: Se ejecuta al 100% de la velocidad del PC.
SLOW: Se ejecutan unas 15 instrucciones por segundo, aproximadamente.
DEBUG: Se ejecuta una instrucción cada vez que se pulsa una tecla. Este modo nos permite seguir fácilmente el funcionamiento del programa y el estado de los registros.


D - DECIMAL
Al pulsar tecla se marca el recuadro que hay en la parte inferior izquierda, que es una casilla que nos indica la cantidad de decimales que tenemos activados. Este selector afecta a los cálculos sobre el registro “A” pero no sobre el “R”.

Para cambiar el valor, entre 0 y 15, pulsar las teclas cursoras “Up” y “Down”, y para salir pulsar la tecla “Esc”.


N - NEW
Borra el contenido de la memoria y los registros, y queda listo para empezar a trabajar. Solicita confirmación.


L - LOAD
Carga un fichero que contiene un programa y el estado de los registros “D, E y F”. El fichero, con extensión “.101”, debe estar en la unidad del emulador. Pide el nombre del fichero a cargar.


S - SAVE
Graba un programa y el estado de los registros “D, E y F” en un fichero con extensión “.101”. Pide el nombre del fichero.


Q - EXIT
Sale del entrenador. Pide conformidad.

1340315866_35_FT16006_101_2.gif
1340315866_35_FT16006_101_2.gif (12.69 KiB) Visto 4488 veces




INSTALACION
Descargar el emulador:
PROG101.rar
(38.89 KiB) Descargado 429 veces


El fichero incluye el ejecutable, el código fuente en BASIC y 3 ficheros KBK de ejemplo.

Descomprime el contenido del fichero en una carpeta. El ejecutable es un EXE de MS-DOS y funciona sin problemas bajo MS-DOS, Windows y Virtualizadores como el DOS-Box.



PRIMEROS PASOS
Si quieres ejecutar los programas de ejemplo:

1) Ejecuta el EXE para entrar en el entrenador.
2) Pulsa "L". Pedirá el nombre del fichero a cargar.
3) Escribe "PRUEBA" y pulsa RETURN.
4) Pulsa "R" para ejecutar el programa.
5) Este programa nos pide dos números, y se encarga de sumarlos, restarlos, multiplicarlos, dividirlos, hacer la raíz cuadrada del primero y sumar los resultados de las distintas operaciones, imprimiendo todos los resultados en el papel.

Hay varios ficheros de ejemplo más.



PROGRAMAS DE EJEMPLO
Con el emulador se entregan 8 programas.

CALCULAR
Este programa incluye cuatro subrutinas: suma, resta, multiplicar y dividir, y para acceder a ellas hay que pulsar “V”, “W”, “Y” ó “Z”. Se entran dos números y el programa ejecuta la operación correspondiente, quedando listo para hacer una nuevo cálculo.

CONSTANT
Sacado del manual original, este programa permite generar el número constante “0.0003” a partir de dos números generados por el propio programa. Hay que tener en cuenta que los programas no pueden contener números directamente. En este caso hay que elegir 4 decimales.

COSENO
Aparece en el manual original, pero no lo he podido ejecutar por dudas con el valor en un registro. En el manual no está bien explicado.

COUNTER
Este programa es un ejemplo de como hacer un bucle. Se introduce el número de repeticiones y muestra el resultado de la multiplicación de los diferentes valores. Así, entrando 5 nos muestra 120, que es 1x2x3x4x5.

DOMINO
Aparece en el manual original y permite el desplazamiento de valores por los registros, mostrando la suma de ellos.

PRUEBA
Se introducen dos números y se nos muestra el resultado de sumarlos, restarlos, multiplicarlos, dividirlos, la raíz cuadrada del primero y la suma de todos los resultados.

SALTO
Aparece en el manual original, y es un ejemplo del uso de saltos condicionales. Se introducen dos números, si el resultado de la resta es distinto de 0 se muestra en la impresora, en caso contrario hace un salto de línea.

SUMAR
Vamos introduciendo números para sumar y al pulsar Z nos muestra el resultado. Es una forma sencilla de realizar sumas de múltiples números imprimiendo únicamente el resultado.



CARACTERÍSTICAS Y LIMITACIONES DEL EMULADOR
El sistema original permite programas de 48 pasos y 3 registros (D, E y F) de 24 bytes cada uno. Si no se usan, podemos convertir esos bytes en nuevos pasos de programa hasta un tope de 120 pasos (24x5).
Todos los programas del emulador permiten 120 pasos de programa, además de guardar los registros “D, E y F”.

El sistema original permite dividir un programa en varios bloques de 120 pasos. El emulador no lo permite, y por ello no se ha emulado la instrucción RS.

El sistema original permite realizar operaciones con números de hasta 22 cifras. Por limitaciones del lenguaje de programación usado para programar el emulador, a partir de las 16 cifras se modifica el formato de los resultados.

Ocasionalmente, puede producirse algún problema con el redondeo de los números.

Para conocer las equivalencias entre las teclas del PROGRAMMA-101 y el teclado del PC, pulsa F1.
Buscando la IP de la W.O.P.R.

jepalza

Re: OLIVETTI PROGRAMMA-101 Trainer/Emulator

Mensajepor jepalza » 06 Nov 2012, 16:38

De esta computadora/calculadora había un documental muy majo y largo, que comentamos una vez , ¿te acuerdas tú cuál era, Dancresp? Sería interesante dejar el vídeo aquí, junto al "emuleitor", que es curioso verlo primero, y probarlo despues =D>

dancresp
Amiga 1200
Amiga 1200
Mensajes: 1391
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 2 veces
Gracias recibidas: 19 veces

Re: OLIVETTI PROGRAMMA-101 Trainer/Emulator

Mensajepor dancresp » 06 Nov 2012, 17:03

El documental está en youtube en perfecto spanish y con una excelente calidad de imagen.




(http://www.youtube.com/watch?v=HkI04PkTZTc)


Y el manual lo podéis descargar de aquí: http://www.classiccmp.org/dunfield/calc/olpro101.pdf

Yo me basé en él para hacer el emulador, y en algunos aspectos me volví loco porque no acaban de estar muy bien explicadas algunas cosas.
Buscando la IP de la W.O.P.R.

Avatar de Usuario
zitror
Amiga 2500
Amiga 2500
Mensajes: 5292
Registrado: 02 Jul 2006, 00:16
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
Ubicación: El interior de un Z80
Gracias dadas: 174 veces
Gracias recibidas: 71 veces
Contactar:

Re: OLIVETTI PROGRAMMA-101 Trainer/Emulator

Mensajepor zitror » 06 Nov 2012, 17:46

Dancresp sin palabras, un trabajo realmente impresionante =D>

Lo que aprende uno con vosotros, el documental cae esta noche fijo.

Salu2 ;)
(C) 1.982 Sinclair Research Ltd

La buhardilla de Zitror

jepalza

Re: OLIVETTI PROGRAMMA-101 Trainer/Emulator

Mensajepor jepalza » 06 Nov 2012, 19:58

Exacto, ese documental era. Yo lo ví en alguno de los canales de cable que tengo, y luego lo comenté en el foro, pero no recordaba ni el nombre.

Avatar de Usuario
Hark0
Amiga 1200
Amiga 1200
Mensajes: 1695
Registrado: 11 Jul 2012, 23:44
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Ubicación: Cornellà de Llobregat - Barcelona
Contactar:

Re: OLIVETTI PROGRAMMA-101 Trainer/Emulator

Mensajepor Hark0 » 07 Nov 2012, 07:59

Bravo! Excelente post.

=D>

Gracias por toda la info... desconocía la existencia de esta máquina.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.

Avatar de Usuario
Alki
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 518
Registrado: 05 Jul 2006, 10:24
Gracias dadas: 1 vez
Gracias recibidas: 2 veces

Re: OLIVETTI PROGRAMMA-101 Trainer/Emulator

Mensajepor Alki » 07 Nov 2012, 11:21

Muy interesante y didactico, el documental me lo guardo para verlo tranquilamente.. =D>


Volver a “Emuladores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados