mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.9.1 : Code reorganization & move to CSTR
This commit is contained in:
parent
227a769d92
commit
d2f7de5190
Binary file not shown.
Binary file not shown.
@ -151,6 +151,7 @@ H.BIN.JMP .EQ 2
|
||||
H.BIN.CODE.LEN .EQ 8
|
||||
*
|
||||
H.BIN.EXE.DS.SIZE .EQ 10
|
||||
H.BIN.EXE.SS.SIZE .EQ 12
|
||||
H.BIN.EXE.REL.TABLE .EQ 16
|
||||
*
|
||||
H.BIN.DRV.HEADER.O .EQ 10
|
||||
@ -201,7 +202,13 @@ SYS.FTell .EQ $3C
|
||||
SYS.FEOF .EQ $3E
|
||||
SYS.Remove.YA .EQ $40
|
||||
SYS.Rename .EQ $42
|
||||
* .EQ $44-$4E
|
||||
* .EQ $44
|
||||
* .EQ $46
|
||||
|
||||
SYS.GetDevByID.A .EQ $48
|
||||
SYS.GetDevByName.YA .EQ $4A
|
||||
SYS.GetDevStatus.A .EQ $4C
|
||||
* .EQ $4E
|
||||
|
||||
* .EQ $50
|
||||
SYS.SScanF .EQ $52
|
||||
@ -223,11 +230,11 @@ SYS.ChOwn .EQ $6C
|
||||
SYS.ChGrp .EQ $6E
|
||||
*--------------------------------------
|
||||
* .EQ $70
|
||||
SYS.PStrCpy .EQ $72
|
||||
SYS.PStrCat .EQ $74
|
||||
SYS.PStrMatch .EQ $76
|
||||
SYS.PStrUprYA .EQ $78
|
||||
SYS.PStrLwrYA .EQ $7A
|
||||
SYS.StrCpy .EQ $72
|
||||
SYS.StrCat .EQ $74
|
||||
SYS.StrMatch .EQ $76
|
||||
SYS.StrUprYA .EQ $78
|
||||
SYS.StrLwrYA .EQ $7A
|
||||
SYS.StrFTime .EQ $7C
|
||||
* .EQ $7E
|
||||
|
||||
@ -241,9 +248,9 @@ SYS.CTime2Time .EQ $92
|
||||
SYS.PTime2Time .EQ $94
|
||||
* .EQ $96
|
||||
|
||||
SYS.GetDevByID.A .EQ $98
|
||||
SYS.GetDevByName.YA .EQ $9A
|
||||
SYS.GetDevStatus.A .EQ $9C
|
||||
* .EQ $98
|
||||
* .EQ $9A
|
||||
* .EQ $9C
|
||||
* .EQ $9E
|
||||
|
||||
SYS.ExecProcessNewEnvYA .EQ $A0
|
||||
|
@ -4,66 +4,63 @@ LOMEM $A00
|
||||
INC 1
|
||||
AUTO 6
|
||||
*/--------------------------------------
|
||||
* # ExpandPStr.YA
|
||||
* # ExpandStr.YA
|
||||
* ## In:
|
||||
* Y,A = PTR to String to Expand (PSTR)
|
||||
* Y,A = PTR to String to Expand (C-String)
|
||||
* ## Out:
|
||||
* X = hMem to Expanded String (PSTR)
|
||||
* X = hMem to Expanded String (C-String)
|
||||
* Y,A = PTR to Expanded String
|
||||
*\--------------------------------------
|
||||
K.ExpandPStr.YA stz K.ExpandPStr.hPStr Reset Intermediate string...
|
||||
K.ExpandStr.YA stz K.ExpandStr.hPStr Reset Intermediate string...
|
||||
|
||||
.1 >STYA ZPPtr2
|
||||
|
||||
stz K.Buf256 init Expanded String len=0
|
||||
stz K.ExpandPStr.bFound No var found yet
|
||||
stz K.ExpandStr.Len init Expanded String len=0
|
||||
stz K.ExpandStr.bFound No var found yet
|
||||
|
||||
stz K.ExpandPStr.bNoExp Reset no expand flag
|
||||
stz K.ExpandStr.bNoExp Reset no expand flag
|
||||
|
||||
ldy #0
|
||||
|
||||
.10 stz K.ExpandPStr.Name
|
||||
stz K.ExpandPStr.bInVar
|
||||
.10 stz K.ExpandStr.Name
|
||||
stz K.ExpandStr.bInVar
|
||||
|
||||
.11 tya
|
||||
cmp (ZPPtr2) End of PSTR?
|
||||
.11 lda (ZPPtr2),y End of CSTR?
|
||||
beq .8
|
||||
|
||||
iny
|
||||
lda (ZPPtr2),y
|
||||
|
||||
cmp #'''
|
||||
bne .21
|
||||
|
||||
lda K.ExpandPStr.bNoExp
|
||||
lda K.ExpandStr.bNoExp
|
||||
eor #$ff
|
||||
sta K.ExpandPStr.bNoExp toggle flag
|
||||
sta K.ExpandStr.bNoExp toggle flag
|
||||
bra .11
|
||||
|
||||
.21 bit K.ExpandPStr.bNoExp
|
||||
.21 bit K.ExpandStr.bNoExp
|
||||
bpl .23
|
||||
|
||||
.22 ldx K.Buf256
|
||||
inx
|
||||
beq .8
|
||||
.22 ldx K.ExpandStr.Len
|
||||
sta K.Buf256,x
|
||||
stx K.Buf256
|
||||
inx
|
||||
stx K.ExpandStr.Len
|
||||
bra .11
|
||||
|
||||
.23 ldx K.ExpandPStr.bInVar already in a var?
|
||||
.23 ldx K.ExpandStr.bInVar already in a var?
|
||||
bne .3 yes....
|
||||
|
||||
cmp #'$' no, found one ?
|
||||
bne .22 no, store....
|
||||
|
||||
sta K.ExpandPStr.bFound Toggle flag
|
||||
sta K.ExpandPStr.bInVar
|
||||
sta K.ExpandStr.bFound Toggle flag
|
||||
sta K.ExpandStr.bInVar
|
||||
|
||||
bra .11 skip this char
|
||||
|
||||
.3 cmp #'{' we are in var, "{" after "$"?
|
||||
bne .31
|
||||
ldx K.ExpandPStr.Name No char in var yet ?
|
||||
ldx K.ExpandStr.Name No char in var yet ?
|
||||
beq .11 normal, "${" syntax is ok,skip
|
||||
|
||||
bne .5 not allowed char in varname, end of var
|
||||
@ -71,59 +68,59 @@ K.ExpandPStr.YA stz K.ExpandPStr.hPStr Reset Intermediate string...
|
||||
.31 cmp #'}' end of var?
|
||||
beq .50
|
||||
|
||||
jsr K.ExpandPStrValidChar
|
||||
jsr K.ExpandStrValidChar
|
||||
bcc .32 yes, add to varname
|
||||
|
||||
ldx K.ExpandPStr.Name
|
||||
ldx K.ExpandStr.Name
|
||||
bne .5 varname has already chars...end of var
|
||||
|
||||
inx must be a $? or ?x.....go expand
|
||||
stx K.ExpandPStr.Name
|
||||
sta K.ExpandPStr.Name+1
|
||||
stx K.ExpandStr.Name
|
||||
sta K.ExpandStr.Name+1
|
||||
bra .51 go Expand....
|
||||
|
||||
.32 ldx K.ExpandPStr.Name
|
||||
.32 ldx K.ExpandStr.Name
|
||||
inx
|
||||
cpx #16
|
||||
beq .11 varname longer than 15....ignore
|
||||
sta K.ExpandPStr.Name,x
|
||||
stx K.ExpandPStr.Name
|
||||
sta K.ExpandStr.Name,x
|
||||
stx K.ExpandStr.Name
|
||||
bra .11
|
||||
|
||||
.5 dey last char was invalid...move back
|
||||
|
||||
.50 ldx K.ExpandPStr.Name
|
||||
.50 ldx K.ExpandStr.Name
|
||||
beq .52 var name is empty...start over
|
||||
|
||||
.51 phy save current index
|
||||
jsr K.ExpandPStrGetValue
|
||||
jsr K.ExpandStrGetValue
|
||||
ply restore index in string...
|
||||
.52 jmp .10 reset start flag and continue
|
||||
|
||||
.8 ldx K.ExpandPStr.Name end of PSTR,are we in a var?
|
||||
.8 ldx K.ExpandStr.Name end of PSTR,are we in a var?
|
||||
beq .80 no...exit...
|
||||
|
||||
jsr K.ExpandPStrGetValue yes, expand and add to STR
|
||||
jsr K.ExpandStrGetValue yes, expand and add to STR
|
||||
|
||||
.80 lda K.ExpandPStr.hPStr working from our temp string ?
|
||||
.80 lda K.ExpandStr.hPStr working from our temp string ?
|
||||
beq .81 no...
|
||||
|
||||
jsr K.FreeMem.A yes, discard....
|
||||
|
||||
.81 >LDYAI K.Buf256
|
||||
jsr K.NewPStr.YA
|
||||
jsr K.NewCStr.YA
|
||||
bcs .9
|
||||
stx K.ExpandPStr.hPStr save this as temp string, in case of recurse
|
||||
ldx K.ExpandPStr.bFound Did we expand something ?
|
||||
stx K.ExpandStr.hPStr save this as temp string, in case of recurse
|
||||
ldx K.ExpandStr.bFound Did we expand something ?
|
||||
beq .82
|
||||
jmp .1 Yes, start over with hPStr
|
||||
|
||||
.82 ldx K.ExpandPStr.hPStr
|
||||
.82 ldx K.ExpandStr.hPStr
|
||||
* or exit with Y,A from K.NewPStrYA
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.ExpandPStrValidChar
|
||||
K.ExpandStrValidChar
|
||||
cmp #'0'
|
||||
bcc .9
|
||||
cmp #'9'+1
|
||||
@ -142,11 +139,11 @@ K.ExpandPStrValidChar
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.ExpandPStrGetValue
|
||||
K.ExpandStrGetValue
|
||||
jsr ENV.ExpandSysVar
|
||||
bcc .9
|
||||
|
||||
>LDYAI K.ExpandPStr.Name
|
||||
>LDYAI K.ExpandStr.Name
|
||||
jsr K.GetEnv.YA
|
||||
bcs .9
|
||||
|
||||
@ -156,11 +153,12 @@ K.ExpandPStrGetValue
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.ExpandPStr.bNoExp .BS 1
|
||||
K.ExpandPStr.bInVar .BS 1
|
||||
K.ExpandPStr.bFound .BS 1
|
||||
K.ExpandPStr.hPStr .BS 1
|
||||
K.ExpandPStr.Name .BS 16
|
||||
K.ExpandStr.Len .BS 1
|
||||
K.ExpandStr.bNoExp .BS 1
|
||||
K.ExpandStr.bInVar .BS 1
|
||||
K.ExpandStr.bFound .BS 1
|
||||
K.ExpandStr.hPStr .BS 1
|
||||
K.ExpandStr.Name .BS 16
|
||||
*/--------------------------------------
|
||||
* # PutEnv.YA
|
||||
* ## In:
|
||||
@ -332,19 +330,19 @@ S.UnsetEnvPtr1 jsr ENV.FindVarPtr1
|
||||
*--------------------------------------
|
||||
* ENV.ExpandSysVar
|
||||
* In:
|
||||
* K.ExpandPStr.Name
|
||||
* K.ExpandStr.Name
|
||||
* Out:
|
||||
* CC: Found
|
||||
* Append VALUE to K.Buf256
|
||||
* CS: Not Found
|
||||
*--------------------------------------
|
||||
ENV.ExpandSysVar
|
||||
ldx K.ExpandPStr.Name
|
||||
ldx K.ExpandStr.Name
|
||||
cpx #1 is name 1 char?
|
||||
bne .9
|
||||
|
||||
ldy #1
|
||||
lda K.ExpandPStr.Name+1
|
||||
lda K.ExpandStr.Name+1
|
||||
cmp #'0'-1 $0...$9 ??
|
||||
bcc .1
|
||||
cmp #'9'+1
|
||||
|
@ -20,7 +20,7 @@ EVT.GetEvents lda #EvtMgr.Table
|
||||
bpl .10 no, regular poll
|
||||
|
||||
lda K.IrkMgr.VBLINT
|
||||
beq EVT.GetEvents.DEV no
|
||||
beq .3 no
|
||||
|
||||
dec K.IrkMgr.VBLINT
|
||||
bra .11
|
||||
@ -28,17 +28,17 @@ EVT.GetEvents lda #EvtMgr.Table
|
||||
.10 lda VBL get VLINE status
|
||||
tax
|
||||
eor EvtMgr.VBLState
|
||||
bpl EVT.GetEvents.DEV no change,no tick
|
||||
bpl .3 no change,no tick
|
||||
txa
|
||||
sta EvtMgr.VBLState save new
|
||||
bpl EVT.GetEvents.DEV Up2down transition,no tick
|
||||
bpl .3 Up2down transition,no tick
|
||||
|
||||
.11 inc A2osX.TIMER16
|
||||
bne .1
|
||||
inc A2osX.TIMER16+1
|
||||
|
||||
.1 dec EvtMgr.HZ.CNT
|
||||
bne EVT.GetEvents.DEV not yet 100ms
|
||||
bne .3 not yet 100ms
|
||||
|
||||
ldx A2osX.HZ
|
||||
stx EvtMgr.HZ.CNT
|
||||
@ -54,43 +54,8 @@ EVT.GetEvents lda #EvtMgr.Table
|
||||
ora #S.EVT.F.T1SEC
|
||||
|
||||
.2 sta (pEvent)
|
||||
jsr EVT.GetEvents.Add
|
||||
*--------------------------------------
|
||||
EVT.GetEvents.DEV
|
||||
* >LDYAI DevMgr.Table
|
||||
* >STYA pDev
|
||||
|
||||
* stz EvtMgr.Idx
|
||||
|
||||
*.1 ldy #S.DEV.F
|
||||
* lda (pDev),y get S.DEV.F
|
||||
* bit #S.DEV.F.EVENT
|
||||
* beq .2 EVENT enabled ?
|
||||
|
||||
* ldx #DEVMGR.GETEVENT
|
||||
|
||||
* jsr pDevJmp Call DRV GetEvent function
|
||||
* bcs .2 no event
|
||||
|
||||
* ldy #S.EVT.hDEV
|
||||
* lda EvtMgr.Idx
|
||||
* sta (pEvent),y
|
||||
|
||||
* jsr EVT.GetEvents.Add
|
||||
|
||||
* bcs .8 Event Q is full, exit now with CC
|
||||
|
||||
*.2 lda pDev
|
||||
* clc
|
||||
* adc #S.DEV
|
||||
* sta pDev
|
||||
* bcc .3
|
||||
* inc pDev+1
|
||||
*
|
||||
*.3 lda EvtMgr.Idx
|
||||
* inc EvtMgr.Idx
|
||||
* cmp DevMgr.Count
|
||||
* bne .1
|
||||
jsr EVT.GetEvents.Add
|
||||
.3
|
||||
sec
|
||||
lda EvtMgr.Count if 0, exit with CS (from cmp), and A=0 "no event"
|
||||
beq .9
|
||||
|
@ -95,43 +95,54 @@ K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandStr.YA
|
||||
*/--------------------------------------
|
||||
* # GetFullPath.YA
|
||||
* ## In :
|
||||
* Y,A = Filename (PSTR)
|
||||
* Y,A = Filename (C-String)
|
||||
* ## Out :
|
||||
* CC : success
|
||||
* Y,A = FullPath (PSTR)
|
||||
* Y,A = FullPath (C-String)
|
||||
* X = hMem of FullPath
|
||||
* CS : A = Error Code
|
||||
*\--------------------------------------
|
||||
K.GetFullPath.YA
|
||||
>STYA ZPPtr3 Ptr1 & 2 used by StrCpy
|
||||
lda (ZPPtr3)
|
||||
beq K.GetFullPath.YA.9
|
||||
|
||||
>STYA ZPPtr1
|
||||
stz K.Buf256
|
||||
|
||||
lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr3),y
|
||||
ldx #0
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #'/' full path starting with '/'?
|
||||
beq .1 yes, do not append to current prefix
|
||||
beq .2 yes, do not append to current prefix
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
jsr K.GetMemPtr.A
|
||||
>PUSHYA
|
||||
>PUSHWI K.Buf256
|
||||
>SYSCALL PStrCpy
|
||||
>STYA ZPPtr2
|
||||
|
||||
.1 >PUSHW ZPPtr3
|
||||
>PUSHWI K.Buf256
|
||||
>SYSCALL PStrCat
|
||||
K.GetFullPath.YA.NewStr
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPPtr2),y
|
||||
beq .2
|
||||
sta K.Buf256,x
|
||||
iny
|
||||
inx
|
||||
bne .1
|
||||
|
||||
.2 ldy #0
|
||||
|
||||
.3 lda (ZPPtr1),y
|
||||
beq .8
|
||||
sta K.Buf256,x
|
||||
iny
|
||||
inx
|
||||
bne .3
|
||||
|
||||
.8 stz K.Buf256,x
|
||||
>LDYAI K.Buf256
|
||||
jsr K.NewPStr.YA
|
||||
rts
|
||||
|
||||
K.GetFullPath.YA.9
|
||||
sec
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # LoadFile
|
||||
* ## In:
|
||||
|
@ -31,8 +31,8 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
jsr PrintFAX
|
||||
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK2
|
||||
lda RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
|
||||
>LDYAI A2osX.D2
|
||||
>STYA ZPPtr1
|
||||
@ -48,8 +48,8 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
jsr PrintFAX
|
||||
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK1
|
||||
lda RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
>LDYAI A2osX.D1
|
||||
>STYA ZPPtr1
|
||||
@ -65,8 +65,8 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
jsr PrintFAX
|
||||
|
||||
sta SETALTZP
|
||||
lda RRAMWRAMBNK1
|
||||
lda RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
>LDYAI A2osX.E0
|
||||
>STYA ZPPtr1
|
||||
@ -100,7 +100,7 @@ Kernel.Init2 >LDAXI MSG.Init2
|
||||
Kernel.Init3 sta SETALTZP
|
||||
bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
|
||||
|
||||
jsr MemMgrInit
|
||||
jsr PS0Init
|
||||
bcs *
|
||||
@ -147,6 +147,7 @@ Kernel.Init3 sta SETALTZP
|
||||
>LDYAI STARTUP.CMDLINE
|
||||
>SYSCALL ExpandStr.YA
|
||||
phx Save Expanded CMDLINE for discard
|
||||
|
||||
>SYSCALL CreateProcessYA
|
||||
bcs .9
|
||||
pla
|
||||
@ -168,7 +169,6 @@ Kernel.Init3 sta SETALTZP
|
||||
>LDYAI MSG.StartupErr
|
||||
>SYSCALL PrintF.YA
|
||||
bra * No need to discard Expanded CMDLINE
|
||||
|
||||
*--------------------------------------
|
||||
Kernel.Move ldy #0
|
||||
.1 inc ZPPtr3
|
||||
@ -768,7 +768,7 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0
|
||||
bne .1
|
||||
|
||||
>LDYAI K.ENV.SIZE get a buffer for ENV
|
||||
>SYSCALL GetMem0.YA make sure blank!!
|
||||
>SYSCALL GetMem0.YA make sure blank!!
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
@ -781,7 +781,7 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0
|
||||
bcs .9
|
||||
|
||||
>LDYAI K.Buf256
|
||||
jsr K.NewPStr.YA
|
||||
jsr K.NewCStr.YA
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
@ -818,8 +818,8 @@ MSG.IRQ >CSTR "-Interrupt Manager...\r\n"
|
||||
MSG.EVT >CSTR "-Event Manager...\r\n"
|
||||
MSG.FLT >CSTR "-Path Filter...\r\n"
|
||||
MSG.TSK >CSTR "-Task Manager...\r\n"
|
||||
MSG.Prefix >CSTR "Prefix:%S\r\n"
|
||||
MSG.Startup >CSTR "Executing Kernel Startup Script...\r\nCmd:%S\r\n"
|
||||
MSG.Prefix >CSTR "Prefix:%s\r\n"
|
||||
MSG.Startup >CSTR "Executing Kernel Startup Script...\r\nCmd:%s\r\n"
|
||||
MSG.StartupErr >CSTR "Failed : [$%h]\r\n"
|
||||
MSG.Init3.OK >CSTR "A2osX[Stage3]:Complete.\r\n"
|
||||
*--------------------------------------
|
||||
@ -850,7 +850,7 @@ I.ENV.A2osX >PSTR "A2OSX"
|
||||
I.ENV.PATH >PSTR "PATH=${A2OSX}SBIN/;${A2OSX}BIN/"
|
||||
I.ENV.LIB >PSTR "LIB=${A2OSX}LIB/"
|
||||
I.ENV.DRV >PSTR "DRV=${A2OSX}DRV/"
|
||||
STARTUP.CMDLINE >PSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP"
|
||||
STARTUP.CMDLINE >CSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP"
|
||||
*--------------------------------------
|
||||
MLIOPEN00 .DA #3
|
||||
.DA A2OSXCONF
|
||||
|
@ -48,9 +48,9 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
.DA K.Rename
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.GetDevByID.A
|
||||
.DA K.GetDevByName.YA
|
||||
.DA K.GetDevStatus.A
|
||||
.DA 0
|
||||
|
||||
.DA 0 $50
|
||||
@ -95,9 +95,9 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
.DA K.CTime2Time
|
||||
.DA K.PTime2Time
|
||||
.DA 0
|
||||
.DA K.GetDevByID.A
|
||||
.DA K.GetDevByName.YA
|
||||
.DA K.GetDevStatus.A
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
|
||||
.DA K.ExecProcessNewEnv.YA $A0
|
||||
@ -111,7 +111,7 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
|
||||
.DA K.GetArgC $B0
|
||||
.DA K.GetArg.A
|
||||
.DA K.ExpandPStr.YA
|
||||
.DA K.ExpandStr.YA
|
||||
.DA 0
|
||||
.DA K.PutEnv.YA
|
||||
.DA K.SetEnv
|
||||
@ -451,6 +451,36 @@ K.NewPStr.YA >STYA ZPPtr2
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
K.NewCStr.YA >STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
inc
|
||||
tay
|
||||
lda #0 Y,A = len of new string
|
||||
jsr K.GetMem.YA
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda (ZPPtr1)
|
||||
tay
|
||||
phy
|
||||
beq .2
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
dey
|
||||
sta (ZPPtr2),y
|
||||
bne .1
|
||||
|
||||
.2 ply
|
||||
lda #0
|
||||
sta (ZPPtr2),y
|
||||
|
||||
>LDYA ZPPtr1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.JMP
|
||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||
|
@ -32,6 +32,8 @@ K.CreateProcess.YA
|
||||
|
||||
sta .8+1
|
||||
|
||||
>DEBUG
|
||||
|
||||
jsr PS.Init
|
||||
bcc .8
|
||||
|
||||
@ -233,10 +235,10 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PS.Init >LDYA K.CreateProcess.CmdLine
|
||||
jsr PS.Str2StrArray.YA
|
||||
jsr PS.CmdLine2Args.YA
|
||||
bcs .9
|
||||
|
||||
phy save PTR to StrArray...
|
||||
phy save PTR to Args[0]...
|
||||
pha
|
||||
|
||||
txa
|
||||
@ -271,7 +273,24 @@ PS.Init >LDYA K.CreateProcess.CmdLine
|
||||
ldy #S.PS.hDS
|
||||
sta (ZPPtr3),y save DS hMem in TSKSLOT
|
||||
|
||||
.2
|
||||
.2 ldy #H.BIN.EXE.SS.SIZE+1
|
||||
lda (ZPPtr4),y Load DS.SIZE HI
|
||||
tax
|
||||
dey
|
||||
ora (ZPPtr4),y
|
||||
|
||||
beq * DS.SIZE=0!!!!
|
||||
|
||||
lda (ZPPtr4),y
|
||||
tay
|
||||
txa Y,A = DS.SIZE
|
||||
jsr K.GetMem0.YA
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
ldy #S.PS.hSS
|
||||
sta (ZPPtr3),y save DS hMem in TSKSLOT
|
||||
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
@ -354,8 +373,8 @@ PS.DupEnv.A jsr K.GetMemPtr.A
|
||||
clc
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # Str2StrArray.YA
|
||||
* Convert a CSTR (e.g. : command Line) to a Array of CSTRs (Args[])
|
||||
* # CmdLine2Args.YA
|
||||
* Convert a CSTR (e.g. : command Line) to Args[]
|
||||
* ## In:
|
||||
* Y,A = PTR to String
|
||||
* ## Out:
|
||||
@ -365,7 +384,7 @@ PS.DupEnv.A jsr K.GetMemPtr.A
|
||||
* CS : error
|
||||
* A = SYS error code
|
||||
*\--------------------------------------
|
||||
PS.Str2StrArray.YA
|
||||
PS.CmdLine2Args.YA
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1) Get mem size STRLEN+1
|
||||
inc
|
||||
|
@ -33,19 +33,19 @@ A2osX.D1 .PH $D000
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.DIRENT
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.PFT
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV
|
||||
.EP
|
||||
A2osX.D2 .PH $D000
|
||||
.DA #RRAMWRAMBNK2
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.STRING
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.STDLIB
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.TIME
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.PS
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.ARG
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.ENV
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.RUN
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.EVT
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.TSK
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.RUN
|
||||
.EP
|
||||
A2osX.E0 .PH $E000
|
||||
.INB /A2OSX.SRC/SYS/KERNEL.S.JMP
|
||||
|
Loading…
x
Reference in New Issue
Block a user