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
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
beq .99
|
||||
|
||||
>STA.G ArgCount
|
||||
|
||||
.1 >LDA.G ArgCount
|
||||
dec
|
||||
bmi .5
|
||||
|
||||
sta (pData),y
|
||||
|
||||
CS.INIT
|
||||
.1 >INC.G ArgCount
|
||||
>SYSCALL GetArg.A
|
||||
bcs .7
|
||||
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr1)
|
||||
cmp #'-'
|
||||
bne .4
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #2
|
||||
bne .4
|
||||
|
||||
iny
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
|
||||
ldx OptionList
|
||||
@ -85,12 +72,10 @@ CS.INIT ldy #S.PS.ARGC
|
||||
sta (pData),y
|
||||
bra .1
|
||||
|
||||
.4 >LDA.G FileCount
|
||||
inc
|
||||
sta (pData),y
|
||||
.4 >INC.G FileCount
|
||||
bra .1 scan for any other args
|
||||
|
||||
.5 >LDA.G FileCount
|
||||
.7 >LDA.G FileCount
|
||||
beq .99
|
||||
|
||||
>LDYAI 256
|
||||
@ -128,16 +113,13 @@ CS.RUN >SYSCALL GetChar
|
||||
>LDA.G hFILE
|
||||
bne .2
|
||||
|
||||
.1 >LDA.G ArgIndex
|
||||
inc
|
||||
sta (pData),y
|
||||
.1 >INC.G ArgIndex
|
||||
>SYSCALL GetArg.A
|
||||
bcs .99 No more arg...the end!
|
||||
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr1)
|
||||
cmp #'-'
|
||||
beq .1 An option, skip...
|
||||
|
||||
|
@ -87,7 +87,8 @@ CS.RUN >SYSCALL Sleep
|
||||
>SYSCALL GetChar
|
||||
bcs CS.RUN
|
||||
|
||||
.11 jsr PRINTA2
|
||||
.11
|
||||
* jsr PRINTA2
|
||||
>SYSCALL Sleep
|
||||
>SYSCALL GetChar
|
||||
|
||||
@ -115,7 +116,7 @@ CS.RUN.LOOP
|
||||
>SYSCALL GetChar
|
||||
bcs .4
|
||||
|
||||
jsr PRINTA
|
||||
* jsr PRINTA
|
||||
|
||||
cmp #IAC
|
||||
beq CS.RUN.IACMODE
|
||||
@ -144,22 +145,22 @@ CS.RUN.IACMODE >SYSCALL Sleep Wait for IAC VERB (or SB)
|
||||
bcs CS.RUN.IACMODE
|
||||
|
||||
>STA.G IAC.VERB
|
||||
jsr PRINTA
|
||||
* jsr PRINTA
|
||||
|
||||
.1 >SYSCALL Sleep Wait for IAC OPT
|
||||
>SYSCALL GetChar
|
||||
bcs .1
|
||||
|
||||
>STA.G IAC.OPT
|
||||
jsr PRINTA
|
||||
* jsr PRINTA
|
||||
|
||||
>LDA.G IAC.VERB
|
||||
cmp #SB
|
||||
beq CS.RUN.IACSB
|
||||
*--------------------------------------
|
||||
CS.RUN.IACVERB
|
||||
lda #'.'
|
||||
>SYSCALL PutChar.A
|
||||
* lda #'.'
|
||||
* >SYSCALL PutChar.A
|
||||
jmp CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
CS.RUN.IACSB
|
||||
@ -169,7 +170,7 @@ CS.RUN.IACSB
|
||||
|
||||
>STA.G IAC.SB
|
||||
|
||||
jsr PRINTA
|
||||
* jsr PRINTA
|
||||
|
||||
lda #0
|
||||
sta (pData) reset IAC.SB.DATA
|
||||
@ -182,7 +183,7 @@ CS.RUN.IACSB
|
||||
beq .4 end of DATA, go wait SE
|
||||
|
||||
pha
|
||||
jsr PRINTA
|
||||
* jsr PRINTA
|
||||
|
||||
ldy #IAC.SB.DATA-1
|
||||
|
||||
@ -216,8 +217,9 @@ CS.RUN.IACSB
|
||||
>PUSHW L.ENV.TERM
|
||||
>SYSCALL SetEnv
|
||||
|
||||
.8 lda #':'
|
||||
>SYSCALL PutChar.A
|
||||
.8
|
||||
* lda #':'
|
||||
* >SYSCALL PutChar.A
|
||||
jmp CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
CS.DOEVENT lda (pEvent)
|
||||
|
@ -69,7 +69,7 @@ CSH.Run lda #0
|
||||
|
||||
jsr CSH.Pop was expected, get stacked Cmd...
|
||||
tax
|
||||
jmp (J.CSHCMDS.END,x)
|
||||
jmp (J.CSH.KEYWORDS.END,x)
|
||||
|
||||
.1 cmp #$0D
|
||||
bne .2
|
||||
@ -87,14 +87,14 @@ CSH.Run lda #0
|
||||
|
||||
bra .9 error, todo : PREOPS ++ --.....
|
||||
|
||||
.3 >LDYA L.CSHCMDS
|
||||
.3 >LDYA L.CSH.KEYWORDS
|
||||
jsr CSH.IsKeyword
|
||||
bcs .4 not an internal CSH keyword....
|
||||
|
||||
txa
|
||||
>STA.G CSH.CmdSave
|
||||
|
||||
jmp (J.CSHCMDS,x)
|
||||
jmp (J.CSH.KEYWORDS,x)
|
||||
|
||||
.4 jsr CSH.GetVar Y=Ptr To Value
|
||||
bcs .5
|
||||
@ -113,7 +113,7 @@ CSH.Run lda #0
|
||||
ply
|
||||
bcs .9
|
||||
|
||||
jsr CSH.SetVarValueAtY
|
||||
jsr CSH.SetVarValue
|
||||
bcs .9
|
||||
cmp #';'
|
||||
bne .99
|
||||
@ -126,28 +126,31 @@ CSH.Run lda #0
|
||||
|
||||
.5
|
||||
|
||||
|
||||
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
|
||||
sta (ZPCMDBuf),y
|
||||
iny
|
||||
cpy #CmdLine.MAX
|
||||
beq .8
|
||||
bne .6
|
||||
bra .99 Line Too long !!!
|
||||
|
||||
jsr CSH.GetNextChar
|
||||
bcc .6
|
||||
bra .8
|
||||
|
||||
.7 jsr CSH.GetNextCharNB Skip CR
|
||||
.7 tya
|
||||
clc
|
||||
adc ZPCSHBufPtr
|
||||
sta ZPCSHBufPtr
|
||||
bcc .8
|
||||
inc ZPCSHBufPtr+1
|
||||
|
||||
.8 lda #0
|
||||
sta (ZPCMDBuf),y
|
||||
|
||||
tya
|
||||
>STA.G CmdBuflen
|
||||
lda #$ff
|
||||
@ -181,16 +184,12 @@ CSH.Quit >LDA.G CSH.hBuf
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CSH.SavePtr phy
|
||||
>LDYA ZPCSHBufPtr
|
||||
CSH.SavePtr >LDYA ZPCSHBufPtr
|
||||
>STYA.G CSH.BufPtrSave
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.RestorePtr phy
|
||||
>LDYA.G CSH.BufPtrSave
|
||||
CSH.RestorePtr >LDYA.G CSH.BufPtrSave
|
||||
>STYA ZPCSHBufPtr
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.IsKeyword >STYA ZPPtr1
|
||||
@ -245,6 +244,69 @@ CSH.IsKeyword >STYA ZPPtr1
|
||||
sec
|
||||
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.IF jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
@ -333,78 +395,18 @@ CSH.WHILE.END jsr CSH.Pop
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.ELSE
|
||||
CSH.DO
|
||||
CSH.FOR
|
||||
CSH.SWITCH
|
||||
CSH.CASE
|
||||
CSH.BREAK
|
||||
*--------------------------------------
|
||||
CSH.CONTINUE
|
||||
|
||||
lda #CSH.E.SYNTAX
|
||||
sec
|
||||
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
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
@ -449,7 +451,7 @@ CSH.GetNumInACC >LDA.G CSH.ACCT
|
||||
>PUSHWI ZPCSHBufPtr
|
||||
>PUSHW ZPCSHBufPtr
|
||||
>PUSHEA.G CSH.ACC
|
||||
>DEBUG
|
||||
|
||||
>SYSCALL StrToL
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -467,13 +469,14 @@ CSH.ZeroACC lda #0
|
||||
* Vars...
|
||||
*--------------------------------------
|
||||
CSH.AddVar jsr CSH.GetIdentLen
|
||||
|
||||
sec
|
||||
>ADC.G CSH.SymbolsPtr
|
||||
>ADC.G CSH.SymbolsPtr Enough room to store this symbol ?
|
||||
|
||||
bcs .99
|
||||
|
||||
adc #1 OFS
|
||||
bcs .99
|
||||
adc #1 Add One Byte for storing Ptr to DATA
|
||||
bcs .99 Out of Symbols space
|
||||
|
||||
>LDA.G CSH.DataPtr
|
||||
pha
|
||||
@ -482,58 +485,44 @@ CSH.AddVar jsr CSH.GetIdentLen
|
||||
tax
|
||||
sec +1 for Type
|
||||
adc CSH.TSIZE,x
|
||||
bcs .98 Out of memory
|
||||
bcs .98 Out of Data Space
|
||||
|
||||
>LDA.G CSH.SymbolsPtr
|
||||
tay
|
||||
pha
|
||||
|
||||
jsr CSH.GetIdentLen
|
||||
|
||||
ply
|
||||
sta (ZPCSHSymbols),y
|
||||
iny
|
||||
|
||||
jsr CSH.GetChar
|
||||
|
||||
.1 sta (ZPCSHSymbols),y
|
||||
.1 sta (ZPCSHSymbols),y Store this symbol....
|
||||
iny
|
||||
jsr CSH.GetNextChar
|
||||
|
||||
jsr CSH.IsLetterOrDigit
|
||||
bcc .1
|
||||
|
||||
pla Get Back Data OFS
|
||||
pla Get Back Data Ptr
|
||||
pha
|
||||
|
||||
sta (ZPCSHSymbols),y
|
||||
iny
|
||||
|
||||
tya
|
||||
>STA.G CSH.SymbolsPtr
|
||||
>STA.G CSH.SymbolsPtr Mark new end of Symbols
|
||||
|
||||
>LEA.G CSH.ACCT
|
||||
>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
|
||||
pla Get again Data Ptr
|
||||
clc
|
||||
adc ZPCSHData
|
||||
sta ZPCSHValue
|
||||
lda #0
|
||||
adc ZPCSHData+1
|
||||
sta ZPCSHValue+1
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.98 pla
|
||||
@ -541,8 +530,19 @@ CSH.AddVar jsr CSH.GetIdentLen
|
||||
sec
|
||||
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
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -550,7 +550,7 @@ CSH.GetVar >LDYA ZPCSHSymbols
|
||||
>STYA ZPPtr1
|
||||
|
||||
jsr CSH.GetIdentLen
|
||||
phy
|
||||
pha
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
beq .9
|
||||
@ -570,16 +570,36 @@ CSH.GetVar >LDYA ZPCSHSymbols
|
||||
tya
|
||||
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
|
||||
|
||||
jsr CSH.VarSkipName
|
||||
clc
|
||||
adc ZPCSHBufPtr
|
||||
sta ZPCSHBufPtr
|
||||
bcc .8
|
||||
inc ZPCSHBufPtr+1
|
||||
|
||||
clc
|
||||
.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
|
||||
inc ZPPtr1+1
|
||||
bra .1
|
||||
@ -588,14 +608,6 @@ CSH.GetVar >LDYA ZPCSHSymbols
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.VarSkipName lda (ZPPtr1)
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .8
|
||||
inc ZPPtr1+1
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* Stack
|
||||
*--------------------------------------
|
||||
CSH.Push pha
|
||||
@ -658,7 +670,9 @@ CSH.GetIdentLen ldy #0
|
||||
|
||||
jsr CSH.IsLetterOrDigit
|
||||
bcc .1
|
||||
.8 rts
|
||||
|
||||
.8 tya
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.GetCharNB jsr CSH.GetChar
|
||||
bcs CSH.GetNextCharNB.RTS
|
||||
@ -775,6 +789,8 @@ CSH.ErrorMsg >LDA.G CSH.hBuf
|
||||
lda #$0A
|
||||
>SYSCALL PutChar.A
|
||||
|
||||
|
||||
|
||||
lda ZPCSHBufPtr
|
||||
sec
|
||||
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/MLI.ERR.I
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
ZPPTR2 .EQ ZPBIN+2
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
ZPPtr2 .EQ ZPBIN+2
|
||||
ZPCMDBuf .EQ ZPBIN+4
|
||||
*ZPCSHBufBase .EQ ZPBIN+6
|
||||
ZPCSHBufPtr .EQ ZPBIN+8
|
||||
ZPCSHSymbols .EQ ZPBIN+10
|
||||
ZPCSHData .EQ ZPBIN+12
|
||||
ZPCSHBufPtr .EQ ZPBIN+6
|
||||
ZPCSHSymbols .EQ ZPBIN+8
|
||||
ZPCSHData .EQ ZPBIN+10
|
||||
ZPCSHValue .EQ ZPBIN+12
|
||||
ZPCSHStack .EQ ZPBIN+14
|
||||
*--------------------------------------
|
||||
CmdLine.MAX .EQ 255
|
||||
@ -83,16 +83,22 @@ J.INTCMDS .DA Cmd.Exec.CD
|
||||
.DA Cmd.Exec.SLEEP
|
||||
.DA Cmd.Exec.STARTPROC
|
||||
.DA Cmd.Exec.TIME
|
||||
L.CSHCMDS .DA CSHCMDS
|
||||
J.CSHCMDS .DA CSH.IF
|
||||
.DA CSH.WHILE
|
||||
.DA CSH.BREAK
|
||||
.DA CSH.CONTINUE
|
||||
.DA CSH.CHAR
|
||||
L.CSH.KEYWORDS .DA CSH.KEYWORDS
|
||||
J.CSH.KEYWORDS .DA CSH.CHAR
|
||||
.DA CSH.INT
|
||||
.DA CSH.LONG
|
||||
.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
|
||||
L.ERR.Codes .DA ERR.Codes
|
||||
L.ERR.Messages .DA ERR.Messages
|
||||
@ -470,15 +476,80 @@ INTCMDS >CSTR "CD"
|
||||
>CSTR "STARTPROC"
|
||||
>CSTR "TIME"
|
||||
.HS 00
|
||||
CSHCMDS >PSTR "IF"
|
||||
>PSTR "WHILE"
|
||||
>PSTR "BREAK"
|
||||
>PSTR "CONTINUE"
|
||||
>PSTR "CHAR"
|
||||
>PSTR "INT"
|
||||
>PSTR "LONG"
|
||||
>PSTR "FLOAT"
|
||||
*--------------------------------------
|
||||
* Pre Operators: + - ! ~ ++ --
|
||||
*--------------------------------------
|
||||
CSH.PREOOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "!"
|
||||
>PSTR "~"
|
||||
*--------------------------------------
|
||||
* Post Operators: ++ --
|
||||
*--------------------------------------
|
||||
CSH.POSTOPS >PSTR "++"
|
||||
>PSTR "--"
|
||||
.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.PROMPT >CSTR "$ "
|
||||
|
@ -62,9 +62,9 @@ K.StrToL sec Signed
|
||||
K.StrToUL clc Unsigned
|
||||
jsr PullPtr1Ptr2Ptr3
|
||||
>PULLA Base
|
||||
|
||||
jsr K.AToL.I
|
||||
bcs K.StrToUL.rts
|
||||
|
||||
* clc
|
||||
|
||||
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
|
||||
bcs .9
|
||||
phy Save Count processed
|
||||
|
||||
ldy #3
|
||||
|
||||
.3 lda STDLIB.32,y
|
||||
@ -182,7 +183,7 @@ STDLIB.32.T10 ldx #3
|
||||
bcs .99 overflow!!!
|
||||
|
||||
jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32
|
||||
bcs .99 overflow!!!
|
||||
rts if CS, overflow!!!
|
||||
|
||||
.9 pla discard saved STDLIB.32
|
||||
pla
|
||||
|
Loading…
x
Reference in New Issue
Block a user