Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-02-11 16:44:56 +00:00
parent 62a3982b48
commit eca155089c
6 changed files with 107 additions and 91 deletions

Binary file not shown.

View File

@ -222,7 +222,7 @@ CMD.SET lda (ZPArgVBufPtr)
*--------------------------------------
* SET +X VAR = VALUE1 op VALUE2 op VALUE3 ...
*--------------------------------------
CMD.SET.1 >DEBUG
CMD.SET.1
.1 jsr CMD.IsSwitch
bcs .6
@ -525,7 +525,7 @@ CMD.IF jsr CORE.StkGet
bit #$40 Parent is true ?
beq .3
jsr EXP.TEST
bcs .9

View File

@ -48,21 +48,30 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
>LDYA ZPArgVBuf
>STYA ZPArgVBufPtr
lda #0 Reset ArgV Buffer
sta (ZPArgVBuf)
lda #S.PS.F.HOLD+S.PS.F.DUPENV
>STA.G CORE.PSFlags
lda #$ff
>STA.G CORE.IntCmd assume external
jsr CORE.GetCharNB
bcs CORE.Run.RTS Ending 0, CS,A=0
bcs .9 Ending 0, CS,A=0
cmp #'#' commented line?
bne .2
.1 jsr CORE.GetNextCharNB
bcs CORE.Run.RTS A=0, CS
bcs .8 A=0
eor #C.CR
bne .1
.9 rts EOL, CC,A=0
jsr CORE.GetNextChar
.8 clc
.9 rts EOL, CS,A=0
.2 cmp #'|'
bne .3
@ -89,18 +98,21 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
bcs CORE.Run.RTS nothing to execute...
.4 >LDYA L.CMD internal command ?
jsr CORE.Lookup
bcs .6 external, add token
jsr CORE.LookupInputBuf
bcs .6 no...assume external...no IO token Expected
jsr CORE.SkipCharsA
txa
>STA.G CORE.IntCmd
bra .7 internal, do not add token
.5 >LDYA L.CORE.IO
jsr CORE.Lookup
jsr CORE.LookupInputBuf
bcs .6
jsr CORE.GetNextCharNB
bcs CORE.Run.CSYN
jsr CORE.SkipCharsA
jsr CORE.IO.JMP
bcs CORE.Run.RTS
bra .7
@ -108,33 +120,36 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
.6 jsr CORE.ArgV.Add
.7 jsr CORE.GetCharNB
bcs CORE.ExecCmd
bcs CORE.ExecCmd.1 Nothing to skip
jsr CORE.IsEndCmd
bcs .5
cmp #'|'
beq CORE.ExecCmd
jsr CORE.GetNextCharNB
cmp #'|'
bne CORE.ExecCmd skip CR, ;
jsr IO.Pipe.Out
bcs CORE.Run.RTS
bra CORE.ExecCmd
.8 clc
bra CORE.ExecCmd.1 Do not skip |
CORE.Run.RTS rts
*--------------------------------------
* Input : ZPArgVBuf
*--------------------------------------
CORE.ExecCmd lda #0
jsr CORE.ArgV.PutChar
CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char
CORE.ExecCmd.1 lda #0
sta (ZPArgVBufPtr)
>LDYA ZPArgVBuf
>STYA ZPArgVBufPtr
>LDA.G CORE.IntCmd
bmi CORE.ExecExtCmd
tax
>LDYA ZPArgVBuf
>STYA ZPArgVBufPtr
jmp (J.CMD,x)
@ -166,18 +181,24 @@ CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
.8 clc
.9 rts
*--------------------------------------
* search ZPInputBufPtr in Y,A table
* search ZPInputBufPtr/ZPArgVBufPtr in Y,A table
*--------------------------------------
CORE.Lookup >STYA ZPPtr1
CORE.LookupInputBuf
>STYA ZPPtr1
>LDYA ZPInputBufPtr
bra CORE.Lookup
CORE.LookupArgVBuf
>STYA ZPPtr1
>LDYA ZPArgVBufPtr
CORE.Lookup >STYA ZPPtr2
ldx #0
.1 phx
ldy #$ff
.1 ldy #$ff
.2 iny
lda (ZPInputBufPtr),y
lda (ZPPtr2),y
beq .3 Src Keyword end
jsr CORE.IsSpaceOrEndCmd
@ -185,24 +206,16 @@ CORE.Lookup >STYA ZPPtr1
lda (ZPPtr1),y
beq .4 Table Keyword end
cmp (ZPInputBufPtr),y
cmp (ZPPtr2),y
beq .2
bra .4
.3 lda (ZPPtr1),y
bne .4
plx
tya
clc
adc ZPInputBufPtr
sta ZPInputBufPtr
bcc .8
clc
inc ZPInputBufPtr+1
tya Keyword Len
clc
.8 rts
.4 inc ZPPtr1
@ -216,8 +229,7 @@ CORE.Lookup >STYA ZPPtr1
bne .6
inc ZPPtr1+1
.6 plx
inx
.6 inx
inx
lda (ZPPtr1) Array Ending 0, must be an external Cmd....
@ -231,29 +243,29 @@ CORE.Lookup.9 sec
*--------------------------------------
CORE.ArgV.Add jsr CORE.GetCharNB
bcs CORE.Lookup.9
ldx #0
ldx #0 reset "" mode
.1 cmp #'"'
bne .2
txa
eor #$ff
eor #$ff toggle "" mode
tax
bra .4
.2 cmp #C.SPACE
bne .3
txa
bpl .8
txa between "" ?
beq .8
.3 jsr CORE.IsEndCmd
bcc CORE.Lookup.9
bcc .8
jsr CORE.ArgV.PutChar
.4 jsr CORE.GetNextChar
bra .1
bcc .1
.8 lda #0
*--------------------------------------
@ -262,7 +274,7 @@ CORE.ArgV.PutChar
CORE.ArgV.NextChar
inc ZPArgVBufPtr
bne .8
inc ZPArgVBufPtr
inc ZPArgVBufPtr+1
.8 rts
*--------------------------------------
CORE.ArgV.Next lda (ZPArgVBufPtr)
@ -380,6 +392,13 @@ CORE.GetChar lda (ZPInputBufPtr)
.9 sec
rts
*--------------------------------------
CORE.SkipCharsA clc
adc ZPInputBufPtr
sta ZPInputBufPtr
bcc .8
inc ZPInputBufPtr+1
.8 rts
*--------------------------------------
* Stack
*--------------------------------------
CORE.StkPushPtr lda ZPInputCmdPtr

