From 98617e93dccb331b89df8c4b808aa8186b91c51e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 17 Oct 2018 17:31:29 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/KERNEL.I.txt | 4 ++-- SBIN/SHELL.S.txt | 5 +++-- SYS/KERNEL.S.CORE.txt | 36 ++++++++++++++++--------------- SYS/KERNEL.S.INIT.txt | 7 +++--- SYS/KERNEL.S.IRQ.txt | 14 ++++++------ SYS/KERNEL.S.MEM.txt | 45 ++++++++++++++++++--------------------- SYS/KERNEL.S.PS.txt | 19 +++++++---------- 9 files changed, 65 insertions(+), 65 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index fe30b9af941bc815e31877a1b1273f385e0ddc66..a5dae865f66e2a5d797a8403bfeafb4d40a91a74 100644 GIT binary patch delta 8618 zcmZuW3wRS%)-#i&P19FO`bcRhmp;;_N!rkY7I_s!H?&b+0)nds7S`f|t1J2o78@RA zp?0t(E`w{q*(fYioBorcAge7!)J<5#0ePm6ls?i>p$^L1wfWDT*2nJmchdVfk2~j_ zd+)jDp0V2t?DhgaOHQUZbn>_5^RiOo9G}Z~%jRXJIc$nd0E~`vY*V}d0L8(7D~d^y za7+zH0MCm#xGa27PKFN7jVjqKaUR_Jo-;hwo=9v+*Qzs!9s=QE<}|zo*fDXAs|^{@ zNQ*nDahXW<+p~czH)e!vblkzYjjf7`L)m-W#0m9nTG`4{Tn@TvV3%>GEkq^B5?tIC zs#3=0b9d3raqM_*!j>tOQ(1wVx@B7BbU;UKnOXT@5sEu5!G>9yC6*BPBe2jBt;Wsx z$NIQOM}`z6{3K2Uyz%u`EBpiZ^#8!#l&~zzJv9REl9=S&P0Uo)3bH^V;Fd>r^(M5{WLR=0Y$2nie^p)QZ0*oQfTeJp4A zVl-x3@+;;TE>~h^mpESkFl9^`s_Gr#CAb(T3&ZkbIZ_&In&bF~=?R7r2K&$!d8L9S z0&+nfa2^V)P>9iPqL%Uq*8^lgCVXRKAD5Iz#8J;C1E1mgvw>y|^g9LsoY-YhTA)6; z*HD(jE7_MNN*nv?aP1^m;)swV=6Z{3!n{xOlzuv`Xx&37X?d#$BT|1s0Mrw-pXMCv zK1n3Mb<}(^Zt+bJ(TpXJXH~W5>AM;al=r0a2aVP?qMvO<5p*nr?rYJ?h|$`etBVHL=8(N5o&SRqE|3&oFFGQ!ZI02LV?E7>k>z zpigF%HGY}Z;B2vmLe2u%FT5Lytz(H0%oYMYFD7QblkDV zPYrwSw4ByR=`qU6%ro9HBgZf_v*tdAwdVaNS3&1LP&$F!~ z4#dXp8!;5OkG|T%y-iIJG5k#Fm8hW3P^jHPKk!ZeS>hW}Pp~H4ump%k* z_aD-RXXP;JN5eZP^QUG6JMrLwg zZI0J2rN`Zu@aRITm4H7vL68LTs>6M09Mx`M$Wh@b%d0mT>CMJ6`Zf4})#!?ArB@qW zqgv@QqpPab75b`fiK%X>32iirzwu@XQe&FeEGV8^VzPf%6X|_`4~Lbv)MW2-$~)dL zim*cO*iTfc>dW6WdVecKqK%GuK6Aw;qaYjHY_zSIRc2YR*Z4PMjw#cWZ*mgCy)ybS z(~gCvx<#hC#iqK)O-}Wln8!?c3r$Lv$T_mev~H2(Q_3bZFH+bjNn+~5|cWd z&R1S&I=@{h#0gR=M735lc?J(_)WxCAZc;(ydWXsiL90k0VY6G{PvCPC2_3yiTLEak*l< z;#9vzP!C>hftk40(%7fj(XWZH*NcjsX9urpTvs(BrL`5=epYABFX|i+EHk%L;xzP( zBqq?(-)KPC)TZ+hYEbQM%_+78^n^CA1o81;F{i%Kh!OkFN=n$zpb^C#m%FA-vqy>H zL9oCracHkS3T(HRjj~qt!fwB7J0M1a+4#sK09w$;e#^lT!4j8%<+i64Shx~)N^o>Io{!$~+xY4y z78HE1j`AeQ321HD2^1whoM=g0nfQF-#>8!jyA!px#uC7vDoL`(HIyc`k^(F` zZVp|NbgDE7kfljoN#dNr(j=QR2@NKm5bo8LU^xJQ{+c)kIyP5Hl6Q`vfTsQQAoL|J zjs;0t=ZIk-ibuF*qh+n`^jfq{eV3+MZO-UsSK=Ou1S>m9q)Q4mTazl&n^!pU`%+1r z!`g?&=#qAq94O;e5ZKfrh-=o{YSDTdrb9rty>BtvpG5yX2}})Z*DDjoIJHKYKFS?M zb4ea3>vsmmhM$z0Umny2qDk_$V?w``ynS$Eza>mx6{xvaEogR&g=k&^pT`oYDgb*0 z+UXwq_oy>akK2i;)A8N4^zdK+p#&6kqzsPMp2KYqIu|%0+=5m;`U&~SV0s1S+mHb4 zP(oY-TZQEaG{1*Ws@4*8GO^>ucnH1WVCmr%RXep@$VR^r4;#CBOFUf}4}J?ATo~+^ zp#3Hnf-Q(q5@SOWQN1U@t;K-R1f4>-5(#>5g6(I5x;+VXN%=(6FBElq6Y3HPG&`YQ zoHeZ97!Q3V9%P2YUUNdYhN>K6zMV}ja6I#EHaXw%#h(`K)-A9OGDgeIv9l zT~Bv@SEMLzbji3~x#V_o0aKMrnx`!6;j?!{o@SN98jjkcs*D8XVro?$E>x?k(%LMp z$kW&n6xmQq2fhWM{cXeK%&lCqlzfnxX&{Hlg@EPxC_nAma2m~L zXcPI|p*-?QQk}7yn7bhFv1Q9wugse}d)7AQxqNc0tZeQArY4_!K5S(>m-a>bE;HFe z?q`mg$vIHPjwhcZ8<^L|lN%0`1!Rak94aKqJjLHH)L&SBXgT=zj+C#Mr&XQDC8FThv}# zl=Zitn41$Z4& zbyV(QLmoFJCZUg*Co`!m(0p?ywFZcN*N9W{=EIw_mlgzLAnsrePkeynB*OV(0!*4G!y)o2+>5v7`HqBx!)K0pKL z+BijeY2m8E7Yf%Ft}Fa=VQrzO@XNx}h35*{!lpuN#+icm3!colQFtQDoL!aue$K(1 zcXK|@>ds!H+m!Q^t{~f2_|k-){J#7&Gcw!$`+59VfY1czgy4iFh9!o+|9EB?uNWeX zdgFNGB%{eV(KyxEVmM|vYq(@cotQt7AW&L5x|hM5*ckVDFDXKFtw%cMpE*=s#XraM zWpHZw)X`2I4oMe5uuRnYkUCu`WnXanfY><>P0oP3o)1k)=O-g|vqV`VKOlZ@^U6g% zdO01AL!Y`2rDQe*#WQF|0eT^mr#OO*u079&xqZ^9K)_5-&iIL)za_CTYxUH_b9d*~ z#Cok_mIdj@mtm$Nn>1p~@QC5R8V+ADiy&4|j{*_lg6EXGeOEwWPkdsMHhFZ)*v!d| z%@7LQ*fm}j#i;z$jc9PR@apM>=nuIlmWeb{<*DWO{pwIFKwYRNs;dI7qxKBzx6Hdn zYPwRN(WM2zT4umVO-eYJfuk08P>kX#YJ(nkP`HgmrpQG7d+Y_hmKz>2uXEXbo~E9dF&l}|yag?TTJdUpJ>teO;@ZE*I2#S!$PEo`jY=j?_qY;GrH za`X}ags$qvson)b9A}rN6uR?4++6!P?_41hW5+@_ z1ve7C>B1=7i1wz7hn(qnc@)|QVc@w1l$N~8tSX@HBbPF40hKwW8=E0VKnNNs@FE3n zj50#f~ySh_8}m3&xqrHyUQlYqp>rrZN;U z9+DdwVzGT{!)wS@flz~qS5~p*wZ8IA2!-c^&x0|LcdC$#yk;Fg5k~O`;m3I z*}}f)_5la`C#fm}kVNq?C|x;#i*JU>L2Nz==1zm(7t>%zu8oq?vhu$oNs<2-&y2Z` z(pLa#7O)m$*2!Qx{ywl!jS0E(_tI&a=RLq~uJz%UJ&6TQ!&4fLmgMt~+EW|Kk!u4&^(KA> zdeg{Hx2q5u&rd`sk2hlugI6zFK&4semYGj$Sd@%hixK+R#B12i;K<^tq@n+uhmJB& z-cKcK{P}zU_-eM;{g}Wkv-+9s_ftl-+iZ`<%a(mza+>clpWjbSQZx~kXG?Y!Q3v1* zIb2^v%_nhVXcE;;Dy4A7f>txZ$#BG0F)>r9sZd#`P})&PI{3uuuns!Bqv4D5u793K ze_>vpLOlp)?mwnbo1vOEl`7P|*2ky1Jm=AB=?HEjBIG-XDppoY0I(kJSQd<|VwkDa z>@n>c?V6`A9B_4L*4QraGg|Lm3GtH~+BE>Ep>|E98b~+ennr0;ZcpIvXaC3Tvmm#5 zeeG2bOf4=0W+Z32rcrr77dsskxy>w}PMM){OossCHgj@1Rj|L9Qc}Jzc3CJc>z29Z z)^2c>9@sGoBp;7^c$vhav*sEVUhoQZmN{ji^wAS1NItj-B7TGz`E2Um{t}8BkCt6< zwQDMgqHEhP&~ID-Nh`@~RTt=*3+NEW9KagUk_r}3itadUv{Ect@qmwwt(9B0Rn^MN zh8^p%OEoHsOM3~uF$%mY1SJrEz`Zk4x~g(RMYemk!9k7qgKJQOZ}#6qy~iHqV~d9a z(#tplTXk;_8-rpDc0x(*33nEY{!A!B@gT*Yy?D4bs24J$ce{>lOSDCxiZ>jhv62~tufcPMH)i|A6GFCkgP4il4AjIxUq}w_$oA8@ zetRPHy3}I*o?Jf$+5ff;0HShluD@a_y411WdY}yh!T%66%@b+~$CxTz@P7Cb~VI8jU4z#O{U$kSWz4~xF{ZV_}!FHB#5|E-2BR$}w!uAj` zK|7oc6RHm~&UsXx^2c^?wjtQ!7w1uv!j=8#s}6LR(axtfRMdC!a-{HU-;?iCNQ(#o zM21dw!X6vysJX}Ha()DE<~m;6peP$U;R(9s@CxDfjx4_o8;lfEU0{%g0I$-=q7`lY zach5vQ_-RC9NDip5s=@Rn=!pObKK<4Cp&GOzw7*c=c-PQOu^*Ic2;k@Z|tNuc9y}>chR-66Xqb7^MyC$2Oz~q>J~+nbAEO?O7}Nh?a8vM|;7R6_$Eb%Qvj!pt&JWzh z4->VJn!M{PX<_{g3;f z@IU2W=3fCYZJ?@mLEq}Wg+23oUhBIG&li1X`ji1>;5UK%KtX`{+d}GT(!PHYm5Q5) z8S^LVGja^m{U_?BiseV_tw*-C+O?2y;uki)+tU0>xLzriHu}2Zs{jB8-)T7&)Cj5E z3OcB9UD4FRZ$RT5+k7-?@6o6|{-_h`8!om*9X5DH^AY4_u4#r^ql|Z2=7u$$*Qvq{foTjQAooPWg0iliHl>N@kMRQfOgv zuU;+2yC`i@U%VJ~0Q~LfUf#y3cdFlu-3TJ6bcGA2Cp+a*1}o&G;?MxWgbrHOCQ!a>5CqhBHh4A=Wij3 zErP6M=a*sH8cMhTCvnV6R0^D?O=|TJl|E~InPn*+ z=vN;IN5(h*$M_HbY30gCR<3zq=CT#23^%gM@`w>2<9>>`WKmT z|3h``e}#JdFl69D@Y#6(8Or)}WgIr01q`>|_8+gQjC&89{u_OCOquI8Xq61`d}aZLElmfd@~G%-jckMaC6YzH~0ZlkS2Qy9C~el=_0A4gUk{)-A8)KaGC+SkfII_67%5Tf zIx?^Z*bfc3J|0+eZh$^KP!|f}0LK}^iNWRpST1E27ck$v1XDmT4?iM{A+IqDACYZ4 zta?;-E1Du6I`muF5V`*;St_+M@{lNpcDZc+Ve*s=w#dA#f^4fG-zq4!3SnD?@U4P! Os}QkOQ0*5Y`Tqkzm*VXJ delta 8433 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 z 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 SJf^EZj5$vJ-GRcyll~vw47ig3 delta 28572 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 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index e3a8424a..7172bc99 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -105,8 +105,8 @@ Dev.Table.hFD .EQ $0C20 K.Dev.MAX Nod.Table.hPath .EQ $0C40 K.NOD.MAX Nod.Table.hFD .EQ $0C60 K.NOD.MAX *-------------------------------------- -PS.Table.hMem .EQ $0C80 K.PS.MAX -PS.Table.PID .EQ $0CA0 K.PS.MAX +PS.Table.PID .EQ $0C80 K.PS.MAX +PS.Table.hPS .EQ $0CA0 K.PS.MAX PS.Table.Hits .EQ $0CC0 K.PS.MAX PS.Table.Stats .EQ $0CE0 K.PS.MAX *-------------------------------------- diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index f3800e00..3c4f14c9 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -133,7 +133,8 @@ CS.INIT jsr SetPWD ldy #S.PS.ARGC lda (pPs),y - + cmp #1 + beq .1 no arg, continue starting interactive jmp CSH.Init @@ -150,7 +151,7 @@ CS.INIT jsr SetPWD *-------------------------------------- CS.RUN >LDA.G bReadMode READ Command ? bne CS.RUN.READ - + ldy #S.PS.RC lda (pPs),y beq .11 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 5320331a..b1768905 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -6,7 +6,7 @@ CORE.Run stz CORE.PSIndex ldx #0 -.1 lda PS.Table.hMem,x +.1 lda PS.Table.hPS,x beq .8 jsr K.GetMemPtr @@ -217,7 +217,7 @@ CORE.Dispatch stz CORE.PSIndex ldx #0 -.1 lda PS.Table.hMem,x +.1 lda PS.Table.hPS,x beq .5 jsr K.GetMemPtr @@ -285,7 +285,7 @@ CORE.Dispatch stz CORE.PSIndex * In : A = PID to free *-------------------------------------- CORE.PSFree.A sta .1+1 Save PS ID - jsr CORE.GetPSByID PS in ZPPtr1 + jsr CORE.GetPSByID S.PS in ZPPtr1 bcs .9 >STYA ZPPtr1 @@ -302,7 +302,7 @@ CORE.PSFree.A sta .1+1 Save PS ID jsr .8 lda (ZPPtr1) get S.PS.F - and #S.PS.F.DUPENV do we have to discard duplicated env & prefix ? + and #S.PS.F.DUPENV do we have to discard duplicated env & prefix ? beq .1 ldy #S.PS.hENV @@ -314,17 +314,17 @@ CORE.PSFree.A sta .1+1 Save PS ID .1 lda #$ff Self Modified ldx #0 - + .2 cmp PS.Table.PID,x beq .3 inx cpx #K.PS.MAX bne .2 - bra * + beq * .3 stz PS.Table.PID,x - lda PS.TABLE.hMem,x - stz PS.TABLE.hMem,x + lda PS.TABLE.hPS,x + stz PS.TABLE.hPS,x .4 jmp K.FreeMem .8 lda (ZPPtr1),y @@ -337,19 +337,23 @@ CORE.GetPSByID tay beq .8 jsr CORE.GetPS - bcs .9 + bcs CORE.GetPSByID.RTS - lda PS.TABLE.hMem,y + lda PS.TABLE.hPS,y jmp K.GetMemPtr .8 >LDYAI CORE.S.PS0 Select PS0 +CORE.GetPSByID.8 clc -.9 rts +CORE.GetPSByID.RTS + rts +*-------------------------------------- +* X,A unmodified *-------------------------------------- CORE.GetPS ldy #0 .1 cmp PS.Table.PID,y - beq .8 + beq CORE.GetPSByID.8 iny cpy #K.PS.MAX bne .1 @@ -357,9 +361,6 @@ CORE.GetPS ldy #0 .9 lda #K.E.NSP * sec rts - -.8 clc - rts *-------------------------------------- *CORE.DumpEvent ldy #S.EVT-1 @@ -536,8 +537,9 @@ 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.CPUStatCnt .DA #100 +CORE.InKernelHits .BS 1 +CORE.InKernelStats .BS 1 *-------------------------------------- CORE.EvtIndex .BS 1 CORE.EvtCount .BS 1 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 0114264c..8d8030ce 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -146,8 +146,9 @@ Kernel.Init3 sta SETALTZP cmp #$84 CTRL-D for Maintenace mode bne .1 + >PUSHBI 0 >LDYAI MSG.MMode - >SYSCALL puts + >SYSCALL printf >LDYAI STARTUP.SHELL bra .8 @@ -166,7 +167,7 @@ Kernel.Init3 sta SETALTZP pla >SYSCALL Args2ArgV - plx + pla jsr K.FreeMem >PUSHBI 0 PS Flags @@ -528,7 +529,7 @@ MemMgrInit >LDYAI Mem.MHiMem ldx #K.PS.MAX*4-1 -.3 stz PS.Table.hMem,x +.3 stz PS.Table.PID,x dex bpl .3 diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 71138cd2..3835b750 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -152,33 +152,35 @@ K.IrqH.VBL.MRM jsr $FFFF SELF MODIFIED,READMOUSE *-------------------------------------- K.IrqH.Switch inc IRQ.Tick - dec CORE.CPUStat + dec CORE.CPUStatCnt bne .2 lda #100 - sta CORE.CPUStat + sta CORE.CPUStatCnt - stz CORE.InKernelStat + lda CORE.InKernelHits + stz CORE.InKernelHits + stz CORE.InKernelStats ldx #K.PS.MAX-1 .1 lda PS.Table.Hits-1,x stz PS.Table.Hits-1,x - stz PS.Table.Stats-1,x + sta PS.Table.Stats-1,x dex bpl .1 .2 lda IRQ.InKernel keep V flag set bpl .3 - inc CORE.InKernelStat + inc CORE.InKernelHits .9 clv clc rts .3 ldx CORE.PSIndex - inc PS.Table.Hits-1,x + inc PS.Table.Hits,x bit A2osX.F A2osX.F.PMODE .EQ %01000000 bvc .8 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 5539896d..dde3716a 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -236,13 +236,22 @@ Mem.NextSlot lda ZPMemMgrSPtr * none. * (X unmodified) *\-------------------------------------- +K.FreeMem.ERR >PUSHA + >PUSHBI 1 + + >PUSHWI K.FreeMem.ERR1 + lda #DEVID.SYS + >SYSCALL fprintf + sec + rts + K.FreeMem tay - beq * Slot=0, reserved by Kernel + beq K.FreeMem.ERR Slot=0, reserved by Kernel cmp Mem.LastSlot bcc .10 - bne * + bne K.FreeMem.ERR .10 jsr K.GetMemByID X unmodified lda (ZPMemMgrSPtr) @@ -299,33 +308,21 @@ K.FreeMem tay clc rts *-------------------------------------- -.9 lda $D000 - sta .91+1 - bit RRAMWRAMBNK2 - bit RRAMWRAMBNK2 - - jsr CORE.PSSelect0 Select PS0 for proper I/O devices - - jsr DRV.SYS.Control - - pla Get PC and sub 2 for calling address - sec - sbc #2 - tay +.9 ply pla - sbc #0 + pha + phy >PUSHYA >PUSHBI 2 - >LDYAI K.FreeMem.ERR - >SYSCALL printf - -.91 ldx #$ff - bit $C000,x - bit $C000,x - bra * + >PUSHWI K.FreeMem.ERR2 + lda #DEVID.SYS + >SYSCALL fprintf + sec + rts *-------------------------------------- -K.FreeMem.ERR .AZ "FreeMem:%H:hMem already freed." +K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h." +K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H." */-------------------------------------- * # GetMemPtr * A = hMem diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index da606792..532c4371 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -59,7 +59,7 @@ K.Exec >STYA PS.Args PS.CreateChild ldx #0 .1 lda PS.Table.PID,x - beq .2 Found an empty slot + beq .4 Found an empty slot inx cpx #K.PS.MAX bne .1 @@ -71,18 +71,15 @@ PS.CreateChild ldx #0 .99 plx rts -.2 phx save PS index - .4 inc CORE.LastPSID Get a PSID not already running beq .4 not = 0 lda CORE.LastPSID - jsr CORE.GetPSByID - bcc .4 + jsr CORE.GetPS Y=PS Index, X,A unmodified + bcc .4 running...loop - plx lda CORE.LastPSID sta PS.Table.PID,x - phx + phx save PS Index >LDYAI S.PS jsr K.GetMem0 Blank Everything in this S.PS @@ -91,7 +88,7 @@ PS.CreateChild ldx #0 >STYA ZPPtr3 txa plx - sta PS.Table.hMem,x + sta PS.Table.hPS,x jsr PS.SetMemOwner Set Ownership @@ -218,7 +215,7 @@ PS.Load jsr BIN.Load Y,A=filename full path ldy #S.PS.hDS sta (ZPPtr3),y save DS hMem in S.PS - jsr PS.SetMemOwner Set Ownership + jsr PS.SetMemOwner Set Ownership .2 ldy #H.BIN.SS.SIZE lda (ZPPtr4),y Load SS.SIZE @@ -421,7 +418,7 @@ K.GetPSStat >STYA ZPPtr1 ldx #0 ldy #1 - lda CORE.InKernelStat + lda CORE.InKernelStats sta (ZPPtr1),y iny @@ -429,7 +426,7 @@ K.GetPSStat >STYA ZPPtr1 .1 lda PS.Table.PID,x beq .2 - lda PS.Table.hMem,x + lda PS.Table.hPS,x sta (ZPPtr1),y iny