Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-02-04 15:35:48 +01:00
parent 5fa8b09663
commit 0f42912755
8 changed files with 98 additions and 113 deletions

Binary file not shown.

View File

@ -59,10 +59,13 @@ CS.RUN >LDYA L.MSG0
>PUSHW L.MSG1 format
>PUSHB SessionID 1 byte SID
>PUSHB (ZPSessionPtr) 1 byte PRIVILEGE
ldy #S.SESSION.UID
>PUSHB (ZPSessionPtr),y 1 byte UID
>PUSHB (ZPSessionPtr) 1 byte PRIVILEGE
iny #S.SESSION.UID
>PUSHB (ZPSessionPtr),y 1 byte GID
lda ZPSessionPtr
clc
@ -78,7 +81,7 @@ CS.RUN >LDYA L.MSG0
jsr CS.RUN.GETIO
>PUSHYA 2 bytes DEV
>PUSHBI 7 total = 7 ... bytes
>PUSHBI 8 total = 8 ... bytes
>SYSCALL printf2
bcs .9
@ -119,8 +122,8 @@ CS.QUIT clc
rts
*--------------------------------------
CS.END
MSG0 .AZ "SID UID Privileges Name Dev"
MSG1 .AZ "%3d %3d %b %16s %s\r\n"
MSG0 .AZ "SID Privilege UID GID Name Dev"
MSG1 .AZ "%3d %b %3d %3d %16s %s\r\n"
*--------------------------------------
.DUMMY
.OR 0

View File

@ -31,7 +31,6 @@ CORE.PSCount .EQ $D1
pPs .EQ $D2
pEvent .EQ $D4
*--------------------------------------
pSession .EQ $D6
pCode .EQ $D8
pData .EQ $DA
pStack .EQ $DC
@ -39,7 +38,7 @@ pLocal .EQ $DE 10 Bytes
ZPBIN .EQ $E0 32 bytes
ZPBIN.SIZE .EQ 32
PSCTX.SIZE .EQ $100-pSession
PSCTX.SIZE .EQ $100-pCode
*--------------------------------------
* A2osX GLOBAL PAGE
* $BC00->$BC0F : Public Vetors
@ -539,13 +538,12 @@ S.PS.PC .EQ 21 WORD
S.PS.hSID .EQ 23
S.PS.ZP.SESSION .EQ 24
S.PS.ZP.CODE .EQ 26
S.PS.ZP.DATA .EQ 28
S.PS.ZP.STACK .EQ 30
S.PS.ZP.LOCAL .EQ 32
S.PS.ZP.CODE .EQ 24
S.PS.ZP.DATA .EQ 26
S.PS.ZP.STACK .EQ 28
S.PS.ZP.LOCAL .EQ 30
*
S.PS .EQ 66
S.PS .EQ 64
*--------------------------------------
* LIB Function Indexes
*--------------------------------------

View File

