como supervitaminar un Vic20

Avatar de Usuario
wilco2009
Mensajes: 2141
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

como supervitaminar un Vic20

Mensajepor wilco2009 » 28 Ene 2014 12:29

Imagen

Pues eso, como reza el título voy a contaros cómo he aumentado la capacidad de mi Vic20 hasta el límite máximo posible, 40Kb de RAM.

Lo primero comentaros que he seguido este esquema publicado en la página "Ruuds Commodore site".
Esta es una página que os recomiendo encarecidamente a los amantes de commodore, ya que hay un montón de proyectos hardware para C64 y Vic20.

También quiero dar las gracias a mccleod por su estupendo post sobre la ampliación del vic20 a 16Kb que me ha permitido conocer un poco más la memoria del Vic20.

Para empezar hay que decidirse si se quiere hacer una ampliación interna o externa. A mí me costó decidirme ya que, aunque las ventajas de hacerla interna son muchas, me daba palo modificar mi vic20, violando su arquitectura original.

Por un lado la ampliación interna hace la ampliación más portable, no teniendo que llevar a todas partes una incómoda mochila, además de que así se queda disponible el bus para conectar cartuchos o cualquier otro interface y no es necesario fabricarse un conector edge para el circuito.

Por el lado contrario una ampliación interna te obliga a modificar la carcasa para sacar los microinterruptores que permiten anular la ampliación, además de que hay que meterle mano al vic20 con el soldador y buscar un sistema de anclaje interior para la placa.

Al final me he decidido por la ampliación interna y aquí paso a exponeros los resultados.

