miércoles, septiembre 30, 2015

Pasmo: un ensamblador cruzado para Amstrad CPC

Me he animado a continuar con una pequeña serie sobre algunas cosas que he probado con el emulador de Amstrad CPC, por pura diversión. Esta entrada está dedicada a la instalación y uso de pasmo un ensamblador de Z80 creado por Julian Albo que nos va a permitir generar programas para usar en cualquier emulador de Amstrad CPC. Se instala en cualquier Unix de manera sencilla:

$ wget http://pasmo.speccy.org/bin/pasmo-0.5.4.beta2.tgz
$ tar zxvf pasmo-0.5.4.beta2.tgz
$ cd pasmo-0.5.4.beta2
$ ./configure --prefix=/usr/local
$ make
$ su
# make install

pasmo es un macro ensamblador que nos permite generar ficheros de código máquina en multitud de formatos de antiguas máquinas de 8 bits. Su sintaxis es muy similar al clásico de los 80 GEN3 de Hisoft. Permite macros, definiciones o ensamblado condicional. La documentación está en el fichero HTML pasmodoc.html.

Ensamblar un fichero es muy sencillo. Luego lo podemos transferir a nuestra imagen de disco y montarla en el emulador para ejecutar el programa que hemos ensamblado.

$ pasmo --amsdos mode.asm mode.bin
$ cpmcp imagen.dsk 0:mode.bin

El contenido del fichero mode.asm es un sencillo programa que se carga en la dirección #A000 e imprime el mensaje esto es una prueba

org #A000
        LD HL, MENSAJE
LOOP:   LD A, (HL)
        OR A
        RET Z
        PUSH HL
        CALL #BB5A
        POP HL
        INC HL
        JP LOOP
MENSAJE: DEFM 'Esto es un mensaje de prueba',0
Para cargarlo desde BASIC
MEMORY &9FFF
LOAD "mode.bin",&A000
CALL &A000

No hay comentarios: