mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-04 12:29:40 +00:00
Kernel 0.93
This commit is contained in:
parent
068771100c
commit
c805d3c21d
Binary file not shown.
167
BIN/SH.S.CMD.txt
167
BIN/SH.S.CMD.txt
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
88
BIN/SH.S.txt
88
BIN/SH.S.txt
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue
Block a user