Los microinterruptores son necesarios ya que la ampliación de memoria se pega de leches con algunos cartuchos :( , por lo que es necesario poder desactivarla entera o parcialmente en estos casos.

El Vic20 viene de fábrica con 5Kb de RAM, de los cuales 3583 bytes están disponibles para el usuario, ya que el resto estaba usado para la pantalla y variables del sistema.
La memoria del Vic20 es un poco enrevesada, de hecho pienso que el diseñador del VIC-20 iba cargado de sustancias alucinógenas cuando la diseñó. -507 :P
Resulta que, no acabo de entender bien con que fin, el Vic-20 divide la memoria en huecos de 8Kb numerados como BLK0....BLK7. En total los 64Kb que puede direccionar el 6502, por lo que no se gana mucho dividiendo en bloques la memoria. Al menos no en mi opinión.

Cuando tenemos un Vic20 nuevo de "Trinqui", tenemos vacíos los bloques BLK1, BLK2, BLK3 y BLK5, por lo que sobre estos bloques podemos añadir más RAM.
Por otro lado, se ve que los amigos de Commodore, volvieron a tomarse un tripi a la hora de seleccionar la RAM a poner en su cacharro, porque en lugar de poner 4Kb u 8Kb, dijeron ni pa ti ni pa mi, y pusieron 5 flamantes Kb de RAM en el BLK0, y después de eso se fueron a dormir la mona, descojonandose de todos los que después iban a preguntarse porqué cojones han puestos precisamente 5Kb de RAM en un Vic20. :D
Las malas lenguas dicen (y esto no es cachondeo) que es que tenían chips de sobra de memoria RAM estática de 1Kbx4bits, por lo que debieron hacer una división de lo que les sobraba por los equipos que querían fabricar y así de inteligentemente debieron de actuar para repartir la memoria. -507 -507
Debido a que pusieron 5 y no 8 Kb, dejaron disponibles 3Kb adicionales más en BLK0, por lo que al final tenemos posibilidad de aumentar en 8*4=32Kb (BLK1..BLK5) + 3Kb en BLK0 35KB, que unidos a los 5Kb que vienen de fábrica se quedan en 40Kb.

Pues bien, como los amigos de Commodore aun no estaban contentos con la cosa, dijeron ¿porqué no la liamos un poco más y hacemos que el CBM basic no pueda acceder a BLK5?.
De esa forma podemos tener hasta 40Kb pero lo máximo a lo que podemos aspirar a que aparezca como disponible en la pantalla inicial es 28259bytes o 27,5Kb.

Imagen

Bueno, pues una vez contado todo este rollo comenzamos con el tema. Según el esquema de Ruud necesitamos los siguientes componentes:

- 1 placa de prototipos.
- 1 chip de RAM estática de 8K x 8 bits (6264)
- 1 chip de RAM estática de 32K x 8 bits (62256)
- 8 resistencias de 10K (o una red de 8 resistencias)
- 1 chip de 2 puertas AND de 4 entradas (74LS21)
- 1 bloque de 8 microinterruptores
- Algo de cable.

Imagen

Si observáis el esquema, el bus de direcciones del vic20 solo dispone de 13 líneas, por lo que en principio sólo podemos direccionar 8Kb que corresponde con el tamaño de bloque. El resto lo seleccionamos con las señales BLK1, BLK2, BLK3 y BLK5.

10 /BLK 1 Memory block 1 Chip select for block 1; active-low, if address on bus is within $2000-$3FFF.
11 /BLK 2 Memory block 2 Chip select for block 2; active-low, if address on bus is within $4000-$5FFF.
12 /BLK 3 Memory block 3 Chip select for block 3; active-low, if address on bus is within $6000-$7FFF.
13 /BLK 5 Memory block 5 Chip select for block 5; active-low, if address on bus is within $A000-$BFFF.

El bloque 0 (BLK0) no está presente en el bus, pero aun así pueden aprovecharse los 3Kb que nos faltan por rellenar mediante 3 señales extra (RAM1, RAM2, y RAM3) que permiten acceder a cada bloque de 1Kb de los que tenemos libres en el bloque 0.
14 /RAM 1 RAM 1 Chip select for RAM (memory area $0400 - $07FF)
15 /RAM 2 RAM 2 Chip select for RAM (memory area $0800 - $0BFF)
16 /RAM 3 RAM 3 Chip select for RAM (memory area $0C00 - $0FFF)

Como veis es de locos. :o Con lo sencillo que hubiera sido dar acceso al direccionamiento completo. ;?

Pues bien, como os he dicho antes usamos dos chips de RAM. El de 32Kb lo usaremos para rellenar los bloques BLK 0, 1, 2, 3 y el de 8Kb para BLK5.

Adicionalmente necesitaremos un chip de puertas AND para gestionar las señales de control de acceso a memoria y un bloque de 8 microswitches para permitirnos desactivar o activar cada bloque de memoria por razones de compatibilidad.

Empezaremos soldando zócalos y demás componentes.

Imagen

Seguiremos soldando la maraña de cables correspondiente, siguiendo el esquema y comprobando con el polímetro todo el cableado para asegurarnos que está OK.

Imagen

Metemos los chips en sus correspondientes zócalos:

Imagen

Y pasamos a abrir el Vic20.

Imagen

Como podéis ver la caja está medio vacía, por lo que tenemos sitio de sobra para colocar la placa.

El acceso al bus también es bastante sencillo, por lo que podremos soldar sin problemas.

Imagen

Este podría se un buen sitio para colocar la placa, por lo que después de interponer un trozo de material aislante para evitar problemas, pasamos a fijarlo con adhesivo "Muntack".

Imagen

Imagen

Para llevar las señales hasta el bus necesitaremos un cable plano de 44 hilos. Como no tengo ninguno de tantos hilos he utilizado dos trozos.

Imagen

Soldamos todos los cables......

Imagen

Y antes de cerrar la caja pasamos a probar, dejando los 8 switches en on.

Imagen

Eureka!!!. :D Como era de esperar conociendo mi gran pericia con el soldador -507 tenemos 28159 bytes libres disponibles para el basic osea 32Kb - 1,5Kb que se reserva el sistema, ya que BLK no puede verlo el basic ya que no es un bloque contiguo de memoria, aunque sí cualquier programa en código máquina.

NOTA: jejeje, es lo que tiene hacer las cosas en diferido, os he ahorrado ni se sabe la de repasos a la placa -507 -507

Para comprobar que también funciona BLK5 echaremos mano de algunos POKES y PEEKS a las direcciones de memoria donde debería de estar la RAM.

Imagen

Disculpad el cambio de método de visualización pero es que mi PC lo tenía ocupado mi hijo con sus deberes. jejejeje -507

Como podéis comprobar hago un poke en dos posiciones de memoria correspondientes a BLK5 y al hacer un PEEK a sus correspondientes posiciones de memoria leo los mismos valores, por lo que también funciona dicho bloque. :D

Llegados a este punto hay una cosa que debo cambiar en el circuito, y es que he soldado los microswitches a la placa y debería haberlos sacado fuera para dejarlos accesibles, por lo que los desueldo y con la ayuda de otro cable plano de 16 hilos los saco fuera de la caja.

Imagen

Cerramos la caja y a disfrutar de la nueva memoria de nuestro queridisimo ordenador. :D
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
ron
Mensajes: 21856
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: como supervitaminar un Vic20

Mensajepor ron » 28 Ene 2014 17:54

Wilco !!! Que gozada de post !!! Una chulada.

Muy interesante, el Vic20 es una de mis máquinas preferidas y ciertamente es difícil encontrar programas que requieran más de 19 Kb de RAM. Por eso no necesité ampliarlo más, aunque no dudo en hacer unos cambios a la vista de tu nueva creación. Lo iré barajando.

Yo tengo el mio con el cartucho VIC-1111 que le añade 16 KB, sumadas a las 5 de placa hacen 21 de las que 19 y pico quedan disponibles para Basic. Como comentaba más que suficiente para ejecutar casi todo el software existente.

dancresp
Mensajes: 6225
Registrado: 13 Nov 2010 02:08
Ubicación: Barcelona
Agradecido : 665 veces
Agradecimiento recibido: 1017 veces

Re: como supervitaminar un Vic20

Mensajepor dancresp » 28 Ene 2014 18:15

Yo con la ayuda de un cartucho de ampliación también tengo los 16+5 KB necesarios para correr los programas más potentes que tiene esta máquina, y no me planteo hacer cambios.

De todas formas, reconozco en que hay que tenerlos "muy bien acomodados" para realizar el montaje que nos has mostrado.
Yo ni loco !!!
Buscando la IP de la W.O.P.R. he encontrado mi índice

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: como supervitaminar un Vic20

Mensajepor jltursan » 28 Ene 2014 19:23

Pues yo llego a tiempo :-). El mod de McLeod no lo había montado todavía y el tuyo lo complementa perfectamemente.

