mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-11 10:29:46 +00:00
Kernel 0.9.1 : SHELL, CSH style scripting.....(wip)
This commit is contained in:
parent
a4d5f42fda
commit
b028f95781
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -40,31 +40,18 @@ L.MSG.CTRLCHAR .DA MSG.CTRLCHAR
|
|||||||
L.ASCII .DA ASCII
|
L.ASCII .DA ASCII
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT ldy #S.PS.ARGC
|
CS.INIT
|
||||||
lda (pPs),y
|
.1 >INC.G ArgCount
|
||||||
beq .99
|
|
||||||
|
|
||||||
>STA.G ArgCount
|
|
||||||
|
|
||||||
.1 >LDA.G ArgCount
|
|
||||||
dec
|
|
||||||
bmi .5
|
|
||||||
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
>SYSCALL GetArg.A
|
>SYSCALL GetArg.A
|
||||||
|
bcs .7
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldy #1
|
lda (ZPPtr1)
|
||||||
lda (ZPPtr1),y
|
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
lda (ZPPtr1)
|
ldy #1
|
||||||
cmp #2
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
ldx OptionList
|
ldx OptionList
|
||||||
@ -85,12 +72,10 @@ CS.INIT ldy #S.PS.ARGC
|
|||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.4 >LDA.G FileCount
|
.4 >INC.G FileCount
|
||||||
inc
|
|
||||||
sta (pData),y
|
|
||||||
bra .1 scan for any other args
|
bra .1 scan for any other args
|
||||||
|
|
||||||
.5 >LDA.G FileCount
|
.7 >LDA.G FileCount
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
@ -128,16 +113,13 @@ CS.RUN >SYSCALL GetChar
|
|||||||
>LDA.G hFILE
|
>LDA.G hFILE
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.1 >LDA.G ArgIndex
|
.1 >INC.G ArgIndex
|
||||||
inc
|
|
||||||
sta (pData),y
|
|
||||||
>SYSCALL GetArg.A
|
>SYSCALL GetArg.A
|
||||||
bcs .99 No more arg...the end!
|
bcs .99 No more arg...the end!
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldy #1
|
lda (ZPPtr1)
|
||||||
lda (ZPPtr1),y
|
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
beq .1 An option, skip...
|
beq .1 An option, skip...
|
||||||
|
|
||||||
|
@ -87,7 +87,8 @@ CS.RUN >SYSCALL Sleep
|
|||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs CS.RUN
|
bcs CS.RUN
|
||||||
|
|
||||||
.11 jsr PRINTA2
|
.11
|
||||||
|
* jsr PRINTA2
|
||||||
>SYSCALL Sleep
|
>SYSCALL Sleep
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ CS.RUN.LOOP
|
|||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .4
|
bcs .4
|
||||||
|
|
||||||
jsr PRINTA
|
* jsr PRINTA
|
||||||
|
|
||||||
cmp #IAC
|
cmp #IAC
|
||||||
beq CS.RUN.IACMODE
|
beq CS.RUN.IACMODE
|
||||||
@ -144,22 +145,22 @@ CS.RUN.IACMODE >SYSCALL Sleep Wait for IAC VERB (or SB)
|
|||||||
bcs CS.RUN.IACMODE
|
bcs CS.RUN.IACMODE
|
||||||
|
|
||||||
>STA.G IAC.VERB
|
>STA.G IAC.VERB
|
||||||
jsr PRINTA
|
* jsr PRINTA
|
||||||
|
|
||||||
.1 >SYSCALL Sleep Wait for IAC OPT
|
.1 >SYSCALL Sleep Wait for IAC OPT
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
>STA.G IAC.OPT
|
>STA.G IAC.OPT
|
||||||
jsr PRINTA
|
* jsr PRINTA
|
||||||
|
|
||||||
>LDA.G IAC.VERB
|
>LDA.G IAC.VERB
|
||||||
cmp #SB
|
cmp #SB
|
||||||
beq CS.RUN.IACSB
|
beq CS.RUN.IACSB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.IACVERB
|
CS.RUN.IACVERB
|
||||||
lda #'.'
|
* lda #'.'
|
||||||
>SYSCALL PutChar.A
|
* >SYSCALL PutChar.A
|
||||||
jmp CS.RUN.LOOP
|
jmp CS.RUN.LOOP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.IACSB
|
CS.RUN.IACSB
|
||||||
@ -169,7 +170,7 @@ CS.RUN.IACSB
|
|||||||
|
|
||||||
>STA.G IAC.SB
|
>STA.G IAC.SB
|
||||||
|
|
||||||
jsr PRINTA
|
* jsr PRINTA
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (pData) reset IAC.SB.DATA
|
sta (pData) reset IAC.SB.DATA
|
||||||
@ -182,7 +183,7 @@ CS.RUN.IACSB
|
|||||||
beq .4 end of DATA, go wait SE
|
beq .4 end of DATA, go wait SE
|
||||||
|
|
||||||
pha
|
pha
|
||||||
jsr PRINTA
|
* jsr PRINTA
|
||||||
|
|
||||||
ldy #IAC.SB.DATA-1
|
ldy #IAC.SB.DATA-1
|
||||||
|
|
||||||
@ -216,8 +217,9 @@ CS.RUN.IACSB
|
|||||||
>PUSHW L.ENV.TERM
|
>PUSHW L.ENV.TERM
|
||||||
>SYSCALL SetEnv
|
>SYSCALL SetEnv
|
||||||
|
|
||||||
.8 lda #':'
|
.8
|
||||||
>SYSCALL PutChar.A
|
* lda #':'
|
||||||
|
* >SYSCALL PutChar.A
|
||||||
jmp CS.RUN.LOOP
|
jmp CS.RUN.LOOP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
|
@ -69,7 +69,7 @@ CSH.Run lda #0
|
|||||||
|
|
||||||
jsr CSH.Pop was expected, get stacked Cmd...
|
jsr CSH.Pop was expected, get stacked Cmd...
|
||||||
tax
|
tax
|
||||||
jmp (J.CSHCMDS.END,x)
|
jmp (J.CSH.KEYWORDS.END,x)
|
||||||
|
|
||||||
.1 cmp #$0D
|
.1 cmp #$0D
|
||||||
bne .2
|
bne .2
|
||||||
@ -87,14 +87,14 @@ CSH.Run lda #0
|
|||||||
|
|
||||||
bra .9 error, todo : PREOPS ++ --.....
|
bra .9 error, todo : PREOPS ++ --.....
|
||||||
|
|
||||||
.3 >LDYA L.CSHCMDS
|
.3 >LDYA L.CSH.KEYWORDS
|
||||||
jsr CSH.IsKeyword
|
jsr CSH.IsKeyword
|
||||||
bcs .4 not an internal CSH keyword....
|
bcs .4 not an internal CSH keyword....
|
||||||
|
|
||||||
txa
|
txa
|
||||||
>STA.G CSH.CmdSave
|
>STA.G CSH.CmdSave
|
||||||
|
|
||||||
jmp (J.CSHCMDS,x)
|
jmp (J.CSH.KEYWORDS,x)
|
||||||
|
|
||||||
.4 jsr CSH.GetVar Y=Ptr To Value
|
.4 jsr CSH.GetVar Y=Ptr To Value
|
||||||
bcs .5
|
bcs .5
|
||||||
@ -113,7 +113,7 @@ CSH.Run lda #0
|
|||||||
ply
|
ply
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CSH.SetVarValueAtY
|
jsr CSH.SetVarValue
|
||||||
bcs .9
|
bcs .9
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .99
|
bne .99
|
||||||
@ -126,28 +126,31 @@ CSH.Run lda #0
|
|||||||
|
|
||||||
.5
|
.5
|
||||||
|
|
||||||
|
|
||||||
jsr CSH.RestorePtr Restore ptr to get full cmd line to execute
|
jsr CSH.RestorePtr Restore ptr to get full cmd line to execute
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
ldy #$0
|
||||||
|
|
||||||
ldy #0
|
.6 lda (ZPCSHBufPtr),y
|
||||||
|
beq .7
|
||||||
|
|
||||||
.6 cmp #13
|
cmp #13
|
||||||
beq .7
|
beq .7
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCMDBuf),y
|
||||||
iny
|
iny
|
||||||
cpy #CmdLine.MAX
|
cpy #CmdLine.MAX
|
||||||
beq .8
|
bne .6
|
||||||
|
bra .99 Line Too long !!!
|
||||||
|
|
||||||
jsr CSH.GetNextChar
|
.7 tya
|
||||||
bcc .6
|
clc
|
||||||
bra .8
|
adc ZPCSHBufPtr
|
||||||
|
sta ZPCSHBufPtr
|
||||||
.7 jsr CSH.GetNextCharNB Skip CR
|
bcc .8
|
||||||
|
inc ZPCSHBufPtr+1
|
||||||
|
|
||||||
.8 lda #0
|
.8 lda #0
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCMDBuf),y
|
||||||
|
|
||||||
tya
|
tya
|
||||||
>STA.G CmdBuflen
|
>STA.G CmdBuflen
|
||||||
lda #$ff
|
lda #$ff
|
||||||
@ -181,16 +184,12 @@ CSH.Quit >LDA.G CSH.hBuf
|
|||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.SavePtr phy
|
CSH.SavePtr >LDYA ZPCSHBufPtr
|
||||||
>LDYA ZPCSHBufPtr
|
|
||||||
>STYA.G CSH.BufPtrSave
|
>STYA.G CSH.BufPtrSave
|
||||||
ply
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.RestorePtr phy
|
CSH.RestorePtr >LDYA.G CSH.BufPtrSave
|
||||||
>LDYA.G CSH.BufPtrSave
|
|
||||||
>STYA ZPCSHBufPtr
|
>STYA ZPCSHBufPtr
|
||||||
ply
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.IsKeyword >STYA ZPPtr1
|
CSH.IsKeyword >STYA ZPPtr1
|
||||||
@ -245,6 +244,69 @@ CSH.IsKeyword >STYA ZPPtr1
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
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.G CSH.ACCT
|
||||||
|
|
||||||
|
jsr CSH.GetChar
|
||||||
|
bcs .9
|
||||||
|
cmp #' '
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CSH.GetNextCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CSH.IsLetter
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CSH.GetVar Already exists ?
|
||||||
|
bcc .90
|
||||||
|
|
||||||
|
jsr CSH.AddVar No, add with undefined value...
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CSH.GetCharNB
|
||||||
|
bcs .9
|
||||||
|
cmp #';'
|
||||||
|
beq .8 end of declaration, no value...
|
||||||
|
|
||||||
|
cmp #'='
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CSH.GetNextCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
phy Save Ptr To Value
|
||||||
|
jsr CSH.ExpEval
|
||||||
|
ply
|
||||||
|
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CSH.SetVarValue Update value to this var
|
||||||
|
|
||||||
|
jsr CSH.GetChar
|
||||||
|
bcs .9
|
||||||
|
cmp #';'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.8 jsr CSH.GetNextCharNB Skip ;
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.90 lda #CSH.E.DUP
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #CSH.E.SYNTAX
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
CSH.WHILE
|
CSH.WHILE
|
||||||
CSH.IF jsr CSH.GetCharNB
|
CSH.IF jsr CSH.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -333,78 +395,18 @@ CSH.WHILE.END jsr CSH.Pop
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CSH.ELSE
|
||||||
|
CSH.DO
|
||||||
|
CSH.FOR
|
||||||
|
CSH.SWITCH
|
||||||
|
CSH.CASE
|
||||||
CSH.BREAK
|
CSH.BREAK
|
||||||
*--------------------------------------
|
|
||||||
CSH.CONTINUE
|
CSH.CONTINUE
|
||||||
|
|
||||||
lda #CSH.E.SYNTAX
|
lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
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.G CSH.ACCT
|
|
||||||
|
|
||||||
jsr CSH.GetChar
|
|
||||||
bcs .9
|
|
||||||
cmp #' '
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
jsr CSH.GetNextCharNB
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CSH.IsLetter
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CSH.GetVar Already exists ?
|
|
||||||
bcc .90
|
|
||||||
|
|
||||||
jsr CSH.AddVar No, add with undefined value...
|
|
||||||
bcs .99
|
|
||||||
* Y=Ptr in DATA to Value
|
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
|
||||||
bcs .9
|
|
||||||
cmp #';'
|
|
||||||
beq .8 end of declaration, no value...
|
|
||||||
|
|
||||||
cmp #'='
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
jsr CSH.GetNextCharNB
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
phy Save Ptr To Value
|
|
||||||
jsr CSH.ExpEval
|
|
||||||
ply
|
|
||||||
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CSH.SetVarValueAtY Update value to this var
|
|
||||||
|
|
||||||
jsr CSH.GetChar
|
|
||||||
bcs .9
|
|
||||||
cmp #';'
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
.8 jsr CSH.GetNextCharNB Skip ;
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.90 lda #CSH.E.DUP
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #CSH.E.SYNTAX
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CSH.ExpEval jsr CSH.ZeroACC
|
CSH.ExpEval jsr CSH.ZeroACC
|
||||||
|
|
||||||
jsr CSH.GetCharNB
|
jsr CSH.GetCharNB
|
||||||
@ -449,7 +451,7 @@ CSH.GetNumInACC >LDA.G CSH.ACCT
|
|||||||
>PUSHWI ZPCSHBufPtr
|
>PUSHWI ZPCSHBufPtr
|
||||||
>PUSHW ZPCSHBufPtr
|
>PUSHW ZPCSHBufPtr
|
||||||
>PUSHEA.G CSH.ACC
|
>PUSHEA.G CSH.ACC
|
||||||
>DEBUG
|
|
||||||
>SYSCALL StrToL
|
>SYSCALL StrToL
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -467,13 +469,14 @@ CSH.ZeroACC lda #0
|
|||||||
* Vars...
|
* Vars...
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.AddVar jsr CSH.GetIdentLen
|
CSH.AddVar jsr CSH.GetIdentLen
|
||||||
|
|
||||||
sec
|
sec
|
||||||
>ADC.G CSH.SymbolsPtr
|
>ADC.G CSH.SymbolsPtr Enough room to store this symbol ?
|
||||||
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
adc #1 OFS
|
adc #1 Add One Byte for storing Ptr to DATA
|
||||||
bcs .99
|
bcs .99 Out of Symbols space
|
||||||
|
|
||||||
>LDA.G CSH.DataPtr
|
>LDA.G CSH.DataPtr
|
||||||
pha
|
pha
|
||||||
@ -482,58 +485,44 @@ CSH.AddVar jsr CSH.GetIdentLen
|
|||||||
tax
|
tax
|
||||||
sec +1 for Type
|
sec +1 for Type
|
||||||
adc CSH.TSIZE,x
|
adc CSH.TSIZE,x
|
||||||
bcs .98 Out of memory
|
bcs .98 Out of Data Space
|
||||||
|
|
||||||
>LDA.G CSH.SymbolsPtr
|
>LDA.G CSH.SymbolsPtr
|
||||||
tay
|
pha
|
||||||
|
|
||||||
|
jsr CSH.GetIdentLen
|
||||||
|
|
||||||
|
ply
|
||||||
|
sta (ZPCSHSymbols),y
|
||||||
|
iny
|
||||||
|
|
||||||
jsr CSH.GetChar
|
jsr CSH.GetChar
|
||||||
|
|
||||||
.1 sta (ZPCSHSymbols),y
|
.1 sta (ZPCSHSymbols),y Store this symbol....
|
||||||
iny
|
iny
|
||||||
jsr CSH.GetNextChar
|
jsr CSH.GetNextChar
|
||||||
|
|
||||||
jsr CSH.IsLetterOrDigit
|
jsr CSH.IsLetterOrDigit
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
pla Get Back Data OFS
|
pla Get Back Data Ptr
|
||||||
pha
|
pha
|
||||||
|
|
||||||
sta (ZPCSHSymbols),y
|
sta (ZPCSHSymbols),y
|
||||||
iny
|
iny
|
||||||
|
|
||||||
tya
|
tya
|
||||||
>STA.G CSH.SymbolsPtr
|
>STA.G CSH.SymbolsPtr Mark new end of Symbols
|
||||||
|
|
||||||
>LEA.G CSH.ACCT
|
pla Get again Data Ptr
|
||||||
>STYA ZPPtr1 ACCT/ACC in ZPPtr1
|
|
||||||
|
|
||||||
ply Get Back Data OFS again
|
|
||||||
phy
|
|
||||||
|
|
||||||
lda (ZPPtr1)
|
|
||||||
sta (ZPCSHSymbols),y Add Type to Data
|
|
||||||
iny
|
|
||||||
|
|
||||||
tax
|
|
||||||
lda CSH.TSIZE,x A = byte count to store
|
|
||||||
|
|
||||||
tax
|
|
||||||
|
|
||||||
.2 inc ZPPtr1
|
|
||||||
bne .3
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.3 lda (ZPPtr1)
|
|
||||||
sta (ZPCSHData),y
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
tya
|
|
||||||
>STA.G CSH.DataPtr
|
|
||||||
|
|
||||||
ply Exit with Y=Data Offset
|
|
||||||
clc
|
clc
|
||||||
|
adc ZPCSHData
|
||||||
|
sta ZPCSHValue
|
||||||
|
lda #0
|
||||||
|
adc ZPCSHData+1
|
||||||
|
sta ZPCSHValue+1
|
||||||
|
|
||||||
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 pla
|
.98 pla
|
||||||
@ -541,8 +530,19 @@ CSH.AddVar jsr CSH.GetIdentLen
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.SetVarValueAtY
|
CSH.SetVarValue >LDA.G CSH.ACCT
|
||||||
|
tax
|
||||||
|
lda CSH.TSIZE,x
|
||||||
|
tax
|
||||||
|
|
||||||
|
>LDA.G CSH.ACCT
|
||||||
|
tay
|
||||||
|
|
||||||
|
.1 lda (pData),y
|
||||||
|
sta (ZPCSHValue),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bpl .1 +1 for ACCT
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -550,7 +550,7 @@ CSH.GetVar >LDYA ZPCSHSymbols
|
|||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
jsr CSH.GetIdentLen
|
jsr CSH.GetIdentLen
|
||||||
phy
|
pha
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1)
|
||||||
beq .9
|
beq .9
|
||||||
@ -570,16 +570,36 @@ CSH.GetVar >LDYA ZPCSHSymbols
|
|||||||
tya
|
tya
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
lda (ZPPtr1)
|
||||||
|
inc
|
||||||
|
tay
|
||||||
|
lda (ZPPtr1),y Get Ptr to DATA
|
||||||
|
clc
|
||||||
|
adc ZPCSHData
|
||||||
|
sta ZPCSHValue
|
||||||
|
lda #0
|
||||||
|
adc ZPCSHData+1
|
||||||
|
sta ZPCSHValue+1
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
jsr CSH.VarSkipName
|
clc
|
||||||
|
adc ZPCSHBufPtr
|
||||||
|
sta ZPCSHBufPtr
|
||||||
|
bcc .8
|
||||||
|
inc ZPCSHBufPtr+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.8 rts
|
.8 rts
|
||||||
|
|
||||||
.3 jsr CSH.VarSkipName
|
.3 lda (ZPPtr1)
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .4
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.5 inc ZPPtr1 Skip Pointer to TYPE/DATA
|
.4 inc ZPPtr1 Skip Pointer to TYPE/DATA
|
||||||
bne .1
|
bne .1
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
bra .1
|
bra .1
|
||||||
@ -588,14 +608,6 @@ CSH.GetVar >LDYA ZPCSHSymbols
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.VarSkipName lda (ZPPtr1)
|
|
||||||
sec
|
|
||||||
adc ZPPtr1
|
|
||||||
sta ZPPtr1
|
|
||||||
bcc .8
|
|
||||||
inc ZPPtr1+1
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Stack
|
* Stack
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.Push pha
|
CSH.Push pha
|
||||||
@ -658,7 +670,9 @@ CSH.GetIdentLen ldy #0
|
|||||||
|
|
||||||
jsr CSH.IsLetterOrDigit
|
jsr CSH.IsLetterOrDigit
|
||||||
bcc .1
|
bcc .1
|
||||||
.8 rts
|
|
||||||
|
.8 tya
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.GetCharNB jsr CSH.GetChar
|
CSH.GetCharNB jsr CSH.GetChar
|
||||||
bcs CSH.GetNextCharNB.RTS
|
bcs CSH.GetNextCharNB.RTS
|
||||||
@ -775,6 +789,8 @@ CSH.ErrorMsg >LDA.G CSH.hBuf
|
|||||||
lda #$0A
|
lda #$0A
|
||||||
>SYSCALL PutChar.A
|
>SYSCALL PutChar.A
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lda ZPCSHBufPtr
|
lda ZPCSHBufPtr
|
||||||
sec
|
sec
|
||||||
sbc ZPPtr2
|
sbc ZPPtr2
|
||||||
|
113
SBIN/SHELL.S.txt
113
SBIN/SHELL.S.txt
@ -12,13 +12,13 @@ AUTO 6
|
|||||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||||
.INB /A2OSX.BUILD/INC/MLI.ERR.I
|
.INB /A2OSX.BUILD/INC/MLI.ERR.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPTR1 .EQ ZPBIN
|
ZPPtr1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPtr2 .EQ ZPBIN+2
|
||||||
ZPCMDBuf .EQ ZPBIN+4
|
ZPCMDBuf .EQ ZPBIN+4
|
||||||
*ZPCSHBufBase .EQ ZPBIN+6
|
ZPCSHBufPtr .EQ ZPBIN+6
|
||||||
ZPCSHBufPtr .EQ ZPBIN+8
|
ZPCSHSymbols .EQ ZPBIN+8
|
||||||
ZPCSHSymbols .EQ ZPBIN+10
|
ZPCSHData .EQ ZPBIN+10
|
||||||
ZPCSHData .EQ ZPBIN+12
|
ZPCSHValue .EQ ZPBIN+12
|
||||||
ZPCSHStack .EQ ZPBIN+14
|
ZPCSHStack .EQ ZPBIN+14
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CmdLine.MAX .EQ 255
|
CmdLine.MAX .EQ 255
|
||||||
@ -83,16 +83,22 @@ J.INTCMDS .DA Cmd.Exec.CD
|
|||||||
.DA Cmd.Exec.SLEEP
|
.DA Cmd.Exec.SLEEP
|
||||||
.DA Cmd.Exec.STARTPROC
|
.DA Cmd.Exec.STARTPROC
|
||||||
.DA Cmd.Exec.TIME
|
.DA Cmd.Exec.TIME
|
||||||
L.CSHCMDS .DA CSHCMDS
|
L.CSH.KEYWORDS .DA CSH.KEYWORDS
|
||||||
J.CSHCMDS .DA CSH.IF
|
J.CSH.KEYWORDS .DA CSH.CHAR
|
||||||
.DA CSH.WHILE
|
|
||||||
.DA CSH.BREAK
|
|
||||||
.DA CSH.CONTINUE
|
|
||||||
.DA CSH.CHAR
|
|
||||||
.DA CSH.INT
|
.DA CSH.INT
|
||||||
.DA CSH.LONG
|
.DA CSH.LONG
|
||||||
.DA CSH.FLOAT
|
.DA CSH.FLOAT
|
||||||
J.CSHCMDS.END .DA CSH.IF.END
|
.DA CSH.IF
|
||||||
|
.DA CSH.WHILE
|
||||||
|
.DA CSH.ELSE
|
||||||
|
.DA CSH.DO
|
||||||
|
.DA CSH.FOR
|
||||||
|
.DA CSH.SWITCH
|
||||||
|
.DA CSH.CASE
|
||||||
|
.DA CSH.BREAK
|
||||||
|
.DA CSH.CONTINUE
|
||||||
|
J.CSH.KEYWORDS.END
|
||||||
|
.DA CSH.IF.END
|
||||||
.DA CSH.WHILE.END
|
.DA CSH.WHILE.END
|
||||||
L.ERR.Codes .DA ERR.Codes
|
L.ERR.Codes .DA ERR.Codes
|
||||||
L.ERR.Messages .DA ERR.Messages
|
L.ERR.Messages .DA ERR.Messages
|
||||||
@ -470,15 +476,80 @@ INTCMDS >CSTR "CD"
|
|||||||
>CSTR "STARTPROC"
|
>CSTR "STARTPROC"
|
||||||
>CSTR "TIME"
|
>CSTR "TIME"
|
||||||
.HS 00
|
.HS 00
|
||||||
CSHCMDS >PSTR "IF"
|
*--------------------------------------
|
||||||
>PSTR "WHILE"
|
* Pre Operators: + - ! ~ ++ --
|
||||||
>PSTR "BREAK"
|
*--------------------------------------
|
||||||
>PSTR "CONTINUE"
|
CSH.PREOOPS >PSTR "+"
|
||||||
>PSTR "CHAR"
|
>PSTR "-"
|
||||||
>PSTR "INT"
|
>PSTR "!"
|
||||||
>PSTR "LONG"
|
>PSTR "~"
|
||||||
>PSTR "FLOAT"
|
*--------------------------------------
|
||||||
|
* Post Operators: ++ --
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.POSTOPS >PSTR "++"
|
||||||
|
>PSTR "--"
|
||||||
.HS 00
|
.HS 00
|
||||||
|
*-- Binary ---- H to L prececence -----
|
||||||
|
* Arithmetic Operators: * / %
|
||||||
|
* Arithmetic Operators: + -
|
||||||
|
* Shift Operators: << >>
|
||||||
|
* Relational Operators: < > >= < >= == !=
|
||||||
|
* Bitwise Operators: & | ^ ~
|
||||||
|
* Logical Operators: && ||
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.BOPS >PSTR "+"
|
||||||
|
>PSTR "-"
|
||||||
|
>PSTR "*"
|
||||||
|
>PSTR "/"
|
||||||
|
>PSTR "%"
|
||||||
|
>PSTR "<<"
|
||||||
|
>PSTR ">>"
|
||||||
|
>PSTR "<"
|
||||||
|
>PSTR ">"
|
||||||
|
>PSTR ">="
|
||||||
|
>PSTR "<"
|
||||||
|
>PSTR ">="
|
||||||
|
>PSTR "=="
|
||||||
|
>PSTR "!="
|
||||||
|
>PSTR "&"
|
||||||
|
>PSTR "|"
|
||||||
|
>PSTR "^"
|
||||||
|
>PSTR "~"
|
||||||
|
>PSTR "&&"
|
||||||
|
>PSTR "||"
|
||||||
|
.HS 00
|
||||||
|
*--------------------------------------
|
||||||
|
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.AOPS >PSTR "="
|
||||||
|
>PSTR "+="
|
||||||
|
>PSTR "-="
|
||||||
|
>PSTR "*="
|
||||||
|
>PSTR "/="
|
||||||
|
>PSTR "%="
|
||||||
|
>PSTR "<<="
|
||||||
|
>PSTR ">>="
|
||||||
|
>PSTR "&="
|
||||||
|
>PSTR "^="
|
||||||
|
>PSTR "!="
|
||||||
|
.HS 00
|
||||||
|
*--------------------------------------
|
||||||
|
* Reserved Keywords:
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.KEYWORDS >PSTR "char"
|
||||||
|
>PSTR "int"
|
||||||
|
>PSTR "long"
|
||||||
|
>PSTR "float"
|
||||||
|
>PSTR "if"
|
||||||
|
>PSTR "while"
|
||||||
|
>PSTR "else"
|
||||||
|
>PSTR "do"
|
||||||
|
>PSTR "for"
|
||||||
|
>PSTR "switch"
|
||||||
|
>PSTR "case"
|
||||||
|
.HS 00
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.OPChars >PSTR "!~+-*/%=&|^&<>"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n"
|
MSG.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n"
|
||||||
MSG.PROMPT >CSTR "$ "
|
MSG.PROMPT >CSTR "$ "
|
||||||
|
@ -62,9 +62,9 @@ K.StrToL sec Signed
|
|||||||
K.StrToUL clc Unsigned
|
K.StrToUL clc Unsigned
|
||||||
jsr PullPtr1Ptr2Ptr3
|
jsr PullPtr1Ptr2Ptr3
|
||||||
>PULLA Base
|
>PULLA Base
|
||||||
|
|
||||||
jsr K.AToL.I
|
jsr K.AToL.I
|
||||||
bcs K.StrToUL.rts
|
bcs K.StrToUL.rts
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
K.StrToUL.Exit adc ZPPtr2
|
K.StrToUL.Exit adc ZPPtr2
|
||||||
@ -91,6 +91,7 @@ K.AToL jsr PullPtr1Ptr2 C-String in Ptr2, Dst buffer in Ptr1
|
|||||||
K.AToL.I jsr STDLIB.Dec2Hex
|
K.AToL.I jsr STDLIB.Dec2Hex
|
||||||
bcs .9
|
bcs .9
|
||||||
phy Save Count processed
|
phy Save Count processed
|
||||||
|
|
||||||
ldy #3
|
ldy #3
|
||||||
|
|
||||||
.3 lda STDLIB.32,y
|
.3 lda STDLIB.32,y
|
||||||
@ -182,7 +183,7 @@ STDLIB.32.T10 ldx #3
|
|||||||
bcs .99 overflow!!!
|
bcs .99 overflow!!!
|
||||||
|
|
||||||
jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32
|
jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32
|
||||||
bcs .99 overflow!!!
|
rts if CS, overflow!!!
|
||||||
|
|
||||||
.9 pla discard saved STDLIB.32
|
.9 pla discard saved STDLIB.32
|
||||||
pla
|
pla
|
||||||
|
Loading…
x
Reference in New Issue
Block a user