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

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.  CPU La 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 produci

Cargar juegos con la App PlayZX (ZX81, ZX Spectrum, +2A/B y +3)

Existen varias alternativas para cargar juegos de forma casi instantánea en formatos .TAP y .TZX, como DivIDE, Dandanator, etc... A los más nostálgicos que nos sigue gustando cargar desde cinta y esperar esos minutos mientras contemplamos el screen de turno, tenemos que buscar otras alternativas que sean parecidas para así dar descanso a las cintas de casete que tan buenos momentos nos dieron, y de esta forma proporcionarles ese merecido retiro en una estantería junto a sus viejas compañeras donde podamos contemplarlas y admirar sus carátulas. La alternativa más popular es TZXduino, que junto a una tarjeta de memoria sd podemos reproducir los juegos como si los cargásemos desde un casete. Esta opción nos obliga a tener otro dispositivo, y dada la situación, por un poco más de lo que puede valer casi sería mejor opción comprarse un Divide, aunque en concepto son dispositivos muy distintos.  Otra opción sería utilizar la aplicación para teléfonos móviles Android PlayZX . En la web del de

Reparación ZX Spectrum: Cambio de la membrana del teclado

Una vez bien entrado el siglo XXI, muchos de nosotros nos hemos dispuesto a desempolvar o adquirir un Spectrum de segunda mano, y al encenderlo nos hemos encontrado que algunas o todas las teclas no funcionan. Este es uno de los principales síntomas que indica que la membrana del teclado puede que esté rota, y además es una de las reparaciones más habituales a nivel de mantenimiento.  Si hemos recuperado o comprado un Spectrum de 16K, 48K, 128K (toastrack) o un Sinclair QL, lo más probable es que haya que cambiar la membrana del teclado, por lo que el coste de estas hay que tenerlo en cuenta a la hora de pujar o pactar un precio de compra, ya que esto puede aumentar considerablemente lo que estábamos dispuestos a gastarnos. Las membranas que venían en los +2 en adelante, el plástico es más resistente, y si las teclas no funcionan bien, lo más probable que con una limpieza de la membrana y del teclado sea más que suficiente para que las teclas vuelvan a funcionar de nuevo.