Manual de Basic Spectrum 48k.

Capítulo 23

IN y OUT

Resumen

  • OUT
  • IN

El procesador puede leer de, y (al menos con RAM) escribir en, la memoria utilizando PEEK y POKE. Al procesador, en sí mismo, no le importa realmente si la memoria es ROM, RAM o incluso nada en absoluto; sabe que hay 65536 direcciones de memoria y puede leer un byte de cada una (aunque sea algo sin sentido) y escribir un byte en cada una (aunque se pierda). De una forma completamente análoga, hay 65536 de los que se llaman "ports" de E/S (que significa conectores de entrada/salida). Estos se utilizan por el procesador para comunicar con elementos tales como el teclado o la impresora y pueden controlarse por el BASIC utilizando la función IN y la sentencia OUT.

IN es una función como PEEK.

IN dirección

Tiene un argumento, la dirección de "port", y su resultado es la lectura de un byte desde ese "port". OUT es una sentencia como POKE.

OUT dirección

escribe el valor dado al "port" con la dirección dada. La forma en que se interpreta la dirección depende, en gran medida, del resto del ordenador; con bastante frecuencia, muchas direcciones diferentes significan lo mismo. En el Spectrum es mejor imaginar que la dirección se escribe en binario, porque los bits individuales tienden a operar con independencia. Hay 16 bits, que llamaremos (utilizando A para indicar dirección).

A15, A14, A13, A12, ..., A2, A1, A0

En este caso, A0 es el bit de peso 1, A1 es el bit de peso 2, A2 es el bit de peso 4 y así sucesivamente, en correspondencia con el código binario. Los bits A0, A1, A2, A3 y A4 son los más importantes. Suelen ser "1", pero si alguno de ellos es 0, ello indica al ordenador que ha de realizar algo concreto. El ordenador no puede atender a más de una cosa a la vez, por lo que no más de uno de estos cinco bits debe ser 0. Los bits A5, A6 y A7 son ignorados, de modo que si usted es un experto en electrónica los puede emplear por su propia cuenta. Las mejores direcciones a utilizar son las que son un múltiplo de 32 menos 1, de modo que A0, ..., A4 son todos "1". Los bits A8, A9, etc., son utilizados, en ocasiones, para proporcionar información suplementaria.

El byte leído, o escrito, tiene 8 bits y se les suele denominar (utilizando D por datos como D7, D6, ..., D1, D0, se da una lista de las direcciones de "ports" utilizados.

Hay un conjunto de direcciones de entrada que leen el teclado y también la conexión de auricular EAR.

El teclado está dividido en 8 semifilas de 5 teclas cada una.

IN 65278 lee la semifila CAPS SHIFT a V
IN 65022 lee la semifila A a G
IN 64510 lee la semifila Q a T
IN 63486 lee la semifila 1 a 5
IN 61438 lee la semifila 0 a 6
IN 57342 lee la semifila P a 7
IN 49150 lee la semifila ENTER a H
IN 32766 lee la semifila SPACE a B

(Estas direcciones son 254 + 256 * (255 - 2 n) cuando n va de 0 a 7).

En el byte leído, los bits D0 a D4 significan las cinco teclas en la semifila dada (D0 para la tecla exterior, D4 para la más cercana a la parte central. El bit es 0 si la tecla está pulsada y es 1 si no lo está. D6 es el valor en la conexión EAR.

La dirección de "port" 254 utilizada como salida excita el altavoz (D4) y la conexión microfónica MIC (D3) y también establece el color del contorno (D2, D1 y DO).

La dirección de "port" 251 maneja la impresora, tanto en lectura como en escritura: la lectura averigua si la impresora está preparada para imprimir más datos y la escritura envía puntos a imprimir.

Las direcciones de "port" 254, 247 y 239 se emplean para los dispositivos suplementarios mencionados en el capítulo 22.

Ejecute el programa siguiente:

10 FOR n = 0 TO 7: REM semifila número
20 LET a = 254 + 256 * (255 - 2 n)
30 PRINT AT 0, 0; IN a: GO TO 30

y juegue pulsando teclas. Cuando se haya aburrido con cada semifila, pulse BREAK y luego, teclee:

NEXT n

Manual de Basic Spectrum 48k.