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 #'('
|
2021-04-16 19:17:18 +00:00
|
|
|
|
bne .12
|
2021-04-10 17:17:40 +00:00
|
|
|
|
|
|
|
|
|
jsr CORE.GetNextCharNB skip (
|
2021-04-16 19:17:18 +00:00
|
|
|
|
bcs .39
|
2021-04-10 17:17:40 +00:00
|
|
|
|
|
|
|
|
|
jsr EXP.Eval
|
2021-04-16 19:17:18 +00:00
|
|
|
|
bcs .39
|
2021-04-08 20:30:18 +00:00
|
|
|
|
|
2021-04-10 17:17:40 +00:00
|
|
|
|
jsr CORE.GetCharNB
|
2021-04-16 19:17:18 +00:00
|
|
|
|
bcs .39
|
2021-04-10 17:17:40 +00:00
|
|
|
|
|
|
|
|
|
cmp #')'
|
|
|
|
|
bne .90
|
|
|
|
|
|
|
|
|
|
jsr CORE.GetNextCharNB skip )
|
|
|
|
|
bra .41
|
2021-04-16 19:17:18 +00:00
|
|
|
|
|
|
|
|
|
.12 cmp #'"'
|
|
|
|
|
bne .20
|
|
|
|
|
|
|
|
|
|
lda ZPTYPE
|
|
|
|
|
beq .90
|
|
|
|
|
|
|
|
|
|
jsr EXP.GetString
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
bra .40
|
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
|
|
|
|
|
bcs .90
|
2021-04-16 19:17:18 +00:00
|
|
|
|
jmp .11
|
2021-04-10 17:17:40 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
.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)
|
|
|
|
|
*--------------------------------------
|
2021-04-16 19:17:18 +00:00
|
|
|
|
EXP.GetString ldy #0
|
|
|
|
|
|
|
|
|
|
.1 jsr CORE.GetNextChar
|
|
|
|
|
bcs .91
|
|
|
|
|
|
|
|
|
|
cmp #'"'
|
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
sta (ZPConstBufPtr),y
|
|
|
|
|
iny
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
.2 lda #0
|
|
|
|
|
sta (ZPConstBufPtr),y
|
|
|
|
|
|
|
|
|
|
>PUSHW ZPConstBufPtr
|
|
|
|
|
|
|
|
|
|
tya
|
|
|
|
|
clc
|
|
|
|
|
adc ZPConstBufPtr
|
|
|
|
|
sta ZPConstBufPtr
|
|
|
|
|
bcc .3
|
|
|
|
|
|
|
|
|
|
inc ZPConstBufPtr+1
|
|
|
|
|
|
|
|
|
|
.3 jsr CORE.GetNextCharNB skip "
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.90
|
|
|
|
|
|
|
|
|
|
.91 lda #E.ESYN
|
|
|
|
|
* sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2021-04-10 17:17:40 +00:00
|
|
|
|
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
|