Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-04-03 12:46:50 +01:00
parent 068771100c
commit c805d3c21d
4 changed files with 153 additions and 164 deletions

Binary file not shown.

View File

@ -67,21 +67,27 @@ CMD.PWD ldy #S.PS.hPREFIX
>SYSCALL puts
rts
*--------------------------------------
CMD... lda (ZPArgVBufPtr)
bne CMD.POPD.CSYN
>LDYA L.CMD
bra CMD.CD.YA
*--------------------------------------
CMD.CD lda (ZPArgVBufPtr)
beq CMD.CD.HOME
CMD.CD.0 >LDYA ZPArgVBufPtr
bra CMD.CD.1
bra CMD.CD.YA
CMD.CD.HOME >LDYA L.ENV.HOME
>SYSCALL GetEnv
bcc CMD.CD.1
bcc CMD.CD.YA
>LDYA L.ENV.ROOT
>SYSCALL GetEnv
bcs CMD.PWD
CMD.CD.1 >SYSCALL realpath
CMD.CD.YA >SYSCALL realpath
bcs CMD.POPD.RTS
>STYA ZPPtr1
@ -487,23 +493,6 @@ CMD.PAUSE lda #$FF
clc
rts
*--------------------------------------
CMD.EXIT lda (ZPArgVBufPtr)
beq .8 no arg, exit 0
>LDYA ZPArgVBufPtr
>SYSCALL AToL
bcs .9
>PULLL M32.ACC
lda M32.ACC
.8 pha
lda #$FF
>STA.G bExit
pla
clc
.9 rts
*--------------------------------------
CMD.MD lda (ZPArgVBufPtr)
beq .9
@ -552,6 +541,10 @@ CMD.FUNC lda (ZPArgVBufPtr)
jsr CORE.StkGetCtx
bcc .9 NO context allowed
lda #3
jsr CORE.StkCheck
bcs .99
>LDA.G hFuncList
bne .1
@ -563,17 +556,10 @@ CMD.FUNC lda (ZPArgVBufPtr)
>LDA.G hFuncList
>SYSCALL SListNewKey
bcs .99
phy
jsr CORE.StkPush
ply
bcs .99
tya
jsr CORE.StkPush
bcs .99
jsr CORE.StkPushYA
lda #$C0+C.FUNC
jsr CORE.StkPush
bcs .99
lda #$ff
>STA.G bFuncMode
@ -582,21 +568,13 @@ CMD.FUNC lda (ZPArgVBufPtr)
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.RETURN jsr CORE.RETURN
bcs .9
CMD.. lda (ZPArgVBufPtr)
beq .9
lda (ZPArgVBufPtr)
beq .8 no arg, exit 0
>LDYA ZPArgVBufPtr
>SYSCALL AToL
bcs .9
jmp CORE.FCALL exec cmd file and continue
>PULLL M32.ACC
lda M32.ACC
.8 clc
.9 rts
.9 jmp CMD.Exec.CSYN
*--------------------------------------
CMD.CALL >LDA.G hFuncList
beq .9
@ -623,6 +601,39 @@ CMD.CALL >LDA.G hFuncList
sec
.99 rts
*--------------------------------------
CMD.RETURN jsr CORE.RETURN
bcs .9
lda (ZPArgVBufPtr)
beq .8 no arg, exit 0
>LDYA ZPArgVBufPtr
>SYSCALL AToL
bcs .9
>PULLL M32.ACC
lda M32.ACC
.8 clc
.9 rts
*--------------------------------------
CMD.EXIT lda (ZPArgVBufPtr)
beq .8 no arg, exit 0
>LDYA ZPArgVBufPtr
>SYSCALL AToL
bcs .9
>PULLL M32.ACC
lda M32.ACC
.8 pha
lda #$FF
>STA.G bExit
pla
clc
.9 rts
*--------------------------------------
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.Test
bcs .9
@ -796,44 +807,37 @@ CMD.FOR jsr CORE.StkGetCtx
jmp FOR.EXEC
*--------------------------------------
FOR.LIST sec
FOR.LIST lda #8
jsr CORE.StkCheck
bcs .9
sec
jsr CORE.StkPushPtr Push CmdPtr AFTER FOR
bcs .99
>LDYA ZPArgVBufPtr
>SYSCALL strdup
bcs .99
bcs .9
phy
jsr CORE.StkPush Push listPtr
ply
bcs .99
tya
jsr CORE.StkPush Push listptr
bcs .99
jsr CORE.StkPushYA Push listPtr
txa
jsr CORE.StkPush Push hLIST
bcs .99
>LDYA ZPVarNamePtr
>SYSCALL strdup
bcs .99
bcs .9
txa
jsr CORE.StkPush Push hVARNAME
bcs .99
jsr CORE.StkPush Push hVARNAME
lda #C.FOR.LIST
jsr CORE.StkPush
bcs .99
lda #C.FOR
jsr CORE.StkPush
bcs .99
jsr CMD.NEXT.LIST.1
bcs .99
bcs .9
>ORA.G CORE.Test
ora #C.FOR Push FOR
@ -845,11 +849,14 @@ FOR.LIST sec
* clc
.99 rts
.9 rts
*--------------------------------------
FOR.FILE sec
FOR.FILE lda #8
jsr CORE.StkCheck
bcs FOR.FILE.9
sec
jsr CORE.StkPushPtr Push CmdPtr AFTER FOR
bcs .99
jsr CORE.ArgV.NextChar skip "("
@ -859,28 +866,24 @@ FOR.FILE sec
>LDYA ZPArgVBufPtr
>SYSCALL fopen
bcs .99
jsr CORE.StkPush push hFILE
bcs .99
bcs FOR.FILE.9
jsr CORE.StkPush push hFILE
>LDYA ZPVarNamePtr
>SYSCALL strdup
bcs .99
bcs FOR.FILE.9
txa
jsr CORE.StkPush Push hVARNAME
bcs .99
lda #C.FOR.FILE
jsr CORE.StkPush
bcs .99
lda #C.FOR
jsr CORE.StkPush
bcs .99
jsr CMD.NEXT.LINE
bcs .99
bcs FOR.FILE.9
>ORA.G CORE.Test
ora #C.FOR Push FOR
@ -892,21 +895,24 @@ FOR.FILE sec
* clc
.99 rts
FOR.FILE.9 rts
*--------------------------------------
FOR.EXEC sec
FOR.EXEC lda #8
jsr CORE.StkCheck
bcs FOR.FILE.9
sec
jsr CORE.StkPushPtr Push CmdPtr AFTER FOR
bcs .9
jsr CORE.ArgV.NextChar skip "`"
jsr IO.Pipe.Out
bcs .99
bcs .9
>PUSHBI S.PS.F.DUPENV
>LDYA ZPArgVBufPtr
>SYSCALL execl
bcs .99
bcs .9
>LDA.G IO.hOut
ldy #S.PS.hStdOut
@ -919,29 +925,25 @@ FOR.EXEC sec
>PUSHBI O.RDONLY+O.TEXT
>LEA.G IO.NodBuf
>SYSCALL fopen
.9 bcs .99
bcs .9
jsr CORE.StkPush push hPIPE
bcs .99
>LDYA ZPVarNamePtr
>SYSCALL strdup
bcs .99
bcs .9
txa
jsr CORE.StkPush Push hVARNAME
bcs .99
lda #C.FOR.EXEC
jsr CORE.StkPush
bcs .99
lda #C.FOR
jsr CORE.StkPush
bcs .99
jsr CMD.NEXT.LINE
bcs .99
bcs .9
>ORA.G CORE.Test
ora #C.FOR Push FOR
@ -953,7 +955,7 @@ FOR.EXEC sec
* clc
.99 rts
.9 rts
*--------------------------------------
CMD.NEXT jsr CORE.StkGet Y = StkPtr
@ -1215,8 +1217,7 @@ CMD.IF jsr CORE.StkGetCtx
.8 >LDA.G CORE.Test
>ORA.G CORE.IntCmd
jmp CORE.StkPush
clc
.9 rts
*--------------------------------------
CMD.LOOP jsr CORE.StkPull

