Kernel 0.92

This commit is contained in:
Rémy GIBERT 2019-01-18 16:06:44 +00:00
parent 76b49ce0bf
commit ad7ccd7f93
8 changed files with 90 additions and 65 deletions

View File

@ -15,8 +15,7 @@ AUTO 4,1 Enable MASM3 auto line num
.OR ZPBIN
ZS.START
* MyPtr .BS 2
ZS.END
.ED
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------

View File

@ -455,7 +455,7 @@ CL.CheckCmd ldy #$ff
txa
>STA.G CMD.hCmdLine
>LDYA L.ENV.PATH push ENVNAME=PATH for search
>LDYA L.ENV.PATH ENVNAME=PATH for search
>SYSCALL GetEnv get value for ENV=PATH
bcs .5 no PATH, try workdir

View File

@ -56,19 +56,22 @@ E.BADFTYPE .EQ $C8
.INB INC/MLI.I
.INB INC/MLI.E.I
*--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
ZPPtr3 .EQ ZPBIN+4
ZPCLBuf .EQ ZPBIN+6
ZPArgVBuf .EQ ZPBIN+8
ZPFileBufPtr .EQ ZPBIN+10
ZPCLBufPtr .EQ ZPBIN+12
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPPtr3 .BS 2
ZPCLBuf .BS 2
ZPArgVBuf .BS 2
ZPFileBufPtr .BS 2
ZPCLBufPtr .BS 2
.DO CSH=1
ZPCSHSymbols .EQ ZPBIN+14
ZPCSHData .EQ ZPBIN+16
ZPCSHValue .EQ ZPBIN+18
ZPCSHStack .EQ ZPBIN+20
ZPCSHSymbols .BS 2
ZPCSHData .BS 2
ZPCSHValue .BS 2
ZPCSHStack .BS 2
.FIN
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -80,12 +83,11 @@ CS.START cld
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DO CSH=1
.DA #22 ZP
.ELSE
.DA #14 ZP
.FIN
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table

View File

@ -21,7 +21,7 @@ BIN.R.Offset .BS 2
*--------------------------------------
K.LoadLib jsr BIN.FindLIB
bcs .9
>LDYAI K.Buf256
jsr BIN.Load Y,A = "/PATH/BIN"
bcs .9
@ -78,7 +78,7 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
jsr BIN.FindDRV
bcs .9
>LDYAI K.Buf256
jsr BIN.Load Y,A = "/PATH/BIN"
bcs .9
@ -113,34 +113,33 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
jsr K.FreeMem
pla
sec
rts
K.LoadDrv.RTS rts
*--------------------------------------
BIN.FindLIB ldx #0
.HS 2C BIT ABS
BIN.FindDRV ldx #2
.HS 2C BIT ABS
BIN.FindPATH ldx #4
>STYA BIN.CmdLine
>LDYA BIN.Find.ENV,x
jsr K.GetEnv get value for Search Path
bcs .9
bcs K.LoadDrv.RTS
>STYA ENV.SearchPath
>LDYA BIN.CmdLine
jsr K.FileSearch.YA find LIB/DRV in Search
bcs .9
>LDYAI K.Buf256
* clc
.9 rts
jmp ENV.FileSearch.YA find LIB/DRV in Search
*--------------------------------------
BIN.Find.ENV .DA .1
.DA .2
.DA .3
.1 .AZ "LIB"
.2 .AZ "DRV"
.3 .AZ "PATH"
*--------------------------------------
* BIN.Load
* in :

View File

@ -156,7 +156,7 @@ K.FileSearch pha
pla Y,A = filename
jsr K.FileSearch.YA
jsr ENV.FileSearch.YA
bcs .9
ldx #$ff
@ -174,7 +174,8 @@ K.FileSearch pha
bpl .3
.9 rts
K.FileSearch.YA >STYA .4+1
ENV.FileSearch.YA
>STYA .4+1
>LDYA ENV.SearchPath
jsr K.ExpandStr Y,A = Search Path, Expand it

View File

