mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-12 06:29:03 +00:00
Kernel 0.93+
This commit is contained in:
parent
9656653843
commit
d380289666
@ -124,7 +124,7 @@ Notice that the DO X and DO Y logic is swapped between the two cases.
|
|||||||
| END | Working | End of SWITCH Statement |
|
| END | Working | End of SWITCH Statement |
|
||||||
| EXIT | Working | exit function, script or shell |
|
| EXIT | Working | exit function, script or shell |
|
||||||
| FI | Working | Terminator for IF block |
|
| FI | Working | Terminator for IF block |
|
||||||
| FUNC | In Progress | FUNC fonction_name <br> \<body\> <br> END |
|
| FUNCTION | Working | FUNCTION fonction_name { <br> \<body\> <br> } |
|
||||||
| IF | Working | [ \<condition\> ] <br> ![ \<condition\> ]|
|
| IF | Working | [ \<condition\> ] <br> ![ \<condition\> ]|
|
||||||
| LOOP | Working | Terminator for WHILE block |
|
| LOOP | Working | Terminator for WHILE block |
|
||||||
| MD | Working | MD path or relative path <br> Create a directory |
|
| MD | Working | MD path or relative path <br> Create a directory |
|
||||||
|
Binary file not shown.
191
BIN/SH.S.CMD.txt
191
BIN/SH.S.CMD.txt
@ -2,9 +2,20 @@ NEW
|
|||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.NOHUP >LDA.G CORE.PSFlags
|
CMD.. lda (ZPArgVBufPtr)
|
||||||
ora #S.PS.F.NOHUP
|
beq .9
|
||||||
sta (pData),y
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
|
jsr IO.Load
|
||||||
|
bcs .99
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
|
jmp CORE.Load.YAX exec cmd file and continue
|
||||||
|
|
||||||
|
.9 jmp CMD.Exec.CSYN
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CMD.NOHUP lda #S.PS.F.NOHUP
|
||||||
|
tsb CORE.PSFlags
|
||||||
|
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
jmp CORE.ExecExtCmd
|
jmp CORE.ExecExtCmd
|
||||||
@ -51,7 +62,7 @@ CMD.POPD >LDA.G PUSHD.STACK
|
|||||||
|
|
||||||
tay
|
tay
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
jsr CMD.SetPrefixA
|
jsr CMD.SetCWDA
|
||||||
|
|
||||||
>DEC.G PUSHD.STACK
|
>DEC.G PUSHD.STACK
|
||||||
clc
|
clc
|
||||||
@ -91,7 +102,7 @@ CMD.CD.YA >SYSCALL realpath
|
|||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
txa
|
txa
|
||||||
jmp CMD.SetPrefixA we have '/'
|
jmp CMD.SetCWDA we have '/'
|
||||||
|
|
||||||
.12 >PUSHEA.G StatBuf
|
.12 >PUSHEA.G StatBuf
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
@ -119,7 +130,7 @@ CMD.CD.YA >SYSCALL realpath
|
|||||||
bne .14
|
bne .14
|
||||||
|
|
||||||
lda ZPTmpW
|
lda ZPTmpW
|
||||||
jmp CMD.SetPrefixA already ends with a /
|
jmp CMD.SetCWDA already ends with a /
|
||||||
|
|
||||||
.14 iny
|
.14 iny
|
||||||
iny
|
iny
|
||||||
@ -142,7 +153,7 @@ CMD.CD.YA >SYSCALL realpath
|
|||||||
>SYSCALL freemem
|
>SYSCALL freemem
|
||||||
pla
|
pla
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SetPrefixA pha
|
CMD.SetCWDA pha
|
||||||
ldy #S.PS.hCWD
|
ldy #S.PS.hCWD
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
@ -538,16 +549,12 @@ CMD.RD lda (ZPArgVBufPtr)
|
|||||||
|
|
||||||
.9 jmp CMD.Exec.CSYN
|
.9 jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.FUNC lda (ZPArgVBufPtr)
|
CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
jsr CORE.StkGetCtx
|
jsr CORE.StkGetCtx
|
||||||
bcc .9 NO context allowed
|
bcc .9 No context allowed
|
||||||
|
|
||||||
lda #3 Check stack for 3 bytes
|
|
||||||
jsr CORE.StkCheck
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>LDA.G hFuncList
|
>LDA.G hFuncList
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
@ -557,32 +564,77 @@ CMD.FUNC lda (ZPArgVBufPtr)
|
|||||||
|
|
||||||
.1 >PUSHW ZPArgVBufPtr
|
.1 >PUSHW ZPArgVBufPtr
|
||||||
>LDA.G hFuncList
|
>LDA.G hFuncList
|
||||||
|
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CORE.StkPushYA
|
>STYA ZPTmpW Save KeyID
|
||||||
|
|
||||||
lda #$C0+C.FUNC
|
jsr CORE.ArgV.Next nothing after function name
|
||||||
jsr CORE.StkPush
|
beq .10
|
||||||
|
|
||||||
lda #$ff
|
cmp #'{'
|
||||||
>STA.G bFuncMode
|
bne .9
|
||||||
|
|
||||||
* clc
|
ldy #1
|
||||||
.99 rts
|
lda (ZPArgVBufPtr),y
|
||||||
|
beq .11
|
||||||
|
|
||||||
.9 jmp CMD.Exec.CSYN
|
.9 jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
|
||||||
CMD.. lda (ZPArgVBufPtr)
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
>LDYA ZPArgVBufPtr
|
|
||||||
jsr IO.Load
|
|
||||||
bcs CMD.CALL.RTS
|
|
||||||
>LDYA ZPArgVBufPtr
|
|
||||||
jmp CORE.Load.YAX exec cmd file and continue
|
|
||||||
|
|
||||||
.9 jmp CMD.Exec.CSYN
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
.10 jsr CORE.GetCharNB
|
||||||
|
bcs .9
|
||||||
|
cmp #'{'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CORE.GetNextCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.11 stz M32.ACC '{' counter
|
||||||
|
|
||||||
|
>LDYA ZPInputBufPtr
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
lda (ZPInputBufPtr)
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
.12 cmp #'{'
|
||||||
|
bne .13
|
||||||
|
|
||||||
|
inc M32.ACC
|
||||||
|
bra .14
|
||||||
|
|
||||||
|
.13 cmp #'}'
|
||||||
|
bne .14
|
||||||
|
|
||||||
|
dec M32.ACC
|
||||||
|
bmi .7
|
||||||
|
|
||||||
|
.14 iny
|
||||||
|
bne .15
|
||||||
|
inx
|
||||||
|
|
||||||
|
.15 jsr CORE.GetNextChar
|
||||||
|
bne .12
|
||||||
|
|
||||||
|
.6 lda M32.ACC
|
||||||
|
bpl .9
|
||||||
|
|
||||||
|
.7 jsr CORE.GetNextChar skip ending '}'
|
||||||
|
|
||||||
|
txa
|
||||||
|
|
||||||
|
>PUSHYA DataLen
|
||||||
|
>PUSHW ZPPtr1 DataPtr
|
||||||
|
>PUSHW ZPTmpW KeyID
|
||||||
|
>LDA.G hFuncList
|
||||||
|
>SYSCALL SListAddData
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.CALL.UNDEF lda #E.FUNDEF
|
CMD.CALL.UNDEF lda #E.FUNDEF
|
||||||
sec
|
sec
|
||||||
@ -615,40 +667,34 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
|||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
jsr EXP.GET
|
jsr EXP.GET
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
|
|
||||||
inc pStack
|
inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
.1 jsr CMD.EXIT.A
|
.1 sta M32.ACC
|
||||||
|
|
||||||
|
.2 jsr CORE.StkPull
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda (pData)
|
|
||||||
bne .8
|
|
||||||
|
|
||||||
lda #$ff
|
|
||||||
>STA.G bExitOnEOF
|
|
||||||
|
|
||||||
.8 lda M32.ACC
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
CMD.EXIT.A sta M32.ACC
|
|
||||||
|
|
||||||
.1 jsr CORE.StkPull
|
|
||||||
bcs CMD.EXIT.RTS
|
|
||||||
|
|
||||||
cmp #$C0 in CALL / . context ?
|
cmp #$C0 in CALL / . context ?
|
||||||
beq .8
|
beq CMD.EXIT.CALL
|
||||||
|
|
||||||
jsr CMD.EXIT.POP
|
jsr CMD.EXIT.POP
|
||||||
bcc .1
|
bcc .2
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.99 lda #E.ESYN
|
||||||
|
* sec
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
.8 jsr CORE.StkPull
|
CMD.EXIT.CALL jsr CORE.StkPull
|
||||||
>SYSCALL freemem Code buffer
|
>SYSCALL freemem Code buffer
|
||||||
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
@ -672,31 +718,39 @@ CMD.EXIT.A sta M32.ACC
|
|||||||
sta ZPInputBuf
|
sta ZPInputBuf
|
||||||
|
|
||||||
lda M32.ACC
|
lda M32.ACC
|
||||||
clc
|
|
||||||
|
CMD.EXIT.CLCRTS clc
|
||||||
CMD.EXIT.RTS rts
|
CMD.EXIT.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.EXIT.POP and #$3F
|
CMD.EXIT.POP and #$3F
|
||||||
cmp #C.IF
|
cmp #C.IF
|
||||||
beq CMD.EXIT.POP0
|
beq CMD.EXIT.CLCRTS IF : Nothing
|
||||||
|
|
||||||
cmp #C.CASE CASE : nothing
|
|
||||||
beq CMD.EXIT.POP0
|
|
||||||
|
|
||||||
ldx #2
|
ldx #2
|
||||||
cmp #C.WHILE WHILE : one Ptr
|
cmp #C.WHILE WHILE : One Ptr = 2 bytes
|
||||||
beq CMD.EXIT.POPX
|
beq CMD.EXIT.POPX
|
||||||
|
|
||||||
cmp #C.SWITCH SWITCH : hValue
|
cmp #C.SWITCH SWITCH : hValue
|
||||||
bne .9
|
beq .2
|
||||||
|
|
||||||
jsr CORE.StkPull
|
ldx #1
|
||||||
|
|
||||||
|
cmp #C.CASE CASE : C.CASE + hValue
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.1 jsr CMD.EXIT.POPX
|
||||||
|
|
||||||
|
.2 jsr CORE.StkPull
|
||||||
>SYSCALL freemem
|
>SYSCALL freemem
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.STACKERROR
|
.9 lda #E.STACKERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CMD.EXIT.POPX lda (pData)
|
CMD.EXIT.POPX lda (pData)
|
||||||
|
|
||||||
.1 dec
|
.1 dec
|
||||||
@ -705,7 +759,7 @@ CMD.EXIT.POPX lda (pData)
|
|||||||
|
|
||||||
sta (pData)
|
sta (pData)
|
||||||
|
|
||||||
CMD.EXIT.POP0 clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||||
@ -819,11 +873,8 @@ CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
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.END.CSYN
|
||||||
|
|
||||||
and #$3F
|
|
||||||
cmp #C.FUNC
|
|
||||||
beq CMD.END.FUNC
|
|
||||||
|
|
||||||
|
and #$3F
|
||||||
cmp #C.SWITCH
|
cmp #C.SWITCH
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
@ -833,17 +884,13 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||||||
cmp #C.DEFAULT
|
cmp #C.DEFAULT
|
||||||
bne CMD.END.CSYN
|
bne CMD.END.CSYN
|
||||||
|
|
||||||
.2 jsr CORE.StkPull remove C.CASE,C.DEFAULT
|
.2 jsr CORE.StkPull remove C.CASE or C.DEFAULT
|
||||||
|
|
||||||
.3 jsr CORE.StkPull remove C.SWITCH
|
.3 jsr CORE.StkPull remove C.SWITCH
|
||||||
jsr CORE.StkPull get hVALUE
|
jsr CORE.StkPull get hVALUE
|
||||||
>SYSCALL freemem
|
>SYSCALL freemem
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CMD.END.FUNC jsr CORE.StkPull remove C.FUNC
|
|
||||||
jsr CORE.StkPull remove KeyID
|
|
||||||
jmp CORE.StkPull remove KeyID
|
|
||||||
|
|
||||||
CMD.END.CSYN jmp CMD.Exec.CSYN
|
CMD.END.CSYN jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.FOR jsr CORE.StkGetCtx
|
CMD.FOR jsr CORE.StkGetCtx
|
||||||
|
@ -38,11 +38,9 @@ CORE.Load.YAX stx M32.ACC X=Code to Execute
|
|||||||
|
|
||||||
>LDYA ZPInputBuf
|
>LDYA ZPInputBuf
|
||||||
jsr CORE.StkPushYA
|
jsr CORE.StkPushYA
|
||||||
bcs CORE.FUNCRESET.RTS
|
|
||||||
|
|
||||||
>LDYA ZPInputBufPtr
|
>LDYA ZPInputBufPtr
|
||||||
jsr CORE.StkPushYA
|
jsr CORE.StkPushYA
|
||||||
bcs CORE.FUNCRESET.RTS
|
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
@ -95,6 +93,25 @@ CORE.Load.YAX stx M32.ACC X=Code to Execute
|
|||||||
* set hStdIn = hStdOut
|
* set hStdIn = hStdOut
|
||||||
* set hStdOut = Std
|
* set hStdOut = Std
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CORE.Run.EOF jsr CORE.StkPull
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cmp #$C0 in CALL / . context ?
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CMD.EXIT.CALL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr IO.Reset
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sec
|
||||||
|
rts Ending 0, CS,A=0
|
||||||
|
|
||||||
|
.9 lda #E.UNEXP
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CORE.Run.SYN lda #E.SYN
|
CORE.Run.SYN lda #E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -109,25 +126,16 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
|||||||
sta (ZPArgVBuf)
|
sta (ZPArgVBuf)
|
||||||
|
|
||||||
lda #S.PS.F.HOLD
|
lda #S.PS.F.HOLD
|
||||||
>STA.G CORE.PSFlags
|
sta CORE.PSFlags
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
|
|
||||||
sta CORE.IntCmd assume external
|
sta CORE.IntCmd assume external
|
||||||
|
|
||||||
jsr CORE.GetCharNB
|
jsr CORE.GetCharNB
|
||||||
bcc .11
|
bcs CORE.Run.EOF
|
||||||
|
|
||||||
lda #0 EOF
|
cmp #'|'
|
||||||
jsr CMD.EXIT.A
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr IO.Reset
|
|
||||||
lda #0
|
|
||||||
sec
|
|
||||||
rts Ending 0, CS,A=0
|
|
||||||
|
|
||||||
.11 cmp #'|'
|
|
||||||
bne .21
|
bne .21
|
||||||
|
|
||||||
jsr IO.Pipe.In
|
jsr IO.Pipe.In
|
||||||
@ -149,7 +157,7 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
|||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.33 cmp #'#' commented line?
|
.33 cmp #'#' commented line?
|
||||||
bne .2
|
bne .4
|
||||||
|
|
||||||
.12 jsr CORE.SkipLine
|
.12 jsr CORE.SkipLine
|
||||||
|
|
||||||
@ -159,11 +167,6 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
|||||||
clc
|
clc
|
||||||
.9 rts EOL, CS,A=0
|
.9 rts EOL, CS,A=0
|
||||||
|
|
||||||
.2 >LDA.G bFuncMode
|
|
||||||
bpl .4
|
|
||||||
|
|
||||||
jmp CORE.AddFunc
|
|
||||||
|
|
||||||
.4 >LDYA L.CMD internal command ?
|
.4 >LDYA L.CMD internal command ?
|
||||||
jsr CORE.LookupInputBuf
|
jsr CORE.LookupInputBuf
|
||||||
bcc .41
|
bcc .41
|
||||||
@ -233,10 +236,10 @@ CORE.Run.7 jsr CORE.GetCharNB
|
|||||||
jsr IO.Pipe.Out
|
jsr IO.Pipe.Out
|
||||||
bcs CORE.Run.RTS
|
bcs CORE.Run.RTS
|
||||||
|
|
||||||
>LDA.G CORE.PSFlags
|
lda CORE.PSFlags
|
||||||
and #$ff^S.PS.F.HOLD Run in the background...
|
and #$ff^S.PS.F.HOLD Run in the background...
|
||||||
ora #S.PS.F.CLOSEONX ...and close PIPE on exit
|
ora #S.PS.F.CLOSEONX ...and close PIPE on exit
|
||||||
sta (pData),y
|
sta CORE.PSFlags
|
||||||
|
|
||||||
bra CORE.ExecCmd.1 Do not skip |
|
bra CORE.ExecCmd.1 Do not skip |
|
||||||
|
|
||||||
@ -259,16 +262,14 @@ CORE.ExecCmd.1 lda #0
|
|||||||
tax
|
tax
|
||||||
jmp (J.CMD,x)
|
jmp (J.CMD,x)
|
||||||
|
|
||||||
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
CORE.ExecExtCmd >PUSHB CORE.PSFlags
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>SYSCALL execv
|
>SYSCALL execv
|
||||||
|
|
||||||
CORE.ExecExtCmd.Exit
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
tax CPID
|
tax CPID
|
||||||
|
|
||||||
>LDA.G CORE.PSFlags
|
lda CORE.PSFlags
|
||||||
and #S.PS.F.HOLD
|
and #S.PS.F.HOLD
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
@ -291,45 +292,6 @@ CORE.ExecExtCmd.Exit
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.AddFunc >LDYA L.ENDCMD
|
|
||||||
jsr CORE.LookupInputBuf
|
|
||||||
bcs .1
|
|
||||||
|
|
||||||
>STZ.G bFuncMode
|
|
||||||
|
|
||||||
jsr .1 add "END"
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jmp CMD.END.FUNC Cleanup Stk
|
|
||||||
|
|
||||||
.9 jmp CORE.Run.SYN
|
|
||||||
|
|
||||||
.1 ldy #$ff
|
|
||||||
|
|
||||||
.2 iny
|
|
||||||
lda (ZPInputBufPtr),y
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
eor #C.CR
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.3
|
|
||||||
>PUSHYA DataLen
|
|
||||||
>PUSHW ZPInputBufPtr DataPtr
|
|
||||||
|
|
||||||
lda (pData)
|
|
||||||
tay
|
|
||||||
dey skip C.FUNC
|
|
||||||
lda (pData),y KeyID
|
|
||||||
>PUSHA
|
|
||||||
dey
|
|
||||||
lda (pData),y KeyID
|
|
||||||
>PUSHA
|
|
||||||
>LDA.G hFuncList
|
|
||||||
|
|
||||||
>SYSCALL SListAddData
|
|
||||||
bcs .9
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.SkipLine jsr CORE.GetNextCharNB
|
CORE.SkipLine jsr CORE.GetNextCharNB
|
||||||
bcs .8 EOF
|
bcs .8 EOF
|
||||||
|
|
||||||
@ -551,9 +513,8 @@ CORE.IO.JMP txa
|
|||||||
tax
|
tax
|
||||||
jmp (J.CORE.IO,x)
|
jmp (J.CORE.IO,x)
|
||||||
|
|
||||||
CORE.IO.AMP >LDA.G CORE.PSFlags
|
CORE.IO.AMP lda #S.PS.F.HOLD
|
||||||
and #$ff^S.PS.F.HOLD
|
trb CORE.PSFlags
|
||||||
sta (pData),y
|
|
||||||
clc
|
clc
|
||||||
CORE.IO.RTS rts
|
CORE.IO.RTS rts
|
||||||
|
|
||||||
@ -742,13 +703,14 @@ CORE.StkPull jsr CORE.StkGet
|
|||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkGet lda (pData) StackPtr
|
CORE.StkGet lda (pData) StackPtr
|
||||||
beq CORE.StkErr
|
beq .9
|
||||||
|
|
||||||
tay
|
tay
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkErr lda #E.STACKERROR
|
.9 lda #E.STACKERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
27
BIN/SH.S.txt
27
BIN/SH.S.txt
@ -29,7 +29,7 @@ C.SHIFT .EQ 16
|
|||||||
C.TIME .EQ 17
|
C.TIME .EQ 17
|
||||||
C.PUSHD .EQ 18
|
C.PUSHD .EQ 18
|
||||||
C.POPD .EQ 19
|
C.POPD .EQ 19
|
||||||
C.FUNC .EQ 20
|
C.FUNCTION .EQ 20
|
||||||
C.CALL .EQ 21
|
C.CALL .EQ 21
|
||||||
C.BREAK .EQ 22
|
C.BREAK .EQ 22
|
||||||
C.SWITCH .EQ 23
|
C.SWITCH .EQ 23
|
||||||
@ -55,9 +55,9 @@ E.STKOVERFLOW .EQ $C3
|
|||||||
E.NOWHILE .EQ $C4
|
E.NOWHILE .EQ $C4
|
||||||
E.NOFOR .EQ $C5
|
E.NOFOR .EQ $C5
|
||||||
E.NOIF .EQ $C6
|
E.NOIF .EQ $C6
|
||||||
E.BADEXP .EQ $C7
|
E.BADFTYPE .EQ $C7
|
||||||
E.BADFTYPE .EQ $C8
|
E.FUNDEF .EQ $C8
|
||||||
E.FUNDEF .EQ $C9
|
E.UNEXP .EQ $C9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
@ -76,18 +76,19 @@ ZPArgVBufPrev .BS 2
|
|||||||
ZPArgVBufPtr .BS 2
|
ZPArgVBufPtr .BS 2
|
||||||
ZPVarNamePtr .BS 2
|
ZPVarNamePtr .BS 2
|
||||||
|
|
||||||
|
CORE.PSFlags .BS 1
|
||||||
CORE.IntCmd .BS 1
|
CORE.IntCmd .BS 1
|
||||||
CORE.Operator .BS 1
|
CORE.Operator .BS 1
|
||||||
CORE.LogicOp .BS 1
|
CORE.LogicOp .BS 1
|
||||||
CORE.TestResult .BS 1
|
CORE.TestResult .BS 1
|
||||||
CORE.PrevTestResult .BS 1
|
CORE.PrevTestResult .BS 1
|
||||||
|
|
||||||
M32.ACC .BS 4
|
|
||||||
|
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
ZPTmpW .BS 2
|
ZPTmpW .BS 2
|
||||||
|
|
||||||
|
M32.ACC .BS 4
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
@ -130,7 +131,6 @@ J.ESC .DA CL.BS left arrow
|
|||||||
.DA CL.NAK right arrow
|
.DA CL.NAK right arrow
|
||||||
L.IN .DA IN
|
L.IN .DA IN
|
||||||
L.CMD .DA CMD
|
L.CMD .DA CMD
|
||||||
L.ENDCMD .DA ENDCMD
|
|
||||||
J.CMD .DA CMD...
|
J.CMD .DA CMD...
|
||||||
.DA CMD..
|
.DA CMD..
|
||||||
.DA CMD.CD
|
.DA CMD.CD
|
||||||
@ -151,7 +151,7 @@ J.CMD .DA CMD...
|
|||||||
.DA CMD.TIME
|
.DA CMD.TIME
|
||||||
.DA CMD.PUSHD
|
.DA CMD.PUSHD
|
||||||
.DA CMD.POPD
|
.DA CMD.POPD
|
||||||
.DA CMD.FUNC
|
.DA CMD.FUNCTION
|
||||||
.DA CMD.CALL
|
.DA CMD.CALL
|
||||||
.DA CMD.BREAK
|
.DA CMD.BREAK
|
||||||
.DA CMD.SWITCH
|
.DA CMD.SWITCH
|
||||||
@ -439,8 +439,10 @@ CS.RUN.BATCH >LDA.G bSET.C
|
|||||||
lda (ZPInputBufPtr),y
|
lda (ZPInputBufPtr),y
|
||||||
sta (ZPArgVBuf),y
|
sta (ZPArgVBuf),y
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
eor #C.CR
|
eor #C.CR
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
sta (ZPArgVBuf),y
|
sta (ZPArgVBuf),y
|
||||||
|
|
||||||
.4 >PUSHW ZPArgVBuf
|
.4 >PUSHW ZPArgVBuf
|
||||||
@ -476,7 +478,7 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
|||||||
jsr IO.PrintErrMsg
|
jsr IO.PrintErrMsg
|
||||||
bcs CS.RUN.LOOP.RTS
|
bcs CS.RUN.LOOP.RTS
|
||||||
|
|
||||||
CS.RUN.LOOP.80 lda (pData)
|
CS.RUN.LOOP.80 lda (pData) something on stack ?
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
>LDA.G bExitOnEOF
|
>LDA.G bExitOnEOF
|
||||||
@ -652,7 +654,7 @@ CMD .AZ ".."
|
|||||||
.AZ "TIME"
|
.AZ "TIME"
|
||||||
.AZ "PUSHD"
|
.AZ "PUSHD"
|
||||||
.AZ "POPD"
|
.AZ "POPD"
|
||||||
.AZ "FUNC"
|
.AZ "FUNCTION"
|
||||||
.AZ "CALL"
|
.AZ "CALL"
|
||||||
.AZ "BREAK"
|
.AZ "BREAK"
|
||||||
.AZ "SWITCH"
|
.AZ "SWITCH"
|
||||||
@ -665,7 +667,7 @@ CMD .AZ ".."
|
|||||||
.AZ "LOOP"
|
.AZ "LOOP"
|
||||||
.AZ "ELSE"
|
.AZ "ELSE"
|
||||||
.AZ "FI"
|
.AZ "FI"
|
||||||
ENDCMD .AZ "END"
|
.AZ "END"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
||||||
@ -738,7 +740,6 @@ PUSHD.STACK .BS PUSHD.STACK.MAX+1
|
|||||||
hFuncList .BS 1
|
hFuncList .BS 1
|
||||||
|
|
||||||
bReadMode .BS 1
|
bReadMode .BS 1
|
||||||
bFuncMode .BS 1
|
|
||||||
bExitOnEOF .BS 1
|
bExitOnEOF .BS 1
|
||||||
|
|
||||||
bEscMode .BS 1
|
bEscMode .BS 1
|
||||||
@ -761,8 +762,6 @@ CL.bReady .BS 1
|
|||||||
|
|
||||||
CORE.hArgVBuf .BS 1
|
CORE.hArgVBuf .BS 1
|
||||||
|
|
||||||
CORE.PSFlags .BS 1
|
|
||||||
|
|
||||||
HIS.hBuf .BS 1
|
HIS.hBuf .BS 1
|
||||||
HIS.Count .BS 1
|
HIS.Count .BS 1
|
||||||
HIS.Index .BS 1
|
HIS.Index .BS 1
|
||||||
|
@ -41,6 +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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ERR.Count .EQ *-ERR.Codes
|
ERR.Count .EQ *-ERR.Codes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -83,6 +84,7 @@ ERR.Messages >PSTR "I/O Error"
|
|||||||
>PSTR "FI/ELSE Without IF"
|
>PSTR "FI/ELSE Without IF"
|
||||||
>PSTR "Bad File Type"
|
>PSTR "Bad File Type"
|
||||||
>PSTR "Undefined Function"
|
>PSTR "Undefined Function"
|
||||||
|
>PSTR "Unexpected EOF"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>PSTR "Unknown Error"
|
>PSTR "Unknown Error"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -9,9 +9,9 @@ ZPSListDBlkPtr .EQ ZPMEMMGR+14
|
|||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # SListGetData
|
* # SListGetData
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `PUSHW DataOfs`
|
* `PUSHW DataOfs` (Start offset in Data)
|
||||||
* `PUSHW DataLen`
|
* `PUSHW DataLen` (Data bytes to return, 0 if String mode)
|
||||||
* `PUSHW DataPtr`
|
* `PUSHW DataPtr` (0 if KERNEL should allocate a buffer)
|
||||||
* `PUSHW KeyID`
|
* `PUSHW KeyID`
|
||||||
* `lda hSList`
|
* `lda hSList`
|
||||||
* `>SYSCALL SListGetData`
|
* `>SYSCALL SListGetData`
|
||||||
@ -36,7 +36,7 @@ K.SListGetData sta SLIST.hList
|
|||||||
|
|
||||||
lda SLIST.DataLen
|
lda SLIST.DataLen
|
||||||
sec
|
sec
|
||||||
sbc ZPMemMgrSize
|
sbc ZPMemMgrSize Offset
|
||||||
eor #$ff
|
eor #$ff
|
||||||
sta SLIST.nDataCnt
|
sta SLIST.nDataCnt
|
||||||
lda SLIST.DataLen+1
|
lda SLIST.DataLen+1
|
||||||
@ -44,9 +44,9 @@ K.SListGetData sta SLIST.hList
|
|||||||
eor #$ff
|
eor #$ff
|
||||||
sta SLIST.nDataCnt+1 Data remaining
|
sta SLIST.nDataCnt+1 Data remaining
|
||||||
|
|
||||||
bcc .99
|
bcc .99 Offset Beyond DataLen
|
||||||
|
|
||||||
.10 lda ZPMemMgrSize
|
.10 lda ZPMemMgrSize Skip to Offset
|
||||||
ldx ZPMemMgrSize+1
|
ldx ZPMemMgrSize+1
|
||||||
jsr SLIST.SkipDataAX
|
jsr SLIST.SkipDataAX
|
||||||
|
|
||||||
@ -55,7 +55,11 @@ K.SListGetData sta SLIST.hList
|
|||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
>LDYA SLIST.DataLen
|
>LDYA SLIST.DataLen
|
||||||
ldx #SYS.GetMem
|
iny
|
||||||
|
bne .11
|
||||||
|
inc +1 for ending 0
|
||||||
|
|
||||||
|
.11 ldx #SYS.GetMem
|
||||||
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
|
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
|
||||||
bcs .9
|
bcs .9
|
||||||
stx .82+1
|
stx .82+1
|
||||||
@ -106,14 +110,8 @@ K.SListGetData sta SLIST.hList
|
|||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.8 bit SLIST.bStringMode
|
.8 lda #0
|
||||||
bpl .81
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
jsr SHARED.SetDataByte
|
jsr SHARED.SetDataByte
|
||||||
inc ZPSListDataLen
|
|
||||||
bne .81
|
|
||||||
inc ZPSListDataLen+1
|
|
||||||
|
|
||||||
.81 >LDYA ZPSListDataLen
|
.81 >LDYA ZPSListDataLen
|
||||||
.82 ldx #$ff SELF MODIFIED
|
.82 ldx #$ff SELF MODIFIED
|
||||||
@ -182,15 +180,16 @@ K.SListAddData sta SLIST.hList
|
|||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.2 jsr SHARED.GetDataByte
|
.2 jsr SHARED.GetDataByte
|
||||||
|
|
||||||
jsr SLIST.AddBlockByte
|
jsr SLIST.AddBlockByte
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 lda #0
|
.8 lda #0
|
||||||
jsr SLIST.AddBlockByte Make sure 0 follow DATA
|
jsr SLIST.AddBlockByte Add an extra 0 to stop Search here
|
||||||
|
|
||||||
.9 rts
|
clc
|
||||||
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # SListSetData
|
* # SListSetData
|
||||||
* ## ASM
|
* ## ASM
|
||||||
@ -562,15 +561,13 @@ SLIST.AddBlockByte
|
|||||||
|
|
||||||
.9 plx
|
.9 plx
|
||||||
ply
|
ply
|
||||||
sec
|
|
||||||
SLIST.AddBlockByte.RTS
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SLIST.SetBlockByte
|
SLIST.SetBlockByte
|
||||||
ldy SLIST.BytePtr
|
ldy SLIST.BytePtr
|
||||||
sta (ZPSListDBlkPtr),y
|
sta (ZPSListDBlkPtr),y
|
||||||
inc SLIST.BytePtr
|
inc SLIST.BytePtr
|
||||||
bne SLIST.AddBlockByte.RTS
|
bne SLIST.ToNextBlock.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SLIST.ToNextBlock
|
SLIST.ToNextBlock
|
||||||
inc SLIST.BlockPtr
|
inc SLIST.BlockPtr
|
||||||
@ -578,6 +575,7 @@ SLIST.ToNextBlock
|
|||||||
lda (ZPSListIBlkPtr),y
|
lda (ZPSListIBlkPtr),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA ZPSListDBlkPtr
|
>STYA ZPSListDBlkPtr
|
||||||
|
SLIST.ToNextBlock.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SLIST.hList .BS 1
|
SLIST.hList .BS 1
|
||||||
|
Loading…
Reference in New Issue
Block a user