Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-02-02 15:58:01 +01:00
parent ddf079965d
commit dc10f1715e
12 changed files with 127 additions and 278 deletions

Binary file not shown.

View File

@ -19,117 +19,67 @@ HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
*-------------------------------------- *--------------------------------------
HIS.Add >LDA.G HIS.hBuf HIS.Add >LDA.G HIS.hBuf
beq .9 beq .9
>SYSCALL GetMemPtr
>STYA ZPPTR1
.10 lda #$ff >PUSHA
jsr HIS.GetA Y=ending 0 >PUSHW ZPCLBuf
phy >SYSCALL StrVAdd
tya bcc .1
sec add len+1
>ADC.G CL.Len CmdBuffer length >PUSHB.G HIS.hBuf
pla lda #0
bcc .2 enough room >PUSHA
jsr GetPtr1LenY get len of oldest string >SYSCALL StrVShift
tya
* sec
adc ZPPTR1
sta ZPPTR2
lda ZPPTR1+1
adc #0
sta ZPPTR2+1
ldy #$FF
.1 iny
lda (ZPPTR2),y move back until String ending 0 found
sta (ZPPTR1),y
bne .1
iny
lda (ZPPTR2),y move back until Array ending 0 found
sta (ZPPTR1),y
bne .1
>DEC.G HIS.Count >DEC.G HIS.Count
bra .10 retry.... bra HIS.Add
.2 jsr AddAPtr1 A = ending O offset
ldy #$ff .1 >STZ.G HIS.Index Reset Index
.4 iny
lda (ZPCLBuf),y
sta (ZPPTR1),y
bne .4
iny
sta (ZPPTR1),y set new array ending 0
* lda #0
>STA.G HIS.Index Reset Index
>INC.G HIS.Count >INC.G HIS.Count
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
HIS.GetPrev >LDA.G HIS.hBuf HIS.GetPrev >LDA.G HIS.hBuf
beq HISTORY.RTS beq HISTORY.RTS
>SYSCALL GetMemPtr
>STYA ZPPTR1
>LDA.G HIS.Count >LDA.G HIS.Count
beq HISTORY.RTS empty history,nothing to do beq HISTORY.RTS empty history,nothing to do
>LDA.G HIS.Index >LDA.G HIS.Index
bne .1 bne .1
>LDA.G HIS.Count >LDA.G HIS.Count
.1 dec .1 dec
>STA.G HIS.Index bra HIS.GetToCl
bra HIS.SetA
History.RTS rts History.RTS rts
*-------------------------------------- *--------------------------------------
HIS.GetNext >LDA.G HIS.hBuf HIS.GetNext >LDA.G HIS.hBuf
beq HISTORY.RTS beq HISTORY.RTS
>SYSCALL GetMemPtr
>STYA ZPPTR1
>LDA.G HIS.Count >LDA.G HIS.Count
beq HISTORY.RTS empty history,nothing to do beq HISTORY.RTS empty history,nothing to do
>LDA.G HIS.Index >LDA.G HIS.Index
inc inc
>CMP.G HIS.Count >CMP.G HIS.Count
bne .1 bne HIS.GetToCl
lda #0 lda #0
>STA.G HIS.Index >STA.G HIS.Index
jmp CL.CLR jmp CL.CLR
.1 >STA.G HIS.Index
*-------------------------------------- *--------------------------------------
HIS.SetA jsr HIS.GetA HIS.GetToCl >STA.G HIS.Index
tya
jsr AddAPtr1
jsr CL.CLR jsr CL.CLR
ldy #$ff
.2 iny >PUSHB.G HIS.hBuf
lda (ZPPTR1),y >PUSHB.G HIS.Index
sta (ZPCLBuf),y >PUSHW ZPCLBuf
bne .2
tya >SYSCALL StrVGet
>STA.G CL.Ptr
>STZ.G CL.Ptr
>STA.G CL.Len >STA.G CL.Len
jmp CL.PrintCLBuf jmp CL.PrintCLBuf
*-------------------------------------- *--------------------------------------
HIS.GetA ldy #0
tax
beq .80
lda (ZPPTR1),y
beq .9
.1 iny
lda (ZPPTR1),y
bne .1
dex
beq .8
iny
lda (ZPPTR1),y
bne .1
.9 sec Found ending 0....
rts
.8 iny
.80 clc
rts
*--------------------------------------
MAN MAN
SAVE USR/SRC/BIN/SH.S.HIS SAVE USR/SRC/BIN/SH.S.HIS
LOAD USR/SRC/BIN/SH.S LOAD USR/SRC/BIN/SH.S

