Ir al contenido principal

ZX81: Ampliación de memoria a 16K (Memotech Memopak y Sinclair RAM Pack)


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 ZX81 y accesorios
Un tiempo después, coincidiendo con el lanzamiento del ZX Spectrum, Sir Clive Sinclair bajó el precio del RAM Pack con la excusa de que el precio de fabricación de las memorias RAM había bajado, coincidencia o no, pero el precio bajó prácticamente a la mitad. 

Carta de Sinclair a clientes con ZX81
El módulo externo de memoria RAM fabricado por Sinclair, el RAM Pack 16K, fue uno de los muchos en comercializarse. A priori, al ser de la marca Sinclair, podría haber sido el que la gente hubiera puesto toda su confianza, pero este tenía un pequeño problema que era el llamado "wobble" o tambaleo en castellano. Esto quería decir que si movías el teclado bruscamente, por el propio ímpetu al teclear o porque lo girabas para acercártelo, se podía soltar el módulo de memoria, diciendo adiós a muchas horas de programación si previamente no habías hecho un guardado en cinta. De este problema se aprovecharon otras marcas para fabricar otras versiones "wobble-free" como fueron Memotech, Byg Byte o la española Indescomp, fabricando módulos que se acomplaban enteramente a la parte trasera del ZX81, dándole más estabilidad y ofreciendo la sensación de que las dos partes estuvieran completamente anexadas. Algunos módulos, como el de Memopak, venían con un velcro, por si querías ponerlo, y así dejar el módulo de memoria bien pegado al ZX81. 

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. 

En mi caso poseo el RAM Pack de Sinclair, concretamente el modelo para Timex, pero compatible con el ZX81, y el Memopak de 16K. A continuación describo las características más importantes de ambos modelos.

Comparativa Memopak 16K y RAM Pack 16K

Memopak 16K y RAM Pack 16K
Como se puede apreciar en la foto, el Memopak tiene una forma longitudinal, al contrario que el RAM Pack que tiene una disposición vertical, siendo este el motivo por lo que a priori el RAM Pack es más inestable y por esto el famoso "wobble". 

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. 

PCB Memopak (arriba) y PCB RAM Pack (abajo)
Al conectar el Memopak al ZX81, estéticamente le queda muy bien, y al dejarlo sobre la mesa aparentemente parece que solamente hay un único dispositivo y se queda muy asentado con bastante estabilidad. Aunque, si lo coges de la mesa, éste no está tan sujeto y se tambalea bastante, dando la sensación de que se va a caer. Sin embargo, el RAM Pack, pese a toda la mala fama del "wobble", se queda más sujeto pero estéticamente el ZX81 pierde bastante al tener conectado este mazacote sobresaliendo de la parte de atrás. 

ZX81 con Memopak conectado

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 06817408
16KB 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

Entradas populares de este blog

ZX Spectrum: Consejos para comprar un Spectrum

Nos hemos llenado de nostalgia y queremos revivir la sensación de disfrutar de ese Spectrum que tuvimos cuando eramos niños. Hasta aquí todo suena muy bien, pero no es algo que nos lo tengamos que tomar muy a la ligera, debido a que si optamos por comprarnos uno de segunda mano, muy posiblemente éste requiera de una restauración y reparación, con todo lo que supone, es decir, tener conocimientos de electrónica, aunque sean básicos, saber identificar averías, realizar modificaciones, cambiar piezas dañadas, y un largo etcétera, que nos quitará tiempo y supondrá gastarnos más pasta para conseguir que el cacharro funcione finalmente.

Si no hemos sido capaces de encontrar nuestro Spectrum en casa de nuestros padres, antes de decidirnos a comprar uno, lo mejor es probar primero con un emulador, para ver si esto consigue paliar ese ataque de nostalgia. Existen emuladores para plataformas como Windows, Linux, Android, etc... A mí personalmente no me atraen demasiado, pero lo mejor es darle u…

El botiquín del Spectrum: Componentes de repuesto

Debido a la avanzada edad de nuestros Spectrum, hay que estar prevenidos ante cualquier imprevisto que pueda surgir en forma de avería. Como hemos podido ver en alguna de las reparaciones que he publicado en este blog, me ha hecho falta una serie de componentes electrónicos, que en algún caso no los tenía, y he tenido que esperar a conseguirlos yendo a una tienda de electrónica o comprándolos por internet. 

Para no encontrarnos en esta situación, he identificado cuales son las averías más frecuentes y qué componentes harían falta para poner de nuevo en marcha a nuestro Spectrum. 
CPULa CPU que nos podemos encontrar en el ZX Spectrum puede ser Zilog Z80A de 4MHz o NEC D780-C, ambas totalmente compatibles. Aunque el cristal de cuarzo para generar una señal de reloj estable es de 14MHz, realmente la señal de reloj que utiliza la CPU es la marcada por el pin 32 (CLK) de la ULA. Esta señal tiene una frecuenca de 3,5MHZ, que es el resultado de dividir por 4 la señal de reloj producida por el …

Reparación ZX Spectrum 48K: Imagen en blanco y negro

Cuando encendemos nuestro Spectrum, de vez en cuando y no muy raramente en ordenadores de más de 30 años, nos podemos encontrar con alguna sorpresa desagradable en forma de fallo, y esto es exactamente lo que me acaba de pasar. 

Como se puede apreciar en la fotografía, la imagen aparece en blanco y negro. Este fallo es muy difícil de detectar al encender el Spectrum, debido a que los colores que predominan en el inicio es un PAPER 7 e INK 0 (colores blanco y negro), pero si cargamos un programa o juego, es ahí cuando nos damos cuenta de que algo no va bien, al ver que no hay color. En la imagen se puede apreciar que poniendo un BORDER de color, ésta se ve con tonalidades en blanco y negro.

Llegados a este punto la típica pregunta que nos hacemos es ¿Cómo arreglo yo esto? Lo primero que tenemos que hacer es abrir el Spectrum y ver qué versión de la placa base tenemos.


Placa base de Spectrum 48K Issue 4A
Esta placa es una Issue 4A, haciendo zoom en la zona de la foto que se ha enmarcado en …