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