jueves, 30 de agosto de 2012

El sonido en 8 bits (III): En el Amstrad CPC

Artículo publicado en el número 4 de RetroWiki Magazine

El sonido desde el BASIC en un Amstrad CPC


El sucesor del Spectrum en el mercado fue claramente el Amstrad CPC, sobre todo desde el momento en que Amstrad adquirió a la empresa de Sinclair, en este artículo hablaré de como hacer sonar a este aparato desde BASIC.

El sonido en el Amstrad CPC

La gama CPC utiliza el chip de sonido General Instrument AY-3-8912, que proporciona tres canales configurables de sonido para generar ondas cuadradas y ruido blanco. El aparato integra un pequeño altavoz de 4 centímetros mono interno, con un potenciómetro de control de volumen. Si deseamos salida estéreo hay que usar una salida de sonido mediante una jack de 3,5 mm para auriculares.

Por la forma de trabajar del equipo, la salida estéreo y la mono estaban separadas, ya que la implementación de este chip es que usaba el canal 1 como la izquierda, el 2 como el centro y el 3 como la derecha, por lo que en todos los juegos se escucha por el altavoz la música de fondo y los efectos sencillos, y en algunos se sacaba por la toma de auriculares música o efectos de sonido mas elaborados.

Es posible reproducir muestras de sonido digital en una resolución aproximada de 5 bits enviando una trama de valores al chip de sonido, pero como esta técnica consume muchos recursos de procesador, no se puede usar durante los juegos, por eso se usó principalmente en las pantallas del menú del juego, o en escenas no jugables, en juegos como Chase H.Q., Meltdown, y RoboCop.

Sonido desde BASIC

Desde el BASIC se usa la instrucción SOUND, que permite emitir sonidos con bastante control desde el programa. La sintaxis es (entre corchetes la parte opcional):

SOUND canal, nota[,duración][,volumen][,envolvente volumen][,envolvente tono][,ruido]

  • Canal indica por que canal deseamos emitir el sonido, lo que permite producir varios sonidos a la vez, uno por cada canal. Los canales se denominan 1, 2 y 4, Si queremos emitir el mismo sonido por dos canales, solo debemos sumarlos, así indicamos 5 (1+4) para los dos canales izquierdo y derecho, o 7 (1+2+4) para todos los canales.
  • Nota es la frecuencia de la nota que queremos ejecutar, disponemos de 8 octavas desde la -3 hasta la 4. Las notas de la octava cero, la octava central, son DO=478, RE=426, MI=379, FA=358, SOL=319, LA=284, SI=253
  • Duración es el tiempo en centésimas de segundo que queremos que suene la nota, si no indicamos nada durará 20 centésimas de segundo. Si queremos que suene un segundo indicaremos el valor 100
  • Volumen al que queremos que suene la nota, que puede ir desde 0 (silencio) a 7 (máximo).

Como primer ejemplo pondré este que ejecuta teóricamente un silbido de Goku de Dragon Ball

100 REM Las notas a usar
110 DO=478: RE=426: MI=379: FA=358: SOL=319: LA=284: SI=253
120 REM Bucle de lectura
130 READ a$
140 IF a$=”” THEN STOP
150 IF a$=”Do” THEN SOUND 1, DO
160 IF a$=”Re” THEN SOUND 1, RE
170 IF a$=”Mi” THEN SOUND 1, MI
180 IF a$=”Fa” THEN SOUND 1, FA
190 IF a$=”Sol” THEN SOUND 1, SOL
200 IF a$=”La” THEN SOUND 1, LA
210 IF a$=”Si” THEN SOUND 1, SI
220 GOTO 130
230 REM La melodía
240 DATA “Re”,“Si”,“La”,“Sol”,“La”,“Si”,“Re”,“Si”,“La”,“Sol”
250 DATA “Re”,“Si”,“La”,“Sol”,“La”,“Si”,“Mi”,
260 DATA “Re”,“Si”,“La”,“Sol”,“La”,“Si”,“Re”,“Si”,“La”,“Sol”
270 DATA “Mi”,“Si”,“La”,“Sol”,“La”,“Si”,“Mi”
280 DATA “La”,“Mi”,“Re”,“Mi”,“Re”,“Mi”,“Re”,“Si”
290 DATA “La”,“Si”,“Re”,“”
Errata corregida: en el artículo publicado pone en las líneas 150 a 210 siempre DO

Las envolventes

Una característica de los CPC es que permiten hacer variaciones sobre un sonido mientras se emite, pudiendo variar el volumen o el tono del sonido, para lo que se usan las envolventes, que se especifican usando el comando ENV y ENT respectivamente.

Para indicar que el volumen debe variar mientras se reproduce el sonido deberemos crear una "envolvente de volumen", usando:

ENV nro,etapa, cambio,duración[etapa, cambio,duración][etapa, cambio,duración]
  • Nro es el número que identifica la envolvente, de esta manera podemos tener varias preparadas a la vez, podemos tener hasta 15 diferentes.
  • Etapa es la cantidad de etapas que queremos tener
  • Cambio es la cantidad en que aumentamos el volumen, puede ser positivo para subir, negativo para bajar, o cero para mantener
  • Duración es cuanto dura cada una de las etapas
Cada envolvente puede tener hasta tres tramos, ejecutándose uno tras otro, de forma que podemos subir y bajar el volumen en una sola envolvente. Un ejemplo de una etapa sería este:

ENV 1,5,3,20
SOUND 1,478,0,0,1
ENV 2,12,1,5,1,0,20,6,-2,20
SOUND 1,426,0,0,2

La primera envolvente define que tenemos 5 etapas de aumento, en cada etapa subiremos tres unidades el volumen, y cada etapa durará 20 centésimas de segundo. Luego se emite un DO, que parte del volumen cero, y mediante la envolvente 1 irá subiendo de 3 en 3 unidades hasta que llegue a 15, y la duración total del sonido será la del al envolvente, por lo que no indicamos duración, que será en este caso sería de 5x20, 1 segundo.

La segunda envolvente tiene tres tramos, el primero tiene 12 tramos de 5 centésimas cada uno, subiendo una unidad de volumen en cada tramo a partir de lo indicado en el SOUND, luego tiene una etapa en la que no toca el nivel del sonido durante 20 centésimas, y termina con 6 etapas de bajada de 2 unidades cada una, que duran 20 centésimas.

 De igual manera se puede cambiar el tono de la nota con la envolvente de tono por tramos y etapas, usando la sentencia:

ENT nro,etapa,cambio,duración[etapa, cambio,duración][etapa, cambio,duración]
  • Nro es el número que identifica la envolvente de tono, de esta manera podemos tener varias preparadas a la vez, podemos tener hasta 15 diferentes.
  • Etapa es la cantidad de etapas que queremos tener
  • Cambio es la cantidad en que cambiamos el tono de la nota, puede ser positivo para subir, negativo para bajar, o cero para mantener
  • Duración es cuanto dura cada una de las etapas
Cada envolvente puede tener hasta tres tramos, ejecutándose uno tras otro, de forma que podemos subir y bajar el tono de la nota en una sola envolvente. Un ejemplo de una etapa sería este:

ENT 1 ,80 ,-4 ,1
SOUND 1,478,50,15 ,0 ,1

El sonido comienza con una frecuencia de 478 (DO), la modificamos en 80 pasos, bajando 4 unidades de tono en cada paso, y estos pasos tienen una duración de una centésima de segundo. Como usamos un cero en la orden SOUND para envolvente de volumen no se usa ninguna, pero se pueden combinar ambos efectos.

Ruido blanco

Podemos añadir un último parámetro a la orden SOUND, que solo puede ser un uno, para indicar que emita ruido a la vez que el sonido, alterando el mismo. Este tipo de ruido se denomina ruido blanco por ser una señal completamente aleatoria

10 FOR i=0 TO 10
20   f=INT(RND*20)
30   SOUND 1,f,25,10,0,0,1
40 NEXT

