Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2020-01-09 16:54:14 +01:00
parent 7cadb5b0bb
commit 046b4ae89e
8 changed files with 164 additions and 116 deletions

View File

@ -3,20 +3,6 @@
## Copyright
Copyright 2015 - 2019, Remy Gibert and the A2osX contributors.
# Args2ArgV
Expand String and convert to ArgV List
## C
short int args2argv(char* args, char* argv[])
## ASM
`>PUSHW argv`
`>LDYA args`
`>SYSCALL Args2ArgV`
## RETURN VALUE
A = Arg count
# ArgV
## ASM
@ -483,6 +469,28 @@ Load a file in memory
## RETURN VALUE
Buffer filled with memory stats
# StrVDup
**In:**
Y,A = Src StrV
## RETURN VALUE
X = hMem of new StrV
A = Str Count
# Str2StrV
Expand String and convert to ArgV List
## C
short int str2strv(char* args, char* argv[])
## ASM
`>PUSHW argv`
`>LDYA args`
`>SYSCALL Str2StrV`
## RETURN VALUE
A = Arg count
# GetPWUID
## C

View File

@ -35,7 +35,7 @@ int getprodoscatsize (short int options, short int catsize, int devsize );
7 for Disk II(280blk),3.5(1600),3.5HD(2880)
22 for 32mb Hardisk...
# TrkW16s
# D2TrkW16s
Write a track (16 sectors)
**In:**
PUSHW = Ptr to 16*256 buffer
@ -47,7 +47,7 @@ Write a track (16 sectors)
CS : A = Error
A=0, currently starting/seeking...
# TrkWNIB
# D2TrkWNIB
Write a track (NIBBLE)
**In:**
PUSHW = Ptr to NIBBLE buffer (0 ended)

Binary file not shown.

View File

@ -20,7 +20,7 @@ CORE.FUNCRESET >LDA.G hFuncList
*--------------------------------------
CORE.Load.YAX stx M32.ACC X = Code to Execute
jsr CORE.ArgV.Dup Y,A = ArgV
>SYSCALL StrVDup Y,A = ArgV
bcs .9
stx M32.ACC+1 X = hARGV
@ -44,8 +44,11 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
ldy #S.PS.ARGC
lda M32.ACC+2 new ARGC
dec Skip ARG0 in count
sta (pPS),y
iny #S.PS.hARGV
lda M32.ACC+1
sta (pPS),y new hARGV
lda M32.ACC new code
@ -372,41 +375,6 @@ CORE.Lookup >STYA ZPPtr2
*--------------------------------------
* ArgV
*--------------------------------------
CORE.ArgV.Dup >STYA ZPPtr1
phy
pha
lda #1
sta ZPPtr2
stz ZPPtr2+1
.1 jsr GetPtr1LenY
tya
beq .2
jsr AddAp1Ptr2
jsr AddYp1Ptr1
bra .1
.2 pla
ply
>STYA ZPPtr1
>LDYA ZPPtr2
>SYSCALL GetMem
bcs .9
>STYA ZPPtr2
phx
ldx #$ff Arg count-1 (skip $0)
.5 jsr StrCpyPtr1Ptr2
tya
beq .8
inx
jsr AddAp1Ptr2
jsr AddYp1Ptr1
bra .5
.8 txa A = Arg count, X = hARGV
plx
clc
.9 rts
*--------------------------------------
CORE.ArgV.Add >LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev Save String start of Expand

View File

@ -269,9 +269,9 @@ SYS.Kill .EQ $A6
SYS.LoadFile .EQ $A8
SYS.LoadTxtFile .EQ $AA
SYS.GetMemStat .EQ $AC
* .EQ $AE
SYS.StrVDup .EQ $AE
SYS.Args2ArgV .EQ $B0
SYS.Str2StrV .EQ $B0
SYS.ArgV .EQ $B2
SYS.ExpandStr .EQ $B4
SYS.FileSearch .EQ $B6

View File