View File

@ -5,7 +5,7 @@ AUTO 4,1
*--------------------------------------
EXP.GET >LDYA ZPArgVBufPtr
>STYA ZPPtr1
>DEBUG
jsr CORE.ArgV.Next
bne .1
@ -20,7 +20,7 @@ EXP.GET >LDYA ZPArgVBufPtr
>PULLL.G M32.ACC
.2 >LDYA L.EXP.OP.MATH + - .... ?
jsr CORE.Lookup
jsr CORE.LookupArgVBuf
bcs .9
txa
@ -65,7 +65,7 @@ EXP.TEST lda (ZPArgVBufPtr)
beq .9
>LDYA L.EXP.BEGIN
jsr CORE.Lookup
jsr CORE.LookupArgVBuf
bcs .9
@ -84,7 +84,7 @@ EXP.TEST lda (ZPArgVBufPtr)
beq .9
>LDYA L.EXP.OP.UNARY -d -e -f ?
jsr CORE.Lookup
jsr CORE.LookupArgVBuf
bcs .1
@ -111,7 +111,7 @@ EXP.TEST lda (ZPArgVBufPtr)
beq .9
>LDYA L.EXP.OP.BINARY -eq -ne .... ?
jsr CORE.Lookup
jsr CORE.LookupArgVBuf
bcs .9
txa
>STA.G CORE.Operator

View File

@ -190,7 +190,7 @@ CS.RUN jsr CL.Init
>STYA ZPInputBufPtr
lda #0
jsr CMD.SHIFTA Remove $0=/bin/shell
jsr CMD.SHIFTA Remove $0=/bin/sh
lda #$ff
>STA.G bBatchMode
@ -374,25 +374,33 @@ CS.RUN.BATCH >SYSCALL GetChar
clc
jmp CS.RUN.LOOP.END
.2 jsr CORE.Run
bcc .7
.2 >LDA.G bSET.X
beq .5
ldy #$ff
.3 iny
lda (ZPInputBufPtr),y
sta (ZPArgVBuf),y
beq .4
eor #C.CR
bne .3
sta (ZPArgVBuf),y
.4 >PUSHW ZPArgVBuf
>PUSHBI 2
>LDYA L.MSG.TRACE
>SYSCALL printf
bcs .9
.5 jsr CORE.Run
bcc CS.RUN.LOOP.END
pha
lda #$ff
>STA.G bExit
inc
clc
bra CS.RUN.LOOP.END
.7 >LDA.G bSET.X
* beq .8
* >PUSHW ZPArgVBuf
* >PUSHBI 2
* >LDYA L.MSG.TRACE
* >SYSCALL printf
* bcs .9
pla
CS.RUN.LOOP.END ldy #S.PS.RC
sta (pPs),y

View File

@ -262,31 +262,20 @@ MEM.NextSlot lda ZPMemMgrSPtr
* none.
* (X unmodified)
*\--------------------------------------
K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad,%s\r\n"
K.FreeMem.ERRFREED .AZ "FreeMem:$%h=free,%s\r\n"
K.FreeMem.MSG .AZ "FreeMem:hMem=$%h,PID=%d\r\n"
*--------------------------------------
K.FreeMem.BAD sec
.HS 90 BCC
K.FreeMem.FREED clc
phx
K.FreeMem.ERR phx
php
phy hMem n Y
ldy #S.PS.hARGV
ldy #S.PS.PID
lda (pPS),y
jsr K.GetMemPtr
>PUSHYA
>PUSHA
pla
>PUSHA
>PUSHBI 3
>LDYAI K.FreeMem.ERRBAD
plp
bcs .1
>LDYAI K.FreeMem.ERRFREED
>PUSHBI 2
>LDYAI K.FreeMem.MSG
.1 >SYSCALL printf
@ -296,15 +285,15 @@ K.FreeMem.FREED clc
rts
*--------------------------------------
K.FreeMem tay
beq K.FreeMem.BAD Slot=0, reserved by Kernel
beq K.FreeMem.ERR Slot=0, reserved by Kernel
cmp Mem.LastSlot
bcc .10
bne K.FreeMem.BAD
bne K.FreeMem.ERR
.10 jsr MEM.GetMemByID X,Y unmodified
lda (ZPMemMgrSPtr) In use ?
bpl K.FreeMem.FREED
bpl K.FreeMem.ERR
ldy #S.MEM.REFCNT
lda (ZPMemMgrSPtr),y