View File

@ -266,9 +266,9 @@ SYS.Kill .EQ $A6
SYS.LoadFile .EQ $A8 SYS.LoadFile .EQ $A8
SYS.LoadTxtFile .EQ $AA SYS.LoadTxtFile .EQ $AA
SYS.GetMemStat .EQ $AC SYS.GetMemStat .EQ $AC
SYS.StrVDup .EQ $AE * .EQ $AE
SYS.StrVGet .EQ $B0 * .EQ $B0
SYS.ArgV .EQ $B2 SYS.ArgV .EQ $B2
SYS.Expand .EQ $B4 SYS.Expand .EQ $B4
SYS.FileSearch .EQ $B6 SYS.FileSearch .EQ $B6
@ -293,10 +293,10 @@ SYS.GetPWName .EQ $D2
SYS.PutPW .EQ $D4 SYS.PutPW .EQ $D4
SYS.FlushEtcPasswd .EQ $D6 SYS.FlushEtcPasswd .EQ $D6
* .EQ $D8 SYS.StrVShift .EQ $D8
* .EQ $DA SYS.StrVGet .EQ $DA
* .EQ $DC SYS.StrVAdd .EQ $DC
* .EQ $DE SYS.StrVDup .EQ $DE
*-------------------------------------- *--------------------------------------
SYS.GetMem .EQ $E0 SYS.GetMem .EQ $E0
SYS.Realloc .EQ $E2 SYS.Realloc .EQ $E2

View File

@ -2,7 +2,6 @@ NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
AUXPIPE .EQ 1 AUXPIPE .EQ 1
AUXENV .EQ 1
*-------------------------------------- *--------------------------------------
ZPKERNEL .EQ $0 ZPKERNEL .EQ $0
*-------------------------------------- *--------------------------------------

View File

