Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-01-20 16:24:53 +01:00
parent e04861ce3a
commit 0c494b0094
4 changed files with 70 additions and 53 deletions

Binary file not shown.

View File

@ -23,7 +23,7 @@ CMD.NOHUP lda (ZPArgVBufPtr)
lda #S.PS.F.NOHUP
tsb CORE.PSFlags
>LDYA ZPArgVBuf
jmp CORE.ExecExtCmd
*--------------------------------------
CMD.SHIFT lda (ZPArgVBufPtr)
@ -188,35 +188,27 @@ CMD.SET.1
.1 jsr CMD.IsSwitch
bcs .6
cmp #'C'
ldx #SET.VARS-SET.FLAGS
.2 dex
bmi .4
cmp SET.FLAGS,x
bne .2
ldy #bSET.C
bra .5
ldy SET.VARS,x
lda (pData),y
eor #$ff
sta (pData),y
.2 cmp #'X'
bne .3
ldy #bSET.X
bra .5
.3 cmp #'E'
bne .4
ldy #bSET.E
bra .5
.4 cmp #'F'
bne .99
jsr CORE.FUNCRESET
bra .50
.5 lda (pData),y
eor #$ff
sta (pData),y
.50 jsr CORE.ArgV.Next
.5 jsr CORE.ArgV.Next
bne .1
clc
@ -1195,11 +1187,14 @@ CMD.FI jsr CORE.StkPull
CMD.IsSwitch lda (ZPArgVBufPtr)
cmp #'-'
bne .9
ldy #1
lda (ZPArgVBufPtr),y
beq .9
cmp #'0' is -0 ... -9 ?
bcc .9
cmp #'9'+1
bcc .9
@ -1207,11 +1202,11 @@ CMD.IsSwitch lda (ZPArgVBufPtr)
iny
lda (ZPArgVBufPtr),y
bne .9
txa
jmp ToUpperCase
.9 sec
CMD.IsSwitch.RTS
rts
*--------------------------------------
CMD.PrintArgVBufPtr

View File

@ -2,14 +2,7 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
CORE.Init >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPArgVBuf
txa
>STA.G CORE.hArgVBuf
lda #PUSHD.STACK
CORE.Init lda #PUSHD.STACK
>STA.G PUSHD.STACK
.9 rts
@ -67,7 +60,8 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
*--------------------------------------
* http://heirloom.sourceforge.net/sh/sh.1.html
*--------------------------------------
* Input : ZPArgVBuf (String)
* CORE.Run
* Input : ZPInputBufPtr (String)
* Tokenize ZPArgVBuf
* :LOOP
* if CmdSep=| :
@ -102,14 +96,23 @@ CORE.Run.EOF jsr CORE.StkPull
jsr IO.Reset
lda #0
sec
rts Ending 0, CS,A=0
jmp CORE.Run.Exit Ending 0, CS,A=0
.9 lda #E.UNEXPEOF
sec
rts
jmp CORE.Run.Exit
CORE.Run.RTS rts
*--------------------------------------
CORE.Run jsr IO.Reset
>LDYAI 256+16
>SYSCALL GetMem
bcs CORE.Run.RTS
>STYA ZPArgVBuf
txa
>STA.G CORE.hArgVBuf
clc
.HS B0 BCS
@ -117,22 +120,22 @@ CORE.Run.1 sec coming from PIPE OUT
ror
>STA.G CORE.bPipeIn
>LDYA ZPInputBufPtr Save Actual cmd for looping
>LDYA ZPInputBufPtr Save Actual ptr for looping
>STYA ZPInputCmdPtr
>LDYA ZPArgVBuf
>LDYA ZPArgVBuf Reset ArgV Buffer
>STYA ZPArgVBufPtr
lda #0 Reset ArgV Buffer
lda #0
sta (ZPArgVBuf)
dec
* lda #$ff
sta CORE.IntCmd assume external
sec
ror CORE.IntCmd assume external
lda #S.PS.F.HOLD
sta CORE.PSFlags
.3 jsr CORE.GetCharNB
jsr CORE.GetCharNB
bcs CORE.Run.EOF
cmp #C.CR empty line ?
@ -147,7 +150,7 @@ CORE.Run.1 sec coming from PIPE OUT
.8 lda #0
clc
.9 rts EOL, CS,A=0
.9 jmp CORE.Run.Exit EOL, CS,A=0
.4 >LDYA L.CMD internal command ?
jsr CORE.LookupInputBuf
@ -188,7 +191,7 @@ CORE.Run.1 sec coming from PIPE OUT
.44 jsr CORE.GetNextCharNB Skip EoL char
clc
.99 rts
jmp CORE.Run.Exit
*--------------------------------------
CORE.Run.5 >LDYA L.CORE.IO
jsr CORE.LookupInputBuf
@ -198,7 +201,7 @@ CORE.Run.5 >LDYA L.CORE.IO
jsr CORE.IO.JMP
bcc CORE.Run.7
CORE.Run.RTS rts
jmp CORE.Run.Exit
CORE.Run.6 jsr CORE.ArgV.Add
@ -225,13 +228,13 @@ CORE.Run.7 jsr CORE.GetCharNB
bpl .3
jsr IO.Pipe.In
bcs CORE.Run.RTS
bcs CORE.Run.Exit
.3 >LDA.G CORE.bPipeOut
bpl CORE.ExecCmd
bpl .7
jsr IO.Pipe.Out
bcs CORE.Run.RTS
bcs CORE.Run.Exit
lda #S.PS.F.HOLD Run in the background...
trb CORE.PSFlags
@ -256,9 +259,22 @@ CORE.Run.7 jsr CORE.GetCharNB
.6 pla
plp
bcs CORE.Run.RTS
bcs CORE.Run.Exit
jmp CORE.Run.1 Loop with Pipe IN
.7 jsr CORE.ExecCmd
*--------------------------------------
CORE.Run.Exit php
pha
>LDA.G CORE.hArgVBuf
>SYSCALL freemem
>STZ.G CORE.hArgVBuf
pla
plp
rts
*--------------------------------------
* Input : ZPArgVBuf
*--------------------------------------
@ -267,10 +283,9 @@ CORE.ExecCmd lda #0
>LDYA ZPArgVBuf
>STYA ZPArgVBufPtr
lda CORE.IntCmd
ldx CORE.IntCmd
bmi CORE.ExecExtCmd
tax
jmp (J.CMD,x)
CORE.ExecExtCmd >PUSHB CORE.PSFlags

