Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-08-12 09:40:16 +02:00
parent 9656653843
commit d380289666
7 changed files with 188 additions and 180 deletions

View File

@ -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.

View File

@ -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

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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

View File

@ -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"
*-------------------------------------- *--------------------------------------

View File

@ -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