Kernel 0.92

This commit is contained in:
Rémy GIBERT 2019-01-23 16:26:48 +00:00
parent 3ebbdb8e99
commit 42d6684256
7 changed files with 147 additions and 99 deletions

Binary file not shown.

View File

@ -49,10 +49,10 @@ CL.CHARIN tax
tax
jmp (J.ESC,x)
*--------------------------------------
.13 cpx #$20
.13 cpx #C.SPACE
bcc CL.CHARIN.CTRL
.1 cpx #$7f
.1 cpx #C.DEL
bne .2
jmp CL.DEL

View File

@ -107,7 +107,7 @@ Cmd.INT.PWD ldy #S.PS.hPREFIX
*--------------------------------------
Cmd.INT.PUSHD >LDA.G PUSHD.STACK
cmp #PUSHD.STACK+PUSHD.STACK.MAX
beq .9
beq Cmd.INT.POPD.CSYN
ldy #S.PS.hPREFIX
lda (pPs),y
@ -122,12 +122,7 @@ Cmd.INT.PUSHD >LDA.G PUSHD.STACK
ldx #1
jsr Cmd.GetArgX
bcs .8
>SYSCALL RealPath
bcs .9
jmp Cmd.INT.CD.1
bcc Cmd.INT.CD.1
.8 clc
.9 rts
@ -138,26 +133,21 @@ Cmd.INT.POPD >LDA.G PUSHD.STACK
tay
lda (pData),y
jsr Cmd.SetPrefixA
pha
jsr Cmd.SetPrefixPHA
>DEC.G PUSHD.STACK
clc
Cmd.INT.POPD.RTS
rts
Cmd.INT.POPD.CSYN
lda #E.CSYN
sec
rts
jmp Cmd.Exec.CSYN
*--------------------------------------
Cmd.INT.CD ldx #1
jsr Cmd.GetArgX
bcs Cmd.INT.CD.HOME
>SYSCALL RealPath
bcc Cmd.INT.CD.1
Cmd.INT.CD.RTS rts
Cmd.INT.CD.HOME >LDYA L.ENV.HOME
>SYSCALL GetEnv
bcc Cmd.INT.CD.1
@ -168,52 +158,64 @@ Cmd.INT.CD.HOME >LDYA L.ENV.HOME
jmp Cmd.INT.PWD
Cmd.INT.CD.1 >STYA ZPPtr1
Cmd.INT.CD.1.9 pla
>SYSCALL freemem
bra Cmd.INT.POPD.CSYN
Cmd.INT.CD.1 >SYSCALL realpath
bcs Cmd.INT.POPD.RTS
>STYA ZPPtr1
phx
ldy #1
lda (ZPPtr1),y
beq .8 we have '/'
beq Cmd.SetPrefixPHA we have '/'
>PUSHEA.G CMD.Stat
>LDYA ZPPtr1
>SYSCALL STAT
bcs .9
bcs Cmd.INT.CD.1.9
>LDA.G CMD.Stat+S.STAT.P.TYPE
cmp #S.FI.T.DIR
bne .90
bne Cmd.INT.CD.1.9
ldy #$ff
ldy #0
.5 iny
.1 iny
lda (ZPPtr1),y
bne .5
bne .1
dey
lda #'/'
cmp (ZPPtr1),y
beq .8
lda (ZPPtr1),y
cmp #'/'
beq Cmd.SetPrefixPHA already ends witrh a /
iny
sta (ZPPtr1),y
iny
lda #0
sta (ZPPtr1),y
.8 >LDYA ZPPtr1
>SYSCALL ExpandStr
bcs .9
>SYSCALL getmem
bcs Cmd.INT.CD.1.9
>STYA ZPPtr2
txa
ldy #$ff
jmp Cmd.SetPrefixA
.2 iny
lda (ZPPtr1),y
lda (ZPPtr2),y
bne .2
.90 lda #E.CSYN
sec
.9 rts
iny
sta (ZPPtr2),y
dey
lda #'/'
sta (ZPPtr2),y
pla
phx
>SYSCALL freemem
*--------------------------------------
Cmd.SetPrefixA pha
Cmd.SetPrefixPHA
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL FreeMem
@ -298,18 +300,25 @@ Cmd.INT.SET.1 >STZ.G CMD.Varname
bcs .8
jsr CMD.IsSwitch
bcs .2
bcs .6
cmp #'C'
bne .2
>LDA.G bSET.C
bra .5
cmp #'X'
bne .99
.2 bne .99
lda #$ff
>EOR.G bSET.X
>LDA.G bSET.X
.5 eor #$ff
sta (pData),y
>INC.G CMD.ArgIndex
bra .1
.2 >LDA.G CMD.ArgIndex
.6 >LDA.G CMD.ArgIndex
>STA.G CMD.Varname
>INC.G CMD.ArgIndex
@ -347,9 +356,7 @@ Cmd.INT.SET.1 >STZ.G CMD.Varname
.8 clc
rts
.99 lda #E.CSYN
sec
rts
.99 jmp Cmd.Exec.CSYN
Cmd.INT.SET.UNSET
>LDA.G CMD.Varname
@ -468,6 +475,31 @@ Cmd.INT.ECHO >STZ.G bECHO.N
sec
rts
*--------------------------------------
Cmd.INT.GETKEY ldx #1
jsr Cmd.GetArgX
bcs .99
>SYSCALL getchar
bcc .1
tay
bne .9
.1 >PUSHA
>PUSHBI 1
>PUSHW L.FMT.GETKEY
>LEA.G M32.BUF
>SYSCALL sprintf
bcs .9
>PUSHEA.G M32.BUF
ldx #1
jsr Cmd.GetArgX
>SYSCALL SetEnv
.9 rts
.99 jmp Cmd.Exec.CSYN
*--------------------------------------
Cmd.INT.READ lda #1
>STA.G CMD.ArgIndex

