[VIC-20] Ampliación "rápida" a 16K con pocos componentes

[VIC-20] Ampliación "rápida" a 16K con pocos componentes

por mcleod_ideafix

 

Adquirí un VIC-20 estropeado. La causa era la ROM, así que después de arreglarlo, querría usarlo para ver algún juego que exprima "toda su salsa", y aquí pasa como con el ZX81 o el Jupiter ACE: que los juegos "chachis" necesitan ampliación de memoria.

Después de mirar por algunos sitios, decidí hacerme mi propia ampliación, ya que lo más "sencillo" que había encontrado necesitaba dos chips de memoria, uno encima de cada ROM. Estaba seguro de que se podría hacer con uno solo, y así ha sido.

Estos son los materiales que necesitamos:

  • Un chip de memoria 62256 (32Kx8 bits, como el que monta, por ejemplo, el DivIDE)
  • Una resistencia de 470 ohmios (puede ser incluso un poco mayor si no teneis de este valor)
  • Dos diodos 1N4148




Al chip de memoria, previamente le doblaremos algunos de sus pines para afuera, de la forma en la que se ve en la foto. El resto de los pines los dejaremos bien rectos, ya que serán los que se "agarren" al chip sobre el que va a ir éste.


Esta es la idea: poner el chip de RAM literalmente encima de uno de los chips de ROM. Yo he escogido el que tiene el BASIC, ya que el otro, el del KERNAL, va sobre zócalo y es el que he cambiado.


Hay que asegurarse de que los pines que quedan doblados hacia afuera, no llegan a tocar los pines de la ROM donde se asienta.


Antes de "enchufarlo" de forma definitiva, hay que hacer unas conexiones. Se trata de unir con alambre de cobre los pines que se muestran en la foto. Estos pines corresponden al costado derecho del chip (viéndolo desde arriba, con la muesca apuntando hacia arriba, o bien, si tomamos como referencia la segunda foto, el costado superior)


Y ahora sí, lo ponemos encima del chip de la ROM. Los pines que no hemos doblado hacia afuera deben hacer buen contacto con sus homónimos en el chip de la ROM.

Si no estamos seguros de que vaya a ser así, habrá que dar una gotita de estaño en los sospechosos.
Fijarse que quedan dos pines a cada lado "colgando" fuera.


El mismo chip desde otro ángulo, para que se vea bien lo que digo de que quedan pines "al aire".


Cogemos la resistencia y soldamos cada extremo como se ve en la imagen, uniendo los dos cablecitos que están soldados a los pines. Nótese que he dejado más "rabito" en la resistencia en un lado que en otro, porque ahí soldaremos más cosas.


Ahora hay que localizar UC5 en la placa del VIC20. Es un decodificador, cuyas salidas indican qué banco de memoria se está intentando usar. Nosotros queremos que nuestra RAM se active cuando se quiera acceder al banco BLK1 o BLK2 (pines 13 y 14 de UC5), así que la idea es formar una puerta AND, cuya salida valdrá 0 cuando cualquiera de los pines BLK1 ó BLK2 valga 0. De eso se encargan los dos diodos y la resistencia.

Los diodos hay que soldarlos con el cátodo mirando al chip (la banda negra) como indica la imagen. Si los soldais al revés, no funcionará el invento.


Los otros dos extremos de los diodos se unen entre sí y se sueldan al rabito largo que dejamos de la resistencia. Si queremos evitarnos cortocircuitos indeseados, podemos "enfundar" a los diodos con aislante.

Si hacéis eso, dejad antes un poco "al aire" el pin 14 de UC5 porque ahí volveremos a soldar algo.


Llevamos un cable del pin R/W del 6502 (pin 34)...


... al pin 27 de nuestra RAM (pin de escritura). Este pin es el que queda en medio de dos que están unidos por el alambre.


Ahora, del pin 14 de UC5 que dejamos un poco al descubierto, soldamos un cable...


... que irá al pin 1 de nuestra memoria 62256.


¡El último cable! Localizad UC6, y soldar un cablecillo desde su pin 2...


... al pin 2 de la memoria 62256.


Echad un último repaso a todas las conexiones, y especialmente, a que la RAM esté bien agarrada a la ROM. Yo no he necesitado soldarla, pero sí que le he puesto un puntito de pegamento térmico.

Otra solución es poner cinta adhesiva de doble cara uniendo los cuerpos de ambos chips.


Si todo va bien, el resultado debería ser éste 19967 bytes libres en lugar de los clásicos 3583


Añadir un interruptor para Activar y Desactivar la ampliación

En lugar de soldar los dos diodos al rabito de la resistencia, suéldalos a un pin de un interruptor. El otro pin lo sueldas al rabito de la resistencia. Con el interruptor cerrado, el circuito queda tal cual lo he explicado. Con el interruptor abierto, los dos diodos quedan "aislados" de la resistencia y la memoria nunca se activa.

Y unos apuntes:

El BASIC puede ver memoria en bancos que estén contiguos.
En el VIC20 hay 4 bancos de 8K para ampliar, 3 de ellos contiguos. Eso significa que puedes agregar 8K más (aparte de los 16K que amplía este mod), hasta 24K y se vería como memoria disponible para BASIC.

El otro banco más de 8K ya no estaría contiguo a los demás por lo que el BASIC no lo detecta, pero sí puede usarse desde código máquina.

Pero este banco es el que se usa para los cartuchos ROM, si mal no recuerdo, así que una ampliación a 32K, que use todos los bancos, tiene que tener algún tipo de interruptor para deshabilitar la memoria que pudiera entrar en conflicto, en caso de que se quiera usar un cartucho con el VIC20.

Los agradecimientos a McLeod_Ideafix por tan excelente y práctica guía recomendada para todos aquellos que no tienen memoria extra para sus Vic20.