33 lines
434 B
ArmAsm
33 lines
434 B
ArmAsm
![]() |
macroState=$50 ; pointer to state
|
||
|
macroAddr=$52 ; pointer to address
|
||
|
|
||
|
; macro state takes 4 bytes
|
||
|
; macroPos bits:
|
||
|
; 7: had
|
||
|
; 6: will
|
||
|
|
||
|
; x: macro
|
||
|
macroIntRun:
|
||
|
lda macroAddr,x
|
||
|
ora macroAddr+1,x
|
||
|
beq :+
|
||
|
|
||
|
; do macro
|
||
|
: rts
|
||
|
|
||
|
; set the macro address, then call
|
||
|
; x: macro
|
||
|
macroIntInit:
|
||
|
lda #0
|
||
|
sta macroState,x
|
||
|
sta macroPos,x
|
||
|
txa
|
||
|
rol
|
||
|
tax
|
||
|
lda macroAddr,x
|
||
|
ora macroAddr+1,x
|
||
|
beq :+
|
||
|
lda #$40
|
||
|
sta macroState,x
|
||
|
: rts
|