mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-20 11:29:29 +00:00
Kernel 0.9.1 : Shell, CSH, adding functions....
This commit is contained in:
parent
0eed73230f
commit
8ffd177fb2
Binary file not shown.
Binary file not shown.
105
SBIN/SHELL.C.CSH.txt
Normal file
105
SBIN/SHELL.C.CSH.txt
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.BUILD
|
||||||
|
LOMEM $A00
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.OPChars .AS "!~+-*/%=&|^&<>"
|
||||||
|
*--------------------------------------
|
||||||
|
* Pre Operators: + - ! ~ ++ --
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.PREOOPS >PSTR "+"
|
||||||
|
>PSTR "-"
|
||||||
|
>PSTR "!"
|
||||||
|
>PSTR "~"
|
||||||
|
*--------------------------------------
|
||||||
|
* Post Operators: ++ --
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.POSTOPS >PSTR "++"
|
||||||
|
>PSTR "--"
|
||||||
|
.HS 00
|
||||||
|
*--------------------------------------
|
||||||
|
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.AOPS >PSTR "="
|
||||||
|
>PSTR "+="
|
||||||
|
>PSTR "-="
|
||||||
|
>PSTR "*="
|
||||||
|
>PSTR "/="
|
||||||
|
>PSTR "%="
|
||||||
|
>PSTR "<<="
|
||||||
|
>PSTR ">>="
|
||||||
|
>PSTR "&="
|
||||||
|
>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 "||"
|
||||||
|
.HS 00
|
||||||
|
*--------------------------------------
|
||||||
|
* Reserved Keywords:
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.KW >PSTR "if"
|
||||||
|
>PSTR "while"
|
||||||
|
>PSTR "else"
|
||||||
|
>PSTR "do"
|
||||||
|
>PSTR "for"
|
||||||
|
>PSTR "switch"
|
||||||
|
>PSTR "case"
|
||||||
|
>PSTR "break"
|
||||||
|
>PSTR "continue"
|
||||||
|
>PSTR "float"
|
||||||
|
>PSTR "signed" char,int,long
|
||||||
|
>PSTR "unsigned" char,int,long
|
||||||
|
CSH.STYPES >PSTR "char"
|
||||||
|
>PSTR "int"
|
||||||
|
>PSTR "long"
|
||||||
|
.HS 00
|
||||||
|
CSH.TSIZE .HS 0001020401020405 00,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT....
|
||||||
|
*--------------------------------------
|
||||||
|
* int printf ( const char * format, ... );
|
||||||
|
CSH.FN >PSTR "printf"
|
||||||
|
.DA #CSH.T.INT returned value
|
||||||
|
.DA #CSH.Q.CONST+CSH.T.CHAR
|
||||||
|
.DA #CSH.Q.POINTER
|
||||||
|
.DA #CSH.T.VARIADIC
|
||||||
|
.DA #0
|
||||||
|
* float cos ( float x );
|
||||||
|
>PSTR "cos"
|
||||||
|
.DA #CSH.T.FLOAT returned value
|
||||||
|
.DA #CSH.T.FLOAT
|
||||||
|
.DA #0
|
||||||
|
* int getchar ( void );
|
||||||
|
>PSTR "getchar"
|
||||||
|
.DA #CSH.T.INT returned value
|
||||||
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.SRC/SBIN/SHELL.C.CSH
|
||||||
|
LOAD /A2OSX.SRC/SBIN/SHELL.S
|
||||||
|
ASM
|
39
SBIN/SHELL.G.CSH.txt
Normal file
39
SBIN/SHELL.G.CSH.txt
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
PR#3
|
||||||
|
PREFIX /A2OSX.BUILD
|
||||||
|
LOMEM $A00
|
||||||
|
INC 1
|
||||||
|
AUTO 6
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.hBuf .BS 1
|
||||||
|
CSH.BufPtrSave .BS 2
|
||||||
|
|
||||||
|
CSH.LineNum .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
|
||||||
|
|
||||||
|
CSH.ACCT .BS 1
|
||||||
|
CSH.ACC .BS 5
|
||||||
|
|
||||||
|
CSH.EXPBOP1 .BS 1
|
||||||
|
|
||||||
|
CSH.ARGT .BS 1
|
||||||
|
CSH.ARG .BS 5
|
||||||
|
|
||||||
|
CSH.EXPBOP2 .BS 1
|
||||||
|
|
||||||
|
CSH.LookupOpt .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.SRC/SBIN/SHELL.G.CSH
|
||||||
|
LOAD /A2OSX.SRC/SBIN/SHELL.S
|
||||||
|
ASM
|
|
@ -5,20 +5,28 @@ INC 1
|
||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.TQ.POINTER .EQ %10000000
|
CSH.E.SYNTAX .EQ $7F
|
||||||
CSH.TQ.CONST .EQ %01000000
|
CSH.E.SOVERFLW .EQ $7E
|
||||||
CSH.TQ.SIGNED .EQ %00100000
|
CSH.E.NOVERFLW .EQ $7D
|
||||||
|
CSH.E.OOM .EQ $7C
|
||||||
|
CSH.E.DUP .EQ $7B
|
||||||
|
CSH.E.UNDEF .EQ $7A
|
||||||
|
CSH.E.TMISMATCH .EQ $79
|
||||||
|
|
||||||
|
CSH.Q.POINTER .EQ %10000000
|
||||||
|
CSH.Q.CONST .EQ %01000000
|
||||||
|
CSH.Q.ARRAY .EQ %11000000
|
||||||
|
|
||||||
CSH.T.CHAR .EQ 1
|
CSH.T.CHAR .EQ 1
|
||||||
CSH.T.INT .EQ 2
|
CSH.T.INT .EQ 2
|
||||||
CSH.T.LONG .EQ 3
|
CSH.T.LONG .EQ 3
|
||||||
CSH.T.FLOAT .EQ 4
|
CSH.T.UCHAR .EQ 4
|
||||||
CSH.T.VARIADIC .EQ $FF
|
CSH.T.UINT .EQ 5
|
||||||
|
CSH.T.ULONG .EQ 6
|
||||||
|
CSH.T.FLOAT .EQ 7
|
||||||
|
CSH.T.VARIADIC .EQ $F
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.Init lda #$FF
|
CSH.Init lda #$0
|
||||||
>STA.G bExitOnEOF
|
|
||||||
|
|
||||||
inc
|
|
||||||
>STA.G CSH.SymbolsPtr
|
>STA.G CSH.SymbolsPtr
|
||||||
>STA.G CSH.DataPtr
|
>STA.G CSH.DataPtr
|
||||||
>STA.G CSH.StackPtr
|
>STA.G CSH.StackPtr
|
||||||
|
@ -72,7 +80,7 @@ CSH.Run jsr CL.RESET
|
||||||
|
|
||||||
jsr CSH.Pop was expected, get stacked Cmd...
|
jsr CSH.Pop was expected, get stacked Cmd...
|
||||||
tax
|
tax
|
||||||
jmp (J.CSH.KEYWORDS.END,x)
|
jmp (J.CSH.KW.END,x)
|
||||||
|
|
||||||
.1 cmp #$0D
|
.1 cmp #$0D
|
||||||
bne .2
|
bne .2
|
||||||
|
@ -90,7 +98,7 @@ CSH.Run jsr CL.RESET
|
||||||
|
|
||||||
bra .9 error, todo : PREOPS ++ --.....
|
bra .9 error, todo : PREOPS ++ --.....
|
||||||
|
|
||||||
.3 >LDYA L.CSH.KEYWORDS
|
.3 >LDYA L.CSH.KW
|
||||||
jsr CSH.LookupID
|
jsr CSH.LookupID
|
||||||
|
|
||||||
bcs .4 not an internal CSH keyword....
|
bcs .4 not an internal CSH keyword....
|
||||||
|
@ -98,7 +106,7 @@ CSH.Run jsr CL.RESET
|
||||||
txa
|
txa
|
||||||
>STA.G CSH.CmdSave
|
>STA.G CSH.CmdSave
|
||||||
|
|
||||||
jmp (J.CSH.KEYWORDS,x)
|
jmp (J.CSH.KW,x)
|
||||||
|
|
||||||
.4 jsr CSH.GetVar
|
.4 jsr CSH.GetVar
|
||||||
bcs .5
|
bcs .5
|
||||||
|
@ -253,7 +261,7 @@ CSH.IF jsr CSH.GetCharNB
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
CSH.Keyword.Start
|
CSH.Keyword.Start
|
||||||
jmp (J.CSH.KEYWORDS.START,x)
|
jmp (J.CSH.KW.START,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.IF.START jmp CSH.Push
|
CSH.IF.START jmp CSH.Push
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -288,12 +296,58 @@ CSH.CONTINUE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CSH.SIGNED jsr CSH.GetChar
|
||||||
|
bcs .9
|
||||||
|
cmp #' '
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CSH.GetNextCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA L.CSH.STYPES
|
||||||
|
jsr CSH.LookupID
|
||||||
|
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jmp (J.CSH.STYPES,x)
|
||||||
|
|
||||||
|
.9 lda #CSH.E.SYNTAX
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CSH.UNSIGNED jsr CSH.GetChar
|
||||||
|
bcs .9
|
||||||
|
cmp #' '
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CSH.GetNextCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA L.CSH.STYPES
|
||||||
|
jsr CSH.LookupID
|
||||||
|
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jmp (J.CSH.UTYPES,x)
|
||||||
|
|
||||||
|
.9 lda #CSH.E.SYNTAX
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CSH.CHAR lda #CSH.T.CHAR
|
CSH.CHAR lda #CSH.T.CHAR
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
|
CSH.UCHAR lda #CSH.T.CHAR
|
||||||
|
bra CSH.TYPE
|
||||||
CSH.INT lda #CSH.T.INT
|
CSH.INT lda #CSH.T.INT
|
||||||
|
>DEBUG
|
||||||
|
bra CSH.TYPE
|
||||||
|
CSH.UINT lda #CSH.T.INT
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
CSH.LONG lda #CSH.T.LONG
|
CSH.LONG lda #CSH.T.LONG
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
|
CSH.ULONG lda #CSH.T.LONG
|
||||||
|
bra CSH.TYPE
|
||||||
|
|
||||||
CSH.FLOAT lda #CSH.T.FLOAT
|
CSH.FLOAT lda #CSH.T.FLOAT
|
||||||
|
|
||||||
CSH.TYPE >STA.G CSH.ACCT
|
CSH.TYPE >STA.G CSH.ACCT
|
||||||
|
@ -328,7 +382,7 @@ CSH.TYPE >STA.G CSH.ACCT
|
||||||
|
|
||||||
jsr CSH.ExpEval
|
jsr CSH.ExpEval
|
||||||
|
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
jsr CSH.StoreACCToVar Update value to this var
|
jsr CSH.StoreACCToVar Update value to this var
|
||||||
|
|
||||||
|
@ -364,9 +418,14 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||||
|
|
||||||
jsr CSH.LoadACCFromVar
|
jsr CSH.LoadACCFromVar
|
||||||
bcs .9
|
bcs .9
|
||||||
bra .11
|
bra .11
|
||||||
|
|
||||||
.1 bra .9 TO DO : Functions
|
.1 >LDYA L.CSH.FN
|
||||||
|
jsr CSH.LookupFn
|
||||||
|
bcs .9
|
||||||
|
jsr CSH.FnEval
|
||||||
|
bcs .99
|
||||||
|
bra .11
|
||||||
|
|
||||||
.2 jsr CSH.IsDigit10 number ?
|
.2 jsr CSH.IsDigit10 number ?
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -429,6 +488,36 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||||
.80 clc
|
.80 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CSH.FnEval jsr CSH.GetCharNB
|
||||||
|
|
||||||
|
bcs .9
|
||||||
|
cmp #'('
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
lda (ZPPtr1)
|
||||||
|
>CMP.G CSH.ACCT
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
|
||||||
|
* TODO : eval params
|
||||||
|
|
||||||
|
|
||||||
|
.7 jsr CSH.GetNextCharNB
|
||||||
|
bcs .9
|
||||||
|
cmp #')'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #CSH.E.SYNTAX
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.99 lda #CSH.E.TMISMATCH
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CSH.SavePtr >LDYA ZPCSHBufPtr
|
CSH.SavePtr >LDYA ZPCSHBufPtr
|
||||||
>STYA.G CSH.BufPtrSave
|
>STYA.G CSH.BufPtrSave
|
||||||
rts
|
rts
|
||||||
|
@ -437,11 +526,18 @@ CSH.RestorePtr >LDYA.G CSH.BufPtrSave
|
||||||
>STYA ZPCSHBufPtr
|
>STYA ZPCSHBufPtr
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.LookupID >STYA ZPPtr1
|
CSH.LookupFN sec
|
||||||
|
.HS 90 BCC
|
||||||
|
CSH.LookupID clc
|
||||||
|
>STYA ZPPtr1
|
||||||
|
ror
|
||||||
|
>STA.G CSH.LookupOpt
|
||||||
|
|
||||||
jsr CSH.GetIDLen
|
jsr CSH.GetIDLen
|
||||||
bra CSH.Lookup
|
bra CSH.Lookup
|
||||||
|
|
||||||
CSH.LookupOP >STYA ZPPtr1
|
CSH.LookupOP >STYA ZPPtr1
|
||||||
|
>STZ.G CSH.LookupOpt
|
||||||
jsr CSH.GetOPLen
|
jsr CSH.GetOPLen
|
||||||
|
|
||||||
CSH.Lookup phy Y = len
|
CSH.Lookup phy Y = len
|
||||||
|
@ -472,8 +568,16 @@ CSH.Lookup phy Y = len
|
||||||
clc
|
clc
|
||||||
adc ZPCSHBufPtr ..advance Ptr to char after it..
|
adc ZPCSHBufPtr ..advance Ptr to char after it..
|
||||||
sta ZPCSHBufPtr
|
sta ZPCSHBufPtr
|
||||||
|
bcc .31
|
||||||
|
inc ZPCSHBufPtr+1
|
||||||
|
|
||||||
|
.31 lda ZPPtr1
|
||||||
|
sec
|
||||||
|
adc (ZPPtr1)
|
||||||
|
sta ZPPtr1
|
||||||
bcc .8
|
bcc .8
|
||||||
inc ZPCSHBufPtr+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.8 rts
|
.8 rts
|
||||||
|
|
||||||
|
@ -484,6 +588,21 @@ CSH.Lookup phy Y = len
|
||||||
sec
|
sec
|
||||||
adc (ZPPtr1)
|
adc (ZPPtr1)
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
|
bcc .5
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.5 >LDA.G CSH.LookupOpt
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
.6 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
bcc .1
|
bcc .1
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
bra .1
|
bra .1
|
||||||
|
@ -728,6 +847,7 @@ CSH.StoreACCToVar
|
||||||
CSH.IsACC0 >LDA.G CSH.ACCT
|
CSH.IsACC0 >LDA.G CSH.ACCT
|
||||||
cmp #CSH.T.FLOAT
|
cmp #CSH.T.FLOAT
|
||||||
bne .1 char,int,long
|
bne .1 char,int,long
|
||||||
|
|
||||||
>LDA.G CSH.ACC
|
>LDA.G CSH.ACC
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
|
@ -911,7 +1031,7 @@ CSH.GetChar lda (ZPCSHBufPtr)
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CSH.IsOPChar ldx #OPChars.Count-1
|
CSH.IsOPChar ldx #13
|
||||||
|
|
||||||
.1 cmp CSH.OPChars,x
|
.1 cmp CSH.OPChars,x
|
||||||
beq .8
|
beq .8
|
||||||
|
|
156
SBIN/SHELL.S.txt
156
SBIN/SHELL.S.txt
|
@ -24,14 +24,6 @@ ZPCSHStack .EQ ZPBIN+14
|
||||||
CmdLine.MAX .EQ 255
|
CmdLine.MAX .EQ 255
|
||||||
VarLen.MAX .EQ 15
|
VarLen.MAX .EQ 15
|
||||||
History.MAX .EQ 256
|
History.MAX .EQ 256
|
||||||
|
|
||||||
CSH.E.SYNTAX .EQ $7F
|
|
||||||
CSH.E.SOVERFLW .EQ $7E
|
|
||||||
CSH.E.NOVERFLW .EQ $7D
|
|
||||||
CSH.E.OOM .EQ $7C
|
|
||||||
CSH.E.DUP .EQ $7B
|
|
||||||
CSH.E.UNDEF .EQ $7A
|
|
||||||
CSH.E.TMISMATCH .EQ $79
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -100,8 +92,9 @@ J.CSH.BOPS .DA CSH.BOPS.ADD
|
||||||
.DA CSH.BOPS.EOR
|
.DA CSH.BOPS.EOR
|
||||||
.DA CSH.BOPS.LAND
|
.DA CSH.BOPS.LAND
|
||||||
.DA CSH.BOPS.LOR
|
.DA CSH.BOPS.LOR
|
||||||
L.CSH.KEYWORDS .DA CSH.KEYWORDS
|
L.CSH.FN .DA CSH.FN
|
||||||
J.CSH.KEYWORDS .DA CSH.IF
|
L.CSH.KW .DA CSH.KW
|
||||||
|
J.CSH.KW .DA CSH.IF
|
||||||
.DA CSH.WHILE
|
.DA CSH.WHILE
|
||||||
.DA CSH.ELSE
|
.DA CSH.ELSE
|
||||||
.DA CSH.DO
|
.DA CSH.DO
|
||||||
|
@ -110,15 +103,19 @@ J.CSH.KEYWORDS .DA CSH.IF
|
||||||
.DA CSH.CASE
|
.DA CSH.CASE
|
||||||
.DA CSH.BREAK
|
.DA CSH.BREAK
|
||||||
.DA CSH.CONTINUE
|
.DA CSH.CONTINUE
|
||||||
.DA CSH.CHAR
|
.DA CSH.FLOAT
|
||||||
|
.DA CSH.SIGNED
|
||||||
|
.DA CSH.UNSIGNED
|
||||||
|
L.CSH.STYPES .DA CSH.STYPES
|
||||||
|
J.CSH.STYPES .DA CSH.CHAR
|
||||||
.DA CSH.INT
|
.DA CSH.INT
|
||||||
.DA CSH.LONG
|
.DA CSH.LONG
|
||||||
.DA CSH.FLOAT
|
J.CSH.UTYPES .DA CSH.UCHAR
|
||||||
J.CSH.KEYWORDS.START
|
.DA CSH.UINT
|
||||||
.DA CSH.IF.START
|
.DA CSH.ULONG
|
||||||
|
J.CSH.KW.START .DA CSH.IF.START
|
||||||
.DA CSH.WHILE.START
|
.DA CSH.WHILE.START
|
||||||
J.CSH.KEYWORDS.END
|
J.CSH.KW.END .DA CSH.IF.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
|
||||||
|
@ -260,13 +257,7 @@ CS.RUN.BATCH >SYSCALL GetChar
|
||||||
|
|
||||||
ldy #S.PS.RC
|
ldy #S.PS.RC
|
||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
pha
|
sec
|
||||||
|
|
||||||
ldy #bExitOnEOF
|
|
||||||
lda (pData),y
|
|
||||||
asl CS if bExitOnEOF
|
|
||||||
|
|
||||||
pla
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.7 >LDA.G bCmdBufExec
|
.7 >LDA.G bCmdBufExec
|
||||||
|
@ -361,93 +352,6 @@ INTCMDS >CSTR "CD"
|
||||||
>CSTR "TIME"
|
>CSTR "TIME"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OPChars.Count .EQ 14
|
|
||||||
CSH.OPChars >PSTR "!~+-*/%=&|^&<>"
|
|
||||||
*--------------------------------------
|
|
||||||
* Pre Operators: + - ! ~ ++ --
|
|
||||||
*--------------------------------------
|
|
||||||
CSH.PREOOPS >PSTR "+"
|
|
||||||
>PSTR "-"
|
|
||||||
>PSTR "!"
|
|
||||||
>PSTR "~"
|
|
||||||
*--------------------------------------
|
|
||||||
* Post Operators: ++ --
|
|
||||||
*--------------------------------------
|
|
||||||
CSH.POSTOPS >PSTR "++"
|
|
||||||
>PSTR "--"
|
|
||||||
.HS 00
|
|
||||||
*--------------------------------------
|
|
||||||
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
|
||||||
*--------------------------------------
|
|
||||||
CSH.AOPS >PSTR "="
|
|
||||||
>PSTR "+="
|
|
||||||
>PSTR "-="
|
|
||||||
>PSTR "*="
|
|
||||||
>PSTR "/="
|
|
||||||
>PSTR "%="
|
|
||||||
>PSTR "<<="
|
|
||||||
>PSTR ">>="
|
|
||||||
>PSTR "&="
|
|
||||||
>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 "||"
|
|
||||||
.HS 00
|
|
||||||
*--------------------------------------
|
|
||||||
* Reserved Keywords:
|
|
||||||
*--------------------------------------
|
|
||||||
CSH.KEYWORDS >PSTR "if"
|
|
||||||
>PSTR "while"
|
|
||||||
>PSTR "else"
|
|
||||||
>PSTR "do"
|
|
||||||
>PSTR "for"
|
|
||||||
>PSTR "switch"
|
|
||||||
>PSTR "case"
|
|
||||||
>PSTR "break"
|
|
||||||
>PSTR "continue"
|
|
||||||
CSH.TYPES >PSTR "char"
|
|
||||||
>PSTR "int"
|
|
||||||
>PSTR "long"
|
|
||||||
>PSTR "float"
|
|
||||||
.HS 00
|
|
||||||
*--------------------------------------
|
|
||||||
* int printf ( const char * format, ... );
|
|
||||||
CSH.FUNCTIONS >PSTR "printf"
|
|
||||||
.DA #CSH.T.INT returned value
|
|
||||||
.DA #CSH.TQ.CONST+CSH.T.CHAR+CSH.TQ.POINTER
|
|
||||||
.DA #CSH.T.VARIADIC
|
|
||||||
.DA #0
|
|
||||||
* float cos ( float x );
|
|
||||||
>PSTR "cos"
|
|
||||||
.DA #CSH.T.FLOAT
|
|
||||||
.DA #CSH.T.FLOAT
|
|
||||||
.DA #0
|
|
||||||
*--------------------------------------
|
|
||||||
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 "$ "
|
||||||
MSG.ECHO >CSTR ">%s\r\n"
|
MSG.ECHO >CSTR ">%s\r\n"
|
||||||
|
@ -457,12 +361,11 @@ MSG.CSHERR >CSTR "^\r\nLine #%D:"
|
||||||
FMT.DATE >CSTR "%A (%w), %B %d %Y"
|
FMT.DATE >CSTR "%A (%w), %B %d %Y"
|
||||||
FMT.TIME >CSTR "%H:%M:%S (%I:%M:%S%p)"
|
FMT.TIME >CSTR "%H:%M:%S (%I:%M:%S%p)"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
.INB /A2OSX.SRC/SBIN/SHELL.C.CSH
|
||||||
.INB /A2OSX.SRC/X.ERRORS.S
|
.INB /A2OSX.SRC/X.ERRORS.S
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EscChars.Count .EQ 4
|
EscChars.Count .EQ 4
|
||||||
EscChars .AS 'DBAC'
|
EscChars .AS 'DBAC'
|
||||||
|
|
||||||
CSH.TSIZE .HS 0001020405 VOID,CHAR,INT,LONG,FLOAT....
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
@ -476,7 +379,6 @@ bEscMode .BS 1
|
||||||
bPause .BS 1
|
bPause .BS 1
|
||||||
bExit .BS 1
|
bExit .BS 1
|
||||||
bEcho .BS 1
|
bEcho .BS 1
|
||||||
bExitOnEOF .BS 1
|
|
||||||
|
|
||||||
bReadMode .BS 1
|
bReadMode .BS 1
|
||||||
bSecureRead .BS 1
|
bSecureRead .BS 1
|
||||||
|
@ -498,32 +400,8 @@ IO.hIn .BS 1
|
||||||
IO.hOut .BS 1
|
IO.hOut .BS 1
|
||||||
IO.hErr .BS 1
|
IO.hErr .BS 1
|
||||||
|
|
||||||
CSH.hBuf .BS 1
|
.INB /A2OSX.SRC/SBIN/SHELL.G.CSH
|
||||||
CSH.BufPtrSave .BS 2
|
|
||||||
|
|
||||||
CSH.LineNum .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
|
|
||||||
|
|
||||||
CSH.ACCT .BS 1
|
|
||||||
CSH.ACC .BS 5
|
|
||||||
|
|
||||||
CSH.EXPBOP1 .BS 1
|
|
||||||
|
|
||||||
CSH.ARGT .BS 1
|
|
||||||
CSH.ARG .BS 5
|
|
||||||
|
|
||||||
CSH.EXPBOP2 .BS 1
|
|
||||||
|
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
Loading…
Reference in New Issue
Block a user