@ -422,6 +422,13 @@ K.GUIOSD.JMP sta SETREADAUX
sta CLRWRITEAUX
rts
*--------------------------------------
K.realpath.I.GO bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
jsr K.realpath.I
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.JMP
LOAD USR/SRC/SYS/KERNEL.S

View File

@ -51,7 +51,7 @@ K.ExecL sty .1+1
*/--------------------------------------
* # ExecV
* ## C
* `int exec(const char* argv[], short int flags);`
* `int execv(const char* argv[], short int flags);`
* ## ASM
* `>PUSHB flags`
* `>LDYA argv`
@ -205,27 +205,54 @@ PS.CreateChild ldx CORE.PSCount
clc Exit with A=PSID
.9 rts
*--------------------------------------
PS.Load >PUSHWI K.S.STAT
>LDYA PS.ArgV
>SYSCALL stat BANK 1
bcs .99
lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN
beq PS.LoadBIN
cmp #S.FI.T.TXT
bne .98
PS.Load ldy #$ff
.1 iny
lda (PS.ArgV),y
beq .2 no / in path...try search in PATH
cmp #'/'
bne .1
>LDYA PS.ArgV found /, some path specified, no search
jsr K.realpath.I.GO BANK1
bcs .99
>PUSHWI K.S.STAT
>LDYAI K.Buf256
>SYSCALL stat BANK 1
bcc .6
.99 rts
.2 >DEBUG
>LDYA PS.ArgV
jsr BIN.FindPATH Get fullpath in K.Buf256
bcs .99
.6 lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN
bne .7
>LDYAI K.Buf256
bra PS.LoadBIN
.7 cmp #S.FI.T.TXT
beq PS.Load.SCRIPT
* beq .10
* cmp #S.FI.T.SYS
* bra *
.10 jsr PS.LoadGetHeader
bcs .99
PS.Load.IBIN lda #E.IBIN
.HS 2C
PS.Load.IPATH lda #E.BADPATH
sec
PS.Load.RTS rts
PS.Load.SCRIPT jsr PS.LoadGetHeader
bcs PS.Load.RTS
>LDYAI PS.Load.ROOT
jsr K.GetEnv ZPPtr3 Trashed
bcs .97
bcs PS.Load.IPATH
>STYA .21+1
@ -240,7 +267,7 @@ PS.Load >PUSHWI K.S.STAT
.3 lda K.IOBuf+128,y
cmp PS.Load.HEADER,y
bne .98
bne PS.Load.IBIN
iny
cpy #3
bne .3
@ -258,25 +285,14 @@ PS.Load >PUSHWI K.S.STAT
.5 >PUSHWI K.S.STAT
>LDYAI K.IOBuf
>SYSCALL stat BANK 1
bcs .99
bcs PS.Load.RTS
lda PS.hMem Restore ZPPtr3 trashed by GetEnv
jsr K.GetMemPtr
>STYA ZPPtr3
>LDYAI K.IOBuf
bra PS.LoadBIN.YA
.97 lda #E.BADPATH
.HS 2C
.98 lda #E.IBIN
sec
.99 rts
PS.LoadBIN >LDYA PS.ArgV
PS.LoadBIN.YA jsr BIN.Load
>LDYAI K.IOBuf
*--------------------------------------
PS.LoadBIN jsr BIN.Load
bcs .9
>STYA ZPPtr4 save PTR to Code Segment

View File

@ -270,9 +270,10 @@ STDLIB.32.Clear ldx #3
* # RealPath
* Return the canonicalized absolute pathname
* ## C
* `unsigned short int realpath (const char* str);`
* `unsigned short int realpath (const char* str, char *resolvedpath);`
* ## ASM
* **In:**
* `>PUSHWI resolvedpath`
* `>LDYA str`
* `>SYSCALL realpath`
* ## RETURN VALUE
@ -396,7 +397,7 @@ K.realpath.I clc
.89 lda #$ff SELF MODIFIED
bpl .98
>LDYAI K.Buf256
>SYSCALL StrDup
>SYSCALL StrDup BANK 2
rts
.90 lda #E.BADPATH