mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.93+
This commit is contained in:
parent
d380289666
commit
fe13be19e4
@ -134,7 +134,7 @@ Notice that the DO X and DO Y logic is swapped between the two cases.
|
||||
| PUSHD | Working | Save actual working directory <br> PUSHD \<dir\> do also a CD to \<dir\> |
|
||||
| PWD | Working | Print Working Directory |
|
||||
| RD | Working | Delete an empty directory |
|
||||
| READ | Working | -S : no echo (password) <br> -P : "prompt message" |
|
||||
| READ | Working | -S : no echo (password) <br> -P : "prompt message" <br> -N maxchar |
|
||||
| REN | Working | Rename a file, directory or volume |
|
||||
| SET | Working | -X : toggle debug mode <br> -C : toggle Control-C break mode <br> -E : toggle error printing mode <br> -F : delete all declared functions |
|
||||
| SHIFT | Working | Remove $1 from cmd line |
|
||||
|
Binary file not shown.
@ -104,9 +104,10 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.Insert >LDA.G CL.Len
|
||||
>CMP.G READ.N
|
||||
beq .8 Buffer full, discard...
|
||||
inc
|
||||
beq .9 Buffer full, discard...
|
||||
sta (pData),y
|
||||
>STA.G CL.Len
|
||||
|
||||
pha
|
||||
|
||||
@ -128,21 +129,23 @@ CL.Insert >LDA.G CL.Len
|
||||
txa
|
||||
sta (ZPCLBuf),y
|
||||
|
||||
>LDA.G bREAD.S
|
||||
bpl .2
|
||||
|
||||
>INC.G CL.Ptr
|
||||
clc
|
||||
rts
|
||||
|
||||
.2 txa
|
||||
>LDA.G bREAD.S
|
||||
bmi .7
|
||||
|
||||
txa
|
||||
>SYSCALL PutChar
|
||||
jsr CL.PrintEOL
|
||||
|
||||
>INC.G CL.Ptr
|
||||
.7 >LDA.G READ.N READ N = 1, don't wait for CR
|
||||
dec
|
||||
bne .8
|
||||
|
||||
jmp CL.PrintEOL
|
||||
lda #$ff
|
||||
>STA.G CL.bReady
|
||||
|
||||
.9 clc
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.CLR lda (ZPCLBuf)
|
||||
|
187
BIN/SH.S.CMD.txt
187
BIN/SH.S.CMD.txt
@ -7,12 +7,16 @@ CMD.. lda (ZPArgVBufPtr)
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
jsr IO.Load
|
||||
bcs .99
|
||||
>LDYA ZPArgVBufPtr
|
||||
jmp CORE.Load.YAX exec cmd file and continue
|
||||
bcs CMD.SHIFTA.RTS
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
.99 rts
|
||||
>LDYA ZPArgVBufPtr
|
||||
jsr CORE.Load.YAX Exec . file
|
||||
bcs CMD.SHIFTA.RTS
|
||||
|
||||
lda #$C0+C..
|
||||
jmp CORE.StkPush
|
||||
|
||||
.9 jmp CMD.E.CSYN
|
||||
*--------------------------------------
|
||||
CMD.NOHUP lda #S.PS.F.NOHUP
|
||||
tsb CORE.PSFlags
|
||||
@ -33,7 +37,7 @@ CMD.SHIFTA >SYSCALL ArgV
|
||||
sta (pPS),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
CMD.SHIFTA.RTS rts
|
||||
*--------------------------------------
|
||||
CMD.PUSHD >LDA.G PUSHD.STACK
|
||||
cmp #PUSHD.STACK+PUSHD.STACK.MAX
|
||||
@ -69,7 +73,7 @@ CMD.POPD >LDA.G PUSHD.STACK
|
||||
CMD.POPD.RTS
|
||||
rts
|
||||
|
||||
CMD.POPD.CSYN jmp CMD.Exec.CSYN
|
||||
CMD.POPD.CSYN jmp CMD.E.CSYN
|
||||
*--------------------------------------
|
||||
CMD.PWD ldy #S.PS.hCWD
|
||||
lda (pPs),y
|
||||
@ -285,7 +289,7 @@ CMD.SET.1
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
.99 jmp CMD.Exec.CSYN
|
||||
.99 jmp CMD.E.CSYN
|
||||
|
||||
CMD.SET.UNSET >LDYA ZPVarNamePtr
|
||||
>SYSCALL UnsetEnv
|
||||
@ -319,16 +323,16 @@ CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||
jsr IO.Pipe.In
|
||||
bcs .9
|
||||
|
||||
lda #$ff
|
||||
>STA.G bREAD.S secret
|
||||
>STA.G bReadMode
|
||||
lda #255
|
||||
>STA.G READ.N
|
||||
>STA.G bREAD.S
|
||||
|
||||
jmp CMD.READ.VAR
|
||||
|
||||
>SLEEP
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.DATE sec
|
||||
.HS 90 bcc
|
||||
.HS 90 BCC
|
||||
CMD.TIME clc
|
||||
php
|
||||
>LEA.G TimeBuf
|
||||
@ -444,10 +448,16 @@ CMD.GETKEY lda (ZPArgVBufPtr)
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL SetEnv
|
||||
.9 rts
|
||||
.9
|
||||
CMD.GETKEY.RTS rts
|
||||
*--------------------------------------
|
||||
CMD.READ lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
beq .9
|
||||
|
||||
stz ZPVarNamePtr+1
|
||||
>STZ.G bREAD.S
|
||||
dec
|
||||
>STA.G READ.N
|
||||
|
||||
.1 jsr CMD.IsSwitch
|
||||
bcs .4
|
||||
@ -457,10 +467,10 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
lda #$ff
|
||||
>STA.G bREAD.S
|
||||
|
||||
bra .7
|
||||
bra .5
|
||||
|
||||
.2 cmp #'P'
|
||||
bne .9
|
||||
.2 cmp #'P'
|
||||
bne .3
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq .9
|
||||
@ -468,39 +478,73 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||
>PUSHBI 0
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL printf
|
||||
bcs .99
|
||||
bra .7
|
||||
bcs CMD.GETKEY.RTS
|
||||
bra .5
|
||||
|
||||
.9 jmp CMD.E.CSYN
|
||||
|
||||
.3 cmp #'N'
|
||||
bne .9
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq .9
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL AToL
|
||||
bcs CMD.GETKEY.RTS
|
||||
|
||||
>PULLA
|
||||
>STA.G READ.N
|
||||
|
||||
inc pStack
|
||||
inc pStack
|
||||
inc pStack
|
||||
|
||||
bra .5
|
||||
|
||||
.4 >LDYA ZPArgVBufPtr
|
||||
>STYA ZPVarNamePtr
|
||||
|
||||
>LDA.G bReadMode
|
||||
bne .9
|
||||
lda #$ff
|
||||
>STA.G bReadMode
|
||||
|
||||
.7 jsr CORE.ArgV.Next
|
||||
.5 jsr CORE.ArgV.Next
|
||||
bne .1
|
||||
|
||||
>LDA.G bReadMode
|
||||
lda ZPVarNamePtr+1
|
||||
beq .9
|
||||
clc
|
||||
.99 rts
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
CMD.READ.VAR jsr CL.Reset
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
bcs .9
|
||||
|
||||
jsr CL.CHARIN
|
||||
|
||||
>LDA.G CL.bReady
|
||||
bpl .1
|
||||
|
||||
lda (ZPCLBuf)
|
||||
bne .2
|
||||
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL UnSetEnv
|
||||
rts
|
||||
|
||||
.2 >PUSHW ZPCLBuf
|
||||
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL SetEnv
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.SLEEP lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
beq CMD.REN.CSYN
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
bcs CMD.REN.CSYN
|
||||
|
||||
>PULLL.G Sleep
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.PAUSE lda #$FF
|
||||
>STA.G bPause
|
||||
@ -508,13 +552,11 @@ CMD.PAUSE lda #$FF
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.MD lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
beq CMD.REN.CSYN
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL MKDir
|
||||
rts
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.REN lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
@ -529,10 +571,11 @@ CMD.REN lda (ZPArgVBufPtr)
|
||||
rts
|
||||
|
||||
.90 >PULLYA
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
.9
|
||||
CMD.REN.CSYN jmp CMD.E.CSYN
|
||||
*--------------------------------------
|
||||
CMD.RD lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
beq CMD.REN.CSYN
|
||||
|
||||
>PUSHEA.G StatBuf
|
||||
>LDYA ZPArgVBufPtr
|
||||
@ -541,13 +584,11 @@ CMD.RD lda (ZPArgVBufPtr)
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne .9
|
||||
bne CMD.REN.CSYN
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL Remove
|
||||
.99 rts
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
@ -580,7 +621,7 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||
lda (ZPArgVBufPtr),y
|
||||
beq .11
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
.9 jmp CMD.E.CSYN
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
@ -659,7 +700,11 @@ CMD.CALL >LDA.G hFuncList
|
||||
bcs CMD.CALL.RTS
|
||||
|
||||
>LDYA ZPArgVBufPtr FUNC PARAM1 PARAM2...
|
||||
jmp CORE.Load.YAX
|
||||
jsr CORE.Load.YAX Exec FUNC
|
||||
bcs CMD.CALL.RTS
|
||||
|
||||
lda #$C0+C.CALL
|
||||
jmp CORE.StkPush
|
||||
*--------------------------------------
|
||||
CMD.EXIT lda (ZPArgVBufPtr)
|
||||
beq .1 no arg, exit 0
|
||||
@ -678,12 +723,18 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||
inc pStack
|
||||
|
||||
.1 sta M32.ACC
|
||||
|
||||
.2 jsr CORE.StkPull
|
||||
|
||||
.2 jsr CORE.StkPull Pull everything until CALL . CL...
|
||||
bcs .9
|
||||
|
||||
cmp #$C0 in CALL / . context ?
|
||||
beq CMD.EXIT.CALL
|
||||
cmp #$C0+C.. in CALL . CL context ?
|
||||
beq CMD.EXIT.FILE
|
||||
|
||||
cmp #$C0+C.CALL
|
||||
beq CMD.EXIT.FILE
|
||||
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq CMD.EXIT.SH
|
||||
|
||||
jsr CMD.EXIT.POP
|
||||
bcc .2
|
||||
@ -694,7 +745,14 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.CALL jsr CORE.StkPull
|
||||
CMD.EXIT.SH jsr CMD.EXIT.FILE
|
||||
|
||||
lda #$ff
|
||||
>STA.G bExitOnEOF
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.FILE jsr CORE.StkPull
|
||||
>SYSCALL freemem Code buffer
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
@ -776,11 +834,12 @@ CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
jsr CORE.StkPull remove C.CASE
|
||||
jsr CORE.StkGet
|
||||
and #$7F
|
||||
|
||||
sta (pDATA),y
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
.9 jmp CMD.E.CSYN
|
||||
*--------------------------------------
|
||||
* stack-1 hVALUE
|
||||
* stack SWITCH TOKEN
|
||||
@ -793,6 +852,7 @@ CMD.SWITCH jsr CORE.StkGetCtx
|
||||
|
||||
jsr EXP.GET
|
||||
bcs .9
|
||||
|
||||
>SYSCALL strdup
|
||||
bcs .9
|
||||
|
||||
@ -850,17 +910,20 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
ora #C.CASE
|
||||
jmp CORE.StkPush
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
.9
|
||||
CMD.E.CSYN lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
bcs .9
|
||||
bcs CMD.E.CSYN
|
||||
|
||||
and #$3F
|
||||
cmp #C.SWITCH
|
||||
beq .1
|
||||
|
||||
cmp #C.CASE
|
||||
bne .9
|
||||
bne CMD.E.CSYN
|
||||
|
||||
jsr CORE.StkPull remove C.CASE
|
||||
|
||||
@ -868,11 +931,9 @@ CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
and #$C0
|
||||
ora #C.DEFAULT
|
||||
jmp CORE.StkPush
|
||||
|
||||
.9 jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
bcs CMD.END.CSYN
|
||||
bcs CMD.E.CSYN
|
||||
|
||||
and #$3F
|
||||
cmp #C.SWITCH
|
||||
@ -882,7 +943,7 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
beq .2
|
||||
|
||||
cmp #C.DEFAULT
|
||||
bne CMD.END.CSYN
|
||||
bne CMD.E.CSYN
|
||||
|
||||
.2 jsr CORE.StkPull remove C.CASE or C.DEFAULT
|
||||
|
||||
@ -890,27 +951,25 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
jsr CORE.StkPull get hVALUE
|
||||
>SYSCALL freemem
|
||||
rts
|
||||
|
||||
CMD.END.CSYN jmp CMD.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.FOR jsr CORE.StkGetCtx
|
||||
|
||||
lda (ZPArgVBufPtr)
|
||||
beq CMD.END.CSYN
|
||||
beq CMD.E.CSYN
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>STYA ZPVarNamePtr
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq CMD.END.CSYN
|
||||
beq CMD.E.CSYN
|
||||
|
||||
>PUSHW ZPArgVBufPtr
|
||||
>LDYA L.IN
|
||||
>SYSCALL StrCaseCmp
|
||||
bcs CMD.END.CSYN
|
||||
bcs CMD.E.CSYN
|
||||
|
||||
jsr CORE.ArgV.Next
|
||||
beq CMD.END.CSYN
|
||||
beq CMD.E.CSYN
|
||||
|
||||
lda #8 Make sure 8 bytes free on stack
|
||||
jsr CORE.StkCheck
|
||||
|
@ -21,20 +21,18 @@ CORE.FUNCRESET >LDA.G hFuncList
|
||||
>SYSCALL SListFree
|
||||
>STZ.G hFuncList
|
||||
|
||||
.8
|
||||
CORE.FUNCRESET.RTS
|
||||
rts
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CORE.Load.YAX stx M32.ACC X=Code to Execute
|
||||
CORE.Load.YAX stx M32.ACC X = Code to Execute
|
||||
|
||||
jsr CORE.ArgV.Dup Y,A = ArgV
|
||||
bcs CORE.FUNCRESET.RTS
|
||||
sta M32.ACC+2 A=ARGC
|
||||
stx M32.ACC+1 X=ARGV
|
||||
bcs .9
|
||||
sta M32.ACC+2 A = ARGC
|
||||
stx M32.ACC+1 X = hARGV
|
||||
|
||||
lda #8
|
||||
jsr CORE.StkCheck
|
||||
bcs CORE.FUNCRESET.RTS
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPInputBuf
|
||||
jsr CORE.StkPushYA
|
||||
@ -48,7 +46,7 @@ CORE.Load.YAX stx M32.ACC X=Code to Execute
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr CORE.StkPush old ARGV
|
||||
jsr CORE.StkPush old hARGV
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda M32.ACC+2 new ARGC
|
||||
@ -56,18 +54,18 @@ CORE.Load.YAX stx M32.ACC X=Code to Execute
|
||||
|
||||
iny #S.PS.hARGV
|
||||
lda M32.ACC+1
|
||||
sta (pPS),y new ARGV
|
||||
sta (pPS),y new hARGV
|
||||
|
||||
lda M32.ACC new code
|
||||
jsr CORE.StkPush
|
||||
|
||||
lda M32.ACC
|
||||
* lda M32.ACC
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPInputBuf
|
||||
>STYA ZPInputBufPtr
|
||||
|
||||
lda #$C0
|
||||
jmp CORE.StkPush
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* http://heirloom.sourceforge.net/sh/sh.1.html
|
||||
*--------------------------------------
|
||||
@ -94,13 +92,16 @@ CORE.Load.YAX stx M32.ACC X=Code to Execute
|
||||
* set hStdOut = Std
|
||||
*--------------------------------------
|
||||
CORE.Run.EOF jsr CORE.StkPull
|
||||
bcs .9
|
||||
bcs *
|
||||
|
||||
cmp #$C0 in CALL / . context ?
|
||||
cmp #$C0+C.. check CALL . CL context
|
||||
beq .1
|
||||
cmp #$C0+C.CALL
|
||||
beq .1
|
||||
cmp #$C0+C.CLEXEC
|
||||
bne .9
|
||||
|
||||
jsr CMD.EXIT.CALL
|
||||
bcs .9
|
||||
.1 jsr CMD.EXIT.FILE
|
||||
|
||||
jsr IO.Reset
|
||||
|
||||
@ -108,7 +109,7 @@ CORE.Run.EOF jsr CORE.StkPull
|
||||
sec
|
||||
rts Ending 0, CS,A=0
|
||||
|
||||
.9 lda #E.UNEXP
|
||||
.9 lda #E.UNEXPEOF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -305,12 +306,14 @@ CORE.SkipLine jsr CORE.GetNextCharNB
|
||||
* search ZPInputBufPtr/ZPArgVBufPtr in Y,A table
|
||||
*--------------------------------------
|
||||
CORE.LookupInputBuf
|
||||
>STYA ZPPtr1
|
||||
>LDYA ZPInputBufPtr
|
||||
bra CORE.Lookup
|
||||
CORE.LookupArgVBuf
|
||||
>STYA ZPPtr1
|
||||
sec
|
||||
.HS 90 BCC
|
||||
CORE.LookupArgVBuf
|
||||
clc
|
||||
>STYA ZPPtr1 Keywords table
|
||||
>LDYA ZPArgVBufPtr
|
||||
bcc CORE.Lookup
|
||||
>LDYA ZPInputBufPtr
|
||||
|
||||
CORE.Lookup >STYA ZPPtr2
|
||||
|
||||
@ -318,47 +321,59 @@ CORE.Lookup >STYA ZPPtr2
|
||||
|
||||
.1 ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr2),y
|
||||
beq .3 Src Keyword end
|
||||
|
||||
jsr CORE.IsSpaceOrEndCmd
|
||||
bcc .3 Src Keyword end
|
||||
.2 jsr .7 get next valid char in src text
|
||||
bcs .3
|
||||
|
||||
lda (ZPPtr1),y
|
||||
beq .4 Table Keyword end
|
||||
lda (ZPPtr2),y
|
||||
.20 jsr ToUpperCase
|
||||
|
||||
eor (ZPPtr1),y match table char ?
|
||||
asl compare only 7 bits
|
||||
bne .4 no match...get next table keyword
|
||||
|
||||
jsr ToUpperCase
|
||||
|
||||
cmp (ZPPtr1),y
|
||||
beq .2
|
||||
bcc .2 not last char in this keyword
|
||||
|
||||
jsr .7 next char in text...
|
||||
bcc .4 valid....failed
|
||||
|
||||
.8 tya Keyword Len
|
||||
|
||||
bra .4
|
||||
|
||||
.3 lda (ZPPtr1),y
|
||||
bne .4
|
||||
|
||||
tya Keyword Len
|
||||
dey
|
||||
clc
|
||||
.8 rts
|
||||
|
||||
.4 jsr IncPtr1
|
||||
rts
|
||||
|
||||
lda (ZPPtr1)
|
||||
bne .4
|
||||
.3 dey
|
||||
lda (ZPPtr1),y was last char in this keyword ?
|
||||
bmi .8
|
||||
|
||||
iny
|
||||
|
||||
.41 jsr IncPtr1 skip chars to next keyword
|
||||
|
||||
.4 lda (ZPPtr1)
|
||||
bpl .41
|
||||
|
||||
jsr IncPtr1
|
||||
|
||||
.6 inx
|
||||
|
||||
lda (ZPPtr1) Array Ending 0, must be an external Cmd....
|
||||
lda (ZPPtr1) Array Ending 0, lookup failed
|
||||
bne .1
|
||||
|
||||
lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
.7 iny
|
||||
lda (ZPPtr2),y Get Src text char...
|
||||
beq .9 end of text
|
||||
|
||||
jsr CORE.IsSpaceOrEndCmd
|
||||
bcc .9 end of valid chars
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ArgV
|
||||
*--------------------------------------
|
||||
@ -388,7 +403,7 @@ CORE.ArgV.Dup >STYA ZPPtr1
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda #$ff Arg count-1 (skip $0)
|
||||
lda #$ff Arg count-1 (skip $0)
|
||||
pha
|
||||
|
||||
.5 pla
|
||||
@ -666,16 +681,22 @@ CORE.StkGetCtx jsr CORE.StkGet
|
||||
tax
|
||||
bcs .1 no context...
|
||||
|
||||
cmp #$C0 in a call...
|
||||
cmp #$C0+C.. in a call...
|
||||
beq .1 CS
|
||||
|
||||
cmp #$C0+C.CALL
|
||||
beq .1 CS
|
||||
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq .1 CS
|
||||
|
||||
and #$80 get current..
|
||||
lsr becomes parent
|
||||
bra .2
|
||||
bra .8
|
||||
|
||||
.1 lda #$40 ...set Parent = true
|
||||
|
||||
.2 sta CORE.TestResult
|
||||
.8 sta CORE.TestResult
|
||||
|
||||
txa
|
||||
rts
|
||||
|
@ -28,11 +28,11 @@ EXP.GET jsr CORE.ArgV.Next
|
||||
|
||||
jsr EXP.FPU.EXEC
|
||||
|
||||
jsr CORE.ArgV.Next another op ?
|
||||
jsr CORE.ArgV.Next another op ?
|
||||
bne .2
|
||||
|
||||
.8 >PUSHBI 4 ACC on stack
|
||||
>PUSHW L.M32.Printf
|
||||
>PUSHW L.FMT.Long
|
||||
>LEA.G M32.BUF
|
||||
>SYSCALL sprintf
|
||||
bcs .9
|
||||
|
@ -199,7 +199,7 @@ IO.PrintBatchErrMsg
|
||||
|
||||
>PUSHBI 2
|
||||
>PUSHW L.MSG.BATCHLINE
|
||||
jsr .80
|
||||
jsr IO.PrintErr
|
||||
|
||||
ldy #$ff
|
||||
ldx #'-'
|
||||
@ -217,11 +217,7 @@ IO.PrintBatchErrMsg
|
||||
>PUSHBI 4
|
||||
>PUSHW L.MSG.BATCHERR
|
||||
|
||||
.80 ldy #S.PS.hStdErr
|
||||
lda (pPS),y
|
||||
>SYSCALL fprintf
|
||||
|
||||
.9 rts
|
||||
.80 bra IO.PrintErr
|
||||
*--------------------------------------
|
||||
IO.PrintErrMsg pha Save EC for PrintF
|
||||
|
||||
@ -255,7 +251,8 @@ IO.PrintErrMsg pha Save EC for PrintF
|
||||
>PUSHA
|
||||
>PUSHBI 3
|
||||
>PUSHW L.MSG.ERROR
|
||||
ldy #S.PS.hStdErr
|
||||
|
||||
IO.PrintErr ldy #S.PS.hStdErr
|
||||
lda (pPS),y
|
||||
>SYSCALL fprintf
|
||||
rts
|
||||
|
375
BIN/SH.S.txt
375
BIN/SH.S.txt
@ -1,5 +1,5 @@
|
||||
NEW
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
@ -48,6 +48,8 @@ C.ELSE .EQ 31
|
||||
C.FI .EQ 32
|
||||
C.END .EQ 33
|
||||
*--------------------------------------
|
||||
C.CLEXEC .EQ 63
|
||||
*--------------------------------------
|
||||
E.CSYN .EQ $C0
|
||||
E.ESYN .EQ $C1
|
||||
E.STACKERROR .EQ $C2
|
||||
@ -57,7 +59,7 @@ E.NOFOR .EQ $C5
|
||||
E.NOIF .EQ $C6
|
||||
E.BADFTYPE .EQ $C7
|
||||
E.FUNDEF .EQ $C8
|
||||
E.UNEXP .EQ $C9
|
||||
E.UNEXPEOF .EQ $C9
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
@ -125,6 +127,7 @@ L.MSG.PID .DA MSG.PID
|
||||
L.FMT.DATE .DA FMT.DATE
|
||||
L.FMT.TIME .DA FMT.TIME
|
||||
L.FMT.GETKEY .DA FMT.GETKEY
|
||||
L.FMT.Long .DA FMT.Long
|
||||
J.ESC .DA CL.BS left arrow
|
||||
.DA HIS.GetNext
|
||||
.DA HIS.GetPrev
|
||||
@ -187,10 +190,9 @@ J.EXP.OP.UNARY .DA EXP.OP.UNARY.D
|
||||
L.EXP.OP.BINARY .DA EXP.OP.BINARY
|
||||
L.EXP.OP.MATH .DA EXP.OP.MATH
|
||||
L.EXP.OP.LOGIC .DA EXP.OP.LOGIC
|
||||
L.HOME .DA HOME
|
||||
L.HOME.PROFILE .DA HOME.PROFILE
|
||||
L.HOME .DA HOME
|
||||
L.PS1 .DA PS1
|
||||
L.M32.Printf .DA M32.Printf
|
||||
L.ERR.Codes .DA ERR.Codes
|
||||
L.ERR.Messages .DA ERR.Messages
|
||||
.DA 0
|
||||
@ -222,7 +224,12 @@ CS.RUN jsr CL.Init
|
||||
lda (pPS),y
|
||||
>SYSCALL GetMemPtr
|
||||
plx
|
||||
jsr CORE.Load.YAX
|
||||
jsr CORE.Load.YAX Exec Batch file
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
lda #$C0+C..
|
||||
jsr CORE.StkPush
|
||||
|
||||
bra CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
.1 jsr CMD.CD.HOME
|
||||
@ -235,26 +242,22 @@ CS.RUN jsr CL.Init
|
||||
>SYSCALL printf
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
>PUSHEA.G StatBuf
|
||||
>LDYA L.HOME.PROFILE
|
||||
>SYSCALL STAT
|
||||
bcs CS.RUN.LOOP no profile...
|
||||
|
||||
>LDYA L.HOME.PROFILE
|
||||
jsr IO.Load
|
||||
bcs CS.RUN.LOOP
|
||||
bcs CS.RUN.LOOP No profile...
|
||||
|
||||
>LDYA L.HOME.PROFILE
|
||||
jsr CORE.Load.YAX exec profile and continue
|
||||
jsr CORE.Load.YAX Exec profile and continue
|
||||
|
||||
* bcs CS.RUN.LOOP
|
||||
bcs CS.RUN.LOOP
|
||||
|
||||
lda #$C0+C..
|
||||
jsr CORE.StkPush
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
.1 jsr CheckSleep
|
||||
beq .3
|
||||
|
||||
>LDA.G bSET.C
|
||||
bne CS.RUN.LOOP
|
||||
beq .2
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
@ -268,67 +271,69 @@ CS.RUN.LOOP >SLEEP
|
||||
bcs .9 I/O err
|
||||
|
||||
cmp #3 Ctrl-C
|
||||
bne CS.RUN.LOOP
|
||||
bne .11
|
||||
|
||||
lda (pData) batch mode ?
|
||||
beq CS.RUN.LOOP
|
||||
|
||||
>LDA.G bSET.C
|
||||
beq .8
|
||||
|
||||
bra CS.RUN.LOOP
|
||||
|
||||
.11 cmp #19 test Ctrl-s
|
||||
bne CS.RUN.LOOP
|
||||
|
||||
.3 >LDA.G bPause
|
||||
bpl .6
|
||||
|
||||
.4 >SYSCALL GetChar
|
||||
bcs .9 I/O err
|
||||
|
||||
.5 cmp #3 Ctrl-C
|
||||
bne .60
|
||||
|
||||
lda (pData) batch mode ?
|
||||
beq .61
|
||||
|
||||
>LDA.G bSET.C
|
||||
beq .8
|
||||
bra .61
|
||||
|
||||
.60 tax
|
||||
|
||||
>LDA.G bPause
|
||||
asl
|
||||
bpl .61 not from PAUSE command
|
||||
|
||||
cpx #C.CR
|
||||
bne .4
|
||||
|
||||
.61 >STZ.G bPause
|
||||
bra .62
|
||||
|
||||
.6 >LDA.G bReadMode read mode ?
|
||||
bne .7
|
||||
|
||||
.62 lda (pData) batch mode ?
|
||||
beq CS.RUN.INTERACTIVE
|
||||
|
||||
jmp CS.RUN.BATCH
|
||||
.7 jmp CS.RUN.READ
|
||||
|
||||
lda #$80
|
||||
>STA.G bPause
|
||||
bra CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
.8 lda #3 User Interrupt
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.INTERACTIVE
|
||||
>LDA.G bExitOnEOF
|
||||
beq .10
|
||||
|
||||
jmp CS.RUN.LOOP.EXIT
|
||||
.2 >LDA.G bPause
|
||||
bpl .6
|
||||
|
||||
.10 jsr IO.Reset
|
||||
.3 >SYSCALL GetChar
|
||||
bcs .9 I/O err
|
||||
|
||||
cmp #3 Ctrl-C
|
||||
bne .4
|
||||
|
||||
lda (pData) batch mode ?
|
||||
beq .5
|
||||
|
||||
>LDA.G bSET.C
|
||||
beq .8
|
||||
bra .5
|
||||
|
||||
.4 tax
|
||||
|
||||
>LDA.G bPause
|
||||
asl $ff ?
|
||||
bpl .5 not from PAUSE command
|
||||
|
||||
cpx #C.CR
|
||||
bne .3
|
||||
|
||||
.5 >STZ.G bPause
|
||||
*--------------------------------------
|
||||
.6 lda (pData) batch mode ?
|
||||
|
||||
bne CS.RUN.BATCH
|
||||
*--------------------------------------
|
||||
CS.RUN.INTERACTIVE
|
||||
jsr IO.Reset
|
||||
jsr CL.Reset
|
||||
|
||||
jsr CL.PrintPrompt
|
||||
bcs .9
|
||||
|
||||
|
||||
>STZ.G bREAD.S
|
||||
dec
|
||||
>STA.G READ.N
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
bcs .9 I/O error
|
||||
|
||||
@ -361,7 +366,11 @@ CS.RUN.INTERACTIVE
|
||||
>SYSCALL GetMemPtr Y,A =ARGV
|
||||
|
||||
plx
|
||||
jsr CORE.Load.YAX X = Copy of CL
|
||||
jsr CORE.Load.YAX Exec CL
|
||||
bcs .9
|
||||
|
||||
lda #$C0+C.CLEXEC
|
||||
jsr CORE.StkPush
|
||||
|
||||
.6 jsr CORE.Run
|
||||
|
||||
@ -369,68 +378,7 @@ CS.RUN.INTERACTIVE
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.READ jsr CL.RESET
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
bcs CS.RUN.READ.9
|
||||
|
||||
jsr CL.CHARIN
|
||||
|
||||
>LDA.G CL.bReady
|
||||
bpl .1
|
||||
|
||||
lda (ZPCLBuf)
|
||||
bne .2
|
||||
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL UnSetEnv
|
||||
bra .7
|
||||
|
||||
.2 >PUSHW ZPCLBuf
|
||||
|
||||
>LDYA ZPVarNamePtr
|
||||
>SYSCALL SetEnv
|
||||
|
||||
.7 php
|
||||
pha
|
||||
|
||||
>STZ.G bReadMode
|
||||
>STA.G bREAD.S
|
||||
|
||||
pla
|
||||
plp
|
||||
|
||||
.8 jmp CS.RUN.LOOP.END
|
||||
CS.RUN.READ.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.BATCH >LDA.G bSET.C
|
||||
bne .2
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
>SYSCALL feof
|
||||
bcs .2 unsupported
|
||||
|
||||
tay
|
||||
bne .2
|
||||
|
||||
>SYSCALL GetChar
|
||||
bcs CS.RUN.READ.9
|
||||
|
||||
cmp #3 test Ctrl-c
|
||||
bne .1
|
||||
|
||||
bra CS.RUN.LOOP.END CS
|
||||
|
||||
.1 cmp #19 test Ctrl-s
|
||||
bne .2
|
||||
|
||||
lda #$80
|
||||
>STA.G bPause
|
||||
clc
|
||||
jmp CS.RUN.LOOP.END
|
||||
|
||||
.2 >LDA.G bSET.X
|
||||
CS.RUN.BATCH >LDA.G bSET.X
|
||||
beq .5
|
||||
|
||||
ldy #$ff
|
||||
@ -452,27 +400,25 @@ CS.RUN.BATCH >LDA.G bSET.C
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
|
||||
.5 jsr CORE.Run
|
||||
bcc CS.RUN.LOOP.END
|
||||
|
||||
tay 0 = EOF
|
||||
bne CS.RUN.LOOP.END
|
||||
|
||||
lda #0
|
||||
sec
|
||||
|
||||
CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
|
||||
bcc CS.RUN.LOOP.80
|
||||
tay
|
||||
beq CS.RUN.LOOP.80
|
||||
beq CS.RUN.LOOP.80 0 = EOF
|
||||
|
||||
>LDA.G bSET.E
|
||||
bmi CS.RUN.LOOP.80
|
||||
|
||||
jsr CORE.StkGet
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq .1
|
||||
|
||||
jsr IO.PrintBatchErrMsg
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
|
||||
ldy #S.PS.RC
|
||||
.1 ldy #S.PS.RC
|
||||
lda (pPs),y
|
||||
|
||||
jsr IO.PrintErrMsg
|
||||
@ -518,6 +464,7 @@ CS.DOEVENT lda (pEvent)
|
||||
CS.QUIT jsr HIS.Quit
|
||||
jsr CL.Quit
|
||||
jsr CORE.Quit
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -621,12 +568,12 @@ 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"
|
||||
M32.Printf .AZ "%L"
|
||||
FMT.Long .AZ "%L"
|
||||
*--------------------------------------
|
||||
HOME .AZ "${HOME}"
|
||||
HOME.PROFILE .AZ "${HOME}PROFILE"
|
||||
PS1 .AZ "${PS1}"
|
||||
.HS 00 To Make It ArgV
|
||||
PS1 .AZ "${PS1}"
|
||||
HOME .AZ "${HOME}"
|
||||
*--------------------------------------
|
||||
EscChars .AS 'DBAC'
|
||||
EscChars.Cnt .EQ *-EscChars
|
||||
@ -634,76 +581,82 @@ EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||
*--------------------------------------
|
||||
IN .AZ "IN"
|
||||
*--------------------------------------
|
||||
CMD .AZ ".."
|
||||
.AZ "."
|
||||
.AZ "CD"
|
||||
.AZ "NOHUP"
|
||||
.AZ "DATE"
|
||||
.AZ "ECHO"
|
||||
.AZ "EXIT"
|
||||
.AZ "GETKEY"
|
||||
.AZ "MD"
|
||||
.AZ "PAUSE"
|
||||
.AZ "PWD"
|
||||
.AZ "RD"
|
||||
.AZ "READ"
|
||||
.AZ "REN"
|
||||
.AZ "SET"
|
||||
.AZ "SLEEP"
|
||||
.AZ "SHIFT"
|
||||
.AZ "TIME"
|
||||
.AZ "PUSHD"
|
||||
.AZ "POPD"
|
||||
.AZ "FUNCTION"
|
||||
.AZ "CALL"
|
||||
.AZ "BREAK"
|
||||
.AZ "SWITCH"
|
||||
.AZ "CASE"
|
||||
.AZ "DEFAULT"
|
||||
.AZ "FOR"
|
||||
.AZ "WHILE"
|
||||
.AZ "IF"
|
||||
.AZ "NEXT"
|
||||
.AZ "LOOP"
|
||||
.AZ "ELSE"
|
||||
.AZ "FI"
|
||||
.AZ "END"
|
||||
CMD .AT ".."
|
||||
.AT "."
|
||||
.AT "CD"
|
||||
.AT "NOHUP"
|
||||
.AT "DATE"
|
||||
.AT "ECHO"
|
||||
.AT "EXIT"
|
||||
.AT "GETKEY"
|
||||
.AT "MD"
|
||||
.AT "PAUSE"
|
||||
.AT "PWD"
|
||||
.AT "RD"
|
||||
.AT "READ"
|
||||
.AT "REN"
|
||||
.AT "SET"
|
||||
.AT "SLEEP"
|
||||
.AT "SHIFT"
|
||||
.AT "TIME"
|
||||
.AT "PUSHD"
|
||||
.AT "POPD"
|
||||
.AT "FUNCTION"
|
||||
.AT "CALL"
|
||||
.AT "BREAK"
|
||||
.AT "SWITCH"
|
||||
.AT "CASE"
|
||||
.AT "DEFAULT"
|
||||
.AT "FOR"
|
||||
.AT "WHILE"
|
||||
.AT "IF"
|
||||
.AT "NEXT"
|
||||
.AT "LOOP"
|
||||
.AT "ELSE"
|
||||
.AT "FI"
|
||||
.AT "END"
|
||||
.HS 00
|
||||
CORE.IO .AT "&"
|
||||
.AT "<"
|
||||
.AT ">>"
|
||||
.AT ">"
|
||||
.AT "1>>"
|
||||
.AT "1>"
|
||||
.AT "2>>"
|
||||
.AT "2>"
|
||||
.HS 00
|
||||
EXP.BEGIN .AT "!["
|
||||
.AT "["
|
||||
.HS 00
|
||||
EXP.OP.UNARY .AT "-D"
|
||||
.AT "-E"
|
||||
.AT "-F"
|
||||
.AT "-N"
|
||||
.AT "-Z"
|
||||
.HS 00
|
||||
EXP.OP.BINARY .AT "="
|
||||
.AT "!="
|
||||
.AT ".<"
|
||||
.AT "<="
|
||||
.AT ".>"
|
||||
.AT ">="
|
||||
.AT "-EQ"
|
||||
.AT "-NE"
|
||||
.AT "-LT"
|
||||
.AT "-LE"
|
||||
.AT "-GT"
|
||||
.AT "-GE"
|
||||
.HS 00
|
||||
EXP.OP.MATH .AT "+"
|
||||
.AT "-"
|
||||
.AT "*"
|
||||
.AT "/"
|
||||
.AT "MOD"
|
||||
.HS 00
|
||||
EXP.OP.LOGIC .AT "AND"
|
||||
.AT "OR"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
||||
*--------------------------------------
|
||||
CORE.IO .AZ "&"
|
||||
.AZ "<"
|
||||
.AZ ">>"
|
||||
.AZ ">"
|
||||
.AZ "1>>"
|
||||
.AZ "1>"
|
||||
.AZ "2>>"
|
||||
.AZ "2>"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
EXP.BEGIN .AZ "!["
|
||||
.AZ "["
|
||||
.HS 00
|
||||
EXP.OP.UNARY .AZ "-D"
|
||||
.AZ "-E"
|
||||
.AZ "-F"
|
||||
.AZ "-N"
|
||||
.AZ "-Z"
|
||||
.HS 00
|
||||
EXP.OP.BINARY .AZ "="
|
||||
.AZ "!="
|
||||
.AZ ".<"
|
||||
.AZ "<="
|
||||
.AZ ".>"
|
||||
.AZ ">="
|
||||
.AZ "-EQ"
|
||||
.AZ "-NE"
|
||||
.AZ "-LT"
|
||||
.AZ "-LE"
|
||||
.AZ "-GT"
|
||||
.AZ "-GE"
|
||||
.HS 00
|
||||
EXP.OP.BINARY.BITS
|
||||
.DA #%010
|
||||
.DA #%101
|
||||
@ -718,16 +671,8 @@ EXP.OP.BINARY.BITS
|
||||
.DA #%110
|
||||
.DA #%001
|
||||
.DA #%011
|
||||
EXP.OP.MATH .AZ "+"
|
||||
.AZ "-"
|
||||
.AZ "*"
|
||||
.AZ "/"
|
||||
.AZ "MOD"
|
||||
.HS 00
|
||||
|
||||
EXP.OP.MATH.FPU .DA #FPU.ADD32,#FPU.SUB32,#FPU.IMUL32,#FPU.IDIV32,#FPU.IMOD32
|
||||
EXP.OP.LOGIC .AZ "AND"
|
||||
.AZ "OR"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/SHARED/X.ERRORS.S
|
||||
*--------------------------------------
|
||||
@ -739,7 +684,6 @@ PUSHD.STACK .BS PUSHD.STACK.MAX+1
|
||||
|
||||
hFuncList .BS 1
|
||||
|
||||
bReadMode .BS 1
|
||||
bExitOnEOF .BS 1
|
||||
|
||||
bEscMode .BS 1
|
||||
@ -750,6 +694,7 @@ bSET.E .BS 1
|
||||
bSET.X .BS 1
|
||||
|
||||
bREAD.S .BS 1
|
||||
READ.N .BS 1
|
||||
|
||||
Sleep .BS 4
|
||||
StatBuf .BS S.STAT
|
||||
|
@ -41,7 +41,7 @@ ERR.Codes .DA #MLI.E.IO
|
||||
.DA #E.NOIF
|
||||
.DA #E.BADFTYPE
|
||||
.DA #E.FUNDEF
|
||||
.DA #E.UNEXP
|
||||
.DA #E.UNEXPEOF
|
||||
*--------------------------------------
|
||||
ERR.Count .EQ *-ERR.Codes
|
||||
*--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user