From 31dee965f6608db27fb2ac2d6922f8a69348dc64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 10 Apr 2018 16:03:29 +0100 Subject: [PATCH] Kernel 0.9.1 : KERNEL, New IRQ Handler for Preemtive mode --- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/A2osX.I.txt | 14 +++- SYS/KERNEL.S.BIN.txt | 4 +- SYS/KERNEL.S.CORE.txt | 48 ++++++++---- SYS/KERNEL.S.GP.txt | 88 ++++++++++------------ SYS/KERNEL.S.INIT.txt | 156 ++++++++++++++++++--------------------- SYS/KERNEL.S.IRQ.txt | 69 +++++++++-------- SYS/KERNEL.S.MEM.txt | 2 +- SYS/KERNEL.S.PS.txt | 17 +++-- SYS/KERNEL.S.txt | 2 +- 12 files changed, 204 insertions(+), 196 deletions(-) diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 9d66922ea56a4ba87e67cb9fbdd15b74d5d71f0c..09e1261183a957f1dda587515ca38254b9de93ad 100644 GIT binary patch delta 7864 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 diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 36083e31b20ebd729ac0ebd4a13236659b000d61..c43ef95e99f95c22f85841305e5edcd296e07384 100644 GIT binary patch delta 14329 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 R1n*#YhrB5~6Z+qi{}1eVdvE{% delta 13774 zcmZ8o3qVv=`akE+49xJ5fq61Kyo|hG4i9lOQ(+hc8y+#>tJk1nP`*MmYxNHnlp2@B zDUa=<|7kMUF~>h>W>$k#+b&qz)S8hBm_S)6O|{#@Hu-<|-kCv{VeYx-_dU*czVn^$ zoO?MmH)l6DXLnr_3jY)z7HqvP+$(I27b&gVMUM%$#)pPj{}BC6xOj){@ z?)W>nxBM6PamRyR?kk+`49Cq$-Am}8Y1Xh4qOhHu6dj~>oM7*)(@vzBKZXu3p^=Lo zNa(snFNudsZW3Hd*~@)!u}Qiw*hhim@0WL9-pgKW4o3jo_Li<@o0(a;bQgJrz7pzo})$dU^^{Pt9ek&b_Bo`uewf>K#ce**g8r z2U6=fM#pBJ|FX6#g1OdHeAv;v@7Ep&!=V<(0gnBRH>+p9&hw$ueb1(KO>?%TF`a45 zfixPOKJ%9}aWRx1y^>a!+$DB=>XrSRlPx&ajjtU4*Qv1BrU*xxT?{?!Qrdz#E->H9 zY{5``C$oh>ab2die z5wiW^^X$j*U6GFWnM9#2#nD3_i|?9a%kw%*ZK3Z@SPJ9|EO{3nt-wOB&#jSddo`Wc()bXrgoz*Vyu4*#KgVaBi`(o z|59`BzRkjYzXm$yGhfJZQ0qrtZm+@dqmpPGZd!mr}~ zKKIvp%d40>p^GMX=Y>M(T$0&?9(ZpAn_v$7cM-!FeQ))NODO}GvXvy_-RIx)QVT4WCyCp zOkfh2?{){$n-U$p&4v9FZV|mTu{l4*)8Fe6(JhJ1d3Nd@X%ciU;3p)$9v5p`ng2MyGH|(AOO#8OwPvSzF(D|JstZ_RGTK+ADJ@VNuy)%kh<0 zi!f%auZ_ek&rWa8Nv~rv;hUE34DV&4)148$j5^)9v)4KCai=7sGbn@3O7|@2PjGWL zbNh8}(OOAH^N+iN`)79rLfi#qG>_SZgY(io5TCy`pV=97cuQe=|NZV@khEsKH@zu4 z-7Of;Nw=<SdH`rQe%AkbXXWINgriH|rQ-M!P7ZGa#cgFr!nPVVC|oMVOH($`IR7 z@~MD~Cjv5F3dj)m^$Ogc_$<7U0-yTcDpIN^io7VK1Ed6ttG{`w1^DI0!AZreD zM)n>qy&#j$*~!2)&wn8iI~<_@tZi+)Y!nBRIHgqX9k zW9L0#b|L*jM30{)*1He{H_Ce2zl{}|B~a0=?HMlDB%tVv%#_28b7x*fD9&?e|UPwyFVpxx)seFkacibKX) zW4qxHv<|jhw%DfIRVM~IE^LR;fjI!R?h7vtur-TqO7{hQ?Ev$ktgrh*?H9~PGDuD6 z)3Hy-ZcY$v5JnpVwh~aB5=W zr9!k_`U{QF5_-_O=YQaQ#sZUBAt83ms@J{$@tgLd7chJj#6^<;qnG`UQn;zC*yQ5VS29 zK)F&tuT^vjSW>|$|rBCEzT-cf4N)KS*2mP1`{DECp=n($prb&1Mhvn7c)Gos!O9V3LxcIi*a7Q2eRsXXJp39UIW z1MT$B-xbjRP#2XlZ&@)Y+`I5lU03L&Sn`vW4&9R$wi%skt(AONzk58-ew{j=H-1L2 zCl%)%`*D7Nv^)d0zS->7x4URwJQa4l;@8Kh@CYedZ(6saW_5d}@!oCmg+}Yen^AFM z8A|O<%s?tRO5Mh7aJDTll^5ijwpHXWFe0tOs{1`oqU4#PRMus`YogVNW6U&_6d3YN zre{IlQ}G3bx*QZ0Y2Ed^25YRZ{jPZ+%F9-eU+81o#<6&shYu3usQ52e_)sHUO5X8G#c4G8vaTsKnU ztTS&VW3AP4Yi4x3*8oFBb=A@eBWouZU^LD^SqawTw{+1-UWR3Qo!L}g4_+uZk;nR6=zuQpP(g~d^^e0t*sNV3iGwZEbEDh1ZB2YUD0lDOGSF5%dvVU zrsLcfX`GH{yjY4;)p=evb0)O=Jjbfnp{SWJK94m`dOtD0%8*}K_#98qMygqUN?}O} zFJ{mo)oedpV7kW(XCdWXe%M^$MM1|LKWZp1~FnXpx8?BE%4k-CV(O7AJG zZ^&Gl&+vF2QZMl0W$RW>;(DYk_Toh)MdiFjx_lH`f>Q7CHflhj3;m56k;cRcl&`N{ z%QwM05@IW|l%rJE)~sYH`E6X=S=mTaMjoJWgh13{k|eBu=W3-0qZnhh4*@2?n<;z3>u+k0M1jt(U}L>?31cx)ki1ULcLkaq+) z1}`TU1$a7ML4t%ht!X7MXIQ;%Lv5yaRC2PBqL#;5pLzA=BIPO`T-;FKSj!uglZTWK z^JvlPjT`E`s2(Zmc+^~5`>0nzK8mcL1T)RXDkf9HPEZJ+$VZ4vh}HK$dK-hWtk4@J zV9#ovP*uBnwO5@1$=C3pvAl>6vm7IeT*qORwQJUGss-QiW1R~jzn)}?up;U)pVxA8 zQD}p|l82%jNsS0c;f-Xg2*=`0q*H`r5+CQ(71nMlDK}J^czbe#BpGH^ z|H+Sm>Mj0C9*W#b!UC|m>3=w7=8A^;wT(q!93P=G@{y*A@5z5tV3eEvdZ5*(e3d+y zaZmdz*+|{ODKM?8Sy@!Sx|X*yFBiqO`thpGS@dVJ1plzgQ8i;rShv)y?{J$L4 zP*uOCHk-ZhQ8NqDmyM%T{5J(me%Yt7h$ZqS&&orZS2&yv6I1P+Q*G+Sq0lTcjdzr zcicwyyDL8%#U17dhKAajM)Ir#EAeY&zXWUaM|?w?4{_l1SMpKJQBDF9YK56yWHxTd z%zv71$AF^$k9Z_FDzV!qP@qHVV?KfWhKGG=t{@vlA17HsII8J&KQ9dH8yqj>UcLkT zuol3Ibdn>OYgqz6cmmu_c#p~7=2(iF@>j0p zX9ukB@^^U9ym7e~gY@U(vC@sJ8~I6V$VKuV9xSZiOuDnICKLLfJ_64-PVJ zUhjo+k*tq{4C^*{p*$oz!wc50^+I|i`;ddGYS!j@v3w-|h{N&$mzxhVQmQWk=va?jt! z;g3h79%(+iji3VxAL&LI>kDLG2v$da&M}xx^&1*t$;V+h1^-5V3xipC)5n!rR$f}Z$oLE!g$X*HE~{6lL$Sa6$@!*|1!de`J^?6M zz=4$i@lq>|MTWAf?W|}PQvcya%NLg!D=SJ0Ih7E@x4d{kNg3zp93-27HJLNAqN<3!AI*t1?SXT=>E47ENMB90uFvfJv;F z!(ew9h)F~^R%pbaUoP=8Ea4Twk{v|y!?C<6c#_1+!oF4=G6|Y$HZ*ds$;w5dP*A3r z;wKjJ%3#;42%7|Xv$CKG=_JVOX7{w=lb~VU#( zt%6L1B3po3`6>J{mbBGs#|pxRtg$i)#1N}3mh&U(R_C_3E> zR+g7$g8#VXN#FALx`vfVl!1k*C^nPS%W+K8bQlh)j^}=Xi+|W;Wq~V$Gq#!6)HF1% zU)RvMtyc=K04C#eALMSW@C4b4~FsMG(qf&@8$zZHkb7ZH!=BVE**-QN6soB@aB_m6%Yma zM686OfFvq0jSXah5^`K2c^HbjjFZBdpqvjWJ~(2FZlke%Fc$9Mk`}~b7K&X!-et8G zlVK%JP?Y$2tGEEm&O);nl1LSvh3_F|71m-C*`&fbxRe}LK~^jy=T$fkmy@4WkZCJO zj2av8y`)Bs6IGQs_0McW@jCs}m9-mc8#dLhL}_NSUkzEciu9}D`LCLMuf_`1B0sBP zk~Lv5iHd{?w}i}(gbptyHBiJXo3t>qu*7^%NeS1Rcy=1xNA^d;^E!Efr?}vQy8)(nmm`!kk&ey?286 ze$-pfWP^|cy;C)6HA^80QLq_ZL*_(5V5}uep=es?6Dh2Q;a%iibVTf;gJkP@Vg)QL zT%2d2h{wE8Ng>xsSZW%0#NcDfK@l5xsLsI8yj&E~=tT;7WCn`Z$RWj!pl9;(=fhaEu0)TH{elL+{%xl<{7dk1`_SFd{wa>!&^x< zcbUrb3%w(&+TjDM%UGBjrfekM$;(7N2k}u=v*FQgMH|;N0Nc}tsi^ZyvT|U~q)!tyrL*fozTf}Z?(74E0R^^XL zD^Cf30Xk`1ROR0aMZHMY#lj|X57`+DGl7tUv3M@tOU7dHyrw^Und=~3^PWTzfAL}k zS>6bX==34k90KFC&x0SzKOOh$7FC zb3l*!*heoZ<6qV4Tkho;qTK`*l_>lPiD8RR$*g$L`cJYX9>?5w-X~>%(BhZ%9DNHH zXhszKnUBhCF1(2`uceUF8+&1rdXKqenUTviGjzOJF`pB6JcQf;xe*V2`GSNdK%2~;!B}lAaPof5x!ra0L8=PyCaDflbLCS9? zVN=;XoDO(y{FeN0B34CyH%T;`VbjY6R31`YCm$zbrQ`;0r+S=>19#K+K5mGT%#!kg z>LP9>hn3U=U03{Y8=0F0xiCk5^s4yDM}&@K!YabG1aF`Ibvu5$PSw9}rx@X_X%lQs z!1SN*z$*$kO*2sRFSp}G2F@*cPxD*aUs?NpyN!X*O<>*_}AH(|J()> zK{5`X{RgO$-?|OvRKd1kg4ZNP6q_Qr@dSq>F{ZfZxG0L0CByqD0p%rf4$oxwcih^T zgQA6ZlDLg3x9GsriHO)h8V8WKlX29Nz&knF$xMOh4kaciW=y$*sSaL&c!ygPb_b=ZrhYX?$we9|*`It@??vb~-hIz-WxX+!kXG59k-+-v)qf1($S z9cJ&9a6`&7aNKOm7=1}jTgJ|~e{oD4RiYy*1c#u?9l0hZ;19WbMy@sg+c5!W3s@2-2!^yRQFN`O zkJ@`&n*&qCo+(EU^#B`vum^~wBO5D2&&zDW?prC8C-5Tu7xH>GP9j6uc$QU4$@gRn z#H3<+u$Uy};274YMesDrmTfsWoh{$W!5NXOMq7hhf^4`u2o45)>>hSETo{9I!-YM| zahwAD5%Nh}@FzA=chF%Q)g1&U9hwj3;!Kja94Et~`p|Nm3kT_TVT(=3N7K*jamw~@ zKA}w)x>niy90K|@IldexD&Xu?UUP)~6aM5~n*AJmL&lfGPUtidufVa%U<=6BG1ESU zrjRFyc}-yd2qN;d3l6FvkAOX@!bTn`TY-~6XwwQj8;b4~SOLX9R^VA-A9LDw1zGrZ zNSKz23IY2<`%B#tyW2q>T#1jWwAzoRX+82&E4BN!_wLoC%wx1#*N)zknh5GEeDV(& zC76=I_Uc=U<19hP7 zK!+p(J2?~@3P$>$F!nz*qN&&gkdg>Od=JYH|EnhWS>|DcH zV>z;Rz`1S!(#py2W>K*e%Mv_?dYEb*C5>~aO{|9NbEuURjBDlHlsycr3~@|=XYB7g z0-+g!iOM-RmzomXKi#dgNxLc5QTZk+0ZP^h$B-wSow!Sf+m;O1)j97Qh9HIPb@n`Y z#zf7<=TClMqKp{)9$ZHKERb*>DyBD#lAuZ|o^4iFNzG%+$0{ie?AY2Wsf}1gC^J>d zqV;Afn>Bi$8LWrWWu~^UV{DSG3dmIcVcekwt6D00-?HaCQu^&~pP$w@kfe=K#|-a0uAeJU75F16|?0 zH@}(a3g!+ty2XxLdW&O1Zy7&N{-~l7#h=JJsKeWxZjx3_-5uwawIcOn;#R5;ILNCH`C2r-o%pR5Ad2=5fO22-|Mgg@$=n$rlf8j~k zEo6^B!?@7kqH-Ybv`IRIaJ16AI_oEQ@NIp9(Q`#kiN5w!fX)Yg?3|jgh@`Uy4AXm=b z71*D@OVod#g*~=NUmx5hwFNr{>5m4x0=d)i4-n}tLDn0aDDgY&8WVI}N{!<^Q>Y+C zB)n()8FkX5v?wk<4k1Pz*QO#)PH6i5w12``GwfT6;ZC>yf(Rwb!o9cT;xMPHWlI)vFvx53GkkrE{A0 ztXAs|2k{iCCvY#U48Q^CVOSr40?W}f?cRMWIXS%rB!E*|07o{XopIVjEEBEuNSHV+ z*zi(3OWh%MkHUe|=pzU71j|VNEL>L9HlHM;~`n?4-s64Hso>I1@8MHV)B(0~Z& z8$)UfJG9uH;0zw@pT0{D2YIC_Vf5G~-uI>lfWs~tq=&c@y?P6KqBn6Ub=ti7@p0Kh z>xVWBZ5n!FXv+|+I3S~C$LpBTqoE%dg67~(dd(B+pqn7}AoKuj{svkU4caEo^j+%~ z0_^?;2o{?(-4>c|!|66E9hTnOOozA(hRFjRNO{p|p# zaK13)VHI3+whgfde?0*bowo`Hg1KAJ3=>T=d@N1qiDYNiCqlPG0&9Dp`zIhI4#RKr zh~C0_g`MymLIUl=1lWtPU9o_WkY)dEufA5;`pj;@!QDbB$+rtN!uN;i&&We|VGMqs zY_$vLLh+7WI9m12rM^oDja^b*Mks2~H2Bfr(BSOhyNBlw8-|O95poP~7_J^(GJN0g zgTpn$D~BHj?4GN8Mplh(7~Onzqc8{2b0*hr)YgdwEy zfbhenR#{7gO=%Bsos)G$zyaA`;HaZ*3SEB{4m#Qb07q&bx7g>y(dzcX5ymjGcSo2f zD8-|$hsiW<7-0%VU}maY!&{_w)SP&Y-Z^qis*80Nj=<(G05*D3cepK}TY9!YZF z(lFvlz8;`vF#qb@IJ6iXp!;IK91XrSC;0cU{PGmWe3 zqR+v-1^}p%eW!#;p^2m1fBW>(Z8BO*J~<_nMNfB(a{nyj+h#Z4N=;3LC$Z9p8)on6 z6J}B%tLqcSBX4O~UGs4wR{t!cL f!_NxO2;nP&ZvcD);VXu(1inEhg=d2QbK?I2`<;-A diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 425c565e1c8f4b325c0844c7e6d7bc114b7dada4..05ad858d3a52e0f9344a445cd86ab7bb7b3e2ac2 100644 GIT binary patch delta 19959 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 delta 21199 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 JlSy&?{||^v_qPB5 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 54622e1b..a3f16445 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -13,9 +13,10 @@ pPs .EQ $D6 pCode .EQ $D8 pData .EQ $DA pStack .EQ $DC -pLocal .EQ $DE +pLocal .EQ $DE 8 Bytes ZPBIN .EQ $E0 32 bytes +ZPBIN.SIZE .EQ 40 8+32 *-------------------------------------- * A2osX GLOBAL PAGE * $BD00->$BD0F : Public Vetors @@ -371,7 +372,7 @@ S.PS.CPID .EQ 3 S.PS.hCS .EQ 4 S.PS.hDS .EQ 5 S.PS.hSS .EQ 6 -*S.PS.SP .EQ 7 +S.PS.ZP.SIZE .EQ 7 S.PS.hENV .EQ 8 S.PS.hPREFIX .EQ 9 S.PS.hStdIn .EQ 10 @@ -383,9 +384,14 @@ S.PS.PC .EQ 14 S.PS.ARGC .EQ 16 S.PS.hARGS .EQ 17 -S.PS.ZP .EQ 24 8+32 Bytes +S.PS.ZP .EQ 24 + +S.PS.ZP.CODE .EQ 24 +S.PS.ZP.DATA .EQ 26 +S.PS.ZP.STACK .EQ 28 +S.PS.ZP.LOCAL .EQ 30 * -S.PS .EQ 64 +S.PS .EQ S.PS.ZP+ZPBIN.SIZE *-------------------------------------- * LIB Function Indexes *-------------------------------------- diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 3c320991..1d9154b8 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -230,8 +230,8 @@ K.FileSearch.I >PULLW .4+1 Filename sec rts *-------------------------------------- -BIN.Find.ENV.DRV >CSTR "DRV" -BIN.Find.ENV.LIB >CSTR "LIB" +BIN.Find.ENV.DRV .AZ "DRV" +BIN.Find.ENV.LIB .AZ "LIB" *-------------------------------------- * BIN.Load.YA * in : diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 71fb060f..3fd45852 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -146,10 +146,10 @@ CORE.GetEvents lda #Evt.Table bit CORE.IRQMode do we have IRQ enabled for Ticks ? bpl .1 no, regular poll - lda CORE.IRQTick a Tick ? + lda IRQ.Tick a Tick ? beq .8 no, no event - dec CORE.IRQTick + dec IRQ.Tick bra .2 .1 lda VBL get VLINE status @@ -361,7 +361,7 @@ CORE.DumpEvent ldy #S.EVT-1 >LDYAI .2 jmp K.PrintF.YA -.2 >CSTR "!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 @@ -414,10 +414,21 @@ CORE.PSSelect0 >LDYAI CORE.S.PS0 Select PS0 >LDYAI K.STACKTOP >STYA pStack + rts +*-------------------------------------- +CORE.PSEnter ldy #S.PS.ZP+ZPBIN.SIZE-1 + ldx #ZPBIN.SIZE-1 + +.1 lda (pPs),y + sta pCode,x + dey + dex + bpl .1 + rts *-------------------------------------- -CORE.PSLeave ldy #S.PS.ZP+23 - ldx #23 +CORE.PSLeave ldy #S.PS.ZP+ZPBIN.SIZE-1 + ldx #ZPBIN.SIZE-1 .1 lda pCode,x sta (pPs),y @@ -425,17 +436,23 @@ CORE.PSLeave ldy #S.PS.ZP+23 dex bpl .1 - clc No error, - rts back to Kernel + rts *-------------------------------------- -CORE.PSEnter ldy #S.PS.ZP+23 - ldx #23 - -.1 lda (pPs),y - sta pCode,x - dey - dex - bpl .1 +CORE.Sleep pla get PC LO + sec + sbc pCode + ldy #S.PS.PC + sta (pPs),y + + pla get PC HI + sbc pCode+1 + iny + sta (pPs),y + + lda (pPs) + ora #S.PS.F.SLEEP + sta (pPs) + clc rts *-------------------------------------- CORE.PSResume ldy #S.PS.PC @@ -462,7 +479,6 @@ CORE.EvtCount .BS 1 CORE.VBLState .BS 1 CORE.IRQMode .BS 1 -CORE.IRQTick .BS 1 CORE.TickPerSec .BS 1 CORE.TickPer10t .BS 1 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 06d768bc..e04bf8a1 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -32,7 +32,7 @@ AUTO 4,1 * X = MLI Function * A = Param Count *-------------------------------------- - jmp GP.ROMCall + jmp GP.RomCall *-------------------------------------- * BADCALL *-------------------------------------- @@ -42,26 +42,13 @@ AUTO 4,1 *-------------------------------------- * SLEEP *-------------------------------------- - pla get PC LO - sec - sbc pCode - ldy #S.PS.PC - sta (pPs),y - - pla get PC HI - sbc pCode+1 - iny - sta (pPs),y - - lda (pPs) - ora #S.PS.F.SLEEP - sta (pPs) - clc - rts + jmp CORE.Sleep *-------------------------------------- * *** MUST BE REINTRANT *** *-------------------------------------- -GP.SysCall bit K.SYSCALL.BANK,x +GP.SysCall dec IRQ.InKernel + + bit K.SYSCALL.BANK,x bpl .8 in $E000, no BNK change sta .7+1 save A (Func Arg) @@ -86,28 +73,42 @@ GP.SysCall bit K.SYSCALL.BANK,x bit $C000,x bit $C000,x .5 ldx #$FF Self Modified + + inc IRQ.InKernel rts Unmodified Carry .6 ldx #$FF Self Modified .7 lda #$FF Self Modified .8 jmp (K.SYSCALL.JMP,x) *-------------------------------------- -GP.LibCall pha No need to save X, K.GetMemPtr.A will leave it unmodified +GP.LibCall dec IRQ.InKernel + + pha No need to save X, K.GetMemPtr.A will leave it unmodified tya Get LIB hMem in A jsr K.GetMemPtr.A Get LIB Code Segment (MemMgr in $E000, no BNK change) >STYA .1+1 pla -.1 jmp * +.1 jsr * SELF MODIFIED + + inc IRQ.InKernel + + rts *-------------------------------------- -GP.AtkCall >STYA .1 +GP.AtkCall dec IRQ.InKernel + + >STYA .1 jsr GO.ProDOS jsr MLI .DA #MLIATALK .1 .DA * jsr GO.A2osX + + inc IRQ.InKernel rts *-------------------------------------- -GP.ROMCall phx +GP.RomCall dec IRQ.InKernel + + phx ldx $D000 stx .8+1 @@ -119,6 +120,9 @@ GP.ROMCall phx .8 ldx #$ff bit $C000,x bit $C000,x + + inc IRQ.InKernel + rts .1 jmp (.2,x) @@ -222,31 +226,16 @@ GO.EXIT.JMP jmp $FFFF Self Modified * must exit with RTS * - CC if IRQ cleared, CS if NOT *-------------------------------------- -*GP.IrqH cld -* lda RDALTZP -* sta .2+1 -* -* bmi .1 we are already in AuxZP/LC +GP.IrqH cld + + bit IRQ.SkipA2osX After A2osX IRQ.H ? -* sta SETALTZP coming from MainLC, switch to aux -* tsx -* stx A2osX.SaveSM -* ldx A2osX.SaveSX -* txs - -*.1 jsr K.IrqH - -*.2 lda #$ff get back ZP status when called -* bmi .3 we were coming from AuxZP/LC + stz IRQ.SkipA2osX reset flag -* tsx go back to Main -* stx A2osX.SaveSX -* ldx A2osX.SaveSM -* txs -* sta CLRALTZP - -*.3 rts -*-------------------------------------- +GP.IrqH.BPL bpl GP.IrqH.DEV SELF MODIFIED + sec + rts +*-------------------------------------- GP.IrqH.TCLOCK ldy IRQ.VBL.n0 lda $c080,y @@ -256,8 +245,7 @@ GP.IrqH.TCLOCK ldy IRQ.VBL.n0 lda $c080,y lda $c088,y - inc CORE.IRQTick - + inc IRQ.Tick clc rts *-------------------------------------- @@ -272,9 +260,8 @@ GP.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE ldx IRQ.VBL.MRM+2 $Cn ldy IRQ.VBL.n0 jsr IRQ.VBL.MRM READMOUSE - - inc CORE.IRQTick + inc IRQ.Tick clc rts *-------------------------------------- @@ -322,6 +309,9 @@ GP.IrqH.DEV sta SETALTZP switch to aux LC GP.IrqHJMP ldx #DEVMGR.IRQ jmp ($fe) *-------------------------------------- +IRQ.SkipA2osX .BS 1 +IRQ.Tick .BS 1 +IRQ.InKernel .BS 1 IRQ.IntNum .BS 1 IRQ.VBL.n0 .BS 1 IRQ.VBL.0n .BS 1 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index a3d41231..fa124ac5 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -545,20 +545,20 @@ PS0Init ldx #S.DEV*2 NUL,SYS clc .9 rts *-------------------------------------- -DevMgr.SYS.TITLE >CSTR "A2osX System Screen" +DevMgr.SYS.TITLE .AZ "A2osX System Screen" *-------------------------------------- DevMgr.NUL cld jmp (DevMgr.NUL.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED .BS 6 - >CSTR "NUL" NAME + .AZ "NUL" NAME .HS 00 NAME must Be 4 bytes long *-------------------------------------- DevMgr.SYS cld jmp (DevMgr.SYS.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ .BS 6 - >CSTR "SYS" NAME + .AZ "SYS" NAME .HS 00 NAME must Be 4 bytes long *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler @@ -566,22 +566,24 @@ DevMgr.SYS cld *-------------------------------------- IrqMgrInit >LDYAI MSG.IRQ >SYSCALL PrintF.YA -* php -* sei -* >LDYA $FFFE -* >STYA IRQ.OldFFFE -* >LDYAI K.IrqHAuxLC -* >STYA $FFFE + + php + sei + >LDYA $FFFE + >STYA K.IRQ.OldFFFE + >LDYAI K.IrqHAuxLC + >STYA $FFFE -* >LDYAI GP.IrqH -* >STYA K.MLI.PARAMS+2 -* >MLICALL MLIALLOCIRQ -* bcs .9 + >LDYAI GP.IrqH + >STYA K.MLI.PARAMS+2 + + >MLICALL MLIALLOCIRQ + bcs .90 -* lda K.MLI.PARAMS+1 -* sta IRQ.INTNUM - -* plp + lda K.MLI.PARAMS+1 + sta IRQ.INTNUM + + plp jsr IrqMgrInit.TClock bcs .1 @@ -589,10 +591,12 @@ IrqMgrInit >LDYAI MSG.IRQ lda #"C" sta SYS.BASL0+38 - >LDYAI GP.IrqH.TClock - jsr IrqMgrInit.MLI - bcs .9 + lda #GP.IrqH.TCLOCK-GP.IrqH.BPL-2 + sta GP.IrqH.BPL+1 + >LDYAI K.IrqH.TCLOCK + >STYA K.IrqHAuxLC.JSR+1 + >LDYAI MSG.IRQ.CLOCK >SYSCALL PrintF.YA @@ -605,9 +609,11 @@ IrqMgrInit >LDYAI MSG.IRQ lda #"V" sta SYS.BASL0+38 - >LDYAI GP.IrqH.VBL - jsr IrqMgrInit.MLI - bcs .9 + lda #GP.IrqH.VBL-GP.IrqH.BPL-2 + sta GP.IrqH.BPL+1 + + >LDYAI K.IrqH.VBL + >STYA K.IrqHAuxLC.JSR+1 >LDYAI MSG.IRQ.VBL >SYSCALL PrintF.YA @@ -625,27 +631,11 @@ IrqMgrInit >LDYAI MSG.IRQ clc rts - + +.90 plp .9 sec rts *-------------------------------------- -IrqMgrInit.MLI >STYA K.MLI.PARAMS+2 - - php - sei - >MLICALL MLIALLOCIRQ - bcs .9 - - lda K.MLI.PARAMS+1 - sta IRQ.INTNUM - plp - clc - rts - -.9 plp - sec - rts -*-------------------------------------- IrqMgrInit.TClock stz ZPPtr1 Try finding a Mouse Card... lda #$C1 @@ -984,7 +974,7 @@ DEV.HEADER cld .BS 1 DEV.ID .BS 2 ROM.JMP .BS 1 - >CSTR "S1D1" 5 bytes + .AZ "S1D1" 5 bytes *-------------------------------------- SmartPort.OFS .HS 010305 SmartPort.SIG .HS 200003 @@ -1069,32 +1059,32 @@ TskMgrInit >LDYAI MSG.TSK >SYSCALL PutEnv.YA .9 rts *-------------------------------------- -MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n" -MSG.MAIN >CSTR " - $1100 Main...\n" -MSG.AUX >CSTR " - $0C00 Aux...\n" -MSG.GP >CSTR " - $BD00 Global Page...\n" -MSG.D1 >CSTR " - $D000 Bank1...\n" -MSG.D2 >CSTR " - $D000 Bank2...\n" -MSG.E0 >CSTR " - $E000...\n" -MSG.HZ >CSTR "Kernel SYS Timer Set For %d0 hz Machine.\n" -MSG.Init2.OK >CSTR "A2osX[Stage2]:Complete.\n" +MSG.Init2 .AZ "A2osX[Stage2]:Init\nInstalling KERNEL...\n" +MSG.MAIN .AZ " - $1100 Main...\n" +MSG.AUX .AZ " - $0C00 Aux...\n" +MSG.GP .AZ " - $BD00 Global Page...\n" +MSG.D1 .AZ " - $D000 Bank1...\n" +MSG.D2 .AZ " - $D000 Bank2...\n" +MSG.E0 .AZ " - $E000...\n" +MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n" +MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" *-------------------------------------- -MSG.Init3 >CSTR "A2osX[Stage3]:Init\r\n" -MSG.DEV >CSTR "-Device Manager...\r\n" -MSG.IRQ >CSTR "-Interrupt Manager...\r\n" -MSG.IRQ.VBL >CSTR " (Mouse VBL IRQ Activated)\r\n" -MSG.IRQ.CLOCK >CSTR " (Clock Card IRQ Activated)\r\n" -MSG.IRQ.POLL >CSTR " (Polling Mode)\r\n" -MSG.EVT >CSTR "-Event Manager...\r\n" -MSG.FLT >CSTR "-Path Filter...\r\n" -MSG.TSK >CSTR "-Task Manager...\r\n" -MSG.Prefix >CSTR "Prefix:%s\r\n" -MSG.Startup >CSTR "Executing Kernel Startup Script...\r\nCmd:%s\r\n" -MSG.StartupErr >CSTR "Failed : [$%h]\r\n" -MSG.Init3.OK >CSTR "A2osX[Stage3]:Complete.\r\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.EVT .AZ "-Event Manager...\r\n" +MSG.FLT .AZ "-Path Filter...\r\n" +MSG.TSK .AZ "-Task Manager...\r\n" +MSG.Prefix .AZ "Prefix:%s\r\n" +MSG.Startup .AZ "Executing Kernel Startup Script...\r\nCmd:%s\r\n" +MSG.StartupErr .AZ "Failed : [$%h]\r\n" +MSG.Init3.OK .AZ "A2osX[Stage3]:Complete.\r\n" *-------------------------------------- -MSG.CPU >CSTR "Checking CPU..." -MSG.CPU.SPEED >CSTR "Detecting CPU Speed..." +MSG.CPU .AZ "Checking CPU..." +MSG.CPU.SPEED .AZ "Detecting CPU Speed..." MSG.CPUTYPEL .DA #MSG.6502 .DA #MSG.65C02 .DA #MSG.65R02 @@ -1103,24 +1093,24 @@ MSG.CPUTYPEH .DA /MSG.6502 .DA /MSG.65C02 .DA /MSG.65R02 .DA /MSG.65816 -MSG.6502 >CSTR "6502.\n" -MSG.65C02 >CSTR "65C02.\n" -MSG.65R02 >CSTR "65R02.\n" -MSG.65816 >CSTR "65816.\n" -MSG.CPU.SPEEDOK >CSTR "%d.%02d Mhz.\n" -MSG.Z80 >CSTR "Detecting Z80 CPU..." -MSG.Z80.OK >CSTR "Detected In Slot %d.\n" -MSG.Z80.KO >CSTR "Not Detected.\n" -MSG.KCREAD >CSTR "Reading Kernel Config File..." -MSG.KCREAD.OK >CSTR "OK\n" -MSG.KCREAD.KO >CSTR "\nError While Reading Kernel Config File, Using Default.\n" +MSG.6502 .AZ "6502.\n" +MSG.65C02 .AZ "65C02.\n" +MSG.65R02 .AZ "65R02.\n" +MSG.65816 .AZ "65816.\n" +MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\n" +MSG.Z80 .AZ "Detecting Z80 CPU..." +MSG.Z80.OK .AZ "Detected In Slot %d.\n" +MSG.Z80.KO .AZ "Not Detected.\n" +MSG.KCREAD .AZ "Reading Kernel Config File..." +MSG.KCREAD.OK .AZ "OK\n" +MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n" *-------------------------------------- -DEV.SYS >CSTR "SYS" -I.ENV.A2osX >CSTR "A2OSX" -I.ENV.PATH >CSTR "PATH=${A2OSX}SBIN/;${A2OSX}BIN/" -I.ENV.LIB >CSTR "LIB=${A2OSX}LIB/" -I.ENV.DRV >CSTR "DRV=${A2OSX}DRV/" -STARTUP.CMDLINE >CSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP" +DEV.SYS .AZ "SYS" +I.ENV.A2osX .AZ "A2OSX" +I.ENV.PATH .AZ "PATH=${A2OSX}SBIN/;${A2OSX}BIN/" +I.ENV.LIB .AZ "LIB=${A2OSX}LIB/" +I.ENV.DRV .AZ "DRV=${A2OSX}DRV/" +STARTUP.CMDLINE .AZ "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP" *-------------------------------------- MLIOPEN00 .DA #3 .DA A2OSXCONF diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index eab27cc8..4d81db6a 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -13,14 +13,14 @@ AUTO 4,1 *-------------------------------------- MSLOT .EQ $7f8 *-------------------------------------- -K.IrqHAuxLC sta .6+1 +K.IrqHAuxLC sta K.IrqHAuxLC.6+1 pla pha and #$10 BRK? - bne .7 + bne K.IrqHAuxLC.7 - stx .5+1 - sty .4+1 + stx K.IrqHAuxLC.5+1 + sty K.IrqHAuxLC.4+1 lda $fe Save 2 bytes in ZP pha @@ -38,48 +38,47 @@ K.IrqHAuxLC sta .6+1 pha sta CLRWRITEAUX Driver may R/W in screen holes - jsr K.IrqH +K.IrqHAuxLC.JSR jsr K.IrqH.DEV SELF MODIFIED pla Must keep Carry - bpl .10 + bpl K.IrqHAuxLC.10 sta SETWRITEAUX -.10 pla - bpl .1 +K.IrqHAuxLC.10 pla + bpl K.IrqHAuxLC.1 sta SETREADAUX -.1 pla Get back MSLOT +K.IrqHAuxLC.1 pla Get back MSLOT sta MSLOT - sta .2+2 + sta K.IrqHAuxLC.2+2 and #$C0 eor #$C0 ....mmm...not looking link Cn.... - bne .3 + bne K.IrqHAuxLC.3 sta $CFFF Release $C800 -.2 lda $ff00 SELF MODIFIED +K.IrqHAuxLC.2 lda $ff00 SELF MODIFIED -.3 pla +K.IrqHAuxLC.3 pla sta $ff pla sta $fe -.4 ldy #$ff Self Modified -.5 ldx #$ff Self Modified -.6 lda #$ff Self Modified - bcs .8 +K.IrqHAuxLC.4 ldy #$ff Self Modified +K.IrqHAuxLC.5 ldx #$ff Self Modified +K.IrqHAuxLC.6 lda #$ff Self Modified + bcs K.IrqHAuxLC.8 not handled, pass to ProDOS rti -.7 lda .6+1 +K.IrqHAuxLC.7 lda K.IrqHAuxLC.6+1 -.8 jmp (IRQ.OldFFFE) +K.IrqHAuxLC.8 dec IRQ.SkipA2osX Make regular ProDOS IRQ manager skip A2osX + jmp (K.IRQ.OldFFFE) *-------------------------------------- * Called by : * - Kernel K.IrqHAuxLC * - ProDOS IRQ Manager (GP) *-------------------------------------- -K.IrqH jmp K.IrqH.DEV Modified by INIT -*-------------------------------------- K.IrqH.TCLOCK ldy IRQ.VBL.n0 lda $c080,y @@ -89,10 +88,7 @@ K.IrqH.TCLOCK ldy IRQ.VBL.n0 lda $c080,y lda $c088,y - inc CORE.IRQTick - - clc - rts + bra K.IrqH.Switch *-------------------------------------- K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE bcs K.IrqH.DEV Not From Mouse @@ -105,10 +101,20 @@ K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE ldx IRQ.VBL.MRM+2 $Cn ldy IRQ.VBL.n0 jsr IRQ.VBL.MRM READMOUSE +*-------------------------------------- +K.IrqH.Switch inc IRQ.Tick - inc CORE.IRQTick + bit A2osX.F A2osX.F.PMODE .EQ %01000000 + bvc .8 - clc + lda IRQ.InKernel + bmi .8 + + lda SYS.BASL0+37 + eor #$A0+'S + sta SYS.BASL0+37 + +.8 clc rts *-------------------------------------- K.IrqH.DEV >LDYAI Dev.Table @@ -140,14 +146,7 @@ K.IrqH.DEV >LDYAI Dev.Table .8 rts *-------------------------------------- -IRQ.IntNum .BS 1 -*-------------------------------------- -IRQ.OldFFFE .BS 2 -*-------------------------------------- -IRQ.VBL.n0 .BS 1 -IRQ.VBL.0n .BS 1 -IRQ.VBL.MSM jmp $0000 -IRQ.VBL.MRM jmp $0000 +K.IRQ.OldFFFE .BS 2 *-------------------------------------- K.IrqHJMP ldx #DEVMGR.IRQ jmp ($fe) diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 8045d71f..768579ad 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -365,7 +365,7 @@ K.FreeMem.A phy bit $C000,x bra * *-------------------------------------- -K.FreeMem.A.ERR >CSTR "***MemMgr:Attempt to Free an already freed hMem at $%H" +K.FreeMem.A.ERR .AZ "***MemMgr:Attempt to Free an already freed hMem at $%H" */-------------------------------------- * # GetMemPtr.A * ## In: diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 1d7fa792..b5a46359 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -263,7 +263,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path >STYA ZPPtr4 save PTR to Code Segment phy - ldy #S.PS.ZP+1 + ldy #S.PS.ZP.CODE+1 sta (ZPPtr3),y save pCode HI... dey pla @@ -291,7 +291,7 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path bcs .9 phy - ldy #S.PS.ZP+3 + ldy #S.PS.ZP.DATA+1 sta (ZPPtr3),y save pData HI... dey pla @@ -305,7 +305,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+4 + ldy #S.PS.ZP.STACK sta (ZPPtr3),y save pStack LO... tay @@ -319,15 +319,22 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path jsr MEM.GetMem.YAX bcs .9 - ldy #S.PS.ZP+5 + ldy #S.PS.ZP.STACK+1 sta (ZPPtr3),y save pStack HI...(LO alredy set to Stack TOP) txa ldy #S.PS.hSS sta (ZPPtr3),y save SS hMem in S.PS - jsr PS.SetMemOwner Set Ownership + jsr PS.SetMemOwner Set Ownership + ldy #H.BIN.EXE.ZP.SIZE + lda (ZPPtr4),y + clc + adc #8 Add room for 4 saved PTR + ldy #S.PS.ZP.SIZE + sta (ZPPtr3),y + clc .9 rts *-------------------------------------- diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 9f19d8fc..5eed7006 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -50,7 +50,7 @@ A2osX.D2 .PH $D000 .EP A2osX.E0 .PH $E000 .INB /A2OSX.SRC/SYS/KERNEL.S.JMP -* .INB /A2OSX.SRC/SYS/KERNEL.S.IRQ + .INB /A2OSX.SRC/SYS/KERNEL.S.IRQ .INB /A2OSX.SRC/SYS/KERNEL.S.MEM DevMgr.FreeMem .EQ * .EP