@ -65,7 +65,6 @@ L.MSG.PASSWORD .DA MSG.PASSWORD
L.MSG.BAD .DA MSG.BAD
L.MSG.CRLF .DA MSG.CRLF
L.MSG.BS .DA MSG.BS
L.SESSION.ROOT .DA SESSION.ROOT
L.ETCISSUE .DA ETCISSUE
L.ETCMOTD .DA ETCMOTD
L.SHELL .DA SHELL
@ -88,13 +87,13 @@ CS.RUN >LDYAI 33 Enough for HASH
* lda #0 ROOT user
>SYSCALL GetPWUID
bcc CS.RUN.AUTH
*--------------------------------------
CS.RUN.NOAUTH >LDYA L.MSG.NOAUTH
>LDYA L.MSG.NOAUTH
jsr CS.RUN.StrOut
bcs .9
jsr CS.RUN.SetRootSession
bcs .9
lda #1
sta ZPhSID
jmp CS.RUN.EXEC
.9 rts
@ -149,23 +148,6 @@ CS.RUN.AUTH lda #3
sec
.9 rts
*--------------------------------------
CS.RUN.SetRootSession
>LDYA L.SESSION.ROOT
>STYA ZPStrPtr
>LDYAI SESSION.ROOT.Size
>SYSCALL getmem
bcs .9
>STYA pSession
stx ZPhSID
ldy #SESSION.ROOT.Size-1
.1 lda (ZPStrPtr),y
sta (pSession),y
dey
bpl .1
* clc
.9 rts
*--------------------------------------
CS.RUN.SetUserSession
ldx #S.SESSION.NAME P+UID+GID
ldy #S.PW.NAME-1
@ -186,9 +168,8 @@ CS.RUN.SetUserSession
lda #0
>SYSCALL getmem
bcs .9
>STYA pSession
>STYA ZPStrPtr
>STYA ZPStrPtr
stx ZPhSID
* clc
@ -260,29 +241,33 @@ CS.RUN.CHECKPWD rol ZPbValidUser
CS.RUN.CHECK.9 rts
*--------------------------------------
CS.RUN.EXEC ldx #1
CS.RUN.EXEC
* ldx #1
.1 lda S.Table.hSession-1,x
beq .2
*.1 lda S.Table.hSession-1,x
* beq .2
inx
cpx #K.USR.MAX+1
bne .1
* inx
* cpx #K.USR.MAX+1
* bne .1
lda #E.OOH
* sec
rts
* lda #E.OOH
** sec
* rts
*.2 stx ZPUsrID
* txa
* ldy #S.PS.hSID
* sta (pPS),y
* lda ZPhSID
* ldx ZPUsrID
* sta S.Table.hSession-1,x
* ldy #S.PS.hStdIn
* lda (pPS),y
* sta S.Table.hFILE-1,x
.2 stx ZPUsrID
txa
ldy #S.PS.hSID
sta (pPS),y
lda ZPhSID
ldx ZPUsrID
sta S.Table.hSession-1,x
ldy #S.PS.hStdIn
lda (pPS),y
sta S.Table.hFILE-1,x
>LDYA L.ETCMOTD
jsr CS.RUN.DumpFile
jsr CS.CLEANUP
@ -293,11 +278,11 @@ CS.RUN.EXEC ldx #1
bcs .9
>SLEEP
ldx ZPUsrID
lda S.Table.hSession-1,x
stz S.Table.hSession-1,x
stz S.Table.hFILE-1,x
>SYSCALL freemem
* ldx ZPUsrID
* lda S.Table.hSession-1,x
* stz S.Table.hSession-1,x
* stz S.Table.hFILE-1,x
* >SYSCALL freemem
sec
.9 rts
@ -472,15 +457,6 @@ MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
ETCISSUE .AZ "${ROOT}etc/issue"
ETCMOTD .AZ "${ROOT}etc/motd"
SHELL .AZ "${SHELL}"
*--------------------------------------
SESSION.ROOT .DA #S.SESSION.P.ROOT
.DA #0 UID
.DA #0 GID
.AZ "root" NAME
.AZ "Root User" GECOS
.AZ "${ROOT}root/" DIR
.AZ "${ROOT}bin/sh" SHELL
SESSION.ROOT.Size .EQ *-SESSION.ROOT
*--------------------------------------
.DUMMY
.OR 0

View File

@ -318,20 +318,21 @@ CORE.DestroyEvent
dec CORE.EvtCount
.9 rts
*--------------------------------------
CORE.PSSelect ldy #S.PS.ZP.SESSION+PSCTX.SIZE-1
CORE.PSSelect ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
ldx #PSCTX.SIZE-1
.1 lda (pPs),y
sta pSession,x
sta pCode,x
dey
dex
bpl .1
rts
*--------------------------------------
CORE.PSLeave ldy #S.PS.ZP.SESSION+PSCTX.SIZE-1
ldx #PSCTX.SIZE-1
.1 lda pSession,x
CORE.PSLeave ldx #PSCTX.SIZE-1
ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
.1 lda pCode,x
sta (pPs),y
dey
dex

