Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-02-07 16:35:52 +01:00
parent 9dbb05cd66
commit 8b70172a8a
8 changed files with 284 additions and 232 deletions

Binary file not shown.

View File

@ -17,7 +17,7 @@ CORE.FUNCRESET >LDA.G hFuncList
*--------------------------------------
CORE.Load.YAX stx M32.ACC X = Code to Execute
>SYSCALL StrVDup Y,A = ArgV
>SYSCALL ArgVDup Y,A = ArgV
bcs .9
stx M32.ACC+1 X = hARGV

View File

@ -270,7 +270,7 @@ SYS.GetMemStat .EQ $AE
SYS.Shift .EQ $B0
SYS.ArgV .EQ $B2
SYS.Expand .EQ $B4
* .EQ $B6
SYS.ArgVDup .EQ $B6
SYS.PutEnv .EQ $B8
SYS.SetEnv .EQ $BA
@ -295,7 +295,7 @@ SYS.FlushEtcPasswd .EQ $D6
SYS.StrVShift .EQ $D8
SYS.StrVGet .EQ $DA
SYS.StrVAdd .EQ $DC
SYS.StrVDup .EQ $DE
* .EQ $DE
*--------------------------------------
SYS.GetMem .EQ $E0
SYS.Realloc .EQ $E2

View File

@ -141,6 +141,81 @@ K.Arg2ArgV jsr K.Expand
* clc
rts
.9 >RET 2 Discard target buffer
*/--------------------------------------
* # ArgVDup
* ## ASM
* Y,A = Src StrV
* ## RETURN VALUE
* X = hMem of new StrV
* A = Str Count
*\--------------------------------------
K.ArgVDup >STYA ZPPtr1
>STYA ZPPtr2
ldy #0
ldx #0
.1 lda (ZPPtr2),y
beq .2
.11 iny
bne .1
inx
inc ZPPtr2+1
bra .1
.2 iny
bne .3
inx
inc ZPPtr2+1
.3 lda (ZPPtr2),y
bne .11
txa
jsr K.getmem
bcs .9
>STYA ZPPtr2
phx
jsr ARG.Ptr1Ptr2cpy
txa Count
plx hMem
clc
.9 rts
*--------------------------------------
ARG.Ptr1Ptr2cpy
ldx #0
ldy #0
.4 lda (ZPPtr1),y
sta (ZPPtr2),y
beq .6
.5 iny
bne .4
inc ZPPtr1+1
inc ZPPtr2+1
bra .4
.6 inx
iny
bne .7
inc ZPPtr1+1
inc ZPPtr2+1
.7 lda (ZPPtr1),y
sta (ZPPtr2),y Ending \0 ?
bne .5
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.ARG

View File

@ -109,7 +109,7 @@ K.SYSCALL .DA 0 $00
.DA K.Shift $B0
.DA K.ArgV
.DA K.Expand
.DA 0
.DA K.ArgVDup
.DA K.PutEnv
.DA K.SetEnv
.DA K.GetEnv
@ -131,7 +131,7 @@ K.SYSCALL .DA 0 $00
.DA K.StrVShift
.DA K.StrVGet
.DA K.StrVAdd
.DA K.StrVDup
.DA 0
*--------------------------------------
* $E000
*--------------------------------------
@ -389,14 +389,15 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #$80
.DA #0 PWD
.DA #$80
.DA #$C0 StrV
.DA #$80
.DA #$C0
.DA #$80
.DA #$C0
.DA #$80
.DA #0 $D8 : StrV
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #$80
*--------------------------------------
.DA #0 $E0 : MemMgr at $E000
.DA #$80

View File

