mirror of
https://github.com/byteworksinc/ORCALib.git
synced 2024-05-28 15:41:29 +00:00
e2de990f4d
This is used for the %z conversion specifier (giving the time zone offset in +-HHMM format). The %Z conversion specifier (giving the locale's time zone name or abbreviation) also prints the same thing for now. As with gmtime, this will only use the Time Tool Set if it has already been started. Otherwise, these conversions simply produce no output.
639 lines
7.5 KiB
Plaintext
639 lines
7.5 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 MOVE4 &F,&T
|
|
&LAB ~SETM
|
|
LDA 2+&F
|
|
STA 2+&T
|
|
LDA &F
|
|
STA &T
|
|
~RESTM
|
|
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 ~SETM
|
|
&LAB 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
|
|
&LAB ~RESTM
|
|
&LAB 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
|
|
&LAB ADD4 &M1,&M2,&M3
|
|
LCLB &YISTWO
|
|
LCLC &C
|
|
&LAB ~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
|
|
&LAB DIV4 &N1,&N2,&N3
|
|
&LAB ~SETM
|
|
PH4 &N1
|
|
PH4 &N2
|
|
JSL ~DIV4
|
|
AIF C:&N3,.A
|
|
PL4 &N1
|
|
AGO .B
|
|
.A
|
|
PL4 &N3
|
|
.B
|
|
PLA
|
|
PLA
|
|
~RESTM
|
|
MEND
|
|
MACRO
|
|
&LAB MOD4 &N1,&N2,&N3
|
|
&LAB ~SETM
|
|
PH4 &N1
|
|
PH4 &N2
|
|
JSL ~MOD4
|
|
PLA
|
|
PLA
|
|
AIF C:&N3,.A
|
|
PL4 &N1
|
|
AGO .B
|
|
.A
|
|
PL4 &N3
|
|
.B
|
|
~RESTM
|
|
MEND
|
|
MACRO
|
|
&LAB MUL4 &N1,&N2,&N3
|
|
&LAB ~SETM
|
|
PH4 &N1
|
|
PH4 &N2
|
|
JSL ~MUL4
|
|
AIF C:&N3,.A
|
|
PL4 &N1
|
|
AGO .B
|
|
.A
|
|
PL4 &N3
|
|
.B
|
|
~RESTM
|
|
MEND
|
|
MACRO
|
|
&LAB SUB4 &M1,&M2,&M3
|
|
LCLB &YISTWO
|
|
LCLC &C
|
|
&LAB ~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
|
|
SEC
|
|
~LDA &M1
|
|
~OP SBC,&M2
|
|
~STA &M1
|
|
BCS ~&SYSCNT
|
|
~OP.H DEC,&M1
|
|
~&SYSCNT ANOP
|
|
AGO .C
|
|
.A
|
|
AIF C:&M3,.B
|
|
LCLC &M3
|
|
&M3 SETC &M1
|
|
.B
|
|
SEC
|
|
~LDA &M1
|
|
~OP SBC,&M2
|
|
~STA &M3
|
|
~LDA.H &M1
|
|
~OP.H SBC,&M2
|
|
~STA.H &M3
|
|
.C
|
|
~RESTM
|
|
MEND
|
|
MACRO
|
|
&LAB ~OP.H &OPC,&OP
|
|
&LAB 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
|
|
&OP SETC "&OP,Y"
|
|
.C
|
|
&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
|
|
&LAB ~LDA.H &OP
|
|
&LAB 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
|
|
&OP SETC "&OP,Y"
|
|
.C
|
|
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
|
|
&LAB ~STA.H &OP
|
|
&LAB 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
|
|
&OP SETC "&OP,Y"
|
|
.C
|
|
STA &OP
|
|
MEXIT
|
|
.D
|
|
STA 2+&OP
|
|
MEND
|
|
MACRO
|
|
&LAB ~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
|
|
&LAB LDA &OP
|
|
MEND
|
|
MACRO
|
|
&LAB ~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
|
|
&LAB STA &OP
|
|
MEND
|
|
MACRO
|
|
&LAB ~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
|
|
&LAB &OPC &OP
|
|
MEND
|
|
MACRO
|
|
&LAB INC4 &A
|
|
&LAB ~SETM
|
|
INC &A
|
|
BNE ~&SYSCNT
|
|
INC 2+&A
|
|
~&SYSCNT ~RESTM
|
|
MEND
|
|
MACRO
|
|
&LAB JLT &BP
|
|
&LAB BGE *+5
|
|
BRL &BP
|
|
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 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 _READTIMEHEX
|
|
&LAB LDX #$0D03
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&LAB _GETTICK
|
|
&LAB LDX #$2503
|
|
JSL $E10000
|
|
MEND
|
|
macro
|
|
&l ble &bp
|
|
&l blt &bp
|
|
beq &bp
|
|
mend
|
|
MACRO
|
|
&lab _ReadBParam
|
|
&lab ldx #$0C03
|
|
jsl $E10000
|
|
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 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 dec4 &a
|
|
&l ~setm
|
|
lda &a
|
|
bne ~&SYSCNT
|
|
dec 2+&a
|
|
~&SYSCNT dec &a
|
|
~restm
|
|
mend
|
|
MACRO
|
|
&LAB _INT2DEC
|
|
&LAB LDX #$260B
|
|
JSL $E10000
|
|
MEND
|
|
MACRO
|
|
&lab _tiStatus
|
|
&lab ldx #$0638
|
|
jsl $E10000
|
|
MEND
|
|
MACRO
|
|
&lab _tiGetTimePrefs
|
|
&lab ldx #$0938
|
|
jsl $E10000
|
|
MEND
|
|
MACRO
|
|
&lab _tiOffset2TimeZoneString
|
|
&lab ldx #$1138
|
|
jsl $E10000
|
|
MEND
|