A2osX/BIN/ACOS.S.EXP.txt

191 lines
3.3 KiB
Plaintext
Raw Normal View History

2021-04-08 20:30:18 +00:00
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
* In: A = current CHAR
* Out: CC, longint on stack
*--------------------------------------
2021-04-10 17:17:40 +00:00
EXP.Eval lda EXP.AOPS
pha
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
lda #$FF
>PUSHA Previous OP = none
*--------------------------------------
.10 jsr CORE.GetCharNB
bcs .39
.11 cmp #'('
bne .20
jsr CORE.GetNextCharNB skip (
bcs .90
jsr EXP.Eval
2021-04-08 20:30:18 +00:00
bcs .99
2021-04-10 17:17:40 +00:00
jsr CORE.GetCharNB
bcs .90
cmp #')'
bne .90
jsr CORE.GetNextCharNB skip )
bra .41
2021-04-08 20:30:18 +00:00
*--------------------------------------
2021-04-10 17:17:40 +00:00
.20 jsr CORE.IsLetter
bcs .30 FN or VAR
>LDYA L.ACOS.FN
2021-04-08 20:30:18 +00:00
jsr CORE.Lookup
2021-04-10 17:17:40 +00:00
bcs .21
2021-04-08 20:30:18 +00:00
jsr EXP.FNjmpX
bcs .99
2021-04-10 17:17:40 +00:00
bra .40
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
.21 jsr EXP.VARLookup
2021-04-08 20:30:18 +00:00
bcs .99
>LDYA EXP.ADDR
jsr CODE.PUSHfYA
2021-04-10 17:17:40 +00:00
bra .40
*--------------------------------------
.30 jsr CORE.IsDigit10
.39 bcs .90
jsr EXP.Int32
bcs .99
2021-04-08 20:30:18 +00:00
*--------------------------------------
2021-04-10 17:17:40 +00:00
.40 jsr CORE.GetCharNB
.41 bcs .80
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
.50 jsr CORE.IsEndExp
bcs .80
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
jsr EXP.GetOP
bcs .90
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
stx EXP.AOPS
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
.61 lda (pStack) get op context
bmi .62 no prev op, go get arg2
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
cmp EXP.AOPS we have arg1 A=op1 arg2 X=op2
bcc .62
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
inc pStack prev op has precedence
tax
jsr EXP.OPjmpX go compute (arg1 op1 arg2)
.62 lda EXP.AOPS we must compute arg2 op2 arg3 before
>PUSHA
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
.63 jsr CORE.GetNextCharNB
bcc .11
bcs .90
*--------------------------------------
.80 >PULLA
tax
bmi .88 nothing to do
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
jsr EXP.OPjmpX
bra .80
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
.90 lda #E.ESYN
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
.99 tay Save Err code
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
>PULLA
tax
bpl .99
sec
.HS 90 BCC
.88 clc
2021-04-08 20:30:18 +00:00
2021-04-10 17:17:40 +00:00
pla
sta EXP.AOPS
tya
2021-04-08 20:30:18 +00:00
rts
*--------------------------------------
EXP.FNjmpX jmp (J.ACOS.FN,x)
2021-04-10 17:17:40 +00:00
EXP.OPjmpX jmp (J.ACOS.AOPS,x)
*--------------------------------------
EXP.GetOP jsr CORE.IsAOPSChar + - * /
bcc .9
>LDYA L.ACOS.AOPS MOD
jsr CORE.Lookup
bcs .9
txa
* clc
adc #ACOS.AOPSChars.Cnt*2
tax
.9 rts
2021-04-08 20:30:18 +00:00
*--------------------------------------
EXP.Int32 >PUSHW ZPInputBufPtr
>PUSHWI ZPInputBufPtr
>PUSHBI 10
>SYSCALL StrToL
bcs .9
jsr CODE.PUSHINT32
>POP 4
clc
.9 rts
*--------------------------------------
EXP.VARLookup >LDA.G hVars
>PUSHA
>PUSHA for SListGetData
>PUSHW ZPInputBufPtr
>SYSCALL SListLookup
bcs .9
>PUSHYA ZPSID
txa
2021-04-11 19:47:48 +00:00
jsr CORE.SkipA
2021-04-08 20:30:18 +00:00
.1 >PUSHWI EXP.ADDR
2021-04-11 19:47:48 +00:00
>PUSHWI 3 3 bytes : ADDR + TYPE
2021-04-08 20:30:18 +00:00
>PUSHWZ From Start
>SYSCALL SListGetData
rts
.9 >PULLA
rts
*--------------------------------------
EXP.ADD ldx #FPU.ADD32
jmp CODE.FPUCALL
EXP.SUB ldx #FPU.SUB32
jmp CODE.FPUCALL
EXP.MUL ldx #FPU.IMUL32
jmp CODE.FPUCALL
EXP.DIV ldx #FPU.IDIV32
jmp CODE.FPUCALL
EXP.MOD ldx #FPU.IMOD32
jmp CODE.FPUCALL
*--------------------------------------
*--------------------------------------
MAN
SAVE usr/src/bin/acos.s.exp
LOAD usr/src/bin/acos.s
ASM