mirror of
https://github.com/byteworksinc/ORCALib.git
synced 2025-04-22 04:37:26 +00:00
This is documented in TBR3 and is already declared in <misctool.h>, but did not previously have glue code. TBR3 says "Applications should never make this call," but it may be useful in system utilities.
392 lines
4.4 KiB
Plaintext
392 lines
4.4 KiB
Plaintext
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 ph4 &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
|
|
ldy #2
|
|
lda (&n1),y
|
|
pha
|
|
lda (&n1)
|
|
pha
|
|
ago .e
|
|
.b
|
|
aif "&c"<>"[",.c
|
|
ldy #2
|
|
lda &n1,y
|
|
pha
|
|
lda &n1
|
|
pha
|
|
ago .e
|
|
.c
|
|
aif "&c"<>"<",.c1
|
|
&n1 amid &n1,2,l:&n1-1
|
|
pei &n1+2
|
|
pei &n1
|
|
ago .e
|
|
.c1
|
|
lda &n1+2
|
|
pha
|
|
lda &n1
|
|
pha
|
|
ago .e
|
|
.d
|
|
&n1 amid &n1,2,l:&n1-1
|
|
pea +(&n1)|-16
|
|
pea &n1
|
|
ago .f
|
|
.e
|
|
aif s:longa=1,.f
|
|
sep #%00100000
|
|
.f
|
|
mexit
|
|
.g
|
|
mnote "Missing closing '}'",16
|
|
mend
|
|
MACRO
|
|
&LAB LLA &AD1,&AD2
|
|
&LAB ANOP
|
|
LCLA &L
|
|
LCLB &LA
|
|
AIF S:LONGA,.A
|
|
REP #%00100000
|
|
LONGA ON
|
|
&LA SETB 1
|
|
.A
|
|
LDA #&AD2
|
|
&L SETA C:&AD1
|
|
.B
|
|
STA &AD1(&L)
|
|
&L SETA &L-1
|
|
AIF &L,^B
|
|
LDA #^&AD2
|
|
&L SETA C:&AD1
|
|
.C
|
|
STA 2+&AD1(&L)
|
|
&L SETA &L-1
|
|
AIF &L,^C
|
|
AIF &LA=0,.D
|
|
SEP #%00100000
|
|
LONGA OFF
|
|
.D
|
|
MEND
|
|
MACRO
|
|
&LAB PL2 &N1
|
|
LCLC &C
|
|
&LAB ANOP
|
|
AIF S:LONGA=1,.A
|
|
REP #%00100000
|
|
.A
|
|
&C AMID &N1,1,1
|
|
AIF "&C"<>"{",.B
|
|
&C AMID &N1,L:&N1,1
|
|
AIF "&C"<>"}",.F
|
|
&N1 AMID &N1,2,L:&N1-2
|
|
PLA
|
|
STA (&N1)
|
|
AGO .D
|
|
.B
|
|
PLA
|
|
STA &N1
|
|
.D
|
|
AIF S:LONGA=1,.E
|
|
SEP #%00100000
|
|
.E
|
|
MEXIT
|
|
.F
|
|
MNOTE "Missing closing '}'",16
|
|
MEND
|
|
MACRO
|
|
&LAB _READTIMEHEX
|
|
&LAB LDX #$0D03
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _FWENTRY
|
|
&LAB LDX #$2403
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETMOUSECLAMP
|
|
&LAB LDX #$1D03
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _READMOUSE
|
|
&LAB LDX #$1703
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETABSCLAMP
|
|
&LAB LDX #$2B03
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&lab csubroutine &parms,&work
|
|
&lab anop
|
|
aif c:&work,.a
|
|
lclc &work
|
|
&work setc 0
|
|
.a
|
|
gbla &totallen
|
|
gbla &worklen
|
|
&worklen seta &work
|
|
&totallen seta 0
|
|
aif c:&parms=0,.e
|
|
lclc &len
|
|
lclc &p
|
|
lcla &i
|
|
&i seta 1
|
|
.b
|
|
&p setc &parms(&i)
|
|
&len amid &p,2,1
|
|
aif "&len"=":",.c
|
|
&len amid &p,1,2
|
|
&p amid &p,4,l:&p-3
|
|
ago .d
|
|
.c
|
|
&len amid &p,1,1
|
|
&p amid &p,3,l:&p-2
|
|
.d
|
|
&p equ &totallen+4+&work
|
|
&totallen seta &totallen+&len
|
|
&i seta &i+1
|
|
aif &i<=c:&parms,^b
|
|
.e
|
|
tsc
|
|
aif &work=0,.f
|
|
sec
|
|
sbc #&work
|
|
tcs
|
|
.f
|
|
phd
|
|
tcd
|
|
mend
|
|
MACRO
|
|
&lab creturn &r
|
|
&lab anop
|
|
lclc &len
|
|
aif c:&r,.a
|
|
lclc &r
|
|
&r setc 0
|
|
&len setc 0
|
|
ago .h
|
|
.a
|
|
&len amid &r,2,1
|
|
aif "&len"=":",.b
|
|
&len amid &r,1,2
|
|
&r amid &r,4,l:&r-3
|
|
ago .c
|
|
.b
|
|
&len amid &r,1,1
|
|
&r amid &r,3,l:&r-2
|
|
.c
|
|
aif &len<>2,.d
|
|
ldy &r
|
|
ago .h
|
|
.d
|
|
aif &len<>4,.e
|
|
ldx &r+2
|
|
ldy &r
|
|
ago .h
|
|
.e
|
|
aif &len<>10,.g
|
|
ldy #&r
|
|
ldx #^&r
|
|
ago .h
|
|
.g
|
|
mnote 'Not a valid return length',16
|
|
mexit
|
|
.h
|
|
aif &totallen=0,.i
|
|
lda &worklen+2
|
|
sta &worklen+&totallen+2
|
|
lda &worklen+1
|
|
sta &worklen+&totallen+1
|
|
.i
|
|
pld
|
|
tsc
|
|
clc
|
|
adc #&worklen+&totallen
|
|
tcs
|
|
aif &len=0,.j
|
|
tya
|
|
.j
|
|
rtl
|
|
mend
|
|
MACRO
|
|
&LAB PL4 &N1
|
|
LCLC &C
|
|
&LAB ANOP
|
|
AIF S:LONGA=1,.A
|
|
REP #%00100000
|
|
.A
|
|
&C AMID &N1,1,1
|
|
AIF "&C"<>"{",.B
|
|
&C AMID &N1,L:&N1,1
|
|
AIF "&C"<>"}",.F
|
|
&N1 AMID &N1,2,L:&N1-2
|
|
PLA
|
|
STA (&N1)
|
|
LDY #2
|
|
PLA
|
|
STA (&N1),Y
|
|
AGO .D
|
|
.B
|
|
AIF "&C"<>"[",.C
|
|
PLA
|
|
STA &N1
|
|
LDY #2
|
|
PLA
|
|
STA &N1,Y
|
|
AGO .D
|
|
.C
|
|
PLA
|
|
STA &N1
|
|
PLA
|
|
STA &N1+2
|
|
.D
|
|
AIF S:LONGA=1,.E
|
|
SEP #%00100000
|
|
.E
|
|
MEXIT
|
|
.F
|
|
MNOTE "Missing closing '}'",16
|
|
MEND
|
|
MACRO
|
|
&LAB _LONGDIVIDE
|
|
&LAB LDX #$0D0B
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _LONGMUL
|
|
&LAB LDX #$0C0B
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _SDIVIDE
|
|
&LAB LDX #$0A0B
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _UDIVIDE
|
|
&LAB LDX #$0B0B
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _INITIALLOAD
|
|
&LAB LDX #$0911
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _RESTART
|
|
&LAB LDX #$0A11
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _LOADSEGNAME
|
|
&LAB LDX #$0D11
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _UNLOADSEG
|
|
&LAB LDX #$0E11
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETLOC
|
|
&LAB LDX #$0C1A
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETERRGLOBALS
|
|
&LAB LDX #$0E0C
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETINGLOBALS
|
|
&LAB LDX #$0C0C
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETINPUTDEVICE
|
|
&LAB LDX #$120C
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETOUTGLOBALS
|
|
&LAB LDX #$0D0C
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETOUTPUTDEVICE
|
|
&LAB LDX #$130C
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETERRORDEVICE
|
|
&LAB LDX #$140C
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _INITIALLOAD2
|
|
&LAB LDX #$2011
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&lab _GetMSData
|
|
&lab ldx #$1F23
|
|
jsl $E10000
|
|
MEND
|
|
MACRO
|
|
&lab _ReadMouse2
|
|
&lab ldx #$3303
|
|
jsl $E10000
|
|
MEND
|