@ -8,34 +8,18 @@ NEW
* `>SYSCALL StrVShift`
* ## RETURN VALUE
*\--------------------------------------
K.StrVShift sta CLRREADAUX
>PULLA index
K.StrVShift >PULLA index
eor #$ff
tax
>PULLA
sta SETREADAUX
jsr K.GetMemPtr
>STYA ZPPtr1 strV
.1 inx
beq .2
jsr STRV.NStrPtr1
bcc .1
rts
.2 >LDYA ZPPtr1
>STYA ZPPtr2
jsr STRV.NStrPtr1
jsr STRV.Ptr1Ptr2cpy
clc
rts
sta SETWRITEAUX
jsr STRVX.StrVShift
sta CLRREADAUX
sta CLRWRITEAUX
rts
*/--------------------------------------
* # StrVGet
* ## ASM
@ -47,50 +31,20 @@ K.StrVShift sta CLRREADAUX
* CC: Y,A = Ptr
* CS: Y,A = NULL
*\--------------------------------------
K.StrVGet sta CLRREADAUX
>PULLW FORPNT ptr
K.StrVGet >PULLW FORPNT ptr
>PULLA index
eor #$ff
tax
>PULLA
sta SETREADAUX
jsr K.GetMemPtr
>STYA ZPPtr1 strV
.1 inx
beq .2
jsr STRV.NStrPtr1
bcc .1
rts
.2 lda (ZPPtr1)
tay
bne .3
sec
rts Y,A = 0
.3 lda FORPNT+1
beq .8
.4 ldy #$ff
.5 iny
lda (ZPPtr1),y
jsr SHARED.FORPNT.PutY
bne .5
>LDYA FORPNT
clc
rts
.8 >LDYA ZPPtr1
clc
.9 rts
sta SETREADAUX
sta SETWRITEAUX
jsr STRVX.StrVGet
sta CLRREADAUX
sta CLRWRITEAUX
rts
*/--------------------------------------
* # StrVAdd
* ## ASM
@ -101,168 +55,14 @@ K.StrVGet sta CLRREADAUX
* CC : str added to hSTRV
* CS : hSTRV full
*\--------------------------------------
K.StrVAdd sta CLRREADAUX
>PULLW TXTPTR str
K.StrVAdd >PULLW TXTPTR str
>PULLA
sta SETREADAUX
jsr K.GetMemPtr
>STYA ZPPtr1
lda TXTPTR+1
bne .10
sta (ZPPtr1)
clc
rts
.10 lda #1 for \0
sta ZPPtr2
stz ZPPtr2+1
.1 jsr STRV.NStrPtr1
bcs .2
jsr SHARED.AddYp1ToPtr2
bra .1
.2 ldy #$ff
.3 iny
jsr SHARED.TXTPTR.GetY
bne .3
tya
sec
adc ZPPtr2
bcc .4
inc ZPPtr2+1
ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y
cmp ZPPtr2
iny
lda (ZPMemMgrSPtr),y
sbc ZPPtr2+1
bcs .4
lda #E.OOM
sec
rts
.4 ldy #$ff
.5 iny
jsr SHARED.TXTPTR.GetY
sta (ZPPtr1),y
bne .5
iny
sta (ZPPtr1),y StrV Ending \0
clc
rts
*--------------------------------------
STRV.NStrPtr1 ldy #$ff
.1 iny
lda (ZPPtr1)
beq .2
inc ZPPtr1
bne .1
inc ZPPtr1+1
bra .1
.2 tya
beq .9
inc ZPPtr1
bne .8
inc ZPPtr1+1 skip \0
.8 clc
rts
.9 sec Y,A = 0
rts
*/--------------------------------------
* # StrVDup
* ## ASM
* Y,A = Src StrV
* ## RETURN VALUE
* X = hMem of new StrV
* A = Str Count
*\--------------------------------------
K.StrVDup >STYA ZPPtr1
>STYA ZPPtr2
ldy #0
ldx #0
.1 lda (ZPPtr2),y
beq .2
.11 iny
bne .1
inx
inc ZPPtr2+1
bra .1
.2 iny
bne .3
inx
inc ZPPtr2+1
.3 lda (ZPPtr2),y
bne .11
txa
jsr K.getmem
bcs .9
>STYA ZPPtr2
phx
jsr STRV.Ptr1Ptr2cpy
txa Count
plx hMem
clc
.9 rts
*--------------------------------------
STRV.Ptr1Ptr2cpy
ldx #0
ldy #0
.4 lda (ZPPtr1),y
sta (ZPPtr2),y
beq .6
.5 iny
bne .4
inc ZPPtr1+1
inc ZPPtr2+1
bra .4
.6 inx
iny
bne .7
inc ZPPtr1+1
inc ZPPtr2+1
.7 lda (ZPPtr1),y
sta (ZPPtr2),y Ending \0 ?
bne .5
rts
sta SETWRITEAUX
jsr STRVX.StrVAdd
sta CLRREADAUX
sta CLRWRITEAUX
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STRV

