From 0f429127551af401c756138f786515100662dfb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 4 Feb 2020 15:35:48 +0100 Subject: [PATCH] Kernel 0.93++ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/WHO.S.txt | 11 +++-- INC/A2osX.I.txt | 14 +++--- SBIN/LOGIN.S.txt | 92 +++++++++++++++------------------------ SYS/KERNEL.S.CORE.txt | 11 ++--- SYS/KERNEL.S.ENV.txt | 43 ++++++++++++------ SYS/KERNEL.S.INIT.txt | 28 ++++++------ SYS/KERNEL.S.PS.txt | 12 ++--- 8 files changed, 98 insertions(+), 113 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 18376a2564c3f638715a639def2d0e655429f6e2..c964a5f9785d0e33243c68cfebdefe27ef1b4306 100644 GIT binary patch delta 37110 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 D;-#2c delta 37480 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 G-v0tEtrMRB diff --git a/BIN/WHO.S.txt b/BIN/WHO.S.txt index f52bb296..40f1679b 100644 --- a/BIN/WHO.S.txt +++ b/BIN/WHO.S.txt @@ -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 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 0983c8a3..b7f6ec2f 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 *-------------------------------------- diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index c80e541e..b70f8262 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -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 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 0aa7cdfe..1e43a31e 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -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 diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index f29964ce..615a4f45 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 17868ab7..1abae40a 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -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 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index d5eae53c..76e87149 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -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