View File

@ -16,28 +16,29 @@ C.CD .EQ 2
C.DATE .EQ 4
C.ECHO .EQ 6
C.EXIT .EQ 8
C.MD .EQ 10
C.PAUSE .EQ 12
C.PWD .EQ 14
C.RD .EQ 16
C.READ .EQ 18
C.REN .EQ 20
C.SET .EQ 22
C.SLEEP .EQ 24
C.SHIFT .EQ 26
C.TIME .EQ 28
C.PUSHD .EQ 30
C.POPD .EQ 32
C.BREAK .EQ 34
C.CONTINUE .EQ 36
C.GETKEY .EQ 10
C.MD .EQ 12
C.PAUSE .EQ 14
C.PWD .EQ 16
C.RD .EQ 18
C.READ .EQ 20
C.REN .EQ 22
C.SET .EQ 24
C.SLEEP .EQ 26
C.SHIFT .EQ 28
C.TIME .EQ 30
C.PUSHD .EQ 32
C.POPD .EQ 34
C.BREAK .EQ 36
C.CONTINUE .EQ 38
*--------------------------------------
C.FOR .EQ 38
C.NEXT .EQ 40
C.WHILE .EQ 42
C.LOOP .EQ 44
C.IF .EQ 46
C.ELSE .EQ 48
C.FI .EQ 50
C.FOR .EQ 40
C.NEXT .EQ 42
C.WHILE .EQ 44
C.LOOP .EQ 46
C.IF .EQ 48
C.ELSE .EQ 50
C.FI .EQ 52
*--------------------------------------
E.CSYN .EQ $C0
E.SSYN .EQ $C1
@ -103,6 +104,7 @@ L.ENV.PS1 .DA ENV.PS1
L.ENV.HOME .DA ENV.HOME
L.FMT.DATE .DA FMT.DATE
L.FMT.TIME .DA FMT.TIME
L.FMT.GETKEY .DA FMT.GETKEY
J.ESC .DA CL.BS left arrow
.DA HIS.GetNext
.DA HIS.GetPrev
@ -123,6 +125,7 @@ J.CMD.INT .DA Cmd.INT.STARTPROC
.DA Cmd.INT.DATE
.DA Cmd.INT.ECHO
.DA Cmd.INT.EXIT
.DA Cmd.INT.GETKEY
.DA Cmd.INT.MD
.DA Cmd.INT.PAUSE
.DA Cmd.INT.PWD
@ -156,6 +159,7 @@ J.CMD.Eval.TOKEN4 .DA M32.Add
.DA M32.Mul
.DA M32.Div
.DA M32.Mod
L.HOME.PROFILE .DA HOME.PROFILE
L.M32.Printf .DA M32.Printf
L.ERR.Codes .DA ERR.Codes
L.ERR.Messages .DA ERR.Messages
@ -198,7 +202,16 @@ CS.RUN jsr CMD.Init
>PUSHBI 2
>LDYA L.MSG.GREETINGS
>SYSCALL printf
* bcs CS.INIT.RTS
bcs CS.INIT.RTS
>PUSHEA.G CMD.Stat
>LDYA L.HOME.PROFILE
>SYSCALL STAT
bcs CS.RUN.LOOP
* >PUSHBI S.PS.F.HOLD
* >LDYA L.HOME.PROFILE
* >SYSCALL execv
*--------------------------------------
CS.RUN.LOOP jsr CL.Reset
jsr IO.Reset
@ -214,7 +227,10 @@ CS.RUN.LOOP jsr CL.Reset
bne .1
>LDA.G hFileBuf batch mode ?
bne .8
beq .1
>LDA.G bSET.C
beq .8
bra .1
.2 tay
@ -235,7 +251,10 @@ CS.RUN.LOOP jsr CL.Reset
bne .60
>LDA.G hFileBuf batch mode ?
bne .8
beq .61
>LDA.G bSET.C
beq .8
bra .61
.60 cmp #C.CR
@ -540,12 +559,15 @@ MSG.PRINTENV .AZ "%s = %s\r\n"
MSG.PID .AZ "PID=%d\r\n"
FMT.DATE .AZ "%A (%w), %B %d %Y"
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
FMT.GETKEY .AZ "%d"
*--------------------------------------
ENV.ROOT .AZ "ROOT"
ENV.PATH .AZ "PATH"
ENV.PWD .AZ "PWD"
ENV.PS1 .AZ "PS1"
ENV.HOME .AZ "HOME"
HOME.PROFILE .AZ "${HOME}PROFILE"
.DA #0 execv
*--------------------------------------
* https://www.tldp.org/LDP/abs/html/io-redirection.html
*--------------------------------------
@ -565,6 +587,7 @@ CMD.INT .AZ "STARTPROC"
.AZ "DATE"
.AZ "ECHO"
.AZ "EXIT"
.AZ "GETKEY"
.AZ "MD"
.AZ "PAUSE"
.AZ "PWD"
@ -639,6 +662,7 @@ hVarName .BS 1 read mode
bEscMode .BS 1
bPause .BS 1
bExit .BS 1
bSET.C .BS 1
bSET.X .BS 1
bECHO.N .BS 1
bREAD.S .BS 1