Para la programación en código máquina del AY-3-891x dedicaré otra entrada, ya que la serie AY-3-8910/AY-3-8912/ AY-3-8913 son iguales internamente, solo cambia el número de puertos de entrada de que disponen, y han sido usados en aparatos como, Amstrad CPC, MSX, Atari ST, Oric 1 y Atmos, Timex, Spectrum 128/+2/+3 o Spectravideo entre otros, en la tarjeta de sonido Mockingboard para el Apple II, o en videoconsolas como la Intellivision o la Vectrex.



Jose Antonio Vaqué Urbaneja, podéis contactar conmigo en mi mail o ver más cosas en mi blog

miércoles, 29 de agosto de 2012

Introducción a la programación usando BASIC (IV): Cadenas, GOTO

Artículo publicado en el número 4 de RetroWiki Magazine

CONTROL DEL PROGRAMA Y MANEJO DE CADENAS. EJEMPLO: CALCULADORA

En la entrada anterior presentamos la instrucción básica de control del programa, la sentencia IF condición THEN acción, que junto al uso del GOTO permite realizar cualquier programa, mas adelante usaremos otras sentencias de control, que agilizan el manejo del programa, pero vamos a centrar esta entrada en estas dos, junto con instrucciones de manejo de cadenas, para hacer una nueva versión de la calculadora.

Vamos a hacer una calculadora que nos pregunte que operación deseamos usar, la escribamos en una solo línea, la analice y la ejecute. Así podemos poner “3+2-7” y debe darnos como resultado -2. De momento usaremos solo operaciones sencillas, ya iremos ampliando. Iremos por partes (al final el programa completo)


100 REM ********************************************************
110 REM Calculadora. J.A.Vaque 2011
120 REM ********************************************************
130 REM
140 REM ********************************************************
150 REM Presentar la pantalla
160 REM ********************************************************
170 CLS
180 PRINT "Calculadora simple. Version 3.0"
190 PRINT "*******************************"
200 PRINT
210 REM Introducir valores
220 PRINT "Introduzca la operación a efectuar: ";
230 INPUT P$
240 IF (P$="FIN") OR (P$="fin") OR (P$="Fin") THEN GOTO 680


La primera parte es sencilla, empieza por comentarios que ponemos el nombre del programa, el autor y la fecha. Luego presenta la pantalla inicial entre las líneas 140 y 200, seguido de la pregunta principal, el INPUT en que se guarda el valor de lo introducido en la variable P$. Lo primero es analizar esa cadena, si hemos elegido “FIN” acaba el programa. Por ejemplo podemos escribir la expresión 32-23*2
 
250 REM ********************************************************
260 REM Analizamos la cadena. Inicializamos valores necesarios
270 REM ********************************************************
280 LET NUM=0
290 LET RES=0
300 LET O$=""
310 REM ********************************************************
320 REM Analizamos la cadena. Analizar y ejecutar
330 REM ********************************************************
340 IF LEN(P$)=0 THEN GOTO 520
350 LET C$=LEFT$(P$,1)
360 LET P$=RIGHT$(P$,LEN(P$)-1)
370 LET OK=0
380 IF (C$>="0") AND (C$<="9") THEN GOTO 460
390 IF (C$="+") OR (C$="-") OR (C$="*") OR (C$="/") THEN GOTO 520
400 IF OK=1 THEN GOTO 340
410 PRINT "Error en la cadena analizada"
420 STOP

Ya tenemos en la variable P$ una cadena con una operación, podemos empezar a analizarla, para lo que primero inicializamos tres variables que nos controlarán el proceso, en NUM iremos guardando los números que vamos leyendo, en nuestro ejemplo 32, 23 y 2. En la variable RES guardaremos el resultado final de la operación. En la variable O$ guardaremos la operación a efectuar, en nuestro ejemplo menos y por.

Empieza el análisis en la línea 340, para lo que vamos sacando caracteres de la cadena P$, y el proceso finalizará cuando la cadena esté vacía. En ese momento tenemos que ejecutar la última operación que tengamos pendiente con el último número que tengamos encontrado. Eso es lo que hacemos en la línea 340, cuando ya hemos terminado de analizar saltamos a la operación.

Luego en la línea 350 guardamos el primer carácter de la cadena en la variable C$, para lo que usamos una operación de cadenas, LEFT$(cadena, longitud) extrae de una cadena los caracteres de su izquierda con la longitud que indiquemos. En la línea 360 quitamos el primer carácter de la cadena, usando la operación contraria, RIGHT$(cadena, longitud) extrae de la cadena los últimos caracteres por su derecha. Para ello usamos la función LEN(cadena), que nos retorna la longitud total de la cadena, y al restarle uno sacamos los caracteres de la cadena menos el primero.

NOTA: En el Spectrum no existe LEFT$ ni RIGHT$, en su lugar se usa Cadena$(ini TO fin), en donde Cadena es una variable, ini es la posición inicial, fin la final, si no se indica inicial es desde el principio, si no se indica final es hasta el fin. Por eso hay que cambiar esas dos líneas para que ponga:


350 LET C$=P$(1 TO 1)
360 LET P$=P$(2 TO)

En la línea 370 ponemos un indicador, que nos dirá si los siguientes procesos han encontrado un carácter correcto. Si el carácter a analizar es un número, en la línea 380 lo vemos y enviamos a la línea 460, donde está la rutina en que montará los números. Si es una operación, la línea 390 la reconoce y envía a la rutina que ejecuta la operación. Ambas rutinas cambian el indicador de carácter correcto encontrado, si no lo han hecho el carácter no es bueno, y en las líneas 400 a 420 parar el programa.

430 REM ********************************************************
440 REM Guardarse el numero
450 REM ********************************************************
460 LET OK=1
470 LET NUM=NUM*10+VAL(C$)
480 GOTO 340
490 REM ********************************************************
500 REM Ejecutar la operacion
510 REM ********************************************************
520 LET OK=1
530 IF (O$<>"") THEN GOTO 560
540 LET RES = NUM
550 GOTO 600
560 IF (O$="+") THEN RES = RES + NUM
570 IF (O$="-") THEN RES = RES - NUM
580 IF (O$="*") THEN RES = RES * NUM
590 IF (O$="/") AND (NUM<>0) THEN RES = RES / NUM
600 LET O$=C$
610 LET NUM=0
620 IF (LEN(P$)<>0) THEN GOTO 340
630 REM ********************************************************
640 REM presentar el resultado
650 REM ********************************************************
660 PRINT "Resultado: ";RES
670 GOTO 200
671 REM ********************************************************
672 REM Final del programa
673 REM ********************************************************
680 PRINT
690 PRINT "Fin del programa"
700 PRINT

Nos quedan tres rutinas, la que guarda el número que hemos encontrado está entre las líneas 460 y 480, solo pone el indicador de correcto, y luego añade el dígito al número que llevamos, para lo que solo tienes que multiplicar lo que llevamos por 10 y sumarle el número encontrado. Como el número encontrado es un carácter, debe convertirse en número, para ello usamos la función VAL(cadena), que nos devuelve el valor numérico de una cadena de caracteres.

La rutina de análisis de la operación primero pone el indicador de correcto, y luego mira si ya tenemos una operación, si es la primera, entonces solo hay que guardarse el número que hemos encontrado hasta el momento como el primer resultado y saltamos a las parte que guarda la operación para después en O$, borra el número encontrado para comenzar el siguiente, y mientras queda cadena, sigue procesando. Si ya hay una operación, salta a la línea 560, en la que primero hay que ejecutar la operación anterior, que tenemos guardada en O$, luego guardamos la operación, borramos el número, y mientras quede cadena seguir procesando.

Lo último es la rutina que está entre la línea 660 que presenta el resultado, y luego volvemos a empezar pidiendo otras operaciones, y entre las líneas 680 y 700 está el final del programa.

