A2osX/SYS/KERNEL.S.PS.txt

601 lines
11 KiB
Plaintext
Raw Normal View History

2017-12-22 21:24:30 +00:00
NEW
2018-11-17 17:17:13 +00:00
PREFIX
2017-12-22 21:24:30 +00:00
AUTO 4,1
2018-10-15 06:25:40 +00:00
*--------------------------------------
2019-01-04 13:17:31 +00:00
.DUMMY
.OR ZPTMP+21
2018-10-15 06:25:40 +00:00
PS.Flags .BS 1
2018-10-26 14:46:11 +00:00
PS.ArgV .BS 2
2019-01-04 13:17:31 +00:00
PS.ArgSize .BS 2
PS.hMem .BS 1
2019-01-21 06:52:04 +00:00
PS.NewPSPtr .BS 2
2019-01-04 13:17:31 +00:00
.ED
*/--------------------------------------
2018-10-25 15:31:41 +00:00
* # ExecL
* ## C
* `int execl(const char* cmdline, short int flags);`
* ## ASM
* `>PUSHB flags`
* `>LDYA cmdline`
* `>SYSCALL execl`
* ## RETURN VALUE
* A = Child PSID
*\--------------------------------------
2018-11-30 16:00:36 +00:00
K.ExecL sty .1+1
2018-10-26 14:46:11 +00:00
sta .2+1
>PULLB PS.Flags
2018-11-30 16:00:36 +00:00
2018-10-26 14:46:11 +00:00
>LDYAI 256
jsr K.GetMem
bcs .99
2018-10-25 15:31:41 +00:00
2018-10-26 14:46:11 +00:00
stx .90+1
>STYA PS.ArgV
>PUSHYA
.1 ldy #$ff SELF MODIFIED
.2 lda #$ff SELF MODIFIED
2018-10-25 15:31:41 +00:00
2018-10-26 14:46:11 +00:00
jsr K.Args2ArgV
bcs .9
2018-12-20 16:23:43 +00:00
2018-10-26 14:46:11 +00:00
jsr PS.Exec
.9 php
2018-10-26 06:16:14 +00:00
pha
2018-10-26 14:46:11 +00:00
.90 lda #$ff SELF MODIFIED
jsr K.FreeMem
2018-10-26 06:16:14 +00:00
pla
2018-10-26 14:46:11 +00:00
plp
.99 rts
2018-10-25 15:31:41 +00:00
*/--------------------------------------
* # ExecV
2018-10-15 06:25:40 +00:00
* ## C
2019-01-18 16:06:44 +00:00
* `int execv(const char* argv[], short int flags);`
2018-10-15 06:25:40 +00:00
* ## ASM
* `>PUSHB flags`
* `>LDYA argv`
2018-10-15 15:39:21 +00:00
* `>SYSCALL execv`
2018-10-11 15:23:06 +00:00
* ## RETURN VALUE
2018-10-15 06:25:40 +00:00
* A = Child PSID
*\--------------------------------------
2018-10-26 14:46:11 +00:00
K.ExecV >STYA PS.ArgV
2018-10-15 06:25:40 +00:00
>PULLB PS.Flags
2018-10-25 15:31:41 +00:00
2019-01-21 06:52:04 +00:00
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
bcs .9
2018-11-27 14:03:26 +00:00
sta .8+1
2018-12-03 12:32:46 +00:00
2019-01-21 06:52:04 +00:00
stz K.IOBuf If !=0 after PS.Load, it's a script
2018-07-05 05:42:16 +00:00
jsr PS.Load
2018-11-23 07:02:00 +00:00
bcs .90
2018-12-03 12:32:46 +00:00
2019-01-21 06:52:04 +00:00
jsr PS.AddArgV K.IOBuf= /.../SHELL, K.Buf256=/.../SCRIPT
bcc .8 or K.IOBuf= 0, K.Buf256=/.../BINFILE
2018-11-23 07:02:00 +00:00
.90 pha save error code
.91 lda .8+1
2018-10-24 15:36:45 +00:00
jsr CORE.PSFree
pla get back error code
sec
rts
2018-11-27 14:03:26 +00:00
.8 lda #$ff SELF MODIFIED
2018-12-03 12:32:46 +00:00
.9 rts
*--------------------------------------
2016-09-29 15:30:15 +00:00
* PS.CreateChild
2016-08-17 06:25:58 +00:00
* in :
* out :
* A = PSID
*--------------------------------------
2019-01-24 13:53:29 +00:00
PS.CreateChild ldx #0
bra .2 Skip PS0
2016-08-17 06:25:58 +00:00
2018-10-15 15:39:21 +00:00
.1 lda PS.Table.PID,x
2018-10-17 15:31:29 +00:00
beq .4 Found an empty slot
2018-10-23 15:36:57 +00:00
2019-01-24 13:53:29 +00:00
.2 inx
2018-10-23 15:36:57 +00:00
cpx CORE.PSCount
2018-10-15 15:39:21 +00:00
bne .1
2016-08-17 06:25:58 +00:00
2018-10-23 15:36:57 +00:00
cpx #K.PS.MAX
bne .3
2018-10-21 20:54:07 +00:00
lda #E.OOH
2016-08-17 06:25:58 +00:00
sec
rts
.99 plx
rts
2018-10-23 15:36:57 +00:00
.3 inc CORE.PSCount
2018-10-15 15:39:21 +00:00
.4 inc CORE.LastPSID Get a PSID not already running
2016-08-17 06:25:58 +00:00
beq .4 not = 0
lda CORE.LastPSID
2018-10-17 15:31:29 +00:00
jsr CORE.GetPS Y=PS Index, X,A unmodified
bcc .4 running...loop
2016-08-17 06:25:58 +00:00
lda CORE.LastPSID
sta PS.Table.PID,x
2018-10-17 15:31:29 +00:00
phx save PS Index
2016-08-17 06:25:58 +00:00
>LDYAI S.PS
2018-06-21 15:12:10 +00:00
jsr K.GetMem0 Blank Everything in this S.PS
bcs .99
2019-01-21 06:52:04 +00:00
>STYA PS.NewPSPtr
2019-01-04 13:17:31 +00:00
stx PS.hMem
txa
plx
2018-10-17 15:31:29 +00:00
sta PS.Table.hPS,x
2018-06-21 15:12:10 +00:00
jsr PS.SetMemOwner Set Ownership
ldy #S.PS.PID
lda CORE.LastPSID
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
2016-08-17 06:25:58 +00:00
ldy #S.PS.hPREFIX copy hPREFIX...
lda (pPs),y
2018-06-21 15:12:10 +00:00
jsr K.GetMemPtr
2018-12-20 16:23:43 +00:00
>SYSCALL StrDup
bcs .9
2016-08-17 06:25:58 +00:00
2018-11-28 14:58:42 +00:00
jsr PS.SetMemOwner Set Ownership
2016-08-17 06:25:58 +00:00
txa
ldy #S.PS.hPREFIX
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
2016-08-17 06:25:58 +00:00
2018-11-28 14:58:42 +00:00
lda #S.PS.F.DUPENV
bit PS.Flags need to create ENV ?
beq .6 no...
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr) Mark this PS with DUPENV flag
2018-11-28 14:58:42 +00:00
2019-01-22 16:35:42 +00:00
jsr ENV.Dup dup hENV from parent PS
bcs .9
2019-01-22 16:35:42 +00:00
2016-08-17 06:25:58 +00:00
ldy #S.PS.hENV
2019-01-22 16:35:42 +00:00
bra .8 A = hMem, X = PageCnt
.6 ldy #S.PS.ENVPAGECNT reuse hENV/pageCnt from parent PS
2016-08-17 06:25:58 +00:00
lda (pPs),y
2019-01-22 16:35:42 +00:00
tax
iny
lda (pPs),y
2019-01-21 06:52:04 +00:00
.8 sta (PS.NewPSPtr),y
2019-01-22 16:35:42 +00:00
txa
dey
sta (PS.NewPSPtr),y
2016-08-17 06:25:58 +00:00
2018-11-28 14:58:42 +00:00
ldy #S.PS.hStdIn
2016-08-17 06:25:58 +00:00
.81 lda (pPs),y
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
2016-08-17 06:25:58 +00:00
iny
2017-01-12 17:43:45 +00:00
cpy #S.PS.hStdErr+1
2016-08-17 06:25:58 +00:00
bne .81
2019-02-03 21:58:26 +00:00
bit PS.Flags S.PS.F.NOHUP
bmi .5
ldy #S.PS.PID
2016-08-17 06:25:58 +00:00
lda (pPs),y
ldy #S.PS.PPID
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
2019-02-03 21:58:26 +00:00
.5 lda #S.PS.F.HOLD
2017-10-27 14:56:46 +00:00
bit PS.Flags
beq .82
2016-08-17 06:25:58 +00:00
ora (pPs)
2018-10-15 06:25:40 +00:00
sta (pPs) HOLD parent PS
.82 lda #S.PS.F.INIT
2019-01-21 06:52:04 +00:00
ora (PS.NewPSPtr)
sta (PS.NewPSPtr) Make this PS Init....
2017-01-12 17:43:45 +00:00
ldy #S.PS.CPID
lda CORE.LastPSID
2017-01-12 17:43:45 +00:00
sta (pPs),y
clc Exit with A=PSID
.9 rts
2016-08-17 06:25:58 +00:00
*--------------------------------------
2019-01-18 16:06:44 +00:00
PS.Load ldy #$ff
.1 iny
lda (PS.ArgV),y
beq .2 no / in path...try search in PATH
cmp #'/'
bne .1
2019-01-21 06:52:04 +00:00
>LDYA PS.ArgV found /, some path specified, no search
2019-01-26 14:01:05 +00:00
jsr K.STAT.YA.JMP
2019-01-21 06:52:04 +00:00
bcc .6 REAL path in K.Buf256
2018-11-22 16:39:41 +00:00
2019-01-18 16:06:44 +00:00
.99 rts
2019-01-21 06:52:04 +00:00
.2 >LDYA PS.ArgV
jsr ENV.Search.PATH Get fullpath in K.Buf256
bcc .6
ldy #S.PS.hPREFIX
lda (pPS),y
jsr K.GetMemPtr
>STYA ENV.SearchPath
2019-01-18 16:06:44 +00:00
>LDYA PS.ArgV
2019-01-21 06:52:04 +00:00
jsr ENV.Search.YA
2019-01-18 16:06:44 +00:00
bcs .99
2019-01-21 06:52:04 +00:00
2019-01-18 16:06:44 +00:00
.6 lda K.S.STAT+S.STAT.P.TYPE
2018-11-22 16:39:41 +00:00
cmp #S.FI.T.BIN
2019-01-21 06:52:04 +00:00
beq PS.LoadBIN
2019-01-18 16:06:44 +00:00
.7 cmp #S.FI.T.TXT
beq PS.Load.SCRIPT
2018-11-23 16:20:19 +00:00
* cmp #S.FI.T.SYS
* bra *
2018-11-22 16:39:41 +00:00
2019-01-18 16:06:44 +00:00
PS.Load.IBIN lda #E.IBIN
.HS 2C
PS.Load.IPATH lda #E.BADPATH
sec
PS.Load.RTS rts
2019-01-21 06:52:04 +00:00
PS.Load.SCRIPT ldx #$ff
.10 inx Save Script name in IOBuf
lda K.Buf256,x
sta K.IOBuf,x
bne .10
jsr PS.LoadGetHeader
2019-01-18 16:06:44 +00:00
bcs PS.Load.RTS
2018-11-22 16:39:41 +00:00
>LDYAI PS.Load.ROOT
2019-01-21 06:52:04 +00:00
jsr K.GetEnv
2019-01-18 16:06:44 +00:00
bcs PS.Load.IPATH
2018-11-22 16:39:41 +00:00
2019-01-21 06:52:04 +00:00
>STYA .2+1
2018-11-22 16:39:41 +00:00
ldx #$ff
2018-12-03 12:32:46 +00:00
2019-01-21 06:52:04 +00:00
.1 inx
.2 lda $ffff,x SELF MODIFIED
sta K.Buf256,x K.Buf256 = "/ROOT/"
bne .1
2018-11-22 16:39:41 +00:00
ldy #0
2019-01-21 06:52:04 +00:00
.3 lda K.IOBuf+128,y Check HEADER= "#!/"
2018-11-22 16:39:41 +00:00
cmp PS.Load.HEADER,y
2019-01-18 16:06:44 +00:00
bne PS.Load.IBIN
2018-11-22 16:39:41 +00:00
iny
cpy #3
bne .3
2019-01-21 06:52:04 +00:00
.4 iny
2018-11-22 16:39:41 +00:00
inx
lda K.IOBuf+128-1,y
2019-01-21 06:52:04 +00:00
sta K.Buf256-1,x K.Buf256 = "/ROOT/BIN/SHELL"
2018-12-03 12:32:46 +00:00
beq .5
eor #C.CR
bne .4
2019-01-21 06:52:04 +00:00
sta K.Buf256-1,x K.Buf256 = "/ROOT/BIN/SHELL\0"
2018-11-22 16:39:41 +00:00
2019-01-26 14:01:05 +00:00
.5 >LDYAI K.Buf256
jsr K.STAT.YA.JMP
2019-01-18 16:06:44 +00:00
bcs PS.Load.RTS
2018-11-23 16:20:19 +00:00
2019-01-21 06:52:04 +00:00
lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN
bne PS.Load.IBIN K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT
2019-01-18 16:06:44 +00:00
*--------------------------------------
2019-01-21 06:52:04 +00:00
PS.LoadBIN >LDYAI K.Buf256
jsr BIN.Load
2016-08-17 06:25:58 +00:00
bcs .9
2017-01-12 17:43:45 +00:00
>STYA ZPPtr4 save PTR to Code Segment
2018-11-23 16:20:19 +00:00
phy
ldy #S.PS.ZP.CODE+1
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save pCode HI...
dey
pla
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save pCode LO...
2016-08-17 06:25:58 +00:00
txa
ldy #S.PS.hCS
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save CS hMem in S.PS
2019-01-30 06:20:13 +00:00
* jsr MEM.GetMemByID
2018-09-19 15:25:42 +00:00
* jsr PS.SetMemOwner Set Ownership
2018-09-19 15:25:42 +00:00
ldy #H.BIN.F Get Bin S.PS.F
lda (ZPPtr4),y
beq .1
ldy #S.PS.F update PS S.PS.F
2019-01-21 06:52:04 +00:00
ora (PS.NewPSPtr),y
sta (PS.NewPSPtr),y
2018-09-19 15:25:42 +00:00
.1 ldy #H.BIN.DS.SIZE+1
2017-01-12 17:43:45 +00:00
lda (ZPPtr4),y Load DS.SIZE HI
2016-08-17 06:25:58 +00:00
tax
dey
2017-01-12 17:43:45 +00:00
ora (ZPPtr4),y
2016-08-17 06:25:58 +00:00
beq .2 DS.SIZE=0...
lda (ZPPtr4),y
tay
txa Y,A = DS.SIZE
2018-08-11 10:57:57 +00:00
ldx #S.MEM.F.INIT0+S.MEM.F.DATA
jsr MEM.GetMem.YAX
2016-08-17 06:25:58 +00:00
bcs .9
phy
ldy #S.PS.ZP.DATA+1
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save pData HI...
dey
pla
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save pData LO...
2016-08-17 06:25:58 +00:00
txa
ldy #S.PS.hDS
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save DS hMem in S.PS
2018-10-17 15:31:29 +00:00
jsr PS.SetMemOwner Set Ownership
2018-07-05 05:42:16 +00:00
.2 ldy #H.BIN.SS.SIZE
lda (ZPPtr4),y Load SS.SIZE
ldy #S.PS.ZP.STACK
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save pStack LO...
tay
bne .3 SS.SIZE.LO=0, set as default $100
lda #1 SS.SIZE.HI
.HS 2C bit abs
.3 lda #0
2018-08-11 10:57:57 +00:00
ldx #S.MEM.F.ALIGN+S.MEM.F.STACK
jsr MEM.GetMem.YAX
bcs .9
ldy #S.PS.ZP.STACK+1
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save pStack HI...(LO already set to Stack TOP)
2019-02-24 22:11:52 +00:00
ldy #S.PS.ZP.LOCAL+1
sta (PS.NewPSPtr),y
txa
ldy #S.PS.hSS
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y save SS hMem in S.PS
jsr PS.SetMemOwner Set Ownership
2018-07-05 05:42:16 +00:00
ldy #H.BIN.ZP.SIZE
lda (ZPPtr4),y
clc
adc #8 Add room for 4 saved PTR
ldy #S.PS.ZP.SIZE
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
clc
.9 rts
2016-08-17 06:25:58 +00:00
*--------------------------------------
2018-11-22 16:39:41 +00:00
PS.LoadGetHeader
>PUSHWI 0 Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
2019-01-21 06:52:04 +00:00
>LDYAI K.IOBuf
2018-11-22 16:39:41 +00:00
>SYSCALL fopen
2019-01-21 06:52:04 +00:00
bcs .9
2018-11-22 16:39:41 +00:00
sta .1+1
2018-12-03 12:32:46 +00:00
2018-11-22 16:39:41 +00:00
>PUSHWI 128
>PUSHWI K.IOBuf+128
.1 lda #$ff SELF MODIFIED
2018-12-03 12:32:46 +00:00
>SYSCALL fread
2018-11-22 16:39:41 +00:00
php
pha
lda .1+1
>SYSCALL fclose
pla
plp
2019-01-21 06:52:04 +00:00
.9 rts
2018-11-22 16:39:41 +00:00
*--------------------------------------
PS.Load.ROOT .AZ "ROOT"
PS.Load.HEADER .AZ "#!/"
*--------------------------------------
2019-01-21 06:52:04 +00:00
* K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT
* - or -
* K.Buf256=/.../BINFILE,K.IOBuf=0
* Buf256+IOBUF(?)+PS.ArgV[1,...] -> #S.PS.hARGV
2018-11-23 07:02:00 +00:00
*--------------------------------------
2019-01-21 06:52:04 +00:00
PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
.60 iny
lda (PS.ArgV),y
bne .60
tya
sec
adc PS.ArgV
sta PS.ArgV
bcc .70
inc PS.ArgV+1 Skip old ARGV[0] = scriptename
.70 >LDYAI K.Buf256
jsr K.strlen
>STYA PS.ArgSize
lda K.IOBuf is there a /BIN/SHELL ?
2018-11-23 07:02:00 +00:00
beq .10
2018-11-28 14:58:42 +00:00
>LDYAI K.IOBuf
2018-11-23 16:20:19 +00:00
jsr K.strlen
2019-01-21 06:52:04 +00:00
jsr PS.AddYAp12ArgSize
2018-11-23 07:02:00 +00:00
2019-01-21 06:52:04 +00:00
.10 ldx #0 For now, 0 args...
lda K.IOBuf
beq .11 +1 for scriptpath
inx
.11 >LDYA PS.ArgV
2018-11-23 07:02:00 +00:00
>STYA ZPPtr1
2018-11-23 16:20:19 +00:00
.1 lda (ZPPtr1)
2018-11-23 07:02:00 +00:00
beq .4
2018-11-23 16:20:19 +00:00
inx
2018-11-23 07:02:00 +00:00
ldy #0
.2 iny
2018-11-23 16:20:19 +00:00
lda (ZPPtr1),y
2018-11-23 07:02:00 +00:00
bne .2
2019-01-21 06:52:04 +00:00
* lda #0
jsr PS.AddYAp12ArgSize
2018-11-23 07:02:00 +00:00
2018-12-20 16:23:43 +00:00
.3 jsr MEM.AddYp1ToPtr1
2018-11-23 07:02:00 +00:00
bra .1
2018-11-23 16:20:19 +00:00
.4 txa
ldy #S.PS.ARGC
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
2018-11-23 16:20:19 +00:00
2019-01-04 13:17:31 +00:00
>LDYA PS.ArgSize Add 1 for ending 0
2018-11-23 07:02:00 +00:00
iny
bne .5
inc
2018-11-23 16:20:19 +00:00
.5 jsr K.GetMem
2019-02-05 21:50:17 +00:00
bcs PS.AddPtr1ToStrV.RTS
2018-11-23 07:02:00 +00:00
2018-11-23 16:20:19 +00:00
>STYA ZPPtr2 Target Buffer
2018-11-22 16:39:41 +00:00
txa
2018-11-23 16:20:19 +00:00
ldy #S.PS.hARGV
2019-01-21 06:52:04 +00:00
sta (PS.NewPSPtr),y
2018-10-15 15:39:21 +00:00
2019-01-21 06:52:04 +00:00
>LDYAI K.Buf256
jsr PS.AddYAToStrV
2018-11-28 14:58:42 +00:00
lda K.IOBuf
2018-11-23 16:20:19 +00:00
beq .6
2018-10-12 15:47:57 +00:00
2018-11-28 14:58:42 +00:00
>LDYAI K.IOBuf
2019-01-21 06:52:04 +00:00
jsr PS.AddYAToStrV
2018-10-12 15:47:57 +00:00
2018-11-23 16:20:19 +00:00
.6 >LDYA PS.ArgV
>STYA ZPPtr1
2018-10-11 15:23:06 +00:00
*--------------------------------------
2018-12-20 16:23:43 +00:00
PS.AddPtr1ToStrVUntil0
2018-10-15 06:25:40 +00:00
.1 lda (ZPPtr1)
sta (ZPPtr2)
2018-12-20 16:23:43 +00:00
beq PS.AddPtr1ToStrV.8 Ending \0
2016-08-17 06:25:58 +00:00
2018-11-23 16:20:19 +00:00
jsr PS.AddPtr1ToStrV
bra .1
*--------------------------------------
2019-01-21 06:52:04 +00:00
PS.AddYAToStrV >STYA ZPPtr1
2018-11-23 16:20:19 +00:00
PS.AddPtr1ToStrV
2018-12-03 12:32:46 +00:00
ldy #$ff
2018-10-15 06:25:40 +00:00
.2 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .2
2018-12-20 16:23:43 +00:00
jsr MEM.AddYp1ToPtr1
2018-10-15 06:25:40 +00:00
2018-11-23 16:20:19 +00:00
tya
2018-10-15 06:25:40 +00:00
sec
adc ZPPtr2
sta ZPPtr2
2019-02-05 21:50:17 +00:00
bcc PS.AddPtr1ToStrV.RTS
2017-01-12 17:43:45 +00:00
inc ZPPtr2+1
2018-12-20 16:23:43 +00:00
PS.AddPtr1ToStrV.8
2019-02-05 21:50:17 +00:00
clc
PS.AddPtr1ToStrV.RTS
2018-12-20 16:23:43 +00:00
rts
*--------------------------------------
2019-01-21 06:52:04 +00:00
PS.AddYAp12ArgSize
pha
tya
sec +1 for \0
adc PS.ArgSize
sta PS.ArgSize
pla
adc PS.ArgSize+1
sta PS.ArgSize+1
rts
*--------------------------------------
2017-10-27 14:56:46 +00:00
PS.SetMemOwner lda CORE.LastPSID
ldy #S.MEM.OWNERPID
2019-01-21 06:52:04 +00:00
sta (ZPMemMgrSPtr),y
rts
*/--------------------------------------
2018-12-04 13:20:35 +00:00
* # ExecL
* ## C
* `int kill(short int pid, short int sig);`
* ## ASM
* `>PUSHB sig`
* `lda pid`
* `>SYSCALL kill`
* ## RETURN VALUE
* A = Child PSID
*\--------------------------------------
K.Kill cmp #0
beq .99 CS
jsr CORE.GetPSByID
bcs .99
>STYA ZPPtr1
>PULLA
cmp #2
bcs .9
asl
tax
jmp (.1,x)
.1 .DA K.Kill.0
.DA K.Kill.1
.9 lda #E.SYN
* sec
rts
.99 >RET 1
*--------------------------------------
K.Kill.1 lda (ZPPtr1)
and #$33
ora #S.PS.F.QUIT
sta (ZPPtr1)
2018-12-18 14:37:07 +00:00
K.Kill.0
2018-12-04 13:20:35 +00:00
clc
rts
*--------------------------------------
2016-08-17 06:25:58 +00:00
MAN
2018-11-17 17:17:13 +00:00
SAVE USR/SRC/SYS/KERNEL.S.PS
LOAD USR/SRC/SYS/KERNEL.S
2016-08-17 06:25:58 +00:00
ASM