Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-09-05 08:43:09 +02:00
parent 4af39d70ad
commit b5068a2b60
5 changed files with 72 additions and 62 deletions

Binary file not shown.

View File

@ -3,7 +3,12 @@ NEW
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CSH.E.SYNTAX .EQ $C0 CSH.E.SYNTAX .EQ $C0
CSH.E.STACKERR .EQ $C2
CSH.E.SOVERFLW .EQ $C3 CSH.E.SOVERFLW .EQ $C3
*E.NOWHILE .EQ $C4
*E.NOFOR .EQ $C5
*E.NOIF .EQ $C6
CSH.E.UNEXPEOF .EQ $C8
CSH.E.UNDEF .EQ $C9 CSH.E.UNDEF .EQ $C9
* *
CSH.E.NOVERFLW .EQ $D0 CSH.E.NOVERFLW .EQ $D0

View File

@ -83,7 +83,7 @@ CSH.KW >PSTR "if"
>PSTR "switch" >PSTR "switch"
>PSTR "case" >PSTR "case"
>PSTR "break" >PSTR "break"
>PSTR "continue" >PSTR "continue"
>PSTR "float" >PSTR "float"
>PSTR "signed" char,int,long >PSTR "signed" char,int,long
>PSTR "unsigned" char,int,long >PSTR "unsigned" char,int,long

View File

