mirror of
https://github.com/cc65/cc65.git
synced 2024-11-18 15:05:14 +00:00
321 lines
6.8 KiB
PHP
321 lines
6.8 KiB
PHP
;
|
|
;GEOS macros
|
|
;reassembled for 6502TASM/MMS by Maciej 'YTM/Elysium' Witkowiak
|
|
;4-2-99
|
|
|
|
;28-6-99 - ca65 port
|
|
;macro 'sub' renamed to 'ssub' due to 65816 mnemonics
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro LoadB dest, value
|
|
lda #value
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro LoadW dest, value
|
|
LoadB dest+1, >(value)
|
|
LoadB dest+0, <(value)
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro MoveB source, dest
|
|
lda source
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro MoveW source, dest
|
|
MoveB source+1, dest+1
|
|
MoveB source+0, dest+0
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro add source
|
|
clc
|
|
adc source
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro AddB source, dest
|
|
lda source
|
|
add dest
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro AddW source, dest
|
|
AddB source+0, dest+0
|
|
lda source+1
|
|
adc dest+1
|
|
sta dest+1
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro AddVB value, dest
|
|
lda dest
|
|
clc
|
|
adc #(value)
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro AddVW value, dest
|
|
.local Skip
|
|
AddVB <(value), dest+0
|
|
.if (>(value))=0
|
|
bcc Skip
|
|
inc dest+1
|
|
.else
|
|
lda #>(value)
|
|
adc dest+1
|
|
sta dest+1
|
|
.endif
|
|
Skip:
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro ssub source
|
|
sec
|
|
sbc source
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro SubB source, dest
|
|
lda dest
|
|
ssub source
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro SubW source, dest
|
|
SubB source+0, dest+0
|
|
lda dest+1
|
|
sbc source+1
|
|
sta dest+1
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro SubVW value, dest
|
|
sec
|
|
lda dest+0
|
|
sbc #<(value)
|
|
sta dest+0
|
|
lda dest+1
|
|
sbc #>(value)
|
|
sta dest+1
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro CmpB source, dest
|
|
lda source
|
|
cmp dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro CmpBI source, immed
|
|
lda source
|
|
cmp #(immed)
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro CmpW source, dest
|
|
.local Skip
|
|
CmpB source+1, dest+1
|
|
bne Skip
|
|
CmpB source+0, dest+0
|
|
Skip:
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro CmpWI source, immed
|
|
.local Skip
|
|
CmpBI source+1, >(immed)
|
|
bne Skip
|
|
CmpBI source+0, <(immed)
|
|
Skip:
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro PushB source
|
|
lda source
|
|
pha
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro PushW source
|
|
PushB source+1
|
|
PushB source+0
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro PopB dest
|
|
pla
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro PopW dest
|
|
PopB dest+0
|
|
PopB dest+1
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro smb bitNumber, dest
|
|
pha
|
|
lda #(1 << bitNumber)
|
|
ora dest
|
|
sta dest
|
|
pla
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro smbf bitNumber, dest
|
|
lda #(1 << bitNumber)
|
|
ora dest
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro rmb bitNumber, dest
|
|
pha
|
|
lda #(1 << bitNumber) ^ $ff
|
|
and dest
|
|
sta dest
|
|
pla
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro rmbf bitNumber, dest
|
|
lda #(1 << bitNumber) ^ $ff
|
|
and dest
|
|
sta dest
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro bbs bitNumber, source, addr
|
|
.local Skip
|
|
php
|
|
pha
|
|
lda source
|
|
and #(1 << bitNumber)
|
|
beq Skip
|
|
pla
|
|
plp
|
|
bra addr
|
|
Skip: pla
|
|
plp
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro bbsf bitNumber, source, addr
|
|
.if bitNumber=7
|
|
bit source
|
|
bmi addr
|
|
.else
|
|
.if bitNumber=6
|
|
bit source
|
|
bvs addr
|
|
.else
|
|
lda source
|
|
and #(1 << bitNumber)
|
|
bne addr
|
|
.endif
|
|
.endif
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro bbr bitNumber, source, addr
|
|
.local Skip
|
|
php
|
|
pha
|
|
lda source
|
|
and #(1 << bitNumber)
|
|
bne Skip
|
|
pla
|
|
plp
|
|
bra addr
|
|
Skip: pla
|
|
plp
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro bbrf bitNumber, source, addr
|
|
.if bitNumber=7
|
|
bit source
|
|
bpl addr
|
|
.else
|
|
.if bitNumber=6
|
|
bit source
|
|
bvc addr
|
|
.else
|
|
lda source
|
|
and #(1 << bitNumber)
|
|
beq addr
|
|
.endif
|
|
.endif
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
;03.03.99 by Maciej Witkowiak
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro addv value
|
|
clc
|
|
adc #(value)
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro subv value
|
|
sec
|
|
sbc #(value)
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro bnex addr
|
|
txa
|
|
bne addr
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|
|
|
|
.macro beqx addr
|
|
txa
|
|
beq addr
|
|
.endmacro
|
|
|
|
;-------------------------------------------------------------------------
|