View File

@ -114,26 +114,9 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
.9 rts EOL, CS,A=0
.2 >LDA.G bFuncMode
bpl .13
bpl .4
jmp CORE.AddFunc
.13 jsr CORE.GetCharNB
cmp #'.'
bne .4
ldy #1
lda (ZPInputBufPtr),y
cmp #C.SPACE
bne .4
jsr CORE.GetNextCharNB skip ". "
bcs .99 nothing to execute...
lda #$ff
>STA.G CORE.CmdFile
bra .42
.4 >LDYA L.CMD internal command ?
jsr CORE.LookupInputBuf
@ -231,7 +214,7 @@ CORE.ExecExtCmd >LDA.G CORE.CmdFile
bpl .1
>LDYA ZPArgVBufPtr
jsr CORE.FCALL.NOQUIT
jsr CORE.FCALL
bra CORE.ExecExtCmd.Exit
.1 >PUSHB.G CORE.PSFlags
@ -348,17 +331,7 @@ CORE.SkipLine jsr CORE.GetNextCharNB
.8 rts
*--------------------------------------
CORE.FCALL.QUIT sec
.HS 90 BCC
CORE.FCALL.NOQUIT
clc
>STYA ZPPtr1 ArgV
lda #0
ror
>STA.G bExitOnEOF
CORE.FCALL >STYA ZPPtr1 ArgV
>PUSHWI 0 Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
@ -376,26 +349,25 @@ CORE.CALL stx M32.ACC X=Code to Execute
stx M32.ACC+1 X=ARGV
lda #7
jsr CORE.StkCheck
bcs CORE.CALL.9
lda ZPInputBuf
jsr CORE.StkPush
bcs CORE.CALL.9
lda ZPInputBuf+1
jsr CORE.StkPush
bcs CORE.CALL.9
lda ZPInputBufPtr
jsr CORE.StkPush
bcs CORE.CALL.9
lda ZPInputBufPtr+1
jsr CORE.StkPush
bcs CORE.CALL.9
ldy #S.PS.hARGV
lda (pPS),y
jsr CORE.StkPush
bcs CORE.CALL.9
lda M32.ACC+1 new ARGV
ldy #S.PS.hARGV
@ -403,7 +375,6 @@ CORE.CALL stx M32.ACC X=Code to Execute
lda M32.ACC
jsr CORE.StkPush
bcs CORE.CALL.9
lda M32.ACC
>SYSCALL GetMemPtr
@ -411,10 +382,10 @@ CORE.CALL stx M32.ACC X=Code to Execute
>STYA ZPInputBufPtr
lda #$C0
jmp CORE.StkPush
CORE.CALL.90 lda #E.STKOVERFLOW
sec
jsr CORE.StkPush
>INC.G bBatchMode
* clc
CORE.CALL.9 rts
*--------------------------------------
CORE.RETURN jsr CORE.StkPull
@ -446,6 +417,7 @@ CORE.RETURN jsr CORE.StkPull
jsr CORE.StkPull
sta ZPInputBuf
>DEC.G bBatchMode
* clc
rts
@ -847,6 +819,16 @@ CORE.StkErr lda #E.STACKERROR
sec
rts
*--------------------------------------
CORE.StkCheck sec
adc (pData) StackPtr
cmp #CORE.STACK.MAX
lda #E.STKOVERFLOW
rts
*--------------------------------------
CORE.StkPushYA phy
jsr CORE.StkPush
pla
*--------------------------------------
CORE.StkPush pha
lda (pData) StackPtr
inc

View File

@ -10,43 +10,45 @@ HISTORY.MAX .EQ 256
CORE.STACK.MAX .EQ 128
PUSHD.STACK.MAX .EQ 8
*--------------------------------------
C.NOHUP .EQ 0
C.CD .EQ 1
C.DATE .EQ 2
C.ECHO .EQ 3
C.EXIT .EQ 4
C.GETKEY .EQ 5
C.MD .EQ 6
C.PAUSE .EQ 7
C.PWD .EQ 8
C.RD .EQ 9
C.READ .EQ 10
C.REN .EQ 11
C.SET .EQ 12
C.SLEEP .EQ 13
C.SHIFT .EQ 14
C.TIME .EQ 15
C.PUSHD .EQ 16
C.POPD .EQ 17
C.FUNC .EQ 18
C.RETURN .EQ 19
C.CALL .EQ 20
C.BREAK .EQ 21
C.SWITCH .EQ 22
C.CASE .EQ 23
C.DEFAULT .EQ 24
C.END .EQ 25
C... .EQ 0
C.. .EQ 1
C.CD .EQ 2
C.NOHUP .EQ 3
C.DATE .EQ 4
C.ECHO .EQ 5
C.EXIT .EQ 6
C.GETKEY .EQ 7
C.MD .EQ 8
C.PAUSE .EQ 9
C.PWD .EQ 10
C.RD .EQ 11
C.READ .EQ 12
C.REN .EQ 13
C.SET .EQ 14
C.SLEEP .EQ 15
C.SHIFT .EQ 16
C.TIME .EQ 17
C.PUSHD .EQ 18
C.POPD .EQ 19
C.FUNC .EQ 20
C.RETURN .EQ 21
C.CALL .EQ 22
C.BREAK .EQ 23
C.SWITCH .EQ 24
C.CASE .EQ 25
C.DEFAULT .EQ 26
C.END .EQ 27
*--------------------------------------
C.FOR .EQ 26
C.FOR .EQ 28
C.FOR.LIST .EQ 0
C.FOR.FILE .EQ 2
C.FOR.EXEC .EQ 4
C.WHILE .EQ 27
C.IF .EQ 28
C.NEXT .EQ 29
C.LOOP .EQ 30
C.ELSE .EQ 31
C.FI .EQ 32
C.WHILE .EQ 29
C.IF .EQ 30
C.NEXT .EQ 31
C.LOOP .EQ 32
C.ELSE .EQ 33
C.FI .EQ 34
*--------------------------------------
E.CSYN .EQ $C0
E.ESYN .EQ $C1
@ -127,8 +129,10 @@ J.ESC .DA CL.BS left arrow
.DA HIS.GetPrev
.DA CL.NAK right arow
L.CMD .DA CMD
J.CMD .DA CMD.NOHUP
J.CMD .DA CMD...
.DA CMD..
.DA CMD.CD
.DA CMD.NOHUP
.DA CMD.DATE
.DA CMD.ECHO
.DA CMD.EXIT
@ -204,19 +208,19 @@ CS.RUN jsr CL.Init
lda (pPS),y
beq .1 no arg, continue starting interactive
lda #$ff
>STA.G bExitOnEOF
lda #0
jsr CMD.SHIFTA Remove $0=/bin/sh
ldy #S.PS.hARGV
lda (pPS),y
>SYSCALL GetMemPtr
jsr CORE.FCALL.QUIT Exec file an exit
jsr CORE.FCALL Exec file an exit
bcs CS.INIT.RTS
lda #$ff
>STA.G bBatchMode
bra CS.RUN.LOOP
*--------------------------------------
.1 jsr CMD.CD.HOME
@ -235,7 +239,7 @@ CS.RUN jsr CL.Init
bcs CS.RUN.LOOP no profile...
>LDYA L.HOME.PROFILE
jsr CORE.FCALL.NOQUIT exec profile and continue
jsr CORE.FCALL exec profile and continue
* bcs CS.RUN.LOOP
*--------------------------------------
@ -585,8 +589,10 @@ ENV.HOME .AZ "HOME"
HOME.PROFILE .AZ "${HOME}PROFILE"
.HS 00 To Make It ArgV
*--------------------------------------
CMD .AZ "NOHUP"
CMD .AZ ".."
.AZ "."
.AZ "CD"
.AZ "NOHUP"
.AZ "DATE"
.AZ "ECHO"
.AZ "EXIT"