El objetivo de este post es realizar un «hola mundo» en «Locomotive Basic» desde GNU/Linux utilizando un emulador de Amstrad CPC464 sobre una ROM BIOS alterada.
Se explica como se puede realizar y como finalmente podemos aprender a programar sencillos programas.
Creo que a nivel de historia es interesante y puede servir para pasar un buen rato picando algo de código viejuno.
Material necesario:
- xcpc (Un emulador de Amstrad CPC 464/664/6128 escrito en C).
- libsdk (Es necesaria para el acceso del emulador a las imágenes de disquetes. Es una dependencia para compilar xcpc).
Proceso:
- Compilar libsdk .
- Compilar xcpc .
- Alterar ROM BIOS a nuestro gusto.
- Escribir un hola mundo en Locomotive Basic .
Compilar libsdk:
Se necesitarán algunas dependencias como make, gcc, …
$ wget http://www.seasip.info/Unix/LibDsk/libdsk-1.4.2.tar.gz $ tar xfvz libdsk-1.4.2.tar.gz $ cd libdsk-1.4.2/ $ ./configure $ make # make install # ldconfig
Compilar xcpc:
Descargamos xcpc desde aquí: sourceforge.net/projects/xcpc/files/latest/download
Lo descomprimimos y accedemos al directorio para compilarlo siguiendo estos pasos (teniendo en cuenta que tiene ciertas dependencias como por ejemplo libxaw7-dev):
$ cd xcpc-20070122/ $ ./configure $ make # make install
Si todo va bien ya estará disponible xcpc en nuestro sistema GNU/Linux.
Podemos probar a ejecutar xcpc así por ejemplo:
$ xcpc --model=cpc664
Y veremos que se carga la ROM BIOS cp664.rom correspondiente a ese modelo de Amstrad.
ROM BIOS que incorpora un interprete BASIC.
Las roms que utiliza xcpc se han instalado en las siguientes rutas:
amsdos.rom -> ‘/usr/local/share/xcpc/roms/amsdos.rom’
cpc464.rom -> ‘/usr/local/share/xcpc/roms/cpc464.rom’
cpc6128.rom -> ‘/usr/local/share/xcpc/roms/cpc6128.rom’
cpc664.rom -> ‘/usr/local/share/xcpc/roms/cpc664.rom
Alterar ROM BIOS a nuestro gusto:
La gracia del articulo es ver como con un simple editor hexadecimal vamos a poder modificar el texto que aparece cuando la BIOS carga BASIC. Y luego ya con una BIOS customizada ponernos a hacer un hola mundo en BASIC.
Para ello se puede usar cualquier editor hexadecimal. Yo voy a recomendar usar el editor «le». Un editor de textos que con el parametro «-h» se convierte en un editor hexadecimal.
Distros como Debian tienen «le» en sus repositorios.
El proceso es el siguiente:
# le -h /usr/local/share/xcpc/roms/cpc464.rom
Abrimos con el editor hexadecimal el archivo cpc464.rom y bajamos con el cursor hasta encontrar la parte que pone 1984 y más texto.
Allí sustituiremos lo que queramos teniendo en cuenta que se ha de convertir de ASCII a hexadecimal (y que no existe la ñ).
Es importante activar insert (pulsando la tecla insert) al acceder ya que si no lo hacemos lo mismo vamos a estar desplazando información.
Con control + x se puede salir del editor y preguntará si queremos guardar los cambios.
Si todo va bien y ejecutamos ese modelo con xcpc (el cpc464) veremos algo así como esto:
Escribir un hola mundo en Locomotive Basic:
Antes de nada es bueno saber que para limpiar la pantalla se puede usar CLS.
Para picar el programa se ha de indicar 10, 20, 30, … y con RUN se ejecuta.
Ejemplo:
10 SALUDO$="HOLA MUNDO MUNDIAL" 20 PRINT SALUDO$ RUN
Para conocer más sobre Locomotive BASIC y practicar haciendo algunos programas aquí dejo esté enlace: www.cpcwiki.eu/index.php/Locomotive_BASIC
Saludos cordiales.