@ -353,9 +353,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
jsr ENV.NextEnvP4Y jsr ENV.NextEnvP4Y
bra .10 bra .10
.15 .DO AUXENV=1 .15 sta CLRREADAUX
sta CLRREADAUX
.FIN
ldy #$ff ldy #$ff
@ -395,12 +393,8 @@ K.SetEnv.I jsr K.UnsetEnv.I
ldy #S.PS.hENV ldy #S.PS.hENV
lda (pPs),y lda (pPs),y
.DO AUXENV=1
ldx #SYS.FreeStkObj ldx #SYS.FreeStkObj
jsr K.SYSCALL2.AUX jsr K.SYSCALL2.AUX
.ELSE
jsr K.Freemem
.FIN
pla hEnv pla hEnv
ldy #S.PS.hENV ldy #S.PS.hENV
@ -412,9 +406,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
.22 ldy #$ff .22 ldy #$ff
.DO AUXENV=1
sta SETWRITEAUX sta SETWRITEAUX
.FIN
.23 iny .23 iny
lda (TXTPTR),y lda (TXTPTR),y
@ -438,10 +430,8 @@ K.SetEnv.I jsr K.UnsetEnv.I
sta (ZPPtr3),y don't forget array ending 0 sta (ZPPtr3),y don't forget array ending 0
clc clc
.9 .DO AUXENV=1 .9 sta CLRREADAUX
sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
rts rts
*/-------------------------------------- */--------------------------------------
* # GetEnv * # GetEnv
@ -461,8 +451,34 @@ K.SetEnv.I jsr K.UnsetEnv.I
K.GetEnv >PULLW FORPNT value K.GetEnv >PULLW FORPNT value
>PULLW TXTPTR name >PULLW TXTPTR name
K.GetEnv.I lda TXTPTR K.GetEnv.I ldy #S.PS.hENV
beq K.GetEnvDump lda (pPs),y
tax
ldy TXTPTR+1
bne .10
sta SETREADAUX
jsr MEM.GetMemByID
ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y
pha
iny
lda (ZPMemMgrSPtr),y
ply
sta CLRREADAUX
jmp MEM.CopyToMain
.10
* sta SETREADAUX
* sta SETWRITEAUX
* stx ENVX.hEnv
* jsr ENVX.GetEnv
* sta CLRREADAUX
* sta CLRWRITEAUX
* rts
jsr ENV.FindVar jsr ENV.FindVar
bcs .9 bcs .9
@ -474,35 +490,27 @@ K.GetEnv.I lda TXTPTR
ldy #$ff ldy #$ff
.DO AUXENV=1
sta SETREADAUX sta SETREADAUX
.FIN
.1 iny .1 iny
lda (ZPPtr3),y lda (ZPPtr3),y
bne .1 bne .1
.DO AUXENV=1
sta CLRREADAUX sta CLRREADAUX
.FIN
iny iny
bne .2 bne .2
inc inc
.2 .DO AUXENV=1 .2 sta CLRREADAUX
sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
jsr K.getmem jsr K.getmem
bcs .99 bcs .99
>STYA FORPNT >STYA FORPNT
.3 .DO AUXENV=1 .3 sta SETREADAUX
sta SETREADAUX
.FIN
ldy #$ff ldy #$ff
@ -512,9 +520,7 @@ K.GetEnv.I lda TXTPTR
bne .4 bne .4
>LDYA FORPNT >LDYA FORPNT
.DO AUXENV=1
sta CLRREADAUX sta CLRREADAUX
.FIN
clc clc
rts rts
@ -522,42 +528,6 @@ K.GetEnv.I lda TXTPTR
.9 >LDYAI 0 .9 >LDYAI 0
* sec * sec
.99 rts .99 rts
K.GetEnvDump ldy #S.PS.ENVPAGECNT
lda (pPs),y
sta .1+1
ldy #0
jsr K.getmem
bcs .9
>STYA FORPNT
sty .80+1
sta .81+1
stx .82+1
jsr ENV.InitEnvP3 SETREADAUX
.1 ldx #$ff SELF MODIFIED
ldy #0
.2 lda (ZPPtr3),y
sta (FORPNT),y
iny
bne .2
.80 ldy #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
.82 ldx #$ff SELF MODIFIED
.DO AUXENV=1
sta CLRREADAUX
.FIN
clc
.9 rts
*/-------------------------------------- */--------------------------------------
* # UnsetEnv * # UnsetEnv
* Remove an environment variable * Remove an environment variable
@ -591,10 +561,8 @@ K.UnsetEnv.I jsr ENV.FindVar
* ZPPtr3 -> PTR to Ending 0 * ZPPtr3 -> PTR to Ending 0
*-------------------------------------- *--------------------------------------
ENV.FindVar ENV.FindVar
.DO AUXENV=1
sta SETREADAUX sta SETREADAUX
sta SETWRITEAUX sta SETWRITEAUX
.FIN
jsr ENV.InitEnvP3 Store ENV jsr ENV.InitEnvP3 Store ENV
@ -604,11 +572,7 @@ ENV.FindVar
ldy #$ff ldy #$ff
.2 iny .2 iny
.DO AUXENV=1
jsr SHARED.TXTPTR.GetY jsr SHARED.TXTPTR.GetY
.ELSE
lda (TXTPTR),y
.FIN
beq .3 beq .3
jsr SHARED.IsIDValid jsr SHARED.IsIDValid
@ -623,20 +587,16 @@ ENV.FindVar
cmp #'=' cmp #'='
bne .4 bne .4
.DO AUXENV=1
sta CLRREADAUX sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
clc clc
rts rts
.4 jsr ENV.NextEnvP3 Skip NAME=VALUE .4 jsr ENV.NextEnvP3 Skip NAME=VALUE
bra .1 bra .1
.9 .DO AUXENV=1 .9 sta CLRREADAUX
sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
sec sec
rts rts
*-------------------------------------- *--------------------------------------
@ -644,10 +604,8 @@ ENV.FindVar
* In: * In:
* ZPPtr3 -> ENV.NAME to Discard * ZPPtr3 -> ENV.NAME to Discard
*-------------------------------------- *--------------------------------------
ENV.DelVarP3 .DO AUXENV=1 ENV.DelVarP3 sta SETREADAUX
sta SETREADAUX
sta SETWRITEAUX sta SETWRITEAUX
.FIN
>LDYA ZPPtr3 save actual Ptr >LDYA ZPPtr3 save actual Ptr
>STYA ZPPtr4 >STYA ZPPtr4
jsr ENV.NextEnvP3 Skip NAME=VALUE jsr ENV.NextEnvP3 Skip NAME=VALUE
@ -667,20 +625,14 @@ ENV.DelVarP3 .DO AUXENV=1
jsr ENV.NextEnvP4Y jsr ENV.NextEnvP4Y
bra .1 bra .1
.8 .DO AUXENV=1 .8 sta CLRREADAUX
sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
rts rts
*-------------------------------------- *--------------------------------------
ENV.InitEnvP3 .DO AUXENV=1 ENV.InitEnvP3 sta CLRREADAUX
sta CLRREADAUX
.FIN
ldy #S.PS.hENV ldy #S.PS.hENV
lda (pPs),y lda (pPs),y
.DO AUXENV=1
sta SETREADAUX sta SETREADAUX
.FIN
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA ZPPtr3 Store ENV >STYA ZPPtr3 Store ENV
@ -728,10 +680,8 @@ ENV.Dup.A sta .8+1 Store target page Count
ldy #S.PS.hENV ldy #S.PS.hENV
lda (pPs),y lda (pPs),y
.DO AUXENV=1
sta SETREADAUX sta SETREADAUX
sta SETWRITEAUX sta SETWRITEAUX
.FIN
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA .1+1 >STYA .1+1
@ -762,10 +712,8 @@ ENV.Dup.A sta .8+1 Store target page Count
pla hMem pla hMem
clc clc
.9 .DO AUXENV=1 .9 sta CLRREADAUX
sta CLRREADAUX
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -1,6 +1,8 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
ENVX.hEnv .BS 1
*--------------------------------------
ENVX.PutEnv ldy #$ff ENVX.PutEnv ldy #$ff
.1 iny .1 iny
@ -70,7 +72,7 @@ ENVX.SetEnv jsr ENVX.UnsetEnv
bcs .22 env is large enough bcs .22 env is large enough
lda ZPPtr4+1 lda ZPPtr4+1
jsr ENV.Dup.A jsr ENVX.Dup.A
bcs .9 bcs .9
pha pha
@ -113,10 +115,7 @@ ENVX.SetEnv jsr ENVX.UnsetEnv
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
ENVX.GetEnv lda TXTPTR ENVX.GetEnv jsr ENVX.FindVar
beq ENVX.Dump
jsr ENVX.FindVar
bcs .9 bcs .9
jsr ENVX.NextEnvP3Y Skip NAME= jsr ENVX.NextEnvP3Y Skip NAME=
@ -162,55 +161,11 @@ ENVX.GetEnv lda TXTPTR
* sec * sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
ENVX.Dump sta CLRREADAUX
sta CLRWRITEAUX
ldy #S.PS.ENVPAGECNT
lda (pPs),y
sta .1+1
ldy #0
jsr K.getmem
sta SETREADAUX
sta SETWRITEAUX
bcs .9
>STYA FORPNT
sty .80+1
sta .81+1
stx .82+1
jsr ENV.InitEnvP3 SETREADAUX
.1 ldx #$ff SELF MODIFIED
ldy #0
.2 lda (ZPPtr3),y
jsr SHARED.FORPNT.PutY
iny
bne .2
inc ZPPtr3+1
inc FORPNT+1
dex
bne .2
.80 ldy #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
.82 ldx #$ff SELF MODIFIED
clc
.9 rts
*--------------------------------------
ENVX.UnsetEnv jsr ENVX.FindVar ENVX.UnsetEnv jsr ENVX.FindVar
bcs .8 not found, quit bcs .8 not found, quit
jsr ENVX.DelVarP3 Ptr3 -> NAME=VALUE jsr ENVX.DelVarP3 Ptr3 -> NAME=VALUE
clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -283,10 +238,7 @@ ENVX.DelVarP3 >LDYA ZPPtr3 save actual Ptr
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
ENVX.InitEnvP3 sta CLRREADAUX ENVX.InitEnvP3 lda ENVX.hEnv
ldy #S.PS.hENV
lda (pPs),y
sta SETREADAUX
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA ZPPtr3 Store ENV >STYA ZPPtr3 Store ENV
@ -323,10 +275,10 @@ ENVX.NextEnvP4Y tya
* A = hMem to new ENV * A = hMem to new ENV
* X = Page Count * X = Page Count
*-------------------------------------- *--------------------------------------
ENV.Dup ldy #S.PS.ENVPAGECNT ENVX.Dup ldy #S.PS.ENVPAGECNT
lda (pPs),y lda (pPs),y
ENV.Dup.A sta .8+1 Store target page Count ENVX.Dup.A sta .8+1 Store target page Count
ldy #S.PS.ENVPAGECNT get SOURCE page count ldy #S.PS.ENVPAGECNT get SOURCE page count
lda (pPs),y lda (pPs),y

