Kernel 0.92

This commit is contained in:
Rémy GIBERT 2019-01-31 16:34:02 +00:00
parent dfa2b31ab7
commit bcfa618bfe
3 changed files with 143 additions and 84 deletions

View File

@ -3,30 +3,6 @@ PREFIX
AUTO 4,1
.LIST OFF
*--------------------------------------
CMD.Init >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPArgVBuf
txa
>STA.G CORE.hArgVBuf
lda #PUSHD.STACK
tay
sta (pData),y
.9 rts
*--------------------------------------
CMD.Quit ldy #CORE.hArgVBuf
jsr .8
ldy #hFileBuf
.8 lda (pData),y
beq .9
>SYSCALL FreeMem
clc
.9 rts
*--------------------------------------
* Read From InputBuf
*--------------------------------------
CMD.Get >LDYA ZPInputBufPtr

View File

@ -6,11 +6,11 @@ AUTO 4,1
* From hCLBuf or hFileBuf
* Get Line from buf until ;, CR, \0 (EOL / EOF)
* :LOOP
* if previous | :
* if CmdSep=| :
* set hStdIn = hStdOut
* set hStdOut = Std
* GetCmd from line until | or EOL
* if | :
* if CmdSep=| :
* create PIPE
* set hStdOut -> PIPE
* CORE.Exec &
@ -25,11 +25,91 @@ AUTO 4,1
* set hStdIn = hStdOut
* set hStdOut = Std
*--------------------------------------
CORE.Run
* Input : ZPInputBufPtr
*--------------------------------------
* Input : CORE.IntCmd,ZPArgVBuf
CORE.Exec >STZ.G CL.CmdSep
>STZ.G CORE.IntCmd
lda #S.PS.F.HOLD+S.PS.F.DUPENV
>STA.G CORE.PSFlags
>PUSHW ZPCLBuf
>LDYA ZPCLBuf
>STYA ZPCLBufPtr
>SYSCALL Args2ArgV TOKENIZE CL in ZPCLBuf
lda (ZPCLBufPtr)
beq .8
cmp #'#' comment ?
beq .8
.10 >LDA.G CL.CmdSep
cmp #'|'
bne .11
PIPE
.11 >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPArgVBuf
>STYA ZPArgVBufPtr
txa
>STA.G CORE.hArgVBuf
.12 lda #0
sta (ZPArgVBuf)
.1 cmp #'#' comment ?
beq .8 yes, ignore remaining
>LDA.G CORE.IntCmd
bne .3 we already have Cmd, go check args
ldy #1
lda (ZPCLBufPtr),y only one char ?
bne .2
lda (ZPCLBufPtr)
cmp #'.' leading dot ?
bne .2
>LDA.G CORE.PSFlags yes, child process will run in same ENV
and #$ff^S.PS.F.DUPENV
sta (pData),y
bra .6 and skip this token
.2
.3 jsr CL.CheckIO
bcc .7 IO token & related args processed
tay an error ?
bne .9 yes...I/O error...
jsr CL.AddCLBufPtrToArgV no...add as cmd or arg
bcs .9
.6 jsr CL.NextCLToken
.7 lda (ZPCLBufPtr)
.80 >LDA.G CORE.hArgVBuf
>SYSCALL freemem
.8 clc
.9 rts
*--------------------------------------
CORE.Exec jsr CORE.StkGet IF,WHILE,FOR ?
* Input : ZPArgVBuf
*--------------------------------------
CORE.ExecCmd jsr CORE.StkGet IF,WHILE,FOR ?
bcs .3 no particular context, exec...
tax
@ -86,7 +166,49 @@ CORE.INT.STARTPROC
rts
*--------------------------------------
CORE.INT.SHIFT lda #1
jmp ShiftA
CORE.INT.SHIFTA >SYSCALL ArgV
bcs .8
>STYA ZPPtr1
>STYA ZPPtr2
.10 ldy #$ff
.1 iny Compute ArgX len
lda (ZPPtr1),y
bne .1
.2 tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .3
inc ZPPtr1+1
.3 ldy #$ff
.4 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .4
tya
beq .7
sec
adc ZPPtr2
sta ZPPtr2
bcc .2
inc ZPPtr2+1
bra .2
.7 ldy #S.PS.ARGC
lda (pPS),y
dec
sta (pPS),y
.8 clc
rts
*--------------------------------------
CORE.INT.PWD ldy #S.PS.hPREFIX
lda (pPs),y
@ -1085,7 +1207,7 @@ CORE.StkGetPtr lda (pData) StackPtr
sec
rts
*--------------------------------------
CORE.StkPush pha
CORE.StkPush pha
lda (pData) StackPtr
inc
cmp #CORE.STACK.MAX
@ -1102,7 +1224,7 @@ CORE.StkPush pha
* sec
rts
*--------------------------------------
CORE.StkPull jsr CORE.StkGet
CORE.StkPull jsr CORE.StkGet
bcs .9
dey

