mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-19 02:33:53 +00:00
Kernel 0.92
This commit is contained in:
parent
3ebbdb8e99
commit
42d6684256
Binary file not shown.
@ -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
|
||||
|
||||
|
@ -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 #0
|
||||
ldy #$ff
|
||||
|
||||
.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
|
||||
>SYSCALL getmem
|
||||
bcs Cmd.INT.CD.1.9
|
||||
>STYA ZPPtr2
|
||||
|
||||
.8 >LDYA ZPPtr1
|
||||
>SYSCALL ExpandStr
|
||||
bcs .9
|
||||
ldy #$ff
|
||||
|
||||
txa
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
bne .2
|
||||
|
||||
jmp Cmd.SetPrefixA
|
||||
|
||||
.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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -326,18 +326,12 @@ STDLIB.realpath.I
|
||||
|
||||
dex
|
||||
beq .81 we have '/'....nothing to do...
|
||||
*--------------------------------------
|
||||
* X=LEN, K.Buf256 = /dir1/./../file(/)\0
|
||||
*--------------------------------------
|
||||
ldx #1 skip leading /
|
||||
|
||||
lda K.Buf256,x
|
||||
cmp #'/'
|
||||
bne .50
|
||||
stz K.Buf256,x remove ending / if any
|
||||
*--------------------------------------
|
||||
* X=LEN, K.Buf256 = /dir1/./../file\0
|
||||
*--------------------------------------
|
||||
.50 ldx #1
|
||||
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user