Instalando y utilizando el emulador vice (Commodore 64)

2020/05/11

Motivación

Se desea probar aplicaciones/demos de Commodore 64 en linux, particularmente en debian.

Instalar emulador vice

Para emular Commodore 64 y otras consolas se utilizará el emulador vice:

$ sudo apt-get install -Vy vice

Copiar roms

El problema con el paquete vice es que debido a las licencias de las roms necesarias para emular un sistema Commodore 64, estas no son distribuidas en el paquete de debian.

A pesar de que en el archivo README.ROMs se hace referencia a utilizar ftp://ftp.zimmers.net/pub/cbm/crossplatform/emulators/VICE/old/index.html para descargar las roms, se ha visto que estas también se encuentran en el ódigo fuente de vice descargado de sourceforge: https://sourceforge.net/projects/vice-emu/files/releases/vice-3.4.tar.gz. Las ROMS se encuentran bajo el directorio data. La lista de las roms necesarias que se deben copiar al sistema, que fueron quitadas por problemas de licencias se encuentran listadas en el archivo ROM.list

Para instalar las roms al sistema se puede utilizar el comando install:

$ VERSION=$(apt-cache show vice | grep -oP '^Version: \K\d\.\d')
$ wget -P /tmp "https://sourceforge.net/projects/vice-emu/files/releases/vice-${VERSION}.tar.gz"
$ tar xf /tmp/vice-${VERSION}.tar.gz -C /tmp
$ cd /tmp/vice-${VERSION}
$ wget "https://sources.debian.org/data/contrib/v/vice/3.4.0.dfsg-1/debian/ROM.list"
$ sudo /bin/bash -c '
    for i in $(cat ROM.list); do
        /usr/bin/install -m 644 -o root -g root $i /usr/lib/vice/${i#data/}
    done
'

Tener en cuenta que si no se copian las roms del directorio DRIVES, no podrán cargarse imagenes de disco para utilizar con el emulador. Omitir este detalle puede llevar a unas horas sin entender porqué no funciona el attach de las imágenes de disco. Por esto es que conviene copiar todas las roms, y no algunas selectivamente.

Ejecutar programa de prueba

Como ejemplo de prueba, se descargará una imagen de disco con el programa durexforth:

$ FILE=durexforth-v2_0_0.d64
$ wget -P /tmp "https://github.com/jkotlinski/durexforth/releases/download/v2.0.0/${FILE}"

Para ejecutar el primer programa del disco:

$ x64 -nativemonitor /tmp/$FILE

Se utiliza la opción -nativemonitor para que en lugar de abrirse una ventana para el monitor que no permite copiar y pegar texto, se utilice la consola desde la cual fué lanzado el emulador como terminal del monitor, lo que permite copiar y pegar texto.

Si se quiere solamente atachear el disco y ejecutar algunos comandos al inicio del emulador se puede utilizar:

$ x64 -nativemonitor -8 /tmp/$FILE -keybuf 'load "$",8\nlist\n'

Aquí, -8 permite agregar (attach) el archivo indicado como una imagen de disco en la unidad #8. La opción -keybuf permite simular la introducción por teclado de texto.

Como referencia, conviene previo a usar el emulador leer sobre los comandos de C64, en particular el comando LOAD, el cual permite la carga y ejecución de programas.