mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-05 23:30:15 +00:00
Kernel 0.92
This commit is contained in:
parent
76b49ce0bf
commit
ad7ccd7f93
@ -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)
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 :
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user