diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 91e2c539..28466771 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CSH.R.txt b/BIN/CSH.R.txt index ede4d5b5..bdf31874 100644 --- a/BIN/CSH.R.txt +++ b/BIN/CSH.R.txt @@ -21,7 +21,7 @@ J.CSH.BOPS .DA CSH.BOPS.ADD .DA CSH.BOPS.EOR .DA CSH.BOPS.LAND .DA CSH.BOPS.LOR -J.CSH.BOPS.ADDt .DA CSH.TMISSMATCH +J.CSH.BOPS.ADDt .DA CSH.TMISMATCH .DA CSH.BOPS.ADDi8 .DA CSH.BOPS.ADDi16 .DA CSH.BOPS.ADDi32 @@ -29,7 +29,7 @@ J.CSH.BOPS.ADDt .DA CSH.TMISSMATCH .DA CSH.BOPS.ADDu16 .DA CSH.BOPS.ADDu32 .DA CSH.BOPS.ADDf -J.CSH.BOPS.SUBt .DA CSH.TMISSMATCH +J.CSH.BOPS.SUBt .DA CSH.TMISMATCH .DA CSH.BOPS.SUBi8 .DA CSH.BOPS.SUBi16 .DA CSH.BOPS.SUBi32 diff --git a/BIN/CSH.S.CORE.txt b/BIN/CSH.S.CORE.txt index 809dbc41..a5f1b2c8 100644 --- a/BIN/CSH.S.CORE.txt +++ b/BIN/CSH.S.CORE.txt @@ -4,10 +4,13 @@ NEW *-------------------------------------- CSH.Init >SYSCALL SListNew bcs .9 + >STA.G CSH.hSymbols + >LDYAI 256 >SYSCALL GetMem bcs .9 + >STYA ZPCSHConst txa >STA.G CSH.hConst @@ -15,9 +18,11 @@ CSH.Init >SYSCALL SListNew >LDYAI 256 >SYSCALL GetMem bcs .9 + >STYA ZPCSHStack txa >STA.G CSH.hStack + lda #$0 >STA.G CSH.ConstPtr >STA.G CSH.StackPtr @@ -27,15 +32,18 @@ CSH.Init >SYSCALL SListNew .9 rts *-------------------------------------- CSH.Quit >LDA.G CSH.hSymbols + beq .1 + >SYSCALL SListFree - >LDA.G hFileBuf +.1 >LDA.G hFileBuf jsr .7 >LDA.G CSH.hStack jsr .7 + >LDA.G CSH.hConst - jsr .7 + .7 beq CSH.Quit.RTS >SYSCALL FreeMem CSH.Quit.RTS rts @@ -99,10 +107,16 @@ CSH.Run.1 cmp #'#' cmp #';' bne .99 bra .8 + .7 lda #0 no return value type check required jsr CSH.fCall bcs .9 + jsr CSH.SIZEOF X = returned value type + clc A = Sizeof + adc pStack + sta pStack Discard value on stack + .8 jsr CSH.GetNextCharNB Skip ; bcs .9 cmp #C.CR @@ -283,10 +297,14 @@ CSH.TYPE stx ZPVarType bne .2 ldx ZPVarType + jsr CSH.SIZEOF + .1 dec pStack dec bne .1 + + ldx ZPVarType bra .7 .2 cmp #'=' @@ -347,11 +365,14 @@ CSH.fCall ldx ZPPtr1 lda ZPPtr2 bne .11 + lda (ZPPtr1) sta ZPPtr2 bra .1 expected type is 0, no check + .11 cmp (ZPPtr1) Get Return value Type bne .91 + .1 inc ZPPtr1 advance to arg list type bne .2 inc ZPPtr1+1 @@ -452,7 +473,7 @@ CSH.ExpEval ldx ZPPtr1 ldx ZPPtr2+1 local : BOP1 phx - sta ZPPtr2 + sta ZPPtr2 local : expected type .10 lda #$ff sta ZPPtr2+1 Reset BOP1 @@ -464,7 +485,7 @@ CSH.ExpEval ldx ZPPtr1 jsr CSH.GetVar bcs .1 - ldx ZPPtr2 var type (could be 0=any) + ldx ZPPtr2 expected var type (could be 0=any) jsr CSH.GetVarValueOnStack Y,A = VarID, Get value on stack bcs .29 @@ -694,6 +715,7 @@ CSH.GetNumOnStack sta (pStack),y clc rts + .4 >PULLA inc pStack inc pStack @@ -799,24 +821,34 @@ CSH.GetVarValueOnStack bcs .9 ldx ZPVarType - beq .1 + beq .1 any type + cpx ZPVarData - bne .99 + beq .2 + + txa + and #CSH.Q.PPPOINTER + beq .99 not pointer....mismatch + + eor ZPVarData + and #CSH.Q.PPPOINTER + bne .99 compare only pointer depth + .1 ldx ZPVarData beq * - jsr CSH.SIZEOF +.2 jsr CSH.SIZEOF tay -.2 lda ZPVarData,y +.3 lda ZPVarData,y >PUSHA dey - bne .2 + bne .3 + clc X = Var Type .9 rts .99 -*-------------------------------------- -CSH.TMISSMATCH lda #CSH.E.TMISMATCH +CSH.TMISMATCH lda #CSH.E.TMISMATCH sec rts *-------------------------------------- @@ -961,23 +993,24 @@ CSH.BOPS.LOR CSH.CheckStack tax >LDA.G CSH.StackPtr beq .9 - dec + tay txa cmp (ZPCSHStack),y bne .9 + clc rts + .9 lda #CSH.E.SYNTAX sec rts *-------------------------------------- CSH.Push pha >LDA.G CSH.StackPtr - inc + dec beq .9 sta (pData),y - dec tay pla sta (ZPCSHStack),y @@ -991,14 +1024,15 @@ CSH.Push pha *-------------------------------------- CSH.Pop >LDA.G CSH.StackPtr beq .9 - dec + pha + inc sta (pData),y - tay + ply lda (ZPCSHStack),y clc rts -.9 lda #CSH.E.SYNTAX +.9 lda #CSH.E.STACKERR sec rts *-------------------------------------- @@ -1138,6 +1172,7 @@ CSH.IsDigit10 cmp #'0' CSH.SIZEOF txa and #CSH.Q.PPPOINTER bne .2 + txa and #$f phx @@ -1145,6 +1180,7 @@ CSH.SIZEOF txa lda CSH.TYPESIZE,x plx rts + .2 lda #2 rts *-------------------------------------- @@ -1184,16 +1220,18 @@ EXEC.getchar >SYSCALL getchar *-------------------------------------- EXEC.puts >PULLYA >SYSCALL puts - rts -*-------------------------------------- -EXEC.printf >SYSCALL printf2 - rts -*-------------------------------------- -EXEC.putenv >SYSCALL getenv >PUSHYA rts *-------------------------------------- -EXEC.setenv >SYSCALL getenv +EXEC.printf >SYSCALL printf2 + >PUSHYA + rts +*-------------------------------------- +EXEC.putenv >SYSCALL putenv + >PUSHYA + rts +*-------------------------------------- +EXEC.setenv >SYSCALL setenv >PUSHYA rts *-------------------------------------- @@ -1201,7 +1239,7 @@ EXEC.getenv >SYSCALL getenv >PUSHYA rts *-------------------------------------- -EXEC.unsetenv >SYSCALL getenv +EXEC.unsetenv >SYSCALL unsetenv >PUSHYA rts *-------------------------------------- diff --git a/BIN/CSH.S.txt b/BIN/CSH.S.txt index d8ebd93e..46febfa8 100644 --- a/BIN/CSH.S.txt +++ b/BIN/CSH.S.txt @@ -270,7 +270,7 @@ MSG.USAGE .AS "Usage : CSH