Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-04-15 06:40:13 +01:00
parent 5aa1fae67a
commit e27211b92e
18 changed files with 338 additions and 228 deletions

View File

@ -40,7 +40,7 @@ CS.START cld
.DA #0 .DA #0
.DA CS.END-CS.START CS .DA CS.END-CS.START CS
.DA DS.END-DS.START DS .DA DS.END-DS.START DS
.DA #16 SS .DA #64 SS
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
@ -114,7 +113,7 @@ CS.RUN.DUMP phx
lda (ZPPSPtr),y lda (ZPPSPtr),y
>PUSHA Parent PID >PUSHA Parent PID
ldy #S.PS.UID ldy #S.PS.hUsr
lda (ZPPSPtr),y lda (ZPPSPtr),y
>PUSHA >PUSHA
@ -205,7 +204,7 @@ MSG0 .AZ "\e[7lID CPU\% Flags UID PID Command Line\r\n"
MSG1 .AZ "%03d %3d\% %s %03d %03d" MSG1 .AZ "%03d %3d\% %s %03d %03d"
MSG2 .AZ " %s" MSG2 .AZ " %s"
MSG3 .AZ "\r\n" MSG3 .AZ "\r\n"
MSG.FLAGS .AS "IRQDHSed" MSG.FLAGS .AS "IRQDHSEN"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CMD.NOHUP >LDA.G CORE.PSFlags CMD.NOHUP >LDA.G CORE.PSFlags
@ -319,7 +318,7 @@ CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`"
jsr IO.Pipe.Out jsr IO.Pipe.Out
bcs .9 bcs .9
>PUSHBI S.PS.F.DUPENV >PUSHBI 0
>LDYA ZPArgVBufPtr >LDYA ZPArgVBufPtr
>SYSCALL execl >SYSCALL execl
bcs .9 bcs .9
@ -1027,7 +1026,7 @@ FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
jsr IO.Pipe.Out jsr IO.Pipe.Out
bcs .9 bcs .9
>PUSHBI S.PS.F.DUPENV >PUSHBI 0
>LDYA ZPArgVBufPtr >LDYA ZPArgVBufPtr
>SYSCALL execl >SYSCALL execl
bcs .9 bcs .9

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CORE.Init >LDYAI 256 CORE.Init >LDYAI 256
@ -61,7 +60,7 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
lda #0 Reset ArgV Buffer lda #0 Reset ArgV Buffer
sta (ZPArgVBuf) sta (ZPArgVBuf)
lda #S.PS.F.HOLD+S.PS.F.DUPENV lda #S.PS.F.HOLD
>STA.G CORE.PSFlags >STA.G CORE.PSFlags
lda #$ff lda #$ff

112
BIN/WHO.S.txt Normal file
View 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

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
*-------------------------------------- *--------------------------------------
K.VER .EQ $5D00 93.0 K.VER .EQ $5D00 93.0
K.ENV.SIZE .EQ 256 K.ENV.SIZE .EQ 256
@ -20,17 +19,17 @@ K.OF.MAX .EQ 32
K.EVT.MAX .EQ 4 K.EVT.MAX .EQ 4
K.SCR.MAX .EQ 6 K.SCR.MAX .EQ 6
K.TTY.MAX .EQ 4 K.TTY.MAX .EQ 4
K.USR.MAX .EQ 16
*-------------------------------------- *--------------------------------------
ZPDRV .EQ $20 32 bytes ZPDRV .EQ $20 32 bytes
ZPLIB .EQ $40 32 bytes ZPLIB .EQ $40 32 bytes
*-------------------------------------- *--------------------------------------
* PS Context : 48 bytes MAX * PS Context : 48 bytes MAX
*-------------------------------------- *--------------------------------------
CORE.EvtIndex .EQ $D0 CORE.PSIndex .EQ $D0
CORE.EvtCount .EQ $D1 CORE.PSCount .EQ $D1
CORE.PSIndex .EQ $D2
CORE.PSCount .EQ $D3
pUser .EQ $D2
pEvent .EQ $D4 pEvent .EQ $D4
pPs .EQ $D6 pPs .EQ $D6
*-------------------------------------- *--------------------------------------
@ -491,7 +490,6 @@ S.FD.PIPE .EQ 10
* PS STRUCT * PS STRUCT
*-------------------------------------- *--------------------------------------
S.PS.F .EQ 0 S.PS.F .EQ 0
S.PS.F.NOHUP .EQ %10000000
S.PS.F.INIT .EQ %10000000 S.PS.F.INIT .EQ %10000000
S.PS.F.RUN .EQ %01000000 S.PS.F.RUN .EQ %01000000
S.PS.F.QUIT .EQ %00100000 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.HOLD .EQ %00001000
S.PS.F.SLEEP .EQ %00000100 S.PS.F.SLEEP .EQ %00000100
S.PS.F.EVENT .EQ %00000010 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.PPID .EQ 1
S.PS.PID .EQ 2 S.PS.PID .EQ 2
S.PS.CPID .EQ 3 S.PS.CPID .EQ 3
@ -516,7 +514,7 @@ S.PS.RC .EQ 13
S.PS.ARGC .EQ 14 S.PS.ARGC .EQ 14
S.PS.hARGV .EQ 15 S.PS.hARGV .EQ 15
S.PS.UID .EQ 16 S.PS.hUsr .EQ 16
S.PS.A .EQ 17 S.PS.A .EQ 17
S.PS.X .EQ 18 S.PS.X .EQ 18
@ -580,12 +578,15 @@ S.STAT.MODE .EQ 0
S.STAT.MODE.XO .EQ $0001 S.STAT.MODE.XO .EQ $0001
S.STAT.MODE.WO .EQ $0002 S.STAT.MODE.WO .EQ $0002
S.STAT.MODE.RO .EQ $0004 S.STAT.MODE.RO .EQ $0004
S.STAT.MODE.FO .EQ $0007
S.STAT.MODE.XG .EQ $0008 S.STAT.MODE.XG .EQ $0008
S.STAT.MODE.WG .EQ $0010 S.STAT.MODE.WG .EQ $0010
S.STAT.MODE.RG .EQ $0020 S.STAT.MODE.RG .EQ $0020
S.STAT.MODE.FG .EQ $0038
S.STAT.MODE.XU .EQ $0040 S.STAT.MODE.XU .EQ $0040
S.STAT.MODE.WU .EQ $0080 S.STAT.MODE.WU .EQ $0080
S.STAT.MODE.RU .EQ $0100 S.STAT.MODE.RU .EQ $0100
S.STAT.MODE.FU .EQ $01C0
*S.STAT.MODE.SST .EQ $0200 *S.STAT.MODE.SST .EQ $0200
*S.STAT.MODE.SGID .EQ $0400 *S.STAT.MODE.SGID .EQ $0400
*S.STAT.MODE.SUID .EQ $0800 *S.STAT.MODE.SUID .EQ $0800

View File

@ -21,7 +21,10 @@ PS.Table.Stats .EQ $13E0 K.PS.MAX
OF.Table.hPath .EQ $1400 K.OF.MAX OF.Table.hPath .EQ $1400 K.OF.MAX
OF.Table.hFD .EQ $1420 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 MAN
SAVE INC/KERNEL.I SAVE INC/KERNEL.I

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
@ -8,11 +7,19 @@ AUTO 4,1
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/LIBCRYPT.I
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START 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 ZS.END
.ED .ED
*-------------------------------------- *--------------------------------------
@ -28,7 +35,7 @@ CS.START cld
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize .DA DS.END-DS.START Data SegmentSize
.DA #16 Stack Size .DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -42,8 +49,9 @@ L.MSG.NOPASSWD .DA MSG.NOPASSWD
L.LIBCRYPT .DA LIBCRYPT L.LIBCRYPT .DA LIBCRYPT
L.MSG.LOGIN .DA MSG.LOGIN L.MSG.LOGIN .DA MSG.LOGIN
L.MSG.PASSWORD .DA MSG.PASSWORD L.MSG.PASSWORD .DA MSG.PASSWORD
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF L.MSG.BAD .DA MSG.BAD
L.MSG.ECHODEL .DA MSG.ECHODEL L.MSG.CRLF .DA MSG.CRLF
L.MSG.BS .DA MSG.BS
L.ENV.SHELL .DA ENV.SHELL L.ENV.SHELL .DA ENV.SHELL
L.SHELL .DA SHELL L.SHELL .DA SHELL
L.ENV.HOME .DA ENV.HOME L.ENV.HOME .DA ENV.HOME
@ -53,7 +61,7 @@ L.HOME .DA HOME
CS.INIT clc CS.INIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN >PUSHEA.G PW CS.RUN >PUSHW pData PW
lda #0 lda #0
>SYSCALL GetPWUID >SYSCALL GetPWUID
bcc CS.RUN.AUTH bcc CS.RUN.AUTH
@ -66,7 +74,7 @@ CS.RUN >PUSHEA.G PW
jsr CS.RUN.SETENV jsr CS.RUN.SETENV
bcs CS.RUN.9 bcs CS.RUN.9
>PUSHBI S.PS.F.HOLD+S.PS.F.DUPENV >PUSHBI S.PS.F.HOLD
>LDYA L.SHELL >LDYA L.SHELL
>SYSCALL ExecL >SYSCALL ExecL
CS.RUN.9 rts CS.RUN.9 rts
@ -77,51 +85,82 @@ CS.RUN.AUTH >LDYA L.LIBCRYPT
sta hLIBCRYPT 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 >LDYA L.MSG.LOGIN
>SYSCALL printf >SYSCALL printf
bcs .9 bcs .9
lda #0 Echo all caracters lda #16
jsr INPUT.RESET clc
jsr CS.RUN.GetLine
.1 >SYSCALL GetChar
bcs .9 bcs .9
jsr INPUT.CHARIN >PUSHW pData
jsr INPUT.LINEIN >LDYA ZPGetLinePtr
bcc .1 >SYSCALL GetPWName
ror ZPbValidUser
>PUSHBI 0 >PUSHBI 0
>LDYA L.MSG.PASSWORD >LDYA L.MSG.PASSWORD
>SYSCALL printf >SYSCALL printf
bcs .9 bcs .9
lda #'*' lda #128
jsr INPUT.RESET sec
jsr CS.RUN.GetLine
.2 >SYSCALL GetChar
bcs .9 bcs .9
jsr INPUT.CHARIN
jsr INPUT.LINEIN
bcc .2
>PUSHBI 0 >PUSHBI 0
>LDYA L.MSG.ECHOCRLF >LDYA L.MSG.CRLF
>SYSCALL printf >SYSCALL printf
bcs .9 bcs .9
jsr CS.RUN.SETENV jsr CS.RUN.CHECK
bcc CS.RUN.LOGIN
>PUSHBI 0
>LDYA L.MSG.BAD
>SYSCALL printf
bcs .9 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 >LDYA L.SHELL
>SYSCALL ExecL >SYSCALL ExecL
.9 rts .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 CS.RUN.SETENV >PUSHW L.HOME
>LDYA L.ENV.HOME >LDYA L.ENV.HOME
>SYSCALL setenv >SYSCALL setenv
@ -140,7 +179,12 @@ CS.DOEVENT
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda hLIBCRYPT CS.QUIT lda ZPhGetLine
beq .1
>SYSCALL freemem
.1 lda hLIBCRYPT
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
@ -148,105 +192,70 @@ CS.QUIT lda hLIBCRYPT
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
* PRIVATE CS.RUN.GetLine sta ZPGetLineMax
*-------------------------------------- ror ZPbGetLineSecret
INPUT.RESET >STA.G INPUT.PassChar stz ZPGetLineLen
>STZ.G INPUT.BUF .1 >SYSCALL getchar
>STA.G INPUT.Status
rts
*--------------------------------------
INPUT.CHARIN tax save char...
>LDA.G INPUT.Status
bmi .9
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
bcs .9 bcs .9
>STZ.G INPUT.PrevCR cmp #C.SPACE
rts bcc .2
.2 cpx #C.CR ldy ZPGetLineLen
bne .3 cpy ZPGetLineMax
txa
>STA.G INPUT.PrevCR
lda #$80
>STA.G INPUT.Status
rts
.3 cpx #C.LF
bne .4
>LDA.G INPUT.PrevCR
beq .1 beq .1
.4 >STZ.G INPUT.PrevCR sta (ZPGetLinePtr),y
iny
sty ZPGetLineLen
.9 rts bit ZPbGetLineSecret
*-------------------------------------- bmi .1
INPUT.CHARIN.DEL
lda (ZPPTR1) >SYSCALL putchar
bra .1
.2 cmp #3 Ctrl-C
beq .9
cmp #C.CR
beq .8 beq .8
dec cmp #C.BS
sta (ZPPTR1) bne .1
ldy ZPGetLineLen
beq .1
dec ZPGetLineLen
bit ZPbGetLineSecret
bmi .1
>PUSHBI 0 >PUSHBI 0
>LDYA L.MSG.ECHODEL >LDYA L.MSG.BS
>SYSCALL printf >SYSCALL printf
bra .1
.8 clc .8 ldy ZPGetLineLen
rts lda #0
*-------------------------------------- sta (ZPGetLinePtr),y
INPUT.LINEIN ldy #INPUT.Status
lda (pData),y clc
asl CS if a line is in the buffer
rts .9 rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
LIBCRYPT .AZ "libcrypt" LIBCRYPT .AZ "libcrypt"
hLIBCRYPT .BS 1 hLIBCRYPT .BS 1
MSG.NOPASSWD .AS "\r\n\r\nA2osX-Login:No ETC/PASSWD file present, Logged as ROOT.\r\n" 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.LOGIN .AZ "\r\nlogin:"
MSG.PASSWORD .AZ "\r\npassword:" MSG.PASSWORD .AZ "\r\npassword:"
MSG.ECHOCRLF .AZ "\r\n" MSG.BAD .AZ "Bad user or password\r\n"
MSG.ECHODEL .DA #C.BS,#C.SPACE,#C.BS,#0 MSG.BS .DA #C.BS,#C.SPACE,#C.BS,#0
ENV.SHELL .AZ "SHELL" ENV.SHELL .AZ "SHELL"
ENV.HOME .AZ "HOME" ENV.HOME .AZ "HOME"
SHELL .AZ "${ROOT}BIN/SH" SHELL .AZ "${ROOT}BIN/SH"
@ -256,10 +265,6 @@ HOME .AZ "${ROOT}ROOT/"
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START 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 PW .BS S.PW
DS.END DS.END
.ED .ED

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
@ -214,7 +213,7 @@ CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK
>LEA.G CmdBuf >LEA.G CmdBuf
>SYSCALL sprintf >SYSCALL sprintf
>PUSHBI S.PS.F.DUPENV >PUSHBI 0
>LEA.G CmdBuf >LEA.G CmdBuf
>SYSCALL execl >SYSCALL execl
bcc .8 bcc .8

View File

@ -145,37 +145,6 @@ CORE.UpdateParentPS
eor #S.PS.F.HOLD release Parent PS HOLD... eor #S.PS.F.HOLD release Parent PS HOLD...
sta (ZPPtr1) 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 .8 rts
*-------------------------------------- *--------------------------------------
* CORE.GetEvents : * CORE.GetEvents :
@ -537,14 +506,10 @@ CORE.PSFree sta .10+1 Save PS ID
ldy #S.PS.hARGV ldy #S.PS.hARGV
jsr .8 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 ldy #S.PS.hENV
jsr .8 jsr .8
.1 ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
jsr .8 jsr .8
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
@ -583,6 +548,9 @@ CORE.PSFree sta .10+1 Save PS ID
bne .4 bne .4
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CORE.EvtIndex .BS 1
CORE.EvtCount .BS 1
*--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.CORE SAVE USR/SRC/SYS/KERNEL.S.CORE
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S

View File

@ -469,19 +469,10 @@ K.ReadDir.AddAccess
ldy #$1E ProDOS Access ldy #$1E ProDOS Access
lda (ZPPtr3),y lda (ZPPtr3),y
ldx #0 jsr STAT.Access2Mode
bit #$01 ProDOS R
beq .2
ldx #S.STAT.MODE.RO
.2 bit #$C2 ProDOS D,Rn,W sty K.S.STAT+S.STAT.MODE
beq .3 sta K.S.STAT+S.STAT.MODE+1
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
*-------------------------------------- *--------------------------------------
K.ReadDir.AddTime K.ReadDir.AddTime
>PUSHWI K.S.STAT+S.STAT.CTIME >PUSHWI K.S.STAT+S.STAT.CTIME

View File

@ -544,7 +544,7 @@ ENV.StrVarsPWD ldy #S.PS.hPREFIX
jsr K.GetMemPtr jsr K.GetMemPtr
jmp ENV.AddYAToBuf jmp ENV.AddYAToBuf
*-------------------------------------- *--------------------------------------
ENV.StrVarsUID ldy #S.PS.UID ENV.StrVarsUID ldy #S.PS.hUsr
.HS 2C .HS 2C
*-------------------------------------- *--------------------------------------
ENV.SysVarsArgC ldy #S.PS.ARGC ENV.SysVarsArgC ldy #S.PS.ARGC

View File

@ -334,6 +334,12 @@ MemMgrInit >LDYAI Mem.MHiMem
dex dex
bpl .5 bpl .5
ldx #K.USR.MAX*2-1
.6 stz USR.Table.hPW,x
dex
bpl .6
rts rts
*-------------------------------------- *--------------------------------------
SysScrInit lda #"S" SysScrInit lda #"S"
@ -1075,11 +1081,38 @@ PwdMgrInit >LDYAI MSG.PWD
>PUSHBI O.RDONLY >PUSHBI O.RDONLY
>LDYAI ETCPASSWD >LDYAI ETCPASSWD
>SYSCALL LoadStkObj >SYSCALL LoadStkObj
bcs .9 bcs .1
stx PWD.hDB stx PWD.hDB
>STYA PWD.DBSize >STYA PWD.DBSize
.9 rts .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 * Modified CHARGET/CHARGOT for ROM CALL
* CHRGET .EQ $B1 - C8 * CHRGET .EQ $B1 - C8
*-------------------------------------- *--------------------------------------

View File

@ -537,7 +537,7 @@ MEM.Kernel.JMP jmp (SYS.Kernel.JMP,x)
* Y,A = File Length * Y,A = File Length
* X = hMem of Loaded Object in AUX mem * X = hMem of Loaded Object in AUX mem
*\-------------------------------------- *\--------------------------------------
K.LoadStkObj >SYSCALL LoadFile K.LoadStkObj >SYSCALL LoadTxtFile To get ending \0
bcs .99 bcs .99
sty .81+1 sty .81+1
sta .82+1 sta .82+1
@ -570,11 +570,6 @@ K.LoadStkObj >SYSCALL LoadFile
sec Main To Aux sec Main To Aux
jsr AuxMove jsr AuxMove
lda #0
sta SETWRITEAUX
sta (A2L)
sta CLRWRITEAUX
.8 lda #$ff SELF MODIFIED .8 lda #$ff SELF MODIFIED
jsr K.FreeMem release MAIN memory jsr K.FreeMem release MAIN memory

View File

@ -151,26 +151,12 @@ PS.CreateChild ldx #0
ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
sta (PS.NewPSPtr),y 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 jsr ENV.Dup dup hENV from parent PS
bcs .9 bcs .9
ldy #S.PS.hENV ldy #S.PS.hENV
bra .8 A = hMem, X = PageCnt sta (PS.NewPSPtr),y
.6 ldy #S.PS.ENVPAGECNT reuse hENV/pageCnt from parent PS
lda (pPs),y
tax
iny
lda (pPs),y
.8 sta (PS.NewPSPtr),y
txa txa
dey dey
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
@ -183,8 +169,9 @@ PS.CreateChild ldx #0
cpy #S.PS.hStdErr+1 cpy #S.PS.hStdErr+1
bne .81 bne .81
bit PS.Flags S.PS.F.NOHUP lda #S.PS.F.NOHUP
bmi .5 bit PS.Flags
bne .5
ldy #S.PS.PID ldy #S.PS.PID
lda (pPs),y lda (pPs),y

View File

@ -67,13 +67,20 @@ PWD.GetPWName lda PWD.hDB
jsr K.GetmemPtr jsr K.GetmemPtr
>STYA ZPPtr3 >STYA ZPPtr3
>LDYA ZPPtr1
>STYA TXTPTR
ldy #0
jsr MEM.TXTPTR.GetY
beq .99
.1 lda (ZPPtr3) .1 lda (ZPPtr3)
beq .99 beq .99
ldy #$ff ldy #$ff
.2 iny .2 iny
lda (ZPPtr1),y jsr MEM.TXTPTR.GetY
beq .4 beq .4
cmp (ZPPtr3),y cmp (ZPPtr3),y
@ -140,7 +147,9 @@ PWD.InitDB jsr PWD.GetRecordLen
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PWD.Record2PM ldy #0 PWD.Record2PM sta CLRWRITEAUX
ldy #0
ldx #0 NAME ldx #0 NAME
@ -223,6 +232,9 @@ PWD.Record2PM ldy #0
.10 lda #0 .10 lda #0
jsr MEM.PutCharPtr2 jsr MEM.PutCharPtr2
sta SETWRITEAUX
clc clc
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -132,19 +132,14 @@ K.Stat.I >PULLW ZPPtr1 Get StatBuf
>MLICALL MLIGETFILEINFO >MLICALL MLIGETFILEINFO
bcs .9 bcs .9
ldx K.MLI.PARAMS+S.FI.A lda K.MLI.PARAMS+S.FI.A
jsr STAT.Access2Mode
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO .2 phy
cpx #S.FI.A.FULL ldy #S.STAT.MODE+1
beq .2 sta (ZPPtr1),y
dey
lda #S.STAT.MODE.XO+S.STAT.MODE.RO pla
cpx #S.FI.A.R
beq .2
lda #0
.2 ldy #S.STAT.MODE
sta (ZPPtr1),y sta (ZPPtr1),y
ldx #K.Stat.DST-K.Stat.SRC ldx #K.Stat.DST-K.Stat.SRC
@ -165,6 +160,18 @@ K.Stat.SRC .DA #S.FI.T
K.Stat.DST .DA #S.STAT.P.TYPE K.Stat.DST .DA #S.STAT.P.TYPE
.DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1 .DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+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 * # MKDir
* create a directory * create a directory