View File

@ -992,12 +992,8 @@ TskMgrInit >LDYAI MSG.TSK
>SYSCALL2 puts >SYSCALL2 puts
>LDYAI K.ENV.SIZE get a buffer for ENV >LDYAI K.ENV.SIZE get a buffer for ENV
.DO AUXENV=1
ldx #SYS.NewStkObj ldx #SYS.NewStkObj
jsr K.SYSCALL2.AUX Buffer in AUX mem jsr K.SYSCALL2.AUX Buffer in AUX mem
.ELSE
jsr K.GetMem
.FIN
bcs EvtMgrInit.RTS bcs EvtMgrInit.RTS
>STYA ZPPtr1 >STYA ZPPtr1
ldy #S.PS.ENVPAGECNT ldy #S.PS.ENVPAGECNT
@ -1009,15 +1005,11 @@ TskMgrInit >LDYAI MSG.TSK
iny #S.PS.hENV iny #S.PS.hENV
sta (pPs),y sta (pPs),y
.DO AUXENV=1
sta SETWRITEAUX sta SETWRITEAUX
.FIN
lda #0 lda #0
sta (ZPPtr1) make sure blank!! sta (ZPPtr1) make sure blank!!
.DO AUXENV=1
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN
>LDYAI $2E0 Get ROOT from QC >LDYAI $2E0 Get ROOT from QC
>SYSCALL2 strdup >SYSCALL2 strdup

View File

@ -104,9 +104,9 @@ K.SYSCALL .DA 0 $00
.DA K.LoadFile .DA K.LoadFile
.DA K.LoadTxtFile .DA K.LoadTxtFile
.DA K.GetMemStat .DA K.GetMemStat
.DA K.StrVDup .DA 0
.DA K.StrVGet $B0 .DA 0 $B0
.DA K.ArgV .DA K.ArgV
.DA K.Expand .DA K.Expand
.DA K.FileSearch .DA K.FileSearch
@ -128,10 +128,10 @@ K.SYSCALL .DA 0 $00
.DA K.GetPWName .DA K.GetPWName
.DA K.PutPW .DA K.PutPW
.DA K.FlushEtcPasswd .DA K.FlushEtcPasswd
.DA 0 .DA K.StrVShift
.DA 0 .DA K.StrVGet
.DA 0 .DA K.StrVAdd
.DA 0 X.OSD .DA K.StrVDup
*-------------------------------------- *--------------------------------------
* $E000 * $E000
*-------------------------------------- *--------------------------------------
@ -386,13 +386,13 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #$80 .DA #$80
.DA #0 PWD .DA #0 PWD
.DA #$80 .DA #$80
.DA #RRAMWRAMBNK2 .DA #0 StrV
.DA #$80 .DA #$80
.DA #RRAMWRAMBNK2 .DA #0
.DA #$80 .DA #$80
.DA #RRAMWRAMBNK2 .DA #0
.DA #$80 .DA #$80
.DA #$C0 Off Screen Driver .DA #0
.DA #$80 .DA #$80
*-------------------------------------- *--------------------------------------
.DA #0 $E0 : MemMgr at $E000 .DA #0 $E0 : MemMgr at $E000

View File

