From f8c800e5276c603f1874d134be28893b5aceda0d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 28 Jun 2023 15:06:53 -0700 Subject: [PATCH] Create DSKY Driver Framework Added a new driver category for DSKY (Display/Keypad) devices. Existing DSKY devices were converted into drivers ICM and PKD. These devices were previously DSKY and DSKYNG. This removes substantial code duplication and recovers significant space in romldr and dbgmon. --- Doc/RomWBW Applications.pdf | Bin 242255 -> 242255 bytes Doc/RomWBW Disk Catalog.pdf | Bin 124412 -> 124413 bytes Doc/RomWBW Errata.pdf | Bin 28606 -> 28606 bytes Doc/RomWBW ROM Applications.pdf | Bin 159616 -> 159617 bytes Doc/RomWBW System Guide.pdf | Bin 531380 -> 560229 bytes Doc/RomWBW User Guide.pdf | Bin 613096 -> 613172 bytes ReadMe.md | 2 +- ReadMe.txt | 2 +- Source/Doc/SystemGuide.md | 192 +++++++ Source/Doc/UserGuide.md | 3 +- Source/HBIOS/API.txt | 90 ++++ Source/HBIOS/Config/MBC_std.asm | 5 +- Source/HBIOS/Config/SBC_max.asm | 2 + Source/HBIOS/cfg_master.asm | 11 +- Source/HBIOS/cfg_mbc.asm | 11 +- Source/HBIOS/cfg_mk4.asm | 11 +- Source/HBIOS/cfg_n8.asm | 11 +- Source/HBIOS/cfg_rph.asm | 11 +- Source/HBIOS/cfg_sbc.asm | 11 +- Source/HBIOS/cfg_z80retro.asm | 11 +- Source/HBIOS/cfg_zeta.asm | 11 +- Source/HBIOS/cfg_zeta2.asm | 11 +- Source/HBIOS/dbgmon.asm | 304 +++-------- Source/HBIOS/dsky.asm | 386 -------------- Source/HBIOS/fd.asm | 22 +- Source/HBIOS/hbios.asm | 232 +++++++-- Source/HBIOS/hbios.inc | 48 +- Source/HBIOS/hdsk.asm | 2 + Source/HBIOS/icm.asm | 354 +++++++++++++ Source/HBIOS/ide.asm | 6 + Source/HBIOS/imm.asm | 2 + Source/HBIOS/md.asm | 2 + Source/HBIOS/{dskyng.asm => pkd.asm} | 726 ++++++++++++--------------- Source/HBIOS/ppa.asm | 2 + Source/HBIOS/ppide.asm | 25 +- Source/HBIOS/ppp.asm | 2 + Source/HBIOS/prp.asm | 2 + Source/HBIOS/rf.asm | 2 + Source/HBIOS/romldr.asm | 143 ++++-- Source/HBIOS/sd.asm | 30 +- Source/HBIOS/syq.asm | 2 + Source/ver.inc | 2 +- Source/ver.lib | 2 +- 43 files changed, 1449 insertions(+), 1242 deletions(-) delete mode 100644 Source/HBIOS/dsky.asm create mode 100644 Source/HBIOS/icm.asm rename Source/HBIOS/{dskyng.asm => pkd.asm} (50%) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index cc4f2d114bccd3f5048b4970ddbe1d22b217672a..d35f75a078df0fe84271e29134945e9959403564 100644 GIT binary patch delta 621 zcmX^Agzx+lz6lfSpHAP`aNxk4l%r+0AKcy$-1tpI-87q5cZYM``@{Oxzb~#_ zJg;oSWgDB?en}N;k@JktuA4f#%n4%P3_B-$ru;{-+mwb$`Dx<6=LuNWi`f60TOX#u z#~11Khwqg7@ly&Sv3!>n-ssnPw%2U)vM*U;XLB9~$5tCAZ@zI#h0X1_lFav1k(*Ct z8fpt7&5zx8Q~NxNS4m`s?VF0E-ZHOk-Z6iIQkKrUxiUPVZ&_2BkCDu-FERThgX$c# zpWpi972SBk)rif#l*Kr}q%`OjXML>Za;It)oA6Vv1<}v%T@18%7op|-5y@b`0)RT=S@}V z)kltV&=sOpsCYEI8=eZ=7q$+5*SQ!}@85@`xSs0p_m>OE>8knma7^nl) z`R1o!S2BH7DYJ(F&@crJ-%Rh2)CdJ5V?ERDOl8b(teu@*jZK}MEnFN;T+NM)3=EuH dER2i|O`RMKT};fKEluqdYzQftZn%kA4gkc-4C?>@ delta 621 zcmX^Agzx+lz6lfSRW*a;9TFDgZA#j`^+WEBl@8ThUGM(OyG2fV`{TmRgbdFoj~_2? z`oPF>o>|W3ralv+=57bhE8T}(K9ouCV=Kz&zc%4+xoytO+{X`}_dfV!x#!01em~i- zTbk!Sd-%}(%!AF&>tzz^;)VBo_tR+L5A)-ECjG}w`B#Ho{MmVLs-5be1pN7t{x5W) zg+)sIqw;`RGThC}Ule_i?J7;lk6Sv^R8@R)MjE$o>DqfeXOpxiOGwC8pD&Den-F`B zF{1hOCc`?JnPFKld%uY!qCh8ti24J9k&_!WA(lcP?9Rn6CWW>fQTF^N{^Z z{d(X0m3NPLb4p9#w(Eq_h%#HvDLS&JbG`(vpZsLqaj^{{8}1e_{%|GZ!~Y|mH&vxq zE1kWjcrkEJenYNQkkqQb(+@n&OL|**`PsUMi}#;9Y#$VNzj|_Ex^S~IQ@b-0BM>uf zcV=Q%D0Vl~GtgAfcP>gzEXmBzb4e^oRnTy;GBPkSHZU_XFf=s*GIR~h)eQ{Pf$Dto zQ?M(UzN(bjLjY))f`)IVcSvf4f|0SF;dZ7n<~P>PCKiUKW{$2d2F{i)md3`GmIj7S bh9)Kk#zt-i&ZbV5b_zCxluS3=#4HB@jb#aX diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 750d3a32271f44cdd285667000242d333714f863..8f200df24138ef95572896e741427e1ee29f96c5 100644 GIT binary patch delta 4151 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 XvG)I5x=)@iRE~=k)zwY6G*|owtL_et diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index a33d9da4af357aeac11f8f4cfeb1dd8882daa3df..5af2c6a9221bcd368b2ea93eff35fc622eb75ec7 100644 GIT binary patch delta 473 zcmdmYpK;%P#tGBwE%Pqi6M7N$MMS|;((%{-c0JciRWeeNUxJ<#Ss3qj`oYlhoRNRx z8~Mfto81nadsZBF`A{akkF6-9f4%1H%DXx0w+|gYFMaUx^AAb;_m#d{v7Gmf2|vGm z65C0>qs0wB|JFIU%n4%PESsx7Bmcwi9t}p-_}rKrJH;Z6!av6US4|dUv}Bw-Ie<~R z{=(AvPgg5Gm5sW2T`YO|T8Ae}lFf4$+F2gt5jopB#jGvt)Jm(y=Uy{c8}HPfb!zTW zwLV|rn-`90&%#W<1eVDuen0#!``7j?+!14Q=aTh? z>&n&L_dn&W*d#Ys>gHeeMQg6jlIvJ2_$5v!+nLMTPQG`k*}g0Dxa+5OSFKS_DSDRZOJYF%kz5c_@TYEQaFbQWc zo9h`&UdSxUV`OY#W@KS#Vq$7)I5|E`h8@Ok%JL8ZDpJt!&GZgQjZiQ$)-&CFE31XY u*}&D%(#Xl!z|q;n(#_1+#Msiz(aFfg%+k`p#oXD#)K0;Mkdny@^JM{+C&=0W delta 473 zcmdmYpK;%P#tGBwRsAm9i+UmUL}Y=Tr0cK$?Ru`4s$_&DzXUxgvM}E5w1er;>xOoZ zZ~YDq^I{jU#9c{L`muv|KC|VPUS>yC1;L#7e|7#|TFWyo7HFaw3Os3uX5mc@B<8Hrc;?9F%=X(zY zFFtsG=HyM@VPUJ+Ixkvm8P5=Hx`kuaFYiZ}W=EK=zxRek{&A|@Kju?mx7KaeU=q$? zHq$ehypUOx$H>^g%*epd)Wq1pVsdg*qnnYbk&~f`xwC<@nTd;`qlv4NiHnJWg^`Jwv7LeqAtjR+=F0*AUpvd} diff --git a/Doc/RomWBW ROM Applications.pdf b/Doc/RomWBW ROM Applications.pdf index 7c58dbeb46b4d4b9e73ab9de2387397480fca9a8..5d762a6ada7aace67070a647b0cf5c0f0e9047d3 100644 GIT binary patch delta 7835 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 E0R`}j2mk;8 delta 9087 zcmai3eXN#c8IO0Oak7mQ617Or&OpG(-QORnCy@_PAsWL(Dkd2zYmp*kh3*M6q|o#f z`l4*$3^S>wR`?NLDPvRIbh2EyV_1!8#4&0W)vVF)dCz%2p6hqE*II* zuIpL%#+YxsG3K6?qf-BuCltF@zOKd&{$u=q*8Sk02PRze?hS(*`&WJpAgj z8&2)}%O`u+?EXmavYofQJvcah_Md;-zxMt=zGU|vJ$&QXbMmeS-<54|G4c<4Ah$ zjBQukaQwi3zgA2-G>a+S5+f6H8e*CoklaAhc_So^K-M8cq(?9Y2#vR-B6aD{M_|UlJ+g4rp zzGBO_e*e>V^?qt|_mkhd?C|oR{A|&_$$9mR?)RVh?+^U)=yzZE)w1JHtU7(+GcyKG zZu$82#g=Q;wd(2qzRy3l=*f-uTsdb?IQYz=t@odO^TC~?H`kZGvhb$$2YYuu@bn9> z-S*g;bEeck{rub8zcl^k%eS4lYv4qE-MO1CzTkrs&Z{3Ls9~J5k%&Sd2Luv1fv-LflfBD_K+T5|>eAP2` z{)#IWEnnPY?D@K$=GQK}DD+L~mOkTY6)DTnt&QA7I1Iu~Mav=z>;*MloQL(1$`qxFlIhHy6r zA6(#)G&*W8yj5RtO>J~R;23iVl{n$jm{HBb3o&OU&yXGTV&Jcrp4P#bAy0QEq0fc{ zQFer7NDn^Kiq3K%SkT#4jcz1iuu8g1XGbr=Sri6>RQNzSlYN#+2q>fc0OCcwAO7t? zd7Yz|#u%$8;S5Sl<_r*h7~tCYW~`;`H|VFsy6q%1(NNqC;8vERiB@_+p*IjJo9M~? z=obQ&;eQij6&T#rmGaWORxhXj!^c5s$>3A#2{1kjekiBxTaUNJnKI0N*N zanD2vOKLz=6c|M;5p#`}zlS+M5_erV6R79o#ng0M)Rg@Wbu7!%g-oGyHd9x0C{K8> z;s4g0%A$$SqNEerNB67hyM=$Z#5mbYZ4|ldU1cSm+a{`5H$d&$YxgWW2W!ZVB zseOW2P}zZ4ko&#$!~;CKdq-jp)t?W53wp7q((wV2mvVtC2SlYgM7JN8k-?-}L~5Tt zC!%41BjSm{1d4GO0d9lRl&k@Sw*m8bf6GD~QmYKkIcar3NIG2DK(K(eC_yTqwpkZ^ zzQYR*|D!1qJcfv--yvAu5|D3n7Qs-ZTttS5vxp8TLx)N%s)I>+Ner#-)GQMW`IKBy zb47q;j&MmJa*IsJL&kLQzo-cw6|8PDl~$Odj|A0tFyTkU&?`d%(5r^7^ndh$uo{=h zy#`iIkw`>|N90!Is>Ba)V49M^v{gYC=4kjViPaDo4rWi83ki!a*$+U52tSg=06CN& zZT^Q%#|VOqjtS7u7c=uoASDvMlaH$EE%-l;FvmezvocsoHLEqc9aTvx(Wfe>a3;4! z&;_rM{13x6UmT2V(NGT5h!PNqJQI+aRbxusmKR$5FO2}BDbQvP%AS@dDWFcOm*B;z zI_Y58c0exS)uI%nMNPu4Lu4?N!DZX`x|$Kcw)zcvJenKj4b zX1zmMbHZW8D60hcCc7PU(e&wJFvaFslmDfN7T7!-;)KArTm=hY1?0HIBH;pblT23V zCL$_D0+@+xg>t0E0XZ=`!I;FmZ|BiDst+mUM$k1Sa5enjcC`oHAZ1GsjJ2qAKa2)@ zBwgMkCX`s)z#;wzWlIw-1PNLJqH-1}b!lIeQX&+^nGBtFh1cz2V0act34;R|WQC=9QdTl5i-avsMHfa#WD`awIu3ba}rIIoY;wFA`WV1Ss=z6@oN5WQ{LWRRf`GJBzPT zdyu151^}a#)J=u}WkZw$f}GX(BFYyVS)TYl#a$s|7bFm91};Y6t1p4FYv322(1Ndw z54S=Ny2{qqeG#90Xe)ufM}!lfsW_dmuB1pCK$bKKn^;OkP_iMk>x2;$q%49)`N$&j%i+r}HudnN-)yr0`{_3jb TU+97%`0(8|dGhQ9bGrTq$yrXg diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 5cab0d79ba7fe02aef2219ac20c90fac87e02456..3dddc0928406077bfea5f4b580f2b058cb8e387d 100644 GIT binary patch delta 171856 zcmZr%cOcf^_s{b@_TEuuh|FhuWXp`K>^(EG+A^M~XeqquEo4Myl##7Sg={LaOGs9s zl-2J(^!a}Jd_KQ_-tPOHbMHOp-gC~quk(JCR|-!iiN^X<;o|~$$!-2a>P&UB(m#-n z%a7$7*w{$Lal^Kscs_DvkodIMenp>nEFD~=<#sWrPAs~~hT%OYTQPD$`JFt1D)>wU z$2rsJtK$=dQ09-_s!wuGb>RmN3^jh8)cLY;?1%Rl{*<*TtH2zNwOI&#(LMSDsbM2T znvFe|OFi=OGHRK5^a%M1hsn~5x#L}&qR}6kSARa%3<_*9TRJEy4l_GQ*6ek^c#ZJ9 z%;qb-X<0Bo>w|aqj*pKXd5t-BwL;=*L{AA_^OLKhwW-KQta7t=7yDXH`HW{0q+=c1 zt8mwO#1D$gg?pE>cg?+)R?zKJw=%@+ReJb1H2=`Sa*qC~2?M)`7P2;mhIR1AM-jR#mSic))YOA+NDw=Y4Y92jE*a|23KP?t8 zGDqwi(95~xcDDmeq30nU&0%nx5yINNPpO)O+WMK z&ywMe(!jb0=6w@sk4|A8^_gb{`s02a3^F^@TKs0=tw@h!>aSfxeqMZeolYF^$aAG- zhm`1u)h!I`uU(3}#|$8sbDU*5h+0tungjOXb>w& z^nqmzA4Xm{i0kpR%9OrZ%&pZQj5m7KYck0m$V=m)YVa{%*Xmn-PVbacO8L*_zOA1# z#$ykTGbB|_cPy)=pHPV<1Vd1O488m9j^)*k04Foe!}@t!E}P2eipjEm3BvhIRwqG$PrZ~2qSTi<48m;1G6CFNnWpr^CifdTKVirUHz~VFtOzbBgQFH5>HWAh0h*%A|@)NCZ1Yc!0}_Kyz>1( zw~M#6VMw2gqR{NmLrpf;U7CE~bKUA2hXWM)_jDV|r+>+vYikM1{eCQ9F!Xv=;G0R& zaSz$?aQyhXUztYF*KucZR?FF{McuhuLtA+tFADN+B~M0-SK=BM%f6h9d{B4gm%r@R zqz`%HtljaY5WU@r4YfRSQ;7=0%=0wkv>xTP57KA3jS`LcE`NP*aRG6=?H;m-{QE#*>uG!|W|^^Sdbi%3+P(TTS709pk=)Pgxr$YBeQYn_zPd0KT>*z z=WAPVK~`k?t>6v^28-_ew?-SPF~?WiF9m$&)Bl#)^YYkC#$=yxw{HjT!pmcUgxJqz z5Ua$15xZYY<3XAcM>w5MNCNxoMr}bB!sz_LPVyQ9Mo%_*EZ=V_5sxfk(RyX4cE@z= z+~oC#KRlL`h>@*sG|^sT)8;N`_A2K^OHQZbWV)n<`aAap4wb#n*Thq%R27y~YfXX*sn@k`kImZg6+A%eeO64Is$AC*YBXu4dVZt; zU)DvA81bEde52-}_DJ}^+~T#hYAub4BKY@Z+NqOHi{8&yDT;}Z+{kZ-(cJVDA z@zt*5#urZCQ}J&(w)VC7!6{5C1KGCqF_X&Mn0I8+mFUOai~Tn1^W9Hd-90nA?(`y^ z(|snjgW1<7Z0A^scQ)sqe~gX_cTws?Z@%_k=NoTMh7DxXHZ~2r7Vb}}+~x4XDqLjt z|JEi|7%^6{IqOS6?^V206ioa&I=?iO;?29}JUDsFW@V6L!n#?qWhMOh=t$P5$3O3_ z7Ar zCQd_gC!^Lb^Y=X$M9!3y9?Iu_Wk@!>zK6S{WPbkf;fh8jT`l?kRE(oi1x;P~htGxY zk5IoXZjSCd!|SrvWSJ0c)1P5G(T?k%TQoIYBO_vJj#D+8e*bDgFvdFjjr9xm8IO24 z_TQ~&av3T+ew&uw>-oM9 zjh|Ti-_<|3p6%>m%3Wc}eI7a>XZX0??$^wz!$S8UwPCIc@*ND*W{f#^!c#X@d`z8$ zt>wwL^kLe$%XBLkuk=%=4xc}_($R2i(C7QAq*YkNF$cotYUq`iu{^gl^<1rAN3koe zGI#ri8H-&XF4Kf*4yx|^^hsvLmWXA>uZJX5JW;P3Wj!yLdg-P5Y5SV{ta$VrZqf+f zw|7$C+8;Be%-nl7mNov3df}VS>!Al7>bv|;UL^baM5}a#HJ|A}W4cPEW^?1-gx@+o zv(WcL_EEtcsmX;F^P*R`Bh(&HhyTiNFlLDxReBly{fJv+_L9{1n~&Ao+PtTNWapw& zoS&ATm?tpHe9V4r_aqk|uz$0HRCqb2sH|*`^v3ou-1q7YBVTB^NYmvxPvzbsLYRAr zVy7C8d~yE8%G{iss(S%R(%sf*2<}x%V4!_srz{ie6cXeZznJ+oteY;TUS}|KCVKT) z*2e+#*!2EaR|k{%S96*A^7Z&~#vGaV`)$?VQQe#jl|s8lJgY(nNSlnwNyuqC@o*k% z!M0tUelmVY=}lovQ+7WpUD8k~!kHfGbZ&9!B~u%unibJ*NzSk&oJ?9l#LE~c?SI4- zb#U6zR9k<)o_PD6Br28mJJuH{4~+@uhaRPuN#=$6GVOQ7s0yO=yBheX3?nl*c<6l6 zrZ}byMNLjVQkY?Q$B8W zu0vo{zN9FUIk%k{7%R$`{-i{g`rav{o5J96#2Gv~O(fe>>_yCzh}Bds;BnD8i5N`P z<}!M;;09n*i{vT<96%*Jt0U*jw$MW(x6zk=nuUm%(O*Zt5D89_PekAiX!LUvE_5_y zA2Z2Pn4v2cH&oIxV}az@EaObgoZ}Q`XbzAJYc8JLjUj0;WQpa~f4wPVsDy|%pueo-)pEd4I`O>%~2_e*_~GjwexQoP+l~>8@QOaX#j~A5G$vVvCL` za2E#bxQnLN!WjscY}ufChNcg@_L=M!H|?Mni>5|+J_0&eXI#QdvF-WDbqve0`)#(m z{e>n;`gj!o+wAU9J@U9qDvDlX_jT=O7rN4cxCf}HNn)MVl>1U_Krnl@g zO?#;&ANWSuYkZKTCtgW8dLo*mSuX)a@<&v;XDI626V|i7j^IXIcN1e+?SH4EZ`BfX z;}AOI5fAkNmY@|!DQ6b}hSY)^3ObRTnn1(xLl<0b9O`Ji&~%=wN|v9=*J&zy+(m^U zb#HtS@OSd=w^GLyW;<7Zt(Ch8q*O=`bPb!i{)msRoxe2^&tZr;W*tO}C9oIkJIQBvMhD4CKJw;yvL-#*`QS zOQ%0Rsz^t&K>qZUj%^Jtg%a=BaG<&G%OeZuI6?|E%^RxjwK6H*h#!|A_K*f6?Yh1w_0cRN ztnXbR!@9H}^Q~ixq>Z(W6>@~Y&=FW;frhiJ4L!?DgU8AdusEnrEs>e1D2K)3gt3Z> zawG!uUUxrqS^YROo+yXIpoOtSoE#nvQMrpjq8b4#B+yL}FN`H9$SDxfkcO@}^jzaO z3l6Oyhamtu4lhT*K)1$j|qpCLo0%Tu;4GmzGwFi2dNdvprD8q#-a&w zL@bmE#?RCWU_oQ#uy{aKz{p_~iQD6A9Xif}B`SbH2*Q9Sr-%bOO2C1)XsDr2hmNse z6$x^9EJheZ#L8hw+nPpbJ41maT5b%EAg4$I-H1dvJPs?2!2=U1+Cg7@=wOu;8d@mE zfEgm_*fS~0;fZ)*3=UYU0BLxL!QB+D++k*@U&nzOCx=!bKqOshsQEA_bWYcv7E1t{ zg6RfzrD1_IAR1uE1o7$F(_jf;E&>#yCk+YNazZtFj?_e86A=>7mxi7KioL!A4F)5J z#$uo+faGk)32o{dLETtdRy0^XB2WW|CCK5hijcE`5Tvfe1V6k7CZMxtg6+8`WRu8MQkAHMt zQ}=imw&u6G9BtNZ!0xlBqT}#;MWO5SWOZ-dd2)8&FQ0>C)rz3O)%mkGw|sM#dUa*; zUjMW@{tN!jTuJ`&Wp)cTR#VyhF*Bpa3tOuDj%=sZh5BN1&k$#3+GIVw9J^AUp zWcmEB`t_kcr}S4#HwCN~t?81^6i{iOdNQ*%TyX~arZ|5;U|q=P;HUnOf&M2jJ!9J9 zXOEW!V|UJI4wF?+yUtrBY!!t`9#R$HR+3q)xs^sHz3&WJ$UT2Y|Mv750T2G`PlR?Q z)Em0x-HjVeU+=#^|7PvWV6mR`-J4&Go)pd_)NVK*6|xR(rFs8yJjK3Sw>o1rFtcr5 z-HJAqw)B2LWi^^*??C3hJp;1`U6B**QPv(v-n>`DpU$_I$c+oVQMcCL>m+-0vt~)X zZykS>I?$w=es#(>w$lEkKIj$|e#1H|g6`^-d;){b%`7x}!Kzc%s>co}a8l6RlPr0KQ$4q=m_~Bw+OHAxPRiiN%@k=`V_KW8+0^XM|4KYjcKf@Z!2FZt zfkSpe+I9yMgiR*tzb4J&qr&vSg+bk~g1zw$}hrr&n6gNkfJooaiixsJX{g`sMc zT9K8C-*_rqA}ozu^)NeCKG!o`*R)CLLyNF1$C&1@koNF`=H6VVP@Y)}w@8OHU7_ot zI2q*d%|*e5!AM-AQPqTL)ut+ykgWd6m=#fn643#VcH@k>>cSTor=G3V1;k_!!R|ek z?)Cm_{!8OuBw0Vm3AQBYq@;E#qFpUkYI%3}*%yR7XVl3fcc(~PeW~xqd@8_nkTBJ( zi&h)HNa}38e0lk4_|3x`w1Uq`TG^Ik_ARHm1N_kHBWe2SLev}Ql$XITP~hd@mXgOKU%kHgRIpj5)w( zH{+ATqxt^ylTYMHR=Ujd2FJ0N2DvU+T{1n^Q*|TTm0j=ZdWzkz)9oem?F4kcE*h>y z2Q(hFQC!Wv)L!$`X`GyNY)tALJ~TH8<~eLS@_bnEh5h2o4TC2k^+8FY>o#hm@oS9U zLJWzD5?Z=$`b*pr7v7+7+Kid@goy9D5fvd33-{m2qiR^m_0;8u>-aiHUH4xzN}VuG z-DG9^G>`bQ*s_w;;~-7b&+&s>!Kvd5#NhQsVk%k}eXG_Z#3FvNaZ{#u{Xj|*yp|Yu zn@6}LKr}3rYo=*Lug#vAzT|kO&A%ndDZ5n2!Ex<@;n$0BWxB+z!YXsd1P1>PTN{!K z&9y;lH}Z?B$wzhb33dIW8Dtf zjylwK5*F^iP#f~kyusei3%AjJauQ6}cY2Sy88!HA#DzSt)QTQF@>Al+65Ee;5n9zV zMKdZ)iv3Da^Aobom%CnierJR;r-!D(SnaSfwv1PNhEZfEp@h&nHA(&mA&G%o6H)=T z>y74_`N(6X-#;!bH1_j|@r|Iy1gU>*sn1N_)3wZ%&9RKZ-mM8d81k@1+3NLUn%Kv| z6Zb>zuD@cOxPP5#4E_*WD80KibMRf|%=c3ChbBpqIb&O_k%0P}>XA-08UMG_QBG;Q z6~>;7SHm8j>4xdrlmk7L-WEt~m^~J~a&#!j=@y`+ENnp@FbDw)hoz2)ndF4Oy0*8@I*FB7Nv&L?{mRH*cE2dv=QGSd1VGj*^}S9HF47gc#| zkL-`Iis~}|v%{Z-^UNZeib-c3Du+IfmoA?@dJ7xSHJo+-_K36m1hLqh)2$_A=DCDh zjZgm1RMT?pOmf+gyI(!tEth6`VrN~Iwtg^ByMGUOQ7jV4Q|%ggcYaV{A>{R9*l_jB z2jwk>#SW-ig6BimAt^&yb6Zc_Pd2{y1Kt|dzP=OeF~fFM=}_6;bB|*!GtyGDj@;!_ zje6x#Dxa5re|qwqMRWmV&eQ*7fb_0TjFhvNr_}7sufYyoGWlnyjjStfKh4>xu=kUb z&j#sKWFHinSlxbGeAijy?x5rn?lawMCQF{vh(^6E04Kd)r$}|V6=)R2>x@MB7-b0x zzbMT+NhR%Fb&~oP&cij5!~4~9rcdC3m;(=nWZK#YyJSp|dI`=W9+8)Jt8R!z4T{Er zeuF{`@ty!q9!|#OYb2Sfku399+qno_Zi{M&c{v7qo3uUVb+&-P%&2oB!cpI)VE`G{Rm1)M@9iL-p-EesDv6~;RH-SDs#sG_IQBTV; zloa+Br@%>^hvr4SLVY%x>`8{J3?{bvk$I6`$r$!XeL)OL#QW8u&CK`U$?)8}>;Ru0 zV7D|%cCeYK+xC!eSH(QT9c-XWu#ETmfH3Q0qQY7O0c+vjWUedBKCKWRt)Z`(FbhRT zeJUegvrmOfDn$|+nz5EIL|qyH_3EzNZ8!;fJ#Xks=F(fUlj^N1pjIf-k0?jvCW`5? z<3KY(xa+J{MEu*V?o=mr19J)dcwIsgfn1uDW5_@5%}rm*a6d;1;7MEU$Qu_9C)e%K zN`9VnK|5LQ4uRjh=5>o@mzKnZr2`y}>N0+2-xzLN#RXo{qrl1cZ%8(;sU?djaB|6j z!#@@VaI&RP?@&ZCyz3@If>j(HO5fKso7r%`N3T#XP(#vNg~6Uqp-8kRRAIbakXjCr{Psz^c4HsFmWo^xxX)Bc08T#M z<(o`+!{GgmrI=1G_%)va(7SNgiDZlg^${=%zPsE5vJX2~b(rI{j7jfpBa9_wt@df! zPUw>Zt8*;GcJnFwy%Qs6Y3dj1DeybDHjPB{qK=ue#+EbeHK#fZh!$7MmG^UM*w(~c zjp)6nFF{3-l(HU89U0S)vy5|Q$OD?T1ItAl?KOGv=Xl zZ795>4*^nhZ~(BBj+saT^1>JjW+oD#5(goOY(NjGI&eT=9GvKhM658L2v9Mk2GI4e z0~ZwMXvajs;W)f7o&r0eab0m(p@5be+UMlMf+dguZbu6POem*F0Qgq|5_aN%`kd?l z76mhbN|BN@Y?2Qkq^GkNpyB1v1gKF-8gg>xg1B59sKEk|6d{*`((x`_&|?>S8c-2X z#9$yQWoanWg%djJ3S@9{BqEdnC>pL@(05lu3czN;;lKn~MPLgSz)eU^MR?nkkFFe0 zlA8lH3Dg)c(71{;f+Pn?x(A>D9LGas)dQ6G7Wd;c3JP*00Ic__ZA*B0I6@7YbSxw^ z0L(aH94G=1Fq9g_HVQ_P#j=fMImA^`6L=zphb^1oUK3M`uf^u*hP2RI7`3kn`Y zwA^+%aeH0lqLrf0(3NWFyp~cDi4&(42T9C5&T7iY6lubnkYO{ zK|>F18S+8)4!T@uP&pz3^)X<=7#tL4)dT1AUtuTZA*w~oG=;$2WDF}m|R6e3y-X#wrAx= zz6Xs}<3Abj@0veh*7%)sWqQW6LgjopTnDhv-Aivv6+2`o`~>%YAMeav~#XyA5WqcI@l@gP~Du?k@6wwLOM4=1R|#5n>Xzyw1JV<@=@ z2b2ch0A_u!D+=BA<>n$$avmi)Dk}@i9}>0$SrlYg1DgGmpAxwIK$${8X&3oTc1=rP1~sxvb0E`(x~i7v*z=U8i%etaA|8~6FP&aD*oFPR!F zHr(b9Ug`1hnc6o8G%IbL4+*c{oRP;jXWX;936n?M)2*ZTmagS-v)!7QocQ`a_i_1K zh9R|)r;csYZQ-x`_Qcdzw%LrfwT_ZUzby@u7nW70-*HaP+e~m@Q||mMC$xTLkt6(W z*xKae=KM(8{MZ=IPel8sliH~2M(M4slfOoV7ztq;(+5_+K5DJsocPf^zgYQg?V26= z+zXe$gBV)rrJ$bDJ)-NP_ZNmj&+oGdtH7VJ+w5EH;k8QXDqLR<);^uMR(JNh`DoX# z4KA|UNa3W7a2FzAQDE&;a@EDRZ`dC?7i0Ushrj;ZlQ?U>uakY?acbOTDD>KyzjejU`vay*PUO|@ANvjZ~n%k%~j>|D?d*< zy@5^YqCPvmTU42MGEgNm2Pdu+-c27YyE%5Nd6Yc%ghlU7W0l~WgAz{}Ti?0-pwo}o z5SApbusUWA6?+(IStao?kFY7>PU+_Nbt9YhypGiC?%q>TwvRE4t z#mU(TsRr&SZp{VPDHp7AafN0pt6YIE;m8{B61d6a9UCQFk-M zBOPNi;_|7daD>OAsV{Q~34H^vZ=(5AltgsMZsxp(-p4=dNX8hcNM@FJ6Qa5Ya11s$ zLQEr1jM2on3+)Ln`{YBcvaE(~_?W}k0h{Cx*Vm$o1CzyET=njYBZ6>7@e2Afnc@g3Nh3(XyW2C5 zEOF5uhndlow;i$|(8L(})bhx(=QSnkNHC*-u+h<;mh8)!-W)l|!CK8S>MVT@&qzJ~ zJBFr>vwTgc7{fDzeqQdSmq_!)K9@59GX`TT`iRP?96$Cr;Wn+k3r^oPno-m1YJ-3_ zB-W19!b&Cax_@=e$;3gCKO4N`$(LSe_8KzqMCN#N@X#b*^LTFpv}F%W)^8Mz!|6Y} z*9`<;%uHv;_{d3iWIIbyjLFvn?B0fy+GEZ=$_yb(jClS#rQ>y0uGKDyIyrlBMsbfg zWHRIOxeUz39xy%e`s&DH`}}A|)XV#?Vl*atqY|gSwKtr*c1ZqE581y!Rx(Yr=UV1Z zQjx$jb1@}nT>p*JqUYid@t%`UtU)VlyYgIGMVv#uG#Arh$6b$%$vk)Mxnh*3=_7qQ zUSEqCeXbOT+~sW9lvCcojz9-%aDgpG z+}GzQW=Q_}{0%`S#_+S(V5xrp^LtVp#ncXU;fucBD$uR7N5<`gWD76o=uS-=1g`M^fJzoQ2<=|XhGO-wge`Fa&f z)bk`r=%1rct?=nROxeD+?s5yrF#`0e<9HR~RS?-HMz7`)T$#gY=r3{Wn>e;-5O1H|uRfN}ufx48~~pHXnjcbz@(W~yRvtcph92#M)z*>xkV7y#wD5?H^1=u4mV}jY zoxe{9byqq;=?Gd#=prM0Xoboax^z(xZdjp0!(Zl*B9L?o3+1~(nb4&>Owdv@CnTKD z#s%&f|GM>q1Ncj%5*Pm8=NJaRbB;moaU2NHMz16Hb7KgUtNowH9T0=c<0N4#M_Ojs z?*~d7fg!+Dr;t)*Hu2Y)sR&R{r6@PJ(fxZ?0vh@nN#X=oqkoM@fY}UaB%#<04g>+S zJu79zAXS9v_Q=9Cl4W|CFKA(_`&7*EUTp+7P-+K<`~hV^4-qyn%J1djB2di!huQ?f z_9+cI|Hp8^`kG743BAwfhDaSOu;WA2Az1Dk)q%1T1(DQ=i3n#ZV&Zp%5tRabfeInK zy(@4S6+#U9^@tCiL?F!Jd<23SlF1Y(ODs7^1HC8iEI!!#e=h@AV@n!I1^_6wS*ogV zcrFzWG>do#9j@kpl&aIPiaY2@Ue_F4)4-><9nTY%*9q`HB}}<>=%4|8$0Ox+D7P>? z6oJwzJ5rO)3@aiL%<$(BgaF(Tf?$Q|xDYIqR~aPe0g1GVz)GPAX{fwK7NJOh?}Q?x zxG5L7ohknEU&??YtzLYJzkTOufQ7%eTY$R9Q0p_U-x%i%x{GFzfb`K!c;s6sWOFjdMX4-0Yb;`FLUkq){h{eVVnC@ zXNjcWt3k2;kjF{46W)QR0#1ODe!G|zX#OWUNf?+mhspp!!U99MVG|534;-FD1+?4= z)jzZ(;ozgWR9Ki^9>D_1W(ri6=2FEQaw-1D?}>`r4g}xkM6l3OE`At5Nm!whp(4UA z?nnhrYhza*54W8y()R=VLR5g!@`wXS3`wyP{f)|<5hjX&-P!Ts|H5$$1&&M7{&o$x zQ4S#lhNfICVNEIo2L;J*$0T+er~kvb0V^IXA4Q~t3b7v!Q2k3sK%qwfN|eeU6m1H{ z4j8;+2at)NP=2T&IDoQ5xE_I!q}sX7!p~F@2P$2V2s|6iqK$B&|J!jp)R1m4b2>@@ zi3Oi32h@;)Fq0lq03HoNFu@aQNKSZ!3$X|02?Z{={mRFU*aKv-JF*ts2pM=<4ao|} z0y=D}j>K%|F?hcolC_eV2XUGn2;(W$3lVPgPPqIL@mMqtB$WLUe@D_^?n}W;{|tUC z8V-7jl;T4FJ1bDe@8JTb9~VZjZ_jo?7_pxli~e_xpa|9h7Cab+V1QfZkorh00Mh7q z$x0UyL?jaei-ApLQ6fBmx*bh_Y6{9IK-2$iY=9n;kA~tv0CUIXOLF2VKKbW%g0a}; zP?FqO%)gT*7K4W0%Ky~kpHdl*g?co=x0co@YP3X(x!v5;`4ROP%XLX-xC$c}*kYW^#!VX@l= za{fPC0kQLQLKap1@J$^MUP{&6l*ZNlpcb$_1|`K|v45q)f2KGrmPko!l@YoKQ5+Q( za-mg30$F%01fhrkyx+;p0fAMdB(eis*qvK*JL1NEuKyha2aR^6*7< zBs&6wrv$z9ZEzx1epW{wrGYswAf1q4ZQ#=vkO43&*nM~~5@`<4Mj*F8^jF^3LwYeI za9}5Zt8)P)`|tI|{Ub5#iA4S{G1OQBV?a;Jw!wEJkz62SFjyf;6dL%uA0|csM*+vQ zFs-}}NZwdHOmz_{3m=a|GQo0altAUG6_Sn-fyeH|87SxcdvZKDl;e<+G&?s5I3*6u z4x}k*Ngy6fh=m*7z=U9g4L77DY#Wc{1T;l=(Eb^VWZw2t*a|%2ps_^&ZTlYq&55uf zrG2DiyL}~Mhu=h@UE87k0&Ol(BKemyfKd)c?ns}Bq)7ZHs)0l);K1kafmNa0oZvf8 z!H*x?BJ-Kxyw6A% zigPp0A`ipyvq-VqdDJMl@hMUq9-l?B!>dn0^mhU}jB5a%uQLZ)felEh9d1Db;6}~? z_n!h>Bu;?{_sk-NVUb4UfgK6^Mi2~7=aA-}YV6#?cMr6>c4W}{%vK>BUs%~7D(gPnHkUjo!)KtPOPTR?--cG_u&QQCSN zV5b}&qO_4XfD^z?OtMmR92w03Uv;A8g&RI2nE)#IcizKcc3fKgzj|Z-eZRnAD9$bk zTh1amw-11I@N$e1#k_sS;=qy6P=wkKf8zl9;o*r{q!L9+XbwoViT)vF2Pj-v%14wx z{hiVuo&$FDGoZE)eI0mS7{v?=6j1Mlhux98E6wMTdzry$4QmLaM7jQx!g1g{kF!8Y z(%`ng&%ib!sQ;z#G!dZFwx>(NLn0`Ocl%MaHy7P*=dS}@!N8Lg+N~X$$OdS4D*UB4 z;5uv|B`B8$a0;5jN^(282~=z%qZtu6?6zlc|Ax?idL~%5Kh^S)`&%s>J&Kdk6}YA( zydbx&%Vm0$Bz!=AyWL2SQljuTDYSb#G!g??XBL={?R6udUrYhjE#em|0 z1^0nv1c9p!_5uJ`$;wzp)Cvti*P=W)@SDbeoqsqydRt5JoyGg327uc>EdQ}n_-!nU zz~Q&?E8Kq&%tVQj%7>h&SSAF1CrUW+|BVt@n2kniKkomTgc3IYoaA?qTvy(9cPbHJ zDj0ctsSvf#TT-hu=sX-joGotDv+6-ToMH z>9>@e0x7tL?*llnp4A_HasUOaCB<+gj<|zUD-F>oPkPwL6~zoK5NSY(g_Rrd z{^K;@ngL)w?Qi?xx30jof8$4|gTMwNtN@ZO7x;GhugwLR^3g${<8~3?AKMN%a|eN~ z;IE`IMdIHVRUF{BZ*%^AIiYYelu?S5zJovlP7OqHP+oXczzbK<&WoAK&geHOM3djd zSKtL`3ji)y1QGzWl)!h9P2BNFwUAy?x) zV$tp_q{(ml^2Ht(6wZBpHlAskc3_6{g<9Ob0tx%A)AaCD<+@PvkI9s&!!+Dw=YDQ= zMOzDAI$ZbMnU@(6H@URgJXzVyW}-FTzXY*eYU_G6R&C$c$NSOV_W2U-LmzL6^$<*U zIq=k%?$Bf|IZNPv(S9{G?a)-o;Ek)3wzO@=POb*e>#uXMU7cKnnUfqPoV{f|cK2L< zpqS?BEq}VIH*%;ickJn}wJ+b+o5+h(dxT${`#I6v6z~+T{U!O-NuEk_Xp&qsa*J{D zXz{P=jm`G~tnY8e#ASA;&86Lvnp_fQR`s_(@N^ne&!$Pf-%a?;znS z?um-FkIZ?4TVYS?u3q%RF+AL3J4qKV-R~=qty)!~|7)ouaDM=uqP|6U2K?MQZCXRl zhBqXR=IRq8zt69~>x@MmH_jK&Kl?KnYLBgAavxl{`u6tsf#!Ed4|%z@FCV!VHqiUB zhTl(%Th;1O0fL-=v5O@JHS;RR!S59DL5#@3@H^AH^UsdMM$*w!*E%}Gbo>@v?#HV= zYxF!eFkm5G*(Zt1(9=3pbpN~1w`%+KO@Ee@Yq;V5BXhHL=I-31@fO$_orZz~m!o2Z zWk=t)4-yGXE>XoD@w6vTq^qu4c0kH!if6oRgKt7vF#!YQpQF_^k8AtaM?*L(9~{Wa zN*TTQnL)B5&{y(ph6gm3%|w))5m>cV{3xoJGPY8XRX-}TRjvP?VD_fCGff42#OE6b zet-7tN$ukiyw&p2Ihs*&~pEBYhYn;P}ya3^3Sh^GBcw-XOHteh*dRt zg8!_#z{aV^q5fRUFt+V{I1lHBST@Ji3m(*hN0wDiv!p1UtTLY#vs3K;M)JRQtD@bS z_v`XzsclVyPRT0C3OebiaM4=zi{|K+Tm141&tkZ5B6d$D@)Gx#Zth{kALY{udooE% zth%|+YWC`B|A#|l{E|C$kDu+EOvCH`C(?`EKO}bEw~$e}_xj86+=S8xE8lN7nOmN( zYkm0H`}vF77g^fPDEF0~R?dK~f`;nYx+9L?q2`jBhqoQH#yjHQ&IG)F^{DP^_RTl0 zuV3?>++1do${Wn8;Iki)GQVldgVEbKNwey2D9tbb0Ab&tYq(A>t-A90k>oF#ds!P1 zReruJ{w4?Qie$ZhtO$nq6Q0tHl3mZ)?agYh?N>c_(QzR+x7vPC>8iTpj~y~^%FBC2O+;~l~o1hQN)}IZS$k@E~=NQb39ct^TpAQ zHO~ivO8Q?u&SbF*Nmy_xKIpSwZJOifr5F_~hFPS~F!|W1D2Fy+|u|i`pYa#(S)c*KHoK zd~a$JyBzzYyt9*r8;7a6{sPa21< zYQm+!m~aTr-P;{J?3nX6^vyXuR01XJYq`qS@j?9OjFJQ||Mt zpOFS^OSNAab)*>B)e>+=k5(tNKe5lbDOiD+7JPr2^B6tNSs3v`2n!kuS;gWh_Q`D zX3m_vl(R3B@!lvwN-2W8KjB5GNw1$)h*?g0mf@`g*(*Qg>XmZauen_b&1hHEy(1uH z$40B|)@L!zGs1USifaEslO#1=7ge*Q)w(^IC+u(E4mEHIVyF75{(gB{GE~*9O87~6 z{SekCPa<_jy`yb9FPLPuT#D_N&_8c}O0#IsVqycqjN|CI8?{&Vo%&KBBlmJg15-iEmY zc=zG8ZG|hZwLE(q_;b}`<6HkG|J5WBtYi73W%s9IV;^GZzGfc}CNxAIxo@R^uCAN? zN(=K{b%ol@ldbXt%=PZ4$>Ew7S6-m%yL~M%HJQg^8=v6@Zo`oqSFxzmSPA+IQq`Hw9Jm@j^ATMRqOLGX!vCchLY#a; z%h;s-4YNZ;YX`etggDVRK0dXE9{=VVl!6vV9U|(+(kX&YAIKFGGneI@8#|IdKRNrQ zkIy$Zu&x_xa^@t;mN-7#urIIrCzW=~l&9eB=#E7~ktP0{pw*!xC zhWAELU-{r^$P+Qpk<6q49yiqAfrki`g13p(^MC8ka0xtUBEf?XS7T#7T2WWu&F&gl zmSd>iNbX3+TokHMf8}41z-fJE8Tn2)DMfa2_=x*jhB;k>kN+q3`1n0ak@x4KI_Isg z^446i)6o&3x?YtjEq2xa6U|Hi)T>mHcKVU7D6!L8y3UpHDDB8g{x^j&Nfcrv+sIyx zqw1B(0J2unCAvm&4d0+gS_ftcxHSf1b8G|2XQbWOF|pNroD5e$2Ze}&6m+KMnL>Rw z&%hyRF$Q&iar%37@nGdYOP7VGinIVrkB%*!!AcmY&s7w>?IZY$Up>Fe1}w7)P31k= zpqb15;TPCjio{G`->=skzucJtMsSUoJEIq2EkdJq7p-2Y#qgYO0Q~lrL%3RiY$klw z*&k2Ofv7ydLyxQhzhFfT%*P`1BR^Wk3!5qcVX<#1LjGn(RNa7lpKi`FKI2mCFpHFl z=$Gpwkb2<3ER#ql^%K~f?1peV*ZhWiDd_u5QIhIg{ZL*)1z0cnyJN9dEa30 zI#VWYMBUVJo8dT4tFKpg)NH5ij><-^S%@)-)ZU#IbGs7GO+VzQxuj_<94<~@ zn4TVlB({WeU)?Lb=C^B_?xR&)3*Cn^haygd84Y$MVYJR1yr)jmSSi$Vr#=Ci?;0M~ z!PvYZdTJJGxc&!{mmE8MQ~so$v;Q$J#oZ_m;tJEJGdh`Jar>%m%x{caE{QPq0zjN+u5* zaHNVR0f|&Pim!4aYw8KD`WHq3nPb~bsj9mz@7IJXs_OBr{JQ}C0sFvwk-p_6;04a& z3YC=-v&4prpevqgP28xU0r*t$qwvF!zfjaE%~iYGOm_0}rx0t;=`XL({`fr8$~&)! zy>wu7#A<$U_1-FD`t$X*&G)}%Ps(({K^y=qf|48saB}~*vWEkey+3OSHW7c<5{4tT zOB?_vOTt=~0PE~j_CRIvKXn|yp+INJ?T>T+Kwp1-ZnU#QMRQT>tv zi~Hp)pZ+?zHq_)K)cfis{r!)xN=}rfs^1|8#9kYWI+Qm~Pb}}}$!h%E+OB^6`0Uqj zH->G_R5TNQ`8^3sOFVmM&8POV`CRbi&$d_faAN=KAI48yyYV`zg0od4LvAC*t>Za7 zlEk{#-WDvucV_U8*DU55UmcZdJkXn+==iMMAb>Zk%a0+3*6{jnJiEQv8Ez>dS=-fD zSIEk2r*Hi@DsPiMg-73Tp1hr$V=X3>^O7H5ljW&-{Piah{3jFM`6&KHZ00SqiD)c)rB<*eEGr)`YyQ#eK-w677zUHBr56ji% zXhRlJMazlc`CSPNdM_N0l_agM1=~JNsp@Yf%O<##{ZzWM=xbiOc4dmhA6q##YcZv~ z=e}p>jPGW6_4nPMXII~1 z`2q5~bM3TJOdr1&6xF|P5;!Tl3Q^Jt_$3BmRNsEWBe-Pmq85r zv54()>yfVZ=bJJ*bo;MYSxVU7yK-b=c`&c_#Nas(J3}kpTKO*$9AdGrc%FSv)GxgK zN$%6}3AgCuTCe)Qy)H;ZWzwClzIA}ySGmt$o_T9e)T-}WI9hNf zp!3tc@F)3)_q)FoN)D{|3@57COq)sIXSi}Q4_y4|z+)-fBz`XJ4P4sxk<;Hke=|?| z&1y}rUGzJv;!T@cADa)>0&VSuLiN*1)il%3evr%T_g|0XT0^dNzB>0Mo_u@Jy;rcS ze*WOMvum9Zjc|9U!QB2f`S7+Ti>p>IyGA_+;-?SJHS*^sZ)Kc3qO4(7{Bq>n$@b{B znmhG-Abh#?+3;SgX$fPs=Yq9eX^(r{KhtQ)UvyTJIQQbyLeTO^h3yZybmKNH?$A`B zj)9H@vVTdy#$zV(NbM@_*O9X+F>l&BkFXRw82au@k1p(7cD2PXemb}uu41)vvAS2; zYVS#hts0T0@GP9l4wYOE-Az>ffUX5MD zz&$}iN}2Uj8I?3oT;GfDva6BjIi@uhRJkrN?0SpbWyQK&k#S?{z9sdFY=&cL!^S!E zaMM}&6VTZQNuH&B*AMq;Kev>Y3z@usDz7eUF~n-7H~ePX(s*;%op$kEV@jQwg^LSc z0$uiaFP7SxZ@4dV8P~iS6*m_3>~1Sdb+|Fm^y`{Gk>&A7_F0^sFeHoUl2oA8pNP0^_5^R2dL4udz=&kFbjRAN^cN9DqYV@Q{zMs{DA zof-A|I$k1#l2tjih-ttD`4Wy97an#(1nAY`2IdY~XEZ-s2^Z_+g{-W3cq1qL( zmel;1weCl|+{=sYOSR87>kjugGOsR=1d>x)$5+UuyY_iI(N#{Qj&q)5ZTg`zsWwTn zS#JH}#CL_*SJ*)%^!e>+7K_VyR*EnAkMxQWgKxE$RF1I8y-Q6E*b=6wk5RiNK{X@amU)vU1rk}c9xp^ zYt4ym<~@AzW{OXy9nP`Nmw2wco z28-yBd@8r6=RNaU5Iy5VO3#Gt8%b(R{Z8rb34EF5Ts{gLLa&h0VdK359*=N9*&hP6Ca|{rAnh-{9T{0Sy+7z>WcCmDw>TCOX~R|jj>fNUUxM?DVGxYfo=qc5D-LR(;i*~ z4x-<}E0nX>Rf&jC(enAUk6bG*Ta~8&4a1$FCdq){FZ41 z$I}~+q)-mO-YS`L08ObUfu5>5$Xb;~32mxyWF1^6uburanalj?7Sw(STMlNtn7~dK zY^}->(QtN7s~blA3yn(*z!pWWeeWc#R>1FgTr>A zt{@j|QQ85G?ujJ=Iy6yD)ZqahqA(l6=0N(89LoW4KapHaw+y&KLF~wQ4+I9XFEc1Q zJBTi(M+O{;jMjrG%>M<3uMuyR#@+KutsgO|J0Tprg(typ+=r@4v$4oHf)n#(7i#_r z35!u0O4JxikIS1-oeEO*ueJ;xLE|ZhbVX(p6w1l16MrQN$u%D8Judf2W~)JvP1ZC= z0gn0U@|@HHwb6bh0ujFWvHR!)&O0sX+z44AZ=zu4bz|yqcT`w$kiCkLQzsrRI}x2- zJfbWD8l!YIO?9tD3}vXjid86vDqu4q z1OsR2`Ewpb_tSk=0C;?&dPfe&W~Rwx(5D+vb2gN4Z-@mxu((0=t?CGnx3`B#G8->K zusUR(2m%WpY{3YUj%4&io1$)rcwQ)rPvAmoiT+McJhyFqxF_94;zwhI7!95A9WO72 zk)HS~#&`3TM1bsxX50X_)3Ze95U^$}9UAlm;hpe0;7K`A&4jK;_@?reGDv2g0Eroy z5ZI4RS}*P|8`5}gK)-Ixj|WkYtd0nR1mM-fB!$6GflzEPk-_zn!f^q?_J&DjF+Epw zQbRF%-4hr}^DmLQKqkhEL8!);*unwjPJ4*-<*z7<-+~L}tSF4}(S%Vj__^qlDMQsE zLE!vq(|8e7JdHS-(>j&elWbXaE( z1GpQN`iQp(DmuT(WsHD5OcRXH0bIfEK8j6w51Se=^_~C$g+bPVpiu)tj+JpJe^f_^ zMR8^a0k(2ybzD#w!dIr!zz}ta7@H>$aV#RW9bspe_$y5x72O1M4cJcr>3rE^!B^ zo=UR(Ejm9ZedY(?#oj;#yW4zz$O{0j&m)QrOjka>?;FT?aE_+HphQT1SAP=?OU$MX z*vWxj^%OsNtW&63^!u%M>)`2nl)DN@MHg>%MfdpD_U`;7(bKS9;5YfEtYag*>k=pn zhQb%r`nwABe+Yq- z6JQkq1(QzT0&_sU<^RtEj}H3ZHJg8)kClTNXmxr-9B}j;5H{&!3)w%s9*I<(K+6sS zP#lCuI)QKq{)Y=dh=Ut5gYf7$0j|w|7NGv&{YahSh2va<@M)p{jhFu6{74r9s*}@5 zxbUM7|7*#Q^dg{HkTM1E_?!vC!~d_F#tPgt9&Wg@KL{Ug|5#tbS_JxJ*0KQ0KK>~w zA{!5!H4gLwrZ*T3X~F^|QMR68GDW0;@W90dOP$wdjgEo53)Rou$$idGbyZ#y#S&@j zA0Jp|KMP+LVS&Vb$`_-b+$S$`z1{4&fQJhCM0=IuX`pAd|GxKMBH!<&RoKQG44Y9f zY|r%bmZO)Hxt%mfinI1kylSfV5PFEKt7mMyAHMkw`-p!s*WkFYbjV2^dlj+GcUDp$ zn87PlN#}NxyyV@XE%4BNlIwzNOVNLPaRCCP5{+6G7wunjt!!+sEmt=9wYUdI!^S&c zH<#b1;GrgP4(5}8{=#i_Dnx8 zKkRBtnj^vZEDdm`UQhDHVE657l&pqzouFPcS17&vBS@Lliu(bDz86DcJIsg3)Sm2=SkxJK`eHHi6#DI+h=QIKEAZ3?lRjOW|G*1hhtw< z44IwZxOl?^Tn-=`t&4Yu*|WdxwLX@6yw_wY`s2n`FqiR;z)8>Vjd#b_DPDr?xk0{u z%PgTeb-k+EA2j=`ks}1R9nr9Ys4>2KOA=eY?PhhGUrOy>#b~})3Zmxs?L8L0^>amo zu)`mHhn^iQMcYGlidDFhpLfK0N#-~zy)rlx;bliRYxQNAfrR92A*LGuB)2W9~8)# z0uHY8w-dz%FUTA=-;M~#eOx!GUuVA3hP~5=l6}4j@$$!tz@xp8v9615TORUIt{?fs zvUc6Ey+)QpyJ0WktjTCjyNzK8fBsBxN$yuNXu;6Ceu=DH+H`Yjw~0Nlm`dYd_C9fi zvt1$)saDoIc|Ci~AR%v#?-yU;oKqV6lzM{r%vl}mWh^b8G>;TV+D=hKp zUZ0JfttkIj_WRFudpYM{^`C0%*^u6bA(<@y>=!DR;6oH}sr}`C>6YI>kYi&o>LydT zcxdhCm|^YYbN#Ro*mfK%Au&5M>7U!NV<^sCSoaB%=34s6(Fpi{lgXrKP%kX^`;FNQ zRNGPks~4VfHolY;NFKTnKut~mCl5ARScs|;l?An*oKzu?_n=jfEEy-Lyy?_2#}_-K zg6YUzExzILfo!d8>Qy%5a#r3HTbPl=!ljRX0~{o-s}a>_v+I^~2Vr;7S6Vtc1ENB4 zboC#H31SmppSu&5>3*YbNNKY=ty#H_KM@EOYbk$!9tdAQ{gh^iZ4R|m^MeuE+J$qX zY{=VQaE_<8w~f&J`s}V%|FGu%Fw1g1+ausO5bN=jKWUa!QG$UxH*CPp9Ij?HhSF2LjH27hN-@U)Y8zjr{>O}t;0`t&?$MPFL$W<6YiAl(ENdXVe-mQbXrreJsDe+SuTa)eJ(ogH}3&?eE zRzn)j+7u2ke|4u>x%3?0qXct5&pX(r#dM5g+^#0aUk%coF!q-8WF!Y>7LTUp-VbfK zu<+d2L^o+K=u}pxh;O@Rx=89ZF*sd5V+ykS{ziGRoW^(fluQ!EI}j!?awpzevD?^~ z*Yl%Z$&oyJgTLj+m=feLy?NQw3f9UVLTx5=x?y+JJ>bsVL2_Y^?o2&ne%m|~Pux`b z+t1Wp#p8R$%Q1z621{Cd6WUPRmI?>Sv_6M9>BX9K_+_Cl?ZKPV=0iVZdP((k-eJ#y&dwe%1&24+n%gtI#FSRz`F<)!yPK()dr6H~{%g~7>e&E?~ z)x7ht)PZ8Mq0>iF&im@$5!9zPAAVhw-FE$sXlfd`eHg3KX%?aG5bBUwnzY8%weFrx zb(ATZEzEM(w@)1ng-wyxehuTg_c1^L!)^r|c^zg2kdPPOcMyK8;(v*`X> z7m{6igIA#0?*LI^0k6jf8Vs-RA(Q+hIA~-A2WLu)8SRP8c5|ZZ(|_)sNPF5z&l$Gl ziV|kA2H>p2KB8Vy;rEZx##6X9UFr_t4Etx7zkUZF*UEKf1e?Sc*QZ8qj z<{Q+N3XL!Y);&nNgZhe&RH6`B7i$Mq<`oxV3VJ+Uq&#&zeWbi^)yM96wS>~nd9`#c zBRdA+IAc48;MYC#Y79ugK!OYm>`nnSCFs(?!0^2~sw#$SgHpAc?SutP1p z7YDY+Bjk$@?VMo8uY$T3Y@v&C2aFCtcuR<2m;wV)#(TjL-H@JeFpyY|Bv2der939X z1m~D8pmH@MYBXbV6c436VIqxq9A?n4QUSS)ER=0qjJoSKv&pz~AfccxfHz?I83|xU zVQR$19N{5QsbZH_r;4rpM$=`)lZF7r}P?{!FDUnG|Dew8-5sW;y!l6wc#Tx>E&OIm? zNLx+9N$aJBBTG7Mz$PNq3`xl34uNXrzmmkB$W39atiR-Nyhm+I|4e#B|ovNihX6p3cZ1 zEagm)4=V%cLp}v;_bGrT2eVA-3n{QNN#Xd|o_ZErXNGD4^i=c$B|@(P%%!~SbSbia z8jFA#{seaXo*YJMEpd?rI>t!3qkLciSEkhf#u*9*)|JDn96**fJ(2+2p3xK|7>Oc> zY+!IKJtO{njr6Djnnvsd>83v+-A}g6)ku*lvugBoncNTR5Vd3my9`xv)cWPZTuAjo zene~+1DHX<|KkE!4G1$)<}rv=DIZ?b<#Bp5RIDwalUPIN% z9RL8;UsyyR091tk^RjF}`*BsxQv&!&=Klzt4f?1>0;d#21dwP22p8|amc|OGOhVxl zDM)y5hAg1F4RaABfdH^;fWi<6poDV3pYx&MJt{mpK$@Pn9WoxE@Qut9LMTutChd)U z*vglT6inw)TAm5s{F2`pDi>E_IfZ_B7OrB>N6_}xzI52$jXcZhwPEZ!)=Ub8 zDH=4w9oHZYht$+F?tMB67r*lb1gn=F>D=yB7cHyG1${QsXObja{dpQXvMh{z7oX@_ zJI;7wj&59PT5q>$&dJRGJnV6->R9&mYr7lQhT)p;Or08@`rTKo+_1c`|HB8m^{tqHILEMbFmO-lZ zL73=h9^H{m)FRH7Y|(FxVHVa`}GYA=m?Kern>hm@3nC6`^lg^w!VwUD^HSKI}d zvqtH-1&(!SMjKrRLR`#HP7>;c9c+LVPoSSe|+MqE&pI zj%z?ehh}^;l2ol)BfT9_cb2@#O)7lqE6R6#RwiuIq*FIxt=ce)7Xd#=z6~c9Z$BxL zAB?aMu(ID8PwNt#B8Yy&TQgSHHjQ=6v)kc9O(JH1O^8C4dNQzXalXR?V^NB)Bb58< z?}K|;UeRD8Ru-()F26JuBquG=X*XJCZ#JvtW{PoyZM@pM{$(#>4g1Mq)BWueen+n= zl5cZ%FJ89lrt&T~efc`K$oe~1^@(dO3fz9#-tB%Yxu$Zl8s<%;%R2M5Hd@ii|Dwiz zH`PL8P_%#jPqA+NotL&&I?Ms&!fh{X=bTzKcrjSB!dkyH=SjnCM%;OI+2Wl}BbrV? zuRtTrY46&Ksw5%^&JK!Zfcko~Z>7rG<@{C|6{b;*747BJJpUdxJfBqa<9Ht9yB8=}{sa^7-E4P;4a+ANMX=jln zn@wTXmuu_Lg76u3HDeNCGg}zS-abI?u{2*T>J2&&GV2Wve`=1~eby59ndOHdv&?hT z1mBsmguc8tCp~K&Yv;_bMq9q{oYKC3A)N^MNwDEtCVD>lC^qz8%H2;fn&%F$WYo8A**bOISUw&-J1|YnGpOoK ze|>(b?(e~W?OzaD@yg!MoxFb6vCOg##A5ok?2S&&VVyJ0+6()_H@)1EhAllSY!1Ue zRiV|dPd{z8a^&j4LcVirbw!OkQP;T-zez8el}US}llT#{0C!lhgcL1f&h4t{g(-hl zeROZ8TDppeTXn0h7vn76#*=*)*Ds%h`R)(D{JDgiK8UB9q@^z|zcP${yF%UBt7-PG zA^@R{p4iqu2cv`mQ-83adm>5%Gvs7cud6dKnJmPhSR0ej3r6i2`vi3b41kT5WB_ao zCa3^IWPazsG?^ukVzQa1&)Z^q5v+&nGdn_i+Dmn2?Hb^5?j)x5lR#g7e*#g z*qx7Ts`}hHu%?7AxNBZ5vJ`+EY&F0TpawvWU_D^)mB;EYT!a$#7c%ss^%s`r1A|Ra zkNXgQe?e-AS~6L2u!_G^2~5LA0~}OIA1m&k!@jLV*sL^&AL5YkxoaZBh@DM7WrQr` zWkQDW-bFhYhmTgKIzen)A{-f0f53RJ2n9DJf2AEP>Dhl}E~m7wtIot&!OV z-|-D%j%;q6k^L!uJ42*g?lJJ`9*2qv$`-CT=z!-{h)S4p>u#l`023(y+f^uW#&)ZK zOXV^FoR{-1-7KNBXCVKcgDX-lRT^tYopZpL9_?877|#Or3;4Bl*=!~lD0@%_7eG>* zW7tP5lO zer|#KMm3}W0-Fv*2T+C=j2*>J&E=K9y~@Oh8E~9M${23mMB=*|Z+96W_hq`KRwhhw zj`^O{>l}y=SOti~QdU2I!8!-^6{!g!y@QtWwY^?kZdBq2POP62(1Gmjb;zo`PIMr|loLsthpX-t+8-zs z%^{J2Y(O^dlmjd#86pED=`?bPvVhJ_7guJo6#zG+Bhi8V(uJU5sh@L>(%pk?axBsk zIhxK|$YUJJooqmz2ETsHx)h}Az|N^MZ#OwTXiS7QCFg&!K&x!1wQAhyZlVLd|ce}~YDggzMTiNu#?D#Gf za1y&Y0GEb^tI2q0A1cs~rt`&L`4>RcUngU_+f0hk^{9XeWRL)}n;!5cNC9zMM^FS7 zK+1bI^iV+%@dIxKGb2+=m~u_Nr2KSp_>*@1I$; zl3D)^H})z3xN&cQf(~Eb1pz#}f5HtwHVa`7Ag8hYEiDmK3BV1uf58phDxm8N*Z_FC zwD8=lzc&D~E-gOiKe+LnfFHo!rG+=N{ac2RF|A8R>+nb$>9gc90L;$C62jTs9>dyv9#j(Qu?|^cRBY+J4 zaVa)H4i4ZQeMbQBjQRgM{!z~jF5CfxT2}Ed=l~z>0B$EH0pd$Qi{$aYW${KiAQ;e8 z1}KaH;_z~8Ss-G>!Xgi>a>bCl`uQp1tFFvI#Xr8atJHPP9#5#S10V!M;uaQ=!6CE6 zVIh|7^W7qNLy^!u>HXyMByASQ2hY+?k)~-`ruX3{#WwJUQ@CN4thI849|<{QpR14a z?~~1?D#O$(<-F*!I{gl<*^)okusI(e1KH<9S@Q?sEKHY&b@jVs1&%^X*O?BpRfeT4 zdyBouVKZlU<_Jk}vUk(JTY2lhfmkC z{O;`&{`mU%HQ`B(55so7)>tNeeID-48;Uvv6Ke@;Gy1e9*cB&E$V|i1V07FFa=vx% ze+(DfgJTnS+p+}x7U${?%cPQo<*944+baXk#CdAno!bNx8_1lini5AY+bfD)q=&_m zk9W`Ro9C7i&YQoaxW0DN80H5ps2LS~Kki|OmycvL|C-7A$#}_coLxZ|$s{ymt8zus zqWvJ3I{;GljM!Vz0Qx*5Yz_*}(61B7sVdd1iD(=i6>g zQG3zh_{WQ?fd}GxH~|xc*vMP`BBv~s>wjgRsH;EUB&&97G3Z-oc4I7?xwMLEM*pqA zEUmy{5nhq>M;U%R#XN50)Z8_k@|{1V-PXhQ&b|J=U~o7mr;pju49rbNM}h=*I>M)E z*3fVCoYncp%6Y=^Mp1?Mv?yPP=FrFPNs_(i!7UZC5{-jxk{d!p&D%g-p?LGZoz{iqw zIDcDWJ9g>LIK0@ z$Q4*figRxGeXJR*Oy$CTfw)Z0#D)B+ZB6c;(1GB2M)poU`Sld;-tel{IOgKA!_m~& zZ)ZO9XDgpKGHBDzgtDCOSii5vPk~Z>X>SiLCPQn(XAtbBmTT5M9fO@rgPl^LH2Hp2 zTeZnUEq(o~f2OS8?+^Bb*H`v`e%+yg(v*E7*4B17SWK`Ca~nOgN@D(Flw^RunT+RA z1(R}}`tj|4Jc(CUNKnuD*x=Vun|y!2#HF99OGB-${!P@UX%C%=#GFYJefP&um+`w3-+DGfhUM#S(?XqJ5f>7y-@aa6IdllrFUh|=dG3q5Y-2%N zb@5p-!O1Sx5=J{g-WXP}Gt9K5ckzZDKHR~)1bhl`NYFhrU07z0HLd#XP`3Q_+;)jU za~dUWTaue6XV{8bT9h1M#1l7n>J;TL=F(%WOuU!DnzrHi88j^;dJ1T)xiW=`#J6ae z6~#&;6-*7}M7W~)d-9nT-uV82?tZN$r3bqtC_szcs(akL3`;!4j}GLl?(Nr6O!mK_gD-Hdb%}Jx48yweED! z;|+KXE0&;A)d-uMPrxeV;3}X<=r2@r&8eX$Q@64k`oKY)#%3JVUw9NIW2#C{nAl&q zs)P|GuTK%&Us$=B!M6Si zM-L*1!zqCRH=VfKGw!)-UaWLsEfNP?xM%`bnM@~eM64Jpz|KHnvSQ@Z;Y=l;fFb7u zLqeK58AhKMzXJ9vixyGShaua1Uy#fF7KbOs4}^!q_)aG-Kudhm1Z;w+gC{HZ4RB-) zoQ%WkB~`$X4nvAd%BSEWW6!gm!60Um7H$=>rbIhKemoI|r>zG!o=$YP*6&<2Kz~tb zm5PfA+yU_{S@7TbC6* z`Xo}bd^T$G@sTnd3MjMK~LY;!s*B0}J*Ng*(iVdaTeKm@&7fx_0j z=sK7RvWBx8QaaHANn&UPIUXEw3<^#85JtnM*l&g(8fxJO4W^y=~WKr z`WMr99bD;;QdW#~fVs#(%mm4)@K5s0l}83d`Q&3CCrN_|VkZc!f@y!H8{YJZoI-U# z3I!Bau;*xr5enX8C9kpt98{H2?YT=#punx^d)~^cifyJc!4-bqZ+IuK1_;$`MS;v3-_c9 zK%mQTaLlq58wg{;2u`C+hfD=7k6-%K~~EfY#ol zuq%8_3d917I*A=HsksWC3>p?<{(c@B3UtP=JtUt~i>k1<`rO?;O(OXo@B-6aS{Ol` zWzDbY_isYP0-UWn9}ZCBdCfUL{Pg-KnKUz1^|H9vtpe8J_4$jw^YQNFo*Q`fGd3-Wu z*na=>M^6LLQF6@vR;=~+B|J3iL8bCfg^yn|Xx$F}@WrV^kLT<8ebsOl`JbOSl>=dj zNWZM+Tq9ZGBu*1fc`7$}KZhMe`X1i*Ri3zRI4ot<*UJ1V!fVeIFb=bpOV^YqlT<8qRT?%^lP){(jX;$g|W` zs8xT8L()cc{-tKJJ$ITJUg{S{&3rKb6Rpk}LoA&|@gm>FNtb0^Nwb`Vx2+YUc-}_15`mTOxys{`G?YMIEdzB{l?U0w!L$l>VjL%{E zVhkzxSAFj4bskCG;!%j7!Pf_3*B(oA57COWes@|A18$y~R{4_Ew|na>qrtA5>o)8$ zT_!N%^0dk8`dX8?a)$R_dgWQn81^ErG!%o(sc2Be3>tkgijDAk&a>4M%)}%iKw#n^Kmu{NBJ_2%a?kz zWND1l=|;P|8SJ+>Zt%JLq&Hy9;di8&qu(sz9@W;_YHFQI{rW9GRQkDfgrCe$7iCuv zDwO$7d;{TYUaLJfKc_3JzNA~D(*rSn*k1qr?nd+Y@&n4Zcm_oLDn8d?_Z}CfiD@KQ zGujoygfjQTDm8KV2582Oo(W7b$5kpv9~dH-Av?s&B=(kRZ9?QUNF<6tld=~*`YGYI zcXaV9$tHf)m%oNRDE;x&Y$nuxT{ZjW$*DjcoahCAHI~ZkBycgDZAW6htI2dU?R~$V zD2VG>@Di-(Xq48;_3|8=-y-51X8n8w=8$De!DCOgdcZGXv^fs0+^7YAVj>SK+U+fC zaHci6CuzxLc2Gb1MM32B5@C66fB=WBNHPAnz>u+C98#2McJ}sjGuJQ|vEl8p;1*2b z<*4q}&q+;L@=5X6{${_wyj-M#EboalPEwPJTSvc!uiZ+vSUHgk`f2`Y`-Ad+su4waBOEBSeBg9XHn-aUCB%U{F-&BY^X7o()7BTK3h?@lX=z^?jBYOKu5KqpR^!S>nl0SDWXVW=1RnrzL1yqBKOq|QWlFw2eL`u8*9 zP_ID?DjtQU_!oKg@_g}w$I%9#1Qv!sb{c1t}{g0g}-#TG&E*u1=H3hTOf!2a?N@zXboPi%wVzVL4hh0P{=u&8IL zX3f!GHNua%oUz{y^W5PzO-6Z-oPJzmN?tKBNF3HilWBdg!wmmoLZWfj60IvpSJcXM zabZK1MVC&XaKba7x|7e3tUoCb==bzgpruVs|1Px~mg92zTU9yy6 z*Sqc^V9_hgK2hFMJ0i$Fgf+oiKAD9(LC#w)<5VHzwluhQ>#yW|-a5laXrfQ0J*8=N zZXZ6M?u#nA;#gENG38@uBQJ)lyZJqN)7Ww`DBbyvuTUqGD1Ll-k2jL=!{(~UQqz}~ zot|D{;W%*9k$B^7uu>LB>3p1oTt`YsB!%^&d!%8macouG{>b31EzF7#)s;o+O6_M* zND(-i8YD*v)5mgjX*wKxB@xs}>nf>ApT(8vJf}8vS9q=vbwi^vuc4L7tLfm}7{_$m zL6Sh)@WpWOqjSgDwnbsl?q1}y>2bxfou9|_d2G+N%a(&a<7$$u5*W{7?8mm~uJ^HR zyUA+d9HIR+jSX_&4op3`gKsGN!xy;n=46!a2X1k_?reCP3YvSwZeJ*w4`;@AMvQ{) z?JW4&;U~>f38K#v)Y{>s4){zg5y+m-*x&8^k-Tbzv=XK;_z>7zge{eZ940<4ymAU$ zeG~KIN3K(`!^GhYf@@%=@W%y@0OlN?7u?Ml0KeIsL6F;w+Z+b=2TwE!YvQ=5(uCvO z4`g=6rLjqe#4H2<+EGG_Y0HMsb2ihf$|uf@;?M<_q_LHVph+xeOVS-2Ah$s(j(`uj zAI!P!Coy;Wr?n2(9ER}F!j>_G&2U^*3+a%`(K|2s8t;Mzr{4c98_0T5^lV z*c1$5@rbZ-^TT3LKR3~r|nhQFa>F4DLafd>Y$R6mI(= zM89f$6ZfeC(yq^GWCO@u%dYgh?k9^Ve4$U`MzCOfB63H_8J#BXfy~E80WVyU8X_Y_ zLCS7{nG_7o!rV}&JWOO%2PQNL(8d;W#@l5ba3p5zGA06gvaW0ZtH@h!(GO??6|`Me z>jXJ$7GYiTDRdu@xR=qEtl3!h^emc)5Wz;ky;V_aNCH@~3CjRy!K@(@q>9|2LwVtD z0sD%<7a+lHzHwXKLT*m@xtSh!ZjP&w9#_)H>7q3K?TQZglFrzKTeOpCIko<^IYH9` z0;N$ylGyVXO0MjnS1~|9dgITU$yC<8j2Ny5BN3X&RE!2GfQVt=TvufKMxmUj956h@R8`kpyj2!E)xbX@mLJArz12RTwZ&CG5(d-x=G*;{FM} z>o`&b&Ch>cKE(v_j4`|qF=;u0-U8YX4Jz^)S_V2~5SrW|Jgidh;(tNbX;`Hx&AIhu zYC7Ld6(ACfeqtk=3)mx2LQ{NUG)4=$_!v|i}|~NeggYJk7ljEp*M@Almjgu1dq^x z3=M5MbNMo0?5zV?I2hib3Zj60L3_S@OBMhs^qW{}`M8qJ7z5l<37m##F>mkKCDZr- z*X47~uQGl+jNbZv+0WNxFVc>PR zl!uLdJFbxqM_X3dlDdB;=b$Jr1F-3t(4^LXDVV{ft;UX(xpY*~N`41K?US-GEVO+&kD_U&|wX2t_HVyZmf_nhe za((r~a8&E`=ux%S#nsu|*#0m5TKL2z2n0{=1U~aV>I4&T{!1P8-^d8SUr_$zi+S`Y z=r6HFI{3^e=uu$qFQzl35@0$5a-V>@7A;(U?5`aFx0xCq{ouYKr{uB!2c|O)ZqMkfJ)Y1e==qLOTGzlMj!sg6vPVCki`=} zr=nLbm50OhCbvH+RvBjg`4K-OixjVNzCFB__4y%&`6f=aNeevi8qU(8@AqB-jfvXt zLP%PA{viTZ^{0d-E2gYr;E!!TTv5f@_VhvIvg21m*za)({>cJbLqj$}N410Nh(8O+ zWh_~r8O|2P)5FXj{xsth&P8Rz8VJZG>`WLx8Gc)mB^lFw_i(vA$08);`{(@UY1$3V zL^=!X{&*j5c)!2)`*c?pv2^=9YxSf7L;Z3brVlvn7JZ3uDhf!UNHO>V!O7*9QFqNt z`1tmFv+~_rA`)%&m?2S0SKlt?_QIGiV>N@A%8OrMUW3!(x4GkzH;vUWm-hycq1D#{ zRRXf#6W?k4Y+`Qh(pytNQwFZA>ythm7VX4+iz>LY-T37IMH4hp~y;kz3n5$Zsjmh?HGsgwrojaQl$F;Gj4|ImT zPW=p)%h}5=R8b_ePq|qNjQ#9KKL!t7ROZiwuSFa5GIt|7EEVM)-oy6(gxMC5Xv;CR zw2-Ir2IeU?U*`|%hkx6zc8AnAS3ghgwUlUFanpTpJa&m}Ee|A{`G%%Xj-uu;9Uq?W;^{hF!nt%?+tcx7j}x&q}#6iW`8B@_Sh zu9VUQU7CXxX!i?d;9KV&UK~$TL9Et0_9t!Z9}YKpHkiRuu-EH5m`T104g1g70~St3 zy`86grf(Nw)+Oedeo;4g(yN|NPR0Dff7xg*b?D=)4PDCuCo;u0jakbawo$W|>AR*f z9zV~zs~sAReG|F32`WZIr#EiXbGR-G)h=Q{Ad<8DT5G47V9=vS@ zoZWqCD#;lth@*1OcMh0C>q5Ab*;HiNyZu<-uJ>}WNj_&xgrn@`qn?+%D??)8c z_zCnghTOE*c6Q$o4(HBcRn5GGMS!jC@;D5tTsb(eMhzw|G7${Ue6BS z@nw4~^7}sww*0TGr7!#%inp3QJ1_S5yiL{o^%|r+J5P^b&lH*($cCxd>^#YD9KKE+ z)$Nd4or$=g1Q%u$hc@-1#Cp2>umzc-tS@yv49lTtQm)++csJ&`57&-{)I?cGa+s4| zcWKkhy&SKf>HP6VtRXYBcxiK~-%5M5whHvASDEvfpJ!Ro?ObdIX;q<3dJ$G6?Vx{K_|Ja*~m<@?ZSrzy=)mN(BkWo)~@ znw_D{A9Uqitxdf&zF|gMfDgox*Wflb4w|~SW9TH(v4G)Xx-wAF%e%;;HGTR zGP2ZhP>~JK8H#@PGQ$~TVUashvNkqQkYXx{-kvtdz1wsF?txNW@!~k9p&sexqH?H^ ztFX0#4rUP%9}^1U8l2fpd+VFNo}A9oXs>zYFqYO>`2MQV=h;#M#fubU{x0k((fNfr zV-Hl$wWNij235;C0=@JGx@wLCUnxnlFX)V34a`$B`;b*)P zTD}}SN!mBNJ4EsDbzVYS^#BXaU&fNpUlN%Qj0yW6u=lj6RMIXrR#-n1neuf+x=faC zcL*;!o|${eW9jO+5EP|zD5m1jusih#d5#si)0&tshdgT#y*|sU7FFmO@-5F9k0U1+ z!{UGCf+fgSOz0x{E`1B>4lqMVCG@lV>1R5>;Y+kV*(Q}}v-j4)b5k&)mpe(%nTA4d z*f?gOP}ZkOP-x8)I4}hChp%L75hgb>xpj9!(3ChMy^v?2P_zJp5C8k`&2f`iHgbyx+$q5;D$y7hoEv1c(RGyCC z_Y}W4#Yd*OMAF7`0nH}48~3tnpS-j}T0`>B@>w|8Tspo?PH>rND)YKPV?tWuqI5>zbSf z8v{~Kbmb7?V>LHy7tn|i5RQpIF(BnMPf^5^M*jh39E!JC!HLZ%9Rr!D2BeyZWPsR$ zD9R(myFUQVU<7Rb{I|K;k7ghkI4)lVXjPA)=>&Z9i2yRVa76awDWaAdm-UfU=82FL z{Sbf{Z91KFO%BXhG39h}g47`ci**A~C=nt+6&^t430`Pn4bqN8)57Y3#g$B<_Qb`H zQY*0G(^bCuwpwRyEL^8Q9Z@EQ7ewry8ILX+4VVBcm{U|-ctZx-=VN1*s> z|6~pmPcya{-~@~LGx+zZLl{J{00Ad;%CG8>QiNbKtI5-&Mk47W| zI7kHJX~gca2+BD*v)tQHDo-;?X(2_^`vdgvWVUHowXXtAK=m;f4Kli}JX@UyN)YfY zUo%_83u6JAPU-{3mUzjyO28#}1A{V@_Z%yMY0pXoP9W~ux4>hAGAgC3U_pR|>2*HF z?|msduS`d9itjGrkL2HtKK2>}2FzgLo=W-8sEoDH5+v=foM_Sglt5DfL!++fjPr(op?zD>k0v3oIK-G=#&3T!<_S9 zJwmp7fV$JaL}O3(0BFMtuYL!pJIz009^gE{1|T21|JM#WC&14A+cx{lZvWdU>v3cC z?;T5z_P{OxVg8bzU5^Filf4f>^l+Fnh!M7TaKH)`Bsy8@q$T-RLyhgTzBqMekBi4< zd_9q_7^!wi88xxyr8UQstGgn&qhiM$eZFo01?%lnLx;ePPv^?-(H2h(h0faL_It0p z?FC-Uu`~E@@NUor0FlM3-0OPUT)EJ9o<%vi?Fe+agR^q zsxrjntR3)=1$VSnGRumwuf=@+{GJ3&4dVfyQ`#eg3UvKQ`<4xcww*C5B~M|0t}dqL z92FnIF8?j%H@Cz>hJBR`2DC|Otn;@i>R8XoOZ_?THVz{G*zRi;lj+*){x*9_w5sMq z^{jW7<&0|gZpZE8+!3GnOV=8C_v>ZP*vN&h6_;OncD{R(u0KoDiULYu$&j$5O{ck@ z@AoXKD|zHw0{Jm_8&4^|&L}4N1^M}L>o%Djk3ZGMrsVtWzuD}HBaMhQ^)=?RN9;0B zC3r@(7s}^%Jl9mFc7I*R|8-XoN57f$&S^0t_R|lj_(4x$w^7|aTtd6TzTnjfA-Xzo zaHCOaeY0yD!`WVQMH^!}jQAvTXm_r^-ckD8lJ?~MSKLt5Og77XM4$4q)vy;SQBj@d zjp{aKs)_qS@vCl=0D+m^+A>^`t48CYC&HIBq#q)3(s;LR!fHxk+`WYa7JO7i4OM}k zeAi=LqVc;V zT*F$U2>InvMab~*7^68sLm*s{{Ff+dEvNi+;C!nhR%g3 zE>rD|-95r6XJSVIFO1ubgY%bAWQOSog&R?iL&d3!V_%-7V-KfdIj6 zaCdiicXx*%Ay|TIIL-V1_Wt&{_WAzlt9n&cPgPIDtW~}0emtTKS_CR1Z8+`x#b>6x z3ChUR@qV$Uvd-Icur`f!qf0LfaIk(!2a`Pr{oW70a;d)W2~W2nVHP;Z<9ARhV18qz zR3Ia62{FEP`e|7xvV1)M_GlQd*Wx{P&?K{IIu4SD-ayZj)Kihr+3Q7|h+iFwWR(%E z40FMCZ+%SO%l7%cE@>%4(JHFXIu+_R_FY=9Lm)(% z6eXQxm$K;(h1oZ9pF+A@q<`R>yj1J9bD6l%^t#Wgu89CgJq+nE0XUNKa7YjiRn&qe&~ zg;+^t9%Qw2yOCwg(hL2d@kpR@;fHTd<5|$>4bGDB_kdg@jy*7rTX()mB7BdX)X1VY z!wkrN50Rj({%(By;^rKqU2F>yziFTpEMYnMd7cJ3ROtMYqc1R12?2E%*MmEoa`jvC z^o6Ebg#*m3Td(2YjqVK89LAdbS^tVdh8e?jDx0`LqxFb6toI<)!40kW0-^w3!B2ew zk-{87&%S{E!a^FMXC5GW_)eR>dtNAsC&-^8#rq7q$obW#DSJPO-nGQTbIP+Izf1gk({hJEHBgx!Xw`CKSUTShc%*sgQpuIotrHZ~j0Nq^|#J()&_T z_EPcuQqsQ#X+X7J!@p?okOGMiFHl41=NdRvNR=VE9(ldoufg#AtKsuCO|KeLvSa?+ z-A;RQe`@`8?iDn7k@yk;9N3T$))0i`6T9c8=2fyxy-wk$?a~5m*gb-$lhw^k?~ZM| zzx%pv#m2w;8tpgjJB0+_%<+4UlDS3FLyZ2WpEs^SkmH?DGSBWEo)|CmHeK@xhfMyfVm>tBUfwVv@R#CATrK8((0 zX6hLKNDPxi2>+55`$?(Tn-YWtqr~+UGIgt_sYRf_FnAV-;c{?5OVJFhn(`*1hT>_O z?&rum#>&vFoPDFsy9f97k0OMCwp&B0bH*=sd!TASn{i#&HqF4RtC`|%9*}EI<12pqL=+* zFZu9yfw|IR`LV|AQboldVQx=0kRKi9NBHJU_hJ3ZX?P<)Cd4?yf?WIYkJgRvo;p4q zDo=-hBQ)U65z_kFogr7;_3Tr2+P+!YkjBe+=pvqaWRz^QcOflS+C`_0N@k`&%p0Af z@0Bh$PKid1J5erMbR>+5Z}fU=AkDk%L8nlcANx)5qV$ZZ0Pn`Rm%_td1?1p$-G|h| z`Ut&j%ZX3AJhwB@P8JU>D~-hYFO~9>TU{P^EN6@(t$UePKJde#Ph)Uu`qsxsd4v>> zIeoK#)!vLDJRL+`>LXk=rjzbvR=#V?^{oXnIA>;>L*WmQ91dtECF-PbEq%BgJrSF{ zk#t008;6-tW9UQri1J^Fq(X*i8`N~ZH>?Zj(5DVvBz`N_FJoNyP<6fLxO9H3-|luY z4SuxJ8?-GG+3fIYBny-@-(E;zDecY6EV9-e>{nWQU2G$-XbMdb&Z+rWTCgW~Bg*@< z-u*k;Ohx*bGH((UL!a4{n@|AlvE^oc0Jrg}VJI4pP?e|IjQjjA(E+5m)`assdfesj z&*-|+ga`YG2fNy!xlTSsE6l<9FE^*n6lN!`^tJVy)RlW9Cc&+E2dA1*(z+j6L!y;d zf7}d;b|S{>2jzDmv=Z-}kK^%~@hm9Dhe&qQ?7}SL-=$R(ma^P!)-N zz4mE^M|d--kNrx9Ni@u>=Pd?KBt}R_xmEh47#30Gylr}2`s4VIhuIu!fJM1SHau#L3rGw+__?e%yKMsW`ljr z{xQj^&)*l(b)}gRa^}JTb!rI#rx79MQjb8omI z`g!eHcc;umRqO@qbU8)ESaU`D!k2_!+_>50(zyr(`dR+;&^MV#o84i>bKodE8a!l!MpSWe3^%iS-q={ z8l$6?hn7ur_1n1Q^x0Dp)Nu|p!WIGbh)OOu$Kl5`eLlxw9SmcX(M`?FiHOw9VVCo{ ziuMjy8GFZdalx|Xj+8&nsUp2`F6KkK&L#~Lsh7(fQjm>CLXBz^yXK309f$8T5^JAz z?^xEuep2YZ+j69~ZbX+Pu|LP=)hQ2ZzQy`TZ~HiWDWPLa>B&`yeEH z7&Gs^PF!?HXYIAYG^tpzy6AWy@h<0!Z7$~4K0oVl`m`O{g_^+l$AS;pQimR7*3{|L zhj9p@PArh&FTtVQg)Rkpsp@3?YO#4l&;<;t;)kAdi}koiJDqe#@js~VtXsbbLk)*| ziD&wr*Rijv`tbd4je}@KekCy78CB+wHG$t;=)``ak|$XyCwpU`_}e&M%J-RaoQGmB z`GTcJlj(!E1F9o*PPgK+pBbX4vO_G^*oXN6#>5)(zTYikgE+9FILNa&FTF=3*6OQL zp-^g*$X3Te0*%%ip)oUzht39Eg2_;SEVi4hsd7Ufx44qx%61D`8&FRvW9^gWC!0?tcCy`&C5M z_QG?Fv`lF>S^H6R#O4p#tnXYLd4DT0+HDN|GN*AhY0U?Z%bmY%C}lnAGtg-9h{=<_zzi1fbDomN+{mG+w;o_8Ot<4a>QV4Leg^FK4jTa4m zHm%FacommSF{KLPqB<4JO(vOoMW5mi0VB1g5C#w@Eje_%n)@5ff;g^@Y4P79{tI zT`?iz+$(V$j+#Uq&Gha?7EAe20rM5T**3n+qN#v|$C zZzh%!Zd75p1+zt2X4y(*qfxfTCg`Fi5Y6yHj{{+n(^bd^uSkM4=iqae3E`cv(q10@ zZea1z1A*Gi;+%Bs7s+0NY0OCx4qt5;$RijcYG!Z_YXZRgE6L5G6l0?>#~HA3iTP>= zY3aWpn$aL3!;GP4D0e9=pep#2rwH?a#k!I;s7G2^0&9PGl|7$!hk3&Cly+eWC#g$%!;bw4uA?SZw;A(#{m>R;B;;}dk45O|=U z%gBv>10P5UQ-@Omo2o$_LRkb%q2!sU7gb>oFVD;zHv}$At2>#%|D_{N$g*)< zAL?`&tytOCaRDhsQUY}dPBdVouISKP4Qu&kalJ&16u`*{R`w99eX*mO00IYCn84J) zxMNDY(bNuR9}E>^1zx79ieYj+M{W6v9at=WJ?14_vZC$w+3pGJ*{D)AY*Mjm3sn6kxwlgSy%yDt*Q;t#%qdQl}$6U6}Mdm+b>ohrAb5yODfnkGaG9kelJb^2#pZ` zKC<9;u(8*VRdBn4*%_!wP3LX66pk=z;VHu=C@zscgxwq?x^;xQh zllx>{Lucf9$!hV$TjBGL`uuC{#7?6iV=9NmUk?W3{Ql+2t(==Kl@_A$=vV#EdItwM zLuUL$tok~RQq$}oAoY!HZnot|_L2ilpm^S8az+W3$+PP2QJLkf(ZS`dw^p zDig+5T1y)CvR;j|hmHXnTX-6T;micnTE z>QG_=%)2-+Wj+Usy!+CI1iELDi5w#TP+?4G51kw1C@SXsF9_qHVYxs@cue*0?%?o_k*M{iY&%WCtg8i&E`6h3k6O z)A3xP|tsTPAEe=(RueEy@l_KeP5|a5$Lb~ z<1$fLSkhxN1hV-JHSMCW>(C>oENS2J*7bA`dDUIwwqau<#5g{1@Gn_Gx~m{)>@zVDr8(^vtf2;MxXEu2_^GLaaUxd zfT&00FIUv%zD9n6ZJSMV%cYxs;vJW}AJeZ6*Gs#8(ON=@;Al;B*KZ*!0+7ZkEcY{- zb0JpOLlvykjFxaGW;5-AcH~3D%2Cq3TBq&n;CGyemxi3~3E$e>%N9m_TFQ7`w0K`F zB(NOixYQ7ADy6Auu_`3YAE z$T9M^Ok31}klwd&d|tXrBpKYP?z5QYFKPDf( zUTXI}$mUsrkVx9kKB$tO9U8{eQ4y8GD@XA$lR2%dC!IR3V3vj|i66=^Fv)cTDf?@dY<`Yu$=28}A^cPa>o3haNbOo1ae=-JxDrA|FT|UadT8 zB7XD;=JldC(X(8OPCHz$y|&hK=~x>ZsZOQ)kZlrYYL!Z|zqo9+Gz{N!xLN3UwRqAN z2?$YTjLcOuu97=-OdMnFbW4ZizNS4?w^DJ6i&WO@SkJ>jG~+!)4L+vTC4V5CCzpme z#_25?AgSxkIImi7Q>Oz;Nwb17vdd@+3YaxSNl7qqL`k3gUJhbUb9T{VXbNc*NkmE1 zuS#0LQC+`Y(~2oOqJUIy*qZ&pzf!_eWx~Y$OH*CoXd6YzrI?zt!5q}QxmM%aP5xjk z%yn3QYzG&(IHy(U9*r(JJTF@@q+Tc(dZ}&&bO$u3P(YecqxG*cRlE2IsH;XvP?ul} zJO8Y5?tQaf_u1BFi}#p z9CM?nACNrW^%VlUlNd{`&gKlHEtoW>fq)F(dLXNI7chpA1GiV4?awT#7(OqXiZE{v znnIrFF;8i%e^Wkn2sS}8JnYC;VjT@j{S-4g8*Fnvby%yPWTR*o>ORmNf5l0ahUm?*cGQ1Z#@JBt_3iImTco-LjzulsIf0C*3i)% zV=G{$0J9~?O&)N{UOKA6zCW#i?Y4~)r|9(CeN9_`O;HQIq{LtE$|H=`mJTR8&2)#0 zqsRh^;eLUsokW4DgGoT5K2tJ2q1`72BjfW~h1ch!vU#tJ?BcA#415V8p`Lw#tG-Hd zsMD-eF`yyaMN}I2Kk{H|xK643c=88RYNsd4S!T>#AXhkM=!#FUQ8XH93}{MNvx*Nt zg8b48ZOHaJ>>kMXusyAN&5h3CQ^(FtY$WE|HJt;wXk)mfFhl4%P{velJQ*d%ja?;$ zM@I^%P6afn8e|~;#;-Jax%v_9?$9FIpvG{J42%gcn-sj;sH_8*a^ocJ(X{4K%Ru>;7<7Omc8aBOKUdx|IZ* z1l$RFaX0M)6G{hdJ7XjA#zrtLjN_;*8-3Ddn(hZyh|8#K-48Wjd~68hz$ZI{99MI@ zbfVVX;c#$F8i7|au+z*m-DRS_(%hIY^}+=!%$N?r#|?O4`EyP{+W=8Jqyx{NwM{1~ z28J(#)dIz8D+TnE-?|FJ0AJ`Qjw)b$WiWHVW!_RW0~7c>$p?H(99b`B2<&kpke&Ze zKeRQsU56*uthJ656BIu?dZY%#&2I8(D|&6Ir|$ivRyi z+lG!`fe@h0`0!|P>y1FlHt+uuk>=)Q|G!eUg%RNiU;l#}hv$! z+H|;pW6lA6p9%QirnrDF&H?p$Dc1th4lj)wUryHkt+;q8zrp*b5o;DuHb4Bgk@d@o z+P@WrFXgCz%Ydr!J7_ZkJUY}z1olM&+tCZXK|@H5{9HEF^BIo+wirvBddz3lvfVi}`)o_Rc6*xWHDD63kQH1?{3g@;7xStw{W zGXqemdfJZCQwmyhiYx?>B4PCuX*=}6-sc9m^Gcf?0NjHZ)(i1o^*w%o<oCu(mH$}~8ExEbg#oDz{kwr zpHco3lM?}5-U^(x=aLGrv(SCDv7j))QP&V zjLg-@ZT*z3K-o?fw$~c7%SaBn_^EWO+jYz! zRm&2~T*jmK{Ctx1)xocs*|!U2qaPt1q3`c`5N_B`HM{upd%2Z6lRbPz*=yfsD&6c{8&zRVEx+3S;0VFZ zs-i>WC$qd@uZb%|R9fCVL1SM{Jy!yh|uptXY0oL2EN3=Wm}!=u-=PDxB2LKZ?Xdz5+gR7 z?=@ei&sje=9haY4MYAZr81wO0`7WX_wYmE;{ zJQhW3)z5JJIb$=?WJjils1KDvh{58%5<}j1!_it2IYQBo#^Pr53U6mWd>bQDaA#O_ z`DGeA#(cb>Mp`RZq8GeFM(p~XnxS9sdrOeL?b+q1cCOvF3y$k#$e_y2oX_u(QH;h5 zGDlClW~87({l@Iy0S{r;?Ytfbn#mfx5ve5W3!*KfS^FIgLXmd|h~Y9|hyiWufPV2R zPOA`R(Ml|Iy_2cHQ3(`jBDgOh!V<~kv(Zvg%IJ%`b3=37Lnn;<$NVFI#S^*e7n;6J z_Z3jg-$YFP3)_(A#D1Lv{vEv`+`!Ww^Ulz}PkMaC)rfXRrJ&+0)9S=`D58ju!yYHOnGQ>sQI`yBg#+)HF>MMH95Y1*#>^a70 z`*tLr&*gz-EPsm=-`QGX*w2tIV`;cqM%m0{{J`o>^MGF4WH9QygM3Nm$dl2+7{z@Z zze;C7_3lwGmEG*1cKdVMuIno5yK$w`xP>7fwA%s75!&pPJO^lmQ38bzW8Bfkz}`n! z-JjgHPorDbGyL4mcaRA|E!d!A44e-S!+milx}gU~sjeYaq=~jYLUO;-oRS6C<;D3K zlJ}$J#G5rX#qUUHvmwu;D^SQ z6?rt)(By#w`Sk^vf;J9>9mcPmE`JCL7RTWj!zS}7^e+1q#NmDV~SF+hM z3~O+3B(ykf;O$0GR(@Sayx3~uwYB2q>jKc=415Iw8VUZ{ z=CK5Z0CjAe&IN5=y!U5Cj1#aFjvNFFNJ8zPs?nCe7J8A4q9I;RuK@}u@PMpS&|3j& z0#9m1Hd6>k1rk31(^KY2;z(9OyEOP2S_1IX)71@vyBNy4>V}a`3DnfQoKVyX`ub2g zL10-bh2&VxPe~L-S{mqVrgBQ$*Wa=a1dt09ilcFpD1Ik8^>$Ht1TVvwGY}RiRN#`B zAzEp!V4LB3Qpy9MM5PRa5p~1w-Kb&^1&~?+F$9cTpqM-i9JGe;fI~5&LaI{^9Uvg3 z)B_xn!wpyFkoB=%^rIvJ{ip&0gBA6!)LnJOblX)Cs{V(n;CPfV^!T+SVSx2LFBdRH z15%x2yObS<51xou^Ur1s$^!`QpQLFiVp0ISVXPE^XF(a;NS`PS06-@Q?S~ltQ~+{) zWpU+z$*Ir-sjb*JL5Q57=}<#%q|jsotdc%)`mXp;xV=}}f`ef&YP5+0$YzM2z#Iz6 zOG5y3eOvOB&2+~tn7BYe2l2X0Ij{XQ2-qHLf>fZ;vm2ZnuFRgq0dDnvRiF?ni@UGU zKMeGVQD9+{AP+K-(w>G0gc-VtCWAC%i+05E4TD7!0CqMeHv^D)oTJ3PWkQS7i%uVc z4uh>YK0i8)V_w9}L*Z#a$E5a++ZPM!muJ z4L-7P%(fi%GSZDQy*UG5L&9~$@RO(R)}Tg?>yD(8#c~43>vVWaSn%|rlmJmZ4df;% zCPxd=@udl{vQG22U`HJUV%n|JeOG@M{=7KNHaQ1%-m zz#8Gt)m=v~4Pex{I7|VIIy`_;&&6U?NH(GbGLE?fXqK$w-g24(R(@r_cAn*mMXrRTf>cX$f$7aPZMKJrzu^Gp!JQ8QdD+&iU#9|JDtDou zwkIu+vOI@Oe_Rh%^anWq+4QQx?L5Wc`}QF^mlIy0?5PNV`9Bp;*R7X2w+j-C$vt_- z3TWppCJlMf9Aj+l*+@}0e_^M$CKOv>ilqv2M0+Zr7p6k=)z;eaRY6SUuvTMt)Z&~%AkWno!WZPIbGybAncf>)vt^gz<0u|6hml*_vJN*9}w8Q`Z z3)=ZdNB94F8^Qk%Xs3k=9?$xw2AV&Ey&c^mgSm-`i8LEk@a&EG=Z5-($~S zWT`gvs&}rAkBk;t49v7z(BxE;>VNFe^C3M(3e`Hr4OT zCukvrY=CIU2q5|#%|^YSuZ5ImlCk(V?T$hc-Sk;?%6y-X&Y^|x-v_Y_2;+_V$KOTD zsR-tucT*=3TE?&=>5ACKEB?0izUSE`XT4uDAJW_5i`1ny9!M!Fao~>^8XpvQY0bDN z-V=MgqUnz?`bo)*lCK7FOu=VxH=07|(dmnxm0%Ci&?QzaLLE3GGTxZ0pf^@)AMq_Y zmR?*6PH?g7Pqq8WHI;C+9>Eu@cz#V1v8eSuMLLo(b%Td_33kvo8aE>9=A<>=3YHj$ucvqQFD}R+wj1; z9_dmLcmMR!?fk+_@Hm_Glk8=It~t-$(a#nnYa(ruk2q6CoW|5q^_$b5E$Z>RgZnf) z)!#4vT}PEjo$<_t4CpL6qIN*>~TsJhLXENu`8Ht^UWTpgGC z<;~;0m~_fpQeek#ruIxK5_Kp4zZ>k_=vsiXDu*Z)}(i(3EH!%L28SbXTeyjbKD3(_L ztG^s53NlBFhMWsUU%1{!dmJAMa<&DdVkG-47TT3hB%F;wD$RMH)A66%?@JN_nZF+P z&dKcDS?CNRLd@hidBE-KqHbwRpwlb#IuH!}oDj!gBV%yIBgJky54lJ^bwdhP#P0Yrkg9oNoEw+r zg+y8?w759=?2)HwYx9S~^&N(<;b{3yk!(NRFWL z8&~|z!Q-^gdk?F(yeqZNimm2PMBFS17<=AtgR7iey?O;EwvSY>Q3T0C158bGrF|$? z8o}P2qYwd5ec^A>y+)m4Ym55l!=kJ-I{Hk8q9D@HJd7Wy8(*ep*IZrrIp-Xn<{er- z?bECtUz;ICLHirZ*HOD4fTXA)!_kV|vvo`crDN20`1@U5Jrv(`32nzB?vermq{J3Q z+!;hLZWC#49`43(Sy$o)(@*<6Wez35xoYUWT@Z!9&N~iBN3#)s8L86HtXBK!yt}O6 z=|p7HFN(isRllfw-ZnLJdu=KTsi$%lI=I;1^y+d3w(<#RWHY_RMMUv`2(nFB*qaj^RSSah?$s{fVV0YPVB! zH~Csl;nsq3k4}}$`G?>NI$EWA;|`OC3n0#a#j|kjQJmdoiPL+BH@{~lC3t@cEfSQ< zfLh$(+_l#HjIpZV`4ZnAOQK5~Ua3YzSZ+3w(y@-SR$eA4ENKv9okTc6RpnZ|Mc|)a z4u91k|4Org+Ay6@D|YYvRrzss~27fioY5Tn!i^-Y+pZ%p61>oKXh z>ePkWAukJkeoMuNw%Kxle!(zkD{R_~_kncxB>Fq6hrg}If$w_Z=HZ_(g-++myK|kQ zuxfST<{;y2wYI~<#9r_C6YDRy!f4peHuT2$wyc-X&OwknWHHb~zoyhOe*1iK)a|k` zkfaPtG{)tRf}83Ra~xjYmm1ftEF5FME=URg3JVv9n2!n2aOrbL8wBzyYfO60G~X$rl%{9TL&vi8o+WhhPTAAjbU2QjIwcAW}~L6TYtZ0 zW7Eos2O_2>T3`dW6T@sXbSiz@i?TMD$m_ z-mds~z*F5a*+qv_14NKgK#juYYzf<Rxr+*R*!_pZ)wpBR(1E zC8Psg3?_DgP)r9AqFHBJ+>SklE=&2cjqjv90*IN!fz5zbKomg>k6%dOAP`62%|q|t z^%@`OhGz02tQ*5oMmwEh8K6=9X;oXmz(AD-pt~Dza{wFn=IMKR=&SINU$*vr%D|LR zi30SlK-!dnKm+5R{?h_nK-b9Xw|uCf0mr*;W=NU?26Wt7{if-lFWD zpoS?pV*$+)Ebh^xt`jEUZjhgCZD@PH8r^P~vU*!l_wgh&*`#a#>hLCFTAwmssg zfUa%=umKd4$0=>n>?J@#d=mx$^eO!b0Apz0OA*k7iYcmo{eq{*%12}bhY+v>f1@v* zhIfJblZXlU20XdCYe47=Q?aiqpcaoV4iKdZK?cSOR>?;#1&0X06CXjXAaHLXNbK1l zFB??_@JrZB6$sF5_Cc#LRGM^M87Vdp-Dtr4M;6x0N>wPP8xRsxAOui0O{#u?=vV|c zi>1>$;F->g>2EH$ek0zL0x;h9>Mq4q%y;ywCAM$d+n3LG0R>%?ySUIN?UR+wp1#F( z#y=g;=a>2zG(We17a<7$0oXvFsR0)Hi;ixhF8u#XMwgqPKkiS!I|QD8lw?(*UL5cw za6JDdqx+WwaL!-O{&@+aDfXWj=*9AD9B|%sYysaNIH8>YPKHGON43$5C7knrSTZI6 z|9+YMzx;bMQNX_ku<2y~aA;nj>5Y1mAUGJv#==eZG;B!F_3_u9wP9;^abijthKn*4n!=T2Y_9`qWZUvUDX#Z>XRq zKN&b~Hg)2zb&@1_d-Qz{t-7pZ(>(7XOj)d8ovw%M_Ngo+{##fPiH6O`zUXS-RFm&s zdW5!#t{iL433ej;-HbAm{|{Yt~PuKPDc2MgEYepcTAbGs4p+MrylZn@ace4~^gGoVFi{n(QU6A?4qn zl3;kZ(NB5cyYYUw>L(}8A6#sUgnAs&4N6xFcJT~vhI&~urhl9`nJp*RuKa{GDwO*P zcIw!gjwVWk!Z^nILA(>gz*pFBeA@#)BX@$bM4B{L*=y*1XK!b|&t1z`n`DXWni$MK zxx80s+XJ7z>qL3)(ygpLJ#Br}_JfQG%Zj8mJr>D~KOG=lc|0wHywl4aNTAkt-a~@Z zM!#M6e-3mn1mg|5l`nQ^RhO++YC$g$n{)m~&;F!+hZ_S!X(tiEaBwSi?t;rxN82DWY?xjjjHPvn_-x&g!O; zP+%-1A4KPgn(I|3Bs1K~DDSoL!Tn9dP7k$yU7v2k`z0sR zH}5tlu?Nu-xcv`0mIbYOG8+5oGcaV--hT!54tt$?wYCoKH{}fAqmL9o?)j9B)y94W ztn#~V3`VSP-YVKn-2W(I^{Q*;GY=24TXh@K81iXdo?GA+x(a-w3%b2y^YzmSSP?7T zyR4jbyMm5BmCDNS@=HZJ-=Cm2WV%=3T}_BRZM;HoA!+Bb{25T4H#Ie=r73{6j`>4! zP@L=mKSKqsUI0y)9o>cta*0kh3Xilt@+sWHvoY+Liz7M5a#XPB8GF1I<#I?*XyO-mCi9s^7NEdH9Qp*bUwvYIL9%bb{Eh^s{*d_YnS1=sH| z+0Vp?Vjlp!xN;yq;y|%_pmc%7Z)p?|R){p!tlx~R=805rZWZmi}enO|Lu5f0GC-^>B0A1$)0i;2E0MJ`zC{6br{bo>u! zTsodQ+ZsY&1(3$2Q1Y`;YFyv8WOL)YWdapovoOIXX}9nf zMNI+N;k}mhND09JXqAneFYL!qP9#D0a5t84ctw(>$Ta1FE{I7voEWlfUp$4s+7f`Fus0HxA{IWBcQX-X2g(v)c% z2R%7TxVHB%tZ~8@);I+6>IQkwl)9zMk_LGNuX|M1MWQf)&ceQ^EnE_Vu3S>gD*(E2 zL?TwIT*bj=L5Rc{AYQ6cm4o?N+UU63pzbX^W27{re#1=kOEDB%TH*}zb40*AtTh+U zJo4v`-V*ZkZ+3Kb;a@er5kx4|cLSFw^_On7ow1?>CKML{5eLe7;uiEsI56eE`y>$n z)_9E&b8ygxGSD>64>x1O*>{ZqrM=gZkZ(31%amGyQQ!okqy~R-#-kQEqZC(wUI-Y8 z0vgQ#oH!tWLz1AGYoM70e56*;tQGDUNNiL#y#2L6xpeoK3h)%vzTP7QXy-sRr3E)K z#Ec|e6WLV6a~fz0FDK8pdPxihX3(5HZI{aBPR;zzkd#hn8b=&Z;c+K8X#iWpMrOay_)4HfC^1hDX7_6Z7Mn-=OGbKg$I5Ts>Ty>I8L+d~-`nz5gTm8^dB)qZucid;1Y0LE9o;zyRM?_29u zj77U$?Xhk`d_AB4UY-HKValD8%1)7|b127s!R15|~f>6=&YQ=xsRSv5Qz zpAsW-g0)B47qkquJJ9{IonQ;6=*MzS3_J~lPoHJTjnsjw(OSc*X25?eS9uilSEq<+xIb> z`CFNQM-*U4;afHrT^5e4SRzBO3M);jdR#)pn6`NM7dgEI^KwWOos2#DPjjW+XrY+* z5!>t0x8W@=fmjF+zs6jHk|#|6R%vb+Qreo@bb1)PU(he+W0-<eVd@XB{$)P=Veu6Fr0HMWp_-^}U+nPynZA<*zcgt1M?604)^$D~lwbCI^6U5S$# z0%r+I&4QiX1IdPKV00C#Ckkce?B)K>q}e-{bFgao2-x!6HxNn${&v;1p_3P&dt_<| zTBxlSs@cEF&`=b3rz#`G`ZxoTP+<*79aG|j*%wM(FS)54f8-f7fRav{tqELd>=X67 z0edxfb=T3p3ALuSwQ9E(2i=WW?XEBXT=k?OTk94_*gs$_?jwoREpNCIWDFKKuvO&^ zp8Z>rNRfE*r>S$lhF9;T@;%}QE(U`9`6>~oD8p$pBm~=qJg#C+>_cQoiJDE^?Ov0_ z!mA*TE3bO zSJN;VCwWdeZHiH%8i++&e-qIDWxjWS@T!%kx{Oxvdhq;R`CsDJo(x9=xkvddZ z6wEGcfWc~WD_PLeMF6oBFK5}x%Nf-WE?)-CQ&{QY)O1w%s;;PM_E{KTA0hA8m5I>K z7p$o++&zq$OaFe z)Jm}|aw1iB$=jgfZ1Llfc6YqsIKSuM6ET{mY156F8(vA&Hi6I$NUKY@6yZcUe39Dc z%#RI9nwvKziPlXQlL!_E4{OK*v&LWLWx()_FJ1k;TI$@nd)L4ZQT?d z3uXAEm*B_4?%gOulCr;b;vZuf_4|vDsq5}bnkS;60^Mog4_7Iy@pADRr)QnlCG*l1 zZJ$PO;@paV(rK3~=h-(fUOPuBwkEIG8a&7=J&c{3e=vr)o=Xvp++0k|R_>^CCD;G$ zIK5*`8&{+GEBZrVkEl?IG^C08hjqjQbuU~7$655cv}?ohGB4Q(ZENeqNPVeTIQG*m z3%gtg%@F%}vBIQ(R&KSH>A^u#tjkYr!`S>)TSX(Qd=2w$q|Lt~@= z!`4~HRndffUphs)Q{d2W0BI0O>Fzurp-4!Va3rN04y|-|cZxKKbSkN&NQsEPbG+~8 zd7t`cxproDclPY^*=y$d&G-8HkVrCk64Lru-dmpHeUn8MdXG09z1?{`k5pio{}lOX z_P0Pt-L?wlmJ192pI3vDu|r(G`vwjRSNiumk6MzsZR@(6`t)-pNdx#7Y!x-1rrD9e zgRQhL3dnU`W9q|DO&iMK2g@G$^bByyEuMg`sJ(@-4?^k=1<_b*%PxqciVt5`!Xy!~ zRpJe-9`ia&e4^)t-klm$xI{8(8&#P~Omf(!>W)#(6$evO0cS?TNd`*CVRo||R0)zI z@#OFIgGaONoYjs}0)o0x-~mjX+*J?ZF!@u{m>yFOB31IY?H63-bUpXH{b$h|7sXqf zD(WVzSN1=0Re1?$acgsFaJP`ejD0(vX6xL>8A|GQ`?WT+fSMRB^0}(tuWZpTN^fgG zNyx&+kFLLc;GL$B5W@o5d3_ai$8{pl(bWrv9Q7kxw}4zSkNAaN_4ux4tj5VBc&Isj z^Q81Q7mi#@h&vZGo{npLzj6;$M(rRx5dZbOtm>k-ZQRH}W^mZnX()ro)8d$uyuSDE zcW3$@C_g(3Vb*D%TDWrkh-;5N;O_6p?Gqrd717|S)?X=NZCWj9tEKx=L8zN^;fqJM zJW8Y{X3C}d=ct93^RQU*k!BJ`clf?v9M@N;d-bo?viw3yH?1x#-ljt&__l5_-(N7x~o9vb&e4aK=1Hu~CI z`)QcPbdka8+7DiAjt;71Xy~Dxnhu_q^AL-P+Z~Z7Nk+~3BA+lvR%4V^65uY*Lxm`% zEZG**L@e!8x>ergSBJL*8cbD?BTb;QNBh(MqK|GNyWXf+^LM>~AqG_`=H_-GEEjxtEB$?HYx7cw{2o zA$53_R%S$HX*Fi#{!>F zs}YT_#zf-Rn`#DggqT((h~4REVo4`@&`w3NfS~;08V(XY^ScIkhQq-hbn+JS)Vs4) ztlIaSX*$GECqK1RS-B5#T-yLbd@R@IaLWG^RyM0FC3Y0S)_; z65$%0fa8VDx9GKkW)UmE1%Cuyl@E`8saV&&VikE31;qA`gR8pnz-`660?2SjeB#yf zHT2a7L!{gtOG)og2PV>Rjno3OM|uP4B1s=jIO(cm?=B=Np)Vatvaz86ra23SmxRy& zM>AVq=UbW|WT`sANc=g9W1-?Bh zl$K4fq^P)eb!lo~z6FlTC~vrHpoYRl11NMKBF zm6>`3kmKlRN*)am`4JGdSel`&uRH}I#7fTb>bMHn0C~=Yh8y@&^Csb#W3%+tqQoN&ygEH2C^x$uVI~oVcHA`Y0w?>5kWdQUoKCc3$=;xW9^7+xqS> zl88<^4Or*ILARlBhqnNp{xjd$9l+C*m^$dfh4>t%*fmFailjN0SG9bNSG108*C^{{#T%?2kZO6+J>wJc#`llaA@k=2rNd zf*at_-=TsRLl$3VH8+!#8N3*gKlu#Ml2&w+t#SK6f5?M=B|!v{hw9Y^nkL&S1xn%c zIB{rqjNyr+{kg|R8n?04ltAIqn9O|?kayFv%=71--IYq`)rsaG43y`RG5>$Kg~*cu z)69SA=wSHsKa)HO^FR1+bIi`_82{4Io7DfVcl|rNeE1DH%;NtSkItjPn@N*j*dAI85p|7C1d*&{7J*!_|RLPBWXR? z>kAE0!mOeZKj1s)J^Ua&v2V=a+qG-VVBkr2&Z1CV)B?{Dh{)+D&sXdn2d%u2gX) z`8V!Xq5f9R4njtE1xJW0p_IEc1ouemE0XjQZ<@crs5=?U*%oUe>6kw0i#qTG0p8P&>@dgig6X z^{i&AFkg%rdhmUun(kSbhhVg-@i776ltk-Z$g7W^;3>9`I#;b$?!A9fZC;INyM^k$ zeDbl~w<867| z1s+Dr{~R%+$A2eFu)-fNg6Zs3E$?r#@-mt|WEukR{cvQ2KXSj@NOYJ@ol0UAGDq2Q z^+1fbf^W^)^+jsGsDUL-kL@gC{r#=Jr>5ldG_DN?AzhXRepAow!mkB7DO6Hk`whgN zq(5GI^9O|B7YGdZfnCT)4)3*#9~RzS zfyo`t@GL!$`Gic=@1Q}u^5cb+$eLTmIIi@lddq{=q63C$brB82`YVQ=Vm4CS@$V=i zU4bQ8)jUtma)#kCS-E5!j_$vu-8L&_2!}M zcydXgS@F-?oxRJMGp6Nc+t>|>Hq#Q%o|5kp+3<@i?$M@(?##sG2HvCH&8Eh{6-M(a zv*;{(|1KC?s%Y!i0QaMf@7&kL_9JY{r#$!EeqG4XZ;PP&o5K1Z->dK5ky-yXaUDXx zO&+uMov~&5`6**dpi|d*Q=hlgaB?Dhn4+7r;%2q|(urT1>qdi(N+Z{(s?Cc@`_Zc$ z+wbs>(CDnt=$6f%_7TSm%1ZgdKo;|-!H?y-3|P`y2Mv; z=~(?|f@%FqV`W!7x5zC{!R~zpU;FQuWWs07jV|UUHyzJz`fKXC5W14h@lgk2F_Oo7 zjnR4qrO%CN>{A=F zYT0T1>BK`T(N@LRpuBv)`eOe~xkWMLK%|0)xhW@Nx$4`#x=@PtU534{q8Zt=OimrI z5BfhPzxneWCGEV$h#0H+I6sUB|7&!`3u&lWC6@r@z%wDbFRZsuI*1vfwO9~S4lhLj z$Z>-vZ%{;mU4;2o*GNEl&?a^G_8UtyF@k|S_eI6vMLcEhi)t(bxRFo)oIC%mk`M6) zRc@`I^6iJuIM0iQP8EIJ^xmxqOnl1A3NUITFz!xqD#%@QQ%SRvgdDuOw_m$LLoeU$ z9i5BFRdu|c_|Sbp2a?V1mTjNSd7V8C@P^lOBH)&36+N`?`L-5!h-3G~rj~9XD3f2l zbBCDTJ)9PL{wyR9Z>Jqg&d}{E^xWg|Anc0oJ*=^~*);-nTM@%bw_=Di)vjvC46hikFn2F(>2czovqt z8afa#CrcDXqs!H#c!cF)W%T0*u~qgjZs$-t>Tv0bhd@1;h=7({We6&uuL@McMuGG9y39Fr6vlZ7EcM z)zLeh>1o)am5qa%15{XuNrW;h6RtxUqdrl}6{9}zFu#9s)_OcLf10MPcX3u6V_Lq4)ILba|ix%6SH`016F!$_)7i@^Qk5L}AK|!4Z(jJXM7V)M~xnVF@p2 z2Q=)t&p}L-87U)NF>0Koamg_{-jo?0K2TakNL3-GslL!KIA%^U4=VRI2c~S=RLKgJ zfXU*jDi^jV2*QC3MY~sr*g=ENOG$<&0#C!98V9JsP1rz=^I1IoMJ5c-VoYSss`&D!@6^>lQQwVo)LPLlsaXc)*9yI__-%|!;9vMAwd z96PmFpnyBtRU`wBYnyJ!4$F85ZuLPddKx?ldSV0mTt!}9n-Z#DjOp(AV^3Cz4%n5MdkC>iKWe$uDl zVr&6mVH&N@kmgYHvIUu@WyUmVeHj=Vg~K;$dNzCtay$zJ)J{HE5qn8?cKZ0)Zv~(3 zTzvks>nf~?ST@6OLj}PB4RZ_)g#LF7LIlhLg9!1-4UHPHV2)vlpu0k+K)BOm5+f^! z5k^<&l!!piw^6?LF&^rqZeMHA| z415G#IR-7d-~*`W-;hD_izIY}Mgba53(7Tm3KslZhlhyG!IH4J^o|uh`R|Xp@;pVo zoV^CKtWmnmgGnq^8|SpIHH<^uU;%oXYFQM9IB9Oy6KC5bM+5UXH41Z|-LLOfkw|}$ zJe7IXc#Orb^?7J_*gPhi58DDoW|wOnB$h@(|o#2pba2 zA;;5a=uKqUy3iogd{$U6fAlb+O0~)1qB1e(#$ABj_GfFO7|svg%@JCR#`nk`%QF>iEL$B7`EN4)C;IPgagY;kZ~BR z4$f{j$$~1TCs07o*ik{{i2)I0WY-qR@J(ikuv58PR5dl8fjX}eP3DPuX*Wr#f@q{7 z+-A1&05+-HA?U)cvE8Izl;{XPb|bCDM1=qJ({QvXA*&|}IZSU_CrT0c5gCHd?%>!x zdTa7A%V73Q%wqf%W7= z!EZA}-l6YLbaL2Iua9RD2YcJCr(h3f`085M7Vr=zW$+c<;m`Q|DC$!_Fwv=4V@s2{ zIL@CcuE}W$6vPn%vfAV))GTcZs6=8SUhjRoS+Zas!F{6pS;|8aFYH(&XExx$g?6(< zi!uk_7ysUl_$3nhK^KjA!F;ObMWY z6bhh_oe_|j`tOw6O@`u*fcELV+=fcquK=%0o}MLLjD)FlQ8}D3GDA??wygTU-;5m|Wc(pbbV^o`7KRRxO*ZZ*r*@Be&ECW}=kq3vXOc#!?lt60$Uka; zU~Hm00vHq^e`S&?Ny;~5qT>V^lT}DA27?|DqX<9OVZ=cq!&q=XR4NA*b}o&nRrH}` z3UO$C>jf=vvHL(VYLNLMJ$klryevT=%E)*|FdTKIXiyeF;U-Cmu5A-}?kd zV#0zz>1dYV;ix}HP^Kq)?bw5HPU1sC&`nec)CUzx+m!f=m5+mRX4$Z-O0gpBq;L=K zi`okA<4l9nE;ItW^=+y2If+GP`MLs&b>ru|Y8H2v#xq{t5w1|GHN*yxu(T@;1#ou- zX!d}xRe<#X$RO{h3*|y};1JMym~etV%Le}wxM~dUm&0xP1Gq_TzJkh{l^KGO!40N<=%BMHB6pBDFj`u40DQx`_W_9V2+$`hS^9!dK+m@skq?*vB^cR+ zbX?r6^_QtI;DH&_y)_2HOSCL0p^+%$t5J#m;jm2E0L30D*nH*n8ln$V2PdSc_cBd} zM0g3|bU1NX=h!Oby!sta5O#I~^2oi9>?6C-aA~Tj!CtixT6p^M_VT-BSl?5= zcq%m39oiAIf@gfOpII}yxyK(sStTg!EGo(>`VVv3o0qBhORB2ZR!`?pjVwG2{b!Y3 zn5mKzWAvFLX*<ZsGqU5LWFRb~N56G% z!0m+RzR7W9fGWe4_Pv=2e;-wz3LE0KoTp|(i5))=Y>0%r-@&6TbRSE8B9c(gf@#Wg>L zy#=hA%WAXvbcSCk=Zjce@8}a545B1-#RWap*pJ;ZygA=J{Csg&#=k^owLU*u<&=kS zN~i#~b@wR)wybXHO)cuZz6P>WKLU8}SI;j`Xo)&FF@D_zvmzImd)h#%#Qhi6YcH$H)k zAY2V$+1GdY*a8d-N`9;n&kgE~t$(lRsQqO{A^ghCab0cQkt3zX6m3Apsa7Ivv*jf* z--zlxmd|xuDosY;6S}ihWShYMQzc!#<;}L`mniG8kp3EN33)tH0XU!GY>aJtVCrUA zSndz4BHAOgNr?3HD^h{Pd+@By0C*jhoB3dwdIjmn+`aK3!8IQxZ)iZy+Ul3eVM^Om0X2S9(FUn0Q3jXTs zJt07N%xi;`+0&NjRn!6LIG*d>Ire>vu7bQ$RYp8$n`+@E6b{AFeLbLfn(%=lx z1{u`j%O#7GrR%sCX5#mkvZ>(gVhbe8Q>MGE{KRlaH!ee`Ot06T04jUcE?i6?j0XvT z=2grnPnF;Xu)tno-=Lt8PzQ6Mlpe%HOSYZCcSpCgp~5UynJ3%DRskbNXsQx7NRlMa z3DPG)NGLO-5(M$pS#@oIMZ^ZA^-SuZf-M^Qz!xd9|1QtpJH4$&3w!FuMC(*^2<7%I z-h@hj3X=`88p$a~plk0DDpmHDJ{}!{L-!+9yeK{M5`fYk#~{&ln57)LuV@TJ_IdaJ zitItqfRdxGuau402qaR~)qp-G48yHt?c={P_h#Q$#FCz2aggxDAPqr@VLwC6TvY~V@3SqM2$I@&_1Ou&c0u-Sgegy^E2_Dg^HmP34s16 zj96un8pT-mE~(|AuN3xfvec%bKYxo4OzN^;KVm0CsmkbgoGCC65&5gJpGW~$H7Gy@ z4VKr{P(Q*Q2vT5Kq@s_JcjumuJTL>3*w#3CZR^EqD&7pzg(P;x)-07Gcmilj&%Wt=$Dd`$lSMMIznQ&OkgA&bGngvO z@6F}d6eo5b1bX|!uop*C-U5sNXzZE))!1M5lNdeD--WRNaXN8|fa6Vl=&Gf0aJ~g{ z(S!smkg-Pwu?$R;GWY$YBPJnxr|rU*2bM>0vIYfl*by5&mWBUZ!GXaXYRZB=Sy(V| z!7z+fL8Ue=v{1e_mMy6@DJ+OX8Gc0>TuW`i^~|G2Ogq>p6`0bvnl zvBQVA*tCAC&HA>iYl3=N|FR0*eCi z!VlvvDgXce-v4*$J*_ha)!&uE!VjSTeDz2D!1o-A@Fm57Agpbz}7~n_n@uSnC3X398R58imbLQ&tv~730rfR-O*T($dz=2Xzp7@|SYRJ4a-A-W? zWAPv6fJ>+B7gUsVyx(fFd?oe3Z?(uTN$FwKef=G`pL=E5zki&co_%BpEWe#C^LzgC z=dXCSNxYpwHr^w>Xp*cq5C8c6+>ztZQLSS*+bU|^DcRYO>e>1gVl+jbZ3s7>l=j*B z@bC|7;v0mH-kENT7xh@q7R`~%;0UAbCg$v3uoW2AX#E# z2z^LB7p!#W{Z5vMYejPbOR?jnrQ^}SmLdj1QEsJKcv-w@Y_2_sK3pigt)k?YkNxt% zeaEby?^K2^zPnkIA%WvlD{Yzl*Q(5LA{P_oTYj*BmIImA7z#p2K#Xdg^b#*Bh~#BI^Cp zJ3oUgNnhuUz|s=`JZxzP_@Bu_3i>tuV3DHb9e?8j(~>Xo*@Fpp29+DV#UkH58-fj< z?LRjB^V0DJf6&r1}u#|&8{p~4suEO;(WYfy`ONWS+E{$Rw$hf8*t9)Xbx%cylxjO zZ^jJcqggqiChpwen2;c-d%gDN)AIMknzq{Vz!BRCOw*L_ofpl-%M5o8Rcnl>b~tc$yQd4 zQV$|-5%NzhXJ===v*$*~A3X2T?KNG|w+z&@Tow6(i1v8@P>ywdcX0VAdvJUAVb$Kz z@=#p`&T+BNPTPqPJC>ltf>V^~`MBwM=RIeQTDl#6`}Jz=1E%tBxM!hB@*AtH;*BSW zn{KBgoAayFpCx=N-@?|9Bp3F}x-oick~91Vy_3Ji>C~`w{Gh#1EV_xE`YJNZeeihU z+T2OO>%))D41*o>n^dtmr__f&jaRz2Zc{*3)N$2z*caI0A-!hFGMm!5Z&*!y`7|{m zEg|VcztjpU2e#ic4-p&%oi^B>tmhcygIg=ft($O z;#HQE_MtVc_f7p;<{vu??H}aIiy}9)XK5{FHxjn3Wl98nP1lCXC1gpL)4gfus~Jug z<)a9e7<|RA_*a%Csls1lmhK78srs}R|JxKyETqYyhAwLrc@%eKo;ykF;>h2v`|f+H`Ug$mr(B`n7#pgKvKxFN(?cGZ@z zR;MW-Tcsn1>w}YChnAKX@Ku6t_>72##rW{fLGszk{_-< zeDD4rr^rkiy=NXux9f!}1O{z~*e+GyyVJvz8@pH5tILHsj?)4s+gC|@vW+g)##6%v zn{SL8UzokS3ofbNo!IY!W(Wmq~epWazE%;^p0wwHt)>WlSS?+b7$c&8`m|#Xk$+ny? zVEhx6DPHYI5HRb8%gw-S1lXQ~{3TkS1})0;DKjc{%b)_j&Ucw%U)0E<0&QBN<3z2K zocOqF9Pk1NrJvReS$J+=D{#O6jmoH%^`-PN;+rd>?_$f2P%0MJhK7j+Cr)!f1>P;X zeRhP1$kQnne`&k>S}a)nvJU#9co`P>7WV>^SyyOuLIi(J83ZbXhS7Gh9g3*`3Cl45 zkFd-ThiFJ$85P_!tgZ~B4uoYm%Roei`fpf9KfJDt4HLv>!dgLDY9rXhzF5@wU}d&1 zQ#J7Gk&7O6jB1yzpE6;4nydj0ehx=@|8$s%2W7i9PDq|apO=kE@Hkz#1xL2km)Oic zmI2^Uv+xs)##!G3=p?W#(6)#$of%eu$)yZu$07?CL#<}1%?x#8HVQ3Y<-mQTLk#QMLWL$>0cgvLxpndSfKs3gy2pr>4Kp>I-Rw@E4e6>(UMr%a+Q?L9=a3%6! zto-2GT(THmihWV=B!J(c3Q6pnWH)lfT|Bkr;3wP{ydy+SEpcx)!~X5`MN?3J5z8@Go1ZOcTEka7Pf?+7LEKW-U}8 zQX8xbeMYPYu9&Q%^TN&L?6!mbT!WyZHv@!2qC(*uy03S{)Kg(!g>{+3jv(qeV1+95 zZh5PaDVL{_LVqL4z$AM*nGP^xMnHnn@lejn`-yd!o*?cb$Oe`qj|Y>M%&HJnD5VRP zgZRtYTzPGQ)~+uF=z3cM$Vs}ZLLgB9b0!6z{{;B?Ay!*-4_os@h>eu{JCpn9;aQFB zqyW@|p^NNio*sBP@tA{v`Pl}PDroi6XEl}r!q1Z}>7!RtLeH8KdR2(G)^;%c9cIe4 zfNhXU4d&7+G%yU3YN=UT)j#?W(O0rqp^>*dnA5mxnB2>ws=jN^?!kH+PJ;WNahX~F z3xkg9=3b-w>#RN2z&SjZ){g0?{6D;Fq5qgn6Z+qiX+nP|)7bu9+`;(p;eSrS2?+sD z{J-*Ugpub#&azbp{Kwi3P;xK`{A2e>3du5)thT0RMDy5iRK5h;QAFki^*o8Xk129(b^ zvn@nyqRn`gG~Wy=4%TqbIk#-Ho#FyK9_Cy>&&KD=XcF$fi88zFe%v{J>9^ zgHabZzsp;4Fn_Q;-ndfxoTB1*;_1LnKucVz+W}3x?OX_{CQj@m1FpIz+r}=H%UAKG zH;|5?OwB{bX5Z^SHXj^+y+7=C2)E0xNMcY6DOOYHlxxOXXfz3)4Cjxa@s4|Fs}D!H zoq1?`YBI}Xe+=H6{whwm$%mux3WxTunT^xT+ zE-t#4{Q9J~(2T`XtD8$V=*XHhH~X$L9{(^UD0u_-xFheQ1GdTPv~7>NZ-c7WQ4Ian zd2MgVPSe3d;fKM`dW^WLCoT0dSa!PMu&awxLCCpp>WH`Ndat;3*N3ZalYz-Uo#76G zMqcAS>2f)~s*gI^&J>R0sUpZVGk--ir~R`2&5I+Ocm7@6B=xF#|zM}9aOZUgpgx^ZISa-n z6wmII$XqjNvwM}ZqO%3KlYG#=f^QPLd!p52`#6yF&I7z?2^O zD)&k5<=E83u$uClJuh7Y!H>q?4-G!91vh%ss&VJaDhWd3vfShQ!m9*51d08orC1-u zGbybdTfb2jVrcI8eh@Kj>NimcpU5&&AdW?t9{#?z!`f)Tn`&-iu+HYV^G5Uq_36Y7 zO2;pLn}U>EM>F_r_GF!3CWXkIWQdC2Q1+9E8&U$()jvBjRr7>qY(iAN<1G38ZXmIU zw9;#)pTBc%&`35gvVJ{?_31seLQJs_-EY>j{^E4wUt`8KUQqQxT{PZV1s?6Qb_TtQ zKGWFc)r*ree{U&4FMo4<-0RkHvU=R%?Zm(`M85C({D5RH{(gLO99x_(U11$h4JVDI z!IFJN+K$S`;l_nGRsn^|C&XE;%=g51AM90^W`wdZ1Ep1e6jzmtrLHCriP#KMf2lGk zXx)0CX~)V83T=yVHlob&3u0XZ8P)5ha}%X)6F{CeZ7ajR}gAoDK>R$;xE7lj(29RDb?es z4%u=w*d9I@BiN}^{KI*?YwIRV? zxGf~ZgHLSO7Q#mTo=5YZYxzL{l^&MXJyZP~vTEVuak};qy0{-!ZK5YT%VyvsBo+5n zTBIU?UUMre`E8TZoU1FG{8##nBxza8(dvZa!xh==U+>sORwym_tPBK|X5P7q@5;)SY&_Q=Z@ZW_^-u-9 zw7#E~cH*B@Risw$i2#XuYI+WJw+IDnaVS)q^8Ju@hyxQB#SZ&^vJYjtwUiTpk7{#>QKsi>M}nw^?pF*n-SI&x zJM7A|daFSxZyt%2wtc}K7jX5>&2V;P-eR2eYSc!8q^7hF@kkqg9qS2 z@9+n7;*LV^METuEz>G#SqEgYd?e~6vOnLDL70`O@qrlB|Y6YjVEIxLl2d4I`IhNLWc)Jzs`^6~@ zWqNSIHq8BA_w=hEju&4s1kq(8!0laRi-6!VQxX-vS|9rWfDH-sUE*fY@q@xcWoCRe z+F{c7RDk3Pbq!EQ1-p?LyZTE?0CBl1KLnN2dSe{Kuc%UUrvZ%^3C7IlEd*DVM-BkV zivSw6*LoXHr(sWw0ft{`YRF!SM}a|AWiD|gq;C`qy6SK-jFj^qDzYL=6YqnoI;4Q{ zmC?b98%!rQ4i)45+r9Rp&zXCuoD1qRy^B9 zqOhOkxbYQAHq7C4+Mlwq4cEsq@WGM~vpkdvr3gG^9}By)u?-U8?EI9-QI=>CwnR5K zZ}S3PUMZU!1iGIAD6zplkBLFBD;IV_a2k}fS-N1T(%-wC8Vndn%s2r4v%Xx>qcuyy z3IMCY%vc~eAR7>J4_}Rm@bFV4I1{uz0rSP*Q#}q5F$e(fY_aq7!HzPnPktQxMiH8C6 zi1@iyI9S7>{T+;ulvsvv=9EBvqC6(3PvQWoxX3gMFcQlL*r6BXwg4X+_A_`H8+1<( z$*am&BoMif2i#x636|RTa0n}S=1HOQnmEYy9uO=f1o&^1h7*jpnfP@=0afS&w%7f~ z`#s{pQbHWN>|o4gor?}oLPh}%V)$x9DL@t%#UX}7^Xl}ns@nmaRH$CP=z>iK@n6C! zN23M%zS=J=4R*=ED@5*_&JP;(2^E`bU31m90|a+gx`T3Y^~+%H^|K=dLoNRtID ziT{#>{&&7JVd4M2%A+?LgC6Cdyk=y=!lM6k%mp%=WeI>`lD;HzXax2a1Tff1g~k4l zc7LNB6w&`iB+!JBNf|Cs*il80!z8knNkI%8u)c78`CLbZAx=6V*K~NLjXU<^%7d`$ z`i%Q6)rN>v721~pOFJv`W9|)dE$K%o(s#FE0vora>#hETcwvZbM)LYyG4wr?lPgPkz?JisRFO*~{ihwW-U_ zM+5LFU#ZC_`2!<2+bd=)bM=Nw#wjP!DD5rIDgk2d^u!-G$C9Z}*ze<*``4|VZYtjm zJ1Of^VO?sR#!T-y4|;dkW%%>QM@yGgHa~)oAmaCKU*u_VN(8)5jd^%fU5oIRx+qo| z$77w`*rj<~)Hr0DN=eG00g)A2;NL#ZCXwle13}HP+#gtLmHt(zMrnxJf_syV;(Fe5-<%$B?uzc^)wE}s znu-1FJ`?`#avsqsm?IL^Y^E$1{#E?Xi|mH;t(K89znZ>pC#RwFZ<7pqa)wyP(np_+ z!$n@q_T234V)HVpa9mR=kO@o}GJjaoCa-Dtibkm(!6|0$p#J4QWVm8#>)_Y5J4MtN zyqOo)sFi)hG9;Y+?q}JbO>gGNXHP?5XX%T%8Syh|bwfk)G!q&;x0UV-Ap=Uf4$tg( zWvy-54WGPUd_QfgyV``=%3UBj?z7KI!3k%$Z%EqZ6ek4{y1lfmn_M=uH@f>klWwT; zqxgy#;ddO*4#nt1L1}_JQ`i(Z2V2gc?B_VQzJ zX1x=Q()-CI%|$=2`-%3BvzXThUt!i&qo2KY(-E#0-4^&L|B-3>r{cYf*OHA`1kbm% zOlzwH#j+olF3+gUo&4NfJ>LCQO}jqyt5_o-Z~*r6qc3i&ee~Q`ktfmbcK04IC-aHd zme(3@>ww;$I$D{_SMaH-V`BsR5eok7W>_1fC+hP)*5?B^FI-wk zu}Q$?QENKg{5+Gryi#*s>8hoiOC_%G{F_Eg;qWCaes1?b5%rX`oaQ?R&Y52}vLMSM zC6UY<#)8GB3$3XF-P{}n03Y-&wDa>RmTlxr(&6+^tZ`x*VUCR3Qb}!-M-y}ON^sI6 z2@(Zm9_`h#U+L@?n9Bp$d|)V@YU@sOYSgl%@ksYc`^n3jKBW-7ST_gM(htKbOkWu_ zDHN&s_YxOeGQ&+PpM4KWp4(+DG&_b=WHKlllo*hl_8cka@GXA*RMsWaj_+E`+fv3W zJ&594dt%+65p)(|omTiL0G{mj4hw#7dplmeF~)N+N=%b-6} zEWScDaCUDmB~>9y|2m=mcTbHZqJn2HO~E$6zUg-Q*wyyxiaSt_&;M#Y)(3&T+KvnZ(R^nYHTTOAw7*qC<##y@p4~6eZ@g8gW>X~djeLx2jpLCO^g$_K3&lL4n z1Z2f^UD;>l-R})vtCq@C)})(GT;&eJz-YIR^Icp%tGOGSb7d#$4VSqK<lKSrmMd=i^jlvwwxIeA+qM9xc5 zrYH7eck+%m8`L}#F?J>ps!j*@j-6}BlPH}sQPNp`d~0Gr9n<(~-1*Moljd%xa6IxK zuR1{bJ-?Tk1gn-l_S~>=h)FD{Z7*|c|aa(Gb*xg-NIX&%v*(klcswVlYj0n zY`GK5rPi)f+h0hdpRFC@CY*jg#4I*YXjng_!}v9mnxg-_IzuHaNZGX9$O^y@d7;p< zL~_dX*%4QVdz>g}x?@Kzro1l$a3T^T*<&443 z-v|%KnIgp)LhI85vX#6PG(~hCu2kR!Wsh6Q6UuysLWSz)VDehTwjn`fHpF27SDDd2 ztrsc_=#?t^u&10F#$Y4U5A-;)LtvwlX!W#QT`@clUM8@EE~iVD1UCBpBf{Tt2Xs6+ z$%fFHv^b&Mb1Jc{GBd2KGwjf>8ItIboHCy@Y~4CafI!m_R86H-BxfN6=tmXc_jF?^1Ng(6s?G(b0%4Jc-`m22zV z;m!gunDw(Rn0zl%$+VvZ2cD)?2{x!N?ROyVPla9KDi9<6hNKZ%Oo$ckz%#{CYJ9aB z24(;k&6c;SC`SiV`%F6Q=!)n%I0lVmPF<8kXrsVmkawr3$7e>>#|3W0Y-ztRM+D|h z=vjs=(919ezy-lUX~S0VEYd*%G9&eT>F;+ctRp#q8_Z-^2zZy)8Uz5Ph=BxR*8SGO zN!OPm0+7oH;Akn!W+N3mgJCb~I%t4gC5-$Rpoyx{7q*&OuMYzFs6`o=e<#k+0ppK! zfN4x1oIyXk(hBxfqf`j9;^-WCWmOhAfl-p75?rCgmm*JItI%YF3nu!Z`ip@Y94b_X ziR_A~D?-fgMqaQ+5{Gt_>EY^wYRG6SO)o;L0fPpfo*OK$%ooaaGN*#FlJ~Z3potx#fTQvnm~se<4q$s0#s@yX{_=f+p7)Pu#t)j1`Q z9;#RbiN=YoUk9IxA1jjZPmFBVeBH9VBi?o6_D7|Y&+^T0EJe$C zB+~L1pu=U zLsotLw~9{&?3ly==k>1`*Ey_SzGcN4qa($j!<-ke_?-?PkrBd*{St7-Ws@V#$A_K(4$oP0g&ijtb1oWM3d zg?!SR>^CMVO}`p{t(~nf1QH(@2cPkd4QMud)8PzF`0dd#!t!i?%xs=h_oTA9}hro1g3zJ-S^xnIwh6_auecwwB*lhRQWxAWhwbA_68 zUGszUMn|)j7jKU}To*$iBL1*ki0AR6sN$U<1QC7xSAn#Tjx%PnlHula?k<g6H4#TYikYjJ412)Xx;Eeym#E!Mgb1-5%oi1M`?S)l`+dm}Q!B zF>?uTb{W6FeGwr3Z9=Y2^jdFoCDgC5rs(V}sq3*l*JS0Vfjeiq1SfGW9lkByzAasA zOG$%k&Lpw$My$^_3JoD99{2*9{aIf+GFVj85UdnAX9Co^&$>kk&pdb#O+2@qd^w)J z9fAY7sVT+8XBJCmvJ!{cO@#p$SEk)3kKHaK4lV}IrRGmWCdOsif3}Rc<}|;1C*r#q z^>ycLsn>V@A!U8o*;M(_^Cy1rQ<7Z~&klnwDRWwHxWE9F(9JG(42?i|&jc^GqJPyz zh(&c%TF;w#x4qmrLQjh_(~%sUAsY8Zt3|uikzhFcxlQpW{CrDZ^qAD;cc*Dkc*62e zsUcDOPaooAzPvY@H>Z>inJf|dl5%EZ6?(g3F+_m0+_WDljVfLKOS~K7M367FkLCErn^O9Bt>&MW_N)rR0dDcq0Ef15a zkZGC0_is;>zf_jRT}cb+NF$Q#>H3?8zqFU<7!m2r=!bWU9yzhvW5=Yy^ivS(ge+{f zC@Nu27^#{d3THpw)q1-Rtt5(^&a0Af3|5_)T-8o*C^}Ame%&+@XWI} zchBz$#;{4lPgs5^2=`CsziZ;pSB^;Kwu1;ZwKq)V@@A;`TddVJx{AEKo$nZIEekO`7nZ)_ zd-|+~2Ri4>{hcEe$`X?;_SC29-7{wmTkE`}i2aAmWhm2mE+HSKcssX=7&eOI$9eLl zxmeAVWS-RT-Q@J3>t0NyTc%pgMhH@WF(}=CL7%>5$0p2ecyGR8eZRao#sC{~)i`c( zot{V1--TQCj8I>919FULBcO1&3NqwA0F4~YGi zlD-rVw528f<|Ssszzg9{_I${PS`$cP?YDO8#WnnQ zH_U?FT@+7xj$hVydy#+!2pQQ#5naES;QMk zPT~y&rqUZr`I0q+g%l&b_sR1u zsX<|k#e(|w5$1Ls3xl*09b%to-Ox;aJLGW;BBqM?FLH1Ze{-K{iHLD3)B(ph-k(C@ zY36-Y7W&Ku6v9kEig?LBkes8&%rOfvHXBM=`slKVW;vJ}N*aY78n{d~LyAK16JymZi?H122qGfJ2Lxy_+~~+v8#>bD{VB-6xY~Mv8llb*iBgTnVq2V8 zgV>Egms1fhor10nPAeoxEVP+Ag}^_n0O>{htP(ZA%0P%!DTzUKO*E*sv9zm5d#yvO zN2pjF18C9)yM8lhAqQ)KD?9ZOSvcoojV9pAPN2gm(?T$=?2Z(ca1O_Z0w5L-cF#i$ z7Ds^mY<&zPKYMq8U$0p+*ph}P39T~?ke~l>pQ`}(Szk#j0_!CA2M-4eggO(oA2UB$ zB?72~Zqmc^74qe^S<<8cw(lm{16poCYX-Z+iAcWu2u1m7%7r`)`w75_Hhu%Lz3K8G zV$*^lYW|P^>_OjcN#g@c0Y~aGE|2-PXtt>^=*eRMK5~Q_U^iD}(NsiAcbi(kIL}Oi zkiCmaf_#uKHMMNE?=sy=M+8uu`hn@-%#mc%ODywDofliONQp5VWi-fcbRNGM&|jaw zS0?4RtB8Cpp9z5AW3S}_za8)KOgkQ)vR)GRADqpKmMPFrrDPOnsk=PZ#|Lnqet@$< z1Jj5v>^z6TY~~&FWYHjo$|*WUV5maP5Dj(QMpGaW=JymYr8FNV7h5`~8k{^a{-&kD?;CTCz9&FKVDPTyOC1CrN zQq4dEUI3)H_75p!>>VC}>MT_V;%efe$}O{JX-kO6}R5Du(u>c zN_Xr*nwr;TOH1<6@;eW{rADF9pF5=<3!ANnGp)FXm%ED)IAH|kC~4?&-X99IRz8vo zRN@+e7`l)T_{}rQNF-2hF+hAi$Onw*-$mjA(4eM*L<-d|K%#<1!lExa$T)wxe1#Qb zU=4_>AR2^45~^U7mO>;g=<_%PX1L!fsRYonAVf?AT=^L2ohp(5gmw`ZrTA*T4kB{l z*RgmrDBKcme)OfzxpgtX|0UZSw^O&f3OA+8>`TwSZ$Gy4B^XVHUlUR3<@NT49+j(hEpOV8)3x981-(|4uU{&%;PINeZ54wFG|;zV16 z&l#APK5U)q%mp9(uOPd1CKR9jd@qKdw_s)ctZThJKiV}p8ExGhX6L`3bb9{HXVIBo zi4*ec`WzZ2E?$rDu;u;_Z>*r=X5>*T0*zTY9YEr+_ zDxX)WpSEXvDr?G4&z3)s$;{T8or8l{@l|cCyPPEKlq}=sVqaLek&Uo> z-TkAY(6&A8+;CW4r*MBpM$jR?k!FJyqY*beLcv%#j^EQoCTgAq%h#&Q2$-^Kf>-R8 zPOh13#%AgE%a=@hkiL#_gSuIEYQZ1|A=$BH*)5SYZT>wTUF}4^ai7{}XYOSFtko*! zn~aie9B;2VAbVVMd-7G(-?-yB-eAoTx+U5UE55@tZ;a$r&9Ymmxe#Qcd7shQE_t*3 zEKQy&&e;eDsy1m#D>)N))cUkr>I<@`_2qdHpBP*h0wB6lB8;9}Iyp-}8?(z1 z!c|1rb+Nu)`tRBC@l|xwHCn~mq%BXeR&(NF*SiQ&lHo=@FI zLgQE1T2_siE=`cV<4e2Y7esRO`ENUTOfvW&CQ`T#Lw0i6-%h%zs>J>MS9Y*05zF#XM;{U!QAXMvjPcP3d)cywWIqKS-inPRQ4U+V z@rR|_x5mL=A1=MCoA0U&v2^`xwJtAw!DXAZ^gz-gU%W^Aq06_{ zcUX^U2OA((_mxvtD<=n7y3L+i6Qr@d9^av{m;T1{gTF47a96489_Ac%5f@8JAIWYTV{In;gw=+C#9}!#d~?11=Ylr`?ZMcb;gNmjCRR zIi&x2$ijC)Dr&4I#(G}1eXz8ATa#YRwdTi&`%A99$m<}42K~tCj;%B@il=;YcQLo_ zw7yBE1cDiIH$8twdmEjf8)sr5)uhS!UAe43Bzs|X3TL|rLx888^O@7}{p64g} zhnii|<-7DmlZ70UA3|k_KfFN3VGndvZ6fr$AM!QZ0J8F+N!2ae_B0oJ<`L9Z2k9{+ zZaWsUapo#uSmIa_s7ghI+IQbnBXY zBmxpqZ}UHh&OFAQFCN<*cz%{@hfTwSH`2dms2^}q05GT=F_;3BM;MOQ|+6)o%_l-lXS6DebJhI5)7xvXxiwvBr{X`P|ImNQQ_ zyhcq5CfWBa&suE6UpFJd+t(P07o;Ed5IxfA9yLsc%a8l|Mc$)AkNR^|gSp@fWxIug z#Js9<#f1L+o?tWgVQnWDH}oIg6BeN|Vp_Ac>I*DimdpD-Jod}kn>|=`^mBPs2suQA z5Wth8-G8_b%}o@%lK#GiQA@4M=48F|)axbJ{s&wPPZ6fgVZ{*iI_mY+_xLHsYmu>| z8K+b&aU4T~qGIgV4~4ov%~ zZCc|f#T&0J=N<1dXV<@2IqJeJII=?@k8;3=P5ogYYX(-tg{gPeDp`3~g}p~CfNPdZYGAnQRi>3G6|x352Soj~O^*j0 z0XN6`NLx5b(v0Mr(a6U85mu%v_hJSy;HViucM?|{b6HWT&|;D^jc?rCh-tl9Bq;)c zDX6@OH**+DoDxIa0|nI4{0N#kN>c;aU(yf+xH)73$*xn?r~RNLNoMd$R-qCKC*zUz z_tm+DDKn?O0F@ChPHsd&2(t_)LY(xn4S;q?WRWCs&3*x0$-Vdx;(R2yp2Q^%eIQA} zm;8#MtPnkdp-kGIO_HK@FBn_`!G$N#i<>96^5-~)GUF>xD;ourt$~qvlsy~nFBYM> z_>ytS?#rfqFah= z42mVOZbq=4ij_Eg{4q)WfrJ$+>M06m5(&KOM_7oH#?OstOqp~>Gs2uCQ?P|6ZH=6_ zERjCD5DY{;+VDBPSz4jM!xfPv!6T&B&~Qj&b0TPB%UOw{VxSJ#g}hmxwddx@ydPy{ z+HtSLBMl-c=YUMdQl7wxfY*H`{f^+Q@}vtxselqJ2uGm)c&%6^?!ewXB#Ej-X&oX{ zXDgI95(5Ufau~f1aZ=u|`-Fwl)lsZc@uP90^%db~C3)s^UhPQ^`rv*=u`*(@2r>l^ zVntb{jP?~L3v|%m!IEO$S*JC((s+jzG)or(IbNnu2Gc}-0|w!sn&~=-X;0o)|Ju%u z$b+EiE!1B|L&!aAikx>`L|7GtsNfwj2;fqbN$xai*k6;ko3N8?mAumpxjJLNTsagI zxFeN&q{+YXAV+mSLwct(A^OJXsZ>ASzLkdrYBLDybcyxV-?w?Nq7qavGZjizLVzIZ z{iU*dX(Atuo@R-e+ghRE2Fq=b1C)Df0cnzgHd zd(1mHUxuu+CAfCwu<4GheDV93{YSx{SldPKD=D~-T@@uA#Y>qC*;l7DI|46O7K#nM z791bw&G=@P0x1iz*MS-T#pizTU@z|R*b8W0LZrYbZ%|>gUFSWqn~I|(bn(yx!X&Jy zD~J|A?nCDOXbG+4I&U|SD$$U30re4x?cnGXfnfojhxl=dD4)D~o5NF;%W29X@aX~f zetQXoR&ph9;6n-xD)yiOE)9y^`2-DWFt@#Yv^0u`d|W&S9Nr(*xI41Sih5dpfq+F}{AKxSdIsOg4 zqUG(9XmbBP^oSD)gFx_~^k0F$=)Z!$1yiB+b$`=;fmJVzjt~d+{$n}J2P$9^sRVrg zu&xFZVbLyB-J3{B?bcP;7`U#1W?q%zrDG_ zYQg6Ukux}QctQT(oZmVF6Qosm$eE9kc=5qbbsdhpCF0G63Ws5RD65lV5$4gjk1j7H z8uy~&(7l7t3D-EW@oLUU@_G(!n(Iu6x!ehyA!-O9ErYZRR9$Li_0olzH-u2Hun2GW zmkFp2p#t}}XA@YSm<+g`5jFd7K6EKwwZf!TEh#}KZw1VT5b^YourC!5+~TePCuXTM zg$UhxzlCA!k04-m8 z*xy^X#NV(W67?C=XWl@?aE__^rmjJkg@^CIvBn_l6UXsMeo{%HDT2GW%V8a-p32K# zG}8N;FskSCK)lKHVL4-a-!GqZ9^c$vOdfiogF49kewXK>G3#1gh4)9}R`U_V__v3H zhasB#_eZEvLdZw-di@}8sZuFc6$1a;>~oj$lt~k0^4j5tuc?Q#d*D{H zNfqavjAUx&x1}7#_tP_}M1F5I^>m+f+CnU7KaR?2ACw^)2fU;`x>;ln%n$iGtkT+C zL+oXcd^p`GQ<%5b}n~yAhX^fiC`Tq)7 zG8Su_&t(W15bxLf0&z2Pb3A49qnLI$eS`oVx>i(NoDTmO=3V8Y`h=a3y9Qz}{Gx7m z(WgB8v@*ZW-E^ed#oqagCml)IVe|JIqJW=t*{j~b4hp|&kMDc_z3T7>!gl;lWGe?} zSf?M-j@^mLoeG+AD__<%iQamtELZq97dmR5F8lm2pgQ4okcKeyVDe4#C6vMU?E6>2 zZJhV=-IpM*$=GoGH0YW8_5phNBXotd;;_B|eukDi8#SNHgO5CX2q%UyTi(g%p9u;s z0~l6l@LBIz4m&2BsvQHxjTy|K3frgFT~t#_D_4Owr^msgZ)6z57R62_yUE{BM4r^@ z2xzEZS9p_+r}ILlv`YK6&u0ofeBD-0UaQPci$g_e~r zcB(L-u?`IBEE4?%C2j}?G46Yv1!P%t8&^0u8Z>DGIksb%o;@GKO9m9ux+hpbCIwic zPRw`=0Tiqh6;L!uhy>C8OM(F$>2hXtfN;+0yL}GaNLt$3@X>7p1%oCM(>cB?F?K?3 zBygF4GK+=QbRWmIN{XqeLX1cUnWREI6^4?w!;2*9uYohqP5Tz!bAQZ1Z)hKhPlyGV zcM%;U@zkHd1+TDeB%ZqgT+nGlGYhpyFrH}QtlWE|sXhiSoE^RA0Sn}`q8e-*;%ZzW z0O8E2)j}iJ7%Gv-r6i=O1VM{iI(`l?FbvYc@}5DZUwNdtJd;kPM@i^JHTjaP1k_%E zgm$tto>F5p$OZQ)sGCN;ddCHl$z+Ti12`^Jf$KEYqMs2E@Q5Pdkm*q45lRj_w1Hep zRt@0*&YKu3;-o(UpK^@tZ4*QKovye{A+RiW;O{K=F$4u64vn_QR<=+8Luuz0jz9iX z&aR?hj)EsFmqv@5HbfAf6;W}nXwm@w1YsYCOiuyGwFrXWf`k^N!3PW5K%Sd+%c@v&m?ewY-c(n_)|Ok_jr}+VOj1S6jkga@v z^|54(#MqG;l~b_rS{*NbZs7yKFw-TiI{4wJK$^RYNypSQB7}>DIy3yb*Dn6$W1z0d z!>Ipi)|U(9xsUHm#T0x>xJ>mF_A}Abtk4+QsACYkgODZ%;$29>S+qdVCfw5|A`T%De{>!IJVop|h|3E0`{efDB-hqQ`In9CL`$V-oPP!(=|O zEO0{qlKHG$&3T9f^2syu0I?rs0S0-Ig#rPoZ2`?tVD1Hv1d_vaN+5rngwl@nA<2dS z9U+d`5>^=l&q6)Av`Y(@|8v2_^j)km(B%{ump}y>b4#Ybgg#RXV>)#H()pBCs81>l zhe?VWyn%5@;Tb{Ly#`X-`|o1GT?NmA(ZDp5@j5jixK=Uv{Dt9Ui7^%DSlquwL6JQ0 z`3w?$Hp-()dXVcs;xlZG+z{b@8pwSso-vYbSnH-ti zdy4XUJg_`BVLJFxD~K6^l4*4kKs5Kv{VELvj8evE@H!+WVE}wd&GaV=@KPsM|LRAJ zf0+-vHG-yIMpMB8 zKxRm+1I$nX=#V`UL)^Rr<{u3gK>;Y51K48;*8zH{08|#l1pFM_|JaHNK!Y5>ed}I0 z2z=n4&wu*;b2BFZy@CzL@a1ocD(KATh(wRi^$$8LXn6rzpuKhf*0J-ee<|6HCM5>50Fd3^wvBSWV*SztuE@8UlXK|HhKTI$yv#qm039YXzWr z9Kbgq1+3`rHGy7?fe7;@0$JURKN1=`rq{K6v+D4JUvN5&V^+VH1dc0iwC*t>KNswG z{ExSTpNsPk=IF22gK->*0ve-(zzB622Y-x<3&tk~fT3{!7~15b$%u&Jq8ywqR(Mx4)bId!Nq_nruK5lxgzs#Q`-re>(s7 z8wTsV{1&YFE7&Udiy_MbQZpPSG6Qf-;Qj5<3r&qg!i3e-tdc~@t`D;_gxh>`U&H;BSCAEYL0hZo(L+C%x z_v6;ih4LUdbH<-)#+#qnvJbNydc-%jB%IfI>SVO8rcF*MHU|pS{X8Tx^>0O}omy)A zkrdiBUp_YHdstRe@niR7_z}eK>TY$sm3*B&h`9}yZuZ?ub6UcAYfgq1kvD~giBjeCs!cGG5O%z8Mal`^a z@VeF8Cj7a3m)BwyTUOKWK0TaQ{z+ zUYs3$)bnStGewc8*5ZUsTfBd@?$q<$q@mKz@}`2iCV{dKEJGqEH7<=ZJlfD%ijr8w zLu7a6F$VE?{R7B%;O)k*CX}z(qRFPqd)TMIQYWm7eDKXmQ|hz+e3)kO{$hpFq7p4%`vkgW2{(C>vU^m$@9+Z% zga6pm&l!WI97gs2xZCv)wgi3!C|LM)$H-^zN}OXkE8e;ee2SuR)QP3vU3gttw8oOh zN)k>$-5bD9{r!qiyrMe7QRAB5JK^+VZP&%~lY&7|FYaz5uj?$LMQTV|&EiU5TN7i( zNleZlvI@0Nt>bOwOAnmJTC(<~49s~INM}06mgZ~j`%UYqigbtj6!{HA;o<8FA-fd) zbY@3-cJ6!Yi^--$-?B%qchIX09tm5N{n)Y4&BJVu^1EI48~pro#hR~Hc1Vl;braT| zRNSUqRadFzf}?}8TUy$w!hu`4dpWx}UVocl!<4A4%3I#jMb++Re>dLTo^#i2A;@4l z[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
    P<15xkwQZ<;0mk45kZEfI-*6 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

    aR8`6H;`5cFh2y!r!|C1`og33% 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 Pv#?^5CSCe;t@wWcU4BoB diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index da0be1a5c2a905eac0d3c144679f0fceac5a1b43..dff4dbb752237203f658d2f271cefacd74bd66cd 100644 GIT binary patch delta 13272 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 P+B}I(LPFC}i|zjazNQo& delta 13249 zcmai430O_**Vm}iB+Vj~29mP(Is5E=PG~L~C80?QQ7MrImD-{Kjhcld8l;g1R7#uBlzcsi;CGx|?^3jR7-NBo?%Us{Oc3#u) z<32MrD`j9AbLC5cg6Z(7*Zuvn5pOxU8ikgxdA^pFMX^kS(i&Ey^Va?1598O*)U32a zhDKe^O}y%>jej}fKke|(8&%KNmIY-wEj6E$?(Gk?WmZk!S$TBwqUi#uoC|_EJH8yz z`^e&dx6`L+h~unw;fH^wSoX(?v8=!!nXK;ROc58C^lLoKF19!E$b$BlH(neKIDf7| zvRs6^Y0B%CaM+-HnY@aZ(hZ@8aUG7ND^n_xvAm&Ihu)_PN7z7I9N>qu6k}b;>&^<% z6W?jG2;)z88b-ao#dr5}ewI39vqesKu_N*<>fD0!Tcd9)e~Oc4${ndw#MR^0bh~f! zboFjLgt3Xgd3SPfOjdD=S9**3=8=z?WtsWj>i%2SEy-#y3-1TYyvl>?ZrS8%Y&w6@RyU$IYUR)rZekqT zwfE!}^=9#XNi?Z^_Dx*UubjmeHG1jOg&G>STl*GX=%gy4l{QB9H z-;}Qy?h`r}&$m1gHz^9fo+$H9>BgzWsjWPguf-))9GKdzMrOGi6Sj$tl(-Zkm1_z< zYG3M{y%=gy%C+)D6}JSq+23# zdt>5}r@7u^1xD)B^b>EKql9!^_r;90vAe(NH0zXf{Jg+&MRzuiW~O4TQ$BCkX$iOq zIPNdGRj$Jf8ip6VfiG-VDxe>&Ril_1vIyr4sZY2zo>e5NcZw5Mm| z9oIT}5fxSbo<%9>fm_{)_xp3!V0&-xve1>BQ5dZk=nmF#?od_>c39^2sv<|F$sGR5 zr#>}1n36G&WXaEhd)&5Mxwc;RjIyeKa!k)|&!QRSGoPq-tH!j{Uq>t58p#YU9$f4| zVP7tANHgky&efZJnWN7YGj_N1>>M5{EIpXt=I*eW+LL10A@_y4xAeI;s(#?d+ku#w za9cMcht}%mz~bb++j@0}r#7~k9h{z$7pr-;FeQJieXE-2`LOl4ugwal8n(=?bN&~` zvfI9jisauL@nKJ|?fL3E9a~}1UC}3TPo_Rj&M$6LZMiS6wd|KChgEXbe74!5YhB+b zP|Geb7QWK$U1a?#ym#-VsKV|CR86n5HT^hLeWtW0rG58XAJ5Zl^*bE%>|KI- zYMH~Ob!Vqk?L=EDm#E+ep1*6g@w$>ECgv39_qNvXsqhJdui5)tHoY^5)-aov=}Jy% zdFgdHZvtES)_`{)z~I_}PuVwx;wRgNf>SzqqOBUH;wslrLYl@)CDm}Bs$-Q=8`_%< zw;PpS8F}X_e)nbc`sW{*CwE-&)BJwUy8>N(;Y|40kPxjIFu1y=w zq=H|)IcB}&1~128c2v~1UN|#9S*R?_&E?Va{TFQOlGb~FSYG8)xFzhY(eC{X&2f)X zF6S>>exc)9Ha;%WZhI`eIbdzomw>Hpwv|s zLpQ!WNaT|FAh=>ef9x>tsatqlhe)SnDzm0#eE6RMuBet=W?OeWvipiLlbKR>*^-t+{Uwh}HXW6IgdK{N7EjoEN z(Mce&q`8ZK-`f5_HnFJy{=WTDWWmErPvcO2!pp_{&9phS8sekSQX->m>;JwB<56FwiybC21<`P!j7nq{XHA6lQh z#N!$9^pnh2H{mzxUWarZ9l?8BY7!lex2G+=o^d$qW()t}yd!(BhYB~y-fKDb(O{r@ zPqNFcbCNydHK|_zaOQoLHlQUh6v6e|?(R1~?4QwR>RP_?`M^!h>2W@{W#~TFn|9XQ zMlj`RH@zEsF@tz-c$zAnHrXhDTiR%A7sG7Tr*p9#TCV4nQejK2P^&ivX}4bW1}v8T z@U7LhTP>gCOVZ%3eQ5rz>44f`&O-*q*Eheu?fl%ikGXt9Xwk*p`Ew+@r4|G z|3FE%#5Dq-Gy6Y!$jyAjqy$zp_^8u?OD)}bF5iaD%6HbfFIe7F zP$kw-xUc5L!YB`=x~D3YtKM~$PdzVsi>EbtKE^tp*XNf#UU>1uhNiuD6>KkEziKO5 z%=H+{cwI4lPfBidjP_&U@v%skl1UCupV6+BEM?yYUfhp4c(Pym+45Dm*wVE9_x!UD z4$eB(NGA5qx^6{njbhk$1 z^`X~>GG!m7XIu(DYci{vi+}&x`R&Q`D#oQEt=r9yi!0*8j_+vKv+=9a>G>{pEo4jM z%l_NYD0_@@xavt?kFYcqwOib>Z&E)Ai|bb8x>P}t+lQ}wD z*1kN%cO|b%Sd{DjBQx>j`>7#Iii-x4?Cn-Bap&h@4?Yg_8UZ zGs5p^be;+~V-clX$uniI$-;MJEz4M96kTm47{qlB3HRmXKcFul7`IH6EBbOsu^bnV z94`-hR&eiAM`Bx!mfSn%vE~UvSC{Qu>9}!V5Dq9-_Ij~R;=$opfN^oZ6 z*x7HOJm$1N60Ad6l_Rg|%G9H<2^D)!_9NQgA9Sr6od{cOZ3PBXPItnT4puVH1OIa(N=u&AmQRW!9ecj48s3@v`^s~RrfD{f1V z#-s)*n@MYCf$IcM6sU+&w1N83T!%VWaKy06gLBhNYeW^Jix%+&TNYovdrIw$Dr;!5 zT$i7RyvteEV(bate~Ra70iE0Sn^pz{iEu=o7gRDqLj$jgw-!XQD{56kkWS4*#$@i+;kC-`B-HOx^ zNiEn$Gw0c4W0P;jHRjUfx z9ylJHyTwklsvv>=2+J8-_K7($T* zV!;I>%ohP7tH*Qo+kx%m@13c#cQd}RZfjY*Z%n zbBwU5Ke+6+NY9wk^g<7<-jx(_zD)^|b~m`wdhE6f$%Wky%XvQ|W7)P=zXU@0FX&#e zc5c5mqxw0<|IzADeEH+PM(?ObZ+!Z~_h)B&tv0Nm?azx``}p#5XQ$9Lkk*Cq<+bl@bD|b|9@|=b3SV98=jLhKzp-i2%+c=J`lFXR)FK+C zqKc1o&R(jW>9TGZLmvL4YU_C{U>O7cXY=PK`t(4LL->cgeJbAqzD;~hEZf}ZJ?nFM zyJoBJm+$pG`IQl~Km5xBn8J>3p|g31cky@aDW9ErTUu7x8{cD9x~hrWW=h21^DRBi zE$d_}@I8~Kj(e}`_8XRQwV-+?n|5!>O#b0P9e8K!7sY)4`m|H*1@w8Y-}~m4gT_AH zEBYkA$14OJi0Vj2zGf?k%DS7JG1~vQ#`J!@Wmo3TuEtuwr41V*Bv`I`sv<*Gp>WoC zTK)pnE^5`Xx1!Af&s#+Ibi8BEx-GIEw@TU5ueT4+Jry8Z6nVb=u5Q4^Oa4ja9=mo) z6}#GAE2)Epn}%oNl{k+G^{A!Dt+Tg%E2^D$_u_k%0KVd}@b9r9o=3jq+1v8&!S2kw z)M%r?aUXX5 zv)J~I)f2d6sEthBgC#!jgwfKLRKo}_8>D6H!P8PxPYpR1?n#w3E;m2)<>~dhdh>Nb z1HzGFZ=AKend}Y`5BC7k0=H2k3AhqVAzNWhl-7;udni*NZ(jr z(Ta&?;}uDN_@*cZ?Gcy1#g9{9RAgLRD>i;OgYsGV{hg5lUVc zglb#pN_SI`yO?s^7QJqHzt0=)JrEtbnUR0`X-&f0hZXq8F^LAtnzWZ5ha-C8ZzlU6 z(>%X3UTOEFr}eAx@tdnUgu<2VZL@c~w(3>99tl-m6LRxSXzM2v)Ak;Ck>6WmzGVQk2`!9&~4ya$SPngNBpdy&J|y6n@}ig^#jo z1Fp$jLYu^PTHp6JzU~#SYgd-?D%Z;E@)4Va6rKU$*PF4a$#n`&2Q0r0rajfsdo+$a zvRLJb{gBniKFXXexB3$0Svfpq;CQ-1xA!@R;m9qcP0QWzjH(&)-48q}twMUAxV?TS z>K;*~)R<6H$)C9yzg-;2>+Kz@T~e5gy9NgoYU%p#Va~Sm6zrkp;nz-6K$!1J!?)`3`^R^1RvzEbo45{lP$orbBk(((Y|Os*%pf%mRHU` z+Wq8#)63Hd2o<;7s4sD@Tw{gfu!tx^y)Atqf$Nx&_(eSh@9;;<`8Ghq2HKmGng#D! z_ysk0zLty_Y|Rpn)s(oS5tP8CWgoAXQNUto$lm7|te3GV{I)t@MZ|T-y=V9*igcoH zVtQ=(b$az|io+3l8A$6@`4fe!+peBfWLpltJ48fl zjE&Fg?b%B6NH4s`k=@+cD!3X!i#f$4&RcEVE^&UkDhok9HI>1yU{Q(lcLGBvPMP$Z zEh;jpXREl3NF@5!*2TzqD03u4gxD^=hInX(nP_8iki?ynB`aD4A#Vxa73Iy(mL@l? z*~-J6E013;)Z|3rfs)Htv?RMdauq_=*Hl8D zr}G1?b!xX2=}2?BBGl70PRf*c4TT7!nBk(7AcKVyrCM#Q>BVy9O6wi>nrW&wQqR0W zs3YrNYskiOwmNRxCS-CzKMTFuEEwqZEV;zFA76cWfJJCkt~^}LVe53didP?e&s24d zJzQB&r&8`D0)C;2wU?D-&A^UU7AOa!?A?>%L-_e)%fi^lV*F$;NxmmWvp6 zmv=mymfX(q)Mq$EYiyH+=c%STb2dHj$(Vhj^J-fN_?RRt+*PO_%YC_6ZqVMY>!Fa4 zWC3u@<)%pEWOnXcS^Jpi>YIMni{$rQ_GaX=?YD|9iVSkn&HUcrl%4wh#Xe`#F6ZXf zzB!__58YY_zu0~jn#d~Jz`c*d035%K0n|Mw?Id~nD|?Iy&~Y#e7}iq5$HbTcPH&H% zW44cD+b6{AW+bAO}{N^{TsO{c>&29ZW%(qNRphr%coDNUZ_;#kbaU^0u- zD8-y?7)C3#T1b&#WrfgEFAC)`3oDJ0sKrAmWCJ&qe&V6jv9QBTDq332N0H}XgD__4 zs31rJHY$x;x?7xbb|D*$K`;FzMR~-@MyD}Ks}(4VIoMDpT-vTgDdb>dAV}#Mm@>@H zPGvH&QZJOk$Ib@Rq0$gl$}}6eHt~cS#Y>b5|EVs*gi$&pkzbu6k7F3&E#ONg3K0bW zf-y)m1S8R?FhnQu(V3(>5DfXBU1k4cY>Y-{A|zpqnRri~B8(GMqGL3KPUdDpB$en8 z$z2$Yh7ry~m~;pwsY!=1=D!-@zhVNTQ8AK1=~U`Z#(6$)APpwafYLBA#^(4?0w16u z1U?)B!VpFy+J_EqCectLA04AIF_N_am3$rpAy@%$F_;iex`aXYDheUkpL{?VqmxXH zLQGPWpi~<9V)U0w@SiD(Fi|RlzzApvMmP{$Oh*aI06sdEzz1m9UzA3u1X+BJkx3u| z8WScQIA>IZWLA_(4mb?J6Ukasgg`@>7!_hlE6m~1FJJ;h5dI`#7)k8Yq6p!Dk;sn1 zgfIbmLMSPYF_dgHj6oy3hmOHajARRp!T6UiF;ttvhZBXC-@s&0t(lkuS1wjh)&=G!Z1oQ zH4}zN$}mYd2xOsoNcjbr;1UuL0@`0P7Gf|-mSO%SW0@#SP>_y64ERqMX4fC$4Oa2WWp$no9lC)Zi5mMhr|2KxANveH#HD5kVJx z1%ij569fYv5@;B(2FXA$OpIet;$f03%ACLBKTrUH%phI@XnzrA{KS#pFap7}zsMrQ z!cPZS|0jsgK>-9K^R2{hi-Q6{h%q3H60rry(utJ^&_IDBSPKO`43P%-Fr1hz5X>O9 zec)n*=t6J_=uQcjK%g2CAp>QS;}eAOzbzgFdWU%=hN#q^HR88fK?xSY= zMDwEzPzebK0zM{DK?p%emYM4nf63xMr%Av_Ea~84I3Tg_`;1Eh9cOEF6oIe0=h*1JY z-9K&izY+y*AzlK;fxor!~P@fRETt0|s1tR$v3@*QrU>*oCjNm#@ zqEN6zBEAHK%+CP%9kO6eMC#puJ4u}>;3LNjgS4Na14E-Iu|$DZj5r*EoTrhj0MUjD5+aSfxSqv07fgaEZKq}Nr=-p4qnF~uDIq< zjugRQlq9vp5E!FK7yqTLLFqKYS_cFslL};sC5lP=%f(dES_fj1mSEt(zhD4ZWRYSE ztoeSW=dTh4_7udIpdkKy7#2tf zJ2z7j(HVvi(v$?2KqQ0(e5CuqC`;;U!4UT|S^k5>fRPkWFbu{T(j)04gav%0jD%rw z^ME4ApTkGuU2_U2PFhL9FkmFzOWsbyVEs#U7HDHgtv!m6J8{7G(}4dq0?dGjp@Sl1 z&;=71DeGYvEEq^igA^ywU@Bp8I9HBfFb9*ui3av8Bw;e>f+>$qLBTe#Of)}WB)gdUbFuxOeiLkveka<`8~`IHsceDhn4jKv{_2)sI=R?_IzdV_ zc&=^{EJFhuKH@`Q4E%5A@D7k?B*X$M0g|3H8uix-cD_rb(GU_4fxewe^fZkI<_)4s zVC(j;WBwCjU}-_}77Z+jNC$!yED;F63_@}Y=m$w%5Eu^r49~d`1F16K0Q@pI9R?sx z(0UF%iOQg0+#@0-oeEN%C`$!@2s9K#H%<&E6wJ#+Z-Ew%)O@3$X(7ip=m3b9&@j?N zFxq^E|7R!%+X~WwplKnsUl>XwwNMyXLlLtXOduq`10W@=E9U+|10*Ez#Tdu|qGiDN z{ipAM>lkxcMR+j-xR@kMBU=>=qg2LvqA-HMqyxdgMy7%OJTcOWqGzWCMrZI(aGF#E z)j}DX2o=)75G^W-X)+kPu%?>ydfoq*Wv8^78ut+odv}kc?hgC7=^&3#2DiMt?q)si F{{tyu;7_DISPATCH) - QUERY ATTACHED VDA FOR SCREEN SIZE (VIA _VDADISP) - INITIALIZE ALL WORKING VARIABLES AND EMULATOR STATE - RETURN (A=STATUS) + + +============== +DSKY Functions +============== + +RESET ($30): + B=Function A=Result + +STAT ($31): + B=Function A=Result / Bytes Pending + + A=Number of characters waiting or error code if negative + +GETKEY ($32): + B=Function A=Result + E=Key Code + + A=DSKY key value or error code if negative + +SHOWHEX ($33): + B=Function A=Result + DE:HL=Value (32-bit) + + Display value of DE:HL in hex on display. It is not + possible to show decimal points. + +SHOWSEG ($34): + B=Function A=Result + HL=Buffer (raw segment encoded) + + Display raw segment values. Each byte represents one + character. Each segment of the character is represented + by a bit. The buffer must be located in high memory. + The segments are encoded as shown below: + + +--01--+ + 20 02 + +--40--+ + 10 04 + +--08--+ 80 + +KEYLEDS ($35): + B=Function A=Result + HL=Buffer (LED bitmap) + + Light the LEDs for the keypad keys according to the + bitmap contained in the buffer pointed to by HL. The buffer + must be located in high memory. + + At this time, the bitmap is specific to the DSKYNG hardware. + This function is ignored by the original DSKY. + +STATLED ($36): + B=Function A=Result + D=LED Number + E=LED State (0/1) + + Set or clear the status LED specified in D. The state of + the LED is contained in E. If E=0, the LED will be turned + off. If E=1, the LED will be turned on. + +BEEP ($37): + B=Function A=Result + + Beep the onboard speaker of the DSKY. Only the DSKYNG hardware + has a speaker. This function will be ignored by the original + DSKY. + +DEVICE ($38): + B=Function A=Result + D=Device Type + E=Device Number + C=Device Attributes + H=Device Mode + L=Base I/O Adr + + Returns device information for the DSKY unit. The Status (A) is a + standard HBIOS result code. Device Attribute (C) values are not yet + defined. Device Type (D) indicates the specific hardware driver that + handles the specified character unit. Values are listed at the start + of this section. Device Number (E) indicates the physical device + number assigned per driver which is always 0 for DSKY. + + Device Mode (H) is used to indicate the variant of the chip or circuit + that is used by the specified unit. The Device I/O Base Address (L) + indicates the starting port address of the hardware interface that is + servicing the specified unit. Both of these values are considered + driver specific. Refer to the associated hardware driver for the + values used. diff --git a/Source/HBIOS/Config/MBC_std.asm b/Source/HBIOS/Config/MBC_std.asm index 3691a06a..acb01161 100644 --- a/Source/HBIOS/Config/MBC_std.asm +++ b/Source/HBIOS/Config/MBC_std.asm @@ -42,8 +42,9 @@ RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ; MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM ; -DSKYENABLE .SET FALSE ; ENABLES DSKY -DSKYMODE .SET DSKYMODE_NG ; DSKY VERSION: DSKYMODE_[V1|NG] +DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY +ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259) ; UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 ;UARTCFG .SET UARTCFG | SER_RTS diff --git a/Source/HBIOS/Config/SBC_max.asm b/Source/HBIOS/Config/SBC_max.asm index e682b1c0..f2ff533d 100644 --- a/Source/HBIOS/Config/SBC_max.asm +++ b/Source/HBIOS/Config/SBC_max.asm @@ -39,6 +39,8 @@ FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES ; DSKYENABLE .SET TRUE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE) +ICMENABLE .SET TRUE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259) ; DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 2528e4d4..e9bbc521 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -108,10 +108,13 @@ LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC] LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 8d670220..db2d5ebd 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -73,10 +73,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 3582161d..07a55cc2 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -79,10 +79,13 @@ LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|RTC] LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index f65b6f92..73f2b5f9 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -81,10 +81,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU N8_PPI0 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index 09d330cc..8ec96877 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.asm @@ -79,10 +79,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU RPH_PPI0 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 36158a10..0dde69e6 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -73,10 +73,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_z80retro.asm b/Source/HBIOS/cfg_z80retro.asm index dae8f9b2..93e3bc08 100644 --- a/Source/HBIOS/cfg_z80retro.asm +++ b/Source/HBIOS/cfg_z80retro.asm @@ -76,10 +76,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU $00 ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 635ffc88..527bf5ff 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -65,10 +65,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 5a224502..1ca49564 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -76,10 +76,13 @@ LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC] LEDPORT .EQU RTCIO ; STATUS LED PORT ADDRESS LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED ; -DSKYENABLE .EQU FALSE ; ENABLES DSKY -DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG] -DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI -DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ) +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) ; BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index a2a37042..5bf6fdca 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -31,12 +31,7 @@ BUFLEN .EQU 40 ; INPUT LINE LENGTH JP DSKY_ENTRY JP UART_ENTRY ; -#IF DSKYENABLE - #DEFINE USEDELAY -ENA_XM .EQU FALSE ; NO ROOM FOR BOTH DSKY+XMODEM -#ELSE -ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE -#ENDIF +ENA_XM .EQU TRUE ; INCLUDE XMODEM ; ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION ; @@ -149,10 +144,7 @@ SERIALCMDLOOP: ;_____________________________________________________________________________ ; INITIALIZE: - ;LD A,$C3 ; JP OPCODE - ;LD (0),A ; STORE AT $0000 - ;LD (1),HL ; STORE AT $0001 - +; #IF (BIOS == BIOS_UNA) ; INSTALL UNA INVOCATION VECTOR FOR RST 08 LD A,$C3 ; JP INSTRUCTION @@ -160,14 +152,6 @@ INITIALIZE: LD HL,($FFFE) ; UNA ENTRY VECTOR LD (9),HL ; STORE AT 0x0009 #ENDIF - -#IF DSKYENABLE - LD B,BF_SYSGET ; HBIOS FUNC=GET SYS INFO - LD C,BF_SYSGET_CPUINFO ; HBIOS SUBFUNC=GET CPU INFO - CALL $FFF0 ; CALL HBIOS - LD A,L ; PUT SPEED IN MHZ IN ACCUM - CALL DELAY_INIT -#ENDIF ; RET ; @@ -1278,14 +1262,6 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):" ; #IF DSKYENABLE ; -#DEFINE DSKY_KBD - #IF (DSKYMODE == DSKYMODE_V1) -#INCLUDE "dsky.asm" - #ENDIF - #IF (DSKYMODE == DSKYMODE_NG) -#INCLUDE "dskyng.asm" - #ENDIF -; KY_PR .EQU KY_FW ; USE [FW] FOR [PR] (PORT READ) KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE) ; @@ -1295,8 +1271,9 @@ KY_PW .EQU KY_BK ; USE [BW] FOR [PW] (PORT WRITE) ;_____________________________________________________________________________ ; DSKY_ENTRY: + ; SHOULD WE DO SOMETHING HERE TO CONFIRM THAT A DSKY + ; IS ACTUALLY OPERATING??? LD SP,MON_STACK ; SET THE STACK POINTER - ;EI ; INTS OK NOW LD HL,DSKY_ENTRY ; RESTART ADDRESS CALL INITIALIZE ; @@ -1305,12 +1282,7 @@ DSKY_ENTRY: ; START UP THE SYSTEM WITH THE FRONT PANEL INTERFACE ;_____________________________________________________________________________ ; - CALL DSKY_PREINIT ; INITIALIZE DSKY - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_BEEP - #ENDIF - ; ;__COMMAND_PARSE______________________________________________________________ ; @@ -1320,17 +1292,12 @@ DSKY_ENTRY: FRONTPANELLOOP: LD HL,CPUUP ; SET POINTER TO CPU UP MSG CALL DSKY_SHOW ; DISPLAY UNENCODED - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTCMDKEYS CALL DSKY_L1ON - #ENDIF - - CALL KB_GET ; GET KEY FROM KB - - #IF (DSKYMODE == DSKYMODE_NG) + CALL KB_GET ; GET KEY FROM DSKY + PUSH AF CALL DSKY_L1OFF - #ENDIF + POP AF FRONTPANELLOOP1: CP KY_PR ; IS PORT READ? @@ -1366,11 +1333,7 @@ DOBOOT: ;_____________________________________________________________________________ ; DOPORTREAD: - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTNUMKEYS - #ENDIF - CALL GETPORT ; GET PORT INTO A PORTREADLOOP: LD C,A ; STORE PORT IN "C" @@ -1393,11 +1356,7 @@ PORTREADGETKEY: ;_____________________________________________________________________________ ; DOPORTWRITE: - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTNUMKEYS - #ENDIF - CALL GETPORT ; GET PORT INTO A PORTWRITELOOP: LD L,A ; SAVE PORT NUM @@ -1419,18 +1378,10 @@ PORTWRITEGETKEY: ;_____________________________________________________________________________ ; DOGO: - -#IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTNUMKEYS - #ENDIF - CALL GETADDR ; GET ADDRESS INTO HL - - #IF (DSKYMODE == DSKYMODE_NG) + PUSH HL CALL DSKY_HIGHLIGHTKEYSOFF - #ENDIF - - PUSH HL ; EXEC ADR TO TOS LD HL,GOTO ; POINT TO "GO" MSG CALL INITBUF POP HL @@ -1450,11 +1401,7 @@ DOGO: ;_____________________________________________________________________________ ; DOEXAMINE: - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTNUMKEYS - #ENDIF - CALL GETADDR ; GET ADDRESS INTO HL EXAMINELOOP: LD DE,DISPLAYBUF+0 @@ -1470,11 +1417,7 @@ EXAMINELOOP: LD A,(HL) ; GET VALUE FROM ADDRESS IN HL CALL PUTVALUE CALL ENCDISPLAY ; DISPLAY BUFFER ON DISPLAYS - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTFWDKEYS - #ENDIF - EXAMINEGETKEY: CALL KB_GET ; GET KEY FROM KB CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP @@ -1492,11 +1435,7 @@ EXAMINEFW: ;_____________________________________________________________________________ ; DODEPOSIT: - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTNUMKEYS - #ENDIF - CALL GETADDR ; GET ADDRESS INTO HL DEPOSITLOOP: LD DE,DISPLAYBUF+0 @@ -1513,11 +1452,7 @@ DEPOSITLOOP: LD DE,DISPLAYBUF+6 ; DISPLAY WRITTEN MEM VALUE CALL PUTVALUE ; ... WITHOUT DP'S CALL ENCDISPLAY ; DISPLAY BUFFER CONTENTS - - #IF (DSKYMODE == DSKYMODE_NG) CALL DSKY_HIGHLIGHTFWDKEYS - #ENDIF - DEPOSITGETKEY: CALL KB_GET ; GET KEY FROM KB CP KY_EN ; [EN] PRESSED, INC ADDRESS AND LOOP @@ -1684,6 +1619,7 @@ KB_GET: PUSH DE PUSH HL ; SAVE HL CALL DSKY_GETKEY ; GET A KEY + LD A,E ; PUT KEY CODE IN A CP KY_EN ; ENTER? JR Z,KB_GET1 ; IF YES, RET TO CALLER CP $10 ; HEX DIGIT? @@ -1710,7 +1646,7 @@ INITBUF: ; ;__ENCDISPLAY_________________________________________________________________ ; -; DISPLAY CONTENTS OF DISPLAYBUF DECODED PER SEGDECODE TABLE +; DISPLAY CONTENTS OF DISPLAYBUF ENCODED PER SEGDECODE TABLE ;_____________________________________________________________________________ ; ENCDISPLAY: @@ -1720,7 +1656,7 @@ ENCDISPLAY: ; ;__ENCBUF_____________________________________________________________________ ; -; DISPLAY CONTENTS OF BUFFER AT HL DECODED PER SEGDECODE TABLE +; DISPLAY CONTENTS OF BUFFER AT HL ENCODED PER SEGDECODE TABLE ;_____________________________________________________________________________ ; ENCBUF: @@ -1736,7 +1672,6 @@ ENCBUF1: INC HL ; BUMP TO NEXT BYTE FOR NEXT PASS PUSH AF ; SAVE IT AND $80 ; ISOLATE HI BIT (DP) - ;XOR $80 ; FLIP IT LD C,A ; SAVE IN C POP AF ; RECOVER ORIGINAL AND $7F ; REMOVE HI BIT (DP) @@ -1757,36 +1692,62 @@ ENCBUF1: POP HL ; RESTORE HL RET ; -#IF (DSKYMODE == DSKYMODE_V1) +;_____________________________________________________________________________ ; -CPUUP .DB $04,$4B,$6E,$3B,$00,$3B,$6E,$04 ; "-CPU UP-" (RAW SEG) -MSGBOOT .DB $7F,$1D,$1D,$0F,$A0,$00,$00,$00 ; "Boot! " (RAW SEG) -ADDR .DB $17,$18,$19,$10,$00,$00,$00,$00 ; "Adr 0000" (ENCODED) -PORT .DB $13,$14,$15,$16,$10,$10,$00,$00 ; "Port 00" (ENCODED) -GOTO .DB $1A,$14,$10,$10,$00,$00,$00,$00 ; "Go 0000" (ENCODED) +; DSKY INTERFACE ROUTINES +;_____________________________________________________________________________ ; -;_HEX_7_SEG_DECODE_TABLE______________________________________________________ +DSKY_GETKEY: + LD B,BF_DSKYGETKEY + RST 08 + RET ; -; SET BIT 7 TO DISPLAY W/ DECIMAL POINT -;_____________________________________________________________________________ +DSKY_SHOW: + LD B,BF_DSKYSHOWSEG + RST 08 + RET ; -SEGDECODE: +DSKY_BEEP: + LD B,BF_DSKYBEEP + RST 08 + RET ; - ; POS $00 $01 $02 $03 $04 $05 $06 $07 - ; GLYPH '0' '1' '2' '3' '4' '5' '6' '7' - .DB $7B, $30, $6D, $75, $36, $57, $5F, $70 +DSKY_L1ON: + LD E,1 + JR DSKY_STATLED +DSKY_L1OFF: + LD E,0 +DSKY_STATLED: + LD B,BF_DSKYSTATLED + LD D,0 + RST 08 + RET ; - ; POS $08 $09 $0A $0B $0C $0D $0E $0F - ; GLYPH '8' '9' 'A' 'B' 'C' 'D' 'E' 'F' - .DB $7F, $77, $7E, $1F, $4B, $3D, $4F, $4E +DSKY_PUTLED: + LD B,BF_DSKYKEYLEDS + RST 08 + RET ; - ; POS $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A - ; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G' - .DB $00, $04, $00, $6E, $1D, $0C, $0F, $7E, $3D, $0C, $5B +DSKY_HIGHLIGHTFWDKEYS: + LD HL,DSKY_HIGHLIGHTFWDKEYLEDS + JR DSKY_PUTLED ; -#ENDIF +DSKY_HIGHLIGHTCMDKEYS: + LD HL,DSKY_HIGHLIGHTCMDKEYLEDS + JR DSKY_PUTLED ; -#IF (DSKYMODE == DSKYMODE_NG) +DSKY_HIGHLIGHTNUMKEYS: + LD HL,DSKY_HIGHLIGHTNUMKEYLEDS + JR DSKY_PUTLED +; +DSKY_HIGHLIGHTKEYSOFF: + LD HL,DSKY_HIGHLIGHTKEYLEDSOFF + JR DSKY_PUTLED +; +DSKY_HIGHLIGHTFWDKEYLEDS .DB $00,$00,$00,$30,$00,$00,$00,$00 +DSKY_HIGHLIGHTCMDKEYLEDS .DB $20,$00,$20,$3F,$00,$00,$00,$00 +DSKY_HIGHLIGHTNUMKEYLEDS .DB $1F,$3F,$1F,$30,$00,$00,$00,$00 +DSKY_HIGHLIGHTKEYLEDSOFF .DB $00,$00,$00,$00,$00,$00,$00,$00 ; CPUUP .DB $40,$39,$73,$3E,$00,$3E,$73,$40 ; "-CPU UP-" (RAW SEG) MSGBOOT .DB $7F,$5C,$5C,$78,$82,$00,$00,$00 ; "Boot! " (RAW SEG) @@ -1813,31 +1774,8 @@ SEGDECODE: ; GLYPH ' ' '-' '.' 'P' 'o' 'r' 't' 'A' 'd' 'r' 'G' .DB $00, $40, $00, $73, $5C, $50, $78, $77, $5E, $50, $3D ; - -DSKY_HIGHLIGHTFWDKEYS: - CALL DSKY_PUTLED - .DB $00,$00,$00,$30,$00,$00,$00,$00 - RET - -DSKY_HIGHLIGHTCMDKEYS: - - CALL DSKY_PUTLED - .DB $20,$00,$20,$3F,$00,$00,$00,$00 - RET - -DSKY_HIGHLIGHTNUMKEYS: - CALL DSKY_PUTLED - .DB $1F,$3F,$1F,$30,$00,$00,$00,$00 - RET - -DSKY_HIGHLIGHTKEYSOFF: - - CALL DSKY_PUTLED - .DB $00,$00,$00,$00,$00,$00,$00,$00 - RET -#ENDIF -; DISPLAYBUF: .FILL 8,0 +DSKY_BUF .FILL 8,0 ; #ELSE ; @@ -1949,130 +1887,6 @@ ADDHLA: INC H RET ; -; DELAY 16US (CPU SPEED COMPENSATED) INCUDING CALL/RET INVOCATION -; REGISTER A AND FLAGS DESTROYED -; NO COMPENSATION FOR Z180 MEMORY WAIT STATES -; THERE IS AN OVERHEAD OF 3TS PER INVOCATION -; IMPACT OF OVERHEAD DIMINISHES AS CPU SPEED INCREASES -; -; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US + 3TS DELAY -; NOTE: CPUSCL MUST BE >= 1! -; -; EXAMPLE: 8MHZ CPU (DELAY GOAL IS 16US) -; LOOP = ((6 * 16) - 5) = 91TS -; TOTAL COST = (91 + 40) = 131TS -; ACTUAL DELAY = (131 / 8) = 16.375US -; - ; --- TOTAL COST = (LOOP COST + 40) TS -----------------+ -DELAY: ; 17TS (FROM INVOKING CALL) | - LD A,(CPUSCL) ; 13TS | -; | -DELAY1: ; | - ; --- LOOP = ((CPUSCL * 16) - 5) TS ------------+ | - DEC A ; 4TS | | - #IF (BIOS == BIOS_WBW) ; | | - #IF (CPUFAM == CPU_Z180) ; | | - OR A ; +4TS FOR Z180 | | - #ENDIF ; | | - #ENDIF ; | | - JR NZ,DELAY1 ; 12TS (NZ) / 7TS (Z) | | - ; ----------------------------------------------+ | -; | - RET ; 10TS (RETURN) | - ;-------------------------------------------------------+ -; -; DELAY 16US * DE (CPU SPEED COMPENSATED) -; REGISTER DE, A, AND FLAGS DESTROYED -; NO COMPENSATION FOR Z180 MEMORY WAIT STATES -; THERE IS A 27TS OVERHEAD FOR CALL/RET PER INVOCATION -; IMPACT OF OVERHEAD DIMINISHES AS DE AND/OR CPU SPEED INCREASES -; -; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US OUTER LOOP COST -; NOTE: CPUSCL MUST BE > 0! -; -; EXAMPLE: 8MHZ CPU, DE=6250 (DELAY GOAL IS .1 SEC OR 100,000US) -; INNER LOOP = ((16 * 6) - 5) = 91TS -; OUTER LOOP = ((91 + 37) * 6250) = 800,000TS -; ACTUAL DELAY = ((800,000 + 27) / 8) = 100,003US -; - ; --- TOTAL COST = (OUTER LOOP + 27) TS ------------------------+ -VDELAY: ; 17TS (FROM INVOKING CALL) | -; | - ; --- OUTER LOOP = ((INNER LOOP + 37) * DE) TS ---------+ | - LD A,(CPUSCL) ; 13TS | | -; | | -VDELAY1: ; | | - ; --- INNER LOOP = ((CPUSCL * 16) - 5) TS ------+ | | - #IF (BIOS == BIOS_WBW) ; | | | - #IF (CPUFAM == CPU_Z180) ; | | | - OR A ; +4TS FOR Z180 | | | - #ENDIF ; | | | - #ENDIF ; | | | - DEC A ; 4TS | | | - JR NZ,VDELAY1 ; 12TS (NZ) / 7TS (Z) | | | - ; ----------------------------------------------+ | | -; | | - DEC DE ; 6TS | | - #IF (BIOS == BIOS_WBW) ; | | | - #IF (CPUFAM == CPU_Z180) ; | | - OR A ; +4TS FOR Z180 | | - #ENDIF ; | | - #ENDIF ; | | - LD A,D ; 4TS | | - OR E ; 4TS | | - JP NZ,VDELAY ; 10TS | | - ;-------------------------------------------------------+ | -; | - RET ; 10TS (FINAL RETURN) | - ;---------------------------------------------------------------+ -; -; DELAY ABOUT 0.5 SECONDS -; 500000US / 16US = 31250 -; -LDELAY: - PUSH AF - PUSH DE - LD DE,31250 - CALL VDELAY - POP DE - POP AF - RET -; -; INITIALIZE DELAY SCALER BASED ON OPERATING CPU SPEED -; ENTER WITH A = CPU SPEED IN MHZ -; -DELAY_INIT: - CP 3 ; TEST FOR <= 2 (SPECIAL HANDLING) - JR C,DELAY_INIT1 ; IF <= 2, SPECIAL PROCESSING - SUB 2 ; ADJUST AS REQUIRED BY DELAY FUNCTIONS - JR DELAY_INIT2 ; AND CONTINUE -DELAY_INIT1: - LD A,1 ; USE THE MIN VALUE OF 1 -DELAY_INIT2: - LD (CPUSCL),A ; UPDATE CPU SCALER VALUE - RET - - #IF (CPUMHZ < 3) -CPUSCL .DB 1 ; CPU SCALER MUST BE > 0 - #ELSE -CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ - #ENDIF -; -; SHORT DELAY FUNCTIONS. NO CLOCK SPEED COMPENSATION, SO THEY -; WILL RUN LONGER ON SLOWER SYSTEMS. THE NUMBER INDICATES THE -; NUMBER OF CALL/RET INVOCATIONS. A SINGLE CALL/RET IS -; 27 T-STATES ON A Z80, 25 T-STATES ON A Z180 -; -; ; Z80 Z180 -; ; ---- ---- -DLY64: CALL DLY32 ; 1728 1600 -DLY32: CALL DLY16 ; 864 800 -DLY16: CALL DLY8 ; 432 400 -DLY8: CALL DLY4 ; 216 200 -DLY4: CALL DLY2 ; 108 100 -DLY2: CALL DLY1 ; 54 50 -DLY1: RET ; 27 25 -; ; ; .FILL 16,0 ; SET MINIMUM STACK DEPTH diff --git a/Source/HBIOS/dsky.asm b/Source/HBIOS/dsky.asm deleted file mode 100644 index c0da58e7..00000000 --- a/Source/HBIOS/dsky.asm +++ /dev/null @@ -1,386 +0,0 @@ -; -;================================================================================================== -; DSKY (DISPLAY AND KEYBOARD) ROUTINES -;================================================================================================== -; -; THE DSKY MAY COINCIDE ON THE SAME PPI BUS AS A PPISD. IT MAY NOT -; SHARE A PPI BUS WITH A PPIDE. SEE PPI_BUS.TXT FOR MORE INFORMATION. -; -; LED SEGMENTS (BIT VALUES) -; -; +--40--+ -; 02 20 -; +--04--+ -; 08 10 -; +--01--+ 80 -; -; DSKY SCAN CODES ARE ONE BYTE: CCRRRRRR -; BITS 7-6 IDENTFY THE COLUMN OF THE KEY PRESSED -; BITS 5-0 ARE A BITMAP, WITH A BIT ON TO INDICATE ROW OF KEY PRESSED -; -; ____PC0________PC1________PC2________PC3____ -; PB5 | $20 [D] $60 [E] $A0 [F] $E0 [BO] -; PB4 | $10 [A] $50 [B] $90 [C] $D0 [GO] -; PB3 | $08 [7] $48 [8] $88 [9] $C8 [EX] -; PB2 | $04 [4] $44 [5] $84 [6] $C4 [DE] -; PB1 | $02 [1] $42 [2] $82 [3] $C2 [EN] -; PB0 | $01 [FW] $41 [0] $81 [BK] $C1 [CL] -; -; -PPIA .EQU DSKYPPIBASE + 0 ; PORT A -PPIB .EQU DSKYPPIBASE + 1 ; PORT B -PPIC .EQU DSKYPPIBASE + 2 ; PORT C -PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT -; -;__DSKY_INIT_________________________________________________________________________________________ -; -; CONFIGURE PARALLEL PORT AND CLEAR KEYPAD BUFFER -;____________________________________________________________________________________________________ -; -DSKY_PREINIT: - OR $FF ; SIGNAL TO WAIT FOR KEY RELEASE - LD (DSKY_KEYBUF),A ; SET IT -; - ; PPI PORT B IS NORMALLY SET TO INPUT, BUT HERE WE - ; TEMPORARILY SET IT TO OUTPUT. WHILE IN OUTPUT MODE, WE - ; WRITE A VALUE OF $FF WHICH WILL BE PERSISTED BY THE PPI - ; CHIP BUS HOLD CIRCUIT IF THERE IS NO DSKY PRESENT. SO, - ; WE CAN SUBSEQUENTLY TEST FOR PPIB=$FF TO SEE IF THERE IS - ; NO DSKY AND PREVENT PROBLEMS WITH PHANTOM DSKY KEY PRESSES. - ; IF A DSKY IS PRESENT, IT WILL SIMPLY OVERPOWER THE PPI - ; BUS HOLD CIRCUIT. - LD A,$80 ; PA OUT, PB OUT, PC OUT - OUT (PPIX),A - LD A,$FF ; SET PPIB=$FF, BUS HOLD - OUT (PPIB),A -; - LD A,$82 ; PA OUT, PB IN, PC OUT - OUT (PPIX),A -; - ;IN A,(PPIB) ; *DEBUG* - ;CALL PRTHEXBYTE ; *DEBUG* -; - IN A,(PPIB) ; READ PPIB - XOR $FF ; INVERT RESULT - LD (DSKY_PRESENT),A ; SAVE AS PRESENT FLAG -; -DSKY_RESET: - PUSH AF -; - LD A,$70 ; PPISD AND 7218 INACTIVE - OUT (PPIC),A -; - POP AF - RET -; -#IFDEF HBIOS -; -DSKY_INIT: - CALL NEWLINE ; FORMATTING - PRTS("DSKY:$") ; FORMATTING -; - PRTS(" IO=0x$") ; FORMATTING - LD A,DSKYPPIBASE ; GET BASE PORT - CALL PRTHEXBYTE ; PRINT BASE PORT - PRTS(" MODE=$") ; FORMATTING - PRTS("V1$") ; PRINT DSKY TYPE -; - LD A,(DSKY_PRESENT) ; PRESENT? - OR A ; SET FLAGS - RET NZ ; YES, ALL DONE - PRTS(" NOT PRESENT$") ; NOT PRESENT -; - RET -; -#ENDIF -; -#IFDEF DSKY_KBD -; -KY_0 .EQU $00 -KY_1 .EQU $01 -KY_2 .EQU $02 -KY_3 .EQU $03 -KY_4 .EQU $04 -KY_5 .EQU $05 -KY_6 .EQU $06 -KY_7 .EQU $07 -KY_8 .EQU $08 -KY_9 .EQU $09 -KY_A .EQU $0A -KY_B .EQU $0B -KY_C .EQU $0C -KY_D .EQU $0D -KY_E .EQU $0E -KY_F .EQU $0F -KY_FW .EQU $10 ; FORWARD -KY_BK .EQU $11 ; BACKWARD -KY_CL .EQU $12 ; CLEAR -KY_EN .EQU $13 ; ENTER -KY_DE .EQU $14 ; DEPOSIT -KY_EX .EQU $15 ; EXAMINE -KY_GO .EQU $16 ; GO -KY_BO .EQU $17 ; BOOT -; -;__DSKY_GETKEY_____________________________________________________________________________________ -; -; WAIT FOR A DSKY KEYPRESS AND RETURN -;____________________________________________________________________________________________________ -; -DSKY_GETKEY: - LD A,(DSKY_PRESENT) ; DOES IT EXIST? - OR A ; SET FLAGS - JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT -; - CALL DSKY_STAT ; CHECK STATUS - JR Z,DSKY_GETKEY ; LOOP IF NOTHING READY - LD A,(DSKY_KEYBUF) - LD B,24 ; SIZE OF DECODE TABLE - LD C,0 ; INDEX - LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE -DSKY_GETKEY1: - CP (HL) ; MATCH? - JR Z,DSKY_GETKEY2 ; FOUND, DONE - INC HL - INC C ; BUMP INDEX - DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT -DSKY_GETKEY1A: - LD A,$FF ; NOT FOUND ERR, RETURN $FF - RET -DSKY_GETKEY2: - LD A,$FF ; SET KEY BUF TO $FF - LD (DSKY_KEYBUF),A ; DO IT - ; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND - LD A,C ; RETURN INDEX VALUE - RET -; -;__DSKY_STAT_________________________________________________________________________________________ -; -; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS -;____________________________________________________________________________________________________ -; -DSKY_STAT: - LD A,(DSKY_PRESENT) ; DOES IT EXIST? - OR A ; SET FLAGS - RET Z ; ABORT WITH A=0 IF NOT THERE -; - LD A,(DSKY_KEYBUF) ; GET CURRENT BUF VAL - CP $FF ; $FF MEANS WE ARE WAITING FOR PREV KEY TO BE RELEASED - JR Z,DSKY_STAT1 ; CHECK FOR PREV KEY RELEASE - OR A ; DO WE HAVE A SCAN CODE BUFFERED ALREADY? - RET NZ ; IF SO, WE ARE DONE - JR DSKY_STAT2 ; OTHERWISE, DO KEY CHECK - -DSKY_STAT1: - ; WAITING FOR PREVIOUS KEY RELEASE - CALL DSKY_KEY ; SCAN - JR Z,DSKY_STAT2 ; IF ZERO, PREV KEY RELEASED, CONTINUE - XOR A ; SIGNAL NO KEY PRESSED - RET ; AND DONE - -DSKY_STAT2: - CALL DSKY_KEY ; SCAN - LD (DSKY_KEYBUF),A ; SAVE RESULT - RET ; RETURN WITH ZF SET APPROPRIATELY -; -;__DSKY_KEY_______________________________________________________________________________________ -; -; CHECK FOR KEY PRESS W/ DEBOUNCE -;____________________________________________________________________________________________________ -; -DSKY_KEY: - ; IF PPIB VALUE IS $FF, THERE IS NO DSKY, SEE DSKY_INIT - IN A,(PPIB) - INC A - RET Z - - CALL DSKY_SCAN ; INITIAL KEY PRESS SCAN - LD E,A ; SAVE INITIAL SCAN VALUE -DSKY_KEY1: - ; MAX BOUNCE TIME FOR OMRON B3F IS 3MS - PUSH DE ; SAVE DE - LD DE,300 ; ~3MS DELAY - CALL VDELAY ; DO IT - CALL DSKY_SCAN ; REPEAT SCAN - POP DE ; RESTORE DE - RET Z ; IF NOTHING PRESSED, DONE - CP E ; SAME? - JR DSKY_KEY2 ; YES, READY TO RETURN - LD E,A ; OTHERWISE, SAVE NEW SCAN VAL - JR DSKY_KEY1 ; AND LOOP UNTIL STABLE VALUE -DSKY_KEY2: - OR A ; SET FLAGS BASED ON VALUE - RET ; AND DONE -; -;__DSKY_SCAN______________________________________________________________________________________ -; -; SCAN KEYPAD AND RETURN RAW SCAN CODE (RETURNS ZERO IF NO KEY PRESSED) -;____________________________________________________________________________________________________ -; -DSKY_SCAN: - LD B,4 ; 4 COLUMNS - LD C,$01 ; FIRST COLUMN - LD E,0 ; INITIAL COL ID -DSKY_SCAN1: - LD A,C ; COL TO A - OR $70 ; KEEP PPISD AND 7218 INACTIVE - OUT (PPIC),A ; ACTIVATE COL - IN A,(PPIB) ; READ ROW BITS - AND $3F ; MASK, WE ONLY HAVE 6 ROWS, OTHERS UNDEFINED - JR NZ,DSKY_SCAN2 ; IF NOT ZERO, GOT SOMETHING - RLC C ; NEXT COL - INC E ; BUMP COL ID - DJNZ DSKY_SCAN1 ; LOOP THROUGH ALL COLS - XOR A ; NOTHING FOUND, RETURN ZERO - JP DSKY_RESET ; RETURN VIA RESET -DSKY_SCAN2: - RRC E ; MOVE COL ID - RRC E ; ... TO HIGH BITS 6 & 7 - OR E ; COMBINE WITH ROW - JP DSKY_RESET ; RETURN VIA RESET -; -;_KEYMAP_TABLE_____________________________________________________________________________________________________________ -; -DSKY_KEYMAP: - ; POS $00 $01 $02 $03 $04 $05 $06 $07 - ; KEY [0] [1] [2] [3] [4] [5] [6] [7] - .DB $41, $02, $42, $82, $04, $44, $84, $08 -; - ; POS $08 $09 $0A $0B $0C $0D $0E $0F - ; KEY [8] [9] [A] [B] [C] [D] [E] [F] - .DB $48, $88, $10, $50, $90, $20, $60, $A0 -; - ; POS $10 $11 $12 $13 $14 $15 $16 $17 - ; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO] - .DB $01, $81, $C1, $C2, $C4, $C8, $D0, $E0 -; -; KBD WORKING STORAGE -; -DSKY_KEYBUF .DB 0 -; -#ENDIF ; DSKY_KBD -; -;================================================================================================== -; CONVERT 32 BIT BINARY TO 8 BYTE HEX SEGMENT DISPLAY -;================================================================================================== -; -; HL: ADR OF 32 BIT BINARY -; DE: ADR OF DEST LED SEGMENT DISPLAY BUFFER (8 BYTES) -; -DSKY_BIN2SEG: - PUSH HL - PUSH DE - LD B,4 ; 4 BYTES OF INPUT - EX DE,HL -DSKY_BIN2SEG1: - LD A,(DE) ; FIRST NIBBLE - SRL A - SRL A - SRL A - SRL A - PUSH HL - LD HL,DSKY_HEXMAP - CALL DSKY_ADDHLA - LD A,(HL) - POP HL - LD (HL),A - INC HL - LD A,(DE) ; SECOND NIBBLE - AND 0FH - PUSH HL - LD HL,DSKY_HEXMAP - CALL DSKY_ADDHLA - LD A,(HL) - POP HL - LD (HL),A - INC HL - INC DE ; NEXT BYTE - DJNZ DSKY_BIN2SEG1 - POP DE - POP HL - RET -; -;================================================================================================== -; DSKY SHOW BUFFER -; HL: ADDRESS OF BUFFER -;================================================================================================== -; -DSKY_SHOW: - ;;PUSH AF ; SAVE 7218 CONTROL BITS - LD A,82H ; SETUP PPI - OUT (PPIX),A - CALL DSKY_COFF - ;;POP AF - LD A,$F0 ; 7218 -> (DATA COMING, NO DECODE) - OUT (PPIA),A - CALL DSKY_STROBEC ; STROBE COMMAND - LD B,DSKY_BUFLEN ; NUMBER OF DIGITS - LD C,PPIA -DSKY_HEXOUT2: - ;OUTI - LD A,(HL) - XOR $80 ; FIX DOT POLARITY - OUT (C),A - INC HL - DEC B - JP Z,DSKY_STROBE ; DO FINAL STROBE AND RETURN - CALL DSKY_STROBE ; STROBE BYTE VALUE - JR DSKY_HEXOUT2 -DSKY_STROBEC: ; COMMAND STROBE - LD A,80H | 30H - JP DSKY_STROBE0 -DSKY_STROBE: ; DATA STROBE - LD A,00H | 30H ; SET WRITE STROBE -DSKY_STROBE0: - OUT (PPIC),A ; OUT TO PORTC - CALL DLY2 ; DELAY -DSKY_COFF: - LD A,40H | 30H ; QUIESCE - OUT (PPIC),A ; OUT TO PORTC -; CALL DSKY_DELAY ; WAIT - RET -; -;================================================================================================== -; UTILTITY FUNCTIONS -;================================================================================================== -; -DSKY_ADDHLA: - ADD A,L - LD L,A - RET NC - INC H - RET -; -;================================================================================================== -; STORAGE -;================================================================================================== -; -; CODES FOR NUMERICS -; HIGH BIT ALWAYS CLEAR TO SUPPRESS DECIMAL POINT -; SET HIGH BIT TO SHOW DECIMAL POINT -; -DSKY_HEXMAP: - .DB $7B ; 0 - .DB $30 ; 1 - .DB $6D ; 2 - .DB $75 ; 3 - .DB $36 ; 4 - .DB $57 ; 5 - .DB $5F ; 6 - .DB $70 ; 7 - .DB $7F ; 8 - .DB $77 ; 9 - .DB $7E ; A - .DB $1F ; B - .DB $4B ; C - .DB $3D ; D - .DB $4F ; E - .DB $4E ; F -; -; SEG DISPLAY WORKING STORAGE -; -DSKY_PRESENT .DB 0 -; -DSKY_BUF .FILL 8,0 -DSKY_BUFLEN .EQU $ - DSKY_BUF -DSKY_HEXBUF .FILL 4,0 -DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index e20cffaf..f89a1663 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -1130,9 +1130,11 @@ FD_RETRY1: FD_START: ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,4 CALL LDHLIYA CALL HB_DSKACTCHS ; SHOW ACTIVITY + #ENDIF #ENDIF ; LD A,(FCD_FDCRDY) @@ -1202,9 +1204,6 @@ FD_RUN1: RET FD_RUNCHK: -;;#IF (DSKYENABLE) -;; CALL FD_DSKY -;;#ENDIF FD_RUNEXIT: LD A,(FST_RC) @@ -1221,23 +1220,6 @@ FD_RUNERR: JP FD_RETRC -;;#IF (DSKYENABLE) -;;FD_DSKY: -;; LD HL,DSKY_HEXBUF -;; LD A,(FCD_C) -;; LD (HL),A -;; INC HL -;; LD A,(FCD_R) -;; LD (HL),A -;; INC HL -;; LD A,(FRB_ST0) -;; LD (HL),A -;; INC HL -;; LD A,(FRB_ST1) -;; LD (HL),A -;; CALL DSKY_HEXOUT -;; RET -;;#ENDIF ; ;=============================================================================== ; FLOPPY DISK CONTROL SERVICES (PHYSICAL DEVICE CONTROL FOR FDC HARDWARE) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 56e50427..e95b6ae8 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -63,7 +63,6 @@ ; - decode.asm ; - encode.asm ; - [xio|mio].asm -; - [dsky.asm|dskyng.asm] ; - unlzsa2s.asm ; ; INCLUDE GENERIC STUFF @@ -1878,6 +1877,35 @@ HB_CPU1: CALL DSRTC_PREINIT #ENDIF ; +#IF (DSKYENABLE) + #IF (ICMENABLE) + CALL ICM_PREINIT + #ENDIF +#ENDIF +; +#IF (DSKYENABLE) + #IF (PKDENABLE) + CALL PKD_PREINIT + #ENDIF +#ENDIF +; +#IF (DSKYENABLE) + LD HL,MSG_HBVER + 5 + LD A,(DSKY_HEXMAP + RMJ) + OR $80 + LD (HL),A + INC HL + LD A,(DSKY_HEXMAP + RMN) + OR $80 + LD (HL),A + INC HL + LD A,(DSKY_HEXMAP + RUP) + LD (HL),A + LD HL,MSG_HBVER + LD B,BF_DSKYSHOWSEG + CALL DSKY_DISPATCH +#ENDIF +; #IF (SKZENABLE) ; ; SET THE SK Z80-512K UART CLK2 DIVIDER AS @@ -2211,22 +2239,6 @@ NOT_REC_M0: #ENDIF CALL CALLLIST ; PROCESS THE PRE-INIT CALL TABLE ; -#IF (DSKYENABLE) - LD HL,MSG_HBVER + 5 - LD A,(DSKY_HEXMAP + RMJ) - OR $80 - LD (HL),A - INC HL - LD A,(DSKY_HEXMAP + RMN) - OR $80 - LD (HL),A - INC HL - LD A,(DSKY_HEXMAP + RUP) - LD (HL),A - LD HL,MSG_HBVER - CALL DSKY_SHOW -#ENDIF -; #IF FALSE ; ; TEST DEBUG *************************************************************************************** @@ -3078,9 +3090,6 @@ HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2) ;================================================================================================== ; HB_PCINITTBL: -#IF (DSKYENABLE) - .DW DSKY_PREINIT -#ENDIF #IF (ASCIENABLE) .DW ASCI_PREINIT #ENDIF @@ -3128,7 +3137,14 @@ HB_INITTBL: .DW CTC_INIT #ENDIF #IF (DSKYENABLE) - .DW DSKY_INIT + #IF (ICMENABLE) + .DW ICM_INIT + #ENDIF +#ENDIF +#IF (DSKYENABLE) + #IF (PKDENABLE) + .DW PKD_INIT + #ENDIF #ENDIF #IF (AY38910ENABLE) .DW AY38910_INIT ; AUDIBLE INDICATOR OF BOOT START @@ -3212,9 +3228,6 @@ HB_INITTBL: #IF (VRCENABLE) .DW VRC_INIT #ENDIF -;#IF (DSKYENABLE) -; .DW DSKY_INIT -;#ENDIF #IF (DMAENABLE) .DW DMA_INIT #ENDIF @@ -3322,8 +3335,8 @@ HB_DISPATCH1: JP C,DIO_DISPATCH CP BF_RTC + $10 ; $20-$2F: REAL TIME CLOCK (RTC) JP C,RTC_DISPATCH - CP BF_EMU + $10 ; $30-$3F: EMULATION - JR C,HB_DISPERR + CP BF_DSKY + $10 ; $30-$3F: DSKY + JP C,DSKY_DISPATCH CP BF_VDA + $10 ; $40-$4F: VIDEO DISPLAY ADAPTER JP C,VDA_DISPATCH CP BF_SND + $08 ; $50-$58: SOUND DRIVERS @@ -3691,6 +3704,7 @@ HB_DSKUNIT .DB 0 ; CURRENT DISK UNIT HB_DSKFUNC .DB 0 ; CURRENT DISK FUNCTION ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) ; ;================================================================================================== ; DSKY DISK ACTIVITY MONITOR @@ -3740,7 +3754,8 @@ HB_DSKACT2: LD (DSKY_BUF+7),A ; SAVE IT HB_DSKACT3: EX DE,HL ; SEG DISPLAY BUF TO HL - CALL DSKY_SHOW ; DISPLAY ON DSKY + LD B,BF_DSKYSHOWSEG + CALL DSKY_DISPATCH POP HL POP DE POP BC @@ -3780,6 +3795,7 @@ HB_DSKACTCHS: LD (DE),A ; ADD TO BUF JR HB_DSKACT2 ; + #ENDIF #ENDIF ; ;================================================================================================== @@ -3815,6 +3831,38 @@ RTC_DISPADR .DW RTC_DISPERR ; RTC DISPATCH ADDRESS RTC_DISPACT .DB 0 ; SET WHEN DISPADR SET ; ;================================================================================================== +; DSKY DEVICE DISPATCHER +;================================================================================================== +; +; ROUTE CALL TO DSKY DRIVER +; B: FUNCTION +; +DSKY_DISPATCH: + PUSH HL ; SAVE INCOMING HL + LD HL,(DSKY_DISPADR) ; + EX (SP),HL + RET +; +DSKY_DISPERR: + SYSCHKERR(ERR_NOHW) + RET +; +; SET DSKY DISPATCH ADDRESS, USED BY DSKY DRIVERS DURING INIT +; BC HAS ADDRESS OF DISPATCH ADDRESS +; WILL ONLY SAVE THE FIRST ADDRESS SET +; +DSKY_SETDISP: + LD (DSKY_DISPADR),BC ; SAVE THE ADDRESS + OR $FF ; FLAG ACTIVE VALUE + LD (DSKY_DISPACT),A ; SAVE IT + RET ; AND DONE +; +; +; +DSKY_DISPADR .DW DSKY_DISPERR ; DSKY DISPATCH ADDRESS +DSKY_DISPACT .DB 0 ; SET WHEN DISPADR SET +; +;================================================================================================== ; VIDEO DISPLAY ADAPTER DEVICE DISPATCHER ;================================================================================================== ; @@ -4216,6 +4264,8 @@ SYS_GET: JP Z,SYS_GETDIOFN CP BF_SYSGET_RTCCNT JP Z,SYS_GETRTCCNT + CP BF_SYSGET_DSKYCNT + JP Z,SYS_GETDSKYCNT CP BF_SYSGET_VDACNT JP Z,SYS_GETVDACNT CP BF_SYSGET_VDAFN @@ -4303,6 +4353,18 @@ SYS_GETRTCCNT1: XOR A ; SIGNALS SUCCESS RET ; +; GET DSKY UNIT COUNT +; +SYS_GETDSKYCNT: + LD E,0 ; ASSUME 0 RTC DEVICES + LD A,(DSKY_DISPACT) ; IS DSKY ACTIVE? + OR A ; SET FLAGS + JR Z,SYS_GETDSKYCNT1 ; IF NONE, DONE + INC E ; SET ONE DEVICE +SYS_GETDSKYCNT1: + XOR A ; SIGNALS SUCCESS + RET +; ; GET VIDEO UNIT COUNT ; SYS_GETVDACNT: @@ -5069,6 +5131,50 @@ HB_IM1PTR .DW HB_IVT ; POINTER FOR NEXT IM1 ENTRY ; #ENDIF ; +#IF (DSKYENABLE) +; +;================================================================================================== +; CONVERT 32 BIT BINARY TO 8 BYTE HEX SEGMENT DISPLAY +;================================================================================================== +; +; HL: ADR OF 32 BIT BINARY +; DE: ADR OF DEST LED SEGMENT DISPLAY BUFFER (8 BYTES) +; +DSKY_BIN2SEG: + PUSH HL + PUSH DE + LD B,4 ; 4 BYTES OF INPUT + EX DE,HL +DSKY_BIN2SEG1: + LD A,(DE) ; FIRST NIBBLE + SRL A + SRL A + SRL A + SRL A + PUSH HL + LD HL,DSKY_HEXMAP + CALL ADDHLA + LD A,(HL) + POP HL + LD (HL),A + INC HL + LD A,(DE) ; SECOND NIBBLE + AND 0FH + PUSH HL + LD HL,DSKY_HEXMAP + CALL ADDHLA + LD A,(HL) + POP HL + LD (HL),A + INC HL + INC DE ; NEXT BYTE + DJNZ DSKY_BIN2SEG1 + POP DE + POP HL + RET +; +#ENDIF +; ; ; #IF (MEMMGR == MM_Z280) @@ -5966,6 +6072,28 @@ Z280_SYSCALL_GO: ; DEVICE DRIVERS ;================================================================================================== ; +#IF (DSKYENABLE) + #IF (ICMENABLE) +ORG_ICM .EQU $ + #INCLUDE "icm.asm" +SIZ_ICM .EQU $ - ORG_ICM + .ECHO "ICM occupies " + .ECHO SIZ_ICM + .ECHO " bytes.\n" + #ENDIF +#ENDIF +; +#IF (DSKYENABLE) + #IF (PKDENABLE) +ORG_PKD .EQU $ + #INCLUDE "pkd.asm" +SIZ_PKD .EQU $ - ORG_PKD + .ECHO "PKD occupies " + .ECHO SIZ_PKD + .ECHO " bytes.\n" + #ENDIF +#ENDIF +; #IF (DSRTCENABLE) ORG_DSRTC .EQU $ #INCLUDE "dsrtc.asm" @@ -6461,16 +6589,6 @@ SIZ_YM2612 .EQU $ - ORG_YM2612 #INCLUDE "mio.asm" #ENDIF ; -#IF (DSKYENABLE) -#DEFINE DSKY_KBD - #IF (DSKYMODE == DSKYMODE_V1) -#INCLUDE "dsky.asm" - #ENDIF - #IF (DSKYMODE == DSKYMODE_NG) -#INCLUDE "dskyng.asm" - #ENDIF -#ENDIF -; ; INCLUDE LZSA2 decompression engine if required. ; #IF ((VGAENABLE | CVDUENABLE | TMSENABLE | GDCENABLE | VRCENABLE) & USELZSA2) @@ -7560,12 +7678,7 @@ STR_CONTINUE .TEXT "\r\nContinue (Y/N)? $" STR_RESTART .TEXT "\r\n\r\n>>> Press hardware reset button to restart system\r\n\r\n$" ; #IF (DSKYENABLE) ; 'H','B','I','O',' ',' ',' ',' ' - #IF (DSKYMODE == DSKYMODE_V1) -MSG_HBVER .DB $3E,$7F,$0A,$7B,$00,$00,$00,$00 ; "HBIO " - #ENDIF - #IF (DSKYMODE == DSKYMODE_NG) MSG_HBVER .DB $76,$7F,$30,$3F,$00,$00,$00,$00 ; "HBIO " - #ENDIF #ENDIF ; HB_APPBNK .DB 0 ; START BANK WHEN RUN IN APP MODE @@ -7628,6 +7741,41 @@ MG014_STATMAPHI: ; #ENDIF ; +#IF (DSKYENABLE) +; +;================================================================================================== +; STORAGE +;================================================================================================== +; +; CODES FOR NUMERICS +; HIGH BIT ALWAYS CLEAR TO SUPPRESS DECIMAL POINT +; SET HIGH BIT TO SHOW DECIMAL POINT +; +DSKY_HEXMAP: + .DB $3F ; 0 + .DB $06 ; 1 + .DB $5B ; 2 + .DB $4F ; 3 + .DB $66 ; 4 + .DB $6D ; 5 + .DB $7D ; 6 + .DB $07 ; 7 + .DB $7F ; 8 + .DB $67 ; 9 + .DB $77 ; A + .DB $7C ; B + .DB $39 ; C + .DB $5E ; D + .DB $79 ; E + .DB $71 ; F +; +DSKY_BUF .FILL 8,0 +DSKY_BUFLEN .EQU $ - DSKY_BUF +DSKY_HEXBUF .FILL 4,0 +DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF +; +#ENDIF +; HB_END .EQU $ ; SLACK .EQU BNKTOP - $ diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 628ccb6e..57e7d749 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -36,7 +36,16 @@ BF_RTCGETALM .EQU BF_RTC + 6 ; GET ALARM BF_RTCSETALM .EQU BF_RTC + 7 ; SET ALARM BF_RTCDEVICE .EQU BF_RTC + 8 ; RTC DEVICE INFO REPORT ; -BF_EMU .EQU $30 ; DEPRECATED +BF_DSKY .EQU $30 +BF_DSKYRESET .EQU BF_DSKY + 0 ; RESET DSKY HARDWARE +BF_DSKYSTAT .EQU BF_DSKY + 1 ; GET KEYPAD STATUS +BF_DSKYGETKEY .EQU BF_DSKY + 2 ; GET KEY FROM KEYPAD +BF_DSKYSHOWHEX .EQU BF_DSKY + 3 ; DISPLAY BINARY VALUE IN HEX +BF_DSKYSHOWSEG .EQU BF_DSKY + 4 ; DISPLAY ENCODED SEGMENT STRING +BF_DSKYKEYLEDS .EQU BF_DSKY + 5 ; SET/CLEAR KEYPAD LEDS +BF_DSKYSTATLED .EQU BF_DSKY + 6 ; SET/CLEAR STATUS LEDS +BF_DSKYBEEP .EQU BF_DSKY + 7 ; BEEP ONBOARD DSKY SPEAKER +BF_DSKYDEVICE .EQU BF_DSKY + 8 ; DSKY DEVICE INFO REPORT ; BF_VDA .EQU $40 BF_VDAINI .EQU BF_VDA + 0 ; INITIALIZE VDU @@ -98,6 +107,7 @@ BF_SYSGET_CIOFN .EQU $01 ; GET CIO UNIT FN/DATA ADR BF_SYSGET_DIOCNT .EQU $10 ; GET DISK UNIT COUNT BF_SYSGET_DIOFN .EQU $11 ; GET DIO UNIT FN/DATA ADR BF_SYSGET_RTCCNT .EQU $20 ; GET RTC UNIT COUNT +BF_SYSGET_DSKYCNT .EQU $30 ; GET DSKY UNIT COUNT BF_SYSGET_VDACNT .EQU $40 ; GET VDA UNIT COUNT BF_SYSGET_VDAFN .EQU $41 ; GET VDA UNIT FN/DATA ADR BF_SYSGET_SNDCNT .EQU $50 ; GET VDA UNIT COUNT @@ -334,6 +344,11 @@ RTCDEV_INT .EQU $30 ; PERIODIC INT TIMER RTCDEV_DS7 .EQU $40 ; DS1307 (I2C) RTCDEV_RP5 .EQU $50 ; RP5C01 ; +; DSKY DEVICE IDS +; +DSKYDEV_ICM .EQU $00 ; Intersil ICM7218 +DSKYDEV_PKD .EQU $10 ; Intel P8279 +; ; VIDEO DEVICE IDS ; VDADEV_VDU .EQU $00 ; ECB VDU - MOTOROLA 6545 @@ -350,6 +365,37 @@ SNDDEV_AY38910 .EQU $10 SNDDEV_BITMODE .EQU $20 SNDDEV_YM2612 .EQU $30 ; +; DSKY KEYS +; +KY_0 .EQU $00 +KY_1 .EQU $01 +KY_2 .EQU $02 +KY_3 .EQU $03 +KY_4 .EQU $04 +KY_5 .EQU $05 +KY_6 .EQU $06 +KY_7 .EQU $07 +KY_8 .EQU $08 +KY_9 .EQU $09 +KY_A .EQU $0A +KY_B .EQU $0B +KY_C .EQU $0C +KY_D .EQU $0D +KY_E .EQU $0E +KY_F .EQU $0F +KY_FW .EQU $10 ; FORWARD +KY_BK .EQU $11 ; BACKWARD +KY_CL .EQU $12 ; CLEAR +KY_EN .EQU $13 ; ENTER +KY_DE .EQU $14 ; DEPOSIT +KY_EX .EQU $15 ; EXAMINE +KY_GO .EQU $16 ; GO +KY_BO .EQU $17 ; BOOT +KY_F4 .EQU $18 ; F4 +KY_F3 .EQU $19 ; F3 +KY_F2 .EQU $1A ; F2 +KY_F1 .EQU $1B ; F1 +; ; HBIOS CONTROL BLOCK OFFSETS ; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES ; IT IS STRONGLY RECOMMENDED THAT YOU DO NOT USE THEM! diff --git a/Source/HBIOS/hdsk.asm b/Source/HBIOS/hdsk.asm index 4076fb78..2349de36 100644 --- a/Source/HBIOS/hdsk.asm +++ b/Source/HBIOS/hdsk.asm @@ -234,9 +234,11 @@ HDSK_RW0: LD (HDSK_RC),A ; CLEAR RETURN CODE ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,HDSK_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; CONVERT LBA HHHH:LLLL (4 BYTES) diff --git a/Source/HBIOS/icm.asm b/Source/HBIOS/icm.asm new file mode 100644 index 00000000..8a7e620b --- /dev/null +++ b/Source/HBIOS/icm.asm @@ -0,0 +1,354 @@ +; +;================================================================================================== +; DSKY V1 ICM7218 (DISPLAY AND KEYBOARD) ROUTINES +;================================================================================================== +; +; THE ICM MAY COINCIDE ON THE SAME PPI BUS AS A PPISD. IT MAY NOT +; SHARE A PPI BUS WITH A PPIDE. SEE PPI_BUS.TXT FOR MORE INFORMATION. +; +; LED SEGMENTS (BIT VALUES) +; +; +--40--+ +; 02 20 +; +--04--+ +; 08 10 +; +--01--+ 80 +; +; ICM SCAN CODES ARE ONE BYTE: CCRRRRRR +; BITS 7-6 IDENTFY THE COLUMN OF THE KEY PRESSED +; BITS 5-0 ARE A BITMAP, WITH A BIT ON TO INDICATE ROW OF KEY PRESSED +; +; ____PC0________PC1________PC2________PC3____ +; PB5 | $20 [D] $60 [E] $A0 [F] $E0 [BO] +; PB4 | $10 [A] $50 [B] $90 [C] $D0 [GO] +; PB3 | $08 [7] $48 [8] $88 [9] $C8 [EX] +; PB2 | $04 [4] $44 [5] $84 [6] $C4 [DE] +; PB1 | $02 [1] $42 [2] $82 [3] $C2 [EN] +; PB0 | $01 [FW] $41 [0] $81 [BK] $C1 [CL] +; +; +ICM_PPIA .EQU ICMPPIBASE + 0 ; PORT A +ICM_PPIB .EQU ICMPPIBASE + 1 ; PORT B +ICM_PPIC .EQU ICMPPIBASE + 2 ; PORT C +ICM_PPIX .EQU ICMPPIBASE + 3 ; PPI CONTROL PORT +; +;__ICM_INIT__________________________________________________________________________________________ +; +; CONFIGURE PARALLEL PORT AND CLEAR KEYPAD BUFFER +;____________________________________________________________________________________________________ +; +ICM_PREINIT: + LD A,(DSKY_DISPACT) ; DSKY DISPATCHER ALREADY SET? + OR A ; SET FLAGS + RET NZ ; IF ALREADY ACTIVE, ABORT +; + OR $FF ; SIGNAL TO WAIT FOR KEY RELEASE + LD (ICM_KEYBUF),A ; SET IT +; + ; PPI PORT B IS NORMALLY SET TO INPUT, BUT HERE WE + ; TEMPORARILY SET IT TO OUTPUT. WHILE IN OUTPUT MODE, WE + ; WRITE A VALUE OF $FF WHICH WILL BE PERSISTED BY THE PPI + ; CHIP BUS HOLD CIRCUIT IF THERE IS NO ICM PRESENT. SO, + ; WE CAN SUBSEQUENTLY TEST FOR PPIB=$FF TO SEE IF THERE IS + ; NO ICM AND PREVENT PROBLEMS WITH PHANTOM ICM KEY PRESSES. + ; IF A ICM IS PRESENT, IT WILL SIMPLY OVERPOWER THE PPI + ; BUS HOLD CIRCUIT. + LD A,$80 ; PA OUT, PB OUT, PC OUT + OUT (ICM_PPIX),A + LD A,$FF ; SET PPIB=$FF, BUS HOLD + OUT (ICM_PPIB),A +; + LD A,$82 ; PA OUT, PB IN, PC OUT + OUT (ICM_PPIX),A +; + ;IN A,(ICM_PPIB) ; *DEBUG* + ;CALL PRTHEXBYTE ; *DEBUG* +; + IN A,(ICM_PPIB) ; READ PPIB + XOR $FF ; INVERT RESULT +; + CALL ICM_RESET +; + RET Z ; BAIL OUT NOW IF NOT PRESENT +; + ; RECORD HARDWARE PRESENT + LD A,$FF + LD (ICM_PRESENT),A +; + ; REGISTER DRIVER WITH HBIOS + LD BC,ICM_DISPATCH + CALL DSKY_SETDISP +; + RET +; +ICM_INIT: + CALL NEWLINE ; FORMATTING + PRTS("ICM:$") ; FORMATTING +; + PRTS(" IO=0x$") ; FORMATTING + LD A,ICMPPIBASE ; GET BASE PORT + CALL PRTHEXBYTE ; PRINT BASE PORT +; + LD A,(ICM_PRESENT) ; PRESENT? + OR A ; SET FLAGS + RET NZ ; YES, ALL DONE + PRTS(" NOT PRESENT$") ; NOT PRESENT +; + RET +; +; ICM DEVICE FUNCTION DISPATCH ENTRY +; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR +; B: FUNCTION (IN) +; +ICM_DISPATCH: + LD A,B ; GET REQUESTED FUNCTION + AND $0F ; ISOLATE SUB-FUNCTION + JP Z,ICM_RESET ; RESET DSKY HARDWARE + DEC A + JP Z,ICM_STAT ; GET KEYPAD STATUS + DEC A + JP Z,ICM_GETKEY ; READ A KEY FROM THE KEYPAD + DEC A + JP Z,ICM_SHOWHEX ; DISPLAY A 32-BIT BINARY VALUE IN HEX + DEC A + JP Z,ICM_SHOWSEG ; DISPLAY SEGMENTS + DEC A + JP Z,ICM_KEYLEDS ; SET KEYPAD LEDS + DEC A + JP Z,ICM_STATLED ; SET STATUS LED + DEC A + JP Z,ICM_BEEP ; BEEP DSKY SPEAKER + DEC A + JP Z,ICM_DEVICE ; DEVICE INFO + SYSCHKERR(ERR_NOFUNC) + RET +; +; +; +ICM_RESET: + PUSH AF + LD A,$70 ; PPISD AND 7218 INACTIVE + OUT (ICM_PPIC),A + POP AF + RET +; +; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS +; +ICM_STAT: + LD A,(ICM_KEYBUF) ; GET CURRENT BUF VAL + CP $FF ; $FF MEANS WE ARE WAITING FOR PREV KEY TO BE RELEASED + JR Z,ICM_STAT1 ; CHECK FOR PREV KEY RELEASE + OR A ; DO WE HAVE A SCAN CODE BUFFERED ALREADY? + RET NZ ; IF SO, WE ARE DONE + JR ICM_STAT2 ; OTHERWISE, DO KEY CHECK + +ICM_STAT1: + ; WAITING FOR PREVIOUS KEY RELEASE + CALL ICM_KEY ; SCAN + JR Z,ICM_STAT2 ; IF ZERO, PREV KEY RELEASED, CONTINUE + XOR A ; SIGNAL NO KEY PRESSED + RET ; AND DONE + +ICM_STAT2: + CALL ICM_KEY ; SCAN + LD (ICM_KEYBUF),A ; SAVE RESULT + RET ; RETURN WITH ZF SET APPROPRIATELY +; +; WAIT FOR A ICM KEYPRESS AND RETURN +; +ICM_GETKEY: + CALL ICM_STAT ; CHECK STATUS + JR Z,ICM_GETKEY ; LOOP IF NOTHING READY + LD A,(ICM_KEYBUF) + LD B,24 ; SIZE OF DECODE TABLE + LD C,0 ; INDEX + LD HL,ICM_KEYMAP ; POINT TO BEGINNING OF TABLE +ICM_GETKEY1: + CP (HL) ; MATCH? + JR Z,ICM_GETKEY2 ; FOUND, DONE + INC HL + INC C ; BUMP INDEX + DJNZ ICM_GETKEY1 ; LOOP UNTIL EOT +ICM_GETKEY1A: + LD A,$FF ; NOT FOUND ERR, RETURN $FF + RET +ICM_GETKEY2: + LD A,$FF ; SET KEY BUF TO $FF + LD (ICM_KEYBUF),A ; DO IT + ; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND + LD E,C ; RETURN INDEX VALUE + XOR A ; SIGNAL SUCCESS + RET +; +; +; +ICM_SHOWHEX: + XOR A ; SIGNAL SUCCESS + RET +; +; ICM SHOW BUFFER +; HL: ADDRESS OF BUFFER +; +ICM_SHOWSEG: + LD A,82H ; SETUP PPI + OUT (ICM_PPIX),A + CALL ICM_COFF + LD A,$F0 ; 7218 -> (DATA COMING, NO DECODE) + OUT (ICM_PPIA),A + CALL ICM_STROBEC ; STROBE COMMAND + LD B,DSKY_BUFLEN ; NUMBER OF DIGITS + LD C,ICM_PPIA +ICM_HEXOUT2: + LD A,(HL) + CALL ICM_XLAT ; MAP SEGMENTS + XOR $80 ; FIX DOT POLARITY + OUT (C),A + INC HL + DEC B + JP Z,ICM_STROBE ; DO FINAL STROBE AND RETURN + CALL ICM_STROBE ; STROBE BYTE VALUE + JR ICM_HEXOUT2 +ICM_STROBEC: ; COMMAND STROBE + LD A,80H | 30H + JP ICM_STROBE0 +ICM_STROBE: ; DATA STROBE + LD A,00H | 30H ; SET WRITE STROBE +ICM_STROBE0: + OUT (ICM_PPIC),A ; OUT TO PORTC + CALL DLY2 ; DELAY +ICM_COFF: + LD A,40H | 30H ; QUIESCE + OUT (ICM_PPIC),A ; OUT TO PORTC + XOR A ; SIGNAL SUCCESS + RET +; +; +; +ICM_KEYLEDS: +ICM_STATLED: +ICM_BEEP: + XOR A ; PRETEND SUCCESS + RET +; +; DEVICE INFORMATION +; +ICM_DEVICE: + LD D,DSKYDEV_ICM ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := MODE + LD L,ICMPPIBASE ; L := BASE I/O ADDRESS + XOR A ; SIGNAL SUCCESS + RET +; +;__ICM_KEY___________________________________________________________________________________________ +; +; CHECK FOR KEY PRESS W/ DEBOUNCE +;____________________________________________________________________________________________________ +; +ICM_KEY: + CALL ICM_SCAN ; INITIAL KEY PRESS SCAN + LD E,A ; SAVE INITIAL SCAN VALUE +ICM_KEY1: + ; MAX BOUNCE TIME FOR OMRON B3F IS 3MS + PUSH DE ; SAVE DE + LD DE,300 ; ~3MS DELAY + CALL VDELAY ; DO IT + CALL ICM_SCAN ; REPEAT SCAN + POP DE ; RESTORE DE + RET Z ; IF NOTHING PRESSED, DONE + CP E ; SAME? + JR ICM_KEY2 ; YES, READY TO RETURN + LD E,A ; OTHERWISE, SAVE NEW SCAN VAL + JR ICM_KEY1 ; AND LOOP UNTIL STABLE VALUE +ICM_KEY2: + OR A ; SET FLAGS BASED ON VALUE + RET ; AND DONE +; +;__ICM_SCAN__________________________________________________________________________________________ +; +; SCAN KEYPAD AND RETURN RAW SCAN CODE (RETURNS ZERO IF NO KEY PRESSED) +;____________________________________________________________________________________________________ +; +ICM_SCAN: + LD B,4 ; 4 COLUMNS + LD C,$01 ; FIRST COLUMN + LD E,0 ; INITIAL COL ID +ICM_SCAN1: + LD A,C ; COL TO A + OR $70 ; KEEP PPISD AND 7218 INACTIVE + OUT (ICM_PPIC),A ; ACTIVATE COL + IN A,(ICM_PPIB) ; READ ROW BITS + AND $3F ; MASK, WE ONLY HAVE 6 ROWS, OTHERS UNDEFINED + JR NZ,ICM_SCAN2 ; IF NOT ZERO, GOT SOMETHING + RLC C ; NEXT COL + INC E ; BUMP COL ID + DJNZ ICM_SCAN1 ; LOOP THROUGH ALL COLS + XOR A ; NOTHING FOUND, RETURN ZERO + JP ICM_RESET ; RETURN VIA RESET +ICM_SCAN2: + RRC E ; MOVE COL ID + RRC E ; ... TO HIGH BITS 6 & 7 + OR E ; COMBINE WITH ROW + JP ICM_RESET ; RETURN VIA RESET +; +; +; CONVERT FORM STANDARD SEGMENT ENCODING TO ICM ENCODING +; +; From: To: +; +--01--+ +--40--+ +; 20 02 02 20 +; +--40--+ +--04--+ +; 10 04 08 10 +; +--08--+ 80 +--01--+ 80 +; +ICM_XLAT: + PUSH BC + PUSH HL + LD C,A ; ORIG VALUE TO C + XOR A ; INIT RESULT VALUE + LD B,8 + LD HL,ICM_XTBL +ICM_XLAT1: + RRC C ; SHIFT NEXT BIT TO CF + JR NC,ICM_XLAT2 ; SKIP IF BIT NOT SET + OR (HL) +ICM_XLAT2: + INC HL + DJNZ ICM_XLAT1 + POP HL + POP BC + RET +; +ICM_XTBL .DB $40, $20, $10, $01, $08, $02, $04, $80 +; +;_ _TABLE_____________________________________________________________________________________________________________ +; +ICM_KEYMAP: + ; POS $00 $01 $02 $03 $04 $05 $06 $07 + ; KEY [0] [1] [2] [3] [4] [5] [6] [7] + .DB $41, $02, $42, $82, $04, $44, $84, $08 +; + ; POS $08 $09 $0A $0B $0C $0D $0E $0F + ; KEY [8] [9] [A] [B] [C] [D] [E] [F] + .DB $48, $88, $10, $50, $90, $20, $60, $A0 +; + ; POS $10 $11 $12 $13 $14 $15 $16 $17 + ; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO] + .DB $01, $81, $C1, $C2, $C4, $C8, $D0, $E0 +; +; KBD WORKING STORAGE +; +ICM_KEYBUF .DB 0 +; +;================================================================================================== +; UTILTITY FUNCTIONS +;================================================================================================== +; +; +;================================================================================================== +; STORAGE +;================================================================================================== +; +; SEG DISPLAY WORKING STORAGE +; +ICM_PRESENT .DB 0 diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index a1fe1e9e..2c80dd08 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -794,9 +794,11 @@ IDE_PKT_RDSEC: ; SETUP LBA ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,IDE_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN @@ -861,9 +863,11 @@ IDE_PKT_WRSEC: ; SETUP LBA ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,IDE_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN @@ -891,9 +895,11 @@ IDE_PKT_WRSEC: IDE_SETADDR: ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,IDE_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER ; IDE_REG_LBA3 HAS ALREADY BEEN SET diff --git a/Source/HBIOS/imm.asm b/Source/HBIOS/imm.asm index 2f5b457d..d9076758 100644 --- a/Source/HBIOS/imm.asm +++ b/Source/HBIOS/imm.asm @@ -344,9 +344,11 @@ IMM_IO: LD (IMM_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,IMM_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; SETUP LBA diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 2ada547a..dd5d1d79 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -303,9 +303,11 @@ MD_RW1: PUSH BC ; SAVE COUNTERS ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,MD_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; LD HL,(MD_RWFNADR) ; GET PENDING IO FUNCTION ADDRESS diff --git a/Source/HBIOS/dskyng.asm b/Source/HBIOS/pkd.asm similarity index 50% rename from Source/HBIOS/dskyng.asm rename to Source/HBIOS/pkd.asm index fde11a51..cc5f35a3 100644 --- a/Source/HBIOS/dskyng.asm +++ b/Source/HBIOS/pkd.asm @@ -1,9 +1,9 @@ ; ;================================================================================================== -; DSKYNG (DISPLAY AND KEYBOARD NEXT GENERATION) ROUTINES +; DSKY NEXT GENERATION PKD (DISPLAY AND KEYBOARD) ROUTINES ;================================================================================================== ; -; A DSKYNG CAN SHARE A PPI BUS WITH EITHER A PPIDE OR PPISD. +; A PKD CAN SHARE A PPI BUS WITH EITHER A PPIDE OR PPISD. ; SEE PPI_BUS.TXT FOR MORE INFORMATION. ; ; LED SEGMENTS (BIT VALUES) @@ -39,13 +39,13 @@ ; 10 10 10 10 10 ; 20 20 20 20 20 L1 L2 BUZZ ; -PPIA .EQU DSKYPPIBASE + 0 ; PORT A -PPIB .EQU DSKYPPIBASE + 1 ; PORT B -PPIC .EQU DSKYPPIBASE + 2 ; PORT C -PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT +PKD_PPIA .EQU PKDPPIBASE + 0 ; PORT A +PKD_PPIB .EQU PKDPPIBASE + 1 ; PORT B +PKD_PPIC .EQU PKDPPIBASE + 2 ; PORT C +PKD_PPIX .EQU PKDPPIBASE + 3 ; PPI CONTROL PORT ; -DSKY_PPIX_RD: .EQU %10010010 ; PPIX VALUE FOR READS -DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES +PKD_PPIX_RD: .EQU %10010010 ; PPIX VALUE FOR READS +PKD_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES ; ; PIO CHANNEL C: ; @@ -55,18 +55,18 @@ DSKY_PPIX_WR: .EQU %10000010 ; PPIX VALUE FOR WRITES ; SETTING BITS 3 & 4 WILL ASSERT /CS ON 3279 ; CLEAR BITS 1 OR 2 TO ASSERT READ/WRITE ; -DSKY_PPI_IDLE: .EQU %00000110 +PKD_PPI_IDLE .EQU %00000110 ; -DSKY_CMD_CLR: .EQU %11011111 ; CLEAR (ALL OFF) -DSKY_CMD_CLRX: .EQU %11010011 ; CLEAR (ALL ON) -DSKY_CMD_WDSP: .EQU %10010000 ; WRITE DISPLAY RAM -DSKY_CMD_RDSP: .EQU %01110000 ; READ DISPLAY RAM -DSKY_CMD_CLK: .EQU %00100000 ; SET CLK PRESCALE -DSKY_CMD_FIFO: .EQU %01000000 ; READ FIFO +PKD_CMD_CLR .EQU %11011111 ; CLEAR (ALL OFF) +PKD_CMD_CLRX .EQU %11010011 ; CLEAR (ALL ON) +PKD_CMD_WDSP .EQU %10010000 ; WRITE DISPLAY RAM +PKD_CMD_RDSP .EQU %01110000 ; READ DISPLAY RAM +PKD_CMD_CLK .EQU %00100000 ; SET CLK PRESCALE +PKD_CMD_FIFO .EQU %01000000 ; READ FIFO ; -DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER +PKD_PRESCL .EQU PKDOSC/100000 ; PRESCALER ; -;__DSKY_PREINIT______________________________________________________________________________________ +;__PKD_PREINIT_______________________________________________________________________________________ ; ; CONFIGURE PARALLEL PORT AND INITIALIZE 8279 ;____________________________________________________________________________________________________ @@ -74,200 +74,283 @@ DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER ; ; HARDWARE RESET 8279 BY PULSING RESET LINE ; -DSKY_PREINIT: +PKD_PREINIT: + LD A,(DSKY_DISPACT) ; DSKY DISPATCHER ALREADY SET? + OR A ; SET FLAGS + RET NZ ; IF ALREADY ACTIVE, ABORT +; ; CHECK FOR PPI - CALL DSKY_PPIDETECT ; TEST FOR PPI HARDWARE + CALL PKD_PPIDETECT ; TEST FOR PPI HARDWARE RET NZ ; BAIL OUT IF NOT THERE - ; SETUP PPI TO DEFAULT MODE - CALL DSKY_PPIRD - ; INIT 8279 VALUES TO IDLE STATE - LD A,DSKY_PPI_IDLE - OUT (PPIC),A +; + ; SETUP PPI TO IDLE STATE + CALL PKD_PPIIDLE + LD A,PKD_PPI_IDLE + OUT (PKD_PPIC),A +; ; PULSE RESET SIGNAL ON 8279 SET 7,A - OUT (PPIC),A + OUT (PKD_PPIC),A RES 7,A - OUT (PPIC),A + OUT (PKD_PPIC),A +; ; INITIALIZE 8279 - CALL DSKY_REINIT - ; NOW SEE IF A DSKYNG IS REALLY THERE... - LD A,$A5 - LD (DSKY_BUF),A - LD HL,DSKY_BUF + CALL PKD_REINIT +; + ; NOW SEE IF A PKD IS REALLY THERE... + LD A,$71 LD C,0 - LD B,1 - CALL DSKY_PUTSTR - LD HL,DSKY_BUF + CALL PKD_PUTBYTE LD C,0 - LD B,1 - CALL DSKY_GETSTR - LD A,(DSKY_BUF) - CP $A5 + CALL PKD_GETBYTE + CP $71 RET NZ ; BAIL OUT IF MISCOMPARE +; + ; RECORD HARDWARE PRESENT LD A,$FF - LD (DSKY_PRESENT),A - RET + LD (PKD_PRESENT),A ; -DSKY_REINIT: - CALL DSKY_PPIIDLE - ; SET CLOCK SCALER TO 20 - LD A,DSKY_CMD_CLK | DSKY_PRESCL - CALL DSKY_CMD - ; FALL THRU -; -DSKY_RESET: - ; RESET DSKY -- CLEAR RAM AND FIFO - LD A,DSKY_CMD_CLR - CALL DSKY_CMD -; - ; 8259 TAKES ~160US TO CLEAR RAM DURING WHICH TIME WRITES TO - ; DISPLAY RAM ARE INHIBITED. HIGH BIT OF STATUS BYTE IS SET - ; DURING THIS WINDOW. TO PREVENT A DEADLOCK, A LOOP COUNTER - ; IS USED TO IMPLEMENT A TIMEOUT. - LD B,0 ; TIMEOUT LOOP COUNTER -DSKY_RESET1: - PUSH BC ; SAVE COUNTER - CALL DSKY_ST ; GET STATUS BYTE - POP BC ; RECOVER COUNTER - BIT 7,A ; BIT 7 IS DISPLAY RAM BUSY - JR Z,DSKY_RESET2 ; MOVE ON IF DONE - DJNZ DSKY_RESET1 ; LOOP TILL TIMEOUT + ; REGISTER DRIVER WITH HBIOS + LD BC,PKD_DISPATCH + CALL DSKY_SETDISP ; -DSKY_RESET2: RET ; -;__DSKY_INIT_________________________________________________________________________________________ +PKD_REINIT: + CALL PKD_PPIIDLE + ; SET CLOCK SCALER TO 20 + LD A,PKD_CMD_CLK | PKD_PRESCL + CALL PKD_CMD + JP PKD_RESET +; +;__PKD_INIT__________________________________________________________________________________________ ; ; DISPLAY DSKY INFO ;____________________________________________________________________________________________________ ; -#IFDEF HBIOS -; -DSKY_INIT: +PKD_INIT: CALL NEWLINE ; FORMATTING - PRTS("DSKY:$") ; FORMATTING + PRTS("PKD:$") ; FORMATTING ; PRTS(" IO=0x$") ; FORMATTING - LD A,DSKYPPIBASE ; GET BASE PORT + LD A,PKDPPIBASE ; GET BASE PORT CALL PRTHEXBYTE ; PRINT BASE PORT - PRTS(" MODE=$") ; FORMATTING - PRTS("NG$") ; PRINT DSKY TYPE ; - LD A,(DSKY_PRESENT) ; PRESENT? + LD A,(PKD_PRESENT) ; PRESENT? OR A ; SET FLAGS RET NZ ; YES, ALL DONE PRTS(" NOT PRESENT$") ; NOT PRESENT RET ; DONE ; -#ENDIF -; -;__DSKY_PPIDETECT____________________________________________________________________________________ -; -; PROBE FOR PPI HARDWARE -;____________________________________________________________________________________________________ -; -DSKY_PPIDETECT: +; DSKY DEVICE FUNCTION DISPATCH ENTRY +; A: RESULT (OUT), 0=OK, Z=OK, NZ=ERR +; B: FUNCTION (IN) +; +PKD_DISPATCH: + LD A,B ; GET REQUESTED FUNCTION + AND $0F ; ISOLATE SUB-FUNCTION + JP Z,PKD_RESET ; RESET DSKY HARDWARE + DEC A + JP Z,PKD_STAT ; GET KEYPAD STATUS + DEC A + JP Z,PKD_GETKEY ; READ A KEY FROM THE KEYPAD + DEC A + JP Z,PKD_SHOWHEX ; DISPLAY A 32-BIT BINARY VALUE IN HEX + DEC A + JP Z,PKD_SHOWSEG ; DISPLAY SEGMENTS + DEC A + JP Z,PKD_KEYLEDS ; SET KEYPAD LEDS + DEC A + JP Z,PKD_STATLED ; SET STATUS LED + DEC A + JP Z,PKD_BEEP ; BEEP DSKY SPEAKER + DEC A + JP Z,PKD_DEVICE ; DEVICE INFO + SYSCHKERR(ERR_NOFUNC) + RET ; - ; TEST FOR PPI EXISTENCE - ; WE SETUP THE PPI TO WRITE, THEN WRITE A VALUE OF ZERO - ; TO PORT A (DATALO), THEN READ IT BACK. IF THE PPI IS THERE - ; THEN THE BUS HOLD CIRCUITRY WILL READ BACK THE ZERO. SINCE - ; WE ARE IN WRITE MODE, AN IDE CONTROLLER WILL NOT BE ABLE TO - ; INTERFERE WITH THE VALUE BEING READ. - CALL DSKY_PPIWR +; RESET DSKY -- CLEAR RAM AND FIFO ; - LD C,PPIA ; PPI PORT A - XOR A ; VALUE ZERO - OUT (C),A ; PUSH VALUE TO PORT - IN A,(C) ; GET PORT VALUE - OR A ; SET FLAGS - RET ; AND RETURN +PKD_RESET: + LD A,PKD_CMD_CLR + CALL PKD_CMD +; + ; 8259 TAKES ~160US TO CLEAR RAM DURING WHICH TIME WRITES TO + ; DISPLAY RAM ARE INHIBITED. HIGH BIT OF STATUS BYTE IS SET + ; DURING THIS WINDOW. TO PREVENT A DEADLOCK, A LOOP COUNTER + ; IS USED TO IMPLEMENT A TIMEOUT. + LD B,0 ; TIMEOUT LOOP COUNTER +PKD_RESET1: + PUSH BC ; SAVE COUNTER + CALL PKD_ST ; GET STATUS BYTE + POP BC ; RECOVER COUNTER + BIT 7,A ; BIT 7 IS DISPLAY RAM BUSY + JR Z,PKD_RESET2 ; MOVE ON IF DONE + DJNZ PKD_RESET1 ; LOOP TILL TIMEOUT ; -#IFDEF DSKY_KBD -; -KY_0 .EQU $00 -KY_1 .EQU $01 -KY_2 .EQU $02 -KY_3 .EQU $03 -KY_4 .EQU $04 -KY_5 .EQU $05 -KY_6 .EQU $06 -KY_7 .EQU $07 -KY_8 .EQU $08 -KY_9 .EQU $09 -KY_A .EQU $0A -KY_B .EQU $0B -KY_C .EQU $0C -KY_D .EQU $0D -KY_E .EQU $0E -KY_F .EQU $0F -KY_FW .EQU $10 ; FORWARD -KY_BK .EQU $11 ; BACKWARD -KY_CL .EQU $12 ; CLEAR -KY_EN .EQU $13 ; ENTER -KY_DE .EQU $14 ; DEPOSIT -KY_EX .EQU $15 ; EXAMINE -KY_GO .EQU $16 ; GO -KY_BO .EQU $17 ; BOOT -KY_F4 .EQU $18 ; F4 -KY_F3 .EQU $19 ; F3 -KY_F2 .EQU $20 ; F2 -KY_F1 .EQU $21 ; F1 -; -;__DSKY_STAT_________________________________________________________________________________________ +PKD_RESET2: + RET ; ; CHECK FOR KEY PRESS, SAVE RAW VALUE, RETURN STATUS -;____________________________________________________________________________________________________ ; -DSKY_STAT: - LD A,(DSKY_PRESENT) ; DOES IT EXIST? +PKD_STAT: + LD A,(PKD_PRESENT) ; DOES IT EXIST? OR A ; SET FLAGS RET Z ; ABORT WITH A=0 IF NOT THERE - CALL DSKY_ST + CALL PKD_ST AND $0F ; ISOLATE THE CUR FIFO LEN RET ; -;__DSKY_GETKEY_____________________________________________________________________________________ -; ; WAIT FOR A DSKY KEYPRESS AND RETURN -;____________________________________________________________________________________________________ ; -DSKY_GETKEY: - LD A,(DSKY_PRESENT) ; DOES IT EXIST? +PKD_GETKEY: + LD A,(PKD_PRESENT) ; DOES IT EXIST? OR A ; SET FLAGS - JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT - CALL DSKY_STAT - JR Z,DSKY_GETKEY ; LOOP IF NOTHING THERE - LD A,DSKY_CMD_FIFO - CALL DSKY_CMD - CALL DSKY_DIN + JR Z,PKD_GETKEY1A ; ABORT IF NOT PRESENT + CALL PKD_STAT + JR Z,PKD_GETKEY ; LOOP IF NOTHING THERE + LD A,PKD_CMD_FIFO + CALL PKD_CMD + CALL PKD_DIN XOR %11000000 ; FLIP POLARITY OF SHIFT/CTL BITS PUSH AF ; SAVE VALUE AND $3F ; STRIP SHIFT/CTL BITS FOR LOOKUP LD B,28 ; SIZE OF DECODE TABLE LD C,0 ; INDEX - LD HL,DSKY_KEYMAP ; POINT TO BEGINNING OF TABLE -DSKY_GETKEY1: + LD HL,PKD_KEYMAP ; POINT TO BEGINNING OF TABLE +PKD_GETKEY1: CP (HL) ; MATCH? - JR Z,DSKY_GETKEY2 ; FOUND, DONE + JR Z,PKD_GETKEY2 ; FOUND, DONE INC HL INC C ; BUMP INDEX - DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT + DJNZ PKD_GETKEY1 ; LOOP UNTIL EOT POP AF ; FIX STACK -DSKY_GETKEY1A: +PKD_GETKEY1A: LD A,$FF ; NOT FOUND ERR, RETURN $FF RET -DSKY_GETKEY2: +PKD_GETKEY2: ; RETURN THE INDEX POSITION WHERE THE SCAN CODE WAS FOUND ; THE ORIGINAL SHIFT/CTRL BITS ARE RESTORED POP AF ; RESTORE RAW VALUE AND %11000000 ; ISOLATE SHIFT/CTRL BITS OR C ; COMBINE WITH INDEX VALUE + LD E,A ; PUT IN E FOR RETURN + XOR A ; SIGNAL SUCCESS + RET +; +; +; +PKD_SHOWHEX: + XOR A ; SIGNAL SUCCESS + RET +; +; +; +PKD_SHOWSEG: + LD C,0 ; STARTING DISPLAY POSITION + LD B,DSKY_BUFLEN ; NUMBER OF CHARS + CALL PKD_PUTSTR ; DO IT + XOR A ; SIGNAL SUCCESS + RET +; +; +; +PKD_KEYLEDS: + CALL PKD_PUTLED ; DO IT + XOR A ; SIGNAL SUCCESS + RET +; +; +; +PKD_STATLED: + LD A,$0D ; PORT FOR FIRST LED + ADD A,D ; ADD LED NUM + LD C,A ; PUT IN C + LD A,E ; LED STATE INDICATOR + OR A ; SET FLAGS + JR NZ,PKD_STATLED1 ; HANDLE "ON" +; + ; TURN LED OFF + PUSH BC ; SAVE LED NUM + CALL PKD_GETBYTE ; GET CUR VALUE + AND ~$20 ; BIT 5 OFF + JR PKD_STATLED2 ; FINISH UP +; +PKD_STATLED1: + ; TURN LED ON + PUSH BC ; SAVE LED NUM + CALL PKD_GETBYTE ; GET CUR VALUE + OR $20 ; BIT 5 ON +; +PKD_STATLED2: + POP BC ; RECOVER LED NUM + CALL PKD_PUTBYTE ; PUT NEW VALUE + XOR A ; SIGNAL SUCCESS + RET +; +; BEEP THE SPEAKER ON THE PKD +; +PKD_BEEP: + PUSH BC + LD C,$0F + CALL PKD_GETBYTE + OR $20 + LD C,$0F + CALL PKD_PUTBYTE +; + ; TIMER + PUSH HL + LD hl,$8FFF +PKD_BEEP1: + DEC HL + LD A,H + CP 0 + JR NZ,PKD_BEEP1 + POP HL + LD C,$0F + CALL PKD_GETBYTE + AND $DF + LD C,$0F + CALL PKD_PUTBYTE + POP BC + XOR A ; SIGNAL SUCCESS + RET +; +; DEVICE INFORMATION +; +PKD_DEVICE: + LD D,DSKYDEV_PKD ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := MODE + LD L,PKDPPIBASE ; L := BASE I/O ADDRESS + XOR A ; SIGNAL SUCCESS RET ; +;__PKD_PPIDETECT_____________________________________________________________________________________ +; +; PROBE FOR PPI HARDWARE +;____________________________________________________________________________________________________ +; +PKD_PPIDETECT: +; + ; TEST FOR PPI EXISTENCE + ; WE SETUP THE PPI TO WRITE, THEN WRITE A VALUE OF ZERO + ; TO PORT A (DATALO), THEN READ IT BACK. IF THE PPI IS THERE + ; THEN THE BUS HOLD CIRCUITRY WILL READ BACK THE ZERO. SINCE + ; WE ARE IN WRITE MODE, AN IDE CONTROLLER WILL NOT BE ABLE TO + ; INTERFERE WITH THE VALUE BEING READ. + CALL PKD_PPIWR +; + LD C,PKD_PPIA ; PPI PORT A + XOR A ; VALUE ZERO + OUT (C),A ; PUSH VALUE TO PORT + IN A,(C) ; GET PORT VALUE + OR A ; SET FLAGS + RET ; AND RETURN +; ;_KEYMAP_TABLE_____________________________________________________________________________________________________________ ; -DSKY_KEYMAP: +PKD_KEYMAP: ; POS $00 $01 $02 $03 $04 $05 $06 $07 ; KEY [0] [1] [2] [3] [4] [5] [6] [7] .DB $0D, $04, $0C, $14, $03, $0B, $13, $02 @@ -280,93 +363,41 @@ DSKY_KEYMAP: ; KEY [FW] [BK] [CL] [EN] [DE] [EX] [GO] [BO] .DB $05, $15, $1D, $1C, $1B, $1A, $19, $18 - ; POS $18 $19 $20 $21 + ; POS $18 $19 $1A $1B ; KEY [F4] [F3] [F2] [F1] .DB $23, $22, $21, $20 ; -#ENDIF ; DSKY_KBD -; -;================================================================================================== -; CONVERT 32 BIT BINARY TO 8 BYTE HEX SEGMENT DISPLAY -;================================================================================================== -; -; HL: ADR OF 32 BIT BINARY -; DE: ADR OF DEST LED SEGMENT DISPLAY BUFFER (8 BYTES) -; -DSKY_BIN2SEG: - PUSH HL - PUSH DE - LD B,4 ; 4 BYTES OF INPUT - EX DE,HL -DSKY_BIN2SEG1: - LD A,(DE) ; FIRST NIBBLE - SRL A - SRL A - SRL A - SRL A - PUSH HL - LD HL,DSKY_HEXMAP - CALL DSKY_ADDHLA - LD A,(HL) - POP HL - LD (HL),A - INC HL - LD A,(DE) ; SECOND NIBBLE - AND 0FH - PUSH HL - LD HL,DSKY_HEXMAP - CALL DSKY_ADDHLA - LD A,(HL) - POP HL - LD (HL),A - INC HL - INC DE ; NEXT BYTE - DJNZ DSKY_BIN2SEG1 - POP DE - POP HL - RET -; -;================================================================================================== -; DSKY SHOW BUFFER -; HL: ADDRESS OF BUFFER -;================================================================================================== -; -DSKY_SHOW: - LD C,0 ; STARTING DISPLAY POSITION - LD B,DSKY_BUFLEN ; NUMBER OF CHARS - JP DSKY_PUTSTR -; ;================================================================================================== -; DSKYNG OUTPUT ROUTINES +; PKD OUTPUT ROUTINES ;================================================================================================== ; ; SEND DSKY COMMAND BYTE IN REGISTER A ; TRASHES BC ; -DSKY_CMD: +PKD_CMD: LD B,$01 - JR DSKY_DOUT2 + JR PKD_DOUT2 ; ; SEND DSKY DATA BYTE IN REGISTER A ; TRASHES BC ; -DSKY_DOUT: +PKD_DOUT: LD B,$00 ; -DSKY_DOUT2: +PKD_DOUT2: ; ; SAVE INCOMING DATA BYTE PUSH AF ; ; SET PPI LINE CONFIG TO WRITE MODE - CALL DSKY_PPIWR + CALL PKD_PPIWR ; ; SETUP - LD C,PPIC + LD C,PKD_PPIC ; ; SET ADDRESS FIRST - LD A,DSKY_PPI_IDLE + LD A,PKD_PPI_IDLE OR B OUT (C),A ; @@ -380,7 +411,7 @@ DSKY_DOUT2: ; ; ASSERT DATA BYTE VALUE POP AF - OUT (PPIA),A + OUT (PKD_PPIA),A ; ; PULSE /WR RES 1,B @@ -399,35 +430,35 @@ DSKY_DOUT2: OUT (C),B ; ; DONE - CALL DSKY_PPIIDLE + CALL PKD_PPIIDLE RET ; ;================================================================================================== -; DSKYNG OUTPUT ROUTINES +; PKD INPUT ROUTINES ;================================================================================================== ; ; RETURN DSKY STATUS VALUE IN A ; TRASHES BC ; -DSKY_ST: +PKD_ST: LD B,$01 - JR DSKY_DIN2 + JR PKD_DIN2 ; ; RETURN NEXT DATA VALUE IN A ; TRASHES BC ; -DSKY_DIN: +PKD_DIN: LD B,$00 ; -DSKY_DIN2: +PKD_DIN2: ; SET PPI LINE CONFIG TO READ MODE - CALL DSKY_PPIRD + CALL PKD_PPIRD ; ; SETUP - LD C,PPIC + LD C,PKD_PPIC ; ; SET ADDRESS FIRST - LD A,DSKY_PPI_IDLE + LD A,PKD_PPI_IDLE OR B OUT (C),A ; @@ -444,7 +475,7 @@ DSKY_DIN2: OUT (C),B ; ; GET VALUE - IN A,(PPIA) + IN A,(PKD_PPIA) ; ; DEASSERT /RD SET 2,B @@ -460,51 +491,51 @@ DSKY_DIN2: OUT (C),B ; ; DONE - CALL DSKY_PPIIDLE + CALL PKD_PPIIDLE RET ; ;================================================================================================== -; DSKYNG UTILITY ROUTINES +; PKD UTILITY ROUTINES ;================================================================================================== ; -; BLANK DSKYNG DISPLAY (WITHOUT USING CLEAR) +; BLANK PKD DISPLAY (WITHOUT USING CLEAR) ; -DSKY_BLANK: - LD A,DSKY_CMD_WDSP - CALL DSKY_CMD +PKD_BLANK: + LD A,PKD_CMD_WDSP + CALL PKD_CMD LD B,16 -DSKY_BLANK1: +PKD_BLANK1: PUSH BC LD A,$FF - CALL DSKY_DOUT + CALL PKD_DOUT POP BC - DJNZ DSKY_BLANK1 + DJNZ PKD_BLANK1 RET ; ; WRITE A RAW BYTE VALUE TO DSKY DISPLAY RAM ; AT LOCATION IN REGISTER C, VALUE IN A. ; -DSKY_PUTBYTE: +PKD_PUTBYTE: PUSH BC PUSH AF LD A,C - ADD A,DSKY_CMD_WDSP - CALL DSKY_CMD + ADD A,PKD_CMD_WDSP + CALL PKD_CMD POP AF XOR $FF - CALL DSKY_DOUT + CALL PKD_DOUT POP BC RET ; ; READ A RAW BYTE VALUE FROM DSKY DISPLAY RAM ; AT LOCATION IN REGISTER C, VALUE RETURNED IN A ; -DSKY_GETBYTE: +PKD_GETBYTE: PUSH BC LD A,C - ADD A,DSKY_CMD_RDSP - CALL DSKY_CMD - CALL DSKY_DIN + ADD A,PKD_CMD_RDSP + CALL PKD_CMD + CALL PKD_DIN XOR $FF POP BC RET @@ -512,191 +543,89 @@ DSKY_GETBYTE: ; WRITE A STRING OF RAW BYTE VALUES TO DSKY DISPLAY RAM ; AT LOCATION IN REGISTER C, LENGTH IN B, ADDRESS IN HL. ; -DSKY_PUTSTR: +PKD_PUTSTR: PUSH BC LD A,C - ADD A,DSKY_CMD_WDSP - CALL DSKY_CMD + ADD A,PKD_CMD_WDSP + CALL PKD_CMD POP BC ; -DSKY_PUTSTR1: +PKD_PUTSTR1: LD A,(HL) XOR $FF INC HL PUSH BC - CALL DSKY_DOUT + CALL PKD_DOUT POP BC - DJNZ DSKY_PUTSTR1 + DJNZ PKD_PUTSTR1 RET ; ; READ A STRING OF RAW BYTE VALUES FROM DSKY DISPLAY RAM ; AT LOCATION IN REGISTER C, LENGTH IN B, ADDRESS IN HL. ; -DSKY_GETSTR: +PKD_GETSTR: PUSH BC LD A,C - ADD A,DSKY_CMD_RDSP - CALL DSKY_CMD + ADD A,PKD_CMD_RDSP + CALL PKD_CMD POP BC ; -DSKY_GETSTR1: +PKD_GETSTR1: PUSH BC - CALL DSKY_DIN + CALL PKD_DIN POP BC XOR $FF LD (HL),A INC HL - DJNZ DSKY_GETSTR1 + DJNZ PKD_GETSTR1 RET ; -; This function is intended to update the LEDs. It expects 8 bytes -; following the call, and updates the entire matrix. -; -; EXAMPLE: -; CALL DSKY_PUTLED -; .DB $00,$00,$00,$00,$00,$00,$00,$00 +; UPDATE THE KEYPAD KEY LEDS. HL POINTS TO AN 8 BYTE BITMAP BUFFER +; THAT DEFINES ALL KEYPAD LED VALUES. THE ENTIRE MATRIX IS UPDATED. ; -DSKY_PUTLED: - EX (SP),HL +PKD_PUTLED: PUSH AF PUSH BC LD C,8 -DSKY_PUTLED_1: +PKD_PUTLED_1: LD A,(HL) PUSH BC - CALL DSKY_PUTBYTE + CALL PKD_PUTBYTE POP BC INC C INC HL LD A,C CP $10 - JP NZ,DSKY_PUTLED_1 - POP BC - POP AF - EX (SP),HL - RET -; -; This function is intended to beep the speaker on the DSKY -; -DSKY_BEEP: - PUSH AF - PUSH BC - - LD C,$0F - CALL DSKY_GETBYTE - OR $20 - LD C,$0F - CALL DSKY_PUTBYTE - -;;; timer . . . - PUSH HL - LD hl,$8FFF -DSKY_BEEP1: - DEC HL - LD A,H - CP 0 - JP NZ,DSKY_BEEP1 - POP HL - - LD C,$0F - CALL DSKY_GETBYTE - AND $DF - LD C,$0F - CALL DSKY_PUTBYTE - - POP BC - POP AF - RET -; -; This function is intended to turn on DSKY L1 -; -DSKY_L1ON: - PUSH AF - PUSH BC - - LD C,$0D - CALL DSKY_GETBYTE - OR $20 - LD C,$0D - CALL DSKY_PUTBYTE - - POP BC - POP AF - RET -; -; This function is intended to turn on DSKY L2 -; -DSKY_L2ON: - PUSH AF - PUSH BC - - LD C,$0E - CALL DSKY_GETBYTE - OR $20 - LD C,$0E - CALL DSKY_PUTBYTE - - POP BC - POP AF - RET -; -; This function is intended to turn off DSKY L1 -; -DSKY_L1OFF: - PUSH AF - PUSH BC - - LD C,$0D - CALL DSKY_GETBYTE - AND $DF - LD C,$0D - CALL DSKY_PUTBYTE - - POP BC - POP AF - RET -; -; This function is intended to turn off DSKY L2 -; -DSKY_L2OFF: - PUSH AF - PUSH BC - - LD C,$0E - CALL DSKY_GETBYTE - AND $DF - LD C,$0E - CALL DSKY_PUTBYTE - + JP NZ,PKD_PUTLED_1 POP BC POP AF RET ; ;================================================================================================== -; DSKYNG LINE CONTROL ROUTINES +; PKD LINE CONTROL ROUTINES ;================================================================================================== ; ; SETUP PPI FOR WRITING: PUT PPI PORT A IN OUTPUT MODE ; AVOID REWRTING PPIX IF ALREADY IN OUTPUT MODE ; -DSKY_PPIWR: +PKD_PPIWR: PUSH AF ; ; CHECK FOR WRITE MODE - LD A,(DSKY_PPIX_VAL) - CP DSKY_PPIX_WR - JR Z,DSKY_PPIWR1 + LD A,(PKD_PPIX_VAL) + CP PKD_PPIX_WR + JR Z,PKD_PPIWR1 ; ; SET PPI TO WRITE MODE - LD A,DSKY_PPIX_WR - OUT (PPIX),A - LD (DSKY_PPIX_VAL),A + LD A,PKD_PPIX_WR + OUT (PKD_PPIX),A + LD (PKD_PPIX_VAL),A ; ; RESTORE PORT C (MAY NOT BE NEEDED) - LD A,DSKY_PPI_IDLE - OUT (PPIC),A + LD A,PKD_PPI_IDLE + OUT (PKD_PPIC),A ; -DSKY_PPIWR1: +PKD_PPIWR1: ; POP AF RET @@ -704,71 +633,36 @@ DSKY_PPIWR1: ; SETUP PPI FOR READING: PUT PPI PORT A IN INPUT MODE ; AVOID REWRTING PPIX IF ALREADY IN INPUT MODE ; -DSKY_PPIRD: +PKD_PPIRD: PUSH AF ; ; CHECK FOR READ MODE - LD A,(DSKY_PPIX_VAL) - CP DSKY_PPIX_RD - JR Z,DSKY_PPIRD1 + LD A,(PKD_PPIX_VAL) + CP PKD_PPIX_RD + JR Z,PKD_PPIRD1 ; ; SET PPI TO READ MODE - LD A,DSKY_PPIX_RD - OUT (PPIX),A - LD (DSKY_PPIX_VAL),A + LD A,PKD_PPIX_RD + OUT (PKD_PPIX),A + LD (PKD_PPIX_VAL),A ; -DSKY_PPIRD1: +PKD_PPIRD1: POP AF RET ; ; RELEASE USE OF PPI ; -DSKY_PPIIDLE: - JR DSKY_PPIRD ; SAME AS READ MODE +PKD_PPIIDLE: + JR PKD_PPIRD ; SAME AS READ MODE ; ;================================================================================================== ; UTILTITY FUNCTIONS ;================================================================================================== ; -DSKY_ADDHLA: - ADD A,L - LD L,A - RET NC - INC H - RET ; ;================================================================================================== ; STORAGE ;================================================================================================== ; -; CODES FOR NUMERICS -; HIGH BIT ALWAYS CLEAR TO SUPPRESS DECIMAL POINT -; SET HIGH BIT TO SHOW DECIMAL POINT -; -DSKY_HEXMAP: - .DB $3F ; 0 - .DB $06 ; 1 - .DB $5B ; 2 - .DB $4F ; 3 - .DB $66 ; 4 - .DB $6D ; 5 - .DB $7D ; 6 - .DB $07 ; 7 - .DB $7F ; 8 - .DB $67 ; 9 - .DB $77 ; A - .DB $7C ; B - .DB $39 ; C - .DB $5E ; D - .DB $79 ; E - .DB $71 ; F -; -DSKY_PPIX_VAL: .DB 0 -DSKY_PRESENT: .DB 0 -; -; SEG DISPLAY WORKING STORAGE -; -DSKY_BUF .FILL 8,0 -DSKY_BUFLEN .EQU $ - DSKY_BUF -DSKY_HEXBUF .FILL 4,0 -DSKY_HEXBUFLEN .EQU $ - DSKY_HEXBUF +PKD_PPIX_VAL .DB 0 ; PPIX SHADOW REG +PKD_PRESENT .DB 0 ; HARDWARE PRESENT FLAG diff --git a/Source/HBIOS/ppa.asm b/Source/HBIOS/ppa.asm index c9da8303..9af70614 100644 --- a/Source/HBIOS/ppa.asm +++ b/Source/HBIOS/ppa.asm @@ -340,9 +340,11 @@ PPA_IO: LD (PPA_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,PPA_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; SETUP LBA diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index acf13295..5449899d 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -800,9 +800,11 @@ PPIDE_PKT_RDSEC: ; SETUP LBA ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,PPIDE_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN @@ -867,9 +869,11 @@ PPIDE_PKT_WRSEC: ; SETUP LBA ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,PPIDE_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; ; 3 BYTES, LITTLE ENDIAN -> BIG ENDIAN @@ -897,9 +901,11 @@ PPIDE_PKT_WRSEC: PPIDE_SETADDR: ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,PPIDE_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; SEND 3 LOWEST BYTES OF LBA IN REVERSE ORDER ; IDE_REG_LBA3 HAS ALREADY BEEN SET @@ -1286,19 +1292,22 @@ PPIDE_RESET: LD C,(IY+PPIDE_PPI) ; PPI CONTROL WORD OUT (C),A ; WRITE IT ; -; IF A DSKYNG IS ACTIVE AND IS ON THE SAME PPI PORT AS THE PPISD BEING +; IF A DSKYNG IS ACTIVE AND IS ON THE SAME PPI PORT AS THE PPIDE BEING ; RESET, THEN THE DSKYNG WILL ALSO BE RESET. SO, THE RESET CODE IS ; BRACKETED WITH CODE TO SAVE AND RESTORE THE STATE OF THE DSKYNG. ; THERE IS NO CHECK FOR THE SPECIFIC PPI PORT SINCE IT DOES NO HARM ; IF THE DSKYNG IS SAVED AND RESTORED. ; +; THIS DOES NOT TEST THAT A DSKYNG IS ACTUALLY PRESENT +; AND OPERATING -- COULD CAUSE PROBLEMS +; #IF (DSKYENABLE) - #IF (DSKYMODE == DSKYMODE_NG) - ; SAVE CONTENTS OF DSKY DISPLAY ACROSS RESET + #IF (PKDENABLE) + ; SAVE CONTENTS OF DSKYNG DISPLAY ACROSS RESET LD B,8 LD C,0 LD HL,DSKY_BUF - CALL DSKY_GETSTR + CALL PKD_GETSTR #ENDIF #ENDIF ; @@ -1319,13 +1328,13 @@ PPIDE_RESET: CALL VDELAY ; #IF (DSKYENABLE) - #IF (DSKYMODE == DSKYMODE_NG) - ; REININT DSKY AND RESTORE CONTENTS - CALL DSKY_REINIT + #IF (PKDENABLE) + ; REININT DSKYNG AND RESTORE CONTENTS + CALL PKD_REINIT LD B,8 LD C,0 LD HL,DSKY_BUF - CALL DSKY_PUTSTR + CALL PKD_PUTSTR #ENDIF #ENDIF ; diff --git a/Source/HBIOS/ppp.asm b/Source/HBIOS/ppp.asm index 25f11e5b..5d3345a7 100644 --- a/Source/HBIOS/ppp.asm +++ b/Source/HBIOS/ppp.asm @@ -942,7 +942,9 @@ PPPSD_SENDBLK: LD A,PPPSD_LBA ; OFFSET OF LBA CALL LDHLIYA ; HL := IY + A, REG A TRASHED #IF (DSKYENABLE) + #IF (DSKYDSKACT) CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF LD B,4 PPPSD_SENDBLK1: diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index 960895dc..6e18d0d3 100644 --- a/Source/HBIOS/prp.asm +++ b/Source/HBIOS/prp.asm @@ -876,7 +876,9 @@ PRPSD_SETBLK: LD A,PRPSD_LBA ; OFFSET OF LBA CALL LDHLIYA ; HL := IY + A, REG A TRASHED #IF (DSKYENABLE) + #IF (DSKYDSKACT) CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF OTIR RET diff --git a/Source/HBIOS/rf.asm b/Source/HBIOS/rf.asm index 8af08c78..f9bc94f1 100644 --- a/Source/HBIOS/rf.asm +++ b/Source/HBIOS/rf.asm @@ -314,9 +314,11 @@ RF_SETIO: RF_SETADR: ; #IF (DSKYENABLE) + #IF (DSKYDSKACT) LD A,RF_LBA CALL LDHLIYA CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF ; LD A,(RF_IO) ; OUTPUT THE LOGICAL BLOCK diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 380340e9..4782d4d5 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -170,6 +170,16 @@ start1: #if (INTMODE == 1) ei #endif +; +#if (BIOS == BIOS_WBW) + ; Check for DSKY and set flag + ld b,BF_SYSGET ; HBIOS func: get + ld c,BF_SYSGET_DSKYCNT ; get DSKY count + rst 08 ; do it + ld a,e ; put in A + ld (dskyact),a ; save it +#endif + ; ;======================================================================= ; Loader prompt @@ -231,18 +241,11 @@ prompt: call clrbuf ; zero fill the cmd buffer ; #if (DSKYENABLE) - call DSKY_PREINIT ; *** TEMPORARY *** - call DSKY_RESET ; clear DSKY ld hl,msg_sel ; boot select msg - call DSKY_SHOW ; show on DSKY - - #if (DSKYMODE == DSKYMODE_NG) - call DSKY_PUTLED - .db $3f,$3f,$3f,$3f,$00,$00,$00,$00 - call DSKY_BEEP - call DSKY_L2ON - #endif - + call dsky_show ; show on DSKY + call dsky_highlightallkeys + call dsky_beep + call dsky_l2on #endif ; wtkey: @@ -251,8 +254,7 @@ wtkey: jr nz,concmd ; if pending, do console command ; #if (DSKYENABLE) - call DSKY_STAT ; check DSKY for keypress - or a ; set flags + call dsky_stat ; check DSKY for keypress jp nz,dskycmd ; if pending, do DSKY command #endif ; @@ -295,11 +297,8 @@ concmd: call clrled ; clear LEDs ; #if (DSKYENABLE) - #if (DSKYMODE == DSKYMODE_NG) - call DSKY_PUTLED - .db $00,$00,$00,$00,$00,$00,$00,$00 - call DSKY_L2OFF - #endif + call dsky_highlightkeysoff + call dsky_l2off #endif ; ; Get a command line from console and handle it @@ -516,15 +515,15 @@ fp_flopboot2: dskycmd: call clrled ; clear LEDs ; - call DSKY_GETKEY ; get DSKY key + call dsky_getkey ; get DSKY key + ld a,e ; put in A cp $FF ; check for error ret z ; abort if so ; - #if (DSKYMODE == DSKYMODE_NG) - call DSKY_PUTLED - .db $00,$00,$00,$00,$00,$00,$00,$00 - call DSKY_L2OFF - #endif + push af + call dsky_highlightkeysoff + call dsky_l2off + pop af ; ; Attempt built-in commands cp KY_BO ; reboot system @@ -861,7 +860,7 @@ reboot: ; #if (DSKYENABLE) ld hl,msg_boot ; point to boot message - call DSKY_SHOW ; display message + call dsky_show ; display message #endif ; ; cold boot system @@ -893,7 +892,7 @@ romload: ; #if (DSKYENABLE) ld hl,msg_load ; point to load message - call DSKY_SHOW ; display message + call dsky_show ; display message #endif ; #if (BIOS == BIOS_WBW) @@ -977,7 +976,7 @@ romload1: ; #if (DSKYENABLE) ld hl,msg_go ; point to go message - call DSKY_SHOW ; display message + call dsky_show ; display message #endif ; ld l,(ix+ra_ent) ; HL := app entry address @@ -1002,7 +1001,7 @@ diskboot: ; #if (DSKYENABLE) ld hl,msg_load ; point to load message - call DSKY_SHOW ; display message + call dsky_show ; display message #endif ; #if (BIOS == BIOS_WBW) @@ -1286,7 +1285,7 @@ diskboot10: ; #if (DSKYENABLE) ld hl,msg_go ; point to go message - call DSKY_SHOW ; display message + call dsky_show ; display message #endif ; ; Jump to entry vector @@ -2061,6 +2060,60 @@ devunk .db "UNK",0 str_devlst .db "\r\n\r\nDisk Devices:",0 ; #endif + +#if (DSKYENABLE) + +; +;======================================================================= +; DSKY interface routines +;======================================================================= +; +dsky_stat: + ld b,BF_DSKYSTAT + jr dsky_hbcall +; +dsky_getkey: + ld b,BF_DSKYGETKEY + jr dsky_hbcall +; +dsky_show: + ld b,BF_DSKYSHOWSEG + jr dsky_hbcall +; +dsky_beep: + ld b,BF_DSKYBEEP + jr dsky_hbcall +; +dsky_l2on: + ld e,1 + jr dsky_statled +dsky_l2off: + ld e,0 +dsky_statled: + ld b,BF_DSKYSTATLED + ld d,1 + jr dsky_hbcall +; +dsky_putled: + ld b,BF_DSKYKEYLEDS + jr dsky_hbcall +; +dsky_highlightallkeys: + ld hl,dsky_highlightallkeyleds + jr dsky_putled +; +dsky_highlightkeysoff: + ld hl,dsky_highlightkeyledsoff + jr dsky_putled +; +dsky_hbcall: + ld a,(dskyact) + or a + ret z + rst 08 + ret +; +#endif ; ;======================================================================= ; Error handlers @@ -2116,22 +2169,6 @@ str_err_sig .db "No system image on disk",0 str_err_api .db "Unexpected hardware BIOS API failure",0 ; ;======================================================================= -; Includes -;======================================================================= -; -#if (DSKYENABLE) -#define DSKY_KBD - #if (DSKYMODE == DSKYMODE_V1) -VDELAY .equ vdelay -DLY2 .equ dly2 -#include "dsky.asm" - #endif - #if (DSKYMODE == DSKYMODE_NG) -#include "dskyng.asm" - #endif -#endif -; -;======================================================================= ; Working data storage (initialized) ;======================================================================= ; @@ -2179,21 +2216,20 @@ str_help .db "\r\n" .db 0 ; #if (DSKYENABLE) - #if (DSKYMODE == DSKYMODE_V1) -msg_sel .db $7f,$1d,$1d,$0f,$6c,$00,$00,$00 ; "boot? " -msg_boot .db $7f,$1d,$1d,$0f,$80,$80,$80,$00 ; "boot... " -msg_load .db $0b,$1d,$7d,$3d,$80,$80,$80,$00 ; "load... " -msg_go .db $5b,$1d,$80,$80,$80,$00,$00,$00 ; "go... " - #endif - #if (DSKYMODE == DSKYMODE_NG) msg_sel .db $7f,$5c,$5c,$78,$53,$00,$00,$00 ; "boot? " msg_boot .db $7f,$5c,$5c,$78,$80,$80,$80,$00 ; "boot... " msg_load .db $38,$5c,$5f,$5e,$80,$80,$80,$00 ; "load... " msg_go .db $3d,$5c,$80,$80,$80,$00,$00,$00 ; "go... " - #endif #endif ; ;======================================================================= +; DSKY keypad led matrix masks +;======================================================================= +; +dsky_highlightallkeyleds .db $3f,$3f,$3f,$3f,$00,$00,$00,$00 +dsky_highlightkeyledsoff .db $00,$00,$00,$00,$00,$00,$00,$00 +; +;======================================================================= ; ROM Application Table ;======================================================================= ; @@ -2342,6 +2378,7 @@ bootslice .db 0 ; boot disk slice loadcnt .db 0 ; num disk sectors to load switches .db 0 ; front panel switches diskcnt .db 0 ; disk unit count value +dskyact .db 0 ; DSKY active if != 0 ; ;======================================================================= ; Pad remainder of ROM Loader diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 39b44d90..3207b64b 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -1382,7 +1382,9 @@ SD_SETADDR: LD A,SD_LBA ; OFFSET OF LBA VALUE CALL LDHLIYA ; HL := IY + A, REG A TRASHED #IF (DSKYENABLE) + #IF (DSKYDSKACT) CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF CALL LD32 ; LOAD IT TO DE:HL, AF IS TRASHED POP AF ; GET CARD TYPE BACK @@ -1564,11 +1566,6 @@ SD_EXECCMD3: #IF (SDTRACE >= 3) CALL SD_PRTRC ; IF MAX TRACING, PRINT RC #ENDIF -;;#IF (DSKYENABLE) -;; PUSH AF -;; CALL SD_DSKY ; IF USING DSKY, SHOW IT THERE -;; POP AF -;;#ENDIF AND ~$01 ; MASK OFF IDLE BIT AND SET FLAGS RET Z ; IF RC = 0, NO ERROR, RETURN CALL SD_DONE ; IF ERROR, COMPLETE TRANSACTION @@ -2342,29 +2339,6 @@ SD_PRTPREFIX: CALL PC_COLON POP AF RET -;;; -;;; DISPLAY COMMAND, LOW ORDER WORD OF PARMS, AND RC -;;; -;;#IF (DSKYENABLE) -;;SD_DSKY: -;; PUSH AF -;; PUSH HL -;; LD HL,DSKY_HEXBUF -;; LD A,(SD_CMD) -;; LD (HL),A -;; INC HL -;; LD A,(SD_CMDP2) -;; LD (HL),A -;; INC HL -;; LD A,(SD_CMDP3) -;; LD (HL),A -;; INC HL -;; LD A,(SD_RC) -;; CALL DSKY_HEXOUT -;; POP HL -;; POP AF -;; RET -;;#ENDIF ; ;============================================================================= ; STRING DATA diff --git a/Source/HBIOS/syq.asm b/Source/HBIOS/syq.asm index 8350d915..29126f9e 100644 --- a/Source/HBIOS/syq.asm +++ b/Source/HBIOS/syq.asm @@ -418,7 +418,9 @@ SYQ_IO: LD A,SYQ_LBA ; LBA OFFSET IN CONFIG CALL LDHLIYA ; POINT TO LBA DWORD #IF (DSKYENABLE) + #IF (DSKYDSKACT) CALL HB_DSKACT ; SHOW ACTIVITY + #ENDIF #ENDIF CALL LD32 ; SET DE:HL TO LBA ; diff --git a/Source/ver.inc b/Source/ver.inc index af20d72b..1d42d359 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.26" +#DEFINE BIOSVER "3.3.0-dev.27" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 99efa83e..8d53d433 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.26" + db "3.3.0-dev.27" endm