175
SYS/KERNEL.S.STRVX.txt Normal file
View File

@ -0,0 +1,175 @@
NEW
AUTO 3,1
*--------------------------------------
STRVX.StrVShift jsr K.GetMemPtr
>STYA ZPPtr1 strV
.1 inx
beq .2
jsr STRVX.NStrPtr1
bcc .1
rts
.2 >LDYA ZPPtr1
>STYA ZPPtr2
jsr STRVX.NStrPtr1
jsr STRVX.Ptr1Ptr2cpy
clc
rts
*--------------------------------------
STRVX.StrVGet jsr K.GetMemPtr
>STYA ZPPtr1 strV
.1 inx
beq .2
jsr STRVX.NStrPtr1
bcc .1
rts
.2 lda (ZPPtr1)
tay
bne .3
sec
rts Y,A = 0
.3 lda FORPNT+1
beq .8
.4 ldy #$ff
.5 iny
lda (ZPPtr1),y
jsr SHARED.FORPNT.PutY
bne .5
>LDYA FORPNT
clc
rts
.8 >LDYA ZPPtr1
clc
.9 rts
*--------------------------------------
STRVX.StrVAdd jsr K.GetMemPtr
>STYA ZPPtr1
lda TXTPTR+1
bne .10
sta (ZPPtr1)
clc
rts
.10 lda #1 for \0
sta ZPPtr2
stz ZPPtr2+1
.1 jsr STRVX.NStrPtr1
bcs .2
jsr SHARED.AddYp1ToPtr2
bra .1
.2 ldy #$ff
.3 iny
jsr SHARED.TXTPTR.GetY
bne .3
tya
sec
adc ZPPtr2
bcc .4
inc ZPPtr2+1
ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y
cmp ZPPtr2
iny
lda (ZPMemMgrSPtr),y
sbc ZPPtr2+1
bcs .4
lda #E.OOM
sec
rts
.4 ldy #$ff
.5 iny
jsr SHARED.TXTPTR.GetY
sta (ZPPtr1),y
bne .5
iny
sta (ZPPtr1),y StrV Ending \0
clc
rts
*--------------------------------------
STRVX.NStrPtr1 ldy #$ff
.1 iny
lda (ZPPtr1)
beq .2
inc ZPPtr1
bne .1
inc ZPPtr1+1
bra .1
.2 tya
beq .9
inc ZPPtr1
bne .8
inc ZPPtr1+1 skip \0
.8 clc
rts
.9 sec Y,A = 0
rts
*--------------------------------------
STRVX.Ptr1Ptr2cpy
ldx #0
ldy #0
.4 lda (ZPPtr1),y
sta (ZPPtr2),y
beq .6
.5 iny
bne .4
inc ZPPtr1+1
inc ZPPtr2+1
bra .4
.6 inx
iny
bne .7
inc ZPPtr1+1
inc ZPPtr2+1
.7 lda (ZPPtr1),y
sta (ZPPtr2),y Ending \0 ?
bne .5
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STRVX
LOAD USR/SRC/SYS/KERNEL.S
ASM

View File

@ -49,6 +49,7 @@ A2osX.AUX.B .PH Mem.XHiMem
.INB USR/SRC/SYS/KERNEL.S.TIMEX
.INB USR/SRC/SYS/KERNEL.S.MD5X
.INB USR/SRC/SYS/KERNEL.S.PWDX
.INB USR/SRC/SYS/KERNEL.S.STRVX
.INB USR/SRC/SYS/KERNEL.S.SLISTX
.EP
A2osX.AUX.S .EQ *-A2osX.AUX.B