¿Cómo podría expandir la RAM en un Commodore 64?

El Commodore 64 tenía varios módulos de expansión RAM diferentes. Estos dispositivos se conectan a la ranura del cartucho donde normalmente enchufaría los cartuchos ROM con juegos o aplicaciones. Utilizaron transferencias DMA y / o cambio de banco para permitir que se intercambiaran trozos de ram dentro y fuera del espacio direccionable de 64 kb de la CPU Motorola 6510 que se utilizó en el Commodore 64.

Commodore creó tres modelos de su propia Unidad de Expansión Ram, la 1700 (128KB), la 1764 (256KB) y la 1750 (512KB). Otras compañías que produjeron modelos similares incluyeron Berkley Softworks Chip Level Designs, Creative Micro Designs y Datel. Las unidades Creative Micro Designs fueron notables ya que permitieron la expansión de hasta 16 MB e incluyeron otras características como relojes en tiempo real y controladores de disco duro.

Además, los esquemas y las ilustraciones de la placa de circuito impreso estaban disponibles en el dominio público para construir su propia unidad de expansión de memoria ram. Muchos de nosotros, los aficionados, construimos los propios. (ftp://www.zimmers.net/pub/cbm/do…)

Por supuesto, la memoria RAM en estas unidades no podía ser utilizada por los programas regulares ya que no era memoria que la CPU podía abordar directamente. Como tal, cualquier software que usaría una REU tenía que estar especialmente escrito o debía depender de otra pieza de software que había sido. Debido a la gran base instalada de computadoras Commodore 64, pero al número extremadamente pequeño de usuarios que tenían una REU, muy pocos desarrolladores de software estaban dispuestos a escribir software que dependiera de ella.

Aún así, hubo algunas excepciones notables, incluyendo GEOS (sistema operativo de entorno gráfico), JiffyDOS, varias unidades de copia de disco, algunas aplicaciones de tipo empresarial, software de tablón de anuncios y software RAMdisk que podrían hacer que la RAM adicional parezca grande y rápida. disco duro.

En teoría tenía la máxima cantidad de RAM direccionable posible. Con 16 líneas de dirección, 64 KB es la memoria máxima direccionable (2 ^ 16 = 65,536).

Pero había una forma de evitarlo, con algunas limitaciones. Puede ‘cambiar de banco’ RAM utilizando el puerto de E / S incorporado en la CPU (la CPU utilizada es una variante del 6502 llamada 6510, que agregó este puerto adicional). El puerto se usó en la máquina estándar para superponer la ROM y la RAM y otros chips mapeados de memoria. Puede expandir la RAM utilizando el mismo método.

Siempre que su código se haya escrito correctamente, podría leer datos de la RAM principal (memoria de programa), cambiar de banco y luego leer o escribir datos en un banco superpuesto. Sin embargo, dicho software solo se ejecutaría en máquinas modificadas exactamente de la manera correcta, por lo que probablemente no se hizo mucho. Agregar más RAM con cambio de banco no haría que esa memoria esté disponible automáticamente para programas más grandes; el software tuvo que ser escrito especialmente para usarlo.

El modelo C128 posterior de Commodore utilizó la conmutación de bancos a través de un chip de administración de memoria que hizo que este proceso fuera más fluido y disponible en todas las máquinas. El C128 vino con 128K de RAM pero podría expandirse a 1MB.

Tal cosa no tiene sentido en absoluto. Todo el software estaba codificado para 64kB de RAM, no había una API genérica para trabajar con memoria. Todos los desarrolladores de software en realidad tenían que hacer toda la gestión de la memoria manualmente: tenían que planificar previamente cuánta memoria necesitaban los datos y cuánto necesitaban para el código compilado y luego lo codificaron de esa manera. Incluso no había una función MALLOC como la conocemos hoy. Entonces puede hacerlo, pero ningún software no lo usará de todos modos.