View File

@ -225,35 +225,27 @@ ENV.StrVars .AZ "LOGNAME"
.AZ "GECOS"
.AZ "HOME"
.AZ "SHELL"
.AZ "PWD"
.AZ "UID"
.AZ "GID"
.AZ "PWD"
.DA #0
*--------------------------------------
ENV.StrVarsJmp .DA ENV.StrVarsSession
.DA ENV.StrVarsSession
.DA ENV.StrVarsSession
.DA ENV.StrVarsSession
.DA ENV.StrVarsPWD
.DA ENV.StrVarsUID
.DA ENV.StrVarsGID
.DA ENV.StrVarsPWD
*--------------------------------------
ENV.StrVarsPWD ldy #S.PS.hCWD
lda (pPS),y
jsr K.GetMemPtr
jmp ENV.AddYAToBuf
*--------------------------------------
ENV.StrVarsUID ldy #S.SESSION.UID
.HS 2C
ENV.StrVarsGID ldy #S.SESSION.GID
lda (pSession),y
jmp ENV.SysVarsNum
ENV.StrVarsSession
lda pSession
jsr ENV.GetSession
lda ZPPtr3
clc
adc #S.SESSION.NAME
sta ZPPtr3
lda pSession+1
lda ZPPtr3+1
adc /S.SESSION.NAME
sta ZPPtr3+1
@ -269,6 +261,29 @@ ENV.StrVarsSession
jsr ENV.NextEnvP3Y
bra .1
*--------------------------------------
ENV.StrVarsUID ldx #S.SESSION.UID
.HS 2C
ENV.StrVarsGID ldx #S.SESSION.GID
jsr ENV.GetSession
txa
tay
lda (ZPPtr3),y
jmp ENV.SysVarsNum
*--------------------------------------
ENV.StrVarsPWD ldy #S.PS.hCWD
lda (pPS),y
jsr K.GetMemPtr
jmp ENV.AddYAToBuf
*--------------------------------------
ENV.GetSession ldy #S.PS.hSID
lda (pPS),y
tay
lda S.Table.hSession-1,y
jsr K.GetMemPtr
>STYA ZPPtr3
rts
*--------------------------------------
ENV.AddYAToBuf >STYA ZPPtr3
*--------------------------------------
ENV.AddP3ToBuf ldx ENV.BufLen

View File

@ -1051,25 +1051,23 @@ PwdMgrInit >LDYAI MSG.PWD
*--------------------------------------
.1 >LDYAI PwdMgr.ROOT.Size
jsr K.Getmem
>STYA pSession
>STYA ZPPtr1
stx S.Table.hSession
phy
ldy #S.PS.ZP.SESSION+1
sta (pPS),y
dey
pla
sta (pPS),y
lda #1
ldy #S.PS.hSID
sta (pPS),y
ldy #PwdMgr.ROOT.Size-1
.2 lda PwdMgr.ROOT,y
sta (pSession),y
dey
bpl .2
ldy #S.PS.hStdIn
lda (pPS),y
sta S.Table.hFile
lda #1
ldy #S.PS.hSID
sta (pPS),y
ldy #PwdMgr.ROOT.Size-1
.2 lda PwdMgr.ROOT,y
sta (ZPPtr1),y
dey
bpl .2
rts
*--------------------------------------
* Modified CHARGET/CHARGOT for ROM CALL

View File

@ -169,17 +169,11 @@ PS.CreateChild ldx #0
ldy #S.PS.hSID
lda (ZPPtr1),y
sta (PS.NewPSPtr),y
tax
lda S.Table.hSession-1,x
jsr K.GetMemPtr
phy
ldy #S.PS.ZP.SESSION+1
sta (PS.NewPSPtr),y
dey
pla
sta (PS.NewPSPtr),y
jsr Mem.IncRefCnt
jsr MEM.GetMemByID
jsr MEM.IncRefCnt
lda #S.PS.F.HOLD
bit PS.Flags