diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index b680ca1c..217aa6dd 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a1c3323d..23efc05c 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 37248b10..d422d875 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index dd2f7caa..c22043a8 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -5,9 +5,32 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -CSH.Reset ldy #CSH.hStack - lda (pData),y - bne .1 +CSH.TYPE.CHAR .EQ 1 +CSH.TYPE.INT .EQ 2 +CSH.TYPE.LONG .EQ 3 +CSH.TYPE.FLOAT .EQ 4 +*-------------------------------------- +CSH.Init >LDYAI 256 + >SYSCALL GetMemYA + bcs .9 + txa + ldy #CSH.hSymbols + sta (pData),y + + lda #0 + ldy #CSH.SymbolsPtr + sta (pData),y + + >LDYAI 256 + >SYSCALL GetMemYA + bcs .9 + txa + ldy #CSH.hData + sta (pData),y + + lda #0 + ldy #CSH.DataPtr + sta (pData),y >LDYAI 256 >SYSCALL GetMemYA @@ -16,18 +39,16 @@ CSH.Reset ldy #CSH.hStack ldy #CSH.hStack sta (pData),y -.1 lda #0 + lda #0 ldy #CSH.StackPtr sta (pData),y + * clc .9 rts *-------------------------------------- -CSH.Exec jsr CSH.GetBuffer +CSH.Run jsr CSH.GetBuf - ldy #CSH.hStack - lda (pData),y - >SYSCALL GetMemPtrA - >STYA ZPCSHStack + jsr CSH.GetPtrs ldy #0 @@ -68,7 +89,7 @@ CSH.Exec jsr CSH.GetBuffer sta (pData) jsr CSH.CheckKeyword - bcs .5 not an internal SCRipt keyword.... + bcs .5 not an internal CSH keyword.... lda #0 sta (pData) Reset Cmdline @@ -95,6 +116,81 @@ CSH.Exec jsr CSH.GetBuffer .80 clc .9 rts *-------------------------------------- +CSH.Quit ldy #CSH.hBuf + lda (pData),y + beq .1 + >SYSCALL FreeMemA + +.1 ldy #CSH.hStack + + lda (pData),y + beq .2 + >SYSCALL FreeMemA + +.2 ldy #CSH.hData + + lda (pData),y + beq .3 + >SYSCALL FreeMemA + +.3 ldy #CSH.hSymbols + + lda (pData),y + beq .8 + >SYSCALL FreeMemA + +.8 rts +*-------------------------------------- +CSH.GetBuf ldy #CSH.hBuf + lda (pData),y + >SYSCALL GetMemPtrA + >STYA ZPBufBase + + ldy #CSH.BufLen + lda (pData),y + clc + adc ZPBufBase + sta CSH.GetChar.LO+1 + + iny + lda (pData),y + adc ZPBufBase+1 + sta CSH.GetChar.HI+1 + +CSH.SetBufPtr ldy #CSH.BufPtr + lda (pData),y + clc + adc ZPBufBase + sta ZPBufPtr + + iny + lda (pData),y + adc ZPBufBase+1 + sta ZPBufPtr+1 + rts +*-------------------------------------- +CSH.GetPtrs ldy #CSH.hSymbols + lda (pData),y + >SYSCALL GetMemPtrA + >STYA ZPCSHSymbols + + ldy #CSH.hData + lda (pData),y + >SYSCALL GetMemPtrA + >STYA ZPCSHData + + ldy #CSH.hStack + lda (pData),y + >SYSCALL GetMemPtrA + >STYA ZPCSHStack + rts +*-------------------------------------- +CSH.SavePtr ldx ZPBufPtr + stx CSH.BufPtrSave + ldx ZPBufPtr+1 + stx CSH.BufPtrSave+1 + rts +*-------------------------------------- CSH.CheckKeyword phy >LDYA L.CSHCMDS @@ -142,40 +238,6 @@ CSH.CheckKeyword sec rts *-------------------------------------- -CSH.GetBuffer ldy #CSH.hBuf - lda (pData),y - >SYSCALL GetMemPtrA - >STYA ZPBufBase - - ldy #CSH.BufLen - lda (pData),y - clc - adc ZPBufBase - sta ZPBufEnd - - iny - lda (pData),y - adc ZPBufBase+1 - sta ZPBufEnd+1 - -CSH.SetBufPtr ldy #CSH.BufPtr - lda (pData),y - clc - adc ZPBufBase - sta ZPBufPtr - - iny - lda (pData),y - adc ZPBufBase+1 - sta ZPBufPtr+1 - rts -*-------------------------------------- -CSH.SavePtr ldx ZPBufPtr - stx CSH.BufPtrSave - ldx ZPBufPtr+1 - stx CSH.BufPtrSave+1 - rts -*-------------------------------------- CSH.WHILE CSH.IF jsr CSH.GetCharNB bcs .9 @@ -271,18 +333,69 @@ CSH.CONTINUE sec rts *-------------------------------------- -CSH.ExpEval stz CSH.ACC - stz CSH.ACC+1 - stz CSH.ACC+2 - stz CSH.ACC+3 +CSH.CHAR lda #CSH.TYPE.CHAR + bra CSH.TYPE +CSH.INT lda #CSH.TYPE.INT + bra CSH.TYPE +CSH.LONG lda #CSH.TYPE.LONG + bra CSH.TYPE +CSH.FLOAT lda #CSH.TYPE.FLOAT + +CSH.TYPE sta CSH.ACCT + + jsr CSH.GetChar + bcs .9 + cmp #' ' + bne .9 + + jsr CSH.GetIdentInCMD + bcs .9 + + jsr CSH.GetCharNB + bcs .9 + cmp #';' + beq .8 end of declaration, no value... + + cmp #'=' + bne .9 + + jsr CSH.GetNextCharNB + bcs .9 + + jsr CSH.ExpEval + bcs .9 + + jsr CSH.GetChar + bcs .9 + cmp #';' + bne .9 + +.8 jsr CSH.AddVar + bcs .99 + + jsr CSH.GetNextCharNB Skip ; + clc + rts + +.9 lda #CSHERR.SYNTAX + sec +.99 rts +*-------------------------------------- + + lda #CSHERR.SYNTAX + sec + rts +*-------------------------------------- +CSH.ExpEval jsr CSH.ZeroACC ldy #0 jsr CSH.GetCharNB - >DEBUG bcs .9 cmp #')' beq .8 + cmp #';' + beq .8 jsr CSH.IsLetter Fnc or Var ? bcs .1 @@ -303,24 +416,46 @@ CSH.ExpEval stz CSH.ACC sec .99 rts *-------------------------------------- +CSH.GetIdentInCMD + ldy #0 + + jsr CSH.GetNextCharNB + bcs .9 + jsr CSH.IsLetter + bcs .9 + +.1 iny + sta CMD,y + jsr CSH.GetNextChar + bcs .8 + + jsr CSH.IsLetterOrDigit + bcc .1 + +.8 sty CMD + clc + rts + +.9 lda #CSHERR.SYNTAX + sec + rts +*-------------------------------------- CSH.GetNumInACC ldy #0 .1 iny cpy #10 beq .9 - sta (pData),y - - jsr CSH.GetNextChar + sta ARGS,y + jsr CSH.GetNextChar bcs .8 jsr CSH.IsDigit bcc .1 -.8 tya - sta (pData) +.8 sty ARGS - >PUSHW pData >PUSHW L.CSH.ACC + >PUSHW L.ARGS >SYSCALL AToI bcs .9 rts @@ -329,6 +464,156 @@ CSH.GetNumInACC ldy #0 sec rts *-------------------------------------- +CSH.ZeroACC stz CSH.ACC + stz CSH.ACC+1 + stz CSH.ACC+2 + stz CSH.ACC+3 + rts +*-------------------------------------- +* Vars... +*-------------------------------------- +CSH.AddVar jsr CSH.FindVar + bcc .97 + + ldy #CSH.SymbolsPtr + lda (pData),y + + sec + adc ARGS + bcs .99 + + adc #2 TYPE + OFS + bcs .99 + + ldy #CSH.DataPtr + lda (pData),y + pha + + ldx CSH.ACCT +* clc + adc CSH.TSIZE,x + bcs .98 + + ldx #$ff + + ldy #CSH.SymbolsPtr + lda (pData),y + tay + +.10 inx + lda CMD,x + sta (ZPCSHSymbols),y + iny + cpx CMD + bne .10 + + lda CSH.ACCT + sta (ZPCSHSymbols),y + + iny + pla Get Back Data OFS + pha + sta (ZPCSHSymbols),y + iny + + tya + ldy #CSH.SymbolsPtr + sta (pData),y + + ply Get Back Data OFS again + + ldx CSH.ACCT + lda CSH.TSIZE,x + + ldx #0 + +.1 pha + lda CSH.ACC,x + sta (ZPCSHData),y + iny + inx + pla + dec + bne .1 + + tya + ldy #CSH.DataPtr + sta (pData),y + + clc + rts + +.97 lda #CSHERR.DUP + sec + rts + +.98 pla +.99 lda #CSHERR.OOM + sec + rts +*-------------------------------------- +CSH.SetVar + + clc + rts +*-------------------------------------- +CSH.GetVar + + clc + rts +*-------------------------------------- +CSH.FindVar >LDYA ZPCSHSymbols + >STYA ZPPTR1 + +.1 ldy #0 + + lda (ZPPTR1),y + beq .9 + + cmp CMD + bne .4 + + pha Save Name len... + + ldx #0 + +.2 iny + inx + lda (ZPPTR1),y + cmp CMD,x + bne .3 + + cpx CMD + bne .2 + + pla + sec + adc ZPPTR1 + sta ZPPTR1 + bcc .8 + inc ZPPTR1+1 + + clc +.8 rts + +.3 pla +.4 sec + adc ZPPTR1 + bcc .5 + inc ZPPTR1+1 + clc + +.5 adc #2 Skip Type+OFS + sta ZPPTR1 + bcc .1 + inc ZPPTR1+1 + bra .1 + +.9 sec + rts +*-------------------------------------- +* Stack +*-------------------------------------- CSH.Push pha ldy #CSH.StackPtr lda (pData),y @@ -383,6 +668,8 @@ CSH.CheckStack pha sec rts *-------------------------------------- +* CHAR related Subs..... +*-------------------------------------- CSH.GetCharNB jsr CSH.GetChar bcs CSH.GetNextCharNB.RTS jsr CSH.CheckCharNB @@ -426,18 +713,18 @@ CSH.GetNextChar phy inc ZPBufPtr+1 *-------------------------------------- CSH.GetChar lda ZPBufPtr - eor ZPBufEnd - bne .1 +CSH.GetChar.LO eor #$ff Self Modified + bne CSH.GetChar.8 lda ZPBufPtr+1 - eor ZPBufEnd+1 - bne .1 +CSH.GetChar.HI eor #$ff Self Modified + bne CSH.GetChar.8 lda #MLI.ERR.EOF sec rts -.1 lda (ZPBufPtr) +CSH.GetChar.8 lda (ZPBufPtr) clc rts *--------------------------------------- diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 22d94116..4e2c217c 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -15,9 +15,10 @@ AUTO 6 ZPPTR1 .EQ ZPBIN ZPPTR2 .EQ ZPBIN+2 ZPPTR3 .EQ ZPBIN+4 -ZPBufBase .EQ ZPBIN+8 -ZPBufPtr .EQ ZPBIN+10 -ZPBufEnd .EQ ZPBIN+12 +ZPBufBase .EQ ZPBIN+6 +ZPBufPtr .EQ ZPBIN+8 +ZPCSHSymbols .EQ ZPBIN+10 +ZPCSHData .EQ ZPBIN+12 ZPCSHStack .EQ ZPBIN+14 *-------------------------------------- CmdLine.MAX .EQ 127 @@ -26,6 +27,9 @@ CSH.Stack.MAX .EQ 15 CSHERR.SYNTAX .EQ $7F CSHERR.SOVERFLW .EQ $7E CSHERR.NOVERFLW .EQ $7D +CSHERR.OOM .EQ $7C +CSHERR.DUP .EQ $7B +CSHERR.UNDEF .EQ $7A *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -78,6 +82,10 @@ J.CSHCMDS .DA CSH.IF .DA CSH.WHILE .DA CSH.BREAK .DA CSH.CONTINUE + .DA CSH.CHAR + .DA CSH.INT + .DA CSH.LONG + .DA CSH.FLOAT J.CSHCMDS.END .DA CSH.IF.END .DA CSH.WHILE.END L.CSH.ACC .DA CSH.ACC @@ -121,7 +129,7 @@ CS.INIT jsr SetPWD lda #$FF sta (pData),y - jmp CSH.Reset + jmp CSH.Init .1 jsr HIS.Init bcs .9 @@ -239,13 +247,16 @@ CS.RUN.READ lda #0 plp rts *-------------------------------------- -CS.RUN.BATCH jsr CSH.Exec +CS.RUN.BATCH jsr CSH.Run bcs .9 - jsr Cmd.Normalize lda (pData) beq .8 Empty line....nothing to do.... + jsr Cmd.Normalize + lda (pData) + beq .8 + >LDYA pData jsr Cmd.ExecYA @@ -255,9 +266,12 @@ CS.RUN.BATCH jsr CSH.Exec rts .9 cmp #MLI.ERR.EOF - beq .98 + bne .7 + lda #0 + sec + rts - pha +.7 pha ldy #CSH.BufPtr+1 >PUSHB (pData),y @@ -454,18 +468,9 @@ CS.CHARIN.CTRL cpx #13 CR *-------------------------------------- CS.QUIT jsr HIS.Quit - ldy #CSH.hBuf - lda (pData),y - beq .1 - >SYSCALL FreeMemA + jsr CSH.Quit -.1 ldy #CSH.hStack - - lda (pData),y - beq .8 - >SYSCALL FreeMemA - -.8 clc + clc rts *-------------------------------------- CheckSleep ldy #Sleep+3 @@ -541,6 +546,10 @@ CSHCMDS >PSTR "IF" >PSTR "WHILE" >PSTR "BREAK" >PSTR "CONTINUE" + >PSTR "CHAR" + >PSTR "INT" + >PSTR "LONG" + >PSTR "FLOAT" .HS 00 *-------------------------------------- MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n" @@ -561,8 +570,11 @@ ARGS .BS 256 TIME .BS S.TIME STAT .BS S.STAT bStartProc .BS 1 -CSH.ACC .BS 4 -CSH.ARG .BS 4 +CSH.TSIZE .HS 0001020405 00,CHAR,INT,LONG,FLOAT.... +CSH.ACCT .BS 1 +CSH.ACC .BS 5 +CSH.ARGT .BS 1 +CSH.ARG .BS 5 *-------------------------------------- .DUMMY .OR 0 @@ -582,11 +594,14 @@ Sleep .BS 4 CSH.hBuf .BS 1 CSH.BufPtr .BS 2 CSH.BufLen .BS 2 -CSH.CmdSave .BS 1 -CSH.SepSave .BS 1 CSH.BufPtrSave .BS 2 +CSH.hSymbols .BS 1 +CSH.SymbolsPtr .BS 1 +CSH.hData .BS 1 +CSH.DataPtr .BS 1 CSH.hStack .BS 1 CSH.StackPtr .BS 1 +CSH.CmdSave .BS 1 DS.END .ED *-------------------------------------- MAN