From e98f1e9451f563941acd8c14a0d0adf1a5c9f618 Mon Sep 17 00:00:00 2001 From: burniouf Date: Fri, 6 Aug 2021 19:58:04 +0200 Subject: [PATCH] ACOS! Fixes in Strings & Logical OPs --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/ACOS.S.CORE.txt | 6 +- BIN/ACOS.S.EXP.txt | 148 ++++++++++++++++++++++----------------- BIN/ACOS.S.RT.txt | 17 ++++- BIN/ACOS.S.txt | 14 ++-- 5 files changed, 111 insertions(+), 74 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index e25539dbfa4311d625be2175cdfbf0fc064caf6b..3765369304f5ba945993bb0099fa31d1998a1101 100644 GIT binary patch delta 23826 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 UQ-I$9rvd*3oY6e0oYhSEKg*oGrT_o{ delta 23643 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 GBmW--q|P(| diff --git a/BIN/ACOS.S.CORE.txt b/BIN/ACOS.S.CORE.txt index 2948012e..fb485755 100644 --- a/BIN/ACOS.S.CORE.txt +++ b/BIN/ACOS.S.CORE.txt @@ -336,7 +336,7 @@ CORE.Run jsr CORE.Cleanup .8 jmp (ZPCodeBufPtr) *-------------------------------------- -CORE.LookupOPS lda (ZPInputBufPtr) +CORE.LookupAOPS lda (ZPInputBufPtr) jsr CORE.IsOPSChar bcc .55 @@ -347,7 +347,7 @@ CORE.LookupOPS lda (ZPInputBufPtr) .55 ror bFlag - >LDYA L.ACOS.OPS + >LDYA L.ACOS.AOPS >STYA ZPPtr1 ldx #0 @@ -404,6 +404,8 @@ CORE.LookupOPS lda (ZPInputBufPtr) .19 sec .99 rts *-------------------------------------- +CORE.LookupLOPS >LDYA L.ACOS.LOPS + CORE.LookupSkip sec .HS 90 BCC CORE.Lookup clc diff --git a/BIN/ACOS.S.EXP.txt b/BIN/ACOS.S.EXP.txt index 15536710..6dbbb3b5 100644 --- a/BIN/ACOS.S.EXP.txt +++ b/BIN/ACOS.S.EXP.txt @@ -6,8 +6,8 @@ NEW * Out: CC, int16 on stack or pSTR in stack *-------------------------------------- EXP.Eval stz EXP.TYPE - -EXP.Eval.R lda EXP.AOPS +*-------------------------------------- +EXP.Eval.R lda EXP.AOP pha lda #$FF @@ -39,9 +39,7 @@ EXP.Eval.R lda EXP.AOPS bne .20 jsr EXP.CreateStrConst - bcs .37 - - bra .40 + bra .39 *-------------------------------------- .20 jsr CORE.IsLetter bcs .30 No, go check for number... @@ -52,33 +50,17 @@ EXP.Eval.R lda EXP.AOPS >LDYA L.ACOS.FN jsr CORE.LookupSkip - bcs .21 + bcs .25 jsr EXP.FNjmpX - bcs .99 - - bra .40 - -.21 jsr EXP.VARLookup - bcs .37 - - ldy EXP.ADDR - ldx EXP.ADDR+1 + bra .39 - lda EXP.TYPE - bne .22 - - jsr CODE.LDYXI - - ldx #RT.IntGet.ID - jsr CODE.JSRRT - bra .40 - -.22 jsr CODE.PUSHYXI - bra .40 +.25 jsr EXP.VARLookup + bra .39 *-------------------------------------- .30 jsr EXP.Int16 -.37 bcs .99 +*-------------------------------------- +.39 bcs .99 *-------------------------------------- .40 jsr CORE.GetCharNB .41 bcs .80 @@ -89,39 +71,54 @@ EXP.Eval.R lda EXP.AOPS jsr CORE.IsKW bcc .80 - jsr CORE.LookupOPS -.39 bcs .90 + jsr CORE.LookupLOPS + bcs .51 - stx EXP.AOPS + phx + jsr EXP.ComputeAll compute all until $FF + plx + + bcs .99 + + txa + lsr + adc #14 + >PUSHA + jsr EXP.Eval.R + bcs .99 + + bra .40 + +.51 jsr CORE.LookupAOPS + bcs .90 + + stx EXP.AOP lda (pStack) get op context bmi .60 no prev op, go get arg2 - ldy EXP.TYPE - bne .51 no precedence for strings - - cmp EXP.AOPS we have arg1 A=op1 arg2 X=op2 + cmp EXP.AOP we have arg1 A=op1 arg2 X=op2 bcc .60 -.51 inc pStack prev op has precedence + inc pStack prev op has precedence tay jsr EXP.ComputeY go compute (arg1 op1 arg2) bcs .90 -.60 lda EXP.AOPS we must compute arg2 op2 arg3 before +.60 lda EXP.AOP we must compute arg2 op2 arg3 before >PUSHA jsr CORE.GetCharNB bcs .90 jmp .11 *-------------------------------------- -.80 >PULLA - tay - bmi .88 nothing to do +.80 jsr EXP.ComputeAll go compute (arg1 op1 arg2) + bcs .99 + + inc pStack discard $FF - jsr EXP.ComputeY go compute (arg1 op1 arg2) - bcc .80 + bra .88 .90 lda #E.ESYN @@ -132,11 +129,9 @@ EXP.Eval.R lda EXP.AOPS bpl .98 sec - .HS 90 BCC -.88 clc - pla - sta EXP.AOPS +.88 pla + sta EXP.AOP tya @@ -227,12 +222,9 @@ EXP.VARLookup >LDA.G hVars jsr CORE.GetVarType cpx EXP.TYPE - bne .90 + beq .7 - clc - rts - -.90 lda #E.TMISMATCH + lda #E.TMISMATCH sec .99 rts *-------------------------------------- @@ -254,16 +246,45 @@ EXP.VARLookup >LDA.G hVars >PUSHWI EXP.ADDR >PUSHWI 3 3 bytes : ADDR + TYPE >SYSCALL SListAddData - rts - + bcc .7 + .9 inc pStack discard extra hVars rts *-------------------------------------- -EXP.ComputeY lda EXP.TYPE +.7 ldy EXP.ADDR + ldx EXP.ADDR+1 + + lda EXP.TYPE + bne .8 + jsr CODE.LDYXI + + ldx #RT.IntGet.ID + clc + jmp CODE.JSRRT + +.8 clc + jmp CODE.PUSHYXI +*-------------------------------------- +EXP.ComputeAll lda (pStack) + bmi .8 nothing to do + + inc pStack + + tay + jsr EXP.ComputeY go compute (arg1 op1 arg2) + bcc EXP.ComputeAll + +* sec + rts + +.8 clc + rts +*-------------------------------------- +EXP.ComputeY lda EXP.TYPE bne .1 - ldx ACOS.OPS2FPU,y + ldx ACOS.AOPS2FPU,y jsr CODE.FPUCALL clc rts @@ -276,29 +297,26 @@ EXP.ComputeY lda EXP.TYPE jmp CODE.JSRRT .2 stz EXP.TYPE at the end ....TRUE/FALSE is int - + cpy #11 <> bne .3 - ldx #SYS.StrCmp - jsr CODE.SYSCALL - jsr CODE.PUSHYA + ldx #RT.StrCmp.ID clc - rts + jmp CODE.JSRRT .3 cpy #13 = bne .9 - ldx #SYS.StrCmp - jsr CODE.SYSCALL - jsr CODE.PUSHYA + ldx #RT.StrCmp.ID + jsr CODE.JSRRT ldx #RT.NOT.ID - jsr CODE.JSRRT clc - rts + jmp CODE.JSRRT -.9 sec +.9 lda #E.TMISMATCH + sec rts *-------------------------------------- MAN diff --git a/BIN/ACOS.S.RT.txt b/BIN/ACOS.S.RT.txt index 50b02b09..be9c447c 100644 --- a/BIN/ACOS.S.RT.txt +++ b/BIN/ACOS.S.RT.txt @@ -2,8 +2,7 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -RT.NOT lda (pStack) - inc +RT.NOT >PULLA ora (pStack) beq .1 @@ -28,6 +27,20 @@ RT.StrAdd ldx #2 clc rts *-------------------------------------- +RT.StrCmp ldx #2 + jsr RT.StrPullX + + jsr RT.StrPull + + >PUSHW ZPStrBuf1 + >PUSHW ZPStrBuf2 + >SYSCALL strcmp + + >PUSHYA + + clc + rts +*-------------------------------------- * on stack : Src StrID * Y,X : Dst StrID *-------------------------------------- diff --git a/BIN/ACOS.S.txt b/BIN/ACOS.S.txt index c770166a..843b5aee 100644 --- a/BIN/ACOS.S.txt +++ b/BIN/ACOS.S.txt @@ -36,7 +36,7 @@ hStrings .BS 1 EXP.ADDR .BS 2 EXP.TYPE .BS 1 -EXP.AOPS .BS 1 +EXP.AOP .BS 1 ZPStrBuf1 .BS 2 ZPStrBuf2 .BS 2 @@ -92,7 +92,8 @@ L.OUT .DA OUT.ELW L.FMT.DATE .DA FMT.DATE L.FMT.TIME .DA FMT.TIME *-------------------------------------- -L.ACOS.OPS .DA ACOS.OPS +L.ACOS.AOPS .DA ACOS.AOPS +L.ACOS.LOPS .DA ACOS.LOPS L.ACOS.KW .DA ACOS.KW J.ACOS.KW .DA KW.ADDINT .DA KW.APPEND @@ -209,6 +210,8 @@ RT.NOT.ID .EQ *-J.RT .DA RT.NOT RT.StrAdd.ID .EQ *-J.RT .DA RT.StrAdd +RT.StrCmp.ID .EQ *-J.RT + .DA RT.StrCmp RT.StrSet.ID .EQ *-J.RT .DA RT.StrSet RT.StrOut.ID .EQ *-J.RT @@ -540,7 +543,7 @@ OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace ACOS.OPSChars .AS "+-*/<>=" ACOS.OPSChars.Cnt .EQ *-ACOS.OPSChars *-------------------------------------- -ACOS.OPS .AT "*" +ACOS.AOPS .AT "*" .AT "/" .AT "MOD" .AT "+" @@ -554,11 +557,12 @@ ACOS.OPS .AT "*" .AT "<>" .AT "><" .AT "=" - .AT "AND" + .HS 00 +ACOS.LOPS .AT "AND" .AT "OR" .HS 00 *-------------------------------------- -ACOS.OPS2FPU .DA #FPU.iMUL,#FPU.iDIV,#FPU.iMOD,#FPU.iADD,#FPU.iSUB +ACOS.AOPS2FPU .DA #FPU.iMUL,#FPU.iDIV,#FPU.iMOD,#FPU.iADD,#FPU.iSUB .DA #FPU.iL,#FPU.iLE,#FPU.iLE .DA #FPU.iG,#FPU.iGE,#FPU.iGE .DA #FPU.iNE,#FPU.iNE,#FPU.iE