2019-02-01 16:32:29 +00:00
|
|
|
|
NEW
|
2019-06-02 08:58:46 +00:00
|
|
|
|
AUTO 3,1
|
2019-02-01 16:32:29 +00:00
|
|
|
|
.LIST OFF
|
|
|
|
|
*--------------------------------------
|
2019-02-12 16:47:34 +00:00
|
|
|
|
EXP.GET jsr CORE.ArgV.Next
|
2019-02-11 06:58:33 +00:00
|
|
|
|
bne .1
|
2019-02-12 16:47:34 +00:00
|
|
|
|
>LDYA ZPArgVBufPrev no op, return text value
|
2019-02-11 06:58:33 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-02-12 16:47:34 +00:00
|
|
|
|
.1 >LDYA ZPArgVBufPrev
|
2019-07-26 06:28:52 +00:00
|
|
|
|
>SYSCALL AToL To Int32 on stack
|
2019-07-07 20:48:57 +00:00
|
|
|
|
bcs .9
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-04-01 06:07:56 +00:00
|
|
|
|
.2 >LDYA L.EXP.OP.MATH + - .... ?
|
2019-02-11 16:44:56 +00:00
|
|
|
|
jsr CORE.LookupArgVBuf
|
2019-07-07 20:48:57 +00:00
|
|
|
|
bcs .94
|
2019-02-11 06:58:33 +00:00
|
|
|
|
|
2019-07-31 15:10:59 +00:00
|
|
|
|
stx CORE.Operator
|
2019-07-26 06:28:52 +00:00
|
|
|
|
jsr CORE.ArgV.Next get next argument
|
2019-07-07 20:48:57 +00:00
|
|
|
|
beq .94
|
2019-02-11 06:58:33 +00:00
|
|
|
|
>LDYA ZPArgVBufPtr
|
2019-07-26 06:28:52 +00:00
|
|
|
|
>SYSCALL AToL To Int32 on stack
|
2019-07-07 20:48:57 +00:00
|
|
|
|
bcs .94
|
2019-02-11 06:58:33 +00:00
|
|
|
|
|
2019-07-07 20:48:57 +00:00
|
|
|
|
jsr EXP.FPU.EXEC
|
2019-08-15 12:48:58 +00:00
|
|
|
|
jsr CORE.ArgV.Next another op ?
|
2019-02-11 06:58:33 +00:00
|
|
|
|
bne .2
|
2019-07-07 20:48:57 +00:00
|
|
|
|
.8 >PUSHBI 4 ACC on stack
|
2019-08-15 12:48:58 +00:00
|
|
|
|
>PUSHW L.FMT.Long
|
2019-02-11 06:58:33 +00:00
|
|
|
|
>LEA.G M32.BUF
|
|
|
|
|
>SYSCALL sprintf
|
|
|
|
|
bcs .9
|
2019-04-01 06:07:56 +00:00
|
|
|
|
>LEA.G M32.BUF
|
2019-02-11 06:58:33 +00:00
|
|
|
|
rts
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-07-26 06:28:52 +00:00
|
|
|
|
.94 >POP 4
|
2019-02-12 16:47:34 +00:00
|
|
|
|
.9 lda #E.ESYN
|
2019-02-11 06:58:33 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-07-31 15:10:59 +00:00
|
|
|
|
EXP.FPU.EXEC ldy CORE.Operator
|
|
|
|
|
ldx EXP.OP.MATH.FPU,y
|
2019-07-07 20:48:57 +00:00
|
|
|
|
|
|
|
|
|
jmp A2osX.FpuCall
|
2019-02-11 06:58:33 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
EXP.TEST lda (ZPArgVBufPtr)
|
2019-02-01 16:32:29 +00:00
|
|
|
|
beq .9
|
2019-04-02 15:28:50 +00:00
|
|
|
|
|
2019-04-08 15:39:38 +00:00
|
|
|
|
lda #$80
|
2019-07-31 15:10:59 +00:00
|
|
|
|
sta CORE.LogicOp No Op
|
2019-04-01 15:24:01 +00:00
|
|
|
|
.10 >LDYA L.EXP.BEGIN
|
2019-02-11 16:44:56 +00:00
|
|
|
|
jsr CORE.LookupArgVBuf
|
2019-02-01 16:32:29 +00:00
|
|
|
|
|
|
|
|
|
bcs .9
|
2019-04-08 15:39:38 +00:00
|
|
|
|
|
|
|
|
|
dex 0=[ or 1=![ , $ff or 0
|
2019-02-01 16:32:29 +00:00
|
|
|
|
txa
|
2019-04-08 20:42:18 +00:00
|
|
|
|
asl in C
|
|
|
|
|
php
|
2019-07-31 15:10:59 +00:00
|
|
|
|
lda CORE.TestResult get parent
|
2019-04-08 20:42:18 +00:00
|
|
|
|
asl discard true/false
|
|
|
|
|
plp get new
|
|
|
|
|
ror set ctx and parent
|
2019-07-31 15:10:59 +00:00
|
|
|
|
sta CORE.TestResult
|
2019-02-11 06:58:33 +00:00
|
|
|
|
jsr CORE.ArgV.Next
|
2019-02-01 16:32:29 +00:00
|
|
|
|
beq .9
|
2019-02-12 16:47:34 +00:00
|
|
|
|
|
2019-02-14 14:51:24 +00:00
|
|
|
|
>LDYA L.EXP.OP.UNARY -d -e -f -n -z ?
|
2019-02-11 16:44:56 +00:00
|
|
|
|
jsr CORE.LookupArgVBuf
|
2019-02-01 16:32:29 +00:00
|
|
|
|
|
|
|
|
|
bcs .1
|
|
|
|
|
|
2019-07-31 15:10:59 +00:00
|
|
|
|
stx CORE.Operator
|
2019-04-02 15:28:50 +00:00
|
|
|
|
|
2019-02-11 06:58:33 +00:00
|
|
|
|
jsr EXP.TEST.UNARY
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bcs .9
|
2019-07-31 15:10:59 +00:00
|
|
|
|
eor CORE.TestResult
|
2019-07-31 20:41:37 +00:00
|
|
|
|
sta CORE.TestResult
|
2019-02-14 14:51:24 +00:00
|
|
|
|
lda (ZPArgVBufPtr)
|
2019-04-08 15:39:38 +00:00
|
|
|
|
bra .8 go check ]
|
2019-02-11 06:58:33 +00:00
|
|
|
|
|
2019-02-01 16:32:29 +00:00
|
|
|
|
.9 lda #E.ESYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
2019-02-12 16:47:34 +00:00
|
|
|
|
.1 jsr CORE.ArgV.Next
|
2019-02-01 16:32:29 +00:00
|
|
|
|
beq .9
|
|
|
|
|
>LDYA L.EXP.OP.BINARY -eq -ne .... ?
|
2019-02-11 16:44:56 +00:00
|
|
|
|
jsr CORE.LookupArgVBuf
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bcs .9
|
2019-07-31 15:10:59 +00:00
|
|
|
|
stx CORE.Operator
|
2019-02-11 06:58:33 +00:00
|
|
|
|
jsr EXP.TEST.BINARY
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
2019-07-31 15:10:59 +00:00
|
|
|
|
eor CORE.TestResult
|
2019-07-31 20:41:37 +00:00
|
|
|
|
sta CORE.TestResult
|
2019-02-01 16:32:29 +00:00
|
|
|
|
|
2019-04-08 15:39:38 +00:00
|
|
|
|
jsr CORE.ArgV.Next
|
2019-02-01 16:32:29 +00:00
|
|
|
|
beq .9
|
2019-04-08 15:39:38 +00:00
|
|
|
|
.8 cmp #']'
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bne .9
|
|
|
|
|
ldy #1
|
2019-02-11 06:58:33 +00:00
|
|
|
|
lda (ZPArgVBufPtr),y
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bne .9
|
2019-04-01 15:24:01 +00:00
|
|
|
|
jsr CORE.ArgV.Next
|
2019-04-08 15:39:38 +00:00
|
|
|
|
beq .80
|
2019-04-01 15:24:01 +00:00
|
|
|
|
>LDYA L.EXP.OP.LOGIC
|
|
|
|
|
jsr CORE.LookupArgVBuf
|
|
|
|
|
bcs .9
|
2019-04-08 15:39:38 +00:00
|
|
|
|
|
2019-07-31 15:10:59 +00:00
|
|
|
|
stx CORE.LogicOp 0 = AND, 1 = OR
|
2019-04-01 15:24:01 +00:00
|
|
|
|
txa
|
2019-04-08 15:39:38 +00:00
|
|
|
|
beq .84
|
2019-07-31 15:10:59 +00:00
|
|
|
|
lda CORE.TestResult OR : prev test is true, exit
|
2019-04-08 15:39:38 +00:00
|
|
|
|
bmi .88
|
|
|
|
|
bra .85
|
2019-07-31 15:10:59 +00:00
|
|
|
|
.84 lda CORE.TestResult AND : prev test is false, exit
|
2019-04-01 15:24:01 +00:00
|
|
|
|
bpl .88
|
2019-07-31 15:10:59 +00:00
|
|
|
|
.85 lda CORE.TestResult
|
|
|
|
|
sta CORE.PrevTestResult
|
2019-04-08 15:39:38 +00:00
|
|
|
|
jsr CORE.ArgV.Next
|
2019-04-01 15:24:01 +00:00
|
|
|
|
beq .9
|
2019-04-08 15:39:38 +00:00
|
|
|
|
jmp .10
|
2019-07-31 15:10:59 +00:00
|
|
|
|
.80 lda CORE.LogicOp
|
2019-04-08 15:39:38 +00:00
|
|
|
|
bne .88 NONE, or OR : exit with last result
|
2019-07-31 15:10:59 +00:00
|
|
|
|
lda CORE.PrevTestResult AND : stop if false
|
|
|
|
|
and CORE.TestResult
|
|
|
|
|
sta CORE.TestResult
|
2019-04-01 15:24:01 +00:00
|
|
|
|
.88 clc
|
2019-02-01 16:32:29 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2019-02-11 06:58:33 +00:00
|
|
|
|
EXP.TEST.UNARY jsr CORE.ArgV.Next
|
2019-02-14 14:51:24 +00:00
|
|
|
|
beq EXP.OP.UNARY.ESYN we need one arg or ]
|
2019-07-31 15:10:59 +00:00
|
|
|
|
lda CORE.Operator
|
2019-04-01 06:07:56 +00:00
|
|
|
|
asl
|
2019-02-01 16:32:29 +00:00
|
|
|
|
tax
|
|
|
|
|
jmp (J.EXP.OP.UNARY,x)
|
|
|
|
|
|
2019-02-14 14:51:24 +00:00
|
|
|
|
EXP.OP.UNARY.ESYN
|
|
|
|
|
lda #E.ESYN
|
2019-02-01 16:32:29 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
2019-04-02 15:28:50 +00:00
|
|
|
|
EXP.OP.UNARY.D jsr EXP.OP.UNARY.STAT
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bcs EXP.OP.UNARY.DEF.9
|
|
|
|
|
>LDA.G StatBuf+S.STAT.P.TYPE
|
|
|
|
|
cmp #S.FI.T.DIR
|
|
|
|
|
bne EXP.OP.UNARY.DEF.9
|
|
|
|
|
bra EXP.OP.UNARY.DEF.8
|
|
|
|
|
|
2019-04-02 15:28:50 +00:00
|
|
|
|
EXP.OP.UNARY.E jsr EXP.OP.UNARY.STAT
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bcs EXP.OP.UNARY.DEF.9
|
|
|
|
|
bra EXP.OP.UNARY.DEF.8 DIR or FILE exist
|
2019-04-02 15:28:50 +00:00
|
|
|
|
EXP.OP.UNARY.F jsr EXP.OP.UNARY.STAT
|
2019-02-01 16:32:29 +00:00
|
|
|
|
bcs EXP.OP.UNARY.DEF.9
|
|
|
|
|
|
|
|
|
|
>LDA.G StatBuf+S.STAT.P.TYPE
|
|
|
|
|
cmp #S.FI.T.DIR
|
|
|
|
|
beq EXP.OP.UNARY.DEF.9
|
|
|
|
|
bra EXP.OP.UNARY.DEF.8
|
|
|
|
|
|
2019-04-02 15:28:50 +00:00
|
|
|
|
EXP.OP.UNARY.STAT
|
2019-02-11 06:58:33 +00:00
|
|
|
|
>LDYA ZPArgVBufPtr
|
2019-11-15 14:40:48 +00:00
|
|
|
|
jsr IO.StatYA
|
2019-02-14 14:51:24 +00:00
|
|
|
|
php
|
|
|
|
|
|
|
|
|
|
jsr CORE.ArgV.Next
|
|
|
|
|
plp
|
2019-02-01 16:32:29 +00:00
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
EXP.OP.UNARY.DEF.8
|
|
|
|
|
lda #$80 true
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
EXP.OP.UNARY.DEF.9
|
|
|
|
|
lda #0 false
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2019-02-14 14:51:24 +00:00
|
|
|
|
EXP.OP.UNARY.N lda (ZPArgVBufPtr) [ -N ] ?
|
|
|
|
|
cmp #']'
|
|
|
|
|
beq EXP.OP.UNARY.DEF.9 FALSE
|
|
|
|
|
jsr CORE.ArgV.Next
|
|
|
|
|
beq EXP.OP.UNARY.ESYN
|
|
|
|
|
bra EXP.OP.UNARY.DEF.8 arg is not empty TRUE
|
|
|
|
|
|
|
|
|
|
EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ?
|
2019-03-01 14:36:20 +00:00
|
|
|
|
|
2019-02-14 14:51:24 +00:00
|
|
|
|
cmp #']'
|
|
|
|
|
beq EXP.OP.UNARY.DEF.8 TRUE
|
|
|
|
|
jsr CORE.ArgV.Next
|
|
|
|
|
beq EXP.OP.UNARY.ESYN
|
|
|
|
|
bra EXP.OP.UNARY.DEF.9 FALSE
|
|
|
|
|
*--------------------------------------
|
2019-07-31 15:10:59 +00:00
|
|
|
|
EXP.TEST.BINARY lda CORE.Operator
|
2019-04-02 15:28:50 +00:00
|
|
|
|
cmp #6 =, !=, <= <, >=, >
|
2019-03-11 15:43:33 +00:00
|
|
|
|
bcs EXP.TEST.BINARY.NUM
|
2019-03-01 14:36:20 +00:00
|
|
|
|
>LDYA ZPArgVBufPrev
|
2019-02-21 22:03:08 +00:00
|
|
|
|
>STYA ZPPtr1
|
|
|
|
|
jsr CORE.ArgV.Next
|
2019-03-11 15:43:33 +00:00
|
|
|
|
beq EXP.TEST.BINARY.ESYN
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-02-21 22:03:08 +00:00
|
|
|
|
>PUSHW ZPPtr1
|
2019-02-11 06:58:33 +00:00
|
|
|
|
>LDYA ZPArgVBufPtr
|
2019-02-01 16:32:29 +00:00
|
|
|
|
>SYSCALL strcmp
|
2019-03-11 15:43:33 +00:00
|
|
|
|
bcs .1 CS if !=
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-10-03 06:25:27 +00:00
|
|
|
|
lda #%010 010 str1 = str2
|
2019-03-11 15:43:33 +00:00
|
|
|
|
bra EXP.TEST.BINARY.END
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-03-11 15:43:33 +00:00
|
|
|
|
.1 asl CS if <
|
|
|
|
|
bcs .2
|
2019-11-15 14:40:48 +00:00
|
|
|
|
|
2019-03-11 15:43:33 +00:00
|
|
|
|
lda #%100 010 str1 < str2
|
2019-11-15 14:40:48 +00:00
|
|
|
|
bra EXP.TEST.BINARY.END
|
|
|
|
|
|
2019-03-11 15:43:33 +00:00
|
|
|
|
.2 lda #%001 010 str1 > str2
|
2019-11-15 14:40:48 +00:00
|
|
|
|
bra EXP.TEST.BINARY.END
|
2019-07-25 06:13:56 +00:00
|
|
|
|
|
|
|
|
|
EXP.TEST.BINARY.ESYN4
|
|
|
|
|
>POP 4
|
2019-03-11 15:43:33 +00:00
|
|
|
|
EXP.TEST.BINARY.ESYN
|
|
|
|
|
lda #E.ESYN
|
2019-02-01 16:32:29 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2019-02-11 06:58:33 +00:00
|
|
|
|
EXP.TEST.BINARY.NUM
|
2019-02-14 14:51:24 +00:00
|
|
|
|
>LDYA ZPArgVBufPrev
|
2019-02-01 16:32:29 +00:00
|
|
|
|
>SYSCALL AToL
|
2019-03-11 15:43:33 +00:00
|
|
|
|
bcs EXP.TEST.BINARY.ESYN
|
2019-07-25 06:13:56 +00:00
|
|
|
|
|
2019-02-14 14:51:24 +00:00
|
|
|
|
jsr CORE.ArgV.Next
|
2019-07-25 06:13:56 +00:00
|
|
|
|
beq EXP.TEST.BINARY.ESYN4
|
2019-02-11 06:58:33 +00:00
|
|
|
|
>LDYA ZPArgVBufPtr
|
2019-02-01 16:32:29 +00:00
|
|
|
|
>SYSCALL AToL
|
2019-07-25 06:13:56 +00:00
|
|
|
|
bcs EXP.TEST.BINARY.ESYN4
|
2019-02-01 16:32:29 +00:00
|
|
|
|
|
2019-08-02 20:55:43 +00:00
|
|
|
|
>FPU CMP32
|
|
|
|
|
tax
|
2019-07-31 20:41:37 +00:00
|
|
|
|
bmi .4 ACC < ARG
|
2019-07-07 20:48:57 +00:00
|
|
|
|
|
2019-07-31 20:41:37 +00:00
|
|
|
|
bne .5
|
2019-07-07 20:48:57 +00:00
|
|
|
|
lda #%010 010 ACC = ARG
|
|
|
|
|
bra EXP.TEST.BINARY.END
|
|
|
|
|
.4 lda #%100 100 ACC > ARG
|
|
|
|
|
bra EXP.TEST.BINARY.END
|
|
|
|
|
.5 lda #%001 001 ACC < ARG
|
|
|
|
|
|
2019-10-03 06:25:27 +00:00
|
|
|
|
EXP.TEST.BINARY.END
|
2019-07-31 15:10:59 +00:00
|
|
|
|
clc
|
|
|
|
|
ldx CORE.Operator
|
2019-02-01 16:32:29 +00:00
|
|
|
|
and EXP.OP.BINARY.BITS,x
|
2019-07-31 15:10:59 +00:00
|
|
|
|
beq .8 false
|
2019-02-01 16:32:29 +00:00
|
|
|
|
|
|
|
|
|
lda #$80 true
|
2019-07-31 15:10:59 +00:00
|
|
|
|
|
|
|
|
|
.8 rts
|
2019-02-01 16:32:29 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
2019-02-08 16:13:43 +00:00
|
|
|
|
SAVE USR/SRC/BIN/SH.S.EXP
|
|
|
|
|
LOAD USR/SRC/BIN/SH.S
|
2019-02-01 16:32:29 +00:00
|
|
|
|
ASM
|