@ -29,13 +29,14 @@ K.Realloc ldy #2 src hMem
ldy #S.MEM.LEN ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y lda (ZPMemMgrSPtr),y
sta .2+1
pha pha
iny iny
lda (ZPMemMgrSPtr),y lda (ZPMemMgrSPtr),y
sta .3+1
ply ply
sty .2+1
sta .3+1
jsr MEM.MoveToAux x = Src hMem, YA = LEN jsr MEM.MoveToAux x = Src hMem, YA = LEN
bcs .99 bcs .99
@ -498,8 +499,12 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
* none. * none.
* (X,Y unmodified) * (X,Y unmodified)
*\-------------------------------------- *\--------------------------------------
MEM.MoveToMain stx .1+1 Save AUX hMem MEM.CopyToMain clc
>STYA A2L Save LEN to move .HS B0 BCS
MEM.MoveToMain sec
ror .1+1
stx .2+1 Save AUX hMem
>STYA A2L Save LEN to copy/move
jsr K.GetMem jsr K.GetMem
bcs .9 bcs .9
@ -507,7 +512,7 @@ MEM.MoveToMain stx .1+1 Save AUX hMem
stx .8+1 Save MAIN hMem stx .8+1 Save MAIN hMem
>STYA A4L Save MAIN Ptr >STYA A4L Save MAIN Ptr
lda .1+1 lda .2+1
>SYSCALL2 GetStkObjPtr >SYSCALL2 GetStkObjPtr
>STYA A1L Save AUX base Ptr >STYA A1L Save AUX base Ptr
pha Add Allocated LEN pha Add Allocated LEN
@ -523,10 +528,14 @@ MEM.MoveToMain stx .1+1 Save AUX hMem
jsr AuxMove jsr AuxMove
.1 lda #$ff SELF MODIFIED .1 lda #$ff SELF MODIFIED
bpl .8
.2 lda #$ff SELF MODIFIED
>SYSCALL2 FreeStkObj release AUX memory >SYSCALL2 FreeStkObj release AUX memory
.8 ldx #$ff Returns MAIN hMem .8 ldx #$ff Returns MAIN hMem
* clc txa
jmp K.GetMemPtr Y,A = Ptr
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -581,12 +581,8 @@ K.Kill.2 ldy #S.PS.hSID
ldy #S.PS.hENV ldy #S.PS.hENV
lda (ZPPtr1),y lda (ZPPtr1),y
.DO AUXENV=1
ldx #SYS.FreeStkObj ldx #SYS.FreeStkObj
jsr K.SYSCALL2.AUX jsr K.SYSCALL2.AUX
.ELSE
jsr K.Freemem
.FIN
ldx #4 ldx #4

View File

@ -43,14 +43,14 @@ K.StrVShift >PULLA index
* CC: Y,A = Ptr * CC: Y,A = Ptr
* CS: Y,A = NULL * CS: Y,A = NULL
*\-------------------------------------- *\--------------------------------------
K.StrVGet >PULLW ZPPtr2 ptr K.StrVGet >PULLW FORPNT ptr
>PULLA index >PULLA index
eor #$ff eor #$ff
tax tax
>PULLA >PULLA
>SYSCALL GetMemPtr jsr K.GetMemPtr
>STYA ZPPtr1 strV >STYA ZPPtr1 strV
.1 inx .1 inx
@ -63,20 +63,22 @@ K.StrVGet >PULLW ZPPtr2 ptr
.2 lda (ZPPtr1) .2 lda (ZPPtr1)
tay tay
sec bne .3
beq .9 Y,A = 0
lda ZPPtr2+1 sec
rts Y,A = 0
.3 lda FORPNT+1
beq .8 beq .8
.4 ldy #$ff .4 ldy #$ff
.5 iny .5 iny
lda (ZPPtr1),y lda (ZPPtr1),y
sta (ZPPtr2),y sta (FORPNT),y
bne .5 bne .5
>LDYA ZPPtr2 >LDYA FORPNT
clc clc
rts rts
@ -93,7 +95,7 @@ K.StrVGet >PULLW ZPPtr2 ptr
* CC : str added to hSTRV * CC : str added to hSTRV
* CS : hSTRV full * CS : hSTRV full
*\-------------------------------------- *\--------------------------------------
K.StrVAdd >PULLW ZPPtr2 str K.StrVAdd >PULLW TXTPTR str
>PULLA >PULLA
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
@ -105,13 +107,13 @@ K.StrVAdd >PULLW ZPPtr2 str
.1 jsr STRV.NStrPtr1 .1 jsr STRV.NStrPtr1
bcs .2 bcs .2
jsr SHARED.AddYp1ToPtr1 jsr SHARED.AddYp1ToPtr2
bra .1 bra .1
.2 ldy #$ff .2 ldy #$ff
.3 iny .3 iny
lda (ZPPtr1),y lda (TXTPTR),y
bne .3 bne .3
tya tya
@ -137,12 +139,12 @@ K.StrVAdd >PULLW ZPPtr2 str
.4 ldy #$ff .4 ldy #$ff
.5 iny .5 iny
lda (ZPPtr2),y lda (TXTPTR),y
sta (ZPPtr1),y sta (ZPPtr1),y
bne .5 bne .5
iny iny
sta (ZPPtr1),y sta (ZPPtr1),y StrV Ending \0
clc clc
rts rts

