El ZX81 es un ordenador que venía equipado con muy poca memoria RAM, para ser exactos solo ofrecía 1KB, aunque escasos, suficientes para iniciarnos en la programación en BASIC o para realizar programas sencillos. Si queríamos hacer programas más complejos que requisieran más memoria RAM, teníamos que compranos un módulo externo que se anexaba al puerto de expansión del ZX81.
En aquella época el coste de fabricación de circuitos integrados de memoria RAM era bastante elevado, encareciendo cualquier dispositivo que las utilizara, en el caso del RAM Pack, el precio era el mismo que el kit de montaje del ZX81, es decir, valía lo mismo que el propio ordenador.
Publicidad de Memoech Memopak |
Además de los módulos de 16K, también se comercializaron versiones de 32K y 64K, pero por limitaciones de la máquina, solo eran direccionables por ensamblador los 16 primeros KB, y el resto estaban disponibles para los datos de nuestros programas en BASIC.
Llama la atención que algunos modelos de RAM Packs eran compatibles entre fabricante pudiéndose apilar o acoplar en tandem para así conseguir más memoria RAM. Por ejemplo, se podía conectar juntos un Memopak de 16KB y un Sinclair RAM Pack de 16KB, para obtener un total de 32KB de memoria RAM.
Comparativa Memopak 16K y RAM Pack 16K
La carcasa del Memopak es de metal, y la PCB no se encuentra atornillada en el interior, sino que se encuentra insertada en una especie de surco o rail, por lo que para extaerla simplemente se abre la carcasa por un lateral y se tira de ella. Esta carcasa al ser de metal también sirve de disipador, siendo esto una gran ventaja. Al contrario, en el RAM Pack la carcasa es toda de plástico.
Si echamos un vistazo al interior ambos dispositivos contienen 8 chips de memoria DRAM 4116, cuando el ZX81 monta memorias estáticas 2114 para ofrecer 1KB. El utilizar memorias dinámicas tiene la ventaja que son de más alta densidad, el consumo es menor y son más económicas que las estáticas, en aquella época era habitual usar estos chips de memoria en dispositivos con capacidades de memoria iguales o superiores a los 16KB.
Puesta en marcha
El Memopak, antes de encenderlo, hay que hacerle una configuración previa, ya que éste tiene dos modos de funcionamiento, como máster o como esclavo, en mi caso lo configuro como máster ya que no tengo otras memorias de Memotech. Para hacer esta configuración, en la parte de atrás hay unos switches que hay que configurar como apagados o abajo el 1 y 4, y activados o arriba, el 2 y 3.
Switch 1 y 4 (off) y 2 y 3 (on) para configurar el Memopaq como máster |
Al encender el ZX81 aparece el prompt con la letra K. Al ser una memoria de 16KB no hay que hacer nada, ya que ésta, como si fuera un dispositivo plug & play, está automáticamente disponible.
Para comprobar que la memoria está disponible podemos ejecutar la instrucción en BASIC DIM para crear un array de una dimensión de 3000 valores:
DIM A(3000)
Si el resultado es 0/0 tendremos los 16K disponibles.
Otra forma de verificar si tenemos los 16KB, es leyendo la variable del sistema RAMTOP, que nos indica la dirección del último byte ya no direccionable. La variable RAMTOP la obtenemos de dos direcciones de memoria, la 16388 y la 16389. Si ejecutamos:
PRINT PEEK 16388+256*PEEK 16389
Nos puede dar los siguientes resultados:
Memoria RAM | Dirección 16388 | Dirección 16389 | Resultado |
1KB | 0 | 68 | 17408 |
16KB | 0 | 128 | 32768 |
Esto quiere decir que cuando tenemos una memoria de 1KB la última dirección direccionable es la 17407 y en el caso de que se disponga de una memoria de 16KB sería la dirección 32767.
Si al valor del resultado de la tabla le restamos el valor 16384, obtenemos los bytes que tenemos disponibles en nuestro ZX81. Por lo que si lo ponemos todo en bonito en un pequeño programa en BASIC, para obtener los KB disponibles nos quedaría lo siguiente:
Programa para obtener los KB de memoria RAM en el ZX81 |
Como el resultado de ejecutar el programa es 16, el Memopak funciona correctamente.
Memoria RAM disponible en el ZX81 |
Se repite esta misma operación con el RAM Pack de 16KB y se comprueba que tambien funciona correctamente.
Sinclair RAM Pack y Memopak conectados en tandem
Una funcionalidad que dispone el Memopak es la de poderle conectar en tándem, a través de su puerto de expansión, otro Memopak o el Sinclair RAM Pack, como una forma de ampliar la memoria. En mi caso como tengo el Memopak de 16K y el RAM Pack de 16K, podría obtener entre los dos 32KB.
Para realizar esto se conecta como máster el Memopak al ZX81, y el RAM Pack al Memopak.
Memopaq y RAM Pack conectados en tándem |
Esta configuración pierde en estética, pero vamos a ver si realmente conseguimos los 32KB. Para esto, el tema ya no es tan plug and play, es decir, que hay que decirle a la máquina que dispone de los 16KB extras, aparte de los 16KB que detecta. Esto es debido a que el ZX81 solo puede direccionar, sin hacer ninguna modificación, hasta la dirección 32767, por lo que toda la memoria de más que le pongamos a los 16KB, no podrá ser direccionada por un programa en ensamblador, pero sí puede ser utilizada como espacio para datos en un programa en BASIC.
Para decirle al ZX81 que dispone de los 16KB extras, hay que cambiar la variable del sistema RAMTOP:
POKE 16389,192
Una vez cambiado el valor de la dirección de memoria 16389 a 192, que inicialmente era 128, se ejecuta el comando NEW para que quede reflejado el cambio.
Para verificar si realmente se dispone de los 32KB, se ejecuta la instrucción en BASIC:
DIM A(6000)
Si se obtiene como resultado 0/0 significa que sí disponemos de esos 32KB.
Conclusiones
Tanto el Memopak como el RAM Pack funcionan correctamente y en el uso que he realizado no se me ha dado la circustancia del "wobble" en ninguno de los dos dispositivos, puede que la fama del RAM Pack fuera más mito que realidad.
Para un uso habitual, lo normal es utilizar estos dispositivos en stand-alone, y no en tándem, como curiosidad está bien, pero hasta ahora no se me ha presentado la necesidad de utilizar más de 16KB, y en mi caso, la configuración en tandem, aunque sí que funciona, me ha producido parpadeos en pantalla con micropérdidas de la señal de vídeo, que no sé si es debido al famoso wobble, o que las conexiones del puerto de expansión están un poco sucias o porque en mi caso tengo una nueva ULA por FPGA e igual no está optimizada para este tipo de uso.
Si tuviera que elegir entre el RAM Pack y el Memopak, me quedaría con el Memopaq por estética y porque me ha gustado la sensación de robustez de la carcasa de metal, pero no por funcionalidad, ya que los dos dispositivos ofrecen lo mismo.
D.R Spectrum
Comentarios
Publicar un comentario