View File

@ -66,6 +66,7 @@ ZPCLBufPtr .BS 2
ZPInputBufPtr .BS 2
ZPInputBufPtrBak .BS 2
ZPArgVBuf .BS 2
ZPArgVBufPtr .BS 2
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
@ -188,7 +189,7 @@ CS.RUN jsr CMD.Init
>STYA ZPInputBufPtr
lda #0
jsr ShiftA Remove $0=/bin/shell
jsr CORE.INT.SHIFTA Remove $0=/bin/shell
bra CS.RUN.LOOP
*--------------------------------------
@ -301,6 +302,8 @@ CS.RUN.INTERACTIVE
jsr HIS.Add
>LDYA ZPCLBuf
>STYA ZPInputBufPtr
jmp CS.RUN.Exec
.8 jmp CS.RUN.LOOP
*--------------------------------------
@ -389,12 +392,7 @@ CS.RUN.BATCH >SYSCALL GetChar
bcs .9
*--------------------------------------
CS.RUN.Exec jsr CL.Parse
bcs CS.RUN.LOOP.END
lda (ZPArgVBuf)
beq CS.RUN.LOOP.8
jsr CORE.Exec
CS.RUN.Exec jsr CORE.Exec
*--------------------------------------
CS.RUN.LOOP.END ldy #S.PS.RC
sta (pPs),y
@ -446,8 +444,13 @@ CS.DOEVENT lda (pEvent)
.9 sec
rts
*--------------------------------------
CS.QUIT jsr HIS.Quit
jsr CMD.Quit
CS.QUIT >LDA.G hFileBuf
beq .1
>SYSCALL FreeMem
.1 jsr HIS.Quit
jsr CL.Quit
clc
rts
*--------------------------------------
@ -461,49 +464,6 @@ CheckSleep ldy #Sleep+3
ora (pData),y
rts
*--------------------------------------
ShiftA >SYSCALL ArgV
bcs .8
>STYA ZPPtr1
>STYA ZPPtr2
.10 ldy #$ff
.1 iny Compute ArgX len
lda (ZPPtr1),y
bne .1
.2 tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .3
inc ZPPtr1+1
.3 ldy #$ff
.4 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .4
tya
beq .7
sec
adc ZPPtr2
sta ZPPtr2
bcc .2
inc ZPPtr2+1
bra .2
.7 ldy #S.PS.ARGC
lda (pPS),y
dec
sta (pPS),y
.8 clc
rts
*--------------------------------------
Lookup >STYA ZPPtr2
>PULLW ZPPtr1
@ -676,6 +636,7 @@ CL.hCLBuf .BS 1
CL.Ptr .BS 1
CL.Len .BS 1
CL.bExec .BS 1
CL.CmdSep .BS 1
CORE.IntCmd .BS 1
CORE.hArgVBuf .BS 1