mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-25 04:30:59 +00:00
Kernel 0.93
This commit is contained in:
parent
e27211b92e
commit
d93db0b7ce
@ -113,7 +113,7 @@ CS.RUN.DUMP phx
|
||||
lda (ZPPSPtr),y
|
||||
>PUSHA Parent PID
|
||||
|
||||
ldy #S.PS.hUsr
|
||||
ldy #S.PS.hSID
|
||||
lda (ZPPSPtr),y
|
||||
>PUSHA
|
||||
|
||||
|
0
BIN/SU.S.txt
Normal file
0
BIN/SU.S.txt
Normal file
0
BIN/SUDO.S.txt
Normal file
0
BIN/SUDO.S.txt
Normal file
0
BIN/USERMOD.S.txt
Normal file
0
BIN/USERMOD.S.txt
Normal file
@ -57,9 +57,9 @@ CS.RUN >LDYA L.MSG0
|
||||
|
||||
lda USR.Table.hFile-1,x
|
||||
tax
|
||||
lda OF.Table.hPath-1,x
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
jsr CS.RUN.GETIO
|
||||
|
||||
>PUSHYA
|
||||
|
||||
ldx USRID
|
||||
@ -69,16 +69,20 @@ CS.RUN >LDYA L.MSG0
|
||||
|
||||
lda ZPPWPtr
|
||||
clc
|
||||
adc #19
|
||||
adc #S.USR.NAME
|
||||
tay
|
||||
lda ZPPWPtr+1
|
||||
adc #0
|
||||
adc /S.USR.NAME
|
||||
>PUSHYA
|
||||
|
||||
>PUSHB (ZPPWPtr)
|
||||
|
||||
ldy #S.USR.UID
|
||||
>PUSHB (ZPPWPtr),y
|
||||
|
||||
>PUSHB USRID
|
||||
|
||||
>PUSHBI 5
|
||||
>PUSHBI 7
|
||||
>LDYA L.MSG1
|
||||
>SYSCALL printf
|
||||
|
||||
@ -91,6 +95,26 @@ CS.RUN >LDYA L.MSG0
|
||||
sec we do not want to stay in memory
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GETIO lda OF.Table.hPath-1,x
|
||||
bne .1
|
||||
|
||||
lda OF.Table.hFD-1,x
|
||||
tax
|
||||
|
||||
lda Dev.Table-1,x
|
||||
|
||||
clc
|
||||
adc #S.FD.DEV
|
||||
tay
|
||||
lda Dev.Table,x
|
||||
|
||||
adc /S.FD.DEV
|
||||
|
||||
rts
|
||||
|
||||
.1 >SYSCALL GetMemPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.EVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -98,8 +122,8 @@ CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG0 .AZ "Usr Name Dev"
|
||||
MSG1 .AZ "%3d %16s %16s\r\n"
|
||||
MSG0 .AZ "Usr UID Privileges Name Dev"
|
||||
MSG1 .AZ "%3d %3d %b %16s %16s\r\n"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
@ -29,7 +29,7 @@ ZPLIB .EQ $40 32 bytes
|
||||
CORE.PSIndex .EQ $D0
|
||||
CORE.PSCount .EQ $D1
|
||||
|
||||
pUser .EQ $D2
|
||||
pSession .EQ $D2
|
||||
pEvent .EQ $D4
|
||||
pPs .EQ $D6
|
||||
*--------------------------------------
|
||||
@ -147,6 +147,8 @@ SEEK.SET .EQ $00
|
||||
SEEK.CUR .EQ $02
|
||||
SEEK.END .EQ $04
|
||||
*--------------------------------------
|
||||
P.SYSADMIN .EQ %10000000
|
||||
*--------------------------------------
|
||||
* A2osX.SYSCALL Functions Indexes
|
||||
*--------------------------------------
|
||||
SYS.GetMemStat .EQ $00
|
||||
@ -514,7 +516,7 @@ S.PS.RC .EQ 13
|
||||
S.PS.ARGC .EQ 14
|
||||
S.PS.hARGV .EQ 15
|
||||
|
||||
S.PS.hUsr .EQ 16
|
||||
S.PS.hSID .EQ 16
|
||||
|
||||
S.PS.A .EQ 17
|
||||
S.PS.X .EQ 18
|
||||
@ -633,5 +635,15 @@ S.PW.SHELL .EQ 182 64+1
|
||||
*
|
||||
S.PW .EQ 247
|
||||
*--------------------------------------
|
||||
S.USR.PRIV .EQ 0
|
||||
S.USR.UID .EQ 1
|
||||
S.USR.GID .EQ 2
|
||||
S.USR.PASSWD .EQ 3
|
||||
S.USR.NAME .EQ 20
|
||||
*S.USR.GECOS .EQ 0
|
||||
*S.USR.DIR .EQ 0
|
||||
*S.USR.SHELL .EQ 0
|
||||
*
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/A2OSX.I
|
||||
|
@ -21,8 +21,8 @@ PS.Table.Stats .EQ $13E0 K.PS.MAX
|
||||
OF.Table.hPath .EQ $1400 K.OF.MAX
|
||||
OF.Table.hFD .EQ $1420 K.OF.MAX
|
||||
*--------------------------------------
|
||||
USR.Table.hPW .EQ $1440 K.USR.MAX
|
||||
USR.Table.hFile .EQ $1450 K.USR.MAX
|
||||
S.Table.hPW .EQ $1440 K.USR.MAX
|
||||
S.Table.hFile .EQ $1450 K.USR.MAX
|
||||
*--------------------------------------
|
||||
A2osX.EndTables .EQ $1460
|
||||
*--------------------------------------
|
||||
|
139
SBIN/LOGIN.S.txt
139
SBIN/LOGIN.S.txt
@ -7,11 +7,16 @@ NEW
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBCRYPT.I
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPUsrID .BS 1
|
||||
ZPUsrPtr .BS 2
|
||||
ZPSessionPtr .BS 2
|
||||
ZPShellPtr .BS 2
|
||||
ZPRetryCnt .BS 1
|
||||
ZPbValidUser .BS 1
|
||||
|
||||
@ -45,17 +50,14 @@ CS.START cld
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.MSG.NOPASSWD .DA MSG.NOPASSWD
|
||||
L.MSG.NOAUTH .DA MSG.NOAUTH
|
||||
L.LIBCRYPT .DA LIBCRYPT
|
||||
L.MSG.LOGIN .DA MSG.LOGIN
|
||||
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.ENV.SHELL .DA ENV.SHELL
|
||||
L.SHELL .DA SHELL
|
||||
L.ENV.HOME .DA ENV.HOME
|
||||
L.HOME .DA HOME
|
||||
L.USR.ROOT .DA USR.ROOT
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
@ -66,17 +68,8 @@ CS.RUN >PUSHW pData PW
|
||||
>SYSCALL GetPWUID
|
||||
bcc CS.RUN.AUTH
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.NOPASSWD
|
||||
>SYSCALL printf
|
||||
bcs CS.RUN.9
|
||||
jmp CS.RUN.NOAUTH
|
||||
|
||||
jsr CS.RUN.SETENV
|
||||
bcs CS.RUN.9
|
||||
|
||||
>PUSHBI S.PS.F.HOLD
|
||||
>LDYA L.SHELL
|
||||
>SYSCALL ExecL
|
||||
CS.RUN.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.AUTH >LDYA L.LIBCRYPT
|
||||
@ -140,16 +133,8 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
|
||||
* sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LOGIN jsr CS.RUN.SETENV
|
||||
bcs .9
|
||||
|
||||
>PUSHBI S.PS.F.HOLD
|
||||
>LDYA L.SHELL
|
||||
>SYSCALL ExecL
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.CHECK rol ZPbValidUser
|
||||
bcs .9
|
||||
bcs CS.RUN.CHECK.9
|
||||
|
||||
>PUSHW ZPGetlinePtr
|
||||
>PUSHW ZPGetlinePtr
|
||||
@ -159,20 +144,96 @@ CS.RUN.CHECK rol ZPbValidUser
|
||||
>LDYA ZPGetlinePtr
|
||||
>SYSCALL strcmp
|
||||
|
||||
CS.RUN.CHECK.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.NOAUTH >PUSHBI 0
|
||||
>LDYA L.MSG.NOAUTH
|
||||
>SYSCALL printf
|
||||
bcs CS.RUN.CHECK.9
|
||||
|
||||
>LDYA L.USR.ROOT
|
||||
|
||||
CS.RUN.LOGIN jsr CS.RUN.SETUSER
|
||||
bcs .9
|
||||
|
||||
>PUSHBI S.PS.F.HOLD
|
||||
|
||||
lda ZPUsrPtr
|
||||
clc
|
||||
adc #S.USR.NAME
|
||||
sta ZPUsrPtr
|
||||
lda ZPUsrPtr+1
|
||||
adc /S.USR.NAME
|
||||
sta ZPUsrPtr+1
|
||||
|
||||
ldx #3 Skip NAME,GECOS,DIR
|
||||
|
||||
.1 ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPUsrPtr),y
|
||||
bne .2
|
||||
tya
|
||||
sec
|
||||
adc ZPUsrPtr
|
||||
sta ZPUsrPtr
|
||||
bcc .3
|
||||
inc ZPUsrPtr+1
|
||||
.3 dex
|
||||
bne .1
|
||||
|
||||
>LDYA ZPUsrPtr
|
||||
>SYSCALL ExecL
|
||||
bcs .9
|
||||
|
||||
ldx ZPUsrID
|
||||
lda S.Table.hPW-1,x
|
||||
stz S.Table.hPW-1,x
|
||||
stz S.Table.hFILE-1,x
|
||||
>SYSCALL freemem
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SETENV >PUSHW L.HOME
|
||||
>LDYA L.ENV.HOME
|
||||
>SYSCALL setenv
|
||||
CS.RUN.SETUSER >STYA ZPUsrPtr
|
||||
|
||||
ldx #1
|
||||
|
||||
.1 lda S.Table.hPW-1,x
|
||||
bne .7
|
||||
|
||||
stx ZPUsrID
|
||||
txa
|
||||
|
||||
ldy #S.PS.hSID
|
||||
sta (pPS),y
|
||||
|
||||
>LDYAI USR.ROOT.Size
|
||||
>SYSCALL getmem
|
||||
bcs .9
|
||||
>STYA ZPSessionPtr
|
||||
|
||||
>PUSHW L.SHELL
|
||||
>LDYA L.ENV.SHELL
|
||||
>SYSCALL setenv
|
||||
bcs .9
|
||||
txa
|
||||
ldx ZPUsrID
|
||||
sta S.Table.hPW-1,x
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
sta S.Table.hFILE-1,x
|
||||
|
||||
ldy #USR.ROOT.Size-1
|
||||
|
||||
.2 lda (ZPUsrPtr),y
|
||||
sta (ZPSessionPtr),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.7 inx
|
||||
cpx #K.USR.MAX+1
|
||||
bne .1
|
||||
* sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT
|
||||
@ -249,18 +310,24 @@ CS.END
|
||||
*--------------------------------------
|
||||
LIBCRYPT .AZ "libcrypt"
|
||||
hLIBCRYPT .BS 1
|
||||
MSG.NOPASSWD .AS "\r\n\r\nA2osX-Login:No ETC/PASSWD file present, Logged as ROOT.\r\n"
|
||||
MSG.NOAUTH .AS "\r\n\r\nA2osX-Login:No ETC/PASSWD file present, Logged as ROOT.\r\n"
|
||||
.AS "Consider adding ROOT password with USERADD command.\r\n"
|
||||
MSG.CRLF .AZ "\r\n"
|
||||
MSG.LOGIN .AZ "\r\nlogin:"
|
||||
MSG.PASSWORD .AZ "\r\npassword:"
|
||||
MSG.BAD .AZ "Bad user or password\r\n"
|
||||
MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
|
||||
ENV.SHELL .AZ "SHELL"
|
||||
ENV.HOME .AZ "HOME"
|
||||
SHELL .AZ "${ROOT}BIN/SH"
|
||||
HOME .AZ "${ROOT}ROOT/"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
USR.ROOT .DA #P.SYSADMIN
|
||||
.DA #0 UID
|
||||
.DA #0 GID
|
||||
.BS 17 PASSWD
|
||||
.AZ "ROOT" NAME
|
||||
.AZ "Root User" GECOS
|
||||
.AZ "${ROOT}ROOT/" DIR
|
||||
.AZ "${ROOT}BIN/SH" SHELL
|
||||
USR.ROOT.Size .EQ *-USR.ROOT
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
@ -299,10 +299,7 @@ CORE.Dispatch stz CORE.PSIndex
|
||||
cpx CORE.PSCount
|
||||
bne .1
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* X unmodified
|
||||
@ -395,6 +392,13 @@ CORE.PSSelect ldy #S.PS.ZP+ZPBIN.SIZE-1
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldy #S.PS.hSID
|
||||
lda (pPs),y
|
||||
tax
|
||||
lda S.Table.hPW-1,x
|
||||
jsr K.GetmemPtr
|
||||
>STYA pSession
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.PSLeave ldy #S.PS.ZP+ZPBIN.SIZE-1
|
||||
|
@ -532,20 +532,63 @@ ENV.SysVarsJmp .DA ENV.SysVarsArgs
|
||||
.DA ENV.SysVarsPID
|
||||
.DA ENV.SysVarsCPID
|
||||
*--------------------------------------
|
||||
ENV.StrVars >PSTR "PWD"
|
||||
ENV.StrVars >PSTR "USERNAME"
|
||||
>PSTR "GECOS"
|
||||
>PSTR "HOME"
|
||||
>PSTR "SHELL"
|
||||
>PSTR "PWD"
|
||||
>PSTR "UID"
|
||||
>PSTR "GID"
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
ENV.StrVarsJmp .DA ENV.StrVarsPWD
|
||||
ENV.StrVarsJmp .DA ENV.StrVarsSession
|
||||
.DA ENV.StrVarsSession
|
||||
.DA ENV.StrVarsSession
|
||||
.DA ENV.StrVarsSession
|
||||
.DA ENV.StrVarsPWD
|
||||
.DA ENV.StrVarsUID
|
||||
.DA ENV.StrVarsGID
|
||||
*--------------------------------------
|
||||
ENV.StrVarsPWD ldy #S.PS.hPREFIX
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
jmp ENV.AddYAToBuf
|
||||
*--------------------------------------
|
||||
ENV.StrVarsUID ldy #S.PS.hUsr
|
||||
ENV.StrVarsUID ldy #S.USR.UID
|
||||
.HS 2C
|
||||
ENV.StrVarsGID ldy #S.USR.GID
|
||||
lda (pSession),y
|
||||
bra ENV.SysVarsNum
|
||||
ENV.StrVarsSession
|
||||
>DEBUG
|
||||
|
||||
lda pSession
|
||||
clc
|
||||
adc #S.USR.NAME
|
||||
sta ZPPtr3
|
||||
lda pSession+1
|
||||
adc /S.USR.NAME
|
||||
sta ZPPtr3+1
|
||||
|
||||
.1 dex
|
||||
dex
|
||||
bmi .3
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr3),y
|
||||
bne .2
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPtr3
|
||||
sta ZPPtr3
|
||||
bcc .1
|
||||
inc ZPPtr3+1
|
||||
bra .1
|
||||
|
||||
.3 jmp ENV.AddP3ToBuf
|
||||
*--------------------------------------
|
||||
ENV.SysVarsArgC ldy #S.PS.ARGC
|
||||
.HS 2C
|
||||
@ -558,7 +601,7 @@ ENV.SysVarsPID ldy #S.PS.PID
|
||||
ENV.SysVarsCPID ldy #S.PS.CPID
|
||||
lda (pPS),y
|
||||
|
||||
stz .2+1
|
||||
ENV.SysVarsNum stz .2+1
|
||||
stz .3+1
|
||||
|
||||
ldx #8
|
||||
|
@ -336,7 +336,7 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||
|
||||
ldx #K.USR.MAX*2-1
|
||||
|
||||
.6 stz USR.Table.hPW,x
|
||||
.6 stz S.Table.hPW,x
|
||||
dex
|
||||
bpl .6
|
||||
|
||||
@ -1088,23 +1088,24 @@ PwdMgrInit >LDYAI MSG.PWD
|
||||
*--------------------------------------
|
||||
.1 >LDYAI PwdMgr.ROOT.Size
|
||||
jsr K.Getmem
|
||||
>STYA pUser
|
||||
stx USR.Table.hPW
|
||||
>STYA pSession
|
||||
stx S.Table.hPW
|
||||
|
||||
ldy #PwdMgr.ROOT.Size-1
|
||||
|
||||
.2 lda PwdMgr.ROOT,y
|
||||
sta (pUser),y
|
||||
sta (pSession),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
|
||||
sta USR.Table.hFile
|
||||
sta S.Table.hFile
|
||||
rts
|
||||
*--------------------------------------
|
||||
PwdMgr.ROOT .DA #0 UID
|
||||
PwdMgr.ROOT .DA #P.SYSADMIN
|
||||
.DA #0 UID
|
||||
.DA #0 GID
|
||||
.BS 17 PASSWD
|
||||
.AZ "ROOT" NAME
|
||||
|
@ -169,6 +169,10 @@ PS.CreateChild ldx #0
|
||||
cpy #S.PS.hStdErr+1
|
||||
bne .81
|
||||
|
||||
ldy #S.PS.hSID
|
||||
lda (pPs),y
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
lda #S.PS.F.NOHUP
|
||||
bit PS.Flags
|
||||
bne .5
|
||||
|
@ -55,7 +55,6 @@ A2osX.D2 .PH $D000
|
||||
.INB USR/SRC/SYS/KERNEL.S.TIME
|
||||
.INB USR/SRC/SYS/KERNEL.S.BIN
|
||||
.INB USR/SRC/SYS/KERNEL.S.PS
|
||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||
.INB USR/SRC/SYS/KERNEL.S.ENV
|
||||
.INB USR/SRC/SYS/KERNEL.S.MATH
|
||||
.EP
|
||||
@ -68,6 +67,7 @@ A2osX.E0 .PH $E000
|
||||
.INB USR/SRC/SYS/KERNEL.S.PFT
|
||||
.INB USR/SRC/SYS/KERNEL.S.IO
|
||||
********* TMP ***** go to A2osX.D2
|
||||
.INB USR/SRC/SYS/KERNEL.S.ARG
|
||||
.INB USR/SRC/SYS/KERNEL.S.PWD
|
||||
.LIST ON
|
||||
DevMgr.FreeMem .EQ *
|
||||
|
Loading…
Reference in New Issue
Block a user