mirror of
https://github.com/mi57730/a2d.git
synced 2024-12-01 05:50:24 +00:00
more 16-bit macro fun
This commit is contained in:
parent
3b2ce9c66b
commit
9fd1991945
@ -620,13 +620,7 @@ L939E: .addr 0 ; $00
|
||||
bne :-
|
||||
|
||||
;; Point ($06) at call command
|
||||
lda call_params
|
||||
clc
|
||||
adc #<1
|
||||
sta $06
|
||||
lda call_params+1
|
||||
adc #>1
|
||||
sta $07
|
||||
add16 call_params, #1, $06
|
||||
|
||||
ldy #0
|
||||
lda ($06),y
|
||||
@ -1655,13 +1649,7 @@ L9CAA: lda L9C76
|
||||
lda #$00
|
||||
rts
|
||||
|
||||
L9CBD: lda #$00
|
||||
sec
|
||||
sbc L9C86
|
||||
sta L9C96
|
||||
lda #$00
|
||||
sbc L9C87
|
||||
sta L9C97
|
||||
L9CBD: sub16 #0, L9C86, L9C96
|
||||
jmp L9CF5
|
||||
|
||||
L9CD1: lda L9C7A
|
||||
@ -1673,13 +1661,7 @@ L9CD1: lda L9C7A
|
||||
lda #$00
|
||||
rts
|
||||
|
||||
L9CE4: lda #$30
|
||||
sec
|
||||
sbc L9C8A
|
||||
sta L9C96
|
||||
lda #$02
|
||||
sbc L9C8B
|
||||
sta L9C97
|
||||
L9CE4: sub16 #$230, L9C8A, L9C96
|
||||
L9CF5: add16 L9C86, L9C96, L9C76
|
||||
add16 L9C8A, L9C96, L9C7A
|
||||
add16 L9C8E, L9C96, L9C8E
|
||||
@ -1695,13 +1677,7 @@ L9D31: lda L9C78
|
||||
lda #$00
|
||||
rts
|
||||
|
||||
L9D44: lda #$0D
|
||||
sec
|
||||
sbc L9C88
|
||||
sta L9C98
|
||||
lda #$00
|
||||
sbc L9C89
|
||||
sta L9C99
|
||||
L9D44: sub16 #$0D, L9C88, L9C98
|
||||
jmp L9D7C
|
||||
|
||||
L9D58: lda L9C7C
|
||||
@ -1713,41 +1689,23 @@ L9D58: lda L9C7C
|
||||
lda #$00
|
||||
rts
|
||||
|
||||
L9D6B: lda #$BF
|
||||
sec
|
||||
sbc L9C8C
|
||||
sta L9C98
|
||||
lda #$00
|
||||
sbc L9C8D
|
||||
sta L9C99
|
||||
L9D6B: sub16 #$BF, L9C8C, L9C98
|
||||
L9D7C: add16 L9C88, L9C98, L9C78
|
||||
add16 L9C8C, L9C98, L9C7C
|
||||
add16 L9C90, L9C98, L9C90
|
||||
lda #$FF
|
||||
rts
|
||||
|
||||
L9DB8: lda L9C86
|
||||
sta L9C76
|
||||
lda L9C87
|
||||
sta L9C77
|
||||
lda L9C8A
|
||||
sta L9C7A
|
||||
lda L9C8B
|
||||
sta L9C7B
|
||||
lda #$00
|
||||
L9DB8: copy16 L9C86, L9C76
|
||||
copy16 L9C8A, L9C7A
|
||||
lda #0
|
||||
sta L9C96
|
||||
sta L9C97
|
||||
rts
|
||||
|
||||
L9DD9: lda L9C88
|
||||
sta L9C78
|
||||
lda L9C89
|
||||
sta L9C79
|
||||
lda L9C8C
|
||||
sta L9C7C
|
||||
lda L9C8D
|
||||
sta L9C7D
|
||||
lda #$00
|
||||
L9DD9: copy16 L9C88, L9C78
|
||||
copy16 L9C8C, L9C7C
|
||||
lda #0
|
||||
sta L9C98
|
||||
sta L9C99
|
||||
rts
|
||||
@ -2929,8 +2887,8 @@ LA846: jsr pop_zp_addrs
|
||||
adc grafport4::viewloc::xcoord
|
||||
sta LA6C3
|
||||
lda grafport4::viewloc::xcoord+1
|
||||
adc LA6C4
|
||||
sta LA6C4
|
||||
adc LA6C3+1
|
||||
sta LA6C3+1
|
||||
add16 LA6C5, grafport4::viewloc::ycoord, LA6C5
|
||||
cmp16 setportbits_params2::cliprect::x2, LA6C3
|
||||
bmi LA8B7
|
||||
@ -2956,7 +2914,7 @@ LA8F6: cmp16 LA6C5, setportbits_params2::cliprect::y2
|
||||
adc #2
|
||||
sta setportbits_params2::cliprect::y1
|
||||
sta setportbits_params2::viewloc::ycoord
|
||||
lda LA6C6
|
||||
lda LA6C5+1
|
||||
adc #0
|
||||
sta setportbits_params2::cliprect::y1+1
|
||||
sta setportbits_params2::viewloc::ycoord+1
|
||||
@ -2972,20 +2930,8 @@ LA923: lda setportbits_params2::cliprect::x2
|
||||
sta setportbits_params2::viewloc::xcoord+1
|
||||
jmp LA753
|
||||
|
||||
LA938: lda grafport4::viewloc::ycoord
|
||||
clc
|
||||
adc #15
|
||||
sta grafport4::viewloc::ycoord
|
||||
lda grafport4::viewloc::ycoord+1
|
||||
adc #0
|
||||
sta grafport4::viewloc::ycoord+1
|
||||
lda grafport4::cliprect::y1
|
||||
clc
|
||||
adc #15
|
||||
sta grafport4::cliprect::y1
|
||||
lda grafport4::cliprect::y1+1
|
||||
adc #0
|
||||
sta grafport4::cliprect::y1+1
|
||||
LA938: add16 grafport4::viewloc::ycoord, #15, grafport4::viewloc::ycoord
|
||||
add16 grafport4::cliprect::y1, #15, grafport4::cliprect::y1
|
||||
MGTK_CALL MGTK::SetPort, grafport4
|
||||
rts
|
||||
|
||||
@ -11472,13 +11418,7 @@ L73C1: lda $08+1
|
||||
lda $E1F1
|
||||
asl a
|
||||
tax
|
||||
lda L485F
|
||||
sec
|
||||
sbc $E202,x
|
||||
sta L7447
|
||||
lda L485F+1
|
||||
sbc $E203,x
|
||||
sta L7447+1
|
||||
sub16 L485F, $E202,x, L7447
|
||||
inc L7446
|
||||
L73ED: lda L7446
|
||||
cmp $E1F1
|
||||
@ -11510,13 +11450,7 @@ L7429: lda $E1F1
|
||||
sbc #$01
|
||||
asl a
|
||||
tax
|
||||
lda $E202,x
|
||||
clc
|
||||
adc L7447
|
||||
sta L485F
|
||||
lda $E203,x
|
||||
adc L7447+1
|
||||
sta L485F+1
|
||||
add16 $E202,x, L7447, L485F
|
||||
rts
|
||||
L7445: .byte 0
|
||||
L7446: .byte 0
|
||||
@ -14311,40 +14245,16 @@ L8C8C: lsr16 L8D50
|
||||
tax
|
||||
bit L8D4E
|
||||
bpl L8CC9
|
||||
lda L0800
|
||||
sec
|
||||
sbc L8D50
|
||||
sta L0800,x
|
||||
lda $0801
|
||||
sbc L8D51
|
||||
sta $0801,x
|
||||
sub16 L0800, L8D50, L0800,x
|
||||
jmp L8CDC
|
||||
|
||||
L8CC9: lda L0800
|
||||
clc
|
||||
adc L8D50
|
||||
sta L0800,x
|
||||
lda $0801
|
||||
adc L8D51
|
||||
sta $0801,x
|
||||
L8CC9: add16 L0800, L8D50, L0800,x
|
||||
L8CDC: bit L8D4F
|
||||
bpl L8CF7
|
||||
lda $0802
|
||||
sec
|
||||
sbc L8D52
|
||||
sta $0802,x
|
||||
lda $0803
|
||||
sbc L8D53
|
||||
sta $0803,x
|
||||
sub16 $0802, L8D52, $0802,x
|
||||
jmp L8D0A
|
||||
|
||||
L8CF7: lda $0802
|
||||
clc
|
||||
adc L8D52
|
||||
sta $0802,x
|
||||
lda $0803
|
||||
adc L8D53
|
||||
sta $0803,x
|
||||
L8CF7: add16 $0802, L8D52, $0802,x
|
||||
L8D0A: lda L0800,x
|
||||
clc
|
||||
adc L8D54
|
||||
@ -14352,6 +14262,7 @@ L8D0A: lda L0800,x
|
||||
lda $0801,x
|
||||
adc L8D55
|
||||
sta $0805,x
|
||||
|
||||
lda $0802,x
|
||||
clc
|
||||
adc L8D56
|
||||
@ -14359,6 +14270,7 @@ L8D0A: lda L0800,x
|
||||
lda $0803,x
|
||||
adc L8D57
|
||||
sta $0807,x
|
||||
|
||||
inc L8D4D
|
||||
lda L8D4D
|
||||
cmp #$0A
|
||||
@ -18616,13 +18528,7 @@ create_window_with_alert_bitmap:
|
||||
sta textlen
|
||||
MGTK_RELAY_CALL MGTK::TextWidth, textwidth_params
|
||||
lsr16 result
|
||||
lda #<200
|
||||
sec
|
||||
sbc result
|
||||
sta dialog_label_pos
|
||||
lda #>200
|
||||
sbc result+1
|
||||
sta dialog_label_pos+1
|
||||
sub16 #200, result, dialog_label_pos
|
||||
pla
|
||||
tay
|
||||
|
||||
@ -19505,13 +19411,7 @@ LBE28: sta str_7_spaces+2,y
|
||||
jmp LBDFE
|
||||
|
||||
LBE35: inc LBE61
|
||||
lda LBE5F
|
||||
sec
|
||||
sbc LBE57,x
|
||||
sta LBE5F
|
||||
lda LBE5F+1
|
||||
sbc LBE57+1,x
|
||||
sta LBE5F+1
|
||||
sub16 LBE5F, LBE57,x, LBE5F
|
||||
jmp LBE03
|
||||
|
||||
LBE4E: lda LBE5F
|
||||
|
71
macros.inc
71
macros.inc
@ -104,21 +104,51 @@
|
||||
;;; Add arg1 to arg2, store to arg3
|
||||
;;; add16 $1111, $2222, $3333 ; absolute, absolute, absolute
|
||||
;;; add16 $1111, #$2222, $3333 ; absolute, immediate, absolute
|
||||
.macro add16 aa, arg2, arg3
|
||||
.if is_immediate {arg2}
|
||||
lda aa
|
||||
;;; add16 $1111,x, $2222, $3333 ; indexed, absolute, absolute
|
||||
;;; add16 $1111,y, $2222, $3333 ; indexed, absolute, absolute
|
||||
;;; add16 $1111, $2222,x, $3333 ; absolute, indexed, absolute
|
||||
;;; add16 $1111, $2222,y, $3333 ; absolute, indexed, absolute
|
||||
;;; add16 $1111, $2222, $3333,x ; absolute, absolute, indexed
|
||||
;;; add16 $1111, $2222, $3333,y ; absolute, absolute, indexed
|
||||
.macro add16 arg1, arg2, arg3, arg4
|
||||
.if is_register {arg2}
|
||||
lda arg1,arg2
|
||||
clc
|
||||
adc arg3
|
||||
sta arg4
|
||||
lda arg1+1,arg2
|
||||
adc arg3+1
|
||||
sta arg4+1
|
||||
.elseif is_register {arg3}
|
||||
lda arg1
|
||||
clc
|
||||
adc arg2,arg3
|
||||
sta arg4
|
||||
lda arg1+1
|
||||
adc arg2+1,arg3
|
||||
sta arg4+1
|
||||
.elseif is_register {arg4}
|
||||
lda arg1
|
||||
clc
|
||||
adc arg2
|
||||
sta arg3,arg4
|
||||
lda arg1+1
|
||||
adc arg2+1
|
||||
sta arg3+1,arg4
|
||||
.elseif is_immediate {arg2}
|
||||
lda arg1
|
||||
clc
|
||||
adc #<(.right (.tcount ({arg2})-1, {arg2}))
|
||||
sta arg3
|
||||
lda aa+1
|
||||
lda arg1+1
|
||||
adc #>(.right (.tcount ({arg2})-1, {arg2}))
|
||||
sta arg3+1
|
||||
.else
|
||||
lda aa
|
||||
lda arg1
|
||||
clc
|
||||
adc arg2
|
||||
sta arg3
|
||||
lda aa+1
|
||||
lda arg1+1
|
||||
adc arg2+1
|
||||
sta arg3+1
|
||||
.endif
|
||||
@ -127,21 +157,24 @@
|
||||
;;; Add arg1 (absolute) to arg2 (8-bit absolute), store to arg3
|
||||
;;; add16_8 $1111, #$22, $3333 ; absolute, immediate, absolute
|
||||
;;; add16_8 $1111, $22, $3333 ; absolute, absolute, absolute
|
||||
.macro add16_8 aa, arg2, arg3
|
||||
lda aa
|
||||
.macro add16_8 arg1, arg2, arg3
|
||||
lda arg1
|
||||
clc
|
||||
adc arg2
|
||||
sta arg3
|
||||
lda aa+1
|
||||
lda arg1+1
|
||||
adc #0
|
||||
sta arg3+1
|
||||
.endmacro
|
||||
|
||||
;;; Subtract arg2 from arg1, store to arg3
|
||||
;;; sub16 #$1111, $2222, $3333 ; immediate, absolute, absolute
|
||||
;;; sub16 $1111, #$2222, $3333 ; absolute, immediate, absolute
|
||||
;;; sub16 $1111, $2222, $3333 ; absolute, absolute, absolute
|
||||
;;; sub16 $1111, $2222,x $3333 ; absolute, indexed, absolute
|
||||
;;; sub16 $1111, $2222,y $3333 ; absolute, indexed, absolute
|
||||
;;; sub16 $1111, $2222,x, $3333 ; absolute, indexed, absolute
|
||||
;;; sub16 $1111, $2222,y, $3333 ; absolute, indexed, absolute
|
||||
;;; sub16 $1111, $2222, $3333,x ; absolute, absolute, indexed
|
||||
;;; sub16 $1111, $2222, $3333,y ; absolute, absolute, indexed
|
||||
.macro sub16 arg1, arg2, arg3, arg4
|
||||
.if is_register {arg3}
|
||||
lda arg1
|
||||
@ -151,6 +184,22 @@
|
||||
lda arg1+1
|
||||
sbc arg2+1,arg3
|
||||
sta arg4+1
|
||||
.elseif is_register {arg4}
|
||||
lda arg1
|
||||
sec
|
||||
sbc arg2
|
||||
sta arg3,arg4
|
||||
lda arg1+1
|
||||
sbc arg2+1
|
||||
sta arg3+1,arg4
|
||||
.elseif is_immediate {arg1}
|
||||
lda #<(.right (.tcount ({arg1})-1, {arg1}))
|
||||
sec
|
||||
sbc arg2
|
||||
sta arg3
|
||||
lda #>(.right (.tcount ({arg1})-1, {arg1}))
|
||||
sbc arg2+1
|
||||
sta arg3+1
|
||||
.elseif is_immediate {arg2}
|
||||
lda arg1
|
||||
sec
|
||||
|
Loading…
Reference in New Issue
Block a user