Referencias
Para la descarga: http://pasmo.speccy.org/
Para la documentación ir a: http://pasmo.speccy.org/pasmodoc.html
Creando un .bin
Creamos una carpeta por ejemplo “pasmo”, dentro le pegamos el ejecutable de pasmo, descárgate el proyecto con el pasmo metido pinchando aquí.
Después creamos un archivo, lo llamamos “hola.asm”, le pegamos este código:
CHPUT: equ #00A2 ; CHPUT es solo una etiqueta que se pone para no estar llamado a la subrutina 0042h ; Muestra un carácter ; MSX-1 BIOS subrutines ; Definiciones de subrutinas creadas para la bios ; http://map.grauw.nl/resources/msxbios.php org 33280-7 ;Le ponemos -7 porque no queremos queremos que cuente los ytes de la cabecera ;esto es oblgatorio para definir la cabecera de un archivo BIN ; https://www.faq.msxnet.org/suffix.html header: db 0xfe dw INICIO dw FINAL - 1 dw MAIN INICIO: MAIN: ld hl,mensaje ; Almacena en los registro hl del z80 la dirección donde está la variable con el texto. call Print ; llama a la rutina o método. ret ; devuelve el control a Basic. ;método print Print: ld a,(hl) ; Lee el 1 byte de la dirección de la memoria indicada y lo almacena en el registro a del z80. and a ; Actualiza la bandera z del registro F del z80 y la pone en 0 si no hay valor, and a también actualiza el flag c, p, v y s. ret z ; Devuelve el cotrol al Main si la bandera z del registro F del z80 es 0 call CHPUT ; Llama a la subrutina 0042h de la Bios la cual imprime el caracter almacenado en el registro a del z80 inc hl ; incrementa el puntero de los registros hl para que señale al siguiente byte jr Print ; Llama al métdo print para que lo vuelva a ejecutar mensaje: db "Hola soy MSX, claro, pijo!! ",0 ; Crea una dirección en la memoria con la etiqueta mensaje, el cero indica el fin del texto FINAL:
Para ensamblar tienes que poner “pasmo nombe_archivo.asm nombre_archivo.bin”, por defecto el le pone el parámetro –bin (como dice la documentación), compilamos:
Nos creará el hola.bin:
Abrimos nuestro catapult-openMSX y pinchamos en Disk A y elegimos browse to disk folder y seleccionamos la carpeta de nuestro proyecto, al abrir el emulador ponemos bload”hola.bin”:
Creando un .rom con pasmo
Creamos un nuevo archivo, lo llamamos “hola_rom.asm” y le poneos este código:
org 0x4000 header: db "AB" dw INICIO dw 0,0,0,0,0,0 INICIO: ld hl,mensaje ; Almacena en los registro hl del z80 la dirección donde está la variable con el texto. call Print ; llama a la rutina o método. jr $ ;método print Print: ld a,(hl) ; Lee el 1 byte de la dirección de la memoria indicada y lo almacena en el registro a del z80. and a ; Actualiza la bandera z del registro F del z80 y la pone en 0 si no hay valor, and a también actualiza el flag c, p, v y s. ret z ; Devuelve el cotrol al Main si la bandera z del registro F del z80 es 0 call CHPUT ; Llama a la subrutina 0042h de la Bios la cual imprime el caracter almacenado en el registro a del z80 inc hl ; incrementa el puntero de los registros hl para que señale al siguiente byte jr Print ; Llama al métdo print para que lo vuelva a ejecutar CHPUT: equ #00A2 mensaje: db "Hola soy MSX, claro, pijo!! ",0 ; Crea una dirección en la memoria con la etiqueta mensaje, el cero indica el fin del texto FINAL:
Al compilar te generará el “hola_rom.rom”:
Ahora lo abrimos con catapult-openMSX: