mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-22 12:29:21 +00:00
Kernel 0.93++
This commit is contained in:
parent
9dbb05cd66
commit
8b70172a8a
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
175
SYS/KERNEL.S.STRVX.txt
Normal 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
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user