Aquellos Maravillosos Bits
|
|
Artículo realizado por
José Conde "Rewin".
La memoria del Spectrum 16K
El spectrum (único y último :´-( snif ) manejaba la memoria en lo que de aquellas se llamaban octetos (bytes despues de la explosión del esnobismo). Las direcciones de memoria iban de la 0 a la FFFFh.
En el spectrum 16 K, unicamente existían las posiciones de memoria de la 0 a la 7FFFh. Esta se dividía así:
ROM |
RAM |
0-3FFFh (16 KB) |
4000h-7FFFh (16 KB) |
Para inspeccionar el contenido de una casilla de memoria, empleamos la instrucción Basic PEEK . Este programa, lista los primeros 21 octetos de la ROM (y sus direcciones):
10 PRINT "Direcciones"; TAB 8; "Octeto"
20 FOR a=0 TO 20
30 PRINT a; TAB 8; PEEK a
40 NEXT a
Para variar el contenido de una dirección de memoria (sólo si es RAM), empleamos la sentencia POKE (introducir), cuya forma es:
POKE dirección, nuevo contenido
Por ejemplo, si se escribe:
POKE 31000,57
El octeto de la dirección 31000 se le da el nuevo valor 57. Si escribimos:
PRINT PEEK 31000
comprobamos que hemos modificado la dirección.
Los nuevos valores introducidos en la memoria han de estar comprendidos entre el -255 y el +255.
Ahora hecharemos un vistazo más extenso a la memoria RAM:
La memoria está dividida en zonas diferentes para almacenar distintos tipos de información. Esta es la distribución de la memoria:
Zona |
Direcciones |
Fichero de presentación visual |
16384-22528 |
Atributos |
22529-23296 |
Memoria intermedia de la impresora |
23297-23552 |
Variables del sistema |
23553-23724 |
Mapas de Microdrive |
23735-CHANS |
Información para canales + 80h |
CHANS-PROG |
Programa en Basic |
PROG-VARS |
Variables + 80h |
VARS-E_LINE |
Comando o línea de programa que se está corrigiendo + NL + 80h |
E_LINE-WORKSP |
Entrada de datos + NL + Espacio tareas eventuales |
WORKSP-STKBOT |
Pila de la calculadora |
STKBOT-STKEND |
Reserva |
STKEND-sp |
Pila de Máquina + Pila de GOSUB + ? |
sp-RAM TOP |
3Eh |
RAM TOP-UDG |
Gráficos definidos por el ususario |
UDG-P_RAMT |
Estas zonas son lo suficientemente grandes para contener la información que contienen realmente, por lo que si se añade algo más en algún punto determinado, se hace sitio empujando hacia arriba todo lo que queda por encima de este punto. Y al contrario, si se borra información, entonces todo se empuja hacia abajo.
El archivo para la representación en pantalla almacena una imagen de televisión. Cada carácter de la pantalla posee un cuadrado de 8x8 puntos y cada punto puede tomar el valor 0 (papel) o 1 (tinta):así, utilizando la notación binaria se puede almacenar la configuración como 8 octetos, uno para cada fila. Sin embargo, estos 8 octetos no se almacenan juntos, sino que lo hacen los 32 caracteres de una línea sencilla, como una traza de 32 octetos, ya que esto es lo que necesita el haza electrónico de la televisión a medida que barre la pantalla de izquierda a derecha. Como quiera que la imagen completa tiene 24 líneas de 8 barridos cada una, podría esperarse que hubiera que hubiera que almacenarse 172 barridos, en total, correlativos, pero no es verdad. Primero vienen las trazas superiores de las líneas 0 a 7. A continuación se repite el mismo proceso para las líneas 8 a 15, y tras ello se hace lo mismo para las líneas 16 a 23.
Los atributos son los colores, etc., para cada posición de carácter, mediante el uso de ATTR . Todo ello se almacena línea tras línea en el orden que se espera.
La memoria temporal de la impresora almacena los caracteres destinados a impresión.
Las variables del sistema contienen varios elemntos de información que indican el ordenador en qué estado se halla. Nos conformaremos con citar que existen algunas (llamdas CHANS, PROG, VARS, E_LINE, , etc.) que contienen las direcciones de los límites entre las distintas zonas de la memoria. No son variables de Basic, por lo que sus nombres noi serán identificados por el ordenador.
Los mapas de la unidad de Microdrive sólo existen cuando se utiliza este dispositivo, por lo que, normalmente, sus posiciones están vacías.
La zona para información de los canales contiene información, pertinenete sobre los dispositivos de entrada y salida, es decir, el teclado(con la mitad inferior de la pantalla), la mitad superior de la pantalla y la impresora.
Cada línea del programa Basic tiene la forma:
Campo |
Longitud |
Número de línea
| 2 octetos
|
Longitud del texto+ENTER
| 2 octetos
|
Texto
| xxxxx
|
ENTER
| 1 octeto (00001101)
|