2016-11-28 01:11:12 +00:00
|
|
|
macro
|
|
|
|
&l add4 &m1,&m2,&m3
|
|
|
|
lclb &yistwo
|
|
|
|
lclc &c
|
|
|
|
&l ~setm
|
|
|
|
aif c:&m3,.a
|
|
|
|
&c amid "&m2",1,1
|
|
|
|
aif "&c"<>"#",.a
|
|
|
|
&c amid "&m1",1,1
|
|
|
|
aif "&c"="{",.a
|
|
|
|
aif "&c"="[",.a
|
|
|
|
&c amid "&m2",2,l:&m2-1
|
|
|
|
aif &c>=65536,.a
|
|
|
|
clc
|
|
|
|
~lda &m1
|
|
|
|
~op adc,&m2
|
|
|
|
~sta &m1
|
|
|
|
bcc ~&SYSCNT
|
|
|
|
~op.h inc,&m1
|
|
|
|
~&SYSCNT anop
|
|
|
|
ago .c
|
|
|
|
.a
|
|
|
|
aif c:&m3,.b
|
|
|
|
lclc &m3
|
|
|
|
&m3 setc &m1
|
|
|
|
.b
|
|
|
|
clc
|
|
|
|
~lda &m1
|
|
|
|
~op adc,&m2
|
|
|
|
~sta &m3
|
|
|
|
~lda.h &m1
|
|
|
|
~op.h adc,&m2
|
|
|
|
~sta.h &m3
|
|
|
|
.c
|
|
|
|
~restm
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l inc4 &a
|
|
|
|
&l ~setm
|
|
|
|
inc &a
|
|
|
|
bne ~&SYSCNT
|
|
|
|
inc 2+&a
|
|
|
|
~&SYSCNT ~restm
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l long &a,&b
|
|
|
|
lclb &i
|
|
|
|
lclb &m
|
|
|
|
&a amid &a,1,1
|
|
|
|
&m setb ("&a"="M").or.("&a"="m")
|
|
|
|
&i setb ("&a"="I").or.("&a"="i")
|
|
|
|
aif c:&b=0,.a
|
|
|
|
&b amid &b,1,1
|
|
|
|
&m setb ("&b"="M").or.("&b"="m").or.&m
|
|
|
|
&i setb ("&b"="I").or.("&b"="i").or.&i
|
|
|
|
.a
|
|
|
|
&l rep #&m*32+&i*16
|
|
|
|
aif .not.&m,.b
|
|
|
|
longa on
|
|
|
|
.b
|
|
|
|
aif .not.&i,.c
|
|
|
|
longi on
|
|
|
|
.c
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ph2 &n1
|
|
|
|
&l anop
|
|
|
|
aif "&n1"="*",.f
|
|
|
|
lclc &c
|
|
|
|
&c amid &n1,1,1
|
|
|
|
aif "&c"="#",.d
|
|
|
|
aif s:longa=1,.a
|
|
|
|
rep #%00100000
|
|
|
|
.a
|
|
|
|
aif "&c"<>"{",.b
|
|
|
|
&c amid &n1,l:&n1,1
|
|
|
|
aif "&c"<>"}",.g
|
|
|
|
&n1 amid &n1,2,l:&n1-2
|
|
|
|
lda (&n1)
|
|
|
|
pha
|
|
|
|
ago .e
|
|
|
|
.b
|
|
|
|
aif "&c"="<",.c
|
|
|
|
lda &n1
|
|
|
|
pha
|
|
|
|
ago .e
|
|
|
|
.c
|
|
|
|
&n1 amid &n1,2,l:&n1-1
|
|
|
|
pei &n1
|
|
|
|
ago .e
|
|
|
|
.d
|
|
|
|
&n1 amid &n1,2,l:&n1-1
|
|
|
|
pea &n1
|
|
|
|
ago .f
|
|
|
|
.e
|
|
|
|
aif s:longa=1,.f
|
|
|
|
sep #%00100000
|
|
|
|
.f
|
|
|
|
mexit
|
|
|
|
.g
|
|
|
|
mnote "Missing closing '}'",16
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l short &a,&b
|
|
|
|
lclb &i
|
|
|
|
lclb &m
|
|
|
|
&a amid &a,1,1
|
|
|
|
&m setb ("&a"="M").or.("&a"="m")
|
|
|
|
&i setb ("&a"="I").or.("&a"="i")
|
|
|
|
aif c:&b=0,.a
|
|
|
|
&b amid &b,1,1
|
|
|
|
&m setb ("&b"="M").or.("&b"="m").or.&m
|
|
|
|
&i setb ("&b"="I").or.("&b"="i").or.&i
|
|
|
|
.a
|
|
|
|
&l sep #&m*32+&i*16
|
|
|
|
aif .not.&m,.b
|
|
|
|
longa off
|
|
|
|
.b
|
|
|
|
aif .not.&i,.c
|
|
|
|
longi off
|
|
|
|
.c
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~lda &op
|
|
|
|
lclc &c
|
|
|
|
&c amid "&op",1,1
|
|
|
|
aif "&c"<>"{",.b
|
|
|
|
&c amid "&op",l:&op,1
|
|
|
|
aif "&c"="}",.a
|
|
|
|
mnote "Missing closing '}'",2
|
|
|
|
&op setc &op}
|
|
|
|
.a
|
|
|
|
&op amid "&op",2,l:&op-2
|
|
|
|
&op setc (&op)
|
|
|
|
.b
|
|
|
|
&l lda &op
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~lda.h &op
|
|
|
|
&l anop
|
|
|
|
lclc &c
|
|
|
|
&c amid "&op",1,1
|
|
|
|
aif "&c"="[",.b
|
|
|
|
aif "&c"<>"{",.d
|
|
|
|
&c amid "&op",l:&op,1
|
|
|
|
aif "&c"="}",.a
|
|
|
|
mnote "Missing closing '}'",2
|
|
|
|
&op setc &op}
|
|
|
|
.a
|
|
|
|
&op amid "&op",2,l:&op-2
|
|
|
|
&op setc (&op)
|
|
|
|
.b
|
|
|
|
aif &yistwo,.c
|
|
|
|
&yistwo setb 1
|
|
|
|
ldy #2
|
|
|
|
.c
|
|
|
|
&op setc "&op,y"
|
|
|
|
lda &op
|
|
|
|
mexit
|
|
|
|
.d
|
|
|
|
aif "&c"<>"#",.e
|
|
|
|
&op amid "&op",2,l:&op-1
|
|
|
|
&op setc "#^&op"
|
|
|
|
lda &op
|
|
|
|
mexit
|
|
|
|
.e
|
|
|
|
lda 2+&op
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~op &opc,&op
|
|
|
|
lclc &c
|
|
|
|
&c amid "&op",1,1
|
|
|
|
aif "&c"<>"{",.b
|
|
|
|
&c amid "&op",l:&op,1
|
|
|
|
aif "&c"="}",.a
|
|
|
|
mnote "Missing closing '}'",2
|
|
|
|
&op setc &op}
|
|
|
|
.a
|
|
|
|
&op amid "&op",2,l:&op-2
|
|
|
|
&op setc (&op)
|
|
|
|
.b
|
|
|
|
&l &opc &op
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~op.h &opc,&op
|
|
|
|
&l anop
|
|
|
|
lclc &c
|
|
|
|
&c amid "&op",1,1
|
|
|
|
aif "&c"="[",.b
|
|
|
|
aif "&c"<>"{",.d
|
|
|
|
&c amid "&op",l:&op,1
|
|
|
|
aif "&c"="}",.a
|
|
|
|
mnote "Missing closing '}'",2
|
|
|
|
&op setc &op}
|
|
|
|
.a
|
|
|
|
&op amid "&op",2,l:&op-2
|
|
|
|
&op setc (&op)
|
|
|
|
.b
|
|
|
|
aif &yistwo,.c
|
|
|
|
&yistwo setb 1
|
|
|
|
ldy #2
|
|
|
|
.c
|
|
|
|
&op setc "&op,y"
|
|
|
|
&opc &op
|
|
|
|
mexit
|
|
|
|
.d
|
|
|
|
aif "&c"<>"#",.e
|
|
|
|
&op amid "&op",2,l:&op-1
|
|
|
|
&op setc "#^&op"
|
|
|
|
&opc &op
|
|
|
|
mexit
|
|
|
|
.e
|
|
|
|
&opc 2+&op
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~restm
|
|
|
|
&l anop
|
|
|
|
aif (&~la+&~li)=2,.i
|
|
|
|
sep #32*(.not.&~la)+16*(.not.&~li)
|
|
|
|
aif &~la,.h
|
|
|
|
longa off
|
|
|
|
.h
|
|
|
|
aif &~li,.i
|
|
|
|
longi off
|
|
|
|
.i
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~setm
|
|
|
|
&l anop
|
|
|
|
aif c:&~la,.b
|
|
|
|
gblb &~la
|
|
|
|
gblb &~li
|
|
|
|
.b
|
|
|
|
&~la setb s:longa
|
|
|
|
&~li setb s:longi
|
|
|
|
aif s:longa.and.s:longi,.a
|
|
|
|
rep #32*(.not.&~la)+16*(.not.&~li)
|
|
|
|
longa on
|
|
|
|
longi on
|
|
|
|
.a
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~sta &op
|
|
|
|
lclc &c
|
|
|
|
&c amid "&op",1,1
|
|
|
|
aif "&c"<>"{",.b
|
|
|
|
&c amid "&op",l:&op,1
|
|
|
|
aif "&c"="}",.a
|
|
|
|
mnote "Missing closing '}'",2
|
|
|
|
&op setc &op}
|
|
|
|
.a
|
|
|
|
&op amid "&op",2,l:&op-2
|
|
|
|
&op setc (&op)
|
|
|
|
.b
|
|
|
|
&l sta &op
|
|
|
|
mend
|
|
|
|
macro
|
|
|
|
&l ~sta.h &op
|
|
|
|
&l anop
|
|
|
|
lclc &c
|
|
|
|
&c amid "&op",1,1
|
|
|
|
aif "&c"="[",.b
|
|
|
|
aif "&c"<>"{",.d
|
|
|
|
&c amid "&op",l:&op,1
|
|
|
|
aif "&c"="}",.a
|
|
|
|
mnote "Missing closing '}'",2
|
|
|
|
&op setc &op}
|
|
|
|
.a
|
|
|
|
&op amid "&op",2,l:&op-2
|
|
|
|
&op setc (&op)
|
|
|
|
.b
|
|
|
|
aif &yistwo,.c
|
|
|
|
&yistwo setb 1
|
|
|
|
ldy #2
|
|
|
|
.c
|
|
|
|
&op setc "&op,y"
|
|
|
|
sta &op
|
|
|
|
mexit
|
|
|
|
.d
|
|
|
|
sta 2+&op
|
|
|
|
mend
|