mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-06 02:40:10 +00:00
Kernel 0.94
This commit is contained in:
parent
651fd664da
commit
c305aee13e
Binary file not shown.
@ -5,15 +5,15 @@ NEW
|
||||
.OR $2000
|
||||
.TF bin/etconfig
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIB.NET.I
|
||||
.INB INC/LIBETALK.I
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/kernel.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/nic.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/lib.net.i
|
||||
.INB inc/libetalk.i
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 200 20 sec.
|
||||
PROBE.MAX .EQ 10
|
||||
@ -581,5 +581,5 @@ TimeOut .BS 1
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/ETCONFIG.S
|
||||
SAVE usr/src/bin/etconfig.s
|
||||
ASM
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
DHCP.INIT lda IPCFG+S.NETCFG.STATUS
|
||||
@ -53,7 +52,9 @@ DHCP.RUN >PUSHBI 0 no protocol
|
||||
>LDYA L.MSG.DHCP.CFG1
|
||||
>SYSCALL PutS
|
||||
|
||||
jsr Init.Timeout
|
||||
lda #TIMEOUT.MAX
|
||||
sta TimeOut
|
||||
|
||||
DHCP.RUN.SDISC >PUSHW L.SA.DEST
|
||||
>PUSHWI DHCP.DISC.LEN
|
||||
>PUSHW L.DHCP.DISC
|
||||
@ -69,7 +70,8 @@ DHCP.RUN.SDISC >PUSHW L.SA.DEST
|
||||
DHCP.RUN.ROFFER >SLEEP
|
||||
jsr DHCP.RUN.SKT.RCVD
|
||||
bcc .1
|
||||
jsr Wait.Timeout
|
||||
|
||||
lda TimeOut
|
||||
bne DHCP.RUN.ROFFER
|
||||
|
||||
lda #1
|
||||
@ -98,13 +100,17 @@ DHCP.RUN.SREQ >PUSHW L.MSG.DHCP.CFG2
|
||||
|
||||
lda #S.IPCFG.STATUS.SREQ
|
||||
sta IPCFG
|
||||
|
||||
DHCP.RUN.RACK >SLEEP
|
||||
jsr DHCP.RUN.SKT.RCVD
|
||||
bcc .1
|
||||
jsr Wait.Timeout
|
||||
|
||||
lda TimeOut
|
||||
bne DHCP.RUN.RACK
|
||||
|
||||
lda #2
|
||||
bra DHCP.RUN.KO
|
||||
|
||||
.1 jsr CheckDHCPAck
|
||||
bcs DHCP.RUN.RACK
|
||||
|
||||
@ -329,6 +335,6 @@ CheckDHCPXID ldy #S.DHCP.XID+3
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/IPCONFIG.S.DHCP
|
||||
LOAD USR/SRC/SBIN/IPCONFIG.S
|
||||
SAVE usr/src/bin/ipconfig.s.dhcp
|
||||
LOAD usr/src/bin/ipconfig.s
|
||||
ASM
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CFG.EtcFiles >LDYAI 256
|
||||
@ -227,22 +226,29 @@ CFG.Read.HOSTS stz CFG.hBuf2
|
||||
|
||||
>STYA ZPTmpPtr2
|
||||
stx CFG.hBuf2
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPTmpPtr3
|
||||
stx CFG.hBuf3
|
||||
|
||||
.1 jsr CFG.Read.GetS
|
||||
bcs .8
|
||||
|
||||
lda (ZPTmpPtr1)
|
||||
beq .1 empty line...
|
||||
|
||||
cmp #'#
|
||||
beq .1 comment...
|
||||
|
||||
jsr CFG.Read.HOSTS.Scan
|
||||
bcs .1
|
||||
|
||||
cmp #5
|
||||
bcc .1 less than 5 parameters, ignore
|
||||
|
||||
beq .2 no alias
|
||||
>LDYA ZPTmpPtr3
|
||||
jsr CFG.DNS.Add
|
||||
@ -341,6 +347,6 @@ CFG.Read.GetS >PUSHWI 255
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/IPCONFIG.S.ETC
|
||||
LOAD USR/SRC/SBIN/IPCONFIG.S
|
||||
SAVE usr/src/bin/ipconfig.s.etc
|
||||
LOAD usr/src/bin/ipconfig.s
|
||||
ASM
|
||||
|
@ -5,16 +5,16 @@ NEW
|
||||
.OR $2000
|
||||
.TF bin/ipconfig
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIB.NET.I
|
||||
.INB INC/LIBTCPIP.I
|
||||
.INB INC/NET.DHCP.I
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/kernel.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/nic.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/lib.net.i
|
||||
.INB inc/libtcpip.i
|
||||
.INB inc/net.dhcp.i
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 200 20 sec.
|
||||
*--------------------------------------
|
||||
@ -22,14 +22,27 @@ TIMEOUT.MAX .EQ 200 20 sec.
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
pIPCFG .BS 2
|
||||
ZPFrameBase .BS 2
|
||||
ZPFramePtr .BS 2
|
||||
ZPTmpPtr1 .BS 2
|
||||
ZPTmpPtr2 .BS 2
|
||||
ZPTmpPtr3 .BS 2
|
||||
*--------------------------------------
|
||||
ZS.END
|
||||
.ED
|
||||
|
||||
ArgIndex .BS 1
|
||||
TimeOut .BS 1
|
||||
hSocket .BS 1
|
||||
hFrame .BS 1
|
||||
ZPFrameBase .BS 2
|
||||
ZPFramePtr .BS 2
|
||||
|
||||
bDHCP .BS 1
|
||||
bETC .BS 1
|
||||
bSET .BS 1
|
||||
|
||||
CFG.hBuf1 .BS 1
|
||||
CFG.hBuf2 .BS 1
|
||||
CFG.hBuf3 .BS 1
|
||||
CFG.hCfgFile .BS 1
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -128,7 +141,8 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
|
||||
sec
|
||||
rts
|
||||
CS.RUN.SETUP
|
||||
.1 >INC.G ArgIndex
|
||||
.1 inc ArgIndex
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
bcs .4
|
||||
|
||||
@ -156,29 +170,29 @@ CS.RUN.SETUP
|
||||
rts
|
||||
|
||||
.3 ldy OptionVars,x
|
||||
lda #$80
|
||||
sta (pData),y
|
||||
lda #$ff
|
||||
sta $0,y
|
||||
bra .1
|
||||
*--------------------------------------
|
||||
.4 >LDA.G bSET
|
||||
.4 lda bSET
|
||||
bne .41 Force ...
|
||||
|
||||
lda IPCFG+S.NETCFG.STATUS
|
||||
bne .5
|
||||
|
||||
.41 lda #$ff no config, force all
|
||||
>STA.G bETC
|
||||
>STA.G bDHCP
|
||||
sta bETC
|
||||
sta bDHCP
|
||||
|
||||
.5 >LDA.G bETC
|
||||
>ORA.G bDHCP
|
||||
.5 lda bETC
|
||||
ora bDHCP
|
||||
beq CS.RUN.DUMP
|
||||
|
||||
>LDA.G bETC
|
||||
lda bETC
|
||||
bpl .6
|
||||
jsr CFG.EtcFiles
|
||||
|
||||
.6 >LDA.G bDHCP
|
||||
.6 lda bDHCP
|
||||
bpl .8
|
||||
|
||||
jsr DHCP.INIT
|
||||
@ -358,30 +372,25 @@ CS.RUN.DUMPIP >PUSHW L.MSG2
|
||||
*--------------------------------------
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9 is it a TIMER event?
|
||||
>LDA.G TimeOut
|
||||
|
||||
lda TimeOut
|
||||
beq .9
|
||||
dec
|
||||
sta (pData),y
|
||||
|
||||
dec TimeOut
|
||||
|
||||
.9 sec do not discard TIMER event
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hLIBTCPIP
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Init.Timeout ldy #TimeOut
|
||||
lda #TIMEOUT.MAX
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
Wait.TimeOut ldy #TimeOut
|
||||
lda (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/SBIN/IPCONFIG.S.DHCP
|
||||
.INB USR/SRC/SBIN/IPCONFIG.S.ETC
|
||||
.INB usr/src/bin/ipconfig.s.dhcp
|
||||
.INB usr/src/bin/ipconfig.s.etc
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
@ -446,10 +455,6 @@ MSG.DHCP.OK .AZ "IPCONFIG:Success:[IP=%d.%d.%d.%d/%d.%d.%d.%d]\r\n"
|
||||
MSG.DHCP.NA .AZ "IPCONFIG:TCPIP Already configured, exiting."
|
||||
*--------------------------------------
|
||||
IPCFG .BS S.IPCFG
|
||||
CFG.hBuf1 .BS 1
|
||||
CFG.hBuf2 .BS 1
|
||||
CFG.hBuf3 .BS 1
|
||||
CFG.hCfgFile .BS 1
|
||||
CFG.IP .BS 4
|
||||
*--------------------------------------
|
||||
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||
@ -508,18 +513,11 @@ DHCP.REQ.LEN .EQ *-DHCP.REQ
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
ArgIndex .BS 1
|
||||
bDHCP .BS 1
|
||||
bETC .BS 1
|
||||
bSET .BS 1
|
||||
DIB .BS S.DIB
|
||||
IOCTL .BS S.IOCTL
|
||||
DCB.NIC .BS S.DCB.NIC
|
||||
TimeOut .BS 1
|
||||
hSocket .BS 1
|
||||
hFrame .BS 1
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/IPCONFIG.S
|
||||
SAVE usr/src/bin/ipconfig.s
|
||||
ASM
|
||||
|
@ -720,5 +720,5 @@ IO.FIFO .BS 12 /DEV/FIFOxx\0
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/SH.S
|
||||
SAVE usr/src/bin/sh.s
|
||||
ASM
|
||||
|
@ -646,5 +646,5 @@ DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sbin/cifsd
|
||||
SAVE usr/src/sbin/cifsd.s
|
||||
ASM
|
||||
|
@ -37,6 +37,12 @@ ZPnRequestLen .BS 2
|
||||
ZPLinePtr .BS 2
|
||||
ZPRepPtr .BS 2
|
||||
|
||||
CLN.hSocket .BS 1
|
||||
REP.hBuf .BS 1
|
||||
REQ.hFile .BS 1
|
||||
REQ.KeepAlive .BS 1
|
||||
REQ.MimeType .BS 1
|
||||
REQ.hReq .BS 1
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
@ -313,13 +319,13 @@ CS.RUN.SERVER lda hSrvSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.accept
|
||||
bcs .8
|
||||
|
||||
>STA.G CLN.hSocket
|
||||
sta CLN.hSocket
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPSktPtr
|
||||
|
||||
>PUSHW L.MSG.INCOMING
|
||||
|
||||
>PUSHB.G CLN.hSocket
|
||||
>PUSHB CLN.hSocket
|
||||
|
||||
ldx #3
|
||||
ldy #S.SOCKET.REM.ADDR
|
||||
@ -335,11 +341,11 @@ CS.RUN.SERVER lda hSrvSocket
|
||||
jsr CS.RUN.CLIENT
|
||||
|
||||
>PUSHW L.MSG.SKTCLOSE
|
||||
>PUSHB.G CLN.hSocket
|
||||
>PUSHB CLN.hSocket
|
||||
>PUSHBI 1
|
||||
>SYSCALL printf
|
||||
|
||||
>LDA.G CLN.hSocket
|
||||
lda CLN.hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||
|
||||
.8 clc
|
||||
@ -352,17 +358,16 @@ CS.RUN.CLIENT >LDYAI 1024
|
||||
bcs CS.RUN.SERVER.RTS
|
||||
|
||||
>STYA ZPRepPtr
|
||||
txa
|
||||
>STA.G REP.hBuf
|
||||
stx REP.hBuf
|
||||
|
||||
.10 >STZ.G REQ.FullPath
|
||||
>STA.G REQ.hReq
|
||||
>STA.G REQ.KeepAlive
|
||||
>STA.G REQ.hFile
|
||||
stz REQ.hReq
|
||||
stz REQ.KeepAlive
|
||||
stz REQ.hFile
|
||||
|
||||
.1 >SLEEP
|
||||
|
||||
>LDA.G CLN.hSocket
|
||||
lda CLN.hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
|
||||
bcc .2
|
||||
|
||||
@ -386,10 +391,10 @@ CS.RUN.CLIENT >LDYAI 1024
|
||||
bcc .3
|
||||
bcs .98
|
||||
|
||||
.4 >LDA.G REQ.hReq
|
||||
.4 lda REQ.hReq
|
||||
>SYSCALL FreeMem
|
||||
|
||||
>STZ.G REQ.hReq
|
||||
stz REQ.hReq
|
||||
|
||||
>LDA.G REQ.FullPath
|
||||
beq .9
|
||||
@ -404,31 +409,31 @@ CS.RUN.CLIENT >LDYAI 1024
|
||||
|
||||
.9 >PUSHWI HTTP.404.len
|
||||
>PUSHW L.HTTP.404
|
||||
>LDA.G CLN.hSocket
|
||||
lda CLN.hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
|
||||
.8 >LDA.G REQ.KeepAlive
|
||||
beq .99
|
||||
.8 bit REQ.KeepAlive
|
||||
bpl .99
|
||||
jmp .10
|
||||
|
||||
.98 >LDA.G REQ.hReq
|
||||
.98 lda REQ.hReq
|
||||
beq .99
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.99 >LDA.G REP.hBuf
|
||||
.99 lda REP.hBuf
|
||||
>SYSCALL freemem
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.REQ.GetReq
|
||||
>STA.G REQ.hReq
|
||||
sta REQ.hReq
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPRequestPtr
|
||||
|
||||
>PUSHW L.MSG.REQ
|
||||
>PUSHB.G REQ.hReq
|
||||
>PUSHB.G CLN.hSocket
|
||||
>PUSHB REQ.hReq
|
||||
>PUSHB CLN.hSocket
|
||||
>PUSHBI 2
|
||||
>SYSCALL printf
|
||||
|
||||
@ -496,7 +501,7 @@ CS.RUN.REQ.GetLine
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.OpenFile >PUSHW L.MSG.FILE
|
||||
>PUSHB.G CLN.hSocket
|
||||
>PUSHB CLN.hSocket
|
||||
>PUSHEA.G REQ.FullPath
|
||||
>PUSHBI 3
|
||||
>SYSCALL printf
|
||||
@ -508,8 +513,7 @@ CS.RUN.OpenFile >PUSHW L.MSG.FILE
|
||||
>SYSCALL FOpen
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
>STA.G REQ.hFile
|
||||
stx REQ.hFile
|
||||
|
||||
>PUSHA
|
||||
>PUSHEA.G REQ.Stat
|
||||
@ -551,15 +555,15 @@ CS.RUN.OpenFile >PUSHW L.MSG.FILE
|
||||
|
||||
txa
|
||||
|
||||
.8 >STA.G REQ.MimeType
|
||||
.8 sta REQ.MimeType
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||
>PUSHW L.HTTP.200
|
||||
>LDA.G REQ.MimeType
|
||||
tax
|
||||
|
||||
ldx REQ.MimeType
|
||||
>PUSHW T.MIME,x
|
||||
>PUSHL.G REQ.Stat+S.STAT.SIZE
|
||||
>PUSHBI 6
|
||||
@ -571,7 +575,7 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||
|
||||
.1 >PUSHWI 1024
|
||||
>PUSHW ZPRepPtr
|
||||
>LDA.G REQ.hFile
|
||||
lda REQ.hFile
|
||||
>SYSCALL fread
|
||||
bcs .8
|
||||
|
||||
@ -587,7 +591,7 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||
|
||||
.9 php
|
||||
pha
|
||||
>LDA.G REQ.hFile
|
||||
lda REQ.hFile
|
||||
>SYSCALL FClose
|
||||
pla
|
||||
plp
|
||||
@ -595,7 +599,7 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
|
||||
*--------------------------------------
|
||||
CS.RUN.SendBuf >PUSHYA
|
||||
>PUSHW ZPRepPtr
|
||||
>LDA.G CLN.hSocket
|
||||
lda CLN.hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -647,7 +651,7 @@ CS.RUN.REQ.Connection
|
||||
|
||||
lda #$ff
|
||||
|
||||
.1 >STA.G REQ.KeepAlive
|
||||
.1 sta REQ.KeepAlive
|
||||
|
||||
clc
|
||||
rts
|
||||
@ -809,12 +813,6 @@ SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||
DS.START
|
||||
REQ.FullPath .BS MLI.MAXPATH+1
|
||||
REQ.Stat .BS S.STAT
|
||||
CLN.hSocket .BS 1
|
||||
REQ.hReq .BS 1
|
||||
REQ.hFile .BS 1
|
||||
REQ.MimeType .BS 1
|
||||
REQ.KeepAlive .BS 1
|
||||
REP.hBuf .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
@ -343,7 +343,7 @@ K.FreeMem.ERR >PUSHWI K.FreeMem.MSG
|
||||
>PUSHBI 2
|
||||
|
||||
.1 >SYSCALL2 printf
|
||||
|
||||
>DEBUG
|
||||
lda #E.INVH
|
||||
sec
|
||||
rts
|
||||
|
@ -74,7 +74,8 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
* clc
|
||||
.9 rts
|
||||
.9
|
||||
PS.Exec.RTS rts
|
||||
*/--------------------------------------
|
||||
* # Fork
|
||||
* ## C
|
||||
@ -85,7 +86,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
* A = Child PSID
|
||||
*\--------------------------------------
|
||||
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
bcs .9
|
||||
bcs PS.Exec.RTS
|
||||
sta .8+1
|
||||
|
||||
ldy #S.PS.S
|
||||
@ -93,7 +94,87 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hCS
|
||||
lda (pPS),y
|
||||
sta (PS.NewPSPtr),y
|
||||
jsr MEM.GetMemByID
|
||||
jsr Mem.IncRefCnt
|
||||
|
||||
ldy #S.MEM.PTR+1
|
||||
lda (ZPMemMgrSPtr),y
|
||||
pha
|
||||
dey
|
||||
lda (ZPMemMgrSPtr),y
|
||||
ldy #S.PS.ZP.CODE+1
|
||||
sta (PS.NewPSPtr),y
|
||||
dey
|
||||
pla
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hDS
|
||||
lda (pPS),y
|
||||
jsr MEM.Dup
|
||||
bcs .9
|
||||
|
||||
ldy #S.PS.hDS
|
||||
sta (PS.NewPSPtr),y
|
||||
jsr K.GetMemPtr
|
||||
phy
|
||||
ldy #S.PS.ZP.DATA+1
|
||||
sta (PS.NewPSPtr),y
|
||||
dey
|
||||
pla
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hSS
|
||||
lda (pPS),y
|
||||
jsr MEM.Dup
|
||||
bcs .9
|
||||
|
||||
ldy #S.PS.hSS
|
||||
sta (PS.NewPSPtr),y
|
||||
jsr K.GetMemPtr
|
||||
phy
|
||||
ldy #S.PS.ZP.STACK+1
|
||||
sta (PS.NewPSPtr),y
|
||||
dey
|
||||
pla
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr MEM.Dup
|
||||
bcs .9
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
sta (PS.NewPSPtr),y
|
||||
dey
|
||||
lda (pPS),y S.PS.ARGC
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
sta (PS.NewPSPtr),y
|
||||
iny S.PS.hARGV
|
||||
txa
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.A
|
||||
lda #0
|
||||
sta (PS.NewPSPtr),y Forked PS will get A=PSID=0
|
||||
iny
|
||||
|
||||
.1 lda (pPS),y
|
||||
sta (PS.NewPSPtr),y
|
||||
iny
|
||||
cpy #S.PS.hSession
|
||||
bne .1
|
||||
|
||||
ldy #S.PS.ZP.LOCAL
|
||||
|
||||
.2 lda (pPS),y
|
||||
sta (PS.NewPSPtr),y
|
||||
iny
|
||||
cpy #S.PS
|
||||
bne .2
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
* clc
|
||||
@ -153,24 +234,20 @@ PS.CreateChild ldx #0
|
||||
lda CORE.LastPSID
|
||||
ldy #S.PS.PID
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.PPID
|
||||
lda #S.PS.F.NOHUP
|
||||
bit PS.Flags
|
||||
beq .5
|
||||
and PS.Flags
|
||||
beq .5 set PPID = 0
|
||||
|
||||
lda PS.Table.hPS Select PS0
|
||||
jsr K.GetMemPtr
|
||||
bra .6
|
||||
|
||||
.5 >LDYA pPs
|
||||
|
||||
.6 >STYA ZPPtr1
|
||||
ldy #S.PS.PID
|
||||
lda (ZPPtr1),y
|
||||
iny #S.PS.PID
|
||||
lda (pPS),y
|
||||
dey #S.PS.PPID
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hCWD copy hPREFIX...
|
||||
lda (ZPPtr1),y
|
||||
.5 sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hCWD copy hPREFIX...
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
|
||||
jsr K.StrDup
|
||||
@ -183,7 +260,7 @@ PS.CreateChild ldx #0
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
ldy #S.PS.hENV
|
||||
lda (ZPPtr1),y
|
||||
lda (pPS),y
|
||||
|
||||
jsr MEM.DupX dup hENV from parent PS
|
||||
bcs .9
|
||||
@ -193,14 +270,14 @@ PS.CreateChild ldx #0
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
|
||||
.7 lda (ZPPtr1),y
|
||||
.7 lda (pPS),y
|
||||
sta (PS.NewPSPtr),y
|
||||
iny
|
||||
cpy #S.PS.hStdErr+1
|
||||
bne .7
|
||||
|
||||
ldy #S.PS.hSession
|
||||
lda (ZPPtr1),y
|
||||
lda (pPS),y
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
* tax
|
||||
@ -211,11 +288,12 @@ PS.CreateChild ldx #0
|
||||
lda #S.PS.F.HOLD
|
||||
bit PS.Flags
|
||||
beq .8
|
||||
ora (ZPPtr1)
|
||||
sta (ZPPtr1) HOLD parent PS
|
||||
|
||||
ora (pPS)
|
||||
sta (pPS) HOLD parent PS
|
||||
lda CORE.LastPSID
|
||||
ldy #S.PS.CPID
|
||||
sta (ZPPtr1),y
|
||||
sta (pPS),y
|
||||
.8
|
||||
* lda #S.PS.S.INIT
|
||||
* ldy #S.PS.S
|
||||
|
Loading…
x
Reference in New Issue
Block a user