Control de errores

La línea 590 contiene un control de errores, como no se puede dividir por cero, antes de realizar esa operación se verifica que sea posible, si no es posible no se hace. El uso del indicador y el error de las líneas 400 a 420 es otro tipo de control de errores, ambos son necesarios para que el programa no se pare por errores.

En esta entrada hemos reforzado el uso de las instrucciones IF y GOTO, hemos aprendido algunas funciones de manejo de cadenas, y hemos usado un pequeño control de errores, mejorando la calculadora básica. En la próxima entrada seguiremos con control del programa, mejoraremos esta calculadora usando otras funciones de control de flujo. Animaros a teclear este programa, entenderlo bien, e intentar mejorarlo, solo se aprende a programar programando.



Jose Antonio Vaqué Urbaneja, podéis contactar conmigo en mi mail o ver más cosas en mi blog


EL PROGRAMA COMPLETO


100 REM ******************************************************
110 REM Calculadora. J.A.Vaqué 2011
120 REM ******************************************************
130 REM
140 REM ******************************************************
150 REM Presentar la pantalla
160 REM ******************************************************
170 CLS
180 PRINT "Calculadora simple. Version 3.0"
190 PRINT "*******************************"
200 PRINT
210 REM Introducir valores
220 PRINT "Introduzca la operación a efectuar: ";
230 INPUT P$
240 IF (P$="FIN") OR (P$="fin") OR (P$="Fin") THEN GOTO 680
250 REM ******************************************************
260 REM Analizamos la cadena. Inicializamos valores necesarios
270 REM ******************************************************
280 LET NUM=0
290 LET RES=0
300 LET O$=""
310 REM ******************************************************
320 REM Analizamos la cadena. Analizar y ejecutar
330 REM ******************************************************
340 IF LEN(P$)=0 THEN GOTO 520
350 LET C$=LEFT$(P$,1)
360 LET P$=RIGHT$(P$,LEN(P$)-1)
370 LET OK=0
380 IF (C$<="0") AND (C$>="9") THEN GOTO 460
390 IF (C$="+") OR (C$="-") OR (C$="*") OR (C$="/") THEN GOTO 520
400 IF OK=1 THEN GOTO 340
410 PRINT "Error en la cadena analizada"
420 STOP
430 REM ******************************************************
440 REM Guardarse el número
450 REM ******************************************************
460 LET OK=1
470 LET NUM=NUM*10+VAL(C$)
480 GOTO 340
490 REM ******************************************************
500 REM Ejecutar la operación
510 REM ******************************************************
520 LET OK=1
530 IF O$<> "" THEN GOTO 560
540 LET RES = NUM
550 GOTO 600
560 IF (O$="+") THEN LET RES = RES + NUM
570 IF (O$="-") THEN LET RES = RES - NUM
580 IF (O$="*") THEN LET RES = RES * NUM
590 IF (O$="/") AND (NUM<>0) THEN LET RES = RES / NUM
600 LET O$=C$
610 LET NUM=0
620 IF LEN(P$)<>0 THEN GOTO 340
630 REM ******************************************************
640 REM presentar el resultado
650 REM ******************************************************
660 PRINT "Resultado: ";RES
670 GOTO 200
671 REM ******************************************************
672 REM Final del programa
673 REM ******************************************************
680 PRINT
690 PRINT "Fin del programa"
700 PRINT

martes, 28 de agosto de 2012

Electrónica de Andar por Casa, Artículo 5: El polímetro

Artículo publicado en el número 4 de RetroWiki Magazine

Electrónica de andar por casa, by javu61


El nombre correcto del aparato del que hablaré debe ser multímetro o polímetro, ya que sirven para efectuar múltiples tipos de medición, pero se les conoce como tester, y es el instrumento básico para la electrónica.

El tester, herramienta básica de la electrónica

Es un instrumento portátil para medir directamente magnitudes eléctricas activas (voltaje o tensión o potencial, amperaje o corriente) y pasivas (resistencias), e indirectamente puede medir otras variables como la capacidad de un condensador. Las medidas pueden realizarse para corriente continua o alterna, y en varios márgenes de medida para cada una. Los primeros eran analógicos, pero hoy día son digitales, salvo los que pretenden tener aspecto retro.

El aparato se basa en la ley de Ohm, una de las bases de la electrónica, que es muy sencilla, dice que el voltaje que circula por un punto es el producto de la intensidad de la corriente en el punto y la resistencia existente en dicho punto, lo que relaciona las tres magnitudes básicas de la electricidad:

V = I . R      I = R / V (corregida errata)  I = V / R       R = V / I      (Ley de Ohm)

Ampliación sobre lo publicado: Aunque creo que la definición anterior es suficiente para nuestros propósitos, para ser mas precisos hay que decir que el voltaje es la diferencia de potencial entre dos puntos de un circuito, por lo que en lugar de hablar del voltaje en un punto hay que decir que la diferencia de potencial existente entre dos puntos es el producto de la intensidad que circula entre dichos puntos y la resistencia existente entre dichos puntos. Por eso para medir voltajes hay que poner siempre una punta en un punto de masa y la otra en el punto del circuito a medir.

El aparato internamente solo es un voltímetro o un amperímetro, y dispone de una batería interna, por lo que puede generar una corriente de valor conocido cuando lo necesita, y aplicando la fórmula calcula la magnitud a medir.

También hay que saber que solo saben medir corriente continua, por lo que las mediciones en alterna las realiza a través de un conversor, y solo dan medidas del valor eficaz de la corriente, que no coincide exactamente con la que pasa por el punto.

Descripción del aparato

Aunque hay varios diseños, todos son básicamente iguales. Constan de una pantalla de aguja o digital en la que se presenta la medida, una ruleta para seleccionar el tipo de medición a efectuar, y varias tomas para las puntas de prueba, una es siempre negra que representa la masa del aparato, en ella siempre se introduce el cable negro, otra es roja para medir voltajes/resistencias, y las restantes sirven para medir intensidades, el cable rojo se introduce en una de esas tomas según el tipo de medida que deseemos. Pero si alguno tiene uno como el de la foto, que me lo diga, mi padre tenía uno de estos y es el que yo usaba cuando di mis primeros pasos en el tema, y me gustaría tener uno así.

Pueden tener entradas adicionales para medir, la más común mide transistores, formada por un conjunto de 8 agujeros en los que se introducen las patas de los transistores, pero los hay con entradas de sondas de temperatura, de medición de condensadores, o de otras mediciones. Pueden tener iluminación de la pantalla, o un botón Hold para fijar la lectura y poder verla al quitar las sondas.

La ruleta está dividida en 5 zonas, con varias escalas en cada zona, la de resistencias-diodos, la de voltaje en continua, la de voltaje en alterna, la de intensidad en continua, y la de intensidad en alterna, aunque hay aparatos que solo tienen dos selectores, uno de Voltios-Ohmios-Amperios y otros de Continua-Alterna, y la escala se ajusta automáticamente.

Mediciones de resistencias

Para medir el valor de una resistencia, primero debemos poner la ruleta en la escala de resistencias apropiada, conectar el cable rojo a la toma de voltios/Ohmios, y luego tocar con las puntas de las sondas los alambres que salen de la resistencia. Nos debe dar en la pantalla el valor de la misma, siempre teniendo en cuenta que las resistencias se fabrican con una tolerancia, por tanto una del 10% de 800Ohmios puede dar un valor de entre 820 y 880 (corregida errata) 720Ohmios y 880Ohmios, aunque normalmente no se van tanto.

Si la resistencia está en un circuito, al medir no mediremos su valor, sino el valor de la resistencia del circuito, que se verá afectada por el resto de componentes, por eso para medir hay que levantar una pata de la resistencia. Si medimos fuera del circuito, un error común es sujetar la resistencia con las manos, esto es lo mismo de antes, la piel humana tiene una resistencia que alterna el valor de la medida. Podéis hacer la prueba simplemente sujetando las puntas con los dedos y variando la escala, encontrareis la resistencia de la piel, y si apretáis las sondas con los dedos veréis que varía.

Mediciones de continuidad

Para medir la continuidad, y saber si hay conexión entre dos puntos, o si un cable está roto, mediremos la resistencia. Si hay continuidad la resistencia será muy baja, cero o cercana a cero, por lo que solo debemos usar la escala mas baja de resistencia y medirla. La mayoría de los tester modernos tienen una posición específica para ello, marcada con el símbolo de diodos, ya que también se usa para comprobarlos. En esta posición, el tester emitirá un pitido si hay continuidad, por lo que nos ahorramos estar mirando la pantalla, y es muy cómodo. Esta es una de las mediciones básicas y mas utilizadas del aparato, de hecho con esta medición y la de voltajes tenemos resueltas la mayoría de nuestras mediciones, tanto en nuestros aparatos como en la electrónica general.


Mediciones de voltaje

Para medir el voltaje de una fuente, ponemos el tester en posición voltios en la escala apropiada, conectar el cable rojo a la toma de voltios/Ohmios, y ponemos la punta negra en un lugar del aparato que sea masa, y la roja en el punto en que queramos medir, en la pantalla aparecerá el valor del voltaje en dicho punto. Un error común es no poner la masa adecuadamente, y un accesorio útil es una pinza de cocodrilo, para fijar el cable de masa y medir más cómodamente en el aparato.


Para medir el voltaje de un alimentador, introducimos el cable rojo en el conector, y tocamos con el negro el exterior. Si la medición es positiva, eso quiere decir que el interior del conector da voltaje positivo, y el exterior negativo (positivo al centro). Si la medición es negativa, quiere decir que el interior del conector es negativo, y el exterior positivo (negativo al centro). Esto se representa con este símbolo en las fuentes, en este caso el centro es positivo y el exterior negativo.

Mediciones de amperaje

Para medir el amperaje hay que complicar un poco el tema, ya que lo que se mide es la corriente que atraviesa el aparato, debe efectuarse en serie con lo que medimos, no en paralelo. Ponemos el tester en posición amperios en la escala apropiada, conectar el cable rojo a la toma de amperios apropiada, y ponemos las dos puntas del aparato haciendo un puente entre lo que se quiere medir. Por ejemplo para medir el consumo de un aparato, hay que desoldar un hilo del conector de alimentación, y puentear con el teste ese hilo, cuando encendamos el aparato, la corriente que atraviesa el tester es la que consume el aparato, dándonos la lectura en la pantalla, como veis no es muy complicado, pero hay que modificar algo el circuito a medir, para que el aparato pueda tomar la lectura de la corriente. Con esto podemos saber cuanto consume realmente nuestros aparatos, ya que las fuentes suelen ir sobredimensionadas para evitar problemas, o para poder enchufar otros periféricos al aparato.


El siguiente capítulo empezamos con la electrónica analógica, y lo dedicaré a las fuentes de alimentación.

Jose Antonio Vaqué Urbaneja, podéis contactar conmigo en mi mail o ver más cosas en mi blog

lunes, 27 de agosto de 2012

Memorias de núcleos magnéticos

Indice de entradas sobre Historia de la Informática

Corregido el 28/02/2013

Los primeros ordenadores usaban memorias de propagación o de retardo, como las de mercurio o los tubos Williams, había otras como las que usaban un alambre al que se hace vibrar, según la longitud tardaba más o menos en detectarse al final del alambre la vibración. Pero todas estas memorias eran delicadas, las de propagación dependían mucho de la dilatación del medio, por lo que era importante mantener una temperatura constante. Los tubos Williams eran susceptibles a interferencias, y tendían a de-sincronizarse tras un tiempo funcionando, por lo que se buscó un nuevo sistema, y el mejor fueron las memorias de ferritas, ideadas por Jay Forrester (más conocido como padre de la Dinámica de Sistemas), al que le costó 7 años convencer a las empresas de su uso, pero que luego fueron adoptadas de forma muy rápida (y sin pagar derechos de patente, por lo que Jay pasó otros 7 años litigando), y fueron usadas en todos los ordenadores hasta el desarrollo de las memorias en chip, incluyendo las primeras calculadoras electrónicas de sobremesa.

Si por un hilo circula una corriente eléctrica, se genera un campo magnético que lo rodea y cuya dirección depende del sentido de la corriente, por lo que es controlable. Si agarramos con la mano derecha el hilo (aunque seamos zurdos), extendiendo el pulgar en la dirección de la corriente, los otros dedos indican la dirección del campo magnético que envuelve al hilo (regla de la mano derecha).

Si arroyamos un hilo sobre un material ferroso, como un clavo, se concentra el campo magnético imantando el clavo y formando un electroimán. Al contrario, un anillo ferroso puede imantarse en uno u otro sentido, dependiendo del sentido de la corriente de un hilo que lo atraviese, solo es necesario enviar una corriente de un determinado valor, y el sentido en que recorre la corriente el anillo cambia. Además, podemos detectar el sentido del campo magnético del anillo, viendo cómo afecta a una corriente que circule por el hilo.

Bien, ya tenemos la posibilidad de almacenar un solo bit, usando un anillo y un hilo. Pero si necesitamos muchos bits, no podemos usar un hilo por cada uno, si queremos almacenar 1K byte, dispondremos de 8.192 bits, y no es practico usar 8.192 hilos, por lo que se recurrió a la solución de establecerlos en filas y columnas, poniendo un anillo en cada intersección. Si por cada hilo se envía la mitad de la corriente necesaria para hacer cambiar el sentido de magnetización del anillo, solo afectará al anillo situado en la intersección de la fila y columna, cambiando el estado de ese anillo pero no los de alrededor. Esta disposición permite ahorrar muchos hilos, si usamos 8 de columna y 1.024 de fila podemos manejar 1K, y hemos reducido de 8.192 a 1.032 los hilos necesarios. Por razones de interferencia los anillos se disponían alternativamente a izquierdas o derechas, como se aprecia en la figura de ejemplo.

Para leer un byte, simplemente se envía la señal de cambio de valor por el hilo de fila, para que cambien a cero todos los anillos de la fila, si el anillo está a cero no pasa nada, pero si está a uno, el cambio de sentido del campo magnético induce una corriente en el hilo de columna, que es detectada. De esta forma se puede leer un byte completo cada vez, ya que no es práctico leer bit a bit. Como hemos puestos a cero todos los anillos de la fila, la lectura es destructiva, por lo que es necesario nada mas leer un dato, volverlo a escribir en la memoria, por lo que al contrario de las memorias modernas, eran más lentas en lectura que en escritura.

Para mejorar la detección de los valores, no se usaba el mismo hilo para lectura y escritura, por lo que habitualmente las ferritas estaban atravesados por tres hilos, el de columnas era siempre de selección, y disponían de un hilo de filas para lectura y otro para escritura.



Como hemos visto, hacían falta muchos hilos para una memoria de 1K, por lo que para optimizar el diseño en lugar de 1024x8 se empleaban sistemas más cuadrados (también hay que tener en cuente que en esa época las palabras no eran todavía de 8 bits, lo normal eran 11, 13, 21 y hasta 35 bits por byte). Aun así eran muchos hilos, por lo que el diseño se complicó, pasando de una disposición 2D, a una denominada 3D, en la que se disponían las ferritas en capas, pudiendo tener varias capas de ferritas una junto a la otra, todas atravesadas por los mismos hilos de fila y columna, por lo que fue necesario añadir un cuarto hilo, el de inhibición, que permitía seleccionar que plano de ferritas deseábamos usar, para ello se enviaba a una señal de grabación pero negativa por ese hilo, de forma que al cruzarse en los anillos no deseados se anulasen la señal de lectura/escritura con la de inhibición. Por razones de hilado este hilo se tejía en diagonal, formando el habitual núcleo de 4 hilos, que es el logotipo de la informática en España, ya que ningún elemento ha revolucionado tanto la informática y la ha hecho prosperar más que las introducción de estas memorias, que fueron un avance fundamental.





Las primeras unidades usaban anillos de 8mm de diámetro, pero conforme más pequeño fueran los anillos, menos energía hacía falta para manejarlos y menos se interferían entre sí, por lo que podían juntarse más, y se conseguía ampliar la capacidad de las memorias y aumentar su velocidad, lo que hizo que las últimas memorias llegaran a tener 0'2 mm de diámetro, apenas visibles por el ojo.

En esta foto del proyecto Apolo de la NASA hay unas operarias "tejiendo" las ferritas, usando un microscopio para ello:


Una explicación mas detallada la podeis ver aquí

sábado, 25 de agosto de 2012

Cerrado por vacaciones

Tengo poco tiempo, demasiadas cosas siempre en el taller, me cuesta ir a correos a llevar los paquetes, el tiempo prefiero emplearlo en seguir reparando, y al final siempre me retraso en todo, y encima dejo mis cosas sin mirar.

Compré un IBM portable, que me costó un día poder probar solo por no tener sitio en la mesa, tengo el taller a tope de cosas, nunca tengo hueco en la mesa, no me caben mas cosas, acabo amontonando cosas una sobre otra, y mis cosas no las puedo ni tocar.

Tengo varios proyectos en espera desde hace mucho tiempo, tengo que restaurar mi TV con Pong incluido, tengo que mirar el IBM portable, tengo un portátil Amstrad 386sx que funciona, pero tengo que mirar la batería, tengo un Compac al que solo le falta el cable del alimentador, pero es de 5 hilos y tengo que mirar como va, tengo que revisar todo lo que tengo, pues hay cosas de las que ni me acuerdo que las tengo.

Tengo que poner en marcha todavía el Jupiter de hace un año, que me falta montar la salida de AV para poder probarlo, montar el clon del Spectrum y el nuevo clon del Jupiter.Tengo en mente montar una placa para convertir las Game Gear, de las que tengo varias placas que funcionan pero fallan las pantallas, en una consola de sobremesa, conectada a la tele, y con entrada de cartuchos de Game Gear o Master. 

Tengo que comprar una placa FPGA y montar una máquina con ella, aunque no se todavía cual, antes de que olvide del todo el VHDL.Y encima tengo que aprender de una puñetera vez inglés en condiciones, quiero hacer un master o comenzar otra ingeniería, tengo que ponerme a estudiar cosas que necesito para el trabajo.

Por eso he decidido cerrar de momento el taller de reparaciones, acabar con lo que tengo, y solo abrirlo para las quedadas y eventos, para poder dedicarme a mis máquinas y proyectos. Por tanto, si tienes alguna máquina que quieres que mire, tendrá que esperar.

jueves, 23 de agosto de 2012

Historia de la informática: Casi todos los de primera generación




Entrada actualizada varias veces, las últimas el 05/09/12 y el 07/09/12

Esta es una lista de casi todos los ordenadores de primera generación que he podido localizar. Marco el primero de cada país con un color de fondo, y en el comentario los primeros en algo.

Fecha País Maquina Comentarios
1938 Alemania Zuse Z1 No Turing completa, calculadora programable, nunca funcionó del todo bien
1940 Alemania Zuse Z2 No Turing completa, calculadora programable, no pasó de prototipo.
USA CNC La Complex Number Calculator fue la primera calculadora no programable con relés de George Stibitz, que podía operar con números complejos, en su demostración fue la primera máquina que se operó por teletipo desde otra ciudad.
1941 Alemania Zuse Z3 No Turing completa, calculadora programable, primera máquina plenamente operativa
1942 USA Atanasoff–Berry Computer No Turing completa, solo para resolver ecuaciones. Nunca funcionó del todo bien.
1943 GB Colossus computer De propósito especial solo para criptoanálisis, se usaban para descifrar las comunicaciones alemanas de la máquina Enigma.
USA Relay Interpolator Segunda calculadora no programable con relés de George Stibitz, para uso militar, usando 440 relés.
1944 USA Harvard Mark-1, también llamada IBM ASCC Primera de las cuatro diseñadas por Howard H. Aiken. No Turing completa, con fuerte inversión de la IBM, fue una calculadora electro-mecánica con posibilidades de programación, se usó para compilar tablas de datos. Primer ordenador en USA.
USA Ballistic Computer Tercera calculadora con relés de George Stibitz, para uso militar, con algunas posibilidades de programación.
1945 USA Error Detector Mark 22 Cuarta calculadora con relés de George Stibitz, para uso militar, con algunas posibilidades de programación.
1945 Alemania Zuse Z4 No Turing completa, solo se fabrico una unidad, pero fue la primera en ser vendida a una empresa
1946 USA ENIAC Electronic Numerical Integrator And Computer. No Turing completa, fue el primer ordenador a lámparas y por tanto 100% electrónico. Trabajaba en base decimal.
USA Model V Quinta, última y mas grande calculadora con relés de George Stibitz (pesaba 10 toneladas), podía usar números reales y disponía de algunas posibilidades de programación. Se fabricaron dos unidades para uso militar.
1944 USA Harvard Mark-2 Segundo diseño de Howard H. Aiken.No Turing completa, bajo encargo de la marina, fue una calculadora con relés con posibilidades de programación, se usó para compilar tablas de datos.
1948 USA IBM SSEC Selective Sequence Electronic Calculator. No Turing completa. Calculadora electromecánica. Primero en mezclar programa con datos en la entrada.
USA IBM 604 No Turing completa. Calculadora electromecánica.
GB SSEM Manchester Small-Scale Experimental Machine. Primera con programa en memoria
1949 USA IBM CPC Card-Programmed Electronic Calculator. No Turing completa. Calculadora electromecánica.
GB Manchester Mark 1 Generó la Ferranti Mark I
Australia CSIRAC Council for Scientific and Industrial Research Automatic Computer. Prototipo operativo, con programa en memoria. Primer ordenador en generar música.
GB EDSAC Electronic Delay Storage Automatic Calculator. Se desarrolló en ella el primer videojuego de la historia, el OXO, un tres en raya.
USA BINAC Binary Automatic Computer, con doble procesador
1950 USA ERA 1101, también conocida como la UNIVAC 1101 Trece en binario es 1101
USA SEAC Standards Eastern Automatic Computer
USA SWAC Standards Western Automatic Computer
USA MADDIDA Magnetic Drum Digital Differential Analyzer, de la Northrop Aircraft Corporation
USA Harvard Mark III Tercer diseño de Howard H. Aiken. Usaba 7 tambores para la memoria y 2 para la CPU, con memoria y programas por separado.
Suecia BARK Binär Automatisk Relä Kalkylator (Calculadora Binaria Automática con Relés), una calculadora programable con 5.000 relés, fue la entrada para construir en 1954 el BESK.
GB Pilot ACE Prototipo del ACE, Automatic Computing Engine, fue operativo varios años por no disponer de mas ordenadores.
Alemania Zuse Z5 Mejora de la Z4 mas rápido, primera en ser fabricada bajo pedido. No hubo ninguna entre la Z5 y la Z11. Ultimo modelo electromecánico, la Z11 usaba ya solo relés
1951 USA EDVAC Computadora binaria, similar al ENIAC
USA Whirlwind Se comenzó a diseñar en 1943 como un ordenador analógico, acabó siendo digital. Primero en usar una pantalla como periférico de salida.
GB Harwell Dekatron El "Wolverhampton Instrument for Teaching Computing from Harwell", por sus siglas WITCH, en castellano "bruja", ha sido restaurado y puesto en marcha recientemente.
GB Ferranti Mark I En la historia aparece como el primer ordenador construido en serie en ser vendido.
USA UNIVAC I Segundo producto en serie en ser vendido, por un par de meses
USA ORDVAC ORdnance Discrete Variable Automatic Computer, de la universidad de Illinois, derivó en el ILLIAC, era una máquina pequeña basada en IAS, aunque fue acabada antes que la propia IAS.
GB LEO I Primera máquina que se convirtió en la base de un centro de cálculo.
Rusia MESM Primer ordenador soviético
Francia Bull Gamma2 Prototipo francés, calculadora de tarjetas perforadas
1952 USA ERMA Primer ordenador bancario, el Electronic Recording Machine, Accounting  fue un desarrollo de 3 años de la Stanford Research Institute para el Bank of America, con ayuda de General Electric
USA Remington Rand 409 Calculadora programable por tarjetas perforadas
USA Harvard Mark IV Ultimo modelo de Howard H. Aiken. Mezclaba tambores con ferritas para la memoria.
USA IAS machine Construido en Princeton por el Instituto para el Estudio Avanzado. El artículo que lo describe fue de John von Neuman. Fue la base de muchas máquinas posteriores, las del tipo IAS.
USA ILLIAC I Primer ordenador educativo, Universidad de Illinois, un IAS
USA MANIAC I Tipo IAS
USA IBM 701 Primer comercial de IBM, con 19 unidades vendidas
Rusia BESM-1, BESM-2 Primeros Mainframes rusos (los tenia erróneamente como los primeros ordenadores rusos)
Francia Bull Gamma3 Con bastante éxito, vendió mil unidades. Comenzó como calculadora programable para unidades de tarjetas, y evoluciono hacia un ordenador de uso general.
Japón ETL Mark I Primeras máquina japonesa con relés
1953 USA JOHNNIAC Tipo IAS
USA IBM 702
USA UNIVAC 1103
USA RAYDAC
Rusia Strela computer Primer mainframe de producción en Rusia
1954 USA IBM 650 Primero en ser vendido masivamente, el primer año se fabricaron 450 unidades.
USA IBM 704
USA IBM 705
Suecia BESK Primer ordenador electrónico Sueco, el equipo que lo monto creo luego la Facit.
Japón FACOM 100 Ordenador con relés, desarrollado por Fujitsu
Alemania Zuse Z11 Primer Zuse en ser producido en serie, totalmente con relés.
Francia SEA CUBA Con bastante éxito, vendió mil unidades. Comenzó como calculadora programable para unidades de tarjetas, y evoluciono hacia un ordenador de uso general.
GB BTM HEC 1200 La empresa British Tabulating Machine lanza la serie HEC (Hollerith Electronic Computer) 1200, de la que fabrica 5 unidades. Era una calculadora asociada a una maquina de tarjetas, basaba en las BTM 555.
USA IBM NORC Naval Ordnance Investigación Calculator, (Calculador para Investigación en Artillería Naval), fue el primer super-ordenador, calculó PI con 3089 decimales en 13 minutos.
USA UNIVAC 1102
USA DYSEAC Mejora del anterior SEAC
1955 USA CALDIC California Digital Computer, construido en la Universidad de California en Berkeley, pensada para que fuera económica y fácil de mantener.
Alemania Zuse Z22 No hubo ninguna entre la Z11 y la Z22 (salvo una Z11 modificada fabricada en 1959 y llamada Z12). Esta fue la primera Zuse con lámparas, la siguiente Z23 de 1961 ya funcionaba con transistores.
GB DEUCE La Digital Electronic Universal Computing Engine, fue el ordenador comercial que surgió del Pilot ACE, a manos de la English Electric.
Francia SEA CAB-1011 Ordenador criptográfico francés para el servicio secreto
Francia SEA CAB-2000 La Société d'Electronique Appliquée à l'Automatisme vendió tres unidades de esta maquina, en dos variantes
Japón ETL Mark II Evolución de la anterior, también con relés
1956 USA IBM 305 RAMAC
USA Bendix G-15
USA LGP-30
USA UNIVAC 1103A
USA SILLIAC
USA RCA BIZMAC
Francia Bull Gamma 3 Primer comercial francés, calculadora de tarjetas perforadas
GB Ferranti Pegasus
GB BTM HEC 1201 Primer modelo comercial de la serie HEC 1200, de la que vende 70 unidades, calculadora asociada a una maquina de tarjetas.
Suecia SMIL Un IAS desarrollado por la Unversidad de Lund
Japón FUJIC Primer ordenador con lámparas operativo japonés
Japón ETL Mark III Evolución de la anterior para usar lámparas, con programa almacenado en memoria
Japón FACOM 128A Ordenador científico pero con relés
India TIFR Pilot Machine Tata Institute of Fundamental Research, fue el prototipo del TIFRAC (Tata Institute of Fundamental Research Automatic Calculator) de 1960
1957 Alemania Zuse Z22
Dinamarca DASK
Italia Olivetti ELEA-9001 Prototipo, mezclaba lámparas en la CPU, que era cableada directamente, con transistores en los periféricos.
GB Stantec Zebra
USA UNIVAC 1104
GB Ferranti Mercury
USA IBM 610
Francia SEA CAB-3018 Primera para uso comercial de SEA
Suecia FACIT EDB 2
USA MANIAC II
USA MISTIC Michigan State Integral Computer, copia del ILLIAC
Japón PD 1516 Parametron Computer Prototipo, mezcla lámparas y transistores
Japón MUSASINO-1 Variante del parametron a lámparas
1958 USA IBM 709
USA UNIVAC II
USA UNIVAC 1105
USA AN/FSQ-7 La máquina mas grande jamás fabricada, con 55.000 lámparas, para el proyecto SAGE de la fuerza aérea.
Japón NEAC 1101 Primer ordenador de NEC, variante del Parametron .
GB Ferranti Perseus
GB BTM HEC 1202 Mejora del modelo anterior. Calculadora asociada a una maquina de tarjetas.
Francia SEA CAB-3000 El modelo 3030 para uso comercial y el 3040 para uso científico
1959 Rusia Ural series Modelos Ural-1 a Ural-4, fabricados entre 1959 y 1964
Alemania Zuse Z12 Se produce un único modelo bajo pedido especial de la antigua Z11 ya en desuso, llamándola Z12
Italia Olivetti ELEA-9002 Segundo prototipo con lámparas en la CPU, pero ya usando circuitos impresos. El siguiente modelo de 1959,  fue uno de los primeros comerciales de segunda generación.
1960 India TIFRAC
Yugoslavia CER-10 Actualmente Serbia
Holanda Philips Pascal Philips Automatic Sequence Calculator, no tengo información de ella. Era un lenguaje de programación, que no tiene nada que ver con el que conocemos.
1961 USA Sumlock ANITA calculator Primera calculadora electrónica de sobremesa
1962 Polonia UMC-1 Le siguió la UMC-10 ya con transistores

miércoles, 22 de agosto de 2012

Log de reparaciones: Para Imsai8080

Este verano he tenido un pequeño problema de acumulación de cosas, y por desgracia como las pongo una sobre otras, al final me era mas sencillo empezar por la última llegada que mover cajas, por lo que esta ha terminado antes que otras. No tengo fotos de todo.



Recibido 03/08/2012 Finalizado 16508/2012 Precio 30 euros

Aparato................: Consola Pong Soundic N/Serie
Avería reportada: No funcionan bien los mandos
Avería detectada: Problema de los potenciómetros, uno va regular y el otro muy mal.
Reparación: Se desmonta por completo el potenciómetro que no funciona y se limpia internamente. Se limpia con CRC el que funciona regular aprobechando que hay sitio para que entre bien, quedando los dos operativos

Aparato................: Atari 2600Jr UK N/Serie
Solicitado: MOD salida AV
Efectuado: Se realiza el MOD con una placa auxiliar, se cablea en la TIA soldando por la cara superior, ya que no cabe en otro lugar la placa auxiliar, y se añade un conector Jack hembra a la carcasa, cableando la placa nueva al conector. Luego se confecciona un cable de Jack a tres conectores RCA. Así dispone de las dos salidas, la de RF y la nueva de AV.

Aparato................: Game Gear mas un alimentador N/Serie
Avería reportada: No funciona bien la cruceta, le cuesta coger los juegos.
Avería detectada: Problema la cruceta, esta rota. Los condensadores tienen perdidas de liquido, aunque funciona bien. He probado 5 juegos y los ha tomado a la primera, por lo que debe ser problema de limpieza de los cartuchos.
Reparación: Se cambia la cruceta por otra, y se cambian todos los condensadores de la placa de video y la de sonido.

Se aprecia que le falta la pestaña
inferior a la cruceta, cosa habitual

Aparato................: Spectrum 48Kb N/Serie
Avería reportada: No funciona el teclado.
Avería detectada: Mal las dos tiras, con intentos de reparación anteriores con aluminio y pintura de plata, la ancha esta rota por completo, y la estrecha hasta la mitad. El resto de la membrana parece en buen estado, y se aprecia que recortando hay sitio para poder usar los conectores.
Reparación: Se recortan las dos lengüetas aprovechando al máximo su parte buena, y se alargan los conectores del teclado original.

Así esta la tira ancha, rota y arreglada
con aluminio todas las pistas

La estrecha lo mismo, rota parcialmente
y con aluminio para su arreglo.

Al sacarla se ve que internamente
parece en buen estado.

Así se ve que la estrecha también
se intento con pintura de plata

En estos casos lo mejor es recorte,
sin miedo cortamos por la zona
aprovechaba, debe quedar uno o dos
centímetros por lo menos.

Luego quito el refuerzo de plástico
que lleva y lo pego en la parte
sana de la membrana, es para que
luego entre en el conector bien.

La ancha lo mismo, esta va un poco
mas corta

Aquí quitando el protector de
plástico de la cinta.

La cinta aprovechable, con los
refuerzos pegados, acordaros
de que van en la parte posterior,
no en las pistas. La pruebo y veo
que funciona, podemos seguir.

Ahora quito los dos conectores de
las cintas de la placa, con un
desoldador y un poco de cuidado.

Y los alargo con unos cables, en este
caso sacados de un conector de
disqueteras.


martes, 21 de agosto de 2012

Historia de la Informática: Programma 101



Tras la entrada de las calculadoras de sobremesa, hablaré de la Olivetti Programma 101, llamada en Italia "la perottina" por ser su creado Pier Giorgio Perotto, máquina que podemos considerar primer ordenador de sobremesa de la historia, presentada en la feria de New York de 1964, pero comercializada en Octubre de 1965.
Programma 101, la máquina. Fuente: wikimedia

Costaba unos 3.200$, y se vendieron cerca de 44.000 unidades, lo que es mucho en general pero poco para el mercado americano, donde fue vendida mayoritariamente. Presentaba un diseño futurista para su época, y sentó las bases de las posteriores, como la primera de Hewlett-Packard, la 9100A presentada tres años después, que fue condenada a pagar a Olivetti casi un millón de dólares por usar ideas de sus patentes.

Capacidad

La Programma 101 trabajaba con números de 22 dígitos en coma fija, y era capaz de procesar 7 operaciones: suma, resta, multiplicación, división, raíz cuadrada, valor absoluto y parte fraccionaria.

Hoja de programación. Fuente: oldcalculatormuseum.com
La programación se realizaba en un lenguaje ensamblador muy simple, al disponer de pocas instrucciones, principalmente para el intercambio entre los registros de la memoria, los registros de cálculo, y las operaciones. Para su programación podía limpiar, transferir e intercambiar entradas, detener el programa, y disponía de 16 instrucciones absolutas de salto y 16 instrucciones condicionales de salto, los saltos se podían producir a 32 etiquetas como destino, además de a las cuatro teclas de inicio llamadas V, W, Y, Z.

Disponía de 10 registros de memoria, tres solo para operaciones llamados A, M, y R, dos para almacenamiento de datos llamados B y C, tres para almacenamiento y/o programa llamados D, E y F, y dos solo para programa llamados p1 y p2. Además los registros B, C, D, E y F se podían usar como medios registros para trabajar con números de 11 dígitos en coma fija. Cuando se usaban en programación, cada registro podía guardar 24 instrucciones, por lo que su capacidad máxima era de 5x24=120 instrucciones de programa y dos o cuatro datos, y la mínima de 48 instrucciones de programa y cinco o diez datos.

Tarjeta magnética. Fuente: Wikimedia
La salida se realizaba mediante una impresora de rollo de papel, mientras que la entrada se realizaba por el teclado, que disponía de una tecla para cada operación. Los programas se podían leer y grabar usando unas tarjetas de plástico de unos 10x20cm, que disponían de una capa magnética en un lado y una superficie para escribir en el otro, por lo que llevaban siempre el programa escrito y grabado. Cada tarjeta puede ser grabada en dos franjas, según el sentido en que se introdujeran, por lo que podían guardarse hasta dos programas a la vez. Cada programa almacenado consistía en el contenido de los diez registros, por lo que podía almacenar programas y datos a la vez. Los programas se podían encadenar, ya que los registros A, M y R no se leían, se leía una banda, se ejecutaba, se leía otra banda, se ejecutaba, y así sucesivamente. Por ejemplo el programa para el cálculo de logaritmos ocupaba ambas bandas de una tarjeta magnética.

Memoria de la máquina. Fuente: uva.nl
Utilizaba transistores y diodos, montados en tarjetas de circuito impreso de resina fenólica. Para guardar los registros usaba una memoria de retardo acústica de alambre, con un retardo de 2,2 milisegundos, continuamente se enviaban los bits por el alambre, y con un contador y un reloj se conseguía recuperar el dato que se necesitaba en cada momento. Esta memoria era muy sencilla y bastante fiable, aunque funcionaba mejor una vez se calentaba la máquina, ya que el alambre podía sufrir pequeñas dilataciones.




Diseño

Olivetti era una empresa italiana un tanto atípica, el Sr. Olivetti usaba las ideas de Ford en su fábrica, que incluía un hospital, colegio para los hijos de los trabajadores, comedores colectivos, etc. Esto en su momento era poco habitual. Fabricaba principalmente máquinas de escribir, y era famosa por su atención tanto a los aspectos de ingeniería como a los de diseño.

El equipo de ingeniería trabajó varios años para poder ofrecer un producto muy simple, algo que cualquiera pudiera usar, como la tarjeta magnética, algo revolucionario en esa época. Fue diseñada por un equipo dirigido por el ingeniero de Olivetti Pier Giorgio Perotto, entre 1962 y 1964. Al final de este periodo la división de informática estaba pasado por un mal momento, pendiente de su venta a la General Electric, y se salvó gracias q que se cambió la clasificación interna de "computadora" a "calculadora", dejando la oficina de Perotto y su laboratorio como una isla en el edificio que pasó a ser propiedad de GE.
Perotto (con perilla) y su equipo. Fuente: royal.pingdom.com

Roberto Olivetti llamó para el diseño externo a Mario Bellini, un joven arquitecto italiano en ese momento, insistiendo en que debía realizar un diseño para algo personal, algo que se usara en un escritorio. Y lo consiguió, obtuvo el premio de diseño industrial Compasso d'Oro, y la máquina está expuesta en el museo de arte moderno como uno de los paradigmas del diseño de su época.

Uso

Se conoce el uso de estas máquinas por la NASA, para los cálculos previos para el alunizaje de la misión Apollo 11, no tengo muy claro si para los cálculos de combustible o para los de construcción de algunos elementos. También es mencionada como usado por la fuerza aérea norteamericana para calcular coordenadas de bombardeos dirigidos desde tierra en la Guerra de Vietnam.

lunes, 20 de agosto de 2012

Historia de la Informática: El primer personal



