From b25be9cee05c3685afe18bf9eb6b10c0df36b5ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 21 Nov 2017 17:27:07 +0100 Subject: [PATCH] Kernel 0.9.1 : Kernel/memory REORG for more IO buffers & room in LC for DHGR.DRV --- .Docs/KERNEL.md | 18 --------- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.DEV.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/FORMAT.S.txt | 8 +++- DRV/CONSOLE.DRV.S.txt | 21 ++++++----- DRV/DHGR.DRV.S.BLT.txt | 69 ++++++++++++++++------------------ DRV/DHGR.DRV.S.txt | 26 +++++++++++++ DRV/DHGR.DRV.T.txt | 52 ++++++++++++++++++-------- INC/A2osX.I.txt | 2 +- INC/KERNEL.I.txt | 33 ++++++++--------- SYS/KERNEL.S.CORE.txt | 10 ++--- SYS/KERNEL.S.D01.txt | 77 ++++++++++++++++++++------------------ SYS/KERNEL.S.DEV.txt | 14 ------- SYS/KERNEL.S.INIT.txt | 78 ++++++++++++++++++++++++++++++++++----- SYS/KERNEL.S.IRQ.txt | 8 ++-- SYS/KERNEL.S.JMP.txt | 2 +- 17 files changed, 247 insertions(+), 171 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 83a6c9b3..b1057124 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -26,15 +26,6 @@ And return, if found, the full path to it. + DstStat = S.STAT + CS : not found -# Sleep -Make current process suspend until next RUN - -## In : -+ (none) - -## Out : -+ (none) - # GetDevByID.A ## IN: @@ -55,15 +46,6 @@ Make current process suspend until next RUN + X = DEVID + Y,A = DEVSLOT -# GetDevStatus.A - -## IN: -+ A = DevID - -## OUT: -+ CC = OK, CS = ERROR -+ Y,A = Ptr to S.DEVINFO - # OpenDir.YA ## In: diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index da92786131f8ccbd066c705ee9f0dcf23c97c1d5..3ad732a9f3526da4bc3a24ae633fcd03e26684af 100644 GIT binary patch delta 8741 zcmcgRdt4J&*7FDk{fg`m)XDZ2!?r}j(tVSN)86q*dX`ptU^%Q=0J zhRb?CZGRdUkV^L9iB2}aWjWsf31^)xP`cC2&I?epP4>-irlEW7d*3W1-*)O@`ov}p zBlPxO)c2g1ny!N<^nJcsaU<6kMB6XDITP)-qu93x9>HRcPVLs9*^$mHpyX156|qm_ zj%WP6rEQ$`@bz9UH`r_9<_By0rngtlUKJulPV{AFyS1*IY-Ub2Ge4U^PV~>tR+K{h zVR5!O)2-mPPcZKc)p-HL{=?f#ELXIL1NZdv-#ZZo^|DCMpjOQB&D|&WJ?6&r_bYZX ztGtI18MD%x*(c%B@8F=j&u<;zh`Wh60=oS}nfxe&cv&qc*ph3Kz+&;XDK%;AQLvms zvRM)v*_g!S2yAQ=)VTs14V6()nH*nj#}X3aUx#+4paRaMZf=Bh>XqzXEB5xsaJ?H=X7 zHMwlYy$ZhERcma2(MSxdTYI);u5RCJR6X0DW6STU%e770)uYL5J%o5&HAXSnwa3US zy7K2VW$e#4b>-_VQ(nCVJsN~uFItR?YmHAxzt*02Gb20p8hM&PZ$ zD=|t_P*qvgw&|{F^+v>20L*oIytQ+><(7!QheS+_{>+bT3_9Lr*83&1rb}k;>CdTJ zNKaUP!pSrk|jKhX0>XmahEZQcU1r2LHe7Vfo*d(d2sB*lsu4X4Dk2;hlwt z9L8GZ_2xp=Mun|#A2vM0Rc8cKbR0AiVH()Dm4&uKb7|!a+l+%%hmE!(bJY=}Z6-{s zR3FaFr_Hx!C)K4uZ3#&+R~FfdK-|n`MUfz5%IM|@A&e=fn`8bM4U5^ZfNqXfRh7}L z%`sKww6vu2X{LlGW|JyYS7Ap9EoPSYi-zN7W6hl7TcDU@$!P7IT{>LIgN|K=bM|Dk zn&V~z8{W(nB=B!(*Q2i%a7ge1HM;p@%=HxXOfQ5-30$ryBo< zg8xIg1;(6PrdUuidr%yji=a_kf3_jqTK&R{zj@_E;O4)si$h-P^S}Ppj;)W~k76=~ zl9+qcc=934$ty@x=!ReM$O;5uk4(Il6+2ylK>N)A^OaCPB(T%$eLd-x^Fk(ZROe3R zo?$2%yN?r?Z9@Go1@`R;CY6cEApyNsLT|r~{`3y|_d4!L3Hkl)uFN8nGaoz#W{SY1 z3%)QBbIxu^6B?!prgaGSjtzCnj%&$IjUk~TzGHC)cRp6pR>H%faXO!i|3GH2ZCm21|p{G3g zC-h>Z;)(L|^0sogBu-N65Kr6*8=A=>8&PI}0)=@#oXDa$ueI10;KPU+ly#my*5?(& zh+@iG=){hHO2I78QhXLn60RwPPijW=u_sSbqI`USf`8&sihI`@Mp%j|?wyX46!;n8}+Mx1$p3ZZK#i9*4RhFDz# z6!RqohCdVSW>y00EUvD|F?z=gEO&tx}zoNZ=K z!SBOtSDcseWV_1{*XNwDbB%dPz_xWf(Y)hNL`pv#5-z;}H z?8Vm&R>3JdHuZwJZPRRECoR0zq$Kh1WXgQP3%IlMw4Y@4_1&d_%yk>azHN&CT42nK4&WoA- z{KY{h!iITXGnDFMBix7D4Yg+2hUG!fU#lE;y>1ZYoV@7k*A1;b?FOG)loxF&1bt(? zVPXWw8rlrXaL&D&`1;?w`n+=fi;DHxX5#F>rJn>c`wYxMgPHk_fpOUBOG)T@`+`eb zAztae6pNxy+CLCpM-lt>;rUSZ4Cg?3c{mr!q{}m*TzdIeXrleY%e4Tn@)L6UG8d?z zkN(QP1C37b&gH+YM-m|JNH}_Pq#1RNVfI(AJi33pIsU5Pj$&TM>+N_Qi#H-B0>&GE z1O-`fV%F@GVRuFYHpt3hQzQ<%Y&0E{c%+ak(C6>O4kHQt_x(W_3Bh8q2TAZ5 zd9P2fdZZXb# zdS|t6I!)Vh?yJ_#C@HC)RlV}zmDNk|FO$eiN@_BJr=-NJuP)xYV@vf@TSHP1#l{e~_6cO^irkfJ9^YJR5h2v# zzpLXFoRL8in$UzBCdc!eF|EU&gR0`cG_-xGjO^pXQ+XNpq4fzO#Su@Vl_>4lNuxeA z&hbDVszVXShCGxaLVKkP5#s=4mY=U*cHV4utvp{52yg+@$z+Es4=o8#7Wlt$nWk<< zKFXnQO-IpON7poT@mr6ho#F8XGE;*pV z-cep4RVJCRg4gcXRRT!(Fj z33ux-V??^&J=GQcDQI$4huss2_@zS%ZQ3!3#L|{02t{9q4>D1Mu0-K$#UK+s=!zH& zcHx7r$U&(~Ht0$aR8{yO6E@fiWL2_3Mn33{^WGQqlXupz2nDs5OF@Y_&;a3X)uB_C`L8)OoN`h;!;g;k-m)q<$- zAaSD7Z~bVr!aCTfHh(EYA0+D@b-?ujaIE=)dW$DmG^o5iNY01Qt>be_; zi8x}`=PU*!jWSMV*zlQ1?w7Ft$6j;By7fXWb`n}lP z$q9Z}{Fl;eNR&s=u%V+0`lx2JHdFhGra{YTztH}mP0}HVYXi}~o=};X3%wi~J)3Ik zC7aY#lZI;I$)=A;;uQ_-=I=;RPAn(;_-o8EFB9u!V!V(Lf#{#Zn4w;ksp$d~L?yZJ z0oRbF*N5?QTw}d@#iCwP#EBI;*BURK?SiBg#VEacOUEbVxlc%Vsq@#Z@t)7g)}F5> zkV?E_g9cnZ1rs2f5DIoXu~=vJS;RCSv2RYypU93Lvi%rI z{8k6R&=L{1jQ4;DXoz70J)|`Tkm6Nt3DZLk93wg6Hb=#8bx!%Y>yjSI>nfAvT$l-i zhN4N|fANX|Fn|t516#0&6Y2ZRLW&W7|A!Wm|5jys?ipfSM|J3^!#c`0*Bw2inLkPEWM!lo1Mw>Gu0tE-F4M3IyuCX5f(>>-lXs~75|}SBP9p|& zV;+*f2n)?FwMK#Sw$vKtMB01E`VCr+4Q&bkP(WI)4$oaO`hP6rILH8s8I+jlvCN<# zq-fVz!+qhfpnoF!`LPhr(9i2#MU+p@Yq-fUQSQH>a2+F437q8amEfKbyd2;l3tV;x zn{169!uUzRIjempRSV{;_e`Miic+m45#{lURa!VQc*PQnHpHq3*-2$`qCg^sJ5@fF z8*S@vI7SYDqVdo@Q|eyoTN><^Z03TqHqSK#hfkCP%&VmyelnOxGKELSoFMhqP^*lE z(_)PdHC!j8vjenc3I^?UG?ZW}t+YBl((0J^(~QiUsWK_*%H6V^4DMAu8$vpKC0L>5 zG}&~9bSkd59*k^tohGYJlgw$-b%v}uLo#Q;dj7$tkEOOgR#ZgL10R!;rB0L5jmC!= zJ|>l65p<|ay46ZuJgKVs2&mi4hrQ(ZN2IC9^${s1417d(@TA8}me!?0T)>lNl?h)| zyw>sj0&J=y<|%x-gI|DUx0GVC_y^9!ocZM$%NZ#ef9U)Z=Mlv5=Q-G%0~OdR;;KMj zM*K1Ul;OnTbpIxQC}Nk&P0-rpcT`tkPdR>5fkiv6RbYRes}>kSfQ9+wLI)vu0!nea zCtdP0q%3e((q2N0WpTLmXI$F1x+_V4et!}%ehK=OVwCxJM3LOf(( zs=zBcg3)}$+<|ndF-2%d7b2`}V%Yw~ah2dw2_l@dB9kkqv$%Xh;rTyO*u)p?RTPMM zpe8rhmIzFYQs_z)W1TYMvx{y8@%kl6kZM3Fh!M?+QerRBdY%Z)U_CE_K9d9hbc4@$K0!xL1r4k{M;E?@^11iCE zcQW0vd?}WB&m^I*GpRC#i50+iLuy7BkKG7ha6L}8Flz;Ksb0xvH>?rr9}}8ymNo}U zT?yV&2J;e63T7n^8`EqHm~A)NfD`;aclcbh^`>jBuz5(RcvFCMMUU01C&VJCdTPDn zlZ9J0mhLsdO>|roJUhen3Nfi;L?S0H3wMZ8WzrSLCD{TsH#?FAR@Qk_kBQ-DiBZ9^ zb{Td*I>qtoGR%m5H|+R$8CIC``mlRiFj)yeR`a9?>wblPF1!a3hjux3zeKifIaZXX zyWH2QV93j?yi-vYD1}B@VAolA)$n+#7*9i1BwR zlsCbQ3YT0ZYJ+V$Z2;g@=m0AD3M^CYy&U>dMVz`s+!!?%jbN?jk)Zo|F!=Sy=UB1= zD??)(hgM)yi>LYP^Zm?2{`yt^b(7XfmwzB2f(L$mIA(mBpZ|LwWKLsX(KDn%k?7)$+cyzq zWkf-4et~p!l?W0sZ)6obKW2}Xn21k2?x=>xN9xy(uxoxSZrC#n9S4k4A_$M?ju9Qvdf6_G(a`Z=}9&M8f=K#EL`BDmvqtKacc5 z`Q8ZZWEKZw9x6s^!6=~6o(F6Xn(E5iATt#|t6Tw#A0O$ktip)tX`@B(%nAPH1nZ(v zV*MyPmxJUIUcVcMx&|laj=E)1pNUvGYHfK4OS9k-l{D(&QEAjAqf)lXikobCHMFEq zcqe^mHx8+K7?)W(+UD6c%2*+|2HI-egyT4hqbMqq{ciN920SL04yrXwqvBvpg z0C@6>RS`jiaJz1RytFaj5Tp!fiNP{b#xy#f@?~<%+4LzByp=T){ zdStS&FuDA#r?6!!l!Z9*yha~2@x3}VrhCl?*ei;-`OiERirQa-XneOWFV9h8MAehG zgrfSwtw_n{y9glY&vWcHqFT$7Ap+``$im!Us$k`krFEfzJ|D6L>ux6r@@X1TYzt9O z-VW3cJiR`@pl~9yFbxs}QmzD<@)V%TmH@IKFMmQ1q)tLe#nU1F{AZBj%4Z~fy9anI z4t?u1rkI{`1WQMhG6c~PO7%v~CXH76s^;ICE1K^dYB`=c`H1G+5serRaf53z(Vj|# zzG_3p<~ZwEC&z!W%BXEj<-dp6gV?QUOzo?KpX=+p8{>C3uHMyvENH4Lg=kk1&V!Ki zWD39)BWA1JiG<#f9FAvAl9IIUEw+T3cqc+A9mV1JPPD+`3CD|C6gU=@x)Ez_p1e`I zVh=>(Nq|a@#8;sO-BpozE!q-|7u)}E>M{GiQ=1%1mg0);g-SdZJunGVDC&?xv;>_g zcPN+RYHS_tn6@0JRqN=6;CJeJC}DfJ?jhO}2?Jn%wH*KJ<{EYA(6vBauYL#0Kf}+U ziPb8#jP}=LlkR0Qo!UX2qB1i2v&yskv&#+rhVq=n^o0xv`7G-8=hbkvUhD<88S!jW zAKGa2OVw7RU&>v6%_1-qjj_t!a--unEAVvV(?+;OUXVWc5f{~<5yU`0SI?sFQHc>f zf6m-k*873p)boDkMqO_|0PnV}#0g0D&F-G@GX5Ug@(e!J;aq^_9#vwe(Ut>vk>mVF znEI^&{36;dZezp|PZ5hO6-L|FpM$~b*0Zp}I*r{&c-|!hIh}*Ge2;Va# c+cOllXGp$hD16V5V$V>-o}tK=p(ysh0T(3@TL1t6 delta 9140 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 S3}&q*OQc8FhotZS@&5tY+8-YP delta 13721 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 56e7a375b16206bf27106ac1632ef513373a4c79..62f14000f5636913699cc57851ef53db3a0278e8 100644 GIT binary patch delta 40940 zcmZr(2Yggj*1vB`=4D z^1EAX*0sgiyW4Cfc!qYLX*-B#;JzCBWXJAwi~GJ!DW6%ZSUIErirHtZ4p`|rD{YuL zqa)bRF)!FDl75fStCo?@Zp>w`6-?BT{p9%q{)@X!x2-MC zNZ;L_JuSV^W@h`Se{FHT>%MEU7gybv*73at4$|(^x_%vPWd*%c1OpoX&)RrZaquCN839%)E!+@-@mkH+&ZS;tLM~@1MBCfjhY}who+14)ZEyF|C6WW+xgL*YDrfeC+SM%W2`yO7PhY(z zT5{0V#Pla+`B_hCU7fR9(Xfs48fSOa&+ghBtm}-Tq^Bi9vG&aFThA-fp56V@d4-ez zsO=3l)J7Y6&TL&i5S-cD+OwMFKc}hp`u??jLt6=;57j`oJc|qvj^DnVQ z{HY9}U|nrzOK4lLaZa>kVkpG)G$z`@lg?)K4D|J^3O4uk4(%B1>18fAlZ{`}1fDb4 z-l27a%MK$0cXU z5(~3;S8gm=mc#a*J~$9xeJD2mb0S5-H&W6v=AF8f1`Pv7kf%yE6B z?OlSdFGhPa<71SwWC@ky`ox4!YGTHx1RoUe&oG?&mIA+`i8;T}Fy7a!z`H%3Z_sA3zqP!t-xQ9s{5{)Y;Y6(a17> z)Jm_QIT!)3y>>=pIm`Hu#2O>`qj{R~lR~O*>5w?~|AM^dXNd@?NzVQY75hJ848{IR zPgI{-#N4%O77P!IC0Nd>#5jH3YT4T&Fl`c3w_C)>4kTF;durx(ImZHyVc>ZRtm`t@ zY010qedJV+GZ6_>r*Y;cUeKM~64nig=Ss0$8Ek3p?25L{W|=M%y=kDQ2lG?Rvr?9t zYPpgdhpgA#@R&CeW}b`91*GxJp1vV!9q%?xOoLfLl`~k&^zEu|EdKjCS7LDyS>EoW%d=mO?5^Kv zXj)nii$l!4NA=%STxIpb#qJG*M@XLYq<&R-Kl>>TP|vXbf7 z%2}3tohax+R&f39EwATCZlEfved0!Hg`23ks2b+JkbbjS7rAff`_w-1JGBDbf_9Yq zg#A{ca2uxQswG=y_eXmM2KooavB2%3>@ADINOY(_D%VS<-=URSv7OxeM&Oi4fzDdH z2Uk|r^$rcTTr5`O&_PFd{C!{8uGOJ-sbFAg0{3Wr#_Gxll^V>Nagv3DEZ0Z1_c z;c)n%4LMwKz(IS6rKQH+4<>~oEI%#Iz)Z=&K|K^JKQ&#UA9RGmEDbBX;1OBFVU~_H zUcTD#ig&E_^4%6XXv4c#y@RuZc4WuWFRMtkVY;6=#Ei=i@NpH|2rZM(s?Z7|Sqf`p z7z~4KMs^%v69r{p6A*+(Ql+UVH+F#-gv!dqj$i^%*v4Qmh%TsPz7ecGjD)V*T{8Kg zjukqe)t3ibYddEF$p2cQIdiZjsC2YD+O;tDZa?sAg_fOU(c2Gb6H~s>_D#|5JdpNR z?K_Qczs7Ldi)h>3|2J)9E<~7;R6bU>TwFbpo!rEH#S`2Ra&8>Iwm1|0GHzC5$Lz+I zU}x}z)^>GtWA!=gu7V6F&>mf|wz%NH*Scj|@d<&|EI3IF&$^bbU|lPQOWU$R z=I@i6Ya+0P+5530X02htN=`c^CC=y>suH;d`SyPqSrPAARvN8qZJ1Ek+8V_oF&Lf9 z0%rnNRXJ&5MR_VaF#kGMy1^{CB|0WFep=O7mbD&vTI%LDMX5z6Pzy$B zD6_!XNLXSLGk-A0IjnTcDJ&8=7t}iIJ7hgtHW0bWu}nWtZuKSSv*BEC5dznucCg$% z)Q#PIEVD;YOaBE@^%O?2S4N_J{n5Ujo~1M`yO*BX-M6F% zQbLS6^KAg#!GSFu-F?e@qF^puUd22c8A*t7U?t1ibgYuX8<>4FxXa%{+^vsxuIODh zR26LLD(eh3V6Ey(!ivQ*AL6UG+X6`s1GDfEe(`o&LDHl6o%NQjgJ3BJ5L42%5&z$TH9!C1K%N1_@Fu%N5N3M~N>* zu3EHvW8-YddW;q4G=eAi2?zNM`*)VNcm9#W|<%hb$Q*!+&>uEw3FXjQ*@ zDf)v=I?T_$#5S?xHCa@`ZlCi8wSw4sCGOab7>-f=X3n=5R^6fQb_aQ#!&0-wn`+CQfPzW`66JtTaOIf0lN9Jg+4WE12m*#OC3VPrSY zp3GAIj2{c5Q==_yEaflwU5no{o0;>k_}wnd$n!Wet5lQiD@(h|J}aDk<}S%*^Ezndhg3%rag7FN;W7>Srqb7p69R zK_UbK?*Ap^Awcr4qBt}fllyzJrpZS0S@2`wIBKfCwX4I?F=0&m3@d=tGys)H$5fAH zP8%Si4SjaX&>?b+LB_FBpfWv4()BsCg|)3~R}C%LMQ4f`bql*1S!y!v-0Pz==C^e; zV9S*IxOjtjYd7AV+3dgey4{-PzgCMyQA^ZtpJ2S%lxUd(0`TGO!h?rFy%_rTMO zke*(e&+>{(QvrReYi;rPv;%LQXen528GABM*>1~wC zG1IZQx3xFUZUi5v;XpLFn6POHVD@e_X6j-ZnP*4q=XO9GbT5@}iyH@*wBmHiygkDK z^_|Vkz6|-&mdk{;wUHs3eQ7Jq_o4c}A(nc&JS25AVjeR4O5`wB5n~YZFeg^y9b1PQ z30*y_`g(@i)(oNJ(y?{WP^)j7-PO_7!hCBaq52iw1HrbnL&5g7LrgzIEjI%|PM3!u zeNYbQz!3lTd5eF=TH>cWisEtVtDjlh!7|Q_fvQ6d&7JMcbC!f8i1O}rF(fJT8|zhj zmNWm^GHuu@wyQU5&WQ8Hg4MW_T2dV=>pNysL(_34q9!@E3L$bvC8t>%SVv=R!=_^`6;tJo8W}I*|V5;r`dNjwrbnkTN>HeOBp|Wg)us^OL9D`u7Mf5L4uaX z8kTXnY&?KF(X(}p%(X{xQc~5#>>Mn5ub`~!Ag8YH=vm#pW=+phmbsT^J5@FTinZCe zQgK(ol7B0<#V9kb0xXkik5k6g_)S|;HM3s>+Bw(q^Ix)LN3O#pptI!l1iOI+CyK== zfp*v8RTziHjfy-3wwsPM1aDSDaGxq>BD4RFUC1(TF{PfwF5SfJx3bHb^ET$krYLr` z+trGH2l&YTJs*F_l9hEQng~m7{rS#%)Q}GL{0N zfu?#xV+%`pS|wEAB>oKG&^QQ&>xTwbu{4Me{R5G1?0WN>T4pfgIXO;9%K;gJR+ajB z%nLDs=2Bx6T)G7z}G2B~cW8#b12IQds^M;*N#`wK}ySBoAi%RaFWC!PjDs)8T*npZ9P+Q0dwfJXjL zb@=ELM>FF`(31nti`}2v&D?=#!%6!uHO1LcjQP%A`&pf{p?}TOM zWOjx_v7ssD0yJ3`b>t3VcaMz9Oiz&~{;X7ut=y*iDcu&k0wPHi19- zx+OC+1TurG6eIB*Vg3zLlgnk_1}b>!8y0`f#KbO&A?uT*;xemJ>enTkW->&9tSWx; z8z`&#*k#p-vfRf>Et)<>l{r8SWg5p*^9cQH)^z@NP;ajVL>|Hd^)$@I{*c&Y zMguTt{#Gzw(=oc%HAA*uarvZ4ENdn||8+~?)Rbmq5_@Zy1!f(yd9zzkTo|jNm>}pO zQFW3B{jEnakBJtTO|xo=X!CtLvx*fA#lhQxGdrW9NulacZKyuf5Z-6ACPgNN>sZEGtGVqe6|ehD ztK4=)Eh{Qm##vT#nNujfbukF$wrUOkdI2=2ifV=tXItf95Lk_!^_`7#pn6)+(m30W zF`9V}pX0O!vd&dlW*=^mjp#d%N1ax0^7*o&6C(T?r!|;yf!PG(ibMFHQ3O4g`hBaT?!dnb$Xw-#BtL==A7UFJKV@K;~=H9BZ zq6x+ocQ&$-7x5bmYe~|@f`bFU8dmMe+0j`+j1(Lfnf|6#>LT8u}?Y{;n1FqHY*Vtb6$<-&j47_pRaxVcPBNf3ogn?hlCS`gn21hp}Qj zAE^w|+(TM&`^U)R`^0LBnTkoI=$~4J_Q3PmQJIX-tu)h8qCp6iUw}aAmsYObkmTh% zzjS!DKl7Wubc`?f3-K@QM!eE&c` zskUwoHqM?0Q$QUHd?(OSzK^5*i=XzD!<+L%LMb?Up%iL7=fADNn*Fa@w~xzkutQGP zSL{l`@wB3sjHd^#`PuqjD4lyuqiOGHFyOilY#nc#-Z3LDlaZcFXrwTYx6;HACYQ2s zIUA9ML}-W1R55L2>hZO8^$m?pfy_m_cJr&Q$Kmc2wNmU%P@lQ$V<34X&S{VWCYfV5k^MAUyLO#4 z&e|J6bwZQL)3RloTDw>FLa+bA}pM0S$)7^ujNs)?HC*4WTa)C0VI#kc>(3`OAUXtfyvsqe}G0!$K z{d6Vku2koaRdPf*SJSv|oZY}C_3fV1>){tZV@c)Ktu_y~rodKPJGQ13TWz)48T_`b zwi(F-GTVqj{zS4pFK0-;W~{~OWnOS5v=EIQ7t{R6I+MGr?V0|wl(7M#G87`T@>jC_ z_58GpY$L{Rt$VZfa zcahEK-XO~`H9h`~yU$qZ&2w#%U{Wlw)XfS9>flD^-$EGasZeo{WkhI!nSUz*Bl<;> zm%znL>P&YK3Py2z^8%bN-P>fI873eV$_>Jp3H1jQcF=Fo+dT2+-XY(bnp;{r8tc1Q z+D-|mYwm(Zp9LaeWKdFwV?X5=@=NUueg=Imjx$;@nS>I!z03yYZf!rWZuQGg2OhRQ_LRH9F0?!ChR zlbHL;VSq~JhPs5Z6euE9%y$(E6xu>zk`ljI$<_SwZMI_V8h*yfNjWvw%DQD<$4GfN zw{wTsM4~Dm)1glhCx;uUCnW2(P*PhmUJlk@9EeMojsH&tPC0yI#t97 zM#_((II~$%yn7hMnaxD;9-;_+i#Yp1#X={=QfOA_>{nd5xf1+L0D;Bphk6Fdgfj?c zu~ZFpFNV>S8PL0^^Q^vKv_lEYIKb3M-$iR2RsKN~l0`Zf9CN76_wBGH@slsNYm zts@KnE1->`9nE6k3pNWpU}~&3e)%ibDvQm=54~b7O}5*J19%kd zdCpc~NwV>x=WHV_4jXTN&Nj-T+xQvJ*@`U5HvXIEY)uxYjeqc*t;}NBxbt~ixiiHk z)~sTeZTHGa1=diijrTrp8@2CcTT&$9z~X7wl!`^l$~c+2=BQ)%=;KDSln$JRa0n+8 zkGCs+h9VuDI9$&i4rBItq>Y#_&!0347SK;IA)Jde$cMdsw)M<+B5!}g<~`vgMST*} zPgWX;Q{>ZgD!7mu2*~wh9b(35>SP8fs9T;H^~Lf4pSP6X`Gzg`#2#s_$XTW(ssXps z;Y%s>(w0kp)T?`iJg~`E)ZX4pE(WJl;b1zvd0t~j9aIpdEBVMbZDVmfYJ1Z*!qq34 zEAFggCH?&DH*LkPGXR1Pge3Ri0KW~O{cqWxxL}I=|6q=S+gA%2B%13Rnf{|(G7A60 zl=}-(gS4SUX}Jo9FO(|}EBFaZzK4HsZ&C`cop1N?|KXSRvjC2`FG;tI_=SEO8_caG z=YRBW-_Sg}xr^U5-yYyQ=i8GkOyk}2?Ve;ZHa4;xO}-YAQl7b?EE1(wZjRko|KrLDay*wwYLy^$Gbs{W~B_OpQOUMEk_ zvTe(-h_5%>s16$hb^zn-c#d;u+?*R5H}>=Jo_Rh$WvM+7iAY^Z{V?Om1vF6Bv#e;W zFM`dTl9eFNc+A+Kh{F`M5yTvuv|!a0%zdF6v0zJRlARaDYJ9OAP5L%DjJ(@5Vc3c6 z6t;_&4v6f`fYXmqNrqU)4mo%LZfj{Fx0n?8{D?&Ov1P#NN0??rYF%3w(=U^B{ktUH z+ODpSZ33O7+BA6n5WZ4x>TvoI-S8WYPnl(PwWf0ohgfJG-~mMV?kgm|c|vCTUX|lY zRgK@u;!>~D8fVWD>IzKAz%`_k+P}=Mm5fDc;tW?#=DOEl)Ad8|JFR_gCq$*-jOe`n zRkOQS_pt0Y_-WhhnPnMRl||}&m5te<31+^x0j8rC_90rb#PB=i7cDbA^<5UMsoA5> zYT54#GM0&d;{6xfD`sJZRw+6(zrvLcT3=FY=~$cTjG6(BFU;S>OWmrKq+rpZ^d$|u z4vjDQl-Z%~WyN3eIlHXBQ#MK^N@wrcJARB=F8|2UamYB~9{2ggWHBin!_@&$I+1hthu>$_$Hha3~dsJQS zEdP}AJ^x?)+ilP${=lQ9nuix`wpy_Ch^|2OsKiw6ps#$W&x}P-_6jxv+d9qvm8u* zbewA5IDL!;ECZ!iVEAofhD|E@iea&U4w**im^I`aBF_C#A+sz8Prt;TITpHOmXeHo z(>hxk8{3&3I%AdrZSk~*#`<^{W~T5tm)HZ9u9$CHsvM^oX&Qw6hBo1Id$F((rK^$b zmKcEyjsN2(yDtTrV!11^fR`U0a{9}B+Ldr_rJ+p|WCc$9buF{7;xYp&VSx*~M<#Kb zwP%MtGXl*obLPZmey%DgPZpFuLaQyO<)(JQb}=AH|4S~K1?pL-o<;KMDn=s-*H9>D zT_u{ZQ@~FYvl@zDu`i6S8I5)|p!Ov-W`t}f(D;&ja&aYdjv>y;nxI4XD@;g<>RuPr zy=3{26ruA?qzGNFP>fbHBN!(*fvP6VupwC`XP8=-R$aYZ>E*L3`1PZ#9zJ2G-9B=n z2FrABf8RWqL!^7!;+B?i#rVUZ?-jztiIsd-vNf9z?zB(0RB8O-Tzi&Q&0pDR&(Ui5 z*E{Vs$&)2!;cS8KlAH~p1-t3Kl%%8xN$R52ymvBF+?N$7uV&u6Ojt!6cDD(e7>C_s z!Y0LG_nNTEIP5+XR;6Gm)l9!%GBEN1u1_^ewEcYiR3l$Iz+36@pnUs-e0xZ~JuKfI zk#CQ3S4L94_81>ekH_WPLHYKCe0x&9Jtg0smT%8+mj@Z1<>Tq`NBQ=ge0yHLy&&IS zly5KbZ-D7Nr1*WA35VXDkl#1(0vrdlSES_rs+8Pet_<$;CuK*5n9*)Ak0ACra6mRX zEavW<(n&vY1i@ZxbODVNLRbXm0?jqgg83#yJebhuD;hP-z5t2dg_1^sS%c||EM%`^ z{u3opk;Yp>NzTYgl!Be;WXgJq1=B9R>yu27ajFHYCY;k^a)9$R3-$)Fxpym<=*7}$ zxnPL}l!J`}-Ge=l4Au#gL4vq$^u(&0w#*{z-4W=O8sR}=UykzqE2v(y0wywV^jhSK zfi>rJMWCFet&{|izZ3agtI2g+EG%e}zF3o__s7tL*1&m2jQIg#J_Xk{1||3TL;SRG z(ulUTF(!>OsqS#QfpzyR^%EZX>%b3Lnb#}V@w36Y>m12CN!`qQZbBFAD^I$h2D^}0 z&ETa(x|sANS}>J@7bY_@U<#7hgajV;A;KHwJRM-_St+DwdNe@G>o#S^Sjyk^+`&nGgL^<^bEqai~Q>{T*9=sMM2oj(1F#rl=e~d2V zePK&s67*wiOcDJa4V^cE975+cx`aO#wv2-28?d4h=&+bRN@h(RtSAsl#x06G+Tm7hZ-m?mXujPBu+)LO?vQekaK|uy zuS&tBxl>J=yCnJ4d#E3Xf8m*Nuax#cE9E|QyI@|FIUk^Y5OZz6;_86p3iq|@R}Dlu zmkjJM=lmat1g8Hymhv!-HcW0h89gfb>5kGm--1)O`!QJ-OeR?QTHuNGIH5}fx;x`J zI2-|^!u6y?DK3f@FMcPsMvR@vzq~(bj5djv8m2Y#BF&XO}q2w5bX_O=2BSuOlP1a_ub!GqP57ae%5-y@JGR)ey&t)v7TLleQ=i z{1?OqhJ314o|$nZ>F60@9yl+UXbrN}JSW7_Owg>Ov09GCYK>!=j-<2WAd^;GJY&R! zwI78>N=3mKU0Jk4smRhg%~dnlQs2tlUGa{TZ8tX#kZq7LPb-D%X?GOOt6Foug2>h^ z!yrjt5J#$=jp?y4{%+P{5kULKIFcen3|URKPmH6Qppz5`SZ3~%;~*33l%q4AdK8ws zJKj>VhLOc_h^o+%c+06lzch{$8y-Dzm>M3-;`!9@NM8|05)A>xrsx5*o~la3b9y|R zS(lY@G!wKcj%7B&>Nv>6>N`4P|4~@3H3~#`EUNW0)DAkJnO8U3gbPe1^9-7xnav8M z4@vBjwfwRHOYs<}8>vFL1zHze7%mHMj9I-h&q_#IurK7$OQ7P~D2-s5P)o-15nP(X za@Ow|gphSM?+-e1wR8CPprfSaTv?>=Jk7ijAvQZ_M%jC=I!&~a%dcDa6i%U|!8Wv=DTH-U}s+&`g-VRdVFNNQ>XzDPA_H$OJA<052PC5$9mIK5f(XR6D%(%a6WgqJB*nu z>niC0dlc*TtC2e48tGChIys_luC>IvU|h7ep&?pDmsO(G2kk-J*pw#BN!K572Q0K% zsIo?i`;lax6fIgM?s1t-YQX*}#JMUq=0@tIbEx~YXsmXL?z{d3z< z_|!cxv$FgARp-f|YrvSeK#EhXp|X zRNiITumPx3YVDduYgY9{o13E)@S%t~e*;`-tSVSwkIH4pKV)l37viB_B#n=OVjE8{a`^H~Y|;lyxVxFQ)7tX3&ILuR za-@wn6gehZM%nn;MUcEk+xT_#9Ao3p7CGvg$4X+}Qd?_FGr3EI5G8@m@;FG8NkLbT z!WpcIrHzx261uOtkvYfX6|EFz#X%dNQ|u_ro1n;rh#XbMBsY;c!~2>XbqmZa?sAhl z1yGo|h#3_U0NL3&QDUJpCrN_7N+Ku@=b?~PpoW>V$|R;&+YZdBw%(%czu2K=X9Zq> z^pkK^+gx>D;9(G-4?!lq<&gO;- z)yT?ySHe4k?VYGUa?r0}dwm(&=sj~Vjo-h|QIur4;b}OweXwU+l8>kV-l5wxi^a;_ zS6e@f#KK5aFmJK6Y^d-Tt^H^AFnb9mtb3$%Wq>3jLtWTM0h%$ItR)S#3!0;JIBF~CG4t7R#7FZMM1Gj z;zD-Kk(HcGx#0$_5kuTz-id5o6ytvUuU(5K`F)c}jygPr5CANQl^ zz#6{eUWY&Z4Au8=m4{?MZXG}Tku9svvsUs8|7JwnA--7pnW|!)A@OdUg%XzxMoXj2 zw@y@pCZ;e=1HEGR}R7S&p9%qRKJS6&T~~><~d&`HV>R(7UYb?5~DH^p*CWP z8)Au@WMb2*c;e<*A|&C{2Xh9ZU4tuQS+|<0en`B+E1Nv|gqW(LDP?Wv?uYFGkNpyM zB};)IE3DA)QTFfTY4^he`ciVb^;vRv@hSH^axx*As*y?c?i}hK7+SlA1up0A+pPZF zJ+V~CA01tD+k^G34MM%2&H45BJF>JZ_`~-*#+F0;jQMNULns>R!J3Xzg*+%JGEsdk=`1A)H0quI>6Wk85k+~o+#zv6)W;6#~#iHG? zV{IR^!-I~wen-}GQAJ$!y(PwNLR}gM23X)$S?LM4@i!lE1e0%{`&(-qnF% zR_Gzz3K2z_kNkTtqaa?-4O~ZwTxvvfUHpes+&G&Ec<@KJ-`%X zm$c@FMzf3uX&k^;NnQ#9YT6&L4v<@sG#~2^DG~Z%P;ftDQV7;;BXfE3qaqcz!5_oH ztkKra3LfXx2ORmy2W5r*Pw>+YIDC;ON#K>zGma@Rk3A)82W6-GX;V(76jaQ3MzT+Q zKa0zqzCW7R(s2v{PMFS4p6BFTm7sEQoO+%JLHqrJqK!6sk+^;dH!Ndi)FxNpRC`8mkzU(gN#9r>5Qf{NV!6@aOKrm?U%0{LfNT?;e*f~J>h@6@lUqiJIl z34cQZId?-J{;gWOLz{(wNOmLd-(~HKO&D2@{sH>#@8lg$*kLO+k0~E3BP*o-lWrvU z^{?4Npp<`MNWg|FUebS1oj(!irNI9;sN}#qhQ^HSA+x?4#vrCa`i}~KlEVKF@bi8; z7JeDRAW)9~B8RNj<}nlT{xijW5ck9+3E@IRb**H=g(el3E+@sgW!l~t=UV)Cx&;=4 zM6y<8L7;k5MPR~YPP>L^F=ROiz+xHi!W?wAyqs>=2`w4EYMkbDz^U=;CfU6a7fhIg zi{ULoQF7?+C3%Zvxugwbc)Os(U8xd#0$~g59o?OS^_z@$0bIn4M}{+7lV!n@M>6A4 z!~!tw6~voA#;O5RpD;01u`ECT_F+e60Oq|o2@|m_%x6F1$jrq!31lTQY$CAiY(D1^ z>^eDov? zk&R5?t}fxG6@fEQCFUqxqlG0JW(#sfaKcz2yD|ed3elAq1yL~obyz6~Cw~#5M$#^Y z6yg6-j34A0928ECxhI;2(-@cpJ5rjm{FCHxFA4Lv4?6r2_*080oA9SrDoXpQs7Kmq zgm$)c;KVusql6gjCH2^dVUM8MEBAHUHeilmo}~$vQnBH)R2U#A7in4G#S7zu44}l^ z%gK~YTDb^ef&@8O6Kag63w8)0(Ud?EON9YKn8s^1*CQwAgeYSAJzrtSwlAR;RV1GySuNL;xy7t=>bX8IT&*{RAz+2wLJAnM?nN; zgkg(H3hV;}fHp^XEDQaHQa!PZv!(t_z0=})4mgr4ju$@5#7Zo&Y!dUHFWCo7Dx1(I zKC)4xN`Te3MBvR43Q=QUfcm6F6AIs;bag5(%h(tzT+(9tCS~^CELJs^vL&890P}U{9&T2ya*Anjxg7Gx{f0mOl*2cwsfljc(P?CIw51{1***>j>ZYcd8|YXT z?G!-<3-<6IpK|2ql4=t-MJmceP_}FV_L!!Y+8JZV)w0qnc*WBWEXw@krybduS4zZC zXfq*9hJ$?_+zU&7%XdEQC{Dgga!_zJfB0!fe#bRf%0(Dcx;iVPxO%Qlgi!=Y=D$v? z_~Jwfyw;X}pfm6FiHH(5@&bi7UTV0Vs2IREr~E$ z^sU1)tD$zn7y8+OoL&!dkMOS^q0z*N1#fk#A4|7F10Q&X^@yCFthg$wU@bsY3Elj2|4ypYSLV1)>Aq*miOESjM`Lh^kctU>a1zYt?l+E2YNDu9T?8$lpmtf=mnBoGZJvGhZ7 zj@VxY`}!-=YbWQhob*Rlg6i;^s>38^e;rv|Zrn}Gl44dHkJpmq97!r z>z#y}1l~hU!iYD4#x(;5lOXawvGXU%j{X5X5zgd85RnUI+Q;OVLJeI^3##)|x`rc~ z<1^J9pAT=22=jiC*dD4mzC5xyzLL$6_7_dXOceCJe?2;{{cB?JZ<4i?Z%|vhT|;4a zzXh8VZ2?!n{|+3_KaiR3B?v3E8a>}3A@qH0>ogt@%$J=qr0JKPge3D!ckYvTUXBRUkXjfhWWj#Rz>^Q^z>1iGvg=KH#N-n zvl`DMgra*z=g`vTK9>HAti5@gKL3CGqdz*blaS>9RpU>*Z}DazVlMTeiBh0h_{V>A zjIdZNd!BQ6GY~I#Sh7tdXYu2obJ%l|r0b;9L0*_*9aV90L&>{0JQA$YozfRG!!RS> z!oN}6dCg6cj+|rENHuRAQK*&*mxb?m&Jiw5wWwRLzBJ2TW#R#1(Wcq8tq4hw4pyFX z6z95CAsJ>NXd79G$HMcUcVt_0bNXT={V|e2H%SI0NoS@cS(attw?FR~Yst3o zx1M*5cjZWUUakd-I9~gi!{dNigaz^}{0ZIaD;i;uhuVC!8m4x70SXb9QQ&FPgv+#r z7T*1W!#kx&!J84&0F-9pE_X{kOD_gkEcz1NGctxYqg~*!tWg$z&kK&g^3h15EgO-n zY3s(Lt)5sh#=zfIN&xn;@MH~?O6S#C*c_UJ?X|EdP<%8`ne10&!4;XV*>hW&eH_sB z@u&gatq$TPYl4MOc+nAvgcME41!2q8%vCOF7LPu2H1kzRN@&F(Jm^|NWfeHtO+0(&SbHo6>!^P9u_6_NUG=#8x{`Ssj^Z(^iTAza$kb-=^h0Qo znaHj;D~?W(9Obo;zcoo~aV;$@b>(CXW3JgIOKZSV+p$=J_c+Uh-?$htN=1xTXvcLf zmI+t#*mBT5!1E3{oDukxGab(4!v7JT`2arTv`)*DCsg*Cr%0~Fl7~w1yf+=m+Nu2RLk{nl)4&F)1}8BC zZscOK46~HQiX2WL_9b8}dny0hAxG9^c#hLi$E38flOnLeXI!iyD|{OW-Xow-7ogtdeZSgnIjGlvLQqFL@aP^%`;{r=4C92(~rRY1wmz%%7k% z^um9fDj?B1n`Z#c7(`8IKR`^XA#$t-h}_AgN{Zac#ioYc0`BB2xXyx|Em4`cv9F)s z{kkK&7p~>RZj3`0e9U9Vj+Ap$Dd8wC@yqVg&sV(}0b$Pt78S}QM!>&8)|sX+W(jV( zwZgLL-^lNJ#o=4H37K4*ElTPLEn}W7!_h;1OurE66gX_FdS0ZS7t5z-`|vD%A(pv= z=e_C(lTgbl&0BwW4;Qd?`= zTsW9}t~iQ@YpMcMixs`u@*in4kZ2;peKz7=g zoz8wc5OVIo)^_Yg!2Wxr`|jkmZ#uk-?!s^VZn@kh-y>!*rsut?@~CXqVsYSp zOg3n2kl7yx52**`O$bt%;;{InoKC`H$<(*|o|2R@SSD%C;NQ9??EH&pOPcM@zoKQ z{VyJT%aN7z1Cnz8&0F7ch1p{oL@nUt~D|QccP~zpKdE+M0Ky*iW4~DBe=ayBy2@a0yPYx=RBXiA4FrGEQ>;<} z;gUIUNhdGW%FlTlzDQ}J1b)|h4tq9K*uZwXC02~aNRO2tdfQPv&5PJhB77UO`+ykm z%a~YF=p|i3u%Wq``2wmGQ^`xff=nw9z5_u#+sbFZ<0v{cN6~_lRqjz_unI9F4;boR z*$9-Dns3F1WKIlMfz{k|NHYyoI?!V8Dgx@%Vk>{;9mjDQC2vRga^XTi7|rgEY;4oIisg zZA>6iSXK~XJ#-Y+g0Phv?>R;|%7GfFu=3D*4qx^}v!j=7Hs|;FNuqdu!TXK?Kl43D zx~EcAZ4wEV$X!{Dy1nPf1b;e zpDu7OkSMWHU%XHtj8zD5E$TdK63cngXmi&R1AU2$hG{ek8r``OuJ;J3uoe#v~<8$=*F{>-~hPo{e#y~I4?pz_{?eEFMso}-QP$o*yq z@&$HUVG$md|9JbCI6b{R}5gi~S z{d9&K!bKY=$xuj4ze)0$d$TpZ2;-o0A*rQ9;ZQ|r63f|_kOm1&q?Ka_g?RQmk$non zXj?nm#Rwrk;JL^z9a{sp4u=y8cy-=pa+Y&D4QkH_;CI0X=nlX|PMEQV)(-UHs{?h+ z|9hVH8BA$+%1p{V7-6?1?|FCgsh>G=E%#Ure?xuLH#LRH}98fdvRt@omzWLi;N=pLdnI{ynL#_r9;;GWpytGcFC?|2CiirY6L7 zP0|62Y|sJYc#lv7AIW^KkF}O2aWtnJnV*mv7PFsjWPXZ*A)LrN>cP3#d!ZYq)d`3? z)Wd=tl)^$=@TH`d^OY9E7sg8YChojLB`ntv=%*s`ilzZXo*c!aa|Ou;sn%kmJYSCi6Ce}WgJ6@^t6yykr!%W+BE9h+7|{} z%7^-K%`^kbVp2s*&M8KZ0Y$O0Zs`9f>*@YcgEks%yo2Njx(*9Pu~;|Z7?45=VMu_$ zU>QFXBDvAQ{Y#j_Q=koAbrLPHg!;cYs+(DWihK8hCS=_djl_D~(484&=~haFo_{^; zoZvjoX5Q)-cU=wWfCcJ2R_x#-r|U(@x<#~8UNUc=uIH9G%|jc4b*qC)iae3%E_nvY zN#&PL*Rvz(CS~dc(X?)P{xN$2-=31^jaWB%h9gind8MW%-4{m{wEV+R(M^Fkg6O7G zGKXVOH)YGS{IG7yMJ;08BmynvnN`GvnS518sD8!xER=ODF5(x~>P4l+KqbMunq`kP ztD6uWK^V6XzDnO_B@g|(=wp|&_BH61h%rhPg3vdkC08OI6vb_lT3-_VtC*{lj_5+W zRK<)km8lw+5vX?fmVgZB?+jWXiwePfg2_GZ9FPW6Os{gqeuZSeK%2;0oAmt1q!|Bt zrBaDi#mey3$RpNuvjm|tmY3dA>e@zmgvQLL`L&w#(ApQA$FaQl2RhX5M5xO z$Wks)4UFGL6nG?80uL%erf(G55Xfr8-ewvZqRY3?SitguZyQ{Ql)zT%N*NP8F~G+~ zC`OG|`^CUBwy9#_nYvvzNkUg+z8IIN42ZhA0~u0;t`L0EiUTE~7zp@nzl^BuQp^H* zH{Nw<1z6%=1o z@m?)i!dv5lW<>Ywf^>Zi$mCti$E?C<#Hu@>TB6x3? zLk#!bMBFF(sz&-9a&-cA@nszsbcyn8kM=a~jFW+0QIT;$yGWmw5es$13mqfPp2Uw) zq~8mcXv2_=1IJ;i!u@6ysCMQ)V>}R}n+`3cs+(ZNd*EowzCREVYH{*DMgd9mt)twB z_~9G$oXEqmx&Y{T#6+de*&$ZVM`ed*K4wW^cZbxOlfC+J@NF9252_9JZ*d|05~|wUhlhLVVsN!|X5MU4Ib_ zLrLs?Niq(_bj*E0Xd<02(_&6jKb@432stA6u=UIhg=B2^7ttgRTOy+Q&(1s{?;K%#6gkxup@u9yXb;&wZl*CB#dt!3HsPMjQOwXSzYCuKk zJ1ske)%^oi`wwO9jgR9M|AZ?3DGEZxJ)g+}QE~G2p#T;_59$0OR_`y5sP|VgM||)8 zvm7<3b_6mO>J2?*V#}c3p06cNVtxMxHay=*RMaU)98Ez=Lh)dh+q4sKxne$Irx}q$+>=AI)Doe zvAXoeijw)FX~~6QCw#B5nTj;=wbem<+6+F%ffRYG7i&7*T`;p{x%eH^k~7_@a59!s z2R=3l#X>rdt~RnXH=px^!|O}UpoDQa;8|+sfjwtit|puW>wxi zW`D>|f})rPoC%~(nv407q%;Q(r8y|ar)ShbFIgV+yiV&;_ah7_ip3g)ixDYG!6Gk4 z_?BsNmBSxpYac(9PdIDY+n$ArG2L){p@sF$?S-)WPslrD*G9I&{b6 z4r_<{nCVa!iyPUQcyVTtdPGD#%7$)~?0HZVQ?egAVp@2I(PsWUU}15RQ0FRHB=e8p z7o42z%gR4S9`KV{!0$XcIS?t7%{PoBEmqJVi+#En4MN&(fS^ZSg3#u6QX>0C$!aEk z9fW0$K6Y8IF{X|ec1r{5W-)HdA=X+`;wmOz8E-!&*{hA?-<^`|aoC|-W|=`AIVCx8 z;sg*T^8qQ9=^0kfa``kW6qoo8%S8Ny4R07@1{BI-7*1qqm89E?#X9s=QEA>twfSX< zVGRLic^>3G{s8Wx%o-Gt+f55O$A%%C&-zwr!jq+)HI|WFFOigiZtq) z9;b~NQ%ik}%iwi1{<|UX%8miD>`-Wu)1XPFBeNo)H>wfXq*$2|X9b(WRvM*gGh?h! znFf^1qVX}lPoN%F#1QB%4GL!(n~G^~ODtooe7zOC(e^r9YBuyX!4Gq_$7{mU=EN8m zmG6-C(K}@$7+p%|3A^ZA$#?2Jt1BT6R@QvJ^R(p5yanpJDHNLdVs%MG0OnMG{w zLjLq=$z3UntYW_var|~qe{{m`;~&jj%u-IY*3aZpd7g5TwSJ!Zoqn=a9+XsoM$akM zm_k9svcO(-ssiDpu0Uz0St0ba%~m(<-QCvuEsK-)Ep~=Vlv4);b3I>aFyQPePl)nl zKdMMXhs!9In?fu)TwVz;-Q~TSrRFg8W^Pr zChr_b`qgqQJDNUC_p6<{GXW=xEM%s?)aBm}#>8C}L*83ReTN24mnslQsL zNlt6gKjH(oHKKXPi~9nieUFpvJ90`Qrxc%VGgVpS-ha9CElaX<5^k!|&V1n8J7-=Gya8a3fCY@i9qo9Zv0{Xb~28c=vZV`6B6$$lFq8 zMBEfyi!*bG@AtVMH?v7Y3iBU~ZLK081MF#w-~sW3+Fd0UU24mGQsktFx#W=F+*e1= zOM@&E7wFX9+<>TpwFngf3M5_OIvrIR`=4pM&&Gv1FnuHq+Jv6PhMoRLB+H<@6vmWg zKNqk3(iB{(i&X^|>mVhITfa{vk)j?XQlYQTvX>XLD)MzB$i2Sy;s zPy58_PniI)w3dzu^9`RkM|YGDqgDZ2AMVbJ{Thnk))^fl@HF$#h=LZrynb_Cb62!` zF)Top^81(A*%fBT+}UhQH4iT}ygcnwrw8F{i$8Ua@f=4Ny~vkA+&Sr}XOpM!Q$BUp zWK31vs5HW(rr{%?XBd9|_@~ZP+<Slh`XU?iwC&We=q`!{(jmz;Jk|=q@ z)HBa4)im)zW^X~(v90ux&cqg)Gq<^G!<_w}J5wiX*B}JL_j_(OlC2Qnxc0gApZg08 zi!%Z@v?4VJN8*d`D4V0;iDLKrqcFnLN%s`N2>`9XS&9F+|a;31S; z973d6I);%#p`w_szD|@iK{6wFp#U8libsN3WI*r+nE_P^F9vVn7{Cr=4sL&8>?sTz z0RX}HGYbjHHo{;uA+n9s(uVqksg3kX*(mi@{M1sTF25SLlP5}h5^kzjMOXLZ8wYxg zL>e`jA1pOSYRB;}ON|MLqwFt31mCIrxH6+yo5oKqL)!6tGrdjcx6)fJf2GVQO0JXn zYwP(>WybXUhGQ1es0wMKLP{(XX7I>3>_;>Co#Q~TnZHJl6ZpT!q0CwQ`0<91hsGPJ zS_}Oy!FP#JR4%_@ypfbVTar4ljqe<9EGlXrR$jOgo7bxT0n}@bDzZZsiBHLdgGQs) z#m@>FQ?5- zKRLP_S2Oxp^@+S7WK=m$QV3}ifbdMv@EZsdwY;ZqsGA*kGQT`zOx8}}uY`;mxKbvE zQSfPeM%b9_K!615LjGdd$mhQc8yVVS{!rMcNnRqkuU^W34jWb6I>~t47V5=S{iJeZ zy!CYR$4c|ZD)Yx`^GBcgqu>0o#{7Xe2a?W!`D4)hF=YN&YyLP>{m{!_(po1%iqUi;dv6reLj5yy($>mA*_^$78a2JeA;|FfoPO^ zFOV>NVlD;?AlQL2Y+@Fg|JcY4d|MTU!$y8LJvQ+->9LvrM2{^zzZ#DVc>_JR@?Lse z#CKHV416)ah2FODL-g3rzo*9~JWzwj4nBn*J9#%fF6CS3aT&jz9=rIfHAd#?yCpZ} z6BGY2<8lSYw?uxUD!hk@PqW7=9N-e5D!c(zDTg^WaD@b`I&TO~#P^N)? zmrXHdSw>z(FD3AF6pw4<<68N+PCl-ej~nFUM)|l&K5mweee&@;`M5`i%C(?Lp`U<_zDm z{2fv%63UA9PP$MO#C^I>Y)Hz1sS9*Q&E+>NHAaT#;dfv@gK2^eA;T0LDVUe?%!xC? zLfO(qi};UAjl!f8DcearzsK+g5THbw+n^k2=p9_sJ+x#6D>;?7^k8x6=4*g6Yl-Bs zIBrQ!TPpW5X-Q`G9#HfwlbRNYQ4&0s8Ozm13Ptt`pp5I~hkJ~&B1}aVz%-1Pymqxo z3X_uMuI3|_89CMc@>Y6xR3++|jikX#!(J=DY)}io}^|HG3$#4;W#5f0p6vDYcaGj?@1Qdmf zn1T2sLP)A+u80Yr1o#Db6G9-!VrH_84U)$J?aYZLH=Y^~kpOV3^l&$y$b8~cZl#Rd#$Z|K9^-?wzOrd`N}w zzp)oNXk0^ib|t%t<^Pudvcecqa23VYTgL)dt1rM)rRUYPbi!4rX9LT-h9B2!(SqZj#i*HvoJ$%ib7LE(Xyqh>z%1XkQ!NQpD9^y9vPRN1#_@$>C{xJ{GppLBol#AS9js2<= z$m|EeO6G(7<y zd(Z}<_;Dn3OgzWSj z|7In=cklvttumUIzo^QB+VUloq92m;UdI`UPOjq9=+0Lu=m_a&^urRYza~ep=XGaAIq~ZlP2V>Oi%NTEW8YBE0Q3C) zs1>~QAN;aDV{FoQV8Q=AEtuZy%zw%%s^gdV!VCE~kNbgt+h>%G{kJLwt2rWlu*@Ij zST&Dp>YFfZ^nc`$ZC*b_v!8fxzfqp_U*OmN%&+e^rsKP7RGKyae~ka9-^j~hbn%gf z?~&zJYCOEgn3QCJlg(%=U$w>lL zP=r7TC?c^yiX$Y14S^U!0)pbfVUhyE<_?=GaS0(%6cGi~2dH3qtS3s!1Esw0vP8h| ze$c-_tNa7}^>n|tLzSPBeRK8nbkEWKn;y1AdBOAr0}$lTd8OKbGC@zD_tX9VjR*Uu zH2h8f!rSU$wy=~$e7f~5*d3fAEwIbP#1%z`We6!yRF1F%I5NtDAB*`GPP8O3mD8k+ zjRJ+t?52y&cATr6H_Lf<06U!u=hgsby-IX}VUs1Wq8V^R9NFdw4n{6O;(BBi8@p)5 zgHg>2R^O4M2|4CvbHJ{q18a!ogy2_*0-z9AgO+cqqt;gs&l~J&Mi#_oLZ(GtrdfBh zdCEODPxN5c(-bAF=Ecs3gDSBT1~xszz{au!jUq<4StDV-)KafPKMZGhmiCS;?H%hA zctJqHT;|dSGnrL^S8%4+=fq}&arbLTh3u6+MuIrgYw}7Luaahg_**RquQehOORfBR z{EH=Oq2*tTs^SgKjUg5DH9D7vAvvjWD}qn0*=~Yj5O~&?c51Ec@-9jbklMs6XCHU92LU6mJOH zJ85+s8KT|d189bYA=XB8mfyb_xiy8T0|dgtMEUTlpr+xN71?4m;Z+pwaQ+@vp>!we zqjep#@mAu&HiC_j%NequZ=NrPgaV+09zG~p;hWhm0J@wf;c)-J-w?m_YBULsP*CTsLI zq@d7#Ldfa@S?pBvcO!pck9X4;vqlK2mX+3ysOs?~E2Fe%Yq zCWW_erx|yEfEKF`I>}MB^1h_U4;=`@?&s(=@j=#xJ8j7t<5WB3{4omc8gX(DsreN5 zf_IUV_4W0*-E#;uL{c={rQ`ylYv1*cA*l$FFAQ62^hs(57BwJK$@b>HL0Ej4`{x>8 z{ZFB6ewsM0W%3C3E50qcM|Gp=(7`>L0jZBROKl*M{ZHS(V#}C)nA59fNjipu@eB zIA3AsHoklBFzjpf7OWAxBCfE4&{EoWWcT;A4bH9eYC&@&C(yQDtwVkqeB^K9l_R?? zFMyWvI4(zEk`3aMXkihogrVhvs@Mkg(-I3+(+q19Ro!fw(&b5)cIq~qQd{Wnm{rgr z-KZI_!O0GkXuO6M+3HMRP~qxrL?>=Sbd4hLAYFMU|3m>4i``}bwanh`T%8f9^zCqN z&Iptx71T;jhlM)y3^NJf7wD7TDBuPpREnlVqt@1h1yh7qa+l1BaCOw-s;ZQ%vm($Y zvt;I?g0udTg75wcEK9lIH>@$4SJa*=A{CIkyBzqhUlo1&Iy#2K)3W@rnuRfG3U*k!2BAh6yXDnGKAhmKpCA`V$aV#?EIS( zs7gbT2m?uQ-56XwG;bOOF-`O#qEX}s!*-1nLg|f5l}APUCd_WH>m4KjF=EgEpLk3% zH|FM6H!Q)^)Fervc;N{>Q4@NY_yP6P)A&-lbN~UWXr^#7I{M!!k5&0oBnP@@PYW5R zO){hh>KP^jezA&Yo!elovvy`6ujmYG)5GoXMOyK*&OI{&;YtFL7N0Xxa8{y+GYK>t zf1dJ`2a8`Y(-9BK(Ph)R?0GW{%k)Lkq<+hO5#Q;C>PwhiLN6np6m8JqNpqcK{!2&* zUd|@4t1JL`iC!@X7V#>wL|&s#iw6jlFVd)p;Ols&hib$Uj*sM7vfq%^BLjxf1Om+I zTT(rob6kDs?d%tq68jwzaUe3@Gn&3aO~3Dk{oq!l=?}Qa3l?UZzA8;mOVf4w!5>%H z?)u32D>tyH>SG?X@=we`gY2~KOLhU=WW}!$Ut>j|8Z5QqpBc=)Zlutm_Hz*}lB~cN z2KirteETaIimzoTzQM=Pw^@$64Df%4gqh!yKw7~cvgypS;E&X3+GKU`rz{sG)6Yzq yF&u~#qY*N{2v2~J`88Y2Yx@RK`Wugc|0eyoC8~Ct*%kkt*mbV%dP&9(r2Ye+*4B*x delta 40869 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.G hDev - >SYSCALL GetDevStatus.A - + >SYSCALL GetDevByID.A bcs .99 + >STYA pDev + ldx #DEVMGR.STATUS + jsr pDevJmp + bcs .99 + >STYA ZPPtr1 ldy #S.DSTAT.SIZE lda (ZPPtr1),y diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index d3f080f5..87a13a7c 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -90,7 +90,12 @@ STATUS >LDYA L.DEVSTAT clc rts *-------------------------------------- -OPEN stz CURON +OPEN sta A2osX.SCRNDEVS+1 DEV.ID in A + + lda #S.DSTAT.S.OPENED + tsb DEVSTAT + + stz CURON stz bEscMode stz bEscModeCSI @@ -98,8 +103,6 @@ OPEN stz CURON stz OutPtr stz OutCnt - sta A2osX.SCRNDEVS DEV.ID in A - jsr RESET ldy #0 @@ -114,13 +117,13 @@ CONTROL sta SETTEXT sta SETALTCHAR sta SET80DISP sta CLR80STORE - sta CLRPAGE2 - lda #1 + sta SETPAGE2 + lda #2 sta A2osX.ASCREEN clc rts *-------------------------------------- -CLOSE stz A2osX.SCRNDEVS +CLOSE stz A2osX.SCRNDEVS+1 clc rts *-------------------------------------- @@ -128,7 +131,7 @@ READ jsr Char.Out.Get bcc .8 IF cs,no char in output buffer... lda A2osX.ASCREEN - cmp #1 is CON active? + cmp #2 is CON active? bne .9 no....exit lda A2osX.TIMER16 @@ -666,7 +669,7 @@ CUROFF lda CURON beq CUREXIT.RTS CURBLNK lda A2osX.ASCREEN - cmp #1 + cmp #2 beq CURBLNK1 lda CURON @@ -852,7 +855,7 @@ DRV.CS.END EscCodes >PSTR "MDc" EscSeqCmds >PSTR "mnrKH" BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 -BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 +BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B CH .BS 1 CV .BS 1 INVFLG .BS 1 diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index ad30b8b6..6f22bbf8 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -123,61 +123,54 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr * ^ * SCRBitOfsL (0->6) *-------------------------------------- -BLT.Get7BMBits ldx BLT.BMBitOfsL - - lda - - sta ZPBMShiftPtr+1 +BLT.Get7BMBits lda (ZPBMDataPtr) - lda (ZPBMDataPtr) - and ShiftML,x Get only needed bits + ldx BLT.BMBitOfsL + beq BLT.Get7BMBits0 done! and no need to advance ZPBMDataPtr + lsr Range 0->127 + dex Range 0->6 + beq BLT.Get7BMBits1 + + ldy Shift7.LO-1,x X = 1->6 + sty ZPBMShiftPtr+1 + ldy Shift7.HI-1,x X = 1->6 + sty ZPBMShiftPtr+1 + + and Mask7BitsL,x Get only needed bits tay - lda (ZPBMShiftPtr),y - sta GBYTE + lda (ZPBMShiftPtr),y + pha - - inc ZPBMDataPtr + inc ZPBMDataPtr Next BM data byte bne .1 inc ZPBMDataPtr+1 .1 lda (ZPBMDataPtr) - and ShiftMH,x + and Mask7BitsH,x tay - lda (ZPBMShiftPtr),y - ora GBYTE we have the 7 0xxxxxxx DATA bits - - - ldx - tay - lda Shift.LO - + pla + ora (ZPBMShiftPtr),y + dec BLT.BMBitOfsL X = 1->6, ADD 7 MOD 8..... + rts + +BLT.Get7BMBits0 and #%01111111 Get only 7 needed bits + ldx #7 + stx BLT.BMBitOfsL Was 0, add 7 bits rts -*-------------------------------------- -ShiftML .DA #01111111 - .DA #11111110 - .DA #11111100 - .DA #11111000 - .DA #11110000 - .DA #11100000 - .DA #11000000 - .DA #10000000 -ShiftMH .DA #00000000 - .DA #00000000 - .DA #00000001 - .DA #00000011 - .DA #00000111 - .DA #00001111 - .DA #00011111 - .DA #00111111 +BLT.Get7BMBits1 stz BLT.BMBitOfsL Was 1, add 7 bits, MOD 8=0 + + inc ZPBMDataPtr go to next byte + bne .1 + inc ZPBMDataPtr+1 +.1 rts LSR did already 0xxxxxxx *-------------------------------------- - MAN SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT LOAD /A2OSX.SRC/DRV/DHGR.DRV.S diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 9dfa59ef..a160043b 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -147,6 +147,12 @@ J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR .DA LBUF.DrawAtY.SET .DA LBUF.DrawAtY.ORA .DA LBUF.DrawAtY.AND +L.SHIFT.R2 .DA SHIFT.R2 + .DA SHIFT.R3 + .DA SHIFT.R4 + .DA SHIFT.R5 + .DA SHIFT.R6 + .DA SHIFT.R7 L.DSTAT .DA DSTAT L.Color.Pixels .DA Color.Pixels .DA 0 end or relocation @@ -156,6 +162,23 @@ STATUS >LDYA L.DSTAT rts *-------------------------------------- OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A + + ldx #0 + + ldy #0 + +.1 lda L.SHIFT.R2,x Get relocated LO BYTE + sta Shift7.LO,y + + inx + + lda L.SHIFT.R2,x Get relocated HI BYTE + sta Shift7.HI,y + + inx + iny + cpy #6 6 LO/HI bytes to set in tables + bne .1 *-------------------------------------- CONTROL ldy #0 @@ -344,6 +367,9 @@ CONTROL.LCM .DA #SETDHIRES .DA #$ff *-------------------------------------- +Shift7.LO .BS 6 +Shift7.HI .BS 6 +*-------------------------------------- CB.CmdLen .DA S.CB.Y1+1 SETPIXEL .DA S.CB.Y1+1 GETPIXEL .DA S.CB.X2+1 HLINE diff --git a/DRV/DHGR.DRV.T.txt b/DRV/DHGR.DRV.T.txt index 906d2a84..2b90579c 100644 --- a/DRV/DHGR.DRV.T.txt +++ b/DRV/DHGR.DRV.T.txt @@ -5,21 +5,20 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -Mono.NMasks .DA #%01111110 - .DA #%01111101 - .DA #%01111011 - .DA #%01110111 - .DA #%01101111 - .DA #%01011111 - .DA #%00111111 -*-------------------------------------- -Mono.Masks .DA #%00000001 - .DA #%00000010 - .DA #%00000100 - .DA #%00001000 - .DA #%00010000 - .DA #%00100000 - .DA #%01000000 +Mask7BitsL .DA #01111111 Useless + .DA #01111110 + .DA #01111100 + .DA #01111000 + .DA #01110000 + .DA #01100000 + .DA #01000000 +Mask7BitsH .DA #00000000 Useless + .DA #00000001 + .DA #00000011 + .DA #00000111 + .DA #00001111 + .DA #00011111 + .DA #00111111 *-------------------------------------- C1.MASK .DA #%10000000 mod 0..... C2.DATA .DA #%10000001 ->C1.DATA @@ -37,6 +36,22 @@ C2.MASK .DA #%11111110 .DA #%11000000 .DA #%10000000 *-------------------------------------- +Mono.NMasks .DA #%01111110 + .DA #%01111101 + .DA #%01111011 + .DA #%01110111 + .DA #%01101111 + .DA #%01011111 + .DA #%00111111 +*-------------------------------------- +Mono.Masks .DA #%00000001 + .DA #%00000010 + .DA #%00000100 + .DA #%00001000 + .DA #%00010000 + .DA #%00100000 + .DA #%01000000 +*-------------------------------------- * bits to "and" to reset color of pixel (0 means nothing to do) * 4 bytes * 7 mods *-------------------------------------- @@ -156,6 +171,13 @@ MOD7.256 .HS 040506 .HS 00010203040506 .HS 00 *-------------------------------------- +SHIFT.R2 .BS 128 +SHIFT.R3 .BS 128 +SHIFT.R4 .BS 128 +SHIFT.R5 .BS 128 +SHIFT.R6 .BS 128 +SHIFT.R7 .BS 128 +*-------------------------------------- BASEL .HS 00.00.00.00.00.00.00.00 .HS 80.80.80.80.80.80.80.80 .HS 00.00.00.00.00.00.00.00 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index d8706669..be580863 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -116,7 +116,7 @@ SYS.Rename .EQ $42 SYS.GetDevByID.A .EQ $48 SYS.GetDevByName.YA .EQ $4A -SYS.GetDevStatus.A .EQ $4C +* .EQ $4C * .EQ $4E * .EQ $50 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 92481b3c..86988b27 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -93,28 +93,27 @@ K.MLI.PATH .EQ $03B0 64+1 -> $03F0 *-------------------------------------- *** $3F0-$3FF IRQ Handler.... *** *-------------------------------------- -* Main/Aux $400 -> $7FF : Console Screen -* Main/Aux $800 -> $BFF : System Screen +* Main/Aux $400 -> $7FF : TXT PAGE1 System Screen +* Main/Aux $800 -> $BFF : TXT PAGE2 Console Screen *-------------------------------------- -PS.Table.PID .EQ $0C00 K.PS.MAX -PS.Table.hMem .EQ $0C20 K.PS.MAX +* free $0C00->$17FF = $C00 (3072) Aux *-------------------------------------- -Evt.Table .EQ $0C40 K.EVT.MAX*S.EVT.SIZE=8*8=64b +*** Z80 Reserved $1000-10FF*** *-------------------------------------- -Flt.Table .EQ $0C80 K.FLT.MAX*S.FLT.SIZE=4*32=128b -*-------------------------------------- -K.IOBuf256 .EQ $0D00 Main -K.Buf256 .EQ $0E00 Main -*-------------------------------------- -K.STACKTOP .EQ $0F20 down to $0f00 -*-------------------------------------- -*** Z80 Reserved $0F00-10FF*** -*-------------------------------------- -Z80STACK .EQ $0FFF (0FFFFh) Down to $0F20 Z80JMP .EQ $1000 (00000h) Up To $10FF +Z80STACK .EQ $10FF (000FFh) Down to $1000 *-------------------------------------- -* free $1100->$15FF = $500 Main -* free $0C00->$17FF = $C00 Aux +PS.Table.PID .EQ $1100 K.PS.MAX +PS.Table.hMem .EQ $1120 K.PS.MAX +*-------------------------------------- +Evt.Table .EQ $1140 K.EVT.MAX*S.EVT.SIZE=8*8=64b +*-------------------------------------- +Flt.Table .EQ $1180 K.FLT.MAX*S.FLT.SIZE=4*32=128b +*-------------------------------------- +K.STACKTOP .EQ $12FF down to $1200 +*-------------------------------------- +K.Buf256 .EQ $1300 Main +K.IOBuf512 .EQ $1400 Main *-------------------------------------- Dev.Table .EQ $1600 K.DEV.MAX*S.DEV=32*16=512b *-------------------------------------- diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 5c389bf5..0f69c6cb 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -4,8 +4,6 @@ LOMEM $A00 INC 1 AUTO 6 *-------------------------------------- -SYS.BASL0 .EQ $800 -*-------------------------------------- CORE.Run lda CORE.PSCount sta CORE.Counter bne .1 SHOULD NEVER HAPPEN!!! @@ -162,9 +160,9 @@ CORE.GetEvents lda #Evt.Table sta CORE.VBLState save new bpl .8 Up2down transition,no tick - lda SYS.BASL0+37 + lda SYS.BASL0+38 eor #$80 - sta SYS.BASL0+37 + sta SYS.BASL0+38 .2 inc A2osX.TIMER16 bne .3 @@ -412,7 +410,7 @@ CORE.DestroyEvent CORE.PSSelect0 >LDYAI CORE.S.PS0 Select PS0 >STYA pPs - >LDYA CORE.S.PS0+S.PS.ZP+4 + >LDYAI K.STACKTOP >STYA pStack rts *-------------------------------------- @@ -472,7 +470,7 @@ CORE.Tick10t .BS 1 CORE.Counter .BS 1 CORE.PSCount .DA #0 CORE.LastPSID .DA #0 -CORE.S.PS0 .BS S.PS +CORE.S.PS0 .BS S.PS.PC+2 *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.CORE diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt index 19460c4c..836ebda5 100644 --- a/SYS/KERNEL.S.D01.txt +++ b/SYS/KERNEL.S.D01.txt @@ -244,6 +244,8 @@ A2osX.PrtDrv.GetDev A2osX.PrtDrv.Cnt .HS 03030301030101010404 *-------------------------------------- +* NULL DEVICE +*-------------------------------------- DevMgr.NUL.Code .DA .1 STATUS .DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL WRITEBLOCK @@ -268,6 +270,8 @@ DevMgr.NUL.Code .DA .1 STATUS .DA #0 .DA $0900 *-------------------------------------- +* SYS DEVICE +*-------------------------------------- DevMgr.SYS.Code .DA .1 STATUS .DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL WRITEBLOCK @@ -293,40 +297,24 @@ DevMgr.SYS.Code .DA .1 STATUS DevMgr.SYS.Open stz DevMgr.SYS.CH stz DevMgr.SYS.CV - ldx #0 - - ldy #0 -.1 lda DevMgr.SYS.TITLE,y - beq .2 - - jsr DevMgr.SYS.SetCharAtYX - iny - bne .1 - -.2 lda #$20 - jsr DevMgr.SYS.SetCharAtYX - iny - cpy #80 - bne .2 - jsr DevMgr.SYS.Home lda #1 - sta A2osX.SCRNDEVS+1 fall in Control + sta A2osX.SCRNDEVS fall in Control *-------------------------------------- DevMgr.SYS.Control sta SETTEXT sta SETALTCHAR sta SET80DISP sta CLR80STORE - sta SETPAGE2 - lda #2 + sta CLRPAGE2 + lda #1 sta A2osX.ASCREEN clc rts *-------------------------------------- DevMgr.SYS.Read lda A2osX.ASCREEN - cmp #2 is SYS active? + cmp #1 is SYS active? bne .9 lda OPENAPPLE @@ -421,20 +409,24 @@ DevMgr.SYS.Scroll php sei - sta SETWRITEAUX - sta SETREADAUX + +* sta SET80STORE + +* sta SETPAGE2 ldy #39 + .2 lda (ZPDRV+2),y sta (ZPDRV),y dey bpl .2 - sta CLRWRITEAUX - sta CLRREADAUX +* sta CLRPAGE2 +* sta CLR80STORE plp ldy #39 + .3 lda (ZPDRV+2),y sta (ZPDRV),y dey @@ -449,19 +441,24 @@ DevMgr.SYS.ClrLineAtX lda DevMgr.SYS.BASEH,x sta ZPDRV+1 + lda #$A0 + ldy #39 + php sei - lda #$A0 - ldy #39 - -.1 sta SETWRITEAUX +* sta SET80STORE + +.1 +* sta SETPAGE2 sta (ZPDRV),y - sta CLRWRITEAUX +* sta CLRPAGE2 sta (ZPDRV),y dey bpl .1 +* sta CLR80STORE + plp rts @@ -494,31 +491,39 @@ DevMgr.SYS.SetCharAtYX tya lsr tay - bcs .2 + pla + bcs .2 + + php sei - sta SETWRITEAUX + sta SET80STORE + +* sta SETPAGE2 sta (ZPDRV),y - sta CLRWRITEAUX +* sta CLRPAGE2 + + sta CLR80STORE + plp ply rts -.2 pla - sta (ZPDRV),y +.2 sta (ZPDRV),y ply rts *-------------------------------------- DevMgr.SYS.CH .BS 1 DevMgr.SYS.CV .BS 1 *-------------------------------------- -DevMgr.SYS.TITLE >CSTR "A2osX System Screen" DevMgr.SYS.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 -DevMgr.SYS.BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B +DevMgr.SYS.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 *-------------------------------------- + .LIST ON DevMgr.FreeMem .EQ * + .LIST OFF MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.D01 LOAD /A2OSX.SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 7ce9c188..7f73f282 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -77,20 +77,6 @@ K.GetDevByName.YA K.GetDevDNF lda #MLI.E.NODEV CS from cpx/beq rts -*/-------------------------------------- -* # GetDevStatus.A -* ## IN: -* A = DevID -* ## OUT: -* CC = OK, CS = ERROR -* Y,A = Ptr to S.DEVINFO -*\-------------------------------------- -K.GetDevStatus.A - jsr K.GetDevByID.A - bcs K.GetDevDNF - >STYA ZPPtr1 - ldx #DEVMGR.STATUS - jmp (ZPPtr1) *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.DEV diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 2fc236e2..4e6968e6 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -11,6 +11,8 @@ ZPPtr2 .EQ ZPKERNEL+2 ZPPtr3 .EQ ZPKERNEL+4 ZPPtr4 .EQ ZPKERNEL+6 *-------------------------------------- +SYS.BASL0 .EQ $400 +*-------------------------------------- Kernel.Init sei ldx #$FF txs @@ -400,7 +402,7 @@ KConfigLoad >LDAXI MSG.KCREAD jsr PrintFAX rts *-------------------------------------- -Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH Init Stack +Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack .HS 3EFF LD A,0FFH Set Flag .HS 320D00 LD (FLAG),A .HS 3200E1 LD (0E100H),A Back to 6502 @@ -434,19 +436,73 @@ PS0Init ldx #S.DEV*2 NUL,SYS sta Dev.Table-1,x dex bne .1 - - lda #2 - sta DevMgr.Count - >LDYAI CORE.S.PS0 Select Process 0 (Kernel) + + ldx #0 + + sta SET80STORE + + ldy #0 + +.2 lda DevMgr.SYS.TITLE,y + beq .3 + + cmp #$40 + bcc .10 + cmp #$5F + bcs .10 + and #$3F + +.10 php + sei + sta SETPAGE2 + sta SYS.BASL0,x + sta CLRPAGE2 + plp + + iny + + lda DevMgr.SYS.TITLE,y + beq .5 + + cmp #$40 + bcc .11 + cmp #$5F + bcs .11 + and #$3F + +.11 sta SYS.BASL0,x + + iny + inx + bra .2 + +.3 lda #$20 + +.4 php + sei + sta SETPAGE2 + sta SYS.BASL0,x + sta CLRPAGE2 + plp + +.5 lda #$20 + sta SYS.BASL0,x + + inx + cpx #40 + bne .4 + + sta CLR80STORE + + >LDYAI CORE.S.PS0 Select Process 0 (Kernel) >STYA pPs >LDYAI K.STACKTOP >STYA pStack - >STYA CORE.S.PS0+S.PS.ZP+4 init Kernel Soft Stack >LDYAI DEV.SYS - >SYSCALL MkNod.YA + >SYSCALL MkNod.YA Will open SYS bcs .9 ldy #S.PS.hStdIn @@ -462,6 +518,8 @@ PS0Init ldx #S.DEV*2 NUL,SYS clc .9 rts *-------------------------------------- +DevMgr.SYS.TITLE >CSTR "A2osX System Screen" +*-------------------------------------- DevMgr.NUL cld jmp (DevMgr.NUL.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED @@ -502,7 +560,7 @@ IrqMgrInit >LDYAI MSG.IRQ bcs .1 lda #'v' - sta SYS.BASL0+37 + sta SYS.BASL0+38 >LDYAI K.IrqH.VBL >STYA K.IrqH+1 @@ -516,7 +574,7 @@ IrqMgrInit >LDYAI MSG.IRQ bcs .8 lda #'c' - sta SYS.BASL0+37 + sta SYS.BASL0+38 >LDYAI K.IrqH.TClock >STYA K.IrqH+1 @@ -530,7 +588,7 @@ IrqMgrInit >LDYAI MSG.IRQ .8 jsr IrqMgrInit.HZ2Tick lda #'p' - sta SYS.BASL0+37 + sta SYS.BASL0+38 >LDYAI MSG.IRQ.POLL >SYSCALL PrintF.YA diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index a70aa20b..1a083e62 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -71,9 +71,9 @@ K.IrqH.TCLOCK ldy IRQ.VBL.n0 inc CORE.IRQTick - lda SYS.BASL0+37 + lda SYS.BASL0+38 eor #$80 - sta SYS.BASL0+37 + sta SYS.BASL0+38 clc rts @@ -92,9 +92,9 @@ K.IrqH.VBL jsr IRQ.VBL.MSM SERVEMOUSE inc CORE.IRQTick - lda SYS.BASL0+37 + lda SYS.BASL0+38 eor #$80 - sta SYS.BASL0+37 + sta SYS.BASL0+38 clc rts diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index b7493e54..41db45d7 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -50,7 +50,7 @@ K.SYSCALL.JMP .DA 0 $00 .DA 0 .DA K.GetDevByID.A .DA K.GetDevByName.YA - .DA K.GetDevStatus.A + .DA 0 .DA 0 .DA 0 $50