mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-22 16:40:09 +00:00
Kernel 0.93
This commit is contained in:
parent
5aa1fae67a
commit
e27211b92e
@ -40,7 +40,7 @@ CS.START cld
|
||||
.DA #0
|
||||
.DA CS.END-CS.START CS
|
||||
.DA DS.END-DS.START DS
|
||||
.DA #16 SS
|
||||
.DA #64 SS
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
|
@ -533,7 +533,7 @@ Mod2CSTR ldy #S.STAT.MODE+1
|
||||
|
||||
ldy #S.STAT.MODE
|
||||
lda (ZPFileStat),y
|
||||
|
||||
|
||||
ldy #MOD+1
|
||||
|
||||
.1 lsr
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
@ -114,7 +113,7 @@ CS.RUN.DUMP phx
|
||||
lda (ZPPSPtr),y
|
||||
>PUSHA Parent PID
|
||||
|
||||
ldy #S.PS.UID
|
||||
ldy #S.PS.hUsr
|
||||
lda (ZPPSPtr),y
|
||||
>PUSHA
|
||||
|
||||
@ -205,7 +204,7 @@ MSG0 .AZ "\e[7lID CPU\% Flags UID PID Command Line\r\n"
|
||||
MSG1 .AZ "%03d %3d\% %s %03d %03d"
|
||||
MSG2 .AZ " %s"
|
||||
MSG3 .AZ "\r\n"
|
||||
MSG.FLAGS .AS "IRQDHSed"
|
||||
MSG.FLAGS .AS "IRQDHSEN"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CMD.NOHUP >LDA.G CORE.PSFlags
|
||||
@ -319,7 +318,7 @@ CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||
jsr IO.Pipe.Out
|
||||
bcs .9
|
||||
|
||||
>PUSHBI S.PS.F.DUPENV
|
||||
>PUSHBI 0
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL execl
|
||||
bcs .9
|
||||
@ -1027,7 +1026,7 @@ FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||
jsr IO.Pipe.Out
|
||||
bcs .9
|
||||
|
||||
>PUSHBI S.PS.F.DUPENV
|
||||
>PUSHBI 0
|
||||
>LDYA ZPArgVBufPtr
|
||||
>SYSCALL execl
|
||||
bcs .9
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CORE.Init >LDYAI 256
|
||||
@ -61,7 +60,7 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
||||
lda #0 Reset ArgV Buffer
|
||||
sta (ZPArgVBuf)
|
||||
|
||||
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
lda #S.PS.F.HOLD
|
||||
>STA.G CORE.PSFlags
|
||||
|
||||
lda #$ff
|
||||
|
112
BIN/WHO.S.txt
Normal file
112
BIN/WHO.S.txt
Normal file
@ -0,0 +1,112 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF BIN/WHO
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
USRID .BS 1
|
||||
ZPPWPtr .BS 2
|
||||
ZS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
CS.START cld
|
||||
jmp (.1,x)
|
||||
.DA #$61 6502,Level 1 (65c02)
|
||||
.DA #1 BIN Layout Version 1
|
||||
.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
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.EVENT
|
||||
.DA CS.QUIT
|
||||
L.MSG0 .DA MSG0
|
||||
L.MSG1 .DA MSG1
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LDYA L.MSG0
|
||||
>SYSCALL puts
|
||||
|
||||
ldx #1
|
||||
stx USRID
|
||||
|
||||
>DEBUG
|
||||
|
||||
.1 lda USR.Table.hPW-1,x
|
||||
beq .7
|
||||
|
||||
lda USR.Table.hFile-1,x
|
||||
tax
|
||||
lda OF.Table.hPath-1,x
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
|
||||
ldx USRID
|
||||
lda USR.Table.hPW-1,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPWPtr
|
||||
|
||||
lda ZPPWPtr
|
||||
clc
|
||||
adc #19
|
||||
tay
|
||||
lda ZPPWPtr+1
|
||||
adc #0
|
||||
>PUSHYA
|
||||
|
||||
|
||||
>PUSHB USRID
|
||||
|
||||
>PUSHBI 5
|
||||
>LDYA L.MSG1
|
||||
>SYSCALL printf
|
||||
|
||||
.7 inc USRID
|
||||
ldx USRID
|
||||
cpx #K.USR.MAX+1
|
||||
bne .1
|
||||
|
||||
.8 lda #0 tell TSKMGR that all done ok, but
|
||||
sec we do not want to stay in memory
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.EVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG0 .AZ "Usr Name Dev"
|
||||
MSG1 .AZ "%3d %16s %16s\r\n"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/WHO.S
|
||||
ASM
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
K.VER .EQ $5D00 93.0
|
||||
K.ENV.SIZE .EQ 256
|
||||
@ -20,17 +19,17 @@ K.OF.MAX .EQ 32
|
||||
K.EVT.MAX .EQ 4
|
||||
K.SCR.MAX .EQ 6
|
||||
K.TTY.MAX .EQ 4
|
||||
K.USR.MAX .EQ 16
|
||||
*--------------------------------------
|
||||
ZPDRV .EQ $20 32 bytes
|
||||
ZPLIB .EQ $40 32 bytes
|
||||
*--------------------------------------
|
||||
* PS Context : 48 bytes MAX
|
||||
*--------------------------------------
|
||||
CORE.EvtIndex .EQ $D0
|
||||
CORE.EvtCount .EQ $D1
|
||||
CORE.PSIndex .EQ $D2
|
||||
CORE.PSCount .EQ $D3
|
||||
CORE.PSIndex .EQ $D0
|
||||
CORE.PSCount .EQ $D1
|
||||
|
||||
pUser .EQ $D2
|
||||
pEvent .EQ $D4
|
||||
pPs .EQ $D6
|
||||
*--------------------------------------
|
||||
@ -491,7 +490,6 @@ S.FD.PIPE .EQ 10
|
||||
* PS STRUCT
|
||||
*--------------------------------------
|
||||
S.PS.F .EQ 0
|
||||
S.PS.F.NOHUP .EQ %10000000
|
||||
S.PS.F.INIT .EQ %10000000
|
||||
S.PS.F.RUN .EQ %01000000
|
||||
S.PS.F.QUIT .EQ %00100000
|
||||
@ -499,7 +497,7 @@ S.PS.F.DOEVENT .EQ %00010000
|
||||
S.PS.F.HOLD .EQ %00001000
|
||||
S.PS.F.SLEEP .EQ %00000100
|
||||
S.PS.F.EVENT .EQ %00000010
|
||||
S.PS.F.DUPENV .EQ %00000001
|
||||
S.PS.F.NOHUP .EQ %00000001
|
||||
S.PS.PPID .EQ 1
|
||||
S.PS.PID .EQ 2
|
||||
S.PS.CPID .EQ 3
|
||||
@ -516,7 +514,7 @@ S.PS.RC .EQ 13
|
||||
S.PS.ARGC .EQ 14
|
||||
S.PS.hARGV .EQ 15
|
||||
|
||||
S.PS.UID .EQ 16
|
||||
S.PS.hUsr .EQ 16
|
||||
|
||||
S.PS.A .EQ 17
|
||||
S.PS.X .EQ 18
|
||||
@ -580,12 +578,15 @@ S.STAT.MODE .EQ 0
|
||||
S.STAT.MODE.XO .EQ $0001
|
||||
S.STAT.MODE.WO .EQ $0002
|
||||
S.STAT.MODE.RO .EQ $0004
|
||||
S.STAT.MODE.FO .EQ $0007
|
||||
S.STAT.MODE.XG .EQ $0008
|
||||
S.STAT.MODE.WG .EQ $0010
|
||||
S.STAT.MODE.RG .EQ $0020
|
||||
S.STAT.MODE.FG .EQ $0038
|
||||
S.STAT.MODE.XU .EQ $0040
|
||||
S.STAT.MODE.WU .EQ $0080
|
||||
S.STAT.MODE.RU .EQ $0100
|
||||
S.STAT.MODE.FU .EQ $01C0
|
||||
*S.STAT.MODE.SST .EQ $0200
|
||||
*S.STAT.MODE.SGID .EQ $0400
|
||||
*S.STAT.MODE.SUID .EQ $0800
|
||||
|
@ -21,7 +21,10 @@ PS.Table.Stats .EQ $13E0 K.PS.MAX
|
||||
OF.Table.hPath .EQ $1400 K.OF.MAX
|
||||
OF.Table.hFD .EQ $1420 K.OF.MAX
|
||||
*--------------------------------------
|
||||
A2osX.EndTables .EQ $1440
|
||||
USR.Table.hPW .EQ $1440 K.USR.MAX
|
||||
USR.Table.hFile .EQ $1450 K.USR.MAX
|
||||
*--------------------------------------
|
||||
A2osX.EndTables .EQ $1460
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE INC/KERNEL.I
|
||||
|
227
SBIN/LOGIN.S.txt
227
SBIN/LOGIN.S.txt
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
@ -8,11 +7,19 @@ AUTO 4,1
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/LIBCRYPT.I
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPPTR1 .BS 2
|
||||
ZPRetryCnt .BS 1
|
||||
ZPbValidUser .BS 1
|
||||
|
||||
ZPhGetLine .BS 1
|
||||
ZPGetLinePtr .BS 2
|
||||
ZPbGetLineSecret .BS 1
|
||||
ZPGetLineLen .BS 1
|
||||
ZPGetLineMax .BS 1
|
||||
ZS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
@ -28,7 +35,7 @@ CS.START cld
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data SegmentSize
|
||||
.DA #16 Stack Size
|
||||
.DA #64 Stack Size
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -42,8 +49,9 @@ L.MSG.NOPASSWD .DA MSG.NOPASSWD
|
||||
L.LIBCRYPT .DA LIBCRYPT
|
||||
L.MSG.LOGIN .DA MSG.LOGIN
|
||||
L.MSG.PASSWORD .DA MSG.PASSWORD
|
||||
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||
L.MSG.ECHODEL .DA MSG.ECHODEL
|
||||
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
|
||||
@ -53,7 +61,7 @@ L.HOME .DA HOME
|
||||
CS.INIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >PUSHEA.G PW
|
||||
CS.RUN >PUSHW pData PW
|
||||
lda #0
|
||||
>SYSCALL GetPWUID
|
||||
bcc CS.RUN.AUTH
|
||||
@ -66,7 +74,7 @@ CS.RUN >PUSHEA.G PW
|
||||
jsr CS.RUN.SETENV
|
||||
bcs CS.RUN.9
|
||||
|
||||
>PUSHBI S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
>PUSHBI S.PS.F.HOLD
|
||||
>LDYA L.SHELL
|
||||
>SYSCALL ExecL
|
||||
CS.RUN.9 rts
|
||||
@ -77,51 +85,82 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
|
||||
|
||||
sta hLIBCRYPT
|
||||
|
||||
>STZ.G INPUT.PrevCR
|
||||
>LDYAI 256
|
||||
>SYSCALL getmem
|
||||
bcs CS.RUN.9
|
||||
|
||||
>PUSHBI 0
|
||||
>STYA ZPGetLinePtr
|
||||
stx ZPhGetLine
|
||||
|
||||
lda #3
|
||||
sta ZPRetryCnt
|
||||
|
||||
.1 >PUSHBI 0
|
||||
>LDYA L.MSG.LOGIN
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
lda #0 Echo all caracters
|
||||
jsr INPUT.RESET
|
||||
|
||||
.1 >SYSCALL GetChar
|
||||
lda #16
|
||||
clc
|
||||
jsr CS.RUN.GetLine
|
||||
bcs .9
|
||||
|
||||
jsr INPUT.CHARIN
|
||||
jsr INPUT.LINEIN
|
||||
bcc .1
|
||||
>PUSHW pData
|
||||
>LDYA ZPGetLinePtr
|
||||
>SYSCALL GetPWName
|
||||
ror ZPbValidUser
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.PASSWORD
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
lda #'*'
|
||||
jsr INPUT.RESET
|
||||
|
||||
.2 >SYSCALL GetChar
|
||||
lda #128
|
||||
sec
|
||||
jsr CS.RUN.GetLine
|
||||
bcs .9
|
||||
|
||||
jsr INPUT.CHARIN
|
||||
jsr INPUT.LINEIN
|
||||
bcc .2
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.ECHOCRLF
|
||||
>LDYA L.MSG.CRLF
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.SETENV
|
||||
jsr CS.RUN.CHECK
|
||||
bcc CS.RUN.LOGIN
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.BAD
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
>PUSHBI S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
dec ZPRetryCnt
|
||||
bne .1
|
||||
|
||||
lda #E.IUSR
|
||||
* 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
|
||||
|
||||
>PUSHW ZPGetlinePtr
|
||||
>PUSHW ZPGetlinePtr
|
||||
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
|
||||
|
||||
>PUSHEA.G PW+S.PW.PASSWD
|
||||
>LDYA ZPGetlinePtr
|
||||
>SYSCALL strcmp
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SETENV >PUSHW L.HOME
|
||||
>LDYA L.ENV.HOME
|
||||
>SYSCALL setenv
|
||||
@ -140,7 +179,12 @@ CS.DOEVENT
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBCRYPT
|
||||
CS.QUIT lda ZPhGetLine
|
||||
beq .1
|
||||
|
||||
>SYSCALL freemem
|
||||
|
||||
.1 lda hLIBCRYPT
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
@ -148,105 +192,70 @@ CS.QUIT lda hLIBCRYPT
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
INPUT.RESET >STA.G INPUT.PassChar
|
||||
|
||||
>STZ.G INPUT.BUF
|
||||
>STA.G INPUT.Status
|
||||
rts
|
||||
*--------------------------------------
|
||||
INPUT.CHARIN tax save char...
|
||||
|
||||
>LDA.G INPUT.Status
|
||||
bmi .9
|
||||
CS.RUN.GetLine sta ZPGetLineMax
|
||||
ror ZPbGetLineSecret
|
||||
stz ZPGetLineLen
|
||||
|
||||
lda #INPUT.BUF
|
||||
clc
|
||||
adc pData
|
||||
sta ZPPTR1
|
||||
lda pData+1
|
||||
adc /INPUT.BUF
|
||||
sta ZPPTR1+1
|
||||
|
||||
cpx #$20 Control Char?
|
||||
bcc .2
|
||||
|
||||
cpx #C.DEL
|
||||
beq INPUT.CHARIN.DEL
|
||||
|
||||
lda (ZPPTR1)
|
||||
|
||||
cmp #INPUT.BUF.SIZE Buffer full?
|
||||
beq .9
|
||||
|
||||
inc
|
||||
sta (ZPPTR1)
|
||||
tay
|
||||
|
||||
txa
|
||||
sta (ZPPTR1),y
|
||||
|
||||
>LDA.G INPUT.PassChar
|
||||
bne .1
|
||||
|
||||
txa
|
||||
|
||||
.1 >SYSCALL PutChar
|
||||
.1 >SYSCALL getchar
|
||||
bcs .9
|
||||
|
||||
>STZ.G INPUT.PrevCR
|
||||
rts
|
||||
cmp #C.SPACE
|
||||
bcc .2
|
||||
|
||||
.2 cpx #C.CR
|
||||
bne .3
|
||||
|
||||
txa
|
||||
>STA.G INPUT.PrevCR
|
||||
|
||||
lda #$80
|
||||
>STA.G INPUT.Status
|
||||
rts
|
||||
|
||||
.3 cpx #C.LF
|
||||
bne .4
|
||||
|
||||
>LDA.G INPUT.PrevCR
|
||||
ldy ZPGetLineLen
|
||||
cpy ZPGetLineMax
|
||||
beq .1
|
||||
|
||||
.4 >STZ.G INPUT.PrevCR
|
||||
sta (ZPGetLinePtr),y
|
||||
iny
|
||||
sty ZPGetLineLen
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
INPUT.CHARIN.DEL
|
||||
lda (ZPPTR1)
|
||||
bit ZPbGetLineSecret
|
||||
bmi .1
|
||||
|
||||
>SYSCALL putchar
|
||||
bra .1
|
||||
|
||||
.2 cmp #3 Ctrl-C
|
||||
beq .9
|
||||
|
||||
cmp #C.CR
|
||||
beq .8
|
||||
|
||||
dec
|
||||
sta (ZPPTR1)
|
||||
cmp #C.BS
|
||||
bne .1
|
||||
|
||||
ldy ZPGetLineLen
|
||||
beq .1
|
||||
dec ZPGetLineLen
|
||||
|
||||
bit ZPbGetLineSecret
|
||||
bmi .1
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.ECHODEL
|
||||
>LDYA L.MSG.BS
|
||||
>SYSCALL printf
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
INPUT.LINEIN ldy #INPUT.Status
|
||||
lda (pData),y
|
||||
asl CS if a line is in the buffer
|
||||
rts
|
||||
.8 ldy ZPGetLineLen
|
||||
lda #0
|
||||
sta (ZPGetLinePtr),y
|
||||
|
||||
clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
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"
|
||||
.AZ "Consider adding ROOT password with USERADD command.\r\n\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.ECHOCRLF .AZ "\r\n"
|
||||
MSG.ECHODEL .DA #C.BS,#C.SPACE,#C.BS,#0
|
||||
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"
|
||||
@ -256,10 +265,6 @@ HOME .AZ "${ROOT}ROOT/"
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
INPUT.BUF .BS INPUT.BUF.SIZE+1
|
||||
INPUT.Status .BS 1
|
||||
INPUT.PassChar .BS 1
|
||||
INPUT.PrevCR .BS 1
|
||||
PW .BS S.PW
|
||||
DS.END
|
||||
.ED
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
@ -214,7 +213,7 @@ CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK
|
||||
>LEA.G CmdBuf
|
||||
>SYSCALL sprintf
|
||||
|
||||
>PUSHBI S.PS.F.DUPENV
|
||||
>PUSHBI 0
|
||||
>LEA.G CmdBuf
|
||||
>SYSCALL execl
|
||||
bcc .8
|
||||
|
@ -145,37 +145,6 @@ CORE.UpdateParentPS
|
||||
eor #S.PS.F.HOLD release Parent PS HOLD...
|
||||
sta (ZPPtr1)
|
||||
|
||||
lda (pPs)
|
||||
bit #S.PS.F.DUPENV
|
||||
bne .8
|
||||
|
||||
ldy #S.PS.hENV no dup, check if updating Parent PS
|
||||
|
||||
jsr .1
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
*--------------------------------------
|
||||
.1 lda (pPs),y hMEM...
|
||||
cmp (ZPPtr1),y
|
||||
beq .8 same, no update
|
||||
|
||||
tax save new hMEM
|
||||
lda #0
|
||||
sta (pPs),y reset
|
||||
|
||||
lda (ZPPtr1),y get parent hMEM
|
||||
phy
|
||||
jsr K.freemem discard....
|
||||
ply
|
||||
txa put new hMEM in parent
|
||||
sta (ZPPtr1),y
|
||||
cpy #S.PS.hENV
|
||||
bne .8
|
||||
|
||||
dey #S.PS.ENVPAGECNT
|
||||
lda (pPs),y
|
||||
sta (ZPPtr1),y update page count
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* CORE.GetEvents :
|
||||
@ -537,14 +506,10 @@ CORE.PSFree sta .10+1 Save PS ID
|
||||
ldy #S.PS.hARGV
|
||||
jsr .8
|
||||
|
||||
lda (ZPPtr1) get S.PS.F
|
||||
and #S.PS.F.DUPENV do we have to discard duplicated env ?
|
||||
beq .1
|
||||
|
||||
ldy #S.PS.hENV
|
||||
jsr .8
|
||||
|
||||
.1 ldy #S.PS.hPREFIX
|
||||
ldy #S.PS.hPREFIX
|
||||
jsr .8
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
@ -583,6 +548,9 @@ CORE.PSFree sta .10+1 Save PS ID
|
||||
bne .4
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CORE.EvtIndex .BS 1
|
||||
CORE.EvtCount .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.CORE
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
|
@ -468,20 +468,11 @@ K.ReadDir.ADDF
|
||||
K.ReadDir.AddAccess
|
||||
ldy #$1E ProDOS Access
|
||||
lda (ZPPtr3),y
|
||||
|
||||
jsr STAT.Access2Mode
|
||||
|
||||
ldx #0
|
||||
bit #$01 ProDOS R
|
||||
beq .2
|
||||
ldx #S.STAT.MODE.RO
|
||||
|
||||
.2 bit #$C2 ProDOS D,Rn,W
|
||||
beq .3
|
||||
txa
|
||||
ora #S.STAT.MODE.XO+S.STAT.MODE.WO
|
||||
.HS 89 bit imm to skip txa
|
||||
|
||||
.3 txa
|
||||
sta K.S.STAT+S.STAT.MODE
|
||||
sty K.S.STAT+S.STAT.MODE
|
||||
sta K.S.STAT+S.STAT.MODE+1
|
||||
*--------------------------------------
|
||||
K.ReadDir.AddTime
|
||||
>PUSHWI K.S.STAT+S.STAT.CTIME
|
||||
|
@ -544,7 +544,7 @@ ENV.StrVarsPWD ldy #S.PS.hPREFIX
|
||||
jsr K.GetMemPtr
|
||||
jmp ENV.AddYAToBuf
|
||||
*--------------------------------------
|
||||
ENV.StrVarsUID ldy #S.PS.UID
|
||||
ENV.StrVarsUID ldy #S.PS.hUsr
|
||||
.HS 2C
|
||||
*--------------------------------------
|
||||
ENV.SysVarsArgC ldy #S.PS.ARGC
|
||||
|
@ -334,6 +334,12 @@ MemMgrInit >LDYAI Mem.MHiMem
|
||||
dex
|
||||
bpl .5
|
||||
|
||||
ldx #K.USR.MAX*2-1
|
||||
|
||||
.6 stz USR.Table.hPW,x
|
||||
dex
|
||||
bpl .6
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SysScrInit lda #"S"
|
||||
@ -1075,11 +1081,38 @@ PwdMgrInit >LDYAI MSG.PWD
|
||||
>PUSHBI O.RDONLY
|
||||
>LDYAI ETCPASSWD
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
bcs .1
|
||||
stx PWD.hDB
|
||||
>STYA PWD.DBSize
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.1 >LDYAI PwdMgr.ROOT.Size
|
||||
jsr K.Getmem
|
||||
>STYA pUser
|
||||
stx USR.Table.hPW
|
||||
|
||||
ldy #PwdMgr.ROOT.Size-1
|
||||
|
||||
.2 lda PwdMgr.ROOT,y
|
||||
sta (pUser),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
|
||||
sta USR.Table.hFile
|
||||
rts
|
||||
*--------------------------------------
|
||||
PwdMgr.ROOT .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
|
||||
PwdMgr.ROOT.Size .EQ *-PwdMgr.ROOT
|
||||
*--------------------------------------
|
||||
* Modified CHARGET/CHARGOT for ROM CALL
|
||||
* CHRGET .EQ $B1 - C8
|
||||
*--------------------------------------
|
||||
|
@ -537,7 +537,7 @@ MEM.Kernel.JMP jmp (SYS.Kernel.JMP,x)
|
||||
* Y,A = File Length
|
||||
* X = hMem of Loaded Object in AUX mem
|
||||
*\--------------------------------------
|
||||
K.LoadStkObj >SYSCALL LoadFile
|
||||
K.LoadStkObj >SYSCALL LoadTxtFile To get ending \0
|
||||
bcs .99
|
||||
sty .81+1
|
||||
sta .82+1
|
||||
@ -569,11 +569,6 @@ K.LoadStkObj >SYSCALL LoadFile
|
||||
|
||||
sec Main To Aux
|
||||
jsr AuxMove
|
||||
|
||||
lda #0
|
||||
sta SETWRITEAUX
|
||||
sta (A2L)
|
||||
sta CLRWRITEAUX
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
jsr K.FreeMem release MAIN memory
|
||||
|
@ -151,26 +151,12 @@ PS.CreateChild ldx #0
|
||||
ldy #S.PS.hPREFIX
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
lda #S.PS.F.DUPENV
|
||||
bit PS.Flags need to create ENV ?
|
||||
beq .6 no...
|
||||
|
||||
sta (PS.NewPSPtr) Mark this PS with DUPENV flag
|
||||
|
||||
jsr ENV.Dup dup hENV from parent PS
|
||||
bcs .9
|
||||
|
||||
ldy #S.PS.hENV
|
||||
|
||||
bra .8 A = hMem, X = PageCnt
|
||||
|
||||
.6 ldy #S.PS.ENVPAGECNT reuse hENV/pageCnt from parent PS
|
||||
lda (pPs),y
|
||||
tax
|
||||
iny
|
||||
lda (pPs),y
|
||||
|
||||
.8 sta (PS.NewPSPtr),y
|
||||
sta (PS.NewPSPtr),y
|
||||
txa
|
||||
dey
|
||||
sta (PS.NewPSPtr),y
|
||||
@ -183,8 +169,9 @@ PS.CreateChild ldx #0
|
||||
cpy #S.PS.hStdErr+1
|
||||
bne .81
|
||||
|
||||
bit PS.Flags S.PS.F.NOHUP
|
||||
bmi .5
|
||||
lda #S.PS.F.NOHUP
|
||||
bit PS.Flags
|
||||
bne .5
|
||||
|
||||
ldy #S.PS.PID
|
||||
lda (pPs),y
|
||||
|
@ -66,14 +66,21 @@ PWD.GetPWName lda PWD.hDB
|
||||
|
||||
jsr K.GetmemPtr
|
||||
>STYA ZPPtr3
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>STYA TXTPTR
|
||||
|
||||
ldy #0
|
||||
jsr MEM.TXTPTR.GetY
|
||||
beq .99
|
||||
|
||||
.1 lda (ZPPtr3)
|
||||
beq .99
|
||||
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
jsr MEM.TXTPTR.GetY
|
||||
beq .4
|
||||
|
||||
cmp (ZPPtr3),y
|
||||
@ -140,7 +147,9 @@ PWD.InitDB jsr PWD.GetRecordLen
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PWD.Record2PM ldy #0
|
||||
PWD.Record2PM sta CLRWRITEAUX
|
||||
|
||||
ldy #0
|
||||
|
||||
ldx #0 NAME
|
||||
|
||||
@ -223,6 +232,9 @@ PWD.Record2PM ldy #0
|
||||
|
||||
.10 lda #0
|
||||
jsr MEM.PutCharPtr2
|
||||
|
||||
sta SETWRITEAUX
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -131,22 +131,17 @@ K.Stat.I >PULLW ZPPtr1 Get StatBuf
|
||||
|
||||
>MLICALL MLIGETFILEINFO
|
||||
bcs .9
|
||||
|
||||
lda K.MLI.PARAMS+S.FI.A
|
||||
jsr STAT.Access2Mode
|
||||
|
||||
ldx K.MLI.PARAMS+S.FI.A
|
||||
|
||||
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
|
||||
cpx #S.FI.A.FULL
|
||||
beq .2
|
||||
|
||||
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
|
||||
cpx #S.FI.A.R
|
||||
beq .2
|
||||
|
||||
lda #0
|
||||
|
||||
.2 ldy #S.STAT.MODE
|
||||
.2 phy
|
||||
ldy #S.STAT.MODE+1
|
||||
sta (ZPPtr1),y
|
||||
|
||||
dey
|
||||
pla
|
||||
sta (ZPPtr1),y
|
||||
|
||||
ldx #K.Stat.DST-K.Stat.SRC
|
||||
|
||||
.3 ldy K.Stat.SRC-1,x
|
||||
@ -165,6 +160,18 @@ K.Stat.SRC .DA #S.FI.T
|
||||
K.Stat.DST .DA #S.STAT.P.TYPE
|
||||
.DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
|
||||
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
|
||||
*--------------------------------------
|
||||
STAT.Access2Mode
|
||||
and #S.FI.A.FULL
|
||||
cmp #S.FI.A.FULL
|
||||
bne .1
|
||||
ldy #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU
|
||||
lda /S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU
|
||||
rts
|
||||
|
||||
.1 ldy #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.XU+S.STAT.MODE.RU
|
||||
lda /S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.XU+S.STAT.MODE.RU
|
||||
rts
|
||||
*/-------------------------------------
|
||||
* # MKDir
|
||||
* create a directory
|
||||
|
Loading…
x
Reference in New Issue
Block a user