Capítulo 7. Para su referencia

Parte 15: Memoria

Contenido:


El CPC6128 dispone de 128K de RAM y 48K de ROM. Esta memoria es utilizable por BASIC 1.1 según se indica en la figura siguiente. El primer banco de 64K de RAM está dividido nominalmente en cuatro bloques (de 16K cada uno), numerados del 0 al 3. La pantalla utiliza el bloque 3; la zona superior del bloque 2 está dedicada a las variables de sistema, según se muestra en la figura.

Nota 1. Depende de las ROM externas conectadas. Es &A6FC cuando no hay ninguna.

Mapa de memoria para BASIC 1.1

Los caracteres definidos por el usuario están inicialmente inmediatamente por encima de HIMEM. Este valor se puede modificar mediante una orden MEMORY; además se reduce en 4K automáticamente para crear un tampón cada vez que se abre un fichero. El número de caracteres definibles por el usuario (controlado por la orden SYMBOL AFTER de BASIC) sólo se puede modificar si HIMEM no ha variado desde la última vez que aquél fue establecido (o si en esa ocasión se estableció en cero, con SYMBOL AFTER 256). Cuando se entra en BASIC, el número de caracteres definibles por el usuario se establece como si se hubiera ejecutado la orden SYMBOL AFTER 240.

Por consiguiente, antes de cambiar permanentemente HIMEM, es prudente reducir a cero la zona de memoria dedicada a los caracteres definibles; después se modifica HIMEM y finalmente se restablece la zona de caracteres definibles al tamaño deseado. De esta manera los siguientes programas podrán ejecutar nuevas órdenes SYMBOL AFTER sin problemas.

El siguiente ejemplo ilustra este método, aplicado a la carga de una RSX:

100 SYMBOL AFTER 256 ' anular memoria para caracteres definibles por el usuario
110 direccionrsx=HIMEM-longitudrsx
120 MEMORY direccionrsx-1
130 LOAD "codigrsx",direccionrsx
140 CALL direccionrsx ' inicializar rsx
150 SYMBOL AFTER 140 ' restablecer espacio para caracteres definibles

Mapa de memoria con las RSX cargadas en la posición recomendada

Otras entradas y salidas

La mayor parte de las direcciones de puertas de entrada/salida (E/S) está reservada por el ordenador. En particular, las direcciones inferiores a &7FFF no se deben utilizar nunca.

Está previsto que la parte de la dirección representada por A0-A7 refleje el tipo de dispositivo externo de E/S, y que las líneas de dirección A8 y A9 puedan ser decodificadas para seleccionar registros dentro del dispositivo de E/S. De las restantes líneas, sólo A10 puede ser decodificada (a nivel "bajo"); las líneas A11 a A15 están todas a nivel "alto". Así, los registros de los dispositivos se pueden direccionar como &F8??, &F9??, &FA?? y &FB??, donde ?? puede estar entre DC y FF para los interfaces de comunicación y entre E0 y FE para otros periféricos.

Nótese que se deben utilizar instrucciones del Z80 que pongan el registro B en la mitad superior del bus de direcciones (A15-A8).

Memorias ROM adicionales

El sistema operativo está preparado para seleccionar ROMs adicionales en lugar de parte de la ROM interna. La lógica de gestión de direcciones y de selección de bancos estará en un módulo conectado al bus de expansión, pero todas las señales necesarias están en el corrector de expansión.