View File

@ -225,7 +225,7 @@ MSG.ECHODEL .DA #C.BS,#C.SPACE,#C.BS,#0
ENV.SHELL .AZ "SHELL"
ENV.HOME .AZ "HOME"
SHELL .AZ "${ROOT}BIN/SHELL"
HOME .AZ "${ROOT}ROOT"
HOME .AZ "${ROOT}ROOT/"
.HS 00
*--------------------------------------
.DUMMY

View File

@ -337,11 +337,10 @@ K.SetEnv.I jsr K.UnsetEnv.I
.15 sty ZPPtr4
stx ZPPtr4+1
ldy #0
ldy #$ff
.16 lda (ZPPtr1),y
beq .17
iny
.16 iny
lda (ZPPtr1),y
bne .16
.17 jsr ENV.NextEnvP4Y

View File

@ -326,18 +326,12 @@ STDLIB.realpath.I
dex
beq .81 we have '/'....nothing to do...
lda K.Buf256,x
cmp #'/'
bne .50
stz K.Buf256,x remove ending / if any
*--------------------------------------
* X=LEN, K.Buf256 = /dir1/./../file\0
* X=LEN, K.Buf256 = /dir1/./../file(/)\0
*--------------------------------------
.50 ldx #1
ldx #1 skip leading /
lda K.Buf256,x
beq .81
.5 ldy #0 dot counter=0
@ -353,7 +347,7 @@ STDLIB.realpath.I
inx
lda K.Buf256,x
bne .6 always, should end with a '/'
bne .6 we have /dir\0
.8 tya
beq .80 Y was 0....nothing to do...
@ -422,27 +416,26 @@ K.RealPath.RemoveAtX
.1 iny
lda K.Buf256,y
beq .2
beq .2 found /something\0
cmp #'/'
bne .1
bne .1 found /something/
.2 phx
.2 phx save X for exit
.3 lda K.Buf256,y
sta K.Buf256,x
beq .4
iny
.3 iny K.Buf256,y=/ or 0
inx
lda K.Buf256-1,y
sta K.Buf256-1,x
bne .3
.4 txa
txa
bne .8
lda #'/' Make sure we have a least '/' in the buffer
sta K.Buf256
stz K.Buf256+1
.8 plx
.8 plx restore X
rts
*--------------------------------------
MAN