Aporte --- Macros para mac65

Para cualquier plataforma ATARI, computadores o consolas.
Responder
Avatar de Usuario
dogdark
hard player
hard player
Mensajes: 385
Registrado: Dom Nov 12, 2006 10:01 am
Reputation: 0
Ubicación: en todos lados
Contactar:

Aporte --- Macros para mac65

Mensaje por dogdark »

En este artículo, mencionaremos algunas macros que nos ayudaran en la escritura de nuestro código asm, con subrutinas de Basic.
Las macros son simple subrutinas para mac65, que permiten a través de comandos, poder ejecutar líneas de código sin tener que volver a escribir una y otra vez, ya que la macro realiza este proceso por nosotros y también puede ejecutar un trabajo que para nosotros puede ser complejo y que se nos puede olvidar o enredarnos más de una vez.
Basic, que es un traductor de código de máquina y muy fácil de usar, procesa estas subrutinas y las traspasa en forma automática para nosotros, pero al querer trabajar en asm, a nosotros los que poco conocemos de assembler se nos hace muy complicado poder llegar a concretar lo que queremos.
Acá les dejo algunas macros que nos permiten programar en assembler con código de basic, y las explicaciones respectivas.

Lo primero que tenemos que tener claro, es en que editor vamos a trabajar, si utilizaremos el editplus para hacerlo en el computador o en mac65 directamente desde el atari, acá mostraremos las dos formas de cómo se puede anexar la macro.

Lo primero que crearemos será el documento principal que lo llamaremos

prueba1.asx (editpus)
prueba1.mac (mac65)

para anexar nuestras macros lo haremos de la siguiente manera

Código: Seleccionar todo

        *=$2000
        .INCLUDE #MABASIC.ASX

Y en mac65

Código: Seleccionar todo

        *=$2000
        .INCLUDE #D:MABASIC.MAC

Ahora crearemos el documento de las macros con el nombre de

MABASIC.ASX (editplus)

MABASIC.MAC(mac65)

y vamos generando las macros, acá les dejo algunas para que peguen en MABASIC

Código: Seleccionar todo


;MACROS BASIC
;
;MACRO POKE
	.MACRO POKE
	LDA #%2
	STA %1
	.ENDM
;
;MACRO POSITION
	.MACRO POSITION
	LDA #%1
	STA 85
	LDA #%2
	STA 84
	.ENDM
;
;MACRO GOSUB
	.MACRO GOSUB
	JSR %1
	.ENDM
;
;MACRO GOTO
	.MACRO GOTO
	JMP %1
	.ENDM
;
;MACRO RETURN
	.MACRO RETURN
	RTS
	.ENDM

Cómo funcionan las macros, muy simple, volvamos nuevamente a nuestro documento principal llamado prueba1 y crearemos un ejemplo.

Código: Seleccionar todo

        *=$2000
        .OPT NO LIST
        .INCLUDE #D:MABASIC.MAC
        .OPT LIST
;ejemplo con macros
INICIO
        ;LLAMAMOS A LA SUBRUTINA POKE
        POKE 710,0
LOOP
       GOTO LOOP
       *=$2E0
       .WORD INICIO
Explicamos el código.
*=$2000 posicion de la pagina de donde comenzara a ejecer.
.OPT NO LIST no permite que se muestre en pantalla el listado al compilar
.INCLUDE #D:MABASIC.MAC en elcaso de mac65 nos incluye el código a la hoja actual.
INICIO Label donde se iniciará el proceso
POKE 710,0 subrutina que coloca la pantalla en negro
LOOP Label para generar un ciclo cerrado
GOTO LOOP salta a la posición que queremos.

para ensamblar los codigos

editplus CONTROL+1
en mac65 ASM,,#D:PRUEBA.EXE

y quedaria algo asi

en editplus

Código: Seleccionar todo


        *=$2000
        .OPT LIST
;ejemplo con macros
INICIO
        ;LLAMAMOS A LA SUBRUTINA POKE
        POKE 710,0
    M LDA #%2
    M STA %1
LOOP
       GOTO LOOP
       JMP %1
       *=$2E0
       .WORD INICIO

Bueno si tienen más ideas que aportar, son siempre bienvenidas.

Avatar de Usuario
BonesCollector
expert
expert
Mensajes: 3311
Registrado: Vie Nov 10, 2006 7:02 pm
Reputation: 1
Ubicación: Santiago de Chile

Re: Aporte --- Macros para mac65

Mensaje por BonesCollector »

y yo que solo puedo hacer ;,(

10 print "hola"
20 goto 10

buen aporte

Avatar de Usuario
dogdark
hard player
hard player
Mensajes: 385
Registrado: Dom Nov 12, 2006 10:01 am
Reputation: 0
Ubicación: en todos lados
Contactar:

Re: Aporte --- Macros para mac65

Mensaje por dogdark »

En éste caso para grafica 0 de basic puedes hacer una macro de print

Código: Seleccionar todo

       .MACRO PRINT
       LDX #<%1
       LDY #>%1
       JSR $C642
       .ENDM

Y la aplicas

Código: Seleccionar todo

....

INICIO
         PRINT HOLA MUNDO
LOOP
        GOTO LOOP
......


Responder