Hace poco vi un documental sobre lo que calificaron como primer ordenador personal, o primero de sobremesa de la historia. Investigando un poco mas sobre el tema, la calificación no era correcta del todo, por lo que aquí va una entrada sobre esas primeras máquinas.

Primero decir que no lo considero a partir de cuando se empezaron a diseñar, ya que este dato siempre es muy aproximado, todos dicen que sus ideas son muy anteriores a la producción, y no sirve solo haber pensado algo, hay que resolver muchos problemas, si te enganchas en alguno, tu máquina no funcionará nunca, aunque tu idea sea muy buena (y además a todos nos gusta exagerar un poco para ser los mas innovadores).

Si recordáis la primera generación, las primeras máquinas eran calculadoras programables, del tamaño de una habitación, esta historia trata de calculadoras de sobremesa (entonces las mesas eran grandes y fuertes, una máquina de 20 kilos cabía perfectamente encima), algunas programables y otras no.

Octubre de 1962: Sumlock Comptometer lanza al mercado las primeras calculadoras electrónicas de sobremesa no programables, primero la Anita C/VII (conocida como la Mark 7) para el mercado Alemán, pero solo vendió pocas unidades, y fue rápidamente seguida por la Anita C/VIII (conocida como la Mark 8) presentada en Inglaterra. Su nombre significa A New Inspiration To Arithmetic (una nueva inspiración en la aritmética).




Estas máquinas eran calculadoras electrónicas no programables de 12 dígitos con cuatro funciones, sumar, restar, multiplicar y dividir. Como unidad de memoria la VII usaba tubos Dekatron, pero sus múltiples problemas hicieron que se reemplazaran en la VIII por tubos Tiratrón, capaces de almacenar una pequeña cantidad de memoria en forma de filas y columnas. Estos tubos eran mas fiables, pero susceptibles a errores espúreos, por lo que si mantenías las máquina operando mucho tiempo se producían errores de cálculo. El resultado se presentaba en unos tubos Nixie, capaces de presentar los números del cero al nueve, pero no presentaban la coma.

Marzo de 1963. Primeras unidades vendidas de la Mathatronics Mathatron, calculadora electrónica programable a transistores.


Esta máquina podía realizar 5 operaciones ( sumar, restar, multiplicar, dividir, raíz cuadrada), usando paréntesis, operando con números de 8 cifras en coma flotante. Para operar internamente usaba notación polaca inversa, patente que fue adquirida posteriormente por HP y usada en sus calculadoras. Su capacidad de programación era muy limitada, podía "aprender" una secuencia de operaciones, y ejecutarlas con los números de entrada. Carecía de pantalla, usando una pequeña impresora que imprimía en una cinta de papel. Como memoria usaba una unidad de ferrita, con capacidad de 740 bits.

Mayo de 1964: La empresa Friden lanza la EC-130 electronic calculator, una calculadora electrónica con un diseño externo muy atractivo.


Esta máquina usaba una pantalla de tubo, presentando 4 líneas simultáneamente. Podía trabajar con hasta 13 cifras, trabajando en coma fija de 0, 2, 5, 9 ó 13 cifras tras la coma, y en la pantalla aparecían siempre las 13 cifras, rellenas de ceros por la izquierda. Disponía de las 4 operaciones básicas, y de la posibilidad de almacenar en una sola memoria, en el siguiente modelo se añadió la raíz cuadrada. El teclado electro-mecánico bloqueaba las teclas de función hasta que se hubiese ejecutado la operación, evitando falsas pulsaciones. Usaba una memoria de retardo de alambre.

Junio de 1964: Hayakawa Electric (posteriormente llamada Sharp) comienza a vender su Compet 10 (CS-10A) en Japón.


Usaba transistores de germanio, que en el siguiente modelo fueron reemplazados por los mas fiables de silicio, aunque solo disponía de 10 teclas para dígitos, podía operar con hasta 20, casi el doble que las máquinas de la competencia. En el frontal se aprecian los interruptores rotativos, mediante los que se podía añadir constantes a los cálculos. Usaba una pantalla de 20 tubos Nixie, mas pequeñas bombillas para el punto decimal.


Octubre de 1964: Canon pone a la venta la Canon 130, mas compacta que las anteriores máquinas.


Diciembre de 1964: Thomas Osborne en Wyle Laboratories lanza la WS-01 Scientific Calculator, con memoria de tambor magnético rotatoria, que da problemas con la temperatura, por lo que es seguida por la WS-02 con memoria de retardo magnetostrictiva.

Enero de 1965: Wang lanza la LOCI-2 (LOgarithmic Computing Instrument, instrumento de computación logarítmica), con posibilidades de programación. Viene precedida en Septiembre de 1964 de la LOCI-1, pero de esta no se conocen unidades venidas, por lo que es mas una máquina experimental.



Esta máquina usaba internamente logaritmos para los cálculos, por lo que era muy rápida, el Dr. Wang, uno de los grandes y poco reconocidos genios de la electrónica y la informática, diseñó un circuito de cálculo del logaritmo de un número muy rápido. Esta máquina se usaba como punto de entrada de muchos periféricos, ya que era muy versátil, pudiendo programarse mediante un lector externo de tarjetas perforadas, lo que lo hacía muy potente, pero poco "personal" o de sobremesa.


Abril de 1965: Olympia Werke AG presenta la RAE 4/15, calculadora electrónica.


Tenía capacidad para 15 dígitos, usaba memoria de núcleos magnéticos, y una pantalla de 15 tubos Nixie, pudiendo presentar los decimales en la misma, pero los negativos y los errores los presentaba con una luz en el tablero.

Abril de 1965: Data Acquisition Corp. presenta la DAC-512, calculadora electrónica programable


Se componía de dos unidades, el teclado y la pantalla por un lado, y la unidad de cálculo por separado. Usaba lógica de transistores, memoria de ferrita de 8K Podía usar un nivel de paréntesis, y las cuatro funciones matemáticas básicas, usando representación de punto flotante con nueve cifras significativas y dos de exponente entre -49 y 50. Sus posibilidades de programación incluían instrucciones condicionales, lo que permitía la toma de decisiones y los bucles. Aunque muy completa, no era realmente de sobremesa, la unidad de proceso era grande y pesada.

Abril de 1965: Monroe vende sus primeras unidades de la EPIC 200,calculadora en dos partes, la unidad de proceso es una caja que se sitúa en el suelo, y el teclado/pantalla ocupa muy poco en la mesa.





No es programable, e incluye una impresora para los resultados, ya que carece de pantalla, pero tiene un diseño atractivo.


Septiembre de 1965: Casio introduce la 001 su primera calculadora electrónica.



La máquina parece un diseño mas compacto de la Sharp, con los selectores rotativos para la introducción de constantes.

Octubre de 1965: Dero Research & Development presenta la Sage 1 en la feria BEMA en New York

Su principal mérito es ser muy compacta, ya que solo podía operar con coma fija, lo que simplificaba mucho la circuitería.

Octubre de 1965: Victor y Bell presentan su Victor 3900, calculadora que usaba los primeros chips.

Esta máquina es la primera en usar chips, pero no presenta mas novedades, las cuatro operaciones y una pantalla para presentar varias líneas.

Octubre de 1965: Olivetti pone en venta la Programma 101, calculadora electrónica programable. Esta máquina está considerada como el primer ordenador de sobremesa, ya que sus capacidades de programación eran ya bastante completas, y su tamaño si que la hacían de sobremesa.


Se vendieron miles de unidades, fue diseñada por Pier Giorgio Perotto, un gran ingeniero electrónico, que no pasó por desgracia a la historia. Su diseño externo fue realizado por un gran diseñador del momento, Mario Bellini, su circuitería estaba muy cuidada, por lo que era muy fiable, sus características de programación eran amplias, y se usaban pequeñas tarjetas magnéticas para guardar y leer los programas, lo que la hacía muy versátil y sencilla de usar.