View File

@ -45,9 +45,10 @@ A2osX.AUX .DA #0
A2osX.AUX.B .PH Mem.XHiMem A2osX.AUX.B .PH Mem.XHiMem
.INB USR/SRC/SYS/KERNEL.S.TERMX .INB USR/SRC/SYS/KERNEL.S.TERMX
.INB USR/SRC/SYS/KERNEL.S.ENVX
.INB USR/SRC/SYS/KERNEL.S.TIMEX
.INB USR/SRC/SYS/KERNEL.S.MD5X .INB USR/SRC/SYS/KERNEL.S.MD5X
.INB USR/SRC/SYS/KERNEL.S.PWDX .INB USR/SRC/SYS/KERNEL.S.PWDX
.INB USR/SRC/SYS/KERNEL.S.TIMEX
.INB USR/SRC/SYS/KERNEL.S.SLISTX .INB USR/SRC/SYS/KERNEL.S.SLISTX
.EP .EP
A2osX.AUX.S .EQ *-A2osX.AUX.B A2osX.AUX.S .EQ *-A2osX.AUX.B
@ -95,16 +96,16 @@ A2osX.E0 .DA #0
A2osX.E0.B .PH $E000 A2osX.E0.B .PH $E000
.INB USR/SRC/SYS/KERNEL.S.JMP .INB USR/SRC/SYS/KERNEL.S.JMP
.INB USR/SRC/SYS/KERNEL.S.IRQ .INB USR/SRC/SYS/KERNEL.S.IRQ
.INB USR/SRC/SYS/KERNEL.S.MEM .INB USR/SRC/SYS/KERNEL.S.SHARED
.INB USR/SRC/SYS/KERNEL.S.MATH .INB USR/SRC/SYS/KERNEL.S.MATH
.INB USR/SRC/SYS/KERNEL.S.STRV
.INB USR/SRC/SYS/KERNEL.S.TERM .INB USR/SRC/SYS/KERNEL.S.TERM
.INB USR/SRC/SYS/KERNEL.S.TIME
.INB USR/SRC/SYS/KERNEL.S.MD5 .INB USR/SRC/SYS/KERNEL.S.MD5
.INB USR/SRC/SYS/KERNEL.S.PWD .INB USR/SRC/SYS/KERNEL.S.PWD
.INB USR/SRC/SYS/KERNEL.S.TIME .INB USR/SRC/SYS/KERNEL.S.STRV
.INB USR/SRC/SYS/KERNEL.S.SHARED .INB USR/SRC/SYS/KERNEL.S.MEM
.INB USR/SRC/SYS/KERNEL.S.STDIO2
* go to A2osX.D1 * go to A2osX.D1
.INB USR/SRC/SYS/KERNEL.S.STDIO2
.INB USR/SRC/SYS/KERNEL.S.IO .INB USR/SRC/SYS/KERNEL.S.IO
.INB USR/SRC/SYS/KERNEL.S.PIPE .INB USR/SRC/SYS/KERNEL.S.PIPE
.INB USR/SRC/SYS/KERNEL.S.PFT .INB USR/SRC/SYS/KERNEL.S.PFT