mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-08 08:33:37 +00:00
Kernel 0.93+
This commit is contained in:
parent
7cadb5b0bb
commit
046b4ae89e
|
@ -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
|
||||
|
|
|
@ -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.
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:**
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user