diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 6f97e149..a25f98d3 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 615837bc..700cf9a1 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 500125e6..8b32927d 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index d0f506fb..3ec87b2c 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -32,6 +32,7 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.MSG0 .DA MSG0 +L.MSGK .DA MSGK L.MSG1 .DA MSG1 .DA 0 *-------------------------------------- @@ -44,11 +45,17 @@ CS.RUN >LDYA pData >LDYA L.MSG0 >SYSCALL PrintF.YA + >PUSHB.G PS.KCPU + + >LDYA L.MSGK + >SYSCALL PrintF.YA + >LDA.G PS.Count beq .8 -.1 >INC.G PS.Index + >INC.G PS.Index +.1 >INC.G PS.Index tay lda (pData),y PID @@ -72,8 +79,10 @@ CS.RUN >LDYA pData >PUSHEA.G PS.FLAGS - ldy #S.PS.STATS - lda (ZPPtr),y + >INC.G PS.Index + tay + lda (pData),y + >PUSHA CPU% ldy #S.PS.PID @@ -117,14 +126,16 @@ CS.QUIT clc *-------------------------------------- CS.END MSG0 .AZ "ID CPU\% Flags UID PID Command Line\r\n" +MSGK .AZ "000 %03d\% -------- *KERNEL*\r\n" MSG1 .AZ "%03d %03d\% %s %03d %03d %s\r\n" -MSG.FLAGS .AS "IRDQHSE2" +MSG.FLAGS .AS "IRQDHSed" *-------------------------------------- .DUMMY .OR 0 DS.START PS.COUNT .BS 1 -PS.DATA .BS K.PS.MAX +PS.KCPU .BS 1 +PS.DATA .BS K.PS.MAX*2 PS.Index .BS 1 PS.FLAGS .BS 9 DS.END diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 1d7c5e96..045ed5e9 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -363,8 +363,8 @@ S.DSTAT .EQ 25 S.PS.F .EQ 0 S.PS.F.INIT .EQ %10000000 S.PS.F.RUN .EQ %01000000 -S.PS.F.DOEVENT .EQ %00100000 -S.PS.F.QUIT .EQ %00010000 +S.PS.F.QUIT .EQ %00100000 +S.PS.F.DOEVENT .EQ %00010000 S.PS.F.HOLD .EQ %00001000 S.PS.F.SLEEP .EQ %00000100 S.PS.F.EVENT .EQ %00000010 @@ -423,7 +423,7 @@ S.EVT.F.T1SEC .EQ %01000000 S.EVT.F.hMEM2 .EQ %00100000 Indicates That S.EVT.B2 is a hMem S.EVT.F.hMEM1 .EQ %00010000 Indicates That S.EVT.B1 is a hMem -S.EVT.hDEV .EQ 1 +*S.EVT.hDEV .EQ 1 S.EVT.B1 .EQ 2 S.EVT.B2 .EQ 3 S.EVT.W1 .EQ 4 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index bcf49b5e..605ccb64 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -21,7 +21,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 #0 ZP .DA 0 *-------------------------------------- @@ -50,9 +50,9 @@ CS.INIT ldy #S.PS.ARGC ldy #S.PS.hStdIn sta (pPs),y - ldy #S.PS.hStdOut + iny #S.PS.hStdOut sta (pPs),y - ldy #S.PS.hStdErr + iny #S.PS.hStdErr sta (pPs),y >STA.G hNode @@ -67,7 +67,7 @@ CS.INIT ldy #S.PS.ARGC txa >STA.G hBinName - + lda (pPs) ora #S.PS.F.EVENT Now accept events sta (pPs) @@ -82,12 +82,13 @@ CS.INIT ldy #S.PS.ARGC .9 rts *-------------------------------------- CS.RUN >SLEEP + >SYSCALL GetChar bcs CS.RUN + .11 >SLEEP >SYSCALL GetChar - bcc .11 jsr Init.Timeout @@ -102,8 +103,7 @@ CS.RUN >SLEEP cpy #MSG.TELNETOPT.LEN bne .1 -CS.RUN.LOOP - +CS.RUN.LOOP .1 >SLEEP >SYSCALL GetChar bcs .4 @@ -125,6 +125,7 @@ CS.RUN.LOOP lda (pData),y >SYSCALL GetMemPtr.A >SYSCALL ExecPS.YA + .9 rts .8 clc diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index ead8d773..3dd87652 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -24,7 +24,8 @@ CS.START cld .DA 0 .DA CS.END-CS.START Code Length To Relocate .DA 0 Data Segment to Allocate - .DA 16 SS + .DA #64 SS + .DA #6 ZP .DA 0 *-------------------------------------- * Relocation Table diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index 216c2242..a623be31 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -24,7 +24,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 #2 ZP SS .DA 0 *-------------------------------------- diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 5a2f9bec..ed90f8f7 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -33,7 +33,7 @@ CS.START cld .DA CS.END-CS.START CS .DA DS.END-DS.START DS .DA #64 SS - .DA #0 ZP (256) + .DA #16 ZP .DA 0 *-------------------------------------- * Relocation Table diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index a08cc662..fc45e5f6 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -3,17 +3,14 @@ PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- CORE.Run lda CORE.PSCount - sta CORE.Counter -* bne .1 SHOULD NEVER HAPPEN!!! + sta CORE.PSIndex -* jmp CORE.Events + beq CORE.Events SHOULD NEVER HAPPEN!!! -.1 ldx CORE.Counter - lda PS.Table.PID-1,x - bne .11 - jmp .8 +.1 ldx CORE.PSIndex + lda PS.Table.hMem-1,x + beq .8 -.11 lda PS.Table.hMem-1,x jsr K.GetMemPtr.A >STYA pPs @@ -30,37 +27,22 @@ CORE.Run lda CORE.PSCount eor #S.PS.F.HOLD unmark as HOLD sta (pPs) -.2 jsr CORE.PSSelect Restore at least ZP & Ptrs +.2 jsr CORE.PSSelect Restore ZP & Ptrs - lda (pPs) get S.PS.F again - bit #S.PS.F.SLEEP Is this PS sleeping? - beq .3 no, call INIT/RUN - - eor #S.PS.F.SLEEP unmark as SLEEP - sta (pPS) - - jsr CORE.Resume Restore PC....and JMP to - bra .41 - -.3 bit #S.PS.F.INIT - beq .4 - - eor #S.PS.F.INIT+S.PS.F.RUN unmark as INIT,mark as RUN - sta (pPS) - - ldx #TSKMGR.INIT - .HS 2C BIT abs -.4 ldx #TSKMGR.RUN - - jsr CORE.pCodeJmp Call INIT/RUN function + jsr CORE.PSExec INIT/RUN/QUIT/RESUME dec IRQ.InKernel -.41 bcc .7 INIT/RUN/RESUME said CS=QUIT? + + bcc .61 Error ? + +.5 tax Yes, From INIT or RUN,save RC -.5 tax save RC ldy #S.PS.PPID Notify Parent Process for exit code... lda (pPs),y + beq .6 no parent process + jsr CORE.GetPSByID.A X unmodified bcs .6 parent is dead.....skipping... + >STYA ZPPtr1 lda (ZPPtr1) Parent PS is HOLD? @@ -75,12 +57,24 @@ CORE.Run lda CORE.PSCount sta (ZPPtr1),y .6 lda (pPs) - eor #S.PS.F.RUN+S.PS.F.QUIT + and #$3F $ff^S.PS.F.INIT+S.PS.F.RUN + ora #S.PS.F.QUIT sta (pPs) + bra .7 - ldx #TSKMGR.QUIT Quit this process - jsr CORE.pCodeJmp Call QUIT function - dec IRQ.InKernel +.61 lda (pPs) + bit #S.PS.F.SLEEP + bne .7 + + bit #S.PS.F.INIT + beq .62 + + eor #S.PS.F.INIT+S.PS.F.RUN go from INIT to RUN + sta (pPs) + bra .7 + +.62 bit #S.PS.F.QUIT + beq .7 ldy #S.PS.PID lda (pPs),y @@ -89,9 +83,8 @@ CORE.Run lda CORE.PSCount .7 jsr CORE.PSLeave Save ZP & Ptrs -.8 dec CORE.Counter - beq CORE.Events - jmp .1 +.8 dec CORE.PSIndex + bne .1 *-------------------------------------- CORE.Events jsr CORE.GetEvents @@ -110,7 +103,7 @@ CORE.Events jsr CORE.GetEvents bmi .2 Ignore & Discard any timer event - jsr CORE.DumpEvent +* jsr CORE.DumpEvent .2 jsr CORE.DestroyEvent @@ -227,19 +220,18 @@ CORE.Dispatch lda CORE.EvtCount lda CORE.PSCount beq .9 - sta CORE.Counter + sta CORE.PSIndex -.1 ldx CORE.Counter - - lda PS.Table.PID-1,x - beq .5 +.1 ldx CORE.PSIndex lda PS.Table.hMem-1,x + beq .5 + jsr K.GetMemPtr.A >STYA pPS lda (pPs) get S.PS.F - bit #S.PS.F.INIT+S.PS.F.HOLD Init or Waiting for Another Task to Terminate? + bit #S.PS.F.INIT+S.PS.F.HOLD+S.PS.F.QUIT Init or Waiting for Another Task to Terminate? bne .5 bit #S.PS.F.EVENT Accept Events ? @@ -251,7 +243,7 @@ CORE.Dispatch lda CORE.EvtCount sta pEvent Select first event in list lda CORE.EvtCount - sta TSKMGR.EVENTCNT + sta CORE.EvtIndex .2 lda (pEvent) Empty event, select next beq .3 @@ -259,11 +251,10 @@ CORE.Dispatch lda CORE.EvtCount lda (pPs) ora #S.PS.F.DOEVENT sta (pPs) - - ldx #TSKMGR.DOEVENT - jsr CORE.pCodeJmp Call DOEVENT function + + jsr CORE.PSDoEvent dec IRQ.InKernel - + lda (pPs) eor #S.PS.F.DOEVENT sta (pPs) @@ -271,10 +262,11 @@ CORE.Dispatch lda CORE.EvtCount bcs .3 not for this PS, try next event in list jsr CORE.DestroyEvent this PS handled the EVT, destroy it... - lda CORE.EvtCount - beq .8 no more event, exit -.3 dec TSKMGR.EVENTCNT + lda CORE.EvtCount + beq .4 no more event, exit + +.3 dec CORE.EvtIndex beq .4 all EVT submitted to this PS, try other PS lda pEvent try next EVT to this PS @@ -285,7 +277,7 @@ CORE.Dispatch lda CORE.EvtCount .4 jsr CORE.PSLeave -.5 dec CORE.Counter +.5 dec CORE.PSIndex bne .1 .9 sec @@ -294,9 +286,6 @@ CORE.Dispatch lda CORE.EvtCount .8 clc rts *-------------------------------------- -CORE.Quit clc - rts -*-------------------------------------- * PS.Free.A * In : A = PID to free *-------------------------------------- @@ -338,7 +327,8 @@ CORE.PSFree.A sta .1+1 Save PS ID bra * .3 stz PS.Table.PID-1,x - lda PS.TABLE.hMem-1,x + lda PS.TABLE.hMem-1,x + stz PS.TABLE.hMem-1,x .4 jmp K.FreeMem.A .8 lda (ZPPtr1),y @@ -351,6 +341,7 @@ CORE.GetPSByID.A jsr CORE.GetPSStatus.A bcs .9 lda PS.TABLE.hMem-1,y + beq * jmp K.GetMemPtr.A .9 rts *-------------------------------------- @@ -370,16 +361,16 @@ CORE.GetPSStatus.A .8 clc rts *-------------------------------------- -CORE.DumpEvent ldy #S.EVT-1 +*CORE.DumpEvent ldy #S.EVT-1 -.1 >PUSHB (pEvent),y - dey - bpl .1 +*.1 >PUSHB (pEvent),y +* dey +* bpl .1 - >LDYAI .2 - jmp K.PrintF.YA +* >LDYAI .2 +* jmp K.PrintF.YA -.2 .AZ "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n" +*.2 .AZ "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n" *-------------------------------------- CORE.ScrSel and #$0F cmp A2osX.ASCREEN Same as active screen...nothing to do @@ -436,7 +427,7 @@ CORE.PSSelect0 >LDYAI CORE.S.PS0 Select PS0 *-------------------------------------- CORE.PSSelect ldy #S.PS.ZP+ZPBIN.SIZE-1 ldx #ZPBIN.SIZE-1 - + .1 lda (pPs),y sta pCode,x dey @@ -444,7 +435,7 @@ CORE.PSSelect ldy #S.PS.ZP+ZPBIN.SIZE-1 bpl .1 rts -*-------------------------------------- +*-------------------------------------- CORE.PSLeave ldy #S.PS.ZP+ZPBIN.SIZE-1 ldx #ZPBIN.SIZE-1 @@ -456,20 +447,85 @@ CORE.PSLeave ldy #S.PS.ZP+ZPBIN.SIZE-1 rts *-------------------------------------- -CORE.Sleep php +CORE.PSExec lda (pPS) + bit #S.PS.F.SLEEP + bne CORE.PSResume + + bit #S.PS.F.RUN + bne .2 + + bit #S.PS.F.INIT + bne .1 + + ldx #TSKMGR.QUIT + .HS 2C BIT ABS +.1 ldx #TSKMGR.INIT + .HS 2C BIT ABS +.2 ldx #TSKMGR.RUN + .HS 2C BIT ABS + +CORE.PSDoEvent ldx #TSKMGR.DOEVENT + + lda pCode+1 + pha + lda pCode + pha + php + sei + inc IRQ.InKernel + rti +*-------------------------------------- +CORE.PSResume sei + + eor #S.PS.F.SLEEP unmark as SLEEP + sta (pPS) + + >PULLA Get !BC + tax + + beq .2 + +.1 >PULLA + pha + + inx + bne .1 + +.2 ldy #S.PS.PC+1 + lda (pPs),y + pha + + dey #S.PS.PC + lda (pPs),y + pha + + dey #S.PS.P + lda (pPs),y + pha + + dey #S.PS.Y + lda (pPs),y + pha + + dey #S.PS.X + lda (pPs),y + tax + + dey #S.PS.A + lda (pPs),y + + ply + inc IRQ.InKernel + rti +*-------------------------------------- +CORE.PSSleep php sei - cld - + phy ldy #S.PS.A sta (pPs),y - lda #S.PS.F.SLEEP - - ora (pPs) - sta (pPs) - txa iny #S.PS.X sta (pPs),y @@ -498,92 +554,50 @@ CORE.Sleep php tsx + inx skip P + inx skip PC HI,LO inx - inx - inx + txa - tay Save !Byte count for later beq .8 + + tay Save !Byte count for later .2 pla >PUSHA inx bne .2 + + tya -.8 tya push CPU Stack BC to restore on top of Soft Stack - >PUSHA +.8 >PUSHA push CPU Stack BC to restore on top of Soft Stack - clc exit to kernel with CC - rts -*-------------------------------------- -CORE.Resume sei + lda (pPs) + ora #S.PS.F.SLEEP + sta (pPs) - >PULLA Get !BC - tay - - beq .2 - -.1 >PULLA + lda #0 cld,clc,cli pha - iny - bne .1 - -.2 ldy #S.PS.PC+1 - lda (pPs),y - pha - - dey #S.PS.PC - lda (pPs),y - pha - - dey #S.PS.P - lda (pPs),y - pha - - dey #S.PS.Y - lda (pPs),y - pha - - dey #S.PS.X - lda (pPs),y - tax - - dey #S.PS.A - lda (pPs),y - - ply - inc IRQ.InKernel - rti -*-------------------------------------- -CORE.pCodeJmp lda pCode+1 - pha - lda pCode - pha - php - sei - inc IRQ.InKernel - rti -*-------------------------------------- -TSKMGR.EVENTCNT .BS 1 + rti exit to kernel with CC *-------------------------------------- DevMgr.Stat .DA DevMgr.FreeMem DevMgr.Free .DA DevMgr.FreeMem .DA DevMgr.HiMem DevMgr.Count .DA #2 NUL,SYS *-------------------------------------- -CORE.EvtCount .BS 1 - CORE.VBLState .BS 1 - CORE.IRQMode .BS 1 - CORE.TickPerSec .BS 1 CORE.TickPer10t .BS 1 CORE.TickSec .BS 1 CORE.Tick10t .BS 1 +CORE.CPUStat .BS 1 +CORE.InKernelStat .BS 1 *-------------------------------------- -CORE.Counter .BS 1 +CORE.EvtIndex .BS 1 +CORE.EvtCount .BS 1 +CORE.PSIndex .BS 1 CORE.PSCount .DA #0 CORE.LastPSID .DA #0 CORE.S.PS0 .BS S.PS.hStdErr+1 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index d0e81ccc..839d9ebf 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -42,7 +42,7 @@ AUTO 4,1 *-------------------------------------- * SLEEP *-------------------------------------- - jmp CORE.Sleep + jmp CORE.PSSleep *-------------------------------------- * *** MUST BE REINTRANT *** *-------------------------------------- diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index ebdc5583..152a1a6b 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -1074,10 +1074,10 @@ MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" *-------------------------------------- MSG.Init3 .AZ "A2osX[Stage3]:Init\r\n" MSG.DEV .AZ "-Device Manager...\r\n" -MSG.IRQ .AZ "-Interrupt Manager...\r\n" -MSG.IRQ.VBL .AZ " (Mouse VBL IRQ Activated)\r\n" -MSG.IRQ.CLOCK .AZ " (Clock Card IRQ Activated)\r\n" -MSG.IRQ.POLL .AZ " (Polling Mode)\r\n" +MSG.IRQ .AZ "-Interrupt Manager..." +MSG.IRQ.VBL .AZ "Mouse VBL IRQ Activated.\r\n" +MSG.IRQ.CLOCK .AZ "Clock Card IRQ Activated.\r\n" +MSG.IRQ.POLL .AZ "Polling Mode.\r\n" MSG.EVT .AZ "-Event Manager...\r\n" MSG.FLT .AZ "-Path Filter...\r\n" MSG.TSK .AZ "-Task Manager...\r\n" diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index e8841940..f254aa25 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -21,8 +21,7 @@ K.IrqHAuxLC cld pla pha and #$10 BRK? - bne * -* bne K.IrqHAuxLC.6 + bne K.IrqHAuxLC.6 stx K.IrqHAuxLC.5+1 sty K.IrqHAuxLC.4+1 @@ -68,11 +67,17 @@ K.IrqHAuxLC.3 pla sta $ff pla sta $fe - bvc K.IrqHAuxLC.4 no task switching + + bvc K.IrqHAuxLC.4 if V, skip task switching + + tsx + txa + eor #$FC Only LO,HI & P on stack + beq K.IrqHAuxLC.4 we are in kernel CORE.Run php php make room for 2 additional bytes - + tsx lda $104,x get RTI PC LO @@ -84,10 +89,14 @@ K.IrqHAuxLC.3 pla lda $103,x get IRQ pushed P sta $101,x down 2 bytes - lda #CORE.Sleep make a RTI like "jsr CORE.Sleep" + lda #CORE.PSSleep make a RTI like "jsr CORE.Sleep" sta $102,x - lda /CORE.Sleep with RTS=PC IRQ-1 + lda /CORE.PSSleep with RTS=PC IRQ-1 sta $103,x + + lda #$A0+'S + eor SYS.BASL0+37 + sta SYS.BASL0+37 K.IrqHAuxLC.4 ldy #$ff Self Modified K.IrqHAuxLC.5 ldx #$ff Self Modified @@ -127,32 +136,41 @@ K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE *-------------------------------------- K.IrqH.Switch inc IRQ.Tick + dec CORE.CPUStat + bne .2 + + lda #100 + sta CORE.CPUStat + + stz CORE.InKernelStat + + ldx CORE.PSCount + +.1 stz PS.Table.Stat-1,x + dex + bne .1 + +.2 lda IRQ.InKernel keep V flag set + bpl .3 + + inc CORE.InKernelStat + +.9 clv + clc + rts + +.3 ldx CORE.PSIndex + inc PS.Table.Stat-1,x + bit A2osX.F A2osX.F.PMODE .EQ %01000000 bvc .8 - lda IRQ.InKernel keep V flag set - bmi .9 - lda (pPs) and #S.PS.F.DOEVENT bne .9 - lda #$A0+'S - eor SYS.BASL0+37 - sta SYS.BASL0+37 - -* ldy #S.PS.STATS -* lda (pPs),y -* inc -* sta (pPs),y - bvc * - .8 clc exit with V flag set rts - -.9 clv - clc - rts *-------------------------------------- K.IrqH.DEV >LDYAI Dev.Table >STYA $fe diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 3caa214b..2d5b271d 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -303,6 +303,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path .2 ldy #H.BIN.EXE.SS.SIZE lda (ZPPtr4),y Load SS.SIZE + ldy #S.PS.ZP.STACK sta (ZPPtr3),y save pStack LO... @@ -393,7 +394,11 @@ K.GetPSStatus.A jsr CORE.GetPSByID.A K.GetPSList.YA >STYA ZPPtr1 ldx #0 - ldy #0 + + ldy #1 + lda CORE.InKernelStat + sta (ZPPtr1),y + iny .1 lda PS.Table.PID,x beq .2 @@ -401,12 +406,18 @@ K.GetPSList.YA >STYA ZPPtr1 lda PS.Table.hMem,x iny sta (ZPPtr1),y + + lda PS.Table.Stat,x + iny + sta (ZPPtr1),y .2 inx cpx CORE.PSCount bne .1 .9 tya + lsr + dec sta (ZPPtr1) rts *--------------------------------------