View File

@ -310,6 +310,7 @@ CS.RUN.INTERACTIVE
>STZ.G bREAD.S
dec
>STA.G READ.N
.1 >SYSCALL GetChar
bcs .9 I/O error
.2 cmp #C.EOF ....or Ctrl-D
@ -319,6 +320,7 @@ CS.RUN.INTERACTIVE
>LDA.G CL.bReady Something to execute ?
bpl .1
>PUSHBI 0
>LDYA L.MSG.PROMPTCRLF
>SYSCALL printf
@ -332,14 +334,15 @@ CS.RUN.INTERACTIVE
>SYSCALL strdup
bcs .8
jsr GetArgV Y,A =ARGV
jsr GetArgV Y,A=ARGV, X=strdup
jsr CORE.Load.YAX Exec CL
bcs .9
lda #$C0+C.CLEXEC
jsr CORE.StkPush
.6 jsr CORE.Run
jsr CORE.Run
.8 jmp CS.RUN.LOOP.END
.9 rts
@ -348,17 +351,18 @@ CS.RUN.BATCH >LDA.G bSET.X
beq .5
ldy #$ff
.3 iny
lda (ZPInputBufPtr),y
sta (ZPArgVBuf),y
sta (ZPCLBuf),y
beq .4
eor #C.CR
bne .3
sta (ZPArgVBuf),y
sta (ZPCLBuf),y
.4 >PUSHW ZPArgVBuf
.4 >PUSHW ZPCLBuf
>PUSHBI 2
>LDYA L.MSG.TRACE
>SYSCALL printf
@ -678,6 +682,9 @@ EXP.OP.BINARY.BITS
.DA #%011
EXP.OP.MATH.FPU .DA #FPU.ADD32,#FPU.SUB32,#FPU.IMUL32,#FPU.IDIV32,#FPU.IMOD32
*--------------------------------------
SET.FLAGS .AS "CXE"
SET.VARS .DA #bSET.C,#bSET.X,#bSET.E
*--------------------------------------
.INB USR/SRC/SHARED/X.ERRORS.S
*--------------------------------------