Capítulo 8 - Más sobre el gestor de bancos de memoria
Utilización por BASIC del segundo banco de 64K de RAM.
Temas tratados:
* Almacenamiento de imágenes de pantalla
* Pseudoficheros
El mapa de memoria de BASIC 1.1 que vimos en el capítulo anterior, parte 14, muestra que
BASIC no utiliza 64 de los 128K de RAM. BASIC y el firmware residen en una ROM; si a ésta se
añade la ROM del sistema de disco, resulta que la memoria utilizable desde BASIC es 112K en
total (64K de RAM y 48K de ROM).
Cada sección de 16K es un 'bloque'; un grupo de 4 bloques (64K) es lo que se denomina 'banco'.
La técnica de selección de bloques se llama, pues, 'conmutación de bancos'.
El microprocesador Z80 no puede direccionar, en un momento dado, más de 64K. Por esa
razón el sistema operativo está preparado para utilizar la ROM del firmware en lugar del bloque
0 de RAM, o las ROM de BASIC o del sistema de disco en lugar del bloque 3 de RAM. Esta
conmutación se realiza automáticamente cada vez que se deben ejecutar rutinas de BASIC o del
firmware.
Pues bien, la selección de bancos de RAM no es más que una generalización de este método. La
conmutación la realiza un programa escrito en ensamblador.
En la cara 1 del juego de discos del sistema se incluye el programa BANKMAN.BAS. Este
programa se ejecuta desde BASIC; su objeto es instalar la RSX que proporciona las órdenes
externas de gestión de bancos.
Una aplicación del segundo banco de 64K es el almacenamiento temporal de imágenes de
pantalla; por ejemplo, en un programa 'diseñador de pantallas' que almacene varias pantallas
diferentes, o un videojuego que tenga preparadas varias pantallas para mostrarlas inmediata-
mente cuando las necesite.
Otra aplicación del segundo banco de 64K es la ampliación del espacio dedicado a las variables;
este espacio adicional se puede considerar como ampliación del espacio reservado a las matrices
literales o como "disco de RAM" ('Ramdisc').
Parte 1: Almacenamiento de imágenes de pantalla
El gestor de bancos puede 'desconectar' el bloque 1 de RAM y poner en su lugar uno cualquiera
de los cuatro bloques de 16K de que consta el segundo banco. La figura siguiente muestra en
qué consiste esta conmutación. Observe que los cuatro bloques del segundo banco están todos
en el mismo grupo de direcciones, de &4000 a &7FFF. El contenido del bloque 1 (normalmente
ocupado por instrucciones de BASIC) no se pierde, sino que es restaurado cuando el gestor de
bancos termina su trabajo. Además de las cinco conmutaciones de bancos ilustradas en la figura,
hay otras tres posibles, pero sólo se las utiliza en CP/M.
Manual de Amstrad CPC 6128 (revisión 2008) - Página 317