@ -74,10 +74,7 @@ CSH.Run.1 cmp #'#'
tax tax
jmp (J.CSH.KW.END,x) jmp (J.CSH.KW.END,x)
.4 pha .4 jsr CSH.IsLetter
jsr CSH.SavePtr Save Ptr, in case of while,for....
pla
jsr CSH.IsLetter
bcc .5 bcc .5
@ -85,7 +82,8 @@ CSH.Run.1 cmp #'#'
bra .99 error, todo : PREOPS ++ --..... bra .99 error, todo : PREOPS ++ --.....
.5 >LDYA L.CSH.KW .5 jsr CSH.SavePtr Save Ptr, in case of while,for....
>LDYA L.CSH.KW
jsr CSH.LookupID jsr CSH.LookupID
bcs .6 not an internal CSH keyword.... bcs .6 not an internal CSH keyword....
@ -169,14 +167,13 @@ CSH.IF jsr CSH.GetCharNB
cmp #'{' cmp #'{'
bne .9 bne .9
jsr CSH.IsValue0 X = var type from ExpEval
bcc .6 Value=0, skip {{....}}
jsr CSH.GetNextCharNB Skip '{' jsr CSH.GetNextCharNB Skip '{'
bcs .99 bcs .99
jsr CSH.Keyword.start jsr CSH.IsValue0 X = var type from ExpEval
bcs .99 bcc .6 Value=0, skip {{....}}
lda #'}' Tell '}' is expected at the end of block lda #'}' Tell '}' is expected at the end of block
jsr CSH.Push jsr CSH.Push
@ -184,26 +181,7 @@ CSH.IF jsr CSH.GetCharNB
rts rts
.6 ldx #1 expecting 1 '}' for now.... .6 jmp CSH.SkipBlock
.7 jsr CSH.GetNextCharNB
bcs .9
cmp #'{'
bne .71
inx
bra .7
.71 cmp #'}'
bne .7
txa
beq .9
dex
bne .7
jsr CSH.GetNextCharNB skip '}'
clc
rts
.9 lda #CSH.E.SYNTAX .9 lda #CSH.E.SYNTAX
sec sec
@ -236,6 +214,7 @@ CSH.WHILE.END jsr CSH.Pop
rts rts
*-------------------------------------- *--------------------------------------
CSH.ELSE CSH.ELSE
*--------------------------------------
CSH.DO CSH.DO
CSH.FOR CSH.FOR
CSH.SWITCH CSH.SWITCH
@ -943,7 +922,8 @@ CSH.GetVarValueOnStack
* Input : Value on Stack, X = Var Type * Input : Value on Stack, X = Var Type
* Output : CC = true, CS = false * Output : CC = true, CS = false
*-------------------------------------- *--------------------------------------
CSH.IsValue0 cpx #CSH.T.FLOAT CSH.IsValue0 >DEBUG
cpx #CSH.T.FLOAT
bcc .1 char,int,long bcc .1 char,int,long
ldy CSH.TYPESIZE,x ldy CSH.TYPESIZE,x
@ -954,15 +934,13 @@ CSH.IsValue0 cpx #CSH.T.FLOAT
.8 clc .8 clc
rts rts
.1 tax .1 jsr CSH.SIZEOF
lda CSH.TYPESIZE,x
tax tax
lda #0
ldy #1
.2 ora ZPVarData,y lda #0
iny
.2 ora (pStack)
inc pStack
dex dex
bne .2 bne .2
@ -1039,6 +1017,22 @@ CSH.BOPS.LOR
*-------------------------------------- *--------------------------------------
* Stack * Stack
*-------------------------------------- *--------------------------------------
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 CSH.Push pha
>LDA.G CSH.StackPtr >LDA.G CSH.StackPtr
inc inc
@ -1069,25 +1063,6 @@ CSH.Pop >LDA.G CSH.StackPtr
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CSH.CheckStack tax
>LDA.G CSH.StackPtr
beq .9
dec
tay
txa
cmp (ZPCSHStack),y
bne .9
tya
>STA.G CSH.StackPtr
clc
rts
.9 lda #CSH.E.SYNTAX
sec
rts
*--------------------------------------
* CHAR related Subs..... * CHAR related Subs.....
*-------------------------------------- *--------------------------------------
CSH.GetOPLen ldy #0 CSH.GetOPLen ldy #0
@ -1114,6 +1089,26 @@ CSH.GetIDLen ldy #0
.8 tya .8 tya
rts rts
*-------------------------------------- *--------------------------------------
CSH.SkipBlock ldx #1 expecting 1 '}' for now....
.1 jsr CSH.GetNextCharNB
bcs .9
cmp #'{'
bne .2
inx
bra .1
.2 cmp #'}'
bne .1
txa
beq .9
dex
bne .1
jmp CSH.GetNextCharNB skip '}'
.9 rts
*--------------------------------------
CSH.GetCharNB jsr CSH.GetChar CSH.GetCharNB jsr CSH.GetChar
bcs CSH.GetNextCharNB.RTS bcs CSH.GetNextCharNB.RTS
jsr CSH.CheckCharNB jsr CSH.CheckCharNB
@ -1212,8 +1207,6 @@ CSH.SIZEOF txa
*-------------------------------------- *--------------------------------------
* EXEC * EXEC
*-------------------------------------- *--------------------------------------
CSH.EXEC jmp (J.CSH.EXEC,x)
*--------------------------------------
EXEC.printf >SYSCALL printf2 EXEC.printf >SYSCALL printf2
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -54,6 +54,7 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.USAGE .DA MSG.USAGE
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
L.MSG.HEXWORD .DA MSG.HEXWORD L.MSG.HEXWORD .DA MSG.HEXWORD
L.MSG.ERR .DA MSG.ERR L.MSG.ERR .DA MSG.ERR
@ -119,11 +120,15 @@ CS.RUN lda #$ff
sec sec
rts rts
.8 lda #0 .8 lda #0 Exit Code = Success
sec sec
rts rts
.90 lda #E.SYN Exit Code = Succes .90 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec QUIT Process sec QUIT Process
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
@ -247,15 +252,22 @@ CS.END
* Initialized DATA * Initialized DATA
*-------------------------------------- *--------------------------------------
MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n" MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n"
MSG.USAGE .AS "Usage : CSH file\r\n"
.AS " -D : Debug Mode\r\n"
.AS " -T : Trace On"
MSG.ECHOCRLF .AZ "\r\n" MSG.ECHOCRLF .AZ "\r\n"
MSG.HEXWORD .AZ "[%H]" MSG.HEXWORD .AZ "[%H]"
MSG.ERR .AZ " ^\r\nLine #%D:" MSG.ERR .AZ " ^\r\nLine #%D:"
*--------------------------------------
OptionList >PSTR "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*-------------------------------------- *--------------------------------------
.INB USR/SRC/BIN/CSH.I .INB USR/SRC/BIN/CSH.I
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START .INB USR/SRC/BIN/CSH.D DS.START .INB USR/SRC/BIN/CSH.D
bDebug .BS 1
bTrace .BS 1 bTrace .BS 1
DS.END DS.END
.ED .ED