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