@ -1,65 +1,6 @@
NEW
AUTO 3,1
*/--------------------------------------
* # Args2ArgV
* Expand String and convert to ArgV List
* ## C
* short int args2argv(char* args, char* argv[])
* ## ASM
* `>PUSHW argv`
* `>LDYA args`
* `>SYSCALL Args2ArgV`
* ## RETURN VALUE
* A = Arg count
*\--------------------------------------
ARG.bInQuote .EQ ZPPtr3
*--------------------------------------
K.Args2ArgV jsr K.ExpandStr
bcs .9
>STYA ZPPtr1
stx .80+1
>PULLW ZPPtr2 Get target buffer
ldx #0 Arg Count
stz ARG.bInQuote
.1 jsr SHARED.GetCharPtr1
beq .8
cmp #C.SPACE
beq .1 skip leading spaces
.2 cmp #'"' found a quote ?
bne .3
lda ARG.bInQuote
eor #$ff
sta ARG.bInQuote
bra .7 skip quote and check next char
.3 cmp #C.SPACE
bne .6 regular char ...store...
bit ARG.bInQuote
bmi .6 between quotes... store space...
inx Found one arg !!!
lda #0 set this token End
jsr SHARED.PutCharPtr2
bra .1
.6 jsr SHARED.PutCharPtr2
.7 jsr SHARED.GetCharPtr1
bne .2
inx
.8 jsr SHARED.PutCharPtr2 set Argv[x] Ending 0
sta (ZPPtr2) set Array Ending 0
phx
.80 lda #$FF SELF MODIFIED
jsr K.FreeMem Discard expanded string
pla get back Arg Count
* clc
rts
.9 >RET 2 Discard target buffer
*/--------------------------------------
* # ArgV
* ## ASM
* **In:**

View File

@ -104,9 +104,9 @@ K.SYSCALL .DA 0 $00
.DA K.LoadFile
.DA K.LoadTxtFile
.DA K.GetMemStat
.DA 0
.DA K.StrVDup
.DA K.Args2ArgV $B0
.DA K.Str2StrV $B0
.DA K.ArgV
.DA K.ExpandStr
.DA K.FileSearch

View File

@ -32,7 +32,7 @@ K.ExecL sty .1+1
.1 ldy #$ff SELF MODIFIED
.2 lda #$ff SELF MODIFIED
jsr K.Args2ArgV
jsr K.Str2StrV
bcs .9
@ -756,6 +756,137 @@ K.GetMemStat >STYA ZPPtr1
bpl .3
clc
rts
*/--------------------------------------
* # StrVDup
* **In:**
* 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
ldx #0
ldy #0
.4 lda (ZPPtr1),y
.5 sta (ZPPtr2),y
beq .6
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
bne .5
sta (ZPPtr2),y Ending \0
txa
plx hMem
clc
.9 rts
*/--------------------------------------
* # Str2StrV
* Expand String and convert to ArgV List
* ## C
* short int str2strv(char* args, char* argv[])
* ## ASM
* `>PUSHW argv`
* `>LDYA args`
* `>SYSCALL Str2StrV`
* ## RETURN VALUE
* A = Arg count
*\--------------------------------------
ARG.bInQuote .EQ ZPPtr3
*--------------------------------------
K.Str2StrV jsr K.ExpandStr
bcs .9
>STYA ZPPtr1
stx .80+1
>PULLW ZPPtr2 Get target buffer
ldx #0 Arg Count
stz ARG.bInQuote
.1 jsr SHARED.GetCharPtr1
beq .8
cmp #C.SPACE
beq .1 skip leading spaces
.2 cmp #'"' found a quote ?
bne .3
lda ARG.bInQuote
eor #$ff
sta ARG.bInQuote
bra .7 skip quote and check next char
.3 cmp #C.SPACE
bne .6 regular char ...store...
bit ARG.bInQuote
bmi .6 between quotes... store space...
inx Found one arg !!!
lda #0 set this token End
jsr SHARED.PutCharPtr2
bra .1
.6 jsr SHARED.PutCharPtr2
.7 jsr SHARED.GetCharPtr1
bne .2
inx
.8 jsr SHARED.PutCharPtr2 set Argv[x] Ending 0
sta (ZPPtr2) set Array Ending 0
phx
.80 lda #$FF SELF MODIFIED
jsr K.FreeMem Discard expanded string
pla get back Arg Count
* clc
rts
.9 >RET 2 Discard target buffer
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PS