mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 18:32:56 +00:00
Kernel 0.94++
This commit is contained in:
parent
4ec4d5432b
commit
932c784f54
Binary file not shown.
@ -7,6 +7,7 @@ NEW
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/kernel.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
@ -108,6 +109,25 @@ CS.RUN
|
||||
>STYA ZPBufPtr
|
||||
stx hBuf
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
|
||||
tax
|
||||
|
||||
lsr
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
lda (ZPPtr1)
|
||||
|
||||
beq CS.RUN.LOOP
|
||||
|
||||
cmp #S.FD.T.PIPE
|
||||
beq CS.RUN.LOOP
|
||||
|
||||
>PUSHW L.MSG.INIT
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
|
20
BIN/PS.S.txt
20
BIN/PS.S.txt
@ -56,23 +56,32 @@ CS.INIT clc
|
||||
CS.RUN lda #1
|
||||
>SYSCALL ArgV
|
||||
bcs .10
|
||||
|
||||
>SYSCALL AToI
|
||||
bcs .90
|
||||
|
||||
tax
|
||||
bne .90
|
||||
|
||||
tya
|
||||
|
||||
* ldx #0
|
||||
|
||||
.11 cmp PS.Table.PID,x
|
||||
beq .12
|
||||
|
||||
inx
|
||||
cpx #K.PS.MAX
|
||||
bne .11
|
||||
|
||||
lda #E.NSP
|
||||
* sec
|
||||
rts
|
||||
|
||||
.12 jsr CS.RUN.DUMP
|
||||
.12 lda PS.Table.hPS,x
|
||||
jsr CS.RUN.DUMP
|
||||
bcs .9
|
||||
|
||||
lda #0
|
||||
sec
|
||||
rts
|
||||
@ -158,22 +167,27 @@ CS.RUN.DecodeFlags
|
||||
lda (ZPPSPtr) Get flags
|
||||
ldy #PS.FLAGS+7
|
||||
ldx #7
|
||||
|
||||
.2 lsr
|
||||
pha
|
||||
lda #'-'
|
||||
bcc .3
|
||||
|
||||
lda MSG.FLAGS,x
|
||||
|
||||
.3 sta (pData),y
|
||||
pla
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.PrintArgs
|
||||
ldy #S.PS.hARGV
|
||||
lda (ZPPSPtr),y
|
||||
beq .8 NO ARGV in PS0
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPArgV
|
||||
|
||||
@ -185,13 +199,17 @@ CS.RUN.PrintArgs
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
.2 inc ZPArgV
|
||||
bne .3
|
||||
|
||||
inc ZPArgV+1
|
||||
.3 lda (ZPArgV)
|
||||
bne .2
|
||||
|
||||
inc ZPArgV
|
||||
bne .1
|
||||
|
||||
inc ZPArgV+1
|
||||
bra .1
|
||||
|
||||
|
@ -5,9 +5,11 @@ NEW
|
||||
CL.Init >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPCLBuf
|
||||
txa
|
||||
>STA.G CL.hCLBuf
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CL.PrintPrompt >PUSHW L.PS1
|
||||
@ -66,7 +68,7 @@ CL.CHARIN tax
|
||||
|
||||
.8 rts invalid \e[ sequence
|
||||
|
||||
.2 >LDA.G READ.N
|
||||
.2 >LDA.G CL.MaxCnt
|
||||
bne .3
|
||||
|
||||
lda EscChars.Remap,x
|
||||
@ -85,7 +87,7 @@ CL.CHARIN tax
|
||||
clc
|
||||
rts
|
||||
|
||||
.5 >LDA.G READ.N
|
||||
.5 >LDA.G CL.MaxCnt
|
||||
beq CL.READN0X
|
||||
|
||||
cpx #C.SPACE
|
||||
@ -98,10 +100,11 @@ CL.CHARIN tax
|
||||
*--------------------------------------
|
||||
>LDA.G CL.Len
|
||||
beq .8
|
||||
|
||||
>LDA.G CL.Ptr
|
||||
beq .8
|
||||
|
||||
>LDA.G bREAD.S
|
||||
>LDA.G CL.bSilent
|
||||
bmi .6
|
||||
|
||||
lda #C.BS
|
||||
@ -111,7 +114,7 @@ CL.CHARIN tax
|
||||
jmp CL.DEL
|
||||
*--------------------------------------
|
||||
CL.Insert >LDA.G CL.Len
|
||||
>CMP.G READ.N
|
||||
>CMP.G CL.MaxCnt
|
||||
beq .8 Buffer full, discard...
|
||||
|
||||
inc
|
||||
@ -138,14 +141,14 @@ CL.Insert >LDA.G CL.Len
|
||||
sta (ZPCLBuf),y
|
||||
>INC.G CL.Ptr
|
||||
|
||||
>LDA.G bREAD.S
|
||||
>LDA.G CL.bSilent
|
||||
bmi .7
|
||||
|
||||
txa
|
||||
>SYSCALL PutChar
|
||||
jsr CL.PrintEOL
|
||||
|
||||
.7 >LDA.G READ.N READ N = 1, don't wait for CR
|
||||
.7 >LDA.G CL.MaxCnt READ N = 1, don't wait for CR
|
||||
dec
|
||||
bne .8
|
||||
|
||||
@ -159,7 +162,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||
beq .18
|
||||
|
||||
cpx #C.EOF
|
||||
beq .18
|
||||
beq .19
|
||||
|
||||
cpx #3 Ctrl-C
|
||||
beq CL.CLR
|
||||
@ -176,7 +179,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||
.18 jsr CheckLFAfterCR Check for any extra LF
|
||||
bcs .9
|
||||
|
||||
lda #$ff
|
||||
.19 lda #$ff
|
||||
>STA.G CL.bReady
|
||||
|
||||
.8 clc
|
||||
@ -185,7 +188,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||
CL.CLR lda (ZPCLBuf)
|
||||
beq CL.Reset.1
|
||||
|
||||
>LDA.G bREAD.S
|
||||
>LDA.G CL.bSilent
|
||||
bmi CL.Reset.1
|
||||
|
||||
.1 >LDA.G CL.Ptr
|
||||
@ -221,13 +224,22 @@ CL.Reset.1 lda #0
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.ReadResetV sec Verbose mode
|
||||
|
||||
CL.ReadReset lda #$ff
|
||||
>STA.G CL.MaxCnt
|
||||
adc #0 CC = silent
|
||||
iny CL.bSilent
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.BS >LDA.G CL.Ptr
|
||||
beq .9
|
||||
|
||||
dec
|
||||
sta (pData),y
|
||||
|
||||
>LDA.G bREAD.S
|
||||
>LDA.G CL.bSilent
|
||||
bmi .9
|
||||
|
||||
lda #C.BS
|
||||
@ -237,12 +249,16 @@ CL.BS >LDA.G CL.Ptr
|
||||
CL.NAK >LDA.G CL.Ptr
|
||||
>CMP.G CL.Len
|
||||
beq .9
|
||||
|
||||
inc
|
||||
>STA.G CL.Ptr
|
||||
>LDA.G bREAD.S
|
||||
|
||||
>LDA.G CL.bSilent
|
||||
bmi .9
|
||||
|
||||
lda #C.FS
|
||||
>SYSCALL PutChar
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* Erase char UNDER cursor
|
||||
@ -265,12 +281,13 @@ CL.DEL pha
|
||||
|
||||
>CMP.G CL.Len
|
||||
bne .1
|
||||
|
||||
pla
|
||||
|
||||
>DEC.G CL.Len
|
||||
>LDA.G bREAD.S
|
||||
bpl CL.PrintEOL
|
||||
clc
|
||||
rts
|
||||
|
||||
>LDA.G CL.bSilent
|
||||
bmi CL.PrintEOL.8
|
||||
*--------------------------------------
|
||||
CL.PrintEOL >LDA.G CL.Ptr
|
||||
|
||||
|
169
BIN/SH.S.CMD.txt
169
BIN/SH.S.CMD.txt
@ -1,6 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CMD.. lda (ZPArgVBufPtr)
|
||||
beq CMD...9
|
||||
@ -33,7 +33,7 @@ CMD.SHIFT lda (ZPArgVBufPtr)
|
||||
jsr EXP.GetInt8Exp
|
||||
bcs CMD.SHIFTA.RTS
|
||||
.HS B0 BCS
|
||||
|
||||
|
||||
CMD.SHIFT.1 inc
|
||||
|
||||
CMD.SHIFTA >SYSCALL Shift
|
||||
@ -101,10 +101,10 @@ CMD.CD.YA >PUSHYA
|
||||
.12 >LDYA ZPPtr1
|
||||
jsr IO.StatYA
|
||||
bcs .19
|
||||
|
||||
|
||||
cmp /S.STAT.MODE.DIR
|
||||
beq .11
|
||||
|
||||
|
||||
lda #MLI.E.INVPATH
|
||||
.19 pha
|
||||
lda ZPTmpW
|
||||
@ -118,7 +118,7 @@ CMD.CD.YA >PUSHYA
|
||||
lda #'/'
|
||||
cmp (ZPPtr1),y
|
||||
beq .14
|
||||
|
||||
|
||||
iny
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
@ -166,19 +166,20 @@ CMD.SET lda (ZPArgVBufPtr)
|
||||
*--------------------------------------
|
||||
* SET +X VAR = VALUE1 op VALUE2 op VALUE3 ...
|
||||
*--------------------------------------
|
||||
CMD.SET.1
|
||||
CMD.SET.1
|
||||
.1 jsr CMD.IsSwitch
|
||||
bcs .6
|
||||
|
||||
ldx #SET.VARS-SET.FLAGS
|
||||
|
||||
|
||||
.2 dex
|
||||
bmi .4
|
||||
|
||||
cmp SET.FLAGS,x
|
||||
bne .2
|
||||
|
||||
ldy SET.VARS,x
|
||||
|
||||
|
||||
lda (pData),y
|
||||
eor #$ff
|
||||
sta (pData),y
|
||||
@ -201,7 +202,7 @@ CMD.SET.1
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq CMD.SET.GET
|
||||
|
||||
|
||||
cmp #'='
|
||||
bne .99
|
||||
|
||||
@ -211,7 +212,7 @@ CMD.SET.1
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq CMD.SET.UNSET
|
||||
|
||||
|
||||
cmp #'`'
|
||||
beq CMD.SET.EXEC
|
||||
|
||||
@ -228,7 +229,7 @@ CMD.SET.YA pha
|
||||
>PUSHYA
|
||||
>SYSCALL SetEnv
|
||||
rts
|
||||
|
||||
|
||||
CMD.SET.UNSET >PUSHW ZPVarNamePtr
|
||||
>SYSCALL UnsetEnv
|
||||
rts
|
||||
@ -237,12 +238,12 @@ CMD.SET.GET >PUSHW ZPVarNamePtr
|
||||
>PUSHW ZPCLBuf
|
||||
>SYSCALL GetEnv
|
||||
bcs .8
|
||||
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
>SYSCALL PutS
|
||||
|
||||
rts
|
||||
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -256,9 +257,9 @@ CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||
|
||||
jsr IO.Pipe.In
|
||||
bcs .9
|
||||
lda #255
|
||||
>STA.G READ.N
|
||||
>STA.G bREAD.S
|
||||
|
||||
* clc Silent Mode
|
||||
jsr CL.ReadReset
|
||||
|
||||
jmp CMD.READ.VAR
|
||||
.9 rts
|
||||
@ -267,18 +268,19 @@ CMD.DATE >PUSHEA.G TimeBuf
|
||||
>SYSCALL Time
|
||||
|
||||
>PUSHEA.G TimeBuf
|
||||
|
||||
|
||||
>PUSHW ZPCLBuf
|
||||
|
||||
|
||||
lda (ZPArgVBufPtr)
|
||||
beq .1
|
||||
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
bra .2
|
||||
|
||||
.1 >LDYA L.FMT.DATE
|
||||
|
||||
.2 >PUSHYA
|
||||
|
||||
|
||||
>PUSHEA.G TimeBuf
|
||||
>SYSCALL StrFTime
|
||||
|
||||
@ -294,15 +296,18 @@ CMD.ECHO stz ZPPtr1 echo -N
|
||||
|
||||
.1 jsr CMD.IsSwitch
|
||||
bcs .2
|
||||
|
||||
cmp #'N'
|
||||
bne CMD.ECHO.CSYN
|
||||
|
||||
lda #$ff
|
||||
eor ZPPtr1
|
||||
sta ZPPtr1
|
||||
bra .4
|
||||
bra .4
|
||||
|
||||
.2 lda ZPPtr1+1
|
||||
beq .3
|
||||
|
||||
lda #C.SPACE
|
||||
>SYSCALL PutChar
|
||||
|
||||
@ -334,9 +339,8 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
beq CMD.ECHO.CSYN
|
||||
|
||||
stz ZPVarNamePtr+1
|
||||
>STZ.G bREAD.S
|
||||
dec
|
||||
>STA.G READ.N
|
||||
|
||||
jsr CL.ReadResetV
|
||||
|
||||
.1 jsr CMD.IsSwitch
|
||||
bcs .4
|
||||
@ -345,7 +349,7 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
bne .2
|
||||
|
||||
lda #$ff
|
||||
>STA.G bREAD.S
|
||||
>STA.G CL.bSilent
|
||||
bra .5
|
||||
|
||||
.2 cmp #'P'
|
||||
@ -367,7 +371,7 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
jsr EXP.GetInt8Arg
|
||||
bcs CMD.ECHO.RTS
|
||||
|
||||
>STA.G READ.N
|
||||
>STA.G CL.MaxCnt
|
||||
bra .5
|
||||
|
||||
.4 >LDYA ZPArgVBufPtr
|
||||
@ -378,7 +382,7 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
|
||||
lda ZPVarNamePtr+1
|
||||
beq CMD.ECHO.CSYN
|
||||
|
||||
*--------------------------------------
|
||||
CMD.READ.VAR jsr CL.Reset
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
@ -391,9 +395,9 @@ CMD.READ.VAR jsr CL.Reset
|
||||
|
||||
lda (ZPCLBuf)
|
||||
bne .2
|
||||
|
||||
|
||||
jmp CMD.SET.UNSET
|
||||
|
||||
|
||||
.2 >LDYA ZPCLBuf
|
||||
jmp CMD.SET.YA
|
||||
*--------------------------------------
|
||||
@ -427,10 +431,10 @@ CMD.PWD jsr GetCWD
|
||||
*--------------------------------------
|
||||
CMD.RD lda (ZPArgVBufPtr)
|
||||
beq CMD.REN.CSYN
|
||||
|
||||
|
||||
jsr IO.StatArgVBufPtr
|
||||
bcs .99
|
||||
|
||||
|
||||
cmp /S.STAT.MODE.DIR
|
||||
bne CMD.REN.CSYN
|
||||
|
||||
@ -451,52 +455,52 @@ CMD.REN lda (ZPArgVBufPtr)
|
||||
>PUSHWI 0 Allocate
|
||||
>SYSCALL RealPath
|
||||
bcs CMD.REN.CSYN
|
||||
|
||||
|
||||
>STYA ZPPtr1
|
||||
stx ZPTmpW
|
||||
|
||||
|
||||
ldy #$ff
|
||||
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr1),y
|
||||
beq .2
|
||||
cmp #'/'
|
||||
bne .1
|
||||
|
||||
|
||||
tya
|
||||
tax
|
||||
bra .1
|
||||
|
||||
|
||||
.2 ldy #$ff
|
||||
|
||||
.3 iny
|
||||
inx
|
||||
lda (ZPArgVBufPtr),y
|
||||
bne .3
|
||||
|
||||
|
||||
txa
|
||||
tay
|
||||
lda #0
|
||||
|
||||
|
||||
>SYSCALL GetMem
|
||||
bcs .90
|
||||
>STYA ZPPtr2
|
||||
stx ZPTmpW+1
|
||||
|
||||
|
||||
ldy #$ff
|
||||
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr1),y
|
||||
beq .5
|
||||
sta (ZPPtr2),y
|
||||
cmp #'/'
|
||||
bne .4
|
||||
|
||||
|
||||
tya
|
||||
inc
|
||||
tax
|
||||
bra .4
|
||||
|
||||
|
||||
.5 txa
|
||||
tay
|
||||
lda #0
|
||||
@ -505,12 +509,12 @@ CMD.REN lda (ZPArgVBufPtr)
|
||||
>PUSHW ZPPtr2
|
||||
>PUSHW ZPArgVBufPtr
|
||||
>SYSCALL StrCat
|
||||
|
||||
|
||||
lda ZPTmpW
|
||||
>SYSCALL FreeMem
|
||||
lda ZPTmpW+1
|
||||
sta ZPTmpW
|
||||
|
||||
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW ZPPtr2
|
||||
>SYSCALL Rename
|
||||
@ -530,15 +534,15 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||
|
||||
>LDA.G hFuncList
|
||||
bne .1
|
||||
|
||||
|
||||
>SYSCALL SListNew
|
||||
bcs .99
|
||||
|
||||
|
||||
>STA.G hFuncList
|
||||
|
||||
|
||||
.1 >PUSHA
|
||||
>PUSHW ZPArgVBufPtr
|
||||
|
||||
|
||||
>SYSCALL SListNewKey
|
||||
bcs .99
|
||||
|
||||
@ -552,9 +556,10 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||
ldy #1
|
||||
lda (ZPArgVBufPtr),y
|
||||
beq .11
|
||||
|
||||
.9 jmp CMD.E.CSYN
|
||||
|
||||
.99 rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
.10 jsr CORE.GetCharNB
|
||||
bcs .9
|
||||
@ -565,48 +570,46 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||
jsr CORE.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
.11 stz M32.ACC '{' counter
|
||||
|
||||
>LDYA ZPInputBufPtr
|
||||
.11 >LDYA ZPInputBufPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #0
|
||||
ldx #0
|
||||
stz ZPPtr2
|
||||
stz ZPPtr2+1 DataLen
|
||||
|
||||
ldx #0 '{' counter
|
||||
|
||||
lda (ZPInputBufPtr)
|
||||
beq .6
|
||||
|
||||
.12 cmp #'{'
|
||||
bne .13
|
||||
|
||||
inc M32.ACC
|
||||
inx
|
||||
bra .14
|
||||
|
||||
.13 cmp #'}'
|
||||
bne .14
|
||||
|
||||
dec M32.ACC
|
||||
dex
|
||||
bmi .7
|
||||
|
||||
.14 iny
|
||||
.14 inc ZPPtr2
|
||||
bne .15
|
||||
inx
|
||||
|
||||
inc ZPPtr2+1
|
||||
|
||||
.15 jsr CORE.GetNextChar
|
||||
bne .12
|
||||
|
||||
.6 lda M32.ACC
|
||||
.6 txa
|
||||
bpl .9
|
||||
|
||||
.7 jsr CORE.GetNextChar skip ending '}'
|
||||
|
||||
phx
|
||||
phy
|
||||
>PUSHB.G hFuncList
|
||||
>PUSHW ZPTmpW KeyID
|
||||
>PUSHW ZPPtr1 DataPtr
|
||||
ply
|
||||
pla
|
||||
>PUSHYA DataLen
|
||||
>PUSHW ZPPtr2 DataLen
|
||||
>SYSCALL SListAddData
|
||||
bcs .99
|
||||
|
||||
@ -627,7 +630,7 @@ CMD.CALL jsr CMD.CALL.GETFUNC
|
||||
>PUSHWZ Allocate..
|
||||
>PUSHWI $ffff all
|
||||
>PUSHWZ From Start
|
||||
|
||||
|
||||
>SYSCALL SListGetData X = hMem
|
||||
bcs CMD.CALL.RTS
|
||||
|
||||
@ -638,7 +641,7 @@ CMD.CALL jsr CMD.CALL.GETFUNC
|
||||
lda #$C0+C.CALL
|
||||
jmp CORE.StkPush
|
||||
*--------------------------------------
|
||||
CMD.CALL.GETFUNC
|
||||
CMD.CALL.GETFUNC
|
||||
>LDA.G hFuncList
|
||||
beq CMD.CALL.UNDEF
|
||||
|
||||
@ -646,7 +649,7 @@ CMD.CALL.GETFUNC
|
||||
>PUSHW ZPArgVBufPtr
|
||||
>SYSCALL SListLookup
|
||||
bcc CMD.CALL.RTS
|
||||
|
||||
|
||||
CMD.CALL.UNDEF lda #E.FUNDEF
|
||||
sec
|
||||
CMD.CALL.RTS rts
|
||||
@ -656,7 +659,7 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||
|
||||
jsr EXP.GetInt8Exp
|
||||
bcs .9
|
||||
|
||||
|
||||
.1 ldy #S.PS.RC
|
||||
sta (pPS),y
|
||||
|
||||
@ -671,7 +674,7 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq .8
|
||||
|
||||
|
||||
jsr CORE.StkPopCtxA
|
||||
bcc .2
|
||||
rts
|
||||
@ -705,7 +708,7 @@ CMD.EXIT.FILE jsr CORE.StkPullFree Code buffer
|
||||
|
||||
ldy #S.PS.RC
|
||||
lda (pPS),y
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -753,7 +756,7 @@ CMD.SWITCH jsr CORE.StkGetCtx
|
||||
CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
|
||||
bcs .9
|
||||
tax
|
||||
tax
|
||||
and #$3F
|
||||
cmp #C.SWITCH
|
||||
beq .1
|
||||
@ -857,12 +860,12 @@ CMD.FOR.LIST >LDYA ZPArgVBufPtr
|
||||
|
||||
phy
|
||||
pha
|
||||
|
||||
|
||||
jsr CORE.StkPushInputBufPtr Push CmdPtr AFTER FOR
|
||||
|
||||
pla
|
||||
ply
|
||||
|
||||
|
||||
jsr CORE.StkPushYAX Push listPtr,hList
|
||||
|
||||
jsr CORE.PushVarName Push hVARNAME
|
||||
@ -882,7 +885,7 @@ CMD.FOR.FILE jsr CORE.ArgV.NextChar skip "("
|
||||
ldx #O.RDONLY+O.TEXT
|
||||
jsr IO.FOpenYAX
|
||||
bcc CMD.FOR.PUSH
|
||||
FOR.FILE.9 rts
|
||||
FOR.FILE.9 rts
|
||||
*--------------------------------------
|
||||
CMD.FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||
|
||||
@ -895,7 +898,7 @@ CMD.FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||
jsr IO.Pop.Out Restore OUT (NO close)
|
||||
|
||||
jsr IO.Pipe.OpenR
|
||||
|
||||
|
||||
bcs FOR.FILE.9
|
||||
|
||||
CMD.FOR.PUSH pha save hFILE/hPIPE
|
||||
@ -915,7 +918,7 @@ CMD.FOR.PUSH pha save hFILE/hPIPE
|
||||
|
||||
jsr CMD.NEXT.LINE
|
||||
bcs FOR.FILE.9
|
||||
|
||||
|
||||
CMD.FOR.LOOP ora CORE.TestResult
|
||||
ora #C.FOR Push FOR
|
||||
pha
|
||||
@ -1036,7 +1039,7 @@ CMD.NEXT.LIST.TOKEN
|
||||
* stack-4 CmdPtr
|
||||
* stack-3 hFILE/hPIPE
|
||||
* stack-2 hVARNAME
|
||||
* stack-1 FOR SUB TOKEN
|
||||
* stack-1 FOR SUB TOKEN
|
||||
* stack FOR TOKEN
|
||||
*--------------------------------------
|
||||
CMD.NEXT.FILEEXEC
|
||||
@ -1090,7 +1093,7 @@ CMD.NEXT.LINE jsr CMD.NEXT.GetVarNamePtr
|
||||
>PUSHWI 256
|
||||
>SYSCALL FGetS
|
||||
bcs CMD.NEXT.END
|
||||
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
jsr CMD.SET.YA
|
||||
bcs CMD.NEXT.LINE.RTS
|
||||
@ -1098,7 +1101,7 @@ CMD.NEXT.LINE jsr CMD.NEXT.GetVarNamePtr
|
||||
lda #$80
|
||||
* clc
|
||||
rts
|
||||
|
||||
|
||||
CMD.NEXT.END jsr CMD.SET.UNSET
|
||||
bcs .9
|
||||
lda #0
|
||||
@ -1120,7 +1123,7 @@ CMD.NEXT.GetVarNamePtr
|
||||
ply
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.WHILE
|
||||
CMD.WHILE
|
||||
CMD.IF jsr CORE.StkGetCtx
|
||||
|
||||
bit #$40 Parent is true ?
|
||||
@ -1153,7 +1156,7 @@ CMD.LOOP jsr CORE.StkPull
|
||||
bne .9
|
||||
txa
|
||||
bmi .8 true, loop
|
||||
|
||||
|
||||
jmp CORE.StkPopCtxA false, Discard loop Ptr
|
||||
|
||||
.8 jmp CORE.StkPullInputBufPtr
|
||||
@ -1213,7 +1216,7 @@ CMD.IsSwitch lda (ZPArgVBufPtr)
|
||||
|
||||
txa
|
||||
jmp ToUpperCase
|
||||
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -117,6 +117,7 @@ CORE.Run jsr IO.Reset
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs CORE.Run.RTS
|
||||
|
||||
>STYA ZPArgVBuf
|
||||
txa
|
||||
>STA.G CORE.hArgVBuf
|
||||
@ -148,6 +149,7 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||
|
||||
cmp #C.CR empty line ?
|
||||
bne .33
|
||||
|
||||
jsr CORE.GetNextChar skip CR...
|
||||
bra .8
|
||||
|
||||
@ -184,13 +186,16 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||
|
||||
.45 txa
|
||||
bpl .43 context is FALSE, skip line
|
||||
|
||||
asl
|
||||
bmi CORE.Run.7 parent context is true, exec
|
||||
|
||||
.43 jsr CORE.GetCharNB
|
||||
bcs .44 EOF
|
||||
|
||||
cmp #C.CR
|
||||
beq .44
|
||||
|
||||
cmp #';' TODO ";"
|
||||
beq .44
|
||||
|
||||
@ -426,11 +431,11 @@ CORE.ArgV.Add lda #C.SPACE
|
||||
|
||||
ldx #')'
|
||||
stx ZPTmpW
|
||||
|
||||
bra .12
|
||||
|
||||
.11 cmp #'`'
|
||||
bne .12
|
||||
|
||||
sta ZPTmpW
|
||||
|
||||
.12 sta (ZPArgVBufPtr),y
|
||||
@ -566,25 +571,32 @@ CORE.IO.Open pha Open Mode
|
||||
CORE.IsSpaceOrEndCmd
|
||||
cmp #C.SPACE
|
||||
beq CORE.IsEndCmd.8
|
||||
|
||||
CORE.IsEndCmd cmp #';'
|
||||
beq CORE.IsEndCmd.8
|
||||
|
||||
cmp #C.CR
|
||||
beq CORE.IsEndCmd.8
|
||||
|
||||
cmp #'|'
|
||||
beq CORE.IsEndCmd.8
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
CORE.IsEndCmd.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.GetCharNB jsr CORE.GetChar
|
||||
bcs CORE.GetNextCharNB.RTS
|
||||
|
||||
jsr CORE.CheckCharNB
|
||||
bcc CORE.GetNextCharNB.RTS
|
||||
*--------------------------------------
|
||||
CORE.GetNextCharNB
|
||||
jsr CORE.GetNextChar
|
||||
bcs CORE.GetNextCharNB.RTS
|
||||
|
||||
jsr CORE.CheckCharNB
|
||||
bcs CORE.GetNextCharNB
|
||||
CORE.GetNextCharNB.RTS
|
||||
@ -593,22 +605,28 @@ CORE.GetNextCharNB.RTS
|
||||
CORE.CheckCharNB
|
||||
cmp #C.SPACE
|
||||
beq .9
|
||||
|
||||
cmp #C.LF
|
||||
beq .9
|
||||
|
||||
cmp #C.TAB
|
||||
beq .9
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.GetNextChar
|
||||
inc ZPInputBufPtr
|
||||
bne CORE.GetChar
|
||||
|
||||
inc ZPInputBufPtr+1
|
||||
*--------------------------------------
|
||||
CORE.GetChar lda (ZPInputBufPtr)
|
||||
beq .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -686,6 +704,7 @@ CORE.StkCheck sec
|
||||
adc (pData) StackPtr
|
||||
cmp #CORE.STACK.MAX
|
||||
bcc .8
|
||||
|
||||
lda #E.STKOVERFLOW
|
||||
* sec
|
||||
.8 rts
|
||||
@ -740,11 +759,14 @@ CORE.StkGetCtx jsr CORE.StkGet
|
||||
|
||||
cmp #$C0+C.CALL
|
||||
beq .1 CS
|
||||
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq .1 CS
|
||||
|
||||
and #$80 get current..
|
||||
lsr becomes parent
|
||||
bra .8
|
||||
|
||||
.1 lda #$40 ...set Parent = true
|
||||
|
||||
.8 sta CORE.TestResult
|
||||
@ -755,9 +777,11 @@ CORE.StkGetCtx jsr CORE.StkGet
|
||||
CORE.StkPullInputBufPtr
|
||||
jsr CORE.StkPull
|
||||
bcs .9
|
||||
|
||||
sta ZPInputBufPtr
|
||||
jsr CORE.StkPull
|
||||
bcs .9
|
||||
|
||||
sta ZPInputBufPtr+1
|
||||
|
||||
.9 rts
|
||||
@ -774,11 +798,13 @@ CORE.StkPullFree
|
||||
*--------------------------------------
|
||||
CORE.StkPull jsr CORE.StkGet
|
||||
bcs .9
|
||||
|
||||
dey
|
||||
pha
|
||||
tya
|
||||
sta (pData) StackPtr
|
||||
pla
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.StkGet lda (pData) StackPtr
|
||||
|
@ -1,6 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
EXP.GET jsr CORE.ArgV.Next
|
||||
bne .1
|
||||
@ -14,7 +14,7 @@ EXP.GET jsr CORE.ArgV.Next
|
||||
>LDYA ZPArgVBufPrev
|
||||
jsr EXP.GetInt32YA To Int32 on stack
|
||||
bcs .94 4 bytes on stack
|
||||
|
||||
|
||||
.2 >LDYA L.EXP.OP.MATH + - .... ?
|
||||
jsr CORE.LookupArgVBuf
|
||||
bcs .98
|
||||
@ -55,7 +55,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
jsr CORE.LookupArgVBuf
|
||||
|
||||
bcs .9
|
||||
|
||||
|
||||
dex 0=[ or 1=![ , $ff or 0
|
||||
txa
|
||||
asl in C
|
||||
@ -74,7 +74,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
bcs .1
|
||||
|
||||
stx CORE.Operator
|
||||
|
||||
|
||||
jsr EXP.TEST.UNARY
|
||||
bcs .9
|
||||
eor CORE.TestResult
|
||||
@ -132,7 +132,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
jsr CORE.ArgV.Next
|
||||
beq .9
|
||||
|
||||
jmp .10
|
||||
jmp .10
|
||||
|
||||
.80 lda CORE.LogicOp
|
||||
bne .88 NONE, or OR : exit with last result
|
||||
@ -146,7 +146,7 @@ EXP.TEST lda (ZPArgVBufPtr)
|
||||
*--------------------------------------
|
||||
EXP.TEST.UNARY jsr CORE.ArgV.Next
|
||||
beq EXP.OP.UNARY.ESYN we need one arg or ]
|
||||
|
||||
|
||||
lda CORE.Operator
|
||||
asl
|
||||
tax
|
||||
@ -161,7 +161,7 @@ EXP.OP.UNARY.D jsr IO.StatArgVBufPtr
|
||||
cmp /S.STAT.MODE.DIR
|
||||
bne EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
|
||||
|
||||
EXP.OP.UNARY.E jsr IO.StatArgVBufPtr
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8 DIR or FILE exist
|
||||
@ -171,18 +171,18 @@ EXP.OP.UNARY.F jsr IO.StatArgVBufPtr
|
||||
|
||||
cmp /S.STAT.MODE.DIR
|
||||
beq EXP.OP.UNARY.DEF.9
|
||||
|
||||
EXP.OP.UNARY.DEF.8
|
||||
|
||||
EXP.OP.UNARY.DEF.8
|
||||
sec true
|
||||
.HS 90 BCC
|
||||
EXP.OP.UNARY.DEF.9
|
||||
EXP.OP.UNARY.DEF.9
|
||||
clc false
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
|
||||
lda #0
|
||||
ror
|
||||
|
||||
|
||||
* clc
|
||||
EXP.OP.UNARY.DEF.RTS
|
||||
rts
|
||||
@ -191,7 +191,7 @@ EXP.OP.UNARY.I jsr EXP.GetInt32Arg
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
|
||||
jsr IncPStack4 Discard Long
|
||||
|
||||
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
*--------------------------------------
|
||||
EXP.OP.UNARY.N jsr EXP.OP.UNARY.Z
|
||||
@ -199,7 +199,7 @@ EXP.OP.UNARY.N jsr EXP.OP.UNARY.Z
|
||||
eor #$80
|
||||
* clc
|
||||
rts
|
||||
|
||||
|
||||
EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ?
|
||||
cmp #']'
|
||||
bne .1
|
||||
@ -232,20 +232,22 @@ EXP.TEST.BINARY lda CORE.Operator
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW ZPArgVBufPtr
|
||||
>SYSCALL StrCmp
|
||||
bcs .1 CS if !=
|
||||
|
||||
bcs .1 CS if !=
|
||||
|
||||
lda #%010 010 str1 = str2
|
||||
bra .3
|
||||
|
||||
.1 asl CS if <
|
||||
bcs .2
|
||||
bcc .2
|
||||
|
||||
lda #%100 010 str1 < str2
|
||||
lda #%100 100 str1 < str2
|
||||
bra .3
|
||||
|
||||
.2 lda #%001 010 str1 > str2
|
||||
.2 lda #%001 001 str1 > str2
|
||||
|
||||
.3 ldx CORE.Operator
|
||||
|
||||
and EXP.OP.BINARY.BITS-6,x
|
||||
beq .8 false
|
||||
|
||||
@ -263,7 +265,7 @@ EXP.TEST.BINARY.NUM
|
||||
>LDYA ZPArgVBufPrev
|
||||
jsr EXP.GetInt32YA
|
||||
bcs EXP.TEST.BINARY.ESYN
|
||||
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq EXP.TEST.BINARY.ESYN4
|
||||
|
||||
@ -288,7 +290,7 @@ EXP.TEST.BINARY.NUM
|
||||
EXP.GetInt8Exp jsr EXP.GET
|
||||
bcc EXP.GetInt8YA
|
||||
rts
|
||||
|
||||
|
||||
EXP.GetInt8Arg >LDYA ZPArgVBufPtr
|
||||
|
||||
EXP.GetInt8YA jsr EXP.GetInt32YA
|
||||
@ -298,7 +300,7 @@ EXP.GetInt8YA jsr EXP.GetInt32YA
|
||||
|
||||
jsr IncPStack3
|
||||
* clc
|
||||
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
EXP.GetInt32Arg >LDYA ZPArgVBufPtr
|
||||
@ -308,14 +310,14 @@ EXP.GetInt32YA >PUSHYA
|
||||
>PUSHBI 10
|
||||
>SYSCALL StrToL
|
||||
bcs EXP.E.ESYN
|
||||
|
||||
|
||||
lda (ZPPtr1)
|
||||
beq EXP.GetInt32YA.RTS
|
||||
|
||||
EXP.E.ESYN lda #E.ESYN
|
||||
sec
|
||||
EXP.GetInt32YA.RTS
|
||||
rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/sh.s.exp
|
||||
|
@ -187,6 +187,7 @@ IO.PrintBatchErrMsg
|
||||
|
||||
.1 inc ZPTmpW
|
||||
bne .2
|
||||
|
||||
inc ZPTmpW+1
|
||||
|
||||
.2 ldy #$ff
|
||||
|
12
BIN/SH.S.txt
12
BIN/SH.S.txt
@ -325,13 +325,11 @@ CS.RUN.INTERACTIVE
|
||||
jsr IO.Reset
|
||||
jsr CL.Reset
|
||||
|
||||
jsr CL.ReadResetV
|
||||
|
||||
jsr CL.PrintPrompt
|
||||
bcs CS.RUN.CMDLINE.9
|
||||
|
||||
>STZ.G bREAD.S
|
||||
dec
|
||||
>STA.G READ.N
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
bcs CS.RUN.CMDLINE.9 I/O error
|
||||
|
||||
@ -697,16 +695,16 @@ bSET.C .BS 1
|
||||
bSET.E .BS 1
|
||||
bSET.X .BS 1
|
||||
|
||||
bREAD.S .BS 1
|
||||
READ.N .BS 1
|
||||
|
||||
Sleep .BS 4
|
||||
|
||||
CL.hCLBuf .BS 1
|
||||
|
||||
CL.Ptr .BS 1
|
||||
CL.Len .BS 1
|
||||
CL.bReady .BS 1
|
||||
CL.bEscMode .BS 1
|
||||
CL.MaxCnt .BS 1
|
||||
CL.bSilent .BS 1
|
||||
|
||||
CORE.hArgVBuf .BS 1
|
||||
CORE.bPipeIn .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user