;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 bra addr clv bvc addr .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