Categorías
Ensamblador pasmo Programación

Hola mundo en .bin y .rom con ensamblador pasmo

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:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *