mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-06 18:37:12 +00:00
Kernel 0.92
This commit is contained in:
parent
dfa2b31ab7
commit
bcfa618bfe
@ -3,30 +3,6 @@ PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CMD.Init >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
>STYA ZPArgVBuf
|
||||
txa
|
||||
>STA.G CORE.hArgVBuf
|
||||
|
||||
lda #PUSHD.STACK
|
||||
tay
|
||||
sta (pData),y
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.Quit ldy #CORE.hArgVBuf
|
||||
jsr .8
|
||||
|
||||
ldy #hFileBuf
|
||||
|
||||
.8 lda (pData),y
|
||||
beq .9
|
||||
>SYSCALL FreeMem
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* Read From InputBuf
|
||||
*--------------------------------------
|
||||
CMD.Get >LDYA ZPInputBufPtr
|
||||
|
@ -6,11 +6,11 @@ AUTO 4,1
|
||||
* From hCLBuf or hFileBuf
|
||||
* Get Line from buf until ;, CR, \0 (EOL / EOF)
|
||||
* :LOOP
|
||||
* if previous | :
|
||||
* if CmdSep=| :
|
||||
* set hStdIn = hStdOut
|
||||
* set hStdOut = Std
|
||||
* GetCmd from line until | or EOL
|
||||
* if | :
|
||||
* if CmdSep=| :
|
||||
* create PIPE
|
||||
* set hStdOut -> PIPE
|
||||
* CORE.Exec &
|
||||
@ -25,11 +25,91 @@ AUTO 4,1
|
||||
* set hStdIn = hStdOut
|
||||
* set hStdOut = Std
|
||||
*--------------------------------------
|
||||
CORE.Run
|
||||
* Input : ZPInputBufPtr
|
||||
*--------------------------------------
|
||||
* Input : CORE.IntCmd,ZPArgVBuf
|
||||
CORE.Exec >STZ.G CL.CmdSep
|
||||
|
||||
>STZ.G CORE.IntCmd
|
||||
|
||||
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
>STA.G CORE.PSFlags
|
||||
|
||||
>PUSHW ZPCLBuf
|
||||
>LDYA ZPCLBuf
|
||||
>STYA ZPCLBufPtr
|
||||
|
||||
>SYSCALL Args2ArgV TOKENIZE CL in ZPCLBuf
|
||||
|
||||
lda (ZPCLBufPtr)
|
||||
beq .8
|
||||
|
||||
cmp #'#' comment ?
|
||||
beq .8
|
||||
|
||||
.10 >LDA.G CL.CmdSep
|
||||
cmp #'|'
|
||||
bne .11
|
||||
|
||||
PIPE
|
||||
|
||||
.11 >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
>STYA ZPArgVBuf
|
||||
>STYA ZPArgVBufPtr
|
||||
txa
|
||||
>STA.G CORE.hArgVBuf
|
||||
|
||||
.12 lda #0
|
||||
sta (ZPArgVBuf)
|
||||
|
||||
.1 cmp #'#' comment ?
|
||||
beq .8 yes, ignore remaining
|
||||
|
||||
>LDA.G CORE.IntCmd
|
||||
bne .3 we already have Cmd, go check args
|
||||
|
||||
ldy #1
|
||||
lda (ZPCLBufPtr),y only one char ?
|
||||
bne .2
|
||||
|
||||
lda (ZPCLBufPtr)
|
||||
cmp #'.' leading dot ?
|
||||
bne .2
|
||||
|
||||
>LDA.G CORE.PSFlags yes, child process will run in same ENV
|
||||
and #$ff^S.PS.F.DUPENV
|
||||
sta (pData),y
|
||||
bra .6 and skip this token
|
||||
|
||||
.2
|
||||
|
||||
.3 jsr CL.CheckIO
|
||||
bcc .7 IO token & related args processed
|
||||
tay an error ?
|
||||
bne .9 yes...I/O error...
|
||||
|
||||
jsr CL.AddCLBufPtrToArgV no...add as cmd or arg
|
||||
bcs .9
|
||||
|
||||
.6 jsr CL.NextCLToken
|
||||
|
||||
.7 lda (ZPCLBufPtr)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.80 >LDA.G CORE.hArgVBuf
|
||||
>SYSCALL freemem
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.Exec jsr CORE.StkGet IF,WHILE,FOR ?
|
||||
* Input : ZPArgVBuf
|
||||
*--------------------------------------
|
||||
CORE.ExecCmd jsr CORE.StkGet IF,WHILE,FOR ?
|
||||
bcs .3 no particular context, exec...
|
||||
tax
|
||||
|
||||
@ -86,7 +166,49 @@ CORE.INT.STARTPROC
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.INT.SHIFT lda #1
|
||||
jmp ShiftA
|
||||
|
||||
CORE.INT.SHIFTA >SYSCALL ArgV
|
||||
bcs .8
|
||||
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
.10 ldy #$ff
|
||||
|
||||
.1 iny Compute ArgX len
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
.2 tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 ldy #$ff
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .4
|
||||
tya
|
||||
beq .7
|
||||
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPPtr2+1
|
||||
bra .2
|
||||
|
||||
.7 ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
dec
|
||||
sta (pPS),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.INT.PWD ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
@ -1085,7 +1207,7 @@ CORE.StkGetPtr lda (pData) StackPtr
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.StkPush pha
|
||||
CORE.StkPush pha
|
||||
lda (pData) StackPtr
|
||||
inc
|
||||
cmp #CORE.STACK.MAX
|
||||
@ -1102,7 +1224,7 @@ CORE.StkPush pha
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.StkPull jsr CORE.StkGet
|
||||
CORE.StkPull jsr CORE.StkGet
|
||||
bcs .9
|
||||
|
||||
dey
|
||||
|
@ -66,6 +66,7 @@ ZPCLBufPtr .BS 2
|
||||
ZPInputBufPtr .BS 2
|
||||
ZPInputBufPtrBak .BS 2
|
||||
ZPArgVBuf .BS 2
|
||||
ZPArgVBufPtr .BS 2
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -188,7 +189,7 @@ CS.RUN jsr CMD.Init
|
||||
>STYA ZPInputBufPtr
|
||||
|
||||
lda #0
|
||||
jsr ShiftA Remove $0=/bin/shell
|
||||
jsr CORE.INT.SHIFTA Remove $0=/bin/shell
|
||||
|
||||
bra CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
@ -301,6 +302,8 @@ CS.RUN.INTERACTIVE
|
||||
|
||||
jsr HIS.Add
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
>STYA ZPInputBufPtr
|
||||
jmp CS.RUN.Exec
|
||||
.8 jmp CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
@ -389,12 +392,7 @@ CS.RUN.BATCH >SYSCALL GetChar
|
||||
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
CS.RUN.Exec jsr CL.Parse
|
||||
bcs CS.RUN.LOOP.END
|
||||
|
||||
lda (ZPArgVBuf)
|
||||
beq CS.RUN.LOOP.8
|
||||
jsr CORE.Exec
|
||||
CS.RUN.Exec jsr CORE.Exec
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
@ -446,8 +444,13 @@ CS.DOEVENT lda (pEvent)
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT jsr HIS.Quit
|
||||
jsr CMD.Quit
|
||||
CS.QUIT >LDA.G hFileBuf
|
||||
beq .1
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.1 jsr HIS.Quit
|
||||
jsr CL.Quit
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -461,49 +464,6 @@ CheckSleep ldy #Sleep+3
|
||||
ora (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
ShiftA >SYSCALL ArgV
|
||||
bcs .8
|
||||
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
.10 ldy #$ff
|
||||
|
||||
.1 iny Compute ArgX len
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
.2 tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 ldy #$ff
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .4
|
||||
tya
|
||||
beq .7
|
||||
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPPtr2+1
|
||||
bra .2
|
||||
|
||||
.7 ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
dec
|
||||
sta (pPS),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Lookup >STYA ZPPtr2
|
||||
>PULLW ZPPtr1
|
||||
|
||||
@ -676,6 +636,7 @@ CL.hCLBuf .BS 1
|
||||
CL.Ptr .BS 1
|
||||
CL.Len .BS 1
|
||||
CL.bExec .BS 1
|
||||
CL.CmdSep .BS 1
|
||||
|
||||
CORE.IntCmd .BS 1
|
||||
CORE.hArgVBuf .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user