No se cuando caerá; pero si puedo liberar el slot de cartuchos, mejor que mejor. ¡Gracias!

Avatar de Usuario
wilco2009
Mensajes: 2141
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: como supervitaminar un Vic20

Mensajepor wilco2009 » 29 Ene 2014 00:14

Como digo al principio del post, el esquema no es mio sino de ruud. Además creo que fuiste tu mismo (jltursan) el que publico un enlace a la pagina ruud en el post de mcleod, cosa que te agradezco.
Yo solo muestro como lo he implementado y explico como funciona el tema de la ram, cosa que he aprendido del post de mcleod.

De todas formas, creo que podriamos utilizar un solo chip de 64kb, desaprovechando un poco mas de ram del chip pero facilitando mucho la construccion.
Solo habria que conectar la señal que ahora mismo va a /CS1 y /OE en U3 a A15 del chip de 64kb.
En principio creo que deberia funcionar y nos ahorrariamos por completo U3.
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

Avatar de Usuario
ron
Mensajes: 21856
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 3862 veces
Agradecimiento recibido: 4752 veces

Re: como supervitaminar un Vic20

Mensajepor ron » 29 Ene 2014 00:22

Uno de los posts sobre la ampliación de Mcleod_Ideafix es este: viewtopic.php?p=100046735#p100046735

Está bastante completo.

Saludos

Avatar de Usuario
wilco2009
Mensajes: 2141
Registrado: 07 Ene 2013 16:48
Ubicación: Valencia
Agradecido : 202 veces
Agradecimiento recibido: 384 veces

Re: como supervitaminar un Vic20

Mensajepor wilco2009 » 31 Ene 2014 19:13

jltursan escribió:Pues yo llego a tiempo :-). El mod de McLeod no lo había montado todavía y el tuyo lo complementa perfectamemente.

No se cuando caerá; pero si puedo liberar el slot de cartuchos, mejor que mejor. ¡Gracias!

Acabo de descubrir que el bloque 5 es necesario para los juegos que proceden de algunos cartuchos.
Despues de darle muchas vueltas a porqué no funcionaban algunos juegos que venian con dos archivos prg, uno acabado en a000 y el otro en 6000 he descubierto leyendo un post que necesitan tener activados los bloques 3 y 5, por lo que necesitan la amplición de 32kb que incluye el bloque 5.
Para cargar el juego hay que cargar ambos archivos y luego hacer un softreset de la siguiente manera (en el ejmplo se asume que los archivos se llaman mspacman60 y mspacmana0):

Código: Seleccionar todo

1 ONAGOTO4,5
2 DR=PEEK(186)
3 A=1:LOAD"MSPACMAN60",DR,1
4 A=2:LOAD"MSPACMANA0",DR,1
5 POKE37138,0:POKE37139,0:POKE37154,0:POKE37155,0:POKE37150,127:POKE37166,127:SYS64802


Otro motivo mas para construirse el interface. -thumbup
"Nada viaja a mayor velocidad que luz con la posible excepción de las malas noticias las cuales obedecen a sus propias leyes."

Douglas Adams. Guía de autoestopista galáctico.

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: como supervitaminar un Vic20

Mensajepor jltursan » 31 Ene 2014 19:27

Interesante la información.

Un VIC-20 con esta ampliación (tu mérito ha sido el documentar gráficamente la de 40KB ;-)) y con un SD2IEC ya supongo que podrá tragarse cualquier cosa que le des de comer :-)


Volver a “Commodore Vic20”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados