El GomasExperimentoscon "El Gomas"

Pues con nuestro "Gomas", algunos nos dedicábamos a algo mas que jugar a los muchos juegos con que estaba dotado su mercado entonces. Nos dedicábamos a maltratarlo y él se vengaba. ¡Eso si que eran bloqueos y no los de Windows!. Con la diferencia de que no había disco duro y te tocaba cargar todo de nuevo. No es que fuera una maravilla de ordenador, pues no tenía ni puerto de Joystick ni de impresora. Tenía lo justo para cargar programas y enchufar una tele. Pero al ser barato, todos tus amigos tenían uno y se podían cambiar juegos y programas y si a algunos nos gustaba las "chapuzas", nos intercambiábamos ideas para hacernos nuestro propios interfaces Kempston etc. "..oyes, que en la revista Tal, hay un montaje la mar de guapo para poner una impresora...".

Estos montajes que aquí os pongo, ya han sido probados y puestos en funcionamiento por mi.

Se le han conectado bombillas de todo tipo ( incluso una lámpara de una insoladora casera, para hacer circuitos impresos ), motores... Hice una especie de digitalizador casero de gráficos muy sencillo con 8 LDR, que iba "leyendo" de 8 en 8 cuadrados. En fin, que se dejó de fabricar y yo seguí haciendo experimentos.

Antes de meternos en harina, vamos a hablar de algunos componentes:

Puertas lógicas

OR
Puertas OR: Tienen varias entradas y solo una salida.
Su funcionamiento es el siguiente: Las dos rayas de la izquierda, son las entradas y la única raya de la derecha, la salida.
Si una de las entradas es 1, la salida es siempre 1. si las dos entradas son 0, la salida es 0.
AND
Puertas AND: Tienen varias entradas y solo una salida.
Su funcionamiento: Las dos rayas de la izquierda, son las entradas y la única raya de la derecha, la salida.
Si una de las entradas es 1, pero la otra es 0, la salida es siempre 0. Y si las dos entradas son 0, la salida es 0.
La salida solo es 1, si las dos entradas son 1.
not
Puertas NOT:
Tienen una entrada y una salida. Fijaros en el circulito de la derecha,significa que la salida está negada, es decir; que si metemos +5 Voltios por ejemplo en su entrada, a la salida tenemos 0 Voltios. Y si metemos 0 Voltios en la entrada, en la salida tendremos +5 Voltios.

Luego hay combinaciones de puertas, como Nor. (Y no es publicidad encubierta de una determinada marca de alimentación):
 
NOR
Esta es una OR como la de mas arriba, solo que está negada la salida. Es exactamente igual, que si le ponemos una puerta NOT a la salida de OR. Esto no quiere decir otra cosa, que la única salida positiva, es cuando ambas entradas son 0.

Aunque parezca una tontería, con miles y miles de estas puertas, está hecho vuestro ordenador.

Y aquí tenéis una tabla con las principales puertas lógicas.Seguidamente hablaremos de las salidas que mas os interesan del viejo Spectrum alias "Gomas" (¡O "El Cables"!. Que me decían en casa que un dia me iba a electrecutar! ) 8 ).

 
Entrada 1 Entrada 2 Salida
1
1
0
0
1
0
1
0
1
1
1
0
1
1
0
0
1
0
1
0
1
0
0
0
1
0
0
1
1
1
0
0
1
0
1
0
0
0
0
1
1
1
0
0
1
0
1
0
0
1
1
1
Ahora que ya sabemos como va esto de las puertas, vamos a echar un vistazo al gráfico de la izquierda.
 
Vemos una serie de palabras al principio: IORQ, A"n", RD, WR y todas ellas tienen una rayita encima, que significa que están negadas. Esto es, que las activa el Z80 con un 0. Después tenemos D0...Dn. Eso es parte del "Bus de datos, que van desde D0, hasta D7,que son los 8 bits con los que puede trabajar el Spectrum ( aunque internamente puede hacer operaciones de 16 bits).

A"n" representa al bus de direcciones, que va desde A0 hasta A15. O lo que es lo mismo 16 bits: (1111111111111111-FFFF-65535).

Para entendernos mejor usaremos el A5, que era el que mas se usaba, tal vez por estar "libre". Es decir, que no se usaba para otros menesteres, como control de teclado o del sonido. Este era precisamente el motivo por el que los personajes se volvian "locos" cuando no teníamos conectado un interface Kempston. Al no tener un control, tomaba valores aleatorios y no nos quedaba mas que hacer "reset" (era muy fácil de conectar un botón de reset ) o desenchufar. Su codigo era 223 (11011111) en binario (empezara contar desde la derecha y por A0). Y nótese que son todos unos, menos el bit activo el A5, que está a 0, que como se comentó esta negado.

Escribir en la salida

.
IORQ, WR y A5 a 1, mediante la instrucción OUT. A la vez que "cargamos" con el bus de datos en el periférico de salida, que suele ser un "buffer", una especie de memoria temporal, ya que la instrucción dura unas décimas de segundo ( la velocidad del reloj de cuarzo del procesador ). Así que si queremos tener el primer bit encendido, escribiríamos:

10 Out 223,1

Si el último bit (suponiendo que nuestro interface es de sólo 4 bits):

10 Out 223,8

Los cuatro bits:

10 Out 223,15
 

Leer la entrada

Si con el comando Out (salida) escribíamos en nuestro puerto, con el comando IN (entrada) leemos la pulsación de un botón del joystick, el recorrido de un final de carrera (el dispositivo que se le dice a una máquina que ha llegado al final del recorrido) o la lectura de un fotodiodo o una LDR, ambos dispositivos que detectan la luz. También se puede detectar el calor mediante otro dispositivo llamado NTC. Haré una breve relación de ellos al final de todo esto.
Así que tenemos:

10 Print IN 223
10 LET a=IN 223

En la primera, imprime directamente la lectura del puerto de entrada y en la segunda, lo guarda en la variable "a".

Un paso adelante

Unos programas para ver mejor todo esto.

Respecto a los circuitos, debo decir que han variado por una razón:

Primero porque a veces el circuito de entrada y el de salida, (los que están en contacto con los sensores y con los dispositivos de salida, diodos led o bombillitas, transistores para activar relés o transistoresde mas potencia, etc) a veces son activados por un 1 o por 0 y en vez de una puerta OR, se activa con una NOR. Entonces lo que se hace es usar un circuito de 4 NOR para no complicar el montaje y unas de las puertas se le juntan las entradas para convertirla en un inversor.

La salida de la puerta NOR sin invertir, está conectada con un buffer como dije antes, y en cambio la NOR invertida, la cual se convierte en OR, Está conectada a un Triestado. Este es un dispositivo, que cuando RD IORQ y A"n" están a uno, es activo y "lee" el dato que tiene esperando ( pulsaciónde tecla P1-P"n", etc ).

El otro cambio son los diodos led que he puesto en la salida, se les puede poner directamente, debido a su bajísimo consumo y su completa compatibilidad con los componentes TTL, los circuitos integrados de nuestros experimentos.

Y aquí están los programas:

Programa contador binario

Contador Las lucecitas se van encendiendo a medida que van saliendo del contador, repitiendose el proceso mediante la sentencia GO TO
 

10 For f=0 To 15
20 Out 223,f
30 Next f
40 Go to 10

Programa coche fantástico

OK Maikelll... En este programa, multiplicamos por dos una variable, encendiendo así solamente uno de los leds cada vez.

Acto seguido, se hacía una división entre dos de este número, repitiendose el ciclo.
 
 

10 a=1
20 Out 223,a
30 a=a*2
40 If a > 8 Then Go To 60
50 Go To 20
60 a=8
70 Out 223,a
80 a=a/2
90 If a < 1 Then Go To 10

¿Siguientes pasos?

Lo siguiente sería dotar a nuestras entradas de los dispositivos adecuados para detectar obstáculos, por ejemplo, y a las salidas de otros dispositivos para hacer funcionar un motor, por ejemplo.

Una posible solución de comunicación con el exterior:
 
Aquí se podría conectar un motor y una batería o una fuente de alimentación, y mover un vehículo.

Usando un transistor MC140 para excitar el relé, manejé en unas Navidades las luces de un árbol. Lo bueno de este sistema frente al tradicional, es que puedes variar la cadencia de las bombillas a voluntad con programas muy sencillos.

 

Algunos componentes

7400 - 4 puertas NAND
7402 - 4 puertas NOR
7432 - 4 puertas OR
7408 - 4 puertas AND
74125 - 4 puertas triestado
74245 - Buffer
Resistencia
Diodo luminiscente o LED
Resistencia detectora de luz
Resistencia de temperatura o NTC
( negativa, si es positiva, PTC )

Es posible que se me haya deslizado algún error sin querer y estaría agradecido cualquier sugerencia o corrección.

Mi correo: turriano@terra.es

Volver