From 9857dda5b5ab2fb28f081eeff74826bddcd92eaf Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 27 May 2020 16:44:52 -0700 Subject: [PATCH] Finish DEVICE API extension --- Doc/RomWBW Applications.pdf | Bin 141698 -> 141698 bytes Doc/RomWBW Architecture.pdf | Bin 427740 -> 430844 bytes Doc/RomWBW Disk Catalog.pdf | Bin 130980 -> 130980 bytes Doc/RomWBW Getting Started.pdf | Bin 170905 -> 170905 bytes Source/Doc/Architecture.md | 37 +++++++++++++++++++++++++++++++-- Source/HBIOS/ay38910.asm | 16 +++++++++++++- Source/HBIOS/bqrtc.asm | 2 ++ Source/HBIOS/cvdu.asm | 2 ++ Source/HBIOS/dsrtc.asm | 2 ++ Source/HBIOS/fd.asm | 2 ++ Source/HBIOS/hbios.asm | 2 +- Source/HBIOS/hbios.inc | 18 +++++++--------- Source/HBIOS/hdsk.asm | 2 ++ Source/HBIOS/ide.asm | 2 ++ Source/HBIOS/intrtc.asm | 2 ++ Source/HBIOS/md.asm | 2 ++ Source/HBIOS/ppide.asm | 2 ++ Source/HBIOS/ppp.asm | 2 ++ Source/HBIOS/prp.asm | 2 ++ Source/HBIOS/rf.asm | 2 ++ Source/HBIOS/sd.asm | 12 ++++++++++- Source/HBIOS/simrtc.asm | 2 ++ Source/HBIOS/sn76489.asm | 12 ++++++++++- Source/HBIOS/spk.asm | 16 +++++++++++++- Source/HBIOS/tms.asm | 2 ++ Source/HBIOS/vdu.asm | 2 ++ Source/HBIOS/vga.asm | 2 ++ Source/ver.inc | 2 +- Source/ver.lib | 2 +- 29 files changed, 129 insertions(+), 20 deletions(-) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index df2425ce7ac63b6f5b7269c49e16f230ccc15fd0..c2b1f54df2dff4127026a8a19db5edf530f50e72 100644 GIT binary patch delta 135 zcmZp=%+Yk2qhSl<;{WXChNi|ArUuhj{b!VcakiiR&lswiU}R`wX>R6hWMpn(W@&EV zYGUbRVr1^>Z0uxgVr1lOYNudBP)V$UogG(kNn%k+MNw)Rm!Ywtp`jUs zHaBu{b+t4%vNSL=cQkggQ?MbZBv!%Bj;pvNv8be?C^e1C(Adz>(2Pq})z#mP3jnLf BB)$Lu diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index 8a35983bd449ad8c724696a189a2e7f1c8455b8e..475712485e0b41647afcc571eda6f6ffe6e7d9b1 100644 GIT binary patch delta 61735 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 delta 58713 zcma&Nby!^8vo-hv4Fo4ZaCdjt;O_3O3GUi2uEC*$1a}DTP6ELpxVyVUkcK(=&Hd&+ zbLX39<_~rkwRfFUN1onm)vA6eCS3hOn5Y5EO%4&~g`)=tCXYI;uwzO;JjLiIqo~;Y znXmRF6E_3}eze1t#;YzAl(A$=bHs-}$4fDIc9ww>aeObfXkBIoY+NdLxOGQ!M~ukVXcOAH5ch*%C9-2pB=lLt_)}Q`pIYeaMS(5>=*8DY5v-C ztW|8dQPOuXjSAzrOvC5E&kx>;XL3*m6(U9O z&F5rh<#Nti*@Hq7jqrctyRyq~JpH3pbGtX;YG%A+ZM z0QU($sRdJ@?iN)eeL6tC^$=(&e1^k^BxW2?`fBW1 zbu|8`%H_4Xul9CppN(v7BO#^m?MEYg>)}VP@h43 zBKu&v48o(?!?}SyqnXp6&v&i*DbXmTFwm4T6e=(YxD8+E*0;Lt!J%QGK{&Sb@;c1> z{xPVb^_xMD!FS%7njRIn4x`nL2a@uVuXEp&cj}aBevd^+y85)-gW{$dyHrc5ehsT8 z)O{}^*pC#b<69?uKwiT)6?XUWrY|qZh?_Id0+@`?qhSri&1v0{g7=(rypNgLvDiiZrYP%xIlvKsk-;QPina{+Vw-jFuB1EhIQg+ z)3cyduDe@`{9;&bXl_oL(upxIh{ff&APQy#OL7?Vf9mf4q|>2XTWlfkI=iKH%LU**6F6R zso)FFtEEeLMQtw{Yai@GdTU)35Ga$b_`ax zab#PKpIYxUp_>pLH?n{n5BHf0GkhRFewi~C$|KGhE2(WZL8-27Wt&t+_(Pw%Vx7(& zH`-xI^ob@IQ3?1z(6NviYc2v4H`-tj7&0ZWVx`8-qNNM=^Tcgae-)@Pm3@(Z)k$KE zmH3`ND2?7)3`!V*#Y<(!1-BNY|AO@{+Gf5)owpd(2tF8t#YkmlzKl6$Zn)j^aKnw1 z%EM)L2`7q`w4fic=;5!Z=ck63*E@y$iySMZ(WfAxOsHVtDu?Z0ac5L)S<7EEZ&vuZZA^}4C0_zNkY56?L^*M(x(g>J#*I~P+Kj(Rm>1~1HJ*+#&w9ZU!S-h)_oq; zA^0;hy1q1iEOh?2p3c>}g8r^|c-?K-IsMQNiyonnV!E%kjr|rqh}2V^#RWBa`kQDI z)7Z>(sUsF(T&?sxv!!0FTxOxvVmiHvOS3vLJe>3#GXXV}SZEtX-7Sa-DO3NH4c7Ju zNe5>Dun-KKOu(GUbwgt5k-+8AY&H%W78f$cN*3qW?}AXov2Y_L@|gwter!hX9c-CB zDp*Nbs?#eBnyHr+DimiF_u08gC=c~zeyk)1EbYc0lwi+y$|_|9zbYK+3=-}AB+!17 zzMqScNx?P<`Axdb8$7ieRx(tj0Q)H-Zy0HON-qrro<|O&rEC1RjuEL!`!{vlJZ6;y ztg2;rWo_?=Xl;ef;XG!6d|Lw-9fsi2IE^pxCTjY{pd3aGew0pez+y!*(WAzKQLJ=P zpH+hMrcTe^OwOO!PQ>9?RB=JVv2>MVWCSc_xsmNeWZ=HEGU^pmRL`sH6KlwRm`AOE z2S?M;wIXm&eKs)%uC$4w!HTOT%xoCRDdd-*(UFarh=990{-=z?^dx<^5JU0bCAKKs zz)9xGt2AIAK$gQu=OJT^G%mUzMU_K&c*4rmUJ*$>zYzc6sdHQMhF#D@j9D61D<8K` zTJphq3~)jE=FFap4HOLuNWwzMCv#w_NrE&QdLMLZgFz-BK_4fV`O0V$EM!I1OUkk; zUF^ES;v2#=nafeb?fVo>3|<=^PJUi4 z3rik;0bU-f&~)pTbZZ!!=>ItpiE;tcf^q>X9swre!(BUJYPXSYkFfn`H5O9YSj)_y z!--9oY*QcAkT=jghD=5%x_x+o2qjk@apUCCF13-qg+s){d&rv#WVNe!9?{y!&R)xT zInxMCOA1AqJBu92)RNvYA6;6Jzq{Ei>0VKS#BL1@aLeJxhq#CG+3Gqww`(rkMdtH_ z`hm6C&X2c-{D`bvy0YIq?lrxCR?hv-=reYo89XY# zUER;0wIw#Rmc3_Xab?%&P~l+at|stk+f=uPO>`w7=&o6)iR-Ey*a(fo6vUkHV#gi$ zvABFr*@N&a2;y{=KYls5D=~pCmYvEKA%bc%3!{4$BS z_WC9RWfJjkvJbF_nmu)!?|Es~fOAnUNwjmk-n{G-zYj(}CH%Q*oPJn&d=`<8w@2PV z|HGz{t#jV`4X^R!$$SabpY(HP&Vle(R#EQWas30t8&@*00NSq$$cnP=YCu&-$A#!U zg_|yAQ3r2%BYLo>%@&Ns44u8srqER;L4IO>g?b6g_9#_L5_#4Bl+Fz z=`w4$JehSdQ@4lp;rKrtUj@KlBhfoo$4b^FD~KK?uE(E{KI8q3Yk2ae`<5tGFts`;$#)rtmkSObWyMlA6++qtC1N z?y_UQq*e0D#66{_r2Yf7*IHSXRQU4lcaB?T+O%OVs9P%$8I4= zq{mS{AqonOmzQ^gJmXCB?f&A7#lLKHjbd9W@ULvp;OuUe(5pFnn+x?b<<<<9xj(wU`x4DKD(>()*xm^-Emx;{F@1}#vtH*|YF5o6 zY32{(OuNrsu1dGH{-Vt;dNvyq|>gH6j&?!mESV@jvMBHafDO6_k53{HGr>Y3^4g9H} zeXXsM=mmVNljxBO>g7@!JH;C0QYAW6=z?XVER*PId5GTnzsr!$=Oa$!jD2aVdcuyC*rVwhizRm9Kp@0MS*4UR4;Cs))ZawLPK7sF zXMjTy`q*U~EDLhh-$atvhxqux3Bfc$8vWoHz-`irBC(RwMU=Jt)G!5AbY)UL=B{#B z1+|N81Q~lDSel4qUyjL{Me;$&oz``xACijcqWr9WTJ*^1Nyes!T_cRcPO7Enkgt;i zI5aS2t)DUpueP7=3VCoEyWii=s%`@j1Wb!k!UNMz4Iuu_zFuG4=g{!_TM!buIK;>w zjukxMt5s`3SBK{a!yBtQ4Zst^EdVPh$(sM(qk$4XB80FaO;detnZr-qt7u|rEheNG;0 zZ|yF~^Zmr{fSl#=e#loT5II;4DXMX>q2ESG3`O{7y#|sNS{MyonSqZEV=!;lj=r0O zz7}}{;1*$4R8>R6T=tRiNzcy9#MCbbRS;yP6&H2SS`=fId1IyvR+(%9-s2C!O+4yd zvKC0l$5g1}mmuJN&)U*|`c!}r+B=QStw%jSFNFsC6ENwCKUn~73}9y`goOoGM7-1a z5y$(+(Z8HgHq{GU!Ix$zgaoTq(hOJuAKk>IUKnW(m~g~r;q)?xZ`E|d(6zU^`2%qF z@6R1w+SXHgMzgP5VT!U~4OdtHYclC~DqAgHfpEnzaGcz{e~S)`U}a4rd91D*rl-Z2 ze^)C;s@P;*{s|q73++Ww8Z);+=XCfLBaX$?Z}#>)evCm8yy&UaFI3*4eJ9ApWU8ZM z>zQ>tIie+YMq+vaJqi88sEN+1wa}8rQy%jxWv+4|<+$akqD@~J?`A4Ewp@i<@ZH25 zS;8c1b-N;D{A?(*9jwoLlV#&!)`ezd%4*X?`nJr&ZxEkd?yOK)Gm};z!kRTjwjg%# z&Ex`VJ6S~!8>0BUieK^?mJNKFQJi1 zcO~bOYg==}^wp}5mypVxf{h^ca^xh5xVd0uzm>%`9dtIu(Ab;qSg}rF!gxu6^&bh5 zka5Wdtt}ZHM40m)aBa$U^gXGJ1{5&M~^K6<~}xjQ9w)j>Yf z4?OZB8KN(9U^1S<5Pp`QMiZqNYZnVw0dA!acBe+@oqS==3U! zhsQ~&Iy=wVQ8Z_=;Ire<0=CS%F=IHqMLF2522n)lUYjz?%P2| z21zIw;4$95F+QQ&N0$~g)8`~sr^5o!>9W)9+EQpF>2bDmUTOY!RL6wn%W3$G!bw{q z==_#Vx89u-Pe;!uo8t_kR4`3AS)v#?$S~gXguPLRut|C2lhq1~n-Lt7`Xp=nzO$F% z2F3S|Fa5JSdk0Cs>N%bKniIki%1H)5g_#L=4ebY~H!*K(qH=e1vvDl5;!Xx%Z5fR(e(~ZZVYpq;?nF z0LOb0(W>2M@t%K&d;VAniQvaib;((EiF6JH2_}fFe-F}oEHr7Wob$Q+Q!9{f8gN{? zuz#M9*P_pgH`?Ok^>m)5@{Pv?o`ciLGQDoyeph*o*?noX1%`Q{B3{sxPcb!AAJGt< zPB|lDcK>@}8dD1u#1Ns&PT=ef-0JK!4|dmWyDaPCVN2=1TXOV18g1+;J_^Ex-p!C6 z=SMo|JUbU5WV$<+%|#rF@~E*GDC|CU>#yS;F#I^?pKPye=(B0tMelg|SbEx>(yafc zjTKxlKi;|+5|a|HlRxdyedy=-uc|)-@4kKb;sxtE`YJTnUYy$W70D`cY}4M)8@%x4 zp?*rLX|59EpPk2u9gj$iZ-qyW9c_U_aveeyAC#NFiFh{8MlISHeGfI}t=!wz!#1b+ ztw~0R*YG?z=kaRm{WRlt<+D-Xb)9)!=FTuPa_UbFnn-F z`V+Ye+Qj>T*TZP47)g#q4Ep;)IgUL3qOzsJ#avYVgl)C@%&P*qRAOK8BzpUFHhL@? z`vnwomvMG{=>i;2>rhH{goh(?Q%(tn3=M!;Z&6YiFm zs=hnfeyd22yjR6!i21m5I86ze{|%x+V{rrxP<$G8l?oOzeufbHg9ve`Qyt6I^Z9pC zX+o1%^#?w>4%OX5I1Jzj!5Gl5Xs#b!qgWpQ-NqD(A+^CRIaMd#t~Ujaf!-gIDK3y~ zixbJOZiVwKpeds--3XCPGHq92ewRILi1RE>UvP}XoKr7eXG*CLcatvF9wHNLi=`zJ z+?AiGcKVQxRgu@5gQOi`!M3Y*2fELpE?B&Pg9qjVi*SJXHt?ExFbqaSwrri4-rum$ zLUQ_hL|Q#3Qegs_Br%X%+_qX2b?u;`xH?IUB!#9#8aBTHC+(~=O}Y{)6CJgrXaVhSD~2B*om4Qj+W$_2w9k`Cb@vs=5#oKVp5Yn?!tn**8!& zcAtWqfTolqHKt~Bivdn6Rp_z;dBiY~NTz*KUNctI6%JNmFC5LR4lGBs5)O_JZ6vT@ zJ`scyT}7kyU81UR*L+g~L0bj$WEd$%lDF}q8XVk91ux?|M5|Ed7Q!$23wTD%0$L*C z*;KRhn66c2^ymWlR_a`3C{}8FAlIbq;3eTE=YY^&E?=!BrA0NVH0&@I>)9OzbK2Py zE^`VQ7VK~lUo8P~ezh>=N#apHJhjaXW(TI=C<>W0Y$;}6Ahq|h@3mEa7lm;Cb%W_* zE9jy?7K=VI*FXkx1yMl8$qa>F4ABcFW#2*DBpelj%sIn_z}4X)m+4{;_$!o!g#3|1 zp!K1Q1VSgN0VmDZ`%oTo7e%ByhXN37Xa$`drrTe)5AaCECG!6D<58EOo{b=2APbS` z%AlW0l$^t+UcQ&4AQy9yh0#_`97v=pzm70fFl$+e5DM)T4oEr=`1S<;eGX!|G@E~bXa8w999ITxD zT#)W4IBr62PF4X9K5{3|&!3HvMMaUVovfTK9FRGAxgaJ{aAb%a96YQ7yu1*KAUJFY zN;I4)$G%-Fu~jOQ@^GU&O!qvCVaSv~Xs$kj+HT z4q4&0uC3Fte~-59pYk`8b#Ae^_2!wo&u#c*&#AHmJ3EKa!_gUC=k*(b$GS|pmlPzG5-)?yP`ONV~MzN~LdwiwvB7T*Msy`1GIuV19VieW&fsHp-gln}% zBh6sW0_5-fB?{+(L_|;^n}lfK~kt_(Et8a zAAFIUE*WZb^W5RJ&N_dl{3h$IxX~V3=1N~NUgzsGo*R{wqB=OfGzXpYXns8-*PBr3 z{vLQHLucHR+tvOudJvZdPAT<+_C#g%$(sgoeav=pa_%TNbI5xgAFl}X`2$AJm!06x z6@D`tUvpbVGrmCRH^w<_J3z9{&Jkf1ZFIbUs0&knPF3c)R9GT<7wCGqR_qJkX?Fpc z%WZl_JW%4R6kJ57yCKn?vGc3#xZDk=41| zcD=qoenaWfF%YJ}vqX=__v(-UmkXOKr@B+j4YmlMPJ>fvOYol{FYg61;}#+3g~+|; zH{3I{9OC-d0T<7wqpf4>jw(3$aL5K?hWVJEfbWf;n=eN->r2(oxuZ9m)~5r>gn;I{ zg9jufQ)QY&Cbz|24RB<2S6N__@ORBp!itMX#0j^c9s(cmoadoKTiXWg1I2Ns_xSnY z$<}|@n#KYR^>w9tZL0oe$k$Z(^CV02 zU?L-KTpwdQ8C__f+ant@=*cP0B;=XV zA7SSeA-!{OxP%cffas9_%P+)1LJc>Pn~EV8YM`cPQfDv%xtxO|g+Yd3%)>FiYZjm* zzFgePh19{r)543}3?pSi>}>$@yPpnQJdCtNK|K%0je-SmbW)o7pZq0F@CxcdJo z@3UVG1tU1Q03~|rUO=kA`dh50rU0ahFo0Diu(CJAu;5p(Nbd0bT2Zui`WPTmv>6Iw)0Uhcm$ z5T<0{wc&*%$->cL^9lg2zniVFFfyAIxgjSnZ~7A)Eu=gd4jWh#)C$-;fc=5@ZzwsN zp1uJ&2RlDGw}1dEJ39n91&#*ye@t=maI$jo@`saJaDC+$kKU%-{qfX`Jwf*AHE{a=U5|#sjR_>*N&4NqYapvb%<)#gUA~ z6RWXRU! zFpJfYIaWKjJg*IieD6MQZG}{v)UfqDZcRP@{y9E_Vt+Dj-q5jbvlFC$IqG=;v8o=XMM5&Gk8ORmpzDa+XO*%SE?8IKZBiNCa~1 z9u>&{;}@|u*je`LM^VmSq9t$DtrFUL+XxVg=w~E>WS=~;w*4qP1Fm$RTwApCKVRSM zRj_Iz%-~Hzj{C55<0dT1h&7m>n9K$&%CM4{pDNXcE$k}d&89YpsP#}ig9T6us^8g) z&!X)yN3~nxqZH&|T8hu2lrTs6$J;x{OOM#xRRM=792(4>dX-y|27@k&YKNe41toEBb3y|KjHp- zhb!rItEGpk|0CNIzDWW^MlbdFJUQUmv;nms+29T8bV@3x~*FDS&}Y^1Wp0+CiVH@!eni5BVZ((c$pN$Khrz zqHIGEVqbCiM^$UJiW&}8;m+2D;l}kYZ6&@8sNrTeccy7->!a>{v|U2d387_Kobo!ZR`2N67S{tWToM&7l@EvtrtQoYRb3D4$QNjy2C%4X~JG>NhXY^OulB%&Mxu zxF^v-`%>3OL&{^4P#d~9gnX85^x&z}u>5yGNf}KNu(t4ly@?13h$uAsYmsm(I-%k) zCH1awv;l8S%r6C+OB=QHZ|oP1n?Rk}Ir#J!mZ}Hv)!!1YGl4~>23U%rbSRYXYdewg zq%ksE3+qlnkbebZDdhRVqbe>8MRoYe@e}pfMnswQ_!`0WFCblbCZ7Je62@2xPY-ir zah@qXuaHmTMBm4s?R9bF1IYE7GYlnxqww{avFNrF=rP$kp<60rufg`!W3OUKcL*Dj zJkZqlBZj3ZY_6LDx5gL~$jn>1?ljC-Gq_KI#s%ZusH%%9KKQ#B%HJ5F7+|F+yPm!R z=?ycGaO4lY^V&!XV6P>Ow{ldzedm#$zo~B5*ejH}N9PkaQ*9OR!%ID?dWqu!Y&oiu zmXAm|=+?kORN#?aDp3Qwmu+ww`_5n_O|2KL9}hj?#p3^DTL7Wd4+??gHvmp}!ckS$ zO9gsI2`%`yx1b-9HE+TcyBm?pe-dxjD|~18vkq^2ky0LVRIdi+j-7eHF^&-a%>U54 z%1k(K$j50InikD0xY2ho+%059aH`0_r*k!&Hxlr9&;myQ3(L+6e91FFnA+jc!RrN6 zU)Xfd`s!2rhi$M8m&YlFgVTTEGEtUaQZ>IpE%>>(X*7qOnoZ84vkAr|`3P%*GZ5p5 zx`^7QAau66bYSR@A7yz`WU{)>vfJ1608O*4agq^>XUjSn|J?R9`zdvhAZ6wd`lqr1 zvSI91YQpDCxBY9pLf?olMH2}N?D^s+@V0dtS>1ax*WYpFX?W<>TyD3b&GqNm#kWhU|85xmYynwk zR9$cQqVLs!m+NN4^QPv*1>J?^h3u!jx!Ci~`lZ`n8_K#j-DN1%Y#zR@U>*jimzRr; z`IKovO|&7Z_oj7jD=r1ctu3bA;XPJ(4|yi>-XP zep~%O`snp~+A5@rT~6`nvq9W(v>l!GTKBETUS}}drObCn(@h<$iDR0w+*#1&bPnN3 zrrl9KQTXoF?6U&fVjGA*2^5O0g##N_o!TX`R!W3)e^MIj9WP}`rW{{2qbRa8cRN?x ziU}NeLk&NbFN}9AwR@#j@A~R~Zf?ymR^4c!PUnpg4AhAB8P_0%QmaV z_Ld$E4%jz7_bcF{r+JUyCF5*XCj`Rtvx-vx%rRVS0*n&RTFJnN7RNxcg}ZHI@1uNp z`%XLkD=QcDneO&5=4oGU;~LuwTxI9^tn?x>vRUI#euv}Kt%2Qty3jWpWPf*O#va|B z<(LQ3Yc2^;Add5&K)b)Ad3ukP+2;n8JUmqH1v=|F*1&-kcP6I!&k0+o#vk`So*EcW z<}~Q$=6>Q`;2%;}73cISH%1CS^gC6#-->XZC+qy$gupXcCaw8eAo;BjE11|IH-Rk;TEyn z;iG0a(XS40W%F^@5syGljC-0>!yVf*vj&T>l89@rZ%%FVw2D}6Rv7VX@3P0Nf$jnA z@?`BQ;z0#Lrei=5!|_Y#3nWs46GzbBdg;f*V7(QIN`wZ4tp|GS^L`EQQIA24ETVqX z%ee8ZcT@rB7_hmC?;SLhW-gF>bhh~8GOuG;it7!QzIUG#yt`e_cxqn)Bx28IJ^zL0 zi5$GqN2nKhdB>mR2^n(tS1cg!qOlbTqgxkt$`(@=xR@ zDNjm6?+4mwc&82lKBUfgZAUeMO{5716yb#qWR%X?NJ6UM(#$ly2s-f!f&|d{$-m>< zYU5yuWWCcGc}474Nd`(O+-FUR7-n?sSuDNNNpvhd;t`EpL49h6gZy8V>N?Z_r(AKe z`>PHEYBBaKz$3XrY?J8msLhkgv`~S;2at`+=x6KXv{1PZ|JBpOVSL|KJ7jt+DP^Nx zhBMna1fzR!oZ@N|jAEgI+bSC$4zK0pGNrc(Qx(bL`5qS*MVJD?Ja}Qy#*#-dFxl(Z zcA{Khj4HDWh9=Or_Fg0wYB7{EKoRW%w2x8ym?z0`>ZPcqg&gV;U!yP8F+XT<0G7dp z1ti}ZL=XOiD~$v+taX%y3{ZSgv-|>xnW+O5<8naP8!nDcrC!%)!;mxS$TYSAjqtlz zsEr)6h&W3gKkhS&IPv!ut64fbT%TZolAxh;G%S*VGHB@S>}bq!oBxs*G?;X~Q;he3 z7Huatlr-?F=H9|dYL9{>e9hB0HF8D1d;yIxYR3g-XG zT6LQ2;@@$LP|*E0dA}D2Fxi;U-zM9*!PC28)2z4Fbv<(Q0MVt7_+cQQMt8PcD*;MpZ$mmH7y+J& zt%(R*?|)F!^oXwuF+e9;%i20SmQNVaJ+_bCS=i*e?ifo8nFfNu5w^-_kw|)*@IQb< z?*qMWeM*>mibz#!mcSXS*22aCH!h&<_c2S@U;QuknU3}K1I|1n4ayxWkOm6rh(;s} zJ?tljV0cMj&u_#`)DH;>2gz~?{{$Wc3jD9-OuH!xfJMfJi~*+l7SOLI9cl}##Md(e z4s9XzH|lGz0lVcHUW%R&Hj97{z<1@nOphpn{iXhzN&0{no*yt7e$0?YX@o$1MYgUk zk`k2llAN69`Vi^3PrGS2Ry|!kubrg_J+fP@e!zW!f#l?X@LJyW!~JH46p^Ps@5K&dJ&1Cb~2^LZRnXoaKDBWJm@Ptc{DgTrz;VJG!Ua% znoP%h?^e=LI;k}2HJN#AXCO$d4aW;ljcu!Ax}(GSe|2X8 z)QLH;$kWl8J@_~f?9NkH;Agv9DCjmvZ@gaoBA}1$}AOTV$x?`lXQt_v<=$R*5kN`4vZ$r2>OiByag* zovfhWm7G~%N#m@sD)dg5Ee8p_s?@lrdNWP1_ZGPq@O!UxC$OF@{!CES>0gmYPSL`W zMONMo=8I8raL&xQM}x80*WUqe_jlgV4VyYr>QBpFbE2F_=tzEdv5`3MAHMSybH6v{|_U{Nj|$n?4rL>Cn*M#kx?LRkGPZ zT1IT-w9-^T)25T<$}SxVRKTlM=90vevuiruj8yrsKNPUcRvzGCXPuncbb1O9Vd}%d_PNiELF3jVyM=&NY5Jo7=Br99hCgG@dUEZ}eu%tb0at zURW3h$03xF6jX@C77kr8aqod8HSavqp8ICVT<`wuzJQ0d*S8#A#C9B>oZFtX8g?#n z8Qpm6211>(0$Xy0JD}tD`x50k=WC_g&-=|jHC|&jiSFHb+FBmk z?PY#3>kJf%;R#)g)T)N1h~b#?q9Q}>rs5yiN-*H$1l;|N`#TIL*?{JDST+=rC(-HP z7Q8bxx_vwET_GZ(c^IXi!Q$eW1Ydgys)Q=)BSWcrAFmJt>AilYljMr|dUC@C z;2XJTBX>vKR3J|KC^9SZgS1RG7B)_n;%kg&7C$#9=wI`%FSte$fhrd+7s~o zi7Gq3e(rG9{%pG=2^n5bah$1+Uv^@A5q5BO?^qjykUjT^HCLWFMy@<`mcOchk*)DI z{t=D^6UIo3=8`Mm802E0=%pIgf$_%CN_D`DoGt%ZDp(QkGPGBuxW1zIUs)PfaA9wX zXqx(_zOEK5Y=U5SJ}4o*ApRSyFCe-U=@7y5hI8f=dLH^H}ESR$!RN-%^{-694U zl36?9f)VTEDAi;7(WMJgxjm$l=&fULr36}gE5IVgaGq(BdDxxhi3L~yji#z&|K!uW2a1FvTCYL6iF_>jCsvae=!zL!?`(yy39z>TIz?lp0Sm-eJb z4_87;Q`xi|*29S`po&yT=`|!l`<96M7?t@k<;=lXd=ny`1)>HUTIdN<2wj&cz)mQ= zPgfa|AkdcY6-W#(#&)BY(Z+I70VxjeDZSU0BQL>e{g1lKNQ3!vSM3P&rBP0;7-S(F z-cNt|5lLHtoHi*s1a@-wuMh8a#| zyJH|A>FW!#T1$=;k&lxUIK$1e`01j(0T&RFl^cewIz+ILX2jqEWrTz#?`iOcmDMy;7 zf+>%qUJRnl;H*%P?-UIO<}aeum&~t}NP*-{=<}LsV;)k~kl?S9P?avF(9={gbLG_x zv1#y;%K}0`ibzd7j_R-};(OTC?*wM&rI2z!X{w2sf8!LQ!Wh3MUANKBPDn*Z5HseI zPkC*mzyu5Zjg%@0TL#qK{{$kq)xxXCQG-QuFK-`S3rR7^vJ*c)cWD!HS46jCs6;J2 z$_xxI_4WMo>AujQh5ZpO4hDgfgM*bz0HS^g2(fcdaGrp!%h3hH0PZqUOd)D{-+fWD zNfBwD){K@%#HRh2mo^`Bs&Hz@cirbztg~CyAC-V6FuSu+%7NeQwV1_Js=n%4B@y(-Q&Mn~F!U5~c zWT^XiE}IF|M?2O8+|pwCDbs6>mG11%svl9SZ%Bt7{7u;tIu* zB~O-jBM!G3LfJqZAx8h0KK!*6u`)f1>Jx+ig`ei>?~ue{@EoDDN!$SUWQ9$QN!;X8 z#9}9b?9A#|i!|6$>860B!CrKNHi4mC@-BE$L~Wk#O`9`@g366@SL`)YYr@RYQZ!b5 zYH@%6iA`5vMeD;K{;cLoKf!N~=lgupr)*7|j`mGwpVz-lM*O;nko}<3q)|TMNV&6P zU+g@xRctUs3npr^>8X6Yev}Rbze$;nAKQpP;h6NBpbL#fy6=G2r-NBhLWS&#+6_mD ztjYKNB)|JgcXP~Zv&_ooO1jCGle)WcnSDTu2InnZj>Jg zx8)y?P6|z#v}B!iKG%$2pOU+`tPvZG1U&Cxs2*DjZJ;99Eu73fmF=ngp4-#lKd$KK zzc%R@0*C9|9P7MKcH~{@=$JFh_A(gtBMdA*SbNsc=Ja2;U-I{SQynnkTV^`ml4t48 zcy;eMI-dFYskx0s=KR|vUu;%2Zne`zuxj(kaekLn%0tJ>(+{c`eNJ8yhF|ijKIM!$ z9EHT}RD4FeAwv4imm9f*Y2_)%()AxyJb_)H3#*{ zhiM1w$;fAIgPQ4xRW*?wgAW#B1eo3!0nc;@9hQyz>aEPPlJ?@t^WV91`#6SKnkZg;2$61*Cx^pzb+`3?>rj(w1c%&#NrH0St5jeN{6nER@^mwPkoO`kriR~DGyAglKoRygL~%z^P*eIT71y`H z%Y;4>0bBJ=B?~HKqo-)HcdMF=4T`8fvzH<2oAMhY^p{m!pJ0MdtVRn#34#USLuLZd zxrddME4@PxmilQz4u1hZ4&39v7U0=np8tDi8zFC=T&l+_Bhb`VLQju%1ZoO+h50Y2 zBj^e=ywP0$1w0G}0JgEv0|u&3YSbf2g7Q+qD1CV%;c*3O=&77BFZw^P5 z@a;rC9IP1Vx`qS|&LU)-1C9v%AmD`R!@esV1MN%ByG9}=h8M3BWAC%L*&Jq%d7((O z#EF!k4h~#LjyYB%M$W)u{MK8?Y!BRHLANpwSXo*Qda(ovdei6}3mJ8Kgn^Iha_WvD z88p~Gr;)59C8f~vhBd;9v6Bml)pk`SaMM-fa`2lf!Zi=^QbT*G`b5F+i=_wvloP>x zO6AntU+W>^wX4pA#Lp!Spdb|MSpWqEGc$inq~dU(fjN+>O*NXpQAa`QPyJAh3x7V8 zmyQ)>4kQvHV?bT@-`J-q^`jCcHavhu@__|B)G*SNpODfjF;D1y@mmwci?RFt+(Nb! zS)Lo=)QIaLV}@|R&x-#W>b#!~4+^FHFQ^mbED9kA1W|$kh;uns_acOVESw_ELW9ZC z51coOCc!{~+&Yw+@mroay!EUG?0Z#Q0H`4K*WSnNsvm)pq}~JBP;1J3*TAZA{+o_> zf7xlR5AEN$|6dsAzaS3ye}i!h*r_N|#Ltvc?S}HNk+2-!WRU@=4+Eeepi@lVQXoo>_@5nTMYp#InT zD~WUQaQvU*IAj6@`ia2H&cVvd37LWiVM8k6K@{);T&$ctkl*ki9uPMdD-R^86%GeN zf&ijG|E$$R0C~XhL$*9XOkhR#RbH%a;P>T2@od!bBIcR-Lv?((uf-MW5B7?<|o)w1m&A%j`0UuHr9!p zpwepjRN?3S?TR{D-ah{NwtI`Um*pJqO4peSTvh&l-s$aVTc@|z?Z}0LrekIArdn{x zS%g!|F|KM=gUK=2rSi;H&t~YqOza5LZNprz62rxaS%8dAWUc zys2_H)7L~VMfOjpNBdLjQrGwIqijPCw^Dj|8Pv;+rvZ@C$_{l#PL@G~3aZBA_Pf`` z*|{Iq;KlC{$&BE$k}SjLN<`i7e9tRq_5TJ`efTMCHj^+O&=WWNVcc8)PIi|sb-MhI ziM(FrAIREW{n&$d)@ME2mCyK7VBrHBMfWkS!)NoZC6+}vulGkpd^Vo64 zac+X{j1#_R1O2Aq50NV?PGz1e=MKU@AdCy=@yaRh-6W6h7wxhu3UU^oD@LNfk5m=5 zHGKL!uN%lCeIu0-GKTYfUMqBkyC3@GtHL!|oXdAool6(Um$JWi=cZTv3oO6B&Hl@E z(Fm7{^w&8yT~JVy+Ki|exLdBI>kpPl!$;!lSuwXDKAYJcm%;m7c&f={VQmPXard6C z=G{O8cClNoTWNXVJq%lJV992seRKCpl?}^lmr#2&naNt{I}GC4JLavxtl9Fw4R*F? z&&V5%_nXD1bo+?czj(I8`oUwjzTF$n>nby{@kMjbIc1Giq=a(IdxZ$oV-cQwKkx3| z_Ey~%$+oIT*p;h>=SI((=g%=9&*uq}Ekr#(He#%V4wz_ZNTcXj8!v3PI1h4hm77-r zUEP<2TKmriJoCN&54yfPkm~RMKiq3&#YMx;xc0gO**lwLmA!W)MBGRTl|;QNo3i%| ziH58YvNMu~y+R1Tb1(II_kMqW|J-|CXFkvKoY(91JkRlX)hvjk-!!ccT3r`;nxW^K z>r&}8a9?lH{k4Dj>{lzCcikjawCd;5?JuvgbfP5=v*+273>l+`if@DxV~gg!V~;+X zFb@*$$$#bwH(-0DQtw4y@JsZyDP_ELPcquKqu?o%aQV@*?dNe=I=i+^`@9ja_0K}U zPitbvg*l1Lv)odTbi_Y4_YHp>W08!U+vHqEyH3rCgy%OlHE&n{R(OrHihH|yA!@1PR3&|K2@Te`FdnPu)DY^uQvt2BX zAlAQJoy)Og(~=IOeW2`zypV-3WTDi;0HpxSX+2>fhtC&KV2#T zlFLBStMO)opY$~F^OPI>ClP1DN1!`~q!4m$9A*;DaB;GT&lI~e2N!!1gd&JGZVaXmE(-Gtq;RCP3P$f(kyl|h?%YaiS(Gcq0YQs|e{StT zR}N4#=_3q3!6wwTE$sJ&Kqf1NK)zZAA6X3F8^sb+RdJ*6>kRie4+lpj3V}9vAF>F< zE8a7>3Nnq99qBdAR~&3VMIbZ{9>MN$y;Sz)H&o=I&*7&40!^obK`zWK;wYnDi=eQP zu|U{y4S7n+k7rat;9ZnMct#_GxWIkILe4cLy}5Rd*>#Jo?=}-!q>Oq7=k$rg8lmt{ zBz(9vn4>;Ei{=ff)2dXmDOnhwZ%)ah==7_Ud^u)XIRp0vlyk7o0$Sn2ym?Z-V9wFm zhk|9bk=C~q!}!W_jET>xgoCOUz91>wj57Qb@jNFj0z@ZXaxh$moz*8k(WOWO2Dps? z)aFIe3uvFVT(}O(o4Iqom*8YLBSAWQ%20!$PdYm1YIv<8@WSU-Z({hsWAve0b?t_% zKuX$}kt(aMv8aQ=GHgxjmdxXvG5iwG$X&+Q2s5CNw2-&IF7qhoB^_Ag<8wdE$>^lw zHJTVuGN!LFv~9dF zT%K?8~;1tb?vKcLT91D9}&mD(Il+#a!9C<`I_1V*RW=QPEV!S?! za$ViDFJ~3*wPp2poN1e1dyrG9xo6cGAL*)LPqz+$sIZ-miJf1&b@rU-&G{?n-g!6J zm^Jli>b6(?iI-kqM_BG`+6{PKM6wOLhkP!`IBJjH_>3W|((OKx;y_}WZ~GuLyOUgf zxIHoSVe;XT)`{~;d0+Ew&uI4<*z$`^J*GU{KI@fbkJ~QAn61rvJ>LzfUdSu03##!f z_HFN~{8BRLMgN9bKH_a@IBf_hY!{Dj|&ekS0c{RRAYO==|%q2%W}^b+jZ;Wl-Rc%t8<$i6+RYz9g69yoLv8@QTpBXOORwZ z?RH&VPhVcLS9PZoE>xmR?y+FBDc_4h-l2Ds(V}_M%ql6CPdD>-wr&D@c!b5)=uuPc zhOu+IRVTc+yhilzG-zI{rTHF|TsAWRl{<`=KRPpytHX*K-DabvXjam_aa8}+i{rkf zV~&)p=XcM&J-X>T!t?7>X^MD~%xm;F8SZuRRM4TKq+k$u4tQ{+NrNu7wYCkzJIyI_C%m`)vE%cR+gI}& zc2_=I&vfCu(6{9MM&_M@5x= zZeNnKGLW+xyTy^cWjaE$7HCjwS^X1r=1$~mZu-oXk;Gu32&$tdbVzF{XNC4_-%PJrvEWlUhX_m z+KmMJxH~`U%z{303_Via>@6~3uB$|}u9y0K##Y27^C|c@G7FgM$dmWTT|M(eIc2n+ zu1jm<=m{g7VfzP{q!3CEoE*gxYQbG2qV(jQ&L{1)r(?I{1P8|lgev@6QO&(A0%kkyxYI--FC~;C|^=U zS6*^;`7V04*X-0C+1av{r_HbIm)o=T6C_O?zP#%YeT!?y@`{-ry-eMsa@A|2 z+LXcX*miE{!1!0b+Q@+5E9wTHZni%rk?!g%wR>2d`whwb(UqNcZR*NMUwpP*ioP7( zYEO{qiP*V{=IHsn{`+_Dr#5GJ@^$<7sxI}l3SYKcS$W0!^*UEZK|bl!=Ul(9kEac> z(Cmloc$uurIBzPSqAt$PzGlfuax-EM^dWwm$*1p_Yu0XJ+CIqXJxr1o^3F4LZOP4H zr!3SzjFw#QNc5^6mDMlRmz-*jGOZ5S=Kqks<5f2_&NvsH{uqZjGu_<#<)M#sV9|2! z>e_3#xlT-pt5Vi!g);77s=cEh?}{IXcXAJBHa;ydP{K`I-laueNWIyCT)JBn4U9*w zx#Ywf(L!w(id)HIi1piNuTI`&?g26uw*?3eT)9)AQaYa9Y!NwWpnRLDX*W&t93nDY zPrnsO4_7fU;HK2E0zb-ehTN2QP(a9%Ed`1nSQ)8W23@N=A}T{5MxX8(XQ2Uiv`zu| z!6}QmXp3YZ5vfUAvo1TOLtKoFYFw=3 zYjkZg_s$?`j;Sf73w7bvG!T(g+4%-@(C9MkC@wYhUG!kO)SJfzDn2)6@|fVfCIrH-_@R*7g8mKMqA9TxtK46bQ`Yg`RSfk}c}wfyT%x zz6VKjS%vhzo=q1wCAzbo&aEI&TRsChW%)|c5Sc!6=&&~Tji(IZT(gD@F7Kyorz32T zGKkGho@&CR$#tP^5d{SV(QjqJf&o_=zoUQeBryn@?4RsWSfR$@s{p3>gNh zAS&{^CQv?gGi3VHU!VfUvL;Qo$~Z;iv8g=6i5mzvL8Z{oZ_;`wrccMfD(@>M@Gu{R zF94en{Y}az&(j)D9s{w5-O+E-HJ_ljew@dMOzz&cT*sbPUfn`s| zKoKaCkVd3UoSCgab!JDEUUlQjjRR`lDb-U(Pon;Ls;!yagM=tfJ45}z|Kv1hUEEABN z9**O}7x3I}}10(yUsn! ztym^mPQi4V%^|n>ph-k`0XP87Io9vRghMK%2gHB0g7K;=u zh@^z@hbHioF{=k`oOJI&9@jTHv*?tW`gp{@HnI4@XKm&)@h(@6CAsfjUfZf0dFpAh&sq*LYOtZyAlM^tr314UXdP;4?dw5wiz}ou!xaF_KS9vT> z4%_|!+d;jzsY$=#VYiOt3pRl5puSjZ7jxuW+CX#nd{cwSyVHD=Ef#HKbw$h$@5Ft{ zAKe2t`h|H;oj=~P2E0Ad zCOy#UVtU?dOz_aTfq>h>*mzG}^Q!rRO}goc24(( z)Op~jH(eCmf-ARgJ$rY@*Dt%Ts<$H#Swb$+P&~g#+B*EDAgf@(T{-pjQ;TzcgJ(xl zJb#*$1Z9S)cD&blTtD9(O-ATd8{d3)=n?*O9ofk}|0!K6WOh9U-Gj~NQK7tG|qU8JK$uPOcMR#B2+wAgKEy?8;A#|Eo!fg z{b2HR4t5TjduT+Nsh#-YxxHF#P$+kGKfmy$&D^gIS9a^qgay9c~v<893E5hN5o1-eFBz zK~{dcweE;<|_t$cQ9|A>5md z*YS`$?yyRF(5R^M{2&JU7WAZ3oHZaPPRwfgyh{RR;NQ1D4&E>)E=YuZr1EPnYSD$&mB)kv3Qj3y0R954h%#Y%Pk-k7sEm zYZyB_vi`J7YHqyMcW$9wH9lHYVel%e2gjzwF+uPXLW)S3YKeMp zU6Xx0(Cvf6Sx-baCH%7EL089{oXLxGd1b?G7krX`N#$DNm}p;KdzY?FLGKv}xg#;l zvd6;dbB~8lQ@=#v98K!Bu9?sK4;K#41g3PlSBrY@c1q7vqOw_eb6-XuetVwTy`3oi zV&4vKxHL6I{^`wL{+T_e8v-#U_9x1RlPGeB2h%^hayY-sYsh>5W9r=2r*}K&FP&HN z_7nH$%WcT@n4T^gD3ciN4;s02Dw)~62qAu*YINc^Yl5(9|BG%Ul@fTxk&3i85$u$AJ3GA3h?UCswsiAaIx&F)ctQbZ&I z9gNtH=bSZU(K2C<0fsjXAbn}+7=j<=M?jkuCX}i9q%Oc8N&i%JEL}4}LJg?AL`IDN z7~edA1rCT{`ka|aTms3{TU@yQLQ`c!r1L0kcuUvYyKf?hs}Wq8jqSaOw}_cXrzk1U zV}BA|XVrYJ5vD;o29zf}O1Wy-9`G73d%&Ura1m?~kwRxKAlISDIGQHT6D?+lZBK4z zL+-LDgP8w18Wmo*Yhaj+n7q3><-riGB4Th0NmHXK4V-}_(%H7e|8g|a5hgeqeOaOd zve->H`kF6y7m(62T9E4(vu^c7yBrwoWR<9YI~t|@&(X;J^pjJ-V8^S}#L#AVBi{NP zJ8tey;?>5B0cAuaY*f;*cDNGmoIqkS4JCs)TAh;0zx|Ea{`ea)>P?u%a)dVm`AsV9 zWc<;DWDU-QLREe7Oe8`jK!g&O(!%@DLP8v9soLUjA7GD#)XbzfrQ3+qcDeCNDu67 z2q+YAx`gGsOFQHUf1O=j1^pNHssAhf+fwjwKy7MhpW6uj#YZ zKDPGE=pn`0l#ba=!x2^6@sP|zFgE0?Eay94NLY|dI!u6`H*}e=D2&Fe)L41weDKY1 zmc|C^-~#wBE#v){P5}QUMuPv628F7G;|G48WsAe0;q#N~YLQKnmp>R1FDnxPn2A7r z3PuAu_SQz2{uEGkEkADS*0?(?GHQF_M#h zrtwxnaaj5o!L~Q428??fm#OKVWnPWu({#|v!4iynfq3Iy72dd4+{_^Vf=&MV#*adZ z)~Xlhp2n!3HQabf5f|Te1}}w>UZ&TugHG_m#>g;|5+YJ!s0Vy7Nm7isq=*!1-<3&+ z55`Fkd|ntmg%pT<1);5Iaj1w7<_qzQ!>AyZ zei#LjSo|jx-v8P1;s}N*WCQ5P&&zP+r4Mj@%*Sh*=)m4qi`)#Lb`eoz_U0&;s z#Wip!JuNGIH|OxRVw=n8P~Zj8t0cs-5UL~cEy_C8@?%QKntDh)K*j8sx3t%F%UCYq zS@R$JH8|#1K5AG0IH~U8a763n3q?EIO(WjkZatR*aM;qUdCaI=ziww?wbJnH+72zV z!Uy7F41@Eqx%KzYcBb#w6TMb?=K+ppwey~Ic@s_VV5!wL8%xPLh3#d&-gnw>vA4sf zKKznF)OmA9`ku#No%duU^^-~{yC-O@A^;p_j@9#_;yWM38m4E1*1f+e%Wa2>FZQqf z7=5!)&r4F8xp&t}X?MulIuChUvVPHj)ag|C8+$rFO@7oj3}dXFT5aIvDeao9V%HXZ z^xj&#bEu_%ywR#?%!|~mz41b(x}f#-m4x|kk+`7b$P>23p{LGY9QE92AKmj<%!i5x zw)+C-w-(;_H0>05Pn6186@MEYd=b-EE)n8=OU|dXp>DQ*8k0>`BDUaSbD5$kZSrM^ z_*AXn$&#xs=LG1OM_h5_^97FwQrEw(N!P_%>YA;wRy5$oJ>ArW>4sB-%iAvtF( zN*ZtqmIWzSSs2+^r_YRUmsKkbM&);FDf zQ4{aV-aj&*VeByCXnMwfHYjPsz9?yHJ+$=r4YeZDjYqw&`licx*{T&&O@qJXEb%G0 zWe4`Y$l+niJQ6ccbg5r%E=y(eOM2Uyb5QpTuGHHx^rnxWm!yBDH<@-t<<3jft~Q_2 z$D&TXmZp+1j}nWVbZGhP!7(yb!EekUM}ODR=zVq!5KaAtR}P^~N~W_`OPAcN%HNr- zjk>g@8?g$=efbm@@R%ioI~q<1o_h}^v}eSKe!YBu(r8%g+X}9Mm9#NN{L+(!_0K^KNwKnvZey=Q zSJO}Q3J_^c`qdQhm#?`E6#Ae1@-1e*;32NNL;uc@J^eE}n~Xv$xfAuK)~KLjjSP9V z=K~P#i}3c0{;}ulq9^K8FU~t*EZ2JHawQ@xcO749T0~NOa52>(FYmkQ`jYSiuG@$pzM&tj!wfr263JH!r1I2S(s{ zv&!y-)ZXfFoDMR3Yca@hc<2m}Asp=j9>7HmPMA-~6wIEUV9Onsz0i2_))A&a0aHh& zK#>!CJYgCnT@tbuZ>G#Aiax5FvqV##FrSNMqX#J>`I15QlXf;fIcZK^b~uR=5J2P5 zPI*%;qYPSV<1(aI1pt=(WhI&k#JB?R%heW|3Qw6}jZx)?lKEm(Yi!H_Zsj$!5WOS+ zDIt&yC!Iec5u+^4;mEXk(R`AR>AJ7TIWGFmrlT%8LKkA_0Gz{JWv4Jf9RsGoq0gjD z{#S##h-1me${HE&l|6pyk$t;N%0W0umFd|v$`}QNBlnc=h z!TPz3J=Dd7Xr!+>m_0akPRxwO*Qm&@bex~NRBB50ik(jj{7uW`-53x(#0k9&`p##^ z5!S?6x&(fFZl?4Lh0mF@+>^fm@G&Up97mOSUL6ML5CBCyw6&$cq}%tteVjFG#8bY6 zFk)}>Ia4)e|XfO684`0D$=>mOQE{)H}{BJUoy{`wD&W1rX)* zJW?HCVJZT!#mSRKK>hkn$>Hl&GLmoRbF@q#9*SEE=2)sg?&7{WVH*Mbm?t8d(&^Fx zns$1c48YJ<2gnih+c}B=+WZ=b`JsoqnSGWOFtZ2nnYe%8XBL`E04Qv35_WU!dxuCd z3xMuOBecSI9RP8(s+buH-y@dQ)z>^yp`psp**g{CVdF~cQ-1yZRK(nbc^vE>JdT&o zLCr~xUX!K-fNyG$3*J-oCDy&yek_hrGc7CjLZ#3Jve%S61}6cGMtVU-T7dyE8pp;- zaafk4RGH!f_rn~3f!+)%xTl2y|DTsV0v}|!^+`;R0$9ub*Zg3)6hRQy@J$XO8tURf zuqafw?0s6yK@?D0XBgx03_VJK$DtP|G)pr>OasMx)=BqXhb<}6dDFqV`M)H)qf6V0fVHl}1YQxX*B3~HLf09^Kr z9KE)I0lTfs4L&@L@+#)Vyl!ITU^%a;fwy6fl8spqE}ZnbJxIS)F%JsAakUX3TB*PU zZPd4mB}&J1KDbPP*eLZ=R}kT_1v-3E$*vv%aK0`90Gvd3fFN;X>r2q9Ui%%Yp-fRd zm#VeVyfPOdUDTBe$~&2{#^*;Ee!}urqh9rrf3t0LhB>p>?gp`yBN@`#Fc_s#< zhLYofZVG^NoPt;-VT@2aDR5t^JgEE*1de{1UXz`eX%=DxAe+0Bw6 z65Tr<5BTqK=1T2u#2kBPfY3cFFc!j04YOeb5W=-#u2j0KrQ#j>rUL<{xUHBi-jig^ zkL$MIKK`Kk*;adgG-K1zcchcHy(4I=tqFDd;S0)6-QA#&)z}e>wW9h|oQ0%ozhdqOht$h2j5N_!K68(W((2alubf=U#SYfoBbB~>h6lvv z)(BkAuqex3@niHdE<_0rRA!xcA}V{@^%Q^oqaQL~^XzNv>vLJV6g_EiwZ)$0qgOGr z!+VmKno#Y11V<>~>=) z$k6%IBg5V_Z~mm5?sHFDu0ikS?|fE;L5c4zUyJoyR;KB#uMP#FO8ncHsZC>FH|&sz z4!j-=9uUvO_Cng#v}YE7;O-dOZKLXH@90<6eXO=vE?AYqmAJX6`g6O_F0@pDc~<5G!@gKPxQj!PJgB_BrUDe0G$;0fKy}2c|u-nC)bg6SG<2LiT6l2+dLGxGLwx`YwBG6l8N-Jihvj+;Lps5>S(j7J%sFf><5V7*pN^^zM1t)L$DnvxhipjGJQAp4rUj zUN~En;xIqqmv?a_b@j{lpnldh_Q+w+C@r=7Ty27hS{2cko`~K0;Z((Xb+_tK07>Wz zv9|?pX2!-Vy3$C~cMh#>__XY?yV7ZqJsH{b>W%-pakcf(dT5Q6N9_pi#azSkJ7z_N z%KVq_UR%y;Pk0@|)yw=MO1s86|5FDu`>ME)ov-lN{BZF7#T)fHWXnX4r#8wM-zNV= z^G`M#j}DLIPQ`0ls3v4+vx~i{ZEf}+?YF762r2aBGpzZnGamBXvu@P0s?JMI+I+oY z(an1NMNLiah303q><<`>Sa4%2FEC!%?VS~e%4NGH>9bFT6f!TWd>E-({ZbHIv0J0U zIv^siXVPx#*%MHUJ0C0f1@g}AF0V*+9Xq?$RpC7x5Ts|M|o@_hA5&Kzj@A z{3K3ot?Z#d45Nb3EgI(+IY0Y}&psb||6b$%i`Tvir0Z4G5S9z@c^!)0hIc4m&GQ*i6 zzAKWktG%*SCCnH~Xi5JiYf`z;g|Oik;(^d{RpJfJ(XY2i*xL1U%_ed`-Z!79@zA*s zV`~?<4p2jzY=fBsqu8UGpih@c*l}8p-Wfvl_YG$5t7UNC1VUI(Xp;spZOJPTE4Jel z58D^NPFgTUwN;_c0hvqilneO%CwTZicK93`V23*zb6l0SIFMMJ<2cH(TDIkTl+tmMH5Wm|vdDrYG_>of8myF>E zW{P}r>gemqyRe&OTz{dGJK`9H1EiTY`;^Q!BP0wbgkyH{ZWde#&(XjLt-C|Z*&Poe z%C0$uIU@yA_i@SV)$Di>Zw{Na;&I7=@n++Fi(LaPIcW3qCc+FLj4G(VB%&ql1cBy4 z3BZ4M0)(pXa-Z67a38hYrMP!GPM++Tz8Hdjnyt`loSHQ=P~u6V@rHa?dUfJViDCZ`fiO;h>=>bfl%n8+)sDB6TP&fyHdWTReZU27LY zKs;ZeI4+#9=9r-#iEju3@}a2Xa`=YgjolbkapeYu)C-|OVVsXqobX;0@u2;)z254n)^o@=Vy0!vwKtD((vU!lAOOZ{Ufy0uwp(hamROU zv>QNydTW@>i`_09KqCs=ixy);cbibyt=9p!IXiPVQGRvaQe>lJXh>sEN}?~SnS=A# z$}4>(iAdI)&oo;XF1+P<^A>M3FQ+_SZSwWZ(CmrlGlq@!InW&fOKO zb)G&SkM^cqlElm}#?VuID|GSuFxukz|(G@|Qc>M36pbt{(EDcQyG;ktEF8Tx7H8^)3Im4&-9u_d&+kftx+icmm zi2LmnPt(=NPVd{;Xm7`egB~UH5dY>)sg>Ot0oUQ%CZL z;{j*p6@)FC6F$sqP)P3tb&c&rJYC-K&KiUwJiM7gDsiciwR=v|*DZ5{ITl5;1x%XB z1j)Y9N(HgB;;t8r1^M=YqN{)LB(Ar{gA!{LpX$xMK_0uN# zq3EX>-2x}`&DlKjhF%0U z(nil6SQGn-hpXAE_k>O7Om=i4*{E%f4I-SR*T;yMRxL#wE!NqT&&q@ttu}w&X)dy= zPN~W*9oi@oI9C7s$jgp%2Crx>!tSz_3k+5>o;O6wQBYsF2Pg?dC>hA)a& ztd@3VS>yce-BG2#D#qSr+jN&aRXYdWUd3vB89v_)68hAF!*k4lJ=M_--I-;6IYWMOgA_Vy> zBqALZc{NMs#%wXIec(`HG4K1(i(>KH=0d;FvO&0j(Q(`dUzT`tY4KF`ZvJSJu#_do zxy=Ntm=Oh@Z*OKT!`ypPJKm)XiOdSWK3i`6&aAz53VnKHw$E*K;}LHV%QFw;bAB=f z>gW80o6jEE38VWZY8|u923BuyRwr5a)(?0N){SB_vd*RioxkJfecR{rgoO=+d%(#o z*+i#~Gqv7b;uicYCf50eZD8F?T{_(TkZx7)d1{a2oPM*1!A#Z> z_)fo3x&RB~>jCc;U`Lv!n4`Wf9%0u|onR179L$^W^Nm$Y`j0X@RU)Mq87f^7l z$YprpBfo&E2ajpa$9WihNrg|n(CrhVq3n{JS{C@|2MVh*aP4w?WnkSfW z_8YET9=smNj46UG>3?24a=etmE1+8`D$%g8M*B@W;y-a> zAotBZ4G=O0Y)QW1dIHEy5C#@lhLls{rhC0|tTl7$?=Ugv{V*})B{SK09KM|>!l0NC z3r~PFcLI>+Jq&N0>G4J*DtJN)$4et+U^EJAO#@%FQKrFLnDoPe8V`m?Lg!Ic7Je9a zw-xy6;KRgzz@q$r3ek{%G*q0XpnpU^)1exbLZzjD_vnqTf~$=uTlb3jWJecXjIJ$} zQndPCVXW5TyImA|;Z>c+c(zo7%oh7sx+lWboS`rYBB&V$vxY`*9+-ft4WnSQWYph* z$tlT-W#>eU*!c+nR}NzUs-Esi5>6%*A(refR8|xU1kz{2cquUWFf$_nd=4!}!k9<_ z3M&dN1}&d~@zJ9t|JM7U&`@bN5g(**4@SSAa=r-$5rb~s1Nx+ln?ScD2EE0nvk#L} zA9VE~9$eETz5iUfeR z8pBRO^Y?(7XkH&qULBqQ3n!-@+SY8EZtBJnSs;VO_GgcQx?70A?Dvsp|EU#2flxa9 z?13E)KYQpzJd70p&KkCY*;&WK=!pUN`=?|;&f|F45&VVMYw$4XJt)Zm7YNk9!D~^V zT5JlSIOrZ&m-;>!P+$Qlb2Xrn9D@Gub`_Cf%jt)d&|GhR?Xz2_XoIC}rf;iNl4Tx9XPt)aq^p*Xz zRt{i37LU>U57=E4Ff?AnS2~t`z_O}>>%>n$C5+k7gdglPf zg93B~ASG|V0P+SGfQA2Cca>ZiQ}y9WSS|&1^EGedq!jiYGQE7AAN!QZm&2@xG2&24 zIm{hOZGatzPFBD;prHof^k#`q9chFeB|%9`LM7!eR_Jsi>;&|ng5c?PidY&0iBpp> zR1Y@7GRdgrf2ubPHFb{@tteWUKrdgw5Ky`=jEhnFKRQ+vP<`Te6VHE_N&4TcmPSJ_ z%fUL;G=Oc5hRj-FJkVkT;Z}`n1^I%Fg#31VI;{;xMYxMVBX}DONsr$k|6Dhauh0hL zV-WlIW&j13+h9Dz;3kiYC$WS=T46L03xb5anxP#wLr(Ma%2I0dYJNP9Sh75Q0RmWS z_}dsvkCO>4_MiEo#rAc`WN2~17KI90VQhf-^bcU6R$2)v<*+r77HT7;>+or({j`1` zm#)$y6|9y|3p~XTXzCWZr{{Tos;YmY6Bz=IFD2R9*1_XgVKpF}1E}xYPiN!Pv=fBR_SY(L{II%Z`FWo&eeYU1*1%`x)@$CBN%>kG#NXceq}nRx})upB$vwW15Y zk(lQBpyNB#8sPl7b;#S<;)lU~wv_x9_cI-AouON5XRCcb)oI1)mTnD>uNw?aeR-Bs z)V1rAb>|lO{r-d`$$G{o?`Wj%VslsI<9zKtUptDfNiA0Y*8gKAGqz|xL>P39^!=*h_bqm0^1saxeXq#0$B{?6uP6M0XGq_JQ;+?V zFPW~zqweNeC-gKo`K^NxxVm<(Io$1c9V1_FjLLo_-=a7ZJxP{jrV@2Y+;PRtizMJt;hXPQhtf@%qVI;`cxIU3lTay{_taX*(m~%C?I11OKj`0{4Ml zVa3qz?5^w`h?A)6~5bE>#`um54lr>?f#%ecCb zwpH?HkE+pgPMJaK-{ zPUijO45SfJD3@doeV*F25ECfblN%b8@X*s_JI^}fI*r3ML0-QhQIeg7#A&)8!S`ql zKl(p~EKmlqH8u6<1#H^S9#?W#$8GUcZiCVnY9hx1BK z82L^&?fa{vT7k-?7^D4&YbT0#kUum+wqmzmp}BH#tMqBI-28nj1-VYi*EhJZ5o%c3 z(fn(q@|0Lkg{X6T#_y)P-X^`{s$2KJB+*&aTwF9}X@#SX%W7b8wKh#_5`_(a`xPql z?A7#yg(n~QKww4WGrp2tT3gial>ywP?n~ExRMofFUTTlL#)dkzI5{Ig_Ihf*Zot%9 zN%QtLa0E5sUvpf@xF_!$n`LvE`CR*gGSg|h@n+9JRMtzZP zf+4u)MH2G*qE{F*9{!qc6KHjFt1IiVYgw)Akg6z&dUmX{q(l{KnM%pH^VvF zuy73@O@nxqQU!q?5WJcL!ah{HTP9i5GF>6hT;=7}Uc#hs2pqU8x z5}~iE>k>WCyNSDTPa{r2!WHDol;v0oV}g83t|(K%g4GZwc|azAPYLwwbUeU(yT=(h zeA*`d=^>!U2e4%z$w#ft_e2qdyfkKM0yq>cguw|4voF*|$3ajLi2W!j!(+QWaymbnA+{*O1Js0Yw?v(I3V7AE8RPB zh+H;Kw2`7GkBwe}L0!V&X<-lw z;}4ei)H`rk2ieV2hN-+|7ZHXOaQ`rb&ax&5QL%w;;xkRB0Mgw0W3HKA)%6D;xTP_r zHBDaE0RYT_Y>O0Ge0~^+ZjstMMz!Y1MTU=VnMm7aKYF#1`Z9=ix;DRuffENj0duEG zq4H2d5HIhg=>PojY+G_{HknyBE#D+H7a#JPAm zVn!ykBwi-|>&S}+m?(Hxh(8jR-VBhiB=*JFgc%@7Nk9ZKwsSvC5M#+_3HfVyk+yAp z|9FI!1ioAAK<<|O*Y`{C1+MG=hb#v2GeJIHqPK!_)?n1}qikf=avQKzQtFc6@f<1H z(M{14obZZ$ArX9vgcwNTsQ*p@wLb;k14;ZJ-z!6-@ZVSY$LRo#I+z;EIyhs2i<(_9 z2a|&f9zGxx$F74D7bp?l1E)gNzmDYi_D*|XmZ*Qv5)`EEf!PRb9LUZfV;E!rSy+h$ zcAglG2683?i8ydQ!P`VC)8IU0)T(vhJT?DgMq#W>pn89r=>2ID)C_;G6!3EWYo%!R zz?l(!FrPDfU_Rg?lN`+7Ff=7we7k$`gY%~WT z@woyCBO_W0f8_al<6t2}OA=o0|AVgt#l$~31}Q!vK|&+!fUQ_*C_orc!^8oY2QEtS z7cLB7Ah|OnhER#(2xi3J=<6$Tp*4M|9WCHwce6twk_ z0`(2>`~dD!hQw%T{Aw{&lS;z_;M82r8hhD4XRfSa+oFA-ZcjJ^gb@Mr*x!@V|6MTY ze=S%l_F%#A9fP$IB79(j1P!z#hDvaDum*5ya3uwCYQYiEgaTX`Tme-ND2wMnkpAA# z0Jv(u#u-JpG-RLz=YR?n;WWfRr$A`IGlmr9;m?K&?6=I1!6Ja z6owy6Kp9R8okx(8Ll3p#k`S{BoDPamhGW1Z2b444J5CM_E5qr)C5INA5wsU41_$(m zB6<+s$j|Y=Pdj47!Pgw|L7@Hk?L1D0*6fr(2TaEwhI zZcHpeU>KmE4oXyqQvmu2?Q7Kcd3E&OaZ0+sX$Ntdgep=Ra7AKC0^dM$N+?kS^ews1 zKM0JULM%z(9ii~5CY%;bgwXJbCj7=9woyVlr{Od}F@k3sbm25S6nqHlfFG1}n7<|m zKJN`WD8VZ%_Zdb>0%i||(E@gXRiTGiwc*P9?7|O9EA>}v^gi?Sl;ONkffk$`>eYs` z65-zzh-$bFpaE=juzeY;`E}uBMBp6)Eyn{yGj%=qATf9b;uUj{q&~b5|4;%7BSiJO zKKwAKCj}ir0G%C^AzTdK#j-KD11yZ-q(t{^!3z7Gf!9C?U9kBTjp3yPO)LaI3x5u= z;h$@LXTg29{~+Hsfy0O(B16z7(G@NPDVV`uLFz`J5~DesmOKlDNU(ev<0=+#+J(rXFlA%eb}fH6TOAqZ;?UwvQ(>dD)HDn#a>3d$C4 zMg%cifXp;I_#)(f4x}>e;cZazd5{Wo00h3U1SvyD_#Cuhg-CS?B?m0!b&3-1LOA5J6JT zpenyNd;mJ*0-9e5fD2YDUVt+ZL6NSYlA8~HkSI5hyx|MyB7&~EgXHsza1|oxu?LtM z;Fl02e+fPWef0z-g8uMRL=eIo&R88B0EZLHV17Sg)V%Dy9bCPfIWW=(DlZimTVDfT zZ~KcNYhTy+k6Tk3Rb6`-Zcao3szV(lq{wRdV0Z`-Zolg9=eI3Nj05vqZm>m(gNuU) znk^7xF#GE^`Hc_A(%e!17QHA z1X%=s0hIq3%s6cm*!TcT-3wro1UD#p)2?XH*-yL{0V!+7z zqe|hs`%MDSNMpdr`z6x&Hoqq>E(RK5f72i?24-;}o`~AwK=2W`{7r>8&^TiVCJ6js z;$nbhzeNCW1$c)2%?teJ`Y>P$`{Rj=fdL8T2SPh>{D8k{5f{e~_=gyv>Banh!P|-} zivuqFwk_C-gYWfXr2Y^ij$iWMJQ0_`FZ2Fx_~*Wos@@ERE8+K*bhX@7xD+vwShasR z{1h>fcy(C>{F5le7!00aX~d+*s~aldmx$m5(F`iN0zX!5R0Zc2!N0Q7c!>q8GpE3# z7C}(D;|*uO-*i|pbam5Lc*_a!3{2%E76KpgB;BI`+`!Kr*w<1n!kMZENl1?o17R|e zl#~^sB_*Y1IAHic?h`B|N=oX69}d()G6IVC+4onKK~hpL@I5O?lZ=!fR5{?{UsZ09 zk;>p-sjtXL-SPjTZ@cY+{?hs|sV1leY*&PK+F+pxi>&SHaFJj{#9wj%tJwbk z{#N2Z?XM~LCu~UYDMtc-{`uu)v^Y2y5c*X5yH8*~AoK-v@B9A}2mg|Ut-t|JEc^N3 z<_2Tq`-D1_aFz5&h~rTzsdheAr>lD zAYsOL3q7VLr6LxShEUX`C%86UzJAkpCm{_In<;)$M^4Yj)UVI7@M%^ z2$V-vz*(U8l%&*1tT?6UK3B0~`&>Ji!e2v)i$PK}q?||41e+7MzjSOb`f*?+u#g)K z>2dJJ7pEm<*f-!%iYkFe&%wq!;0maSpDy5%ucJQ)hHx4rY+H`ga0HH0)Y#R}!x7{k z>_yN4>UV>Ew*I?={e3U0=NJg6I50r}?`FZE@a4as=f68YcuwFu-@k(o)(nTA$6w?f z-2D5!{~`AGt%xD)gn##b@QA?oPGIw&9r3Tu3CDWCiG$7op`L_0_)qVDo%?^&e!x!9 zyX3*0@PBhw@?eq&z3)%tAB>R%!r~E928Dz9;`=*b<^QL@gK6#ecR)MX`R~>KUt#AK ztH*T}VA&x%#mPzH_>#tP;uGJ_#Xcwh-2RzK+~Zr0FNtI0TppmRn$zSYGWe3(PF07B zpD3bIi;^aVW}~J+xF~=SZ9xblUbt2Y5+EW}Bt%iE8XEe*Q^gBKE#KNR^Z&EgIu(9M z{I6Mi@3q%nYwdNLF*p2AZFCzRZdoZawQTzlGqqc2XKLu|Q-&)HWe>K@W4^SN20dRp zLql0_2AU+9;6&OoNM>lc(aunECG@1QQSc4-A3JwhWI1aeHj+(};P*GWZR;s?y>y4$ z^l-~1nY3lekC?Qjzag@ft3HuQnD1cAE19n&sx=@nk=$v4+Z@1GkKDNV!Li~b z6UE{7YWCPFPB%fLd2NYvY3U8dPZW;}Fbsm6#{5mBSB;NUgS%0N^|lvGfKrWQq8i-7 zJ>pQjZuVw-W9r7r5T5J#T82SvXKdF#i>}z*@~&OGJ#Hu+1zMW(Zntv((MvC2#TT;v zroudmh{je1Ti0H~;~PL7V5C9qejASYHxAx-`{WRCbh<;pAL{XGS_v+$RCwC#tKDVq z5W;g!?^v&hqx+MO)a+vm-_EYpta%>KPN3eAP6XedeKL7FT|@eW*m8Zs<+0su^4GSw zxA9%V-?Odm*CmXsi2mN+>i&(t|KYsbeEnbUbi3F27pL5mKOkd1y3Osne&{ZDWgQsr zreMFe!`%X?$&93v$Y;juz`H3LXj_B?OA9OqX=k~Y{`qy{6 zulfJkC9+}#4+Es(qX+uPiNpWVx|Vdb8^e^cXlPy0WgbJ-0AtAv^UcE;T)Ao8{MxSjr?Irsd5>DlL3o?Bf^=D4}!=sv>b ze(u7#tN2;7&#hiuy}WXM;hEJd=bpQ`z`x49a&`5&YjfQge_@B)pKb-FHzcKI5PPOYs{Uf_O{DuAQ)TSVn?b8grwCo0vTWAK6w*R|5-Jq}UpDdDrl95{p zi)5rpTKv+VpXu;N3+`;U=Ny!*+jB;GqQNJ7{hiqc-}%`^H%GtGV~cKfJPgb{$(m(y zGDPjL%71^(&H8s2Co2>@%}E;vit@TcEi(U`^KN!uk@L8T(b`E0j-l!0daQ%Mxx7mK zZ{P2BZ3-7f_kigNymsc^dNUI>RFIoHxeqFK0X-S?x_vN&nMHHEb`Z8-WI=#B2;??( zgKqU96Bnq5Y~becG4tx?_gLhkL#S;M)MI>biYD0W=HyU{CQ|Dl@ULjy{f6kFY^8Dh zTO0<_MAfXyA`M#U-`vmEejy>ynD%$3F7cn9cN_1Lle^3vaPGqD!iCifmo8shIKOi3 z(hFDp@&f1hl?=c9@zg!ap!ZU@&#x}IEw=|5zq0!D)pM6F&M(q+^j~A#ZCSwma^~j! zKOYcW+4&e3A@_^Tyc_&`nLEY2pU9av;0EEI;12yk4o+y;;Qt_ZkAS;WbTp(Q(_>uZ z`n!UAumJakBFy`NVTT*!d4gN|*9RT$!C{#9UBP|hklS>}{9=&iF*XwYVA4?WmQ^1h?}4J;r^v3{*T*wYawh86M-(yOv_zzF4_*A$VK8-4yICZxS7SsOSzd zda!m|2o_hC++DYc7EHKM_+QMJ^O+h?Zdm!BuigA&lOgCK4Mne-5Wf!#!+VYO+M>w-;{z zsKjU%jX%+UD4N;0S$(KzXXE1Zp`xLU``L$zmZrf0=|e?38`rwIApDmOxv7n?Q_TDL z5KI3bgxa*%d;P!L}EK^U`tNfRTZsDd% zcFjB9uc2T+*$nF8$TpjlS$||OM(qtTroWPHHmR~cu55=7=!C_e5i`8Q4Z$StA_ms>$NLaS1&AFxpoC(gIDnPC*1;v z{OrRVvY>AsKb^h0^0D))oH>riXO|%4?T1~tepvhJ5qHRcn{Urgi5cy%a)0_DNH0F( z_A=jlkC3q|=KPLRobb$9T=5@Z2?lKrsWm-ilMBNAZ|qvxX4T3j!~^a>ewHNVH%__a z?%;QJ5k)soqb~jnr#O;l?r{$`uJosh?VfpEm3-XhH3*eiNxpV%NGj8holaIU2 z>uw_Vk>^R}pMSz_AOHBJC){%qo&E0nV5P7 zEAUE3Pr8|rMGse>LLW%(xDU(fq>@5K48v={!%(nPu6YH^q>3hgMw9&{p=i`c91N0L zPBVt31Mv`I7+H6<$Y4+msF*0cB9TONZ|sP_)7@kyEJE8hGLO6&~6ZEy82c zMTS7qdCABiW}2-GhC+iEih=RM6pK)P1*^qRjA2+rOk;qJ#^O|_61XVDTyo(GHk2HX zf>k2(F)SZSIxvQ%!6x@%@E>*PsOgAFkT*RzA$6}8PLo2?kNpW5I*`&^1f%As$0kWu zk;0SnpC}dew?wKX3dUD_6bzY`KD-Do#Uoc76!DcDeuP(3z#NYqHQJoiHEf6x(?On# zAKM?CCMCDAg7I}EaWNx2%1;KbtZS+NMtGx|dZQK)DxH#8>?01Scdl_vnPxS|Ss8&# z23A-(C%KgZ|Hn2U$#S{v;)OF#S;GeP8hDx9%4%$;4c7oOBXK~BH)@P&GR!0otp;N) zG>ig_HpEF)$WG$16;x{&rEet*gJe|YQfp9y3H}re9%%W%yk%0FS7SqwAcD!Ipg5D& zX(4sq!2dD((>#^SG9H`{j15TPp~XuKG0Z1ESv(&Zlir5I`6CM`k3lTgSR~VUqVL)) zBX5X*JRf*Smw}BE37BIFQAI5a*4zbW(-$0uqK`FhBcQm`yaDELw7X0 zGCB)1fmtHG0BYgH%27qPg5tuUqR*pGbl^Xir_uMSOvU+%c2|{<6T=evCo&}qzy|u< zVSgqKBK`TmOGf7Gu*>?+$5t1b{S3~uV*y_1T!|OSO6`$&-Qfm7#2S*I%vWw1y3F|?vtsbz*atWaci)hVB5G^w{$A{C# zC&wbCr`3)DYEPC4Yl(;C&sbPO%`6T8(#fOlEntaulmzB~<7s3z)e6j`Oxsj} zY5yD;+)#Vua?lPxcBt0!&RCk*Wo%DoQ*>I(9Wc(?ECN3)O!5#BbLFPer;k6lO?>WbsQu|w?pJ+u=@6w=oWW&OW@*HPghzI8YR)~SUCOYPUNSA!5TmUI z3D2?|x6Z=+w}fYzPHQ21xMLcfE6l+79FUe3#>ToY%h&uz&qrt;On#4NER1hp5KYQ7 z0A@5RCzjCan-l6cV|#Z)jt*${=lHf-oPZ6@!uUs8KJb~0PmpI- zoLrK-0ice*)OmXUrg7Z-(ojOZN_FJNd6!tZ@NH~qmj!A`Tsiyr#XCojcbjt1f~VqrM|@w-z?=y zvOBIT;~$a^HpfJpfjK4?k^aqiVY-v_<_e0LxysQ)p~+UI1s~&zsfK6--RzD4R0}5W zd+M|b&S7}XB@o!<=$X)Dm_f7>T$GhD*uc7)OBX~k)*A64F235xh$}p`gDZIZG?J6plED0$z)?_uzAMZ0yE|o zVvNT@;!NHxh&heOpb>%p6Lzg(e0ZuP;BjqT(J=akq{|6DLT@!=p*Ah$wrqe~KSX*tlfawe;cx{S}{g2rX zuwT9i#IO@BaM%DmenlW|h0buMB%h33;NMb{!I4hDfNd0V9uX z2n?@N%BCh89;QE`bMKIhudfFW*C3F$p%j6Xtax?o6L|G}Mng|gO)kAQnaxtxzQ=H(rWHiX zG50=aA_p@$8DP4ig8i{h7BCaC;IoZP+*;$pYx_l;hutwX(Ed&!3irSU<-kn5Opd<| zSbJW*q-yPi;oZS_$GpX>H5U)kXf8EvBOf&vTqKI{pCHCs=bAMP`|04(_KQTQiJsY= z4$-j$rlw6bk;<20HCcYUh^errq%n2sUtq>8NoHF|c#=|YIXLm^Nm=Xogao5$-vE|q zfnz6ee9z9nGcE@(?Q)C+(KtoG%tZ*ygcAbO!bMSasEZ9!Xw}EWSgIVpe9`S5@hu|7 zBSwUGcl(kDtgtM?3M#23wn{CGOj0Cy!Xh!<=(8As&T2?t7S%BVFDv?JV#No~G$sg4 zXWpbttR12-7qRmc#Y5ikiL`Ba>^XG>hb%f0qb8&Q#WEL1MQN}k z?INP(#3e1SV;vBUKLiX{Q7udzO8eE|g$8grxCsZjID04E94a4Nh^Ps~5QCf3!WJ2c zpsZ{sG&d~u1>^b%taYI$W*;Cq9=*G|%lhkWYR)j9+OY)N)tIYYMv;ZF z0%k(fT)<$WdW&aV6O#Kn&}XbkiSK7&)5`=bd=Vm&R!qN7UUr-2!e?=!N8F*t%b+{N zzXbZe%IHiEOZ4I5_wum?|FYX_q9MpmEniJ;nqD8gT{|!JHq9*>jait;qQ3}h z5GGn~k>A$n*`CU{md$>?gMQgeN_T-Y)8o22ffZE&9Xe}B?#9+~D} zND3bWi8v6GcKOy679PU?8dkasI#!>wbJQd;^^R#aHU@^Wkuj_!8I0#%;S1?gl}e2cmjUeG$XxXNx!8Dox3tzwP3!L;mL}r$U@H8oOPZ&Ua_m~)9 zCSV3e>~HWYtxX6AOKCh@oR-sBcPD~qT5y1ce^DpiN$UUc74FGO%Qhy=WY~cjWd?>9 zs7az@CvsMVKUt-9iteMf0jQ_A08L{NFr%cvj7bG%!mM0gD^!vQjGnI^(W1Bj+xDSJ zP6k-`)K|QI)B2?nYYI{VT7zJtMkrb?+iAFs6nLEL{T+kyg}Wv2+qa+MJAxlkk*X%8^W{ zl0>G`YTPMP4wkS?d&Iy}UEc&|()7Ukl6-S05d)MjC4BhvZac=6&x&8V#Ah4jwvi7M zp1k<%C4O;s;TIp$K0tlqm{hFt>ge*}^k_bOh-eDGdO2G@cI2Vu!P4~qkMa@uLiClZ bE0?c+^787l8wmM$8*+o&vuF9tu?_zRKY$Mh diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index e1dedd0b6cc8e525e0d3c7eea5bfe631b90c33e0..1262752267112eb3555c221c1a5133c70794d542 100644 GIT binary patch delta 111 zcmZ4TpMA-H_J%EtM_;m=8=4whm|9Lh^O8{p#@YV|1-)00K04-&j0`b delta 111 zcmZ4TpMA-H_J%EtM_;m=8Jd`w7#UAL^O8{p#@YV|1-)00K|qMQvd(} diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index 598da3515e13144972f53f70b41cdccea459a045..8ecffa012b99abe1eff9f8c81ab8f773b65b229a 100644 GIT binary patch delta 113 zcmbQaoonWHu7(!IElh5??B<51#ug@K(|vQ9WMG`_1-VQob)B6I&CQ)mU7byhT%27^ h-CT?;oXsp<%uJk(4b0q3oQ&-hYzQftUNf6X769zq9f$w` delta 113 zcmbQaoonWHu7(!IElh5?>}G~0CMJdk(|vQ9WMG`_1-VQob)7AZOpMK4oGe_7EL;pt hO^jR(OpFW-ja)2D49tuz9S!UhYzQftUNf6X7681h9Bcpp diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index a4c793da..c1058b19 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -747,6 +747,8 @@ of memory. | C: Attributes | D: Device Type | E: Device Number +| H: Disk Device Unit Mode +| L: Disk Device Unit I/O Base Address Reports information about the character device unit specified. Register D indicates the device type (driver) and register E indicates the physical @@ -966,6 +968,8 @@ Documentation required... | A: Status (0=OK, else error) | D: Device Type | E: Device Number +| H: RTC Device Unit Mode +| L: RTC Device Unit I/O Base Address Reports information about the RTC device unit specified. Register D indicates the device type (driver) and register E indicates the physical @@ -1138,8 +1142,10 @@ Keyboard should be flushed. | _Exit Results_ | A: Status (0=OK, else error) -| D=Device Type -| E=Device Number +| D: Device Type +| E: Device Number +| H: VDA Device Unit Mode +| L: VDA Device Unit I/O Base Address Reports information about the video device unit specified. @@ -1570,6 +1576,33 @@ not play a note if the duration is zero. For other values, when a tone is played, it will play for the duration defined in HL and then return. +### Function 0x57 -- Sound Device (SNDDEVICE) + +| _Entry Parameters_ +| B: 0x57 +| C: Sound Device Unit Number + +| _Exit Results_ +| A: Status (0=OK, else error) +| D: Serial Device Type +| E: Serial Device Number +| H: Serial Device Unit Mode +| L: Serial Device Unit I/O Base Address + +Reports information about the sound device unit specified. Register D +indicates the device type (driver) and register E indicates the physical +device number assigned by the driver. + +Each character device is handled by an appropriate driver (AY38910, SN76489, +etc.). The driver can be identified by the Device Type. The assigned Device +Types are listed below. + +_Id_ | _Device Type / Driver_ +---- | ---------------------- +0x00 | SN76489 +0x10 | AY38910 +0x20 | BITMODE + `\clearpage`{=latex} System (SYS) diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 6ddf9c1d..4a10196a 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -57,6 +57,7 @@ AY_FNTBL: .DW AY_PLAY .DW AY_QUERY .DW AY_DURATION + .DW AY_DEVICE ; #IF (($ - AY_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -428,7 +429,7 @@ AY_QUERY_VOLUME: RET ; AY_QUERY_DEV: - LD B, BF_SND_AY38910 ; RETURN DEVICE IDENTIFIER + LD B, SNDDEV_AY38910 ; RETURN DEVICE IDENTIFIER LD DE, (AY_RSEL*256)+AY_RDAT ; AND ADDRESS AND DATA PORT XOR A RET @@ -443,6 +444,19 @@ AY_DURATION: RET ; ;====================================================================== +; SOUND DRIVER FUNCTION - DEVICE +;====================================================================== +; +AY_DEVICE: + LD D,SNDDEV_AY38910 ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL UNIT + LD C,$00 ; C := DEVICE TYPE + LD H,AYMODE ; H := MODE + LD L,AY_RSEL ; L := BASE I/O ADDRESS + XOR A + RET +; +;====================================================================== ; NON-BLOCKING INTERRUPT CODE ;====================================================================== ; diff --git a/Source/HBIOS/bqrtc.asm b/Source/HBIOS/bqrtc.asm index 274a56f0..5bb10ec4 100644 --- a/Source/HBIOS/bqrtc.asm +++ b/Source/HBIOS/bqrtc.asm @@ -344,6 +344,8 @@ BQRTC_SETALM: BQRTC_DEVICE: LD D,RTCDEV_BQ ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,BQRTC_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index 0cc31919..05f9cb34 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -132,6 +132,8 @@ CVDU_VDARES: CVDU_VDADEV: LD D,VDADEV_CVDU ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,CVDU_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index d7cbb744..4384cce7 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/Source/HBIOS/dsrtc.asm @@ -369,6 +369,8 @@ DSRTC_SETBYT: DSRTC_DEVICE: LD D,RTCDEV_DS ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,DSRTCMODE ; H := MODE + LD L,DSRTC_IO ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index 98ff1ead..7bf477ba 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -508,6 +508,8 @@ FD_DEVICE: #IF (FDMEDIA == FDM111) LD C,%10010100 ; 8" DS/DD #ENDIF + LD H,FDMODE ; H := MODE + LD L,FDC_MSR ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 0a95c1e3..f1aa9ab3 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2294,7 +2294,7 @@ SND_ADDENT: ; WORD DRIVER FUNCTION TABLE ADDRESS ; WORD UNIT SPECIFIC DATA (TYPICALLY A DEVICE INSTANCE DATA ADDRESS) ; -SND_FNCNT .EQU 7 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) +SND_FNCNT .EQU 8 ; NUMBER OF SND FUNCS (FOR RANGE CHECK) SND_MAX .EQU 3 ; UP TO 2 UNITS SND_SIZ .EQU SND_MAX * 4 ; EACH ENTRY IS 4 BYTES ; diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 4440c9d5..2457bc9c 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -63,6 +63,7 @@ BF_SNDNOTE .EQU BF_SND + 3 ; REQUEST NOTE - L CONTAINS NOTE - EACH VALUE IS QUAR BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION BF_SNDDURATION .EQU BF_SND + 6 ; REQUEST DURATION HL MILLISECONDS +BF_SNDDEVICE .EQU BF_SND + 7 ; SOUND DEVICE INFO REQUEST ; ; BF_SNDQUERY SUBCOMMANDS BF_SNDQ_STATUS .EQU 0 @@ -71,11 +72,6 @@ BF_SNDQ_VOLUME .EQU BF_SNDQ_STATUS + 2 ; 8 BIT NUMBER BF_SNDQ_PERIOD .EQU BF_SNDQ_STATUS + 3 ; 16 BIT NUMBER BF_SNDQ_DEV .EQU BF_SNDQ_STATUS + 4 ; RETURN DEVICE TYPE CODE AND IO PORTS - TYPE IN B, PORTS IN DE, HL ; -BF_SNDDEV .EQU 0 ; TYPES OF SOUND DRIVERS -BF_SND_SN76489 .EQU BF_SNDDEV + 1 -BF_SND_AY38910 .EQU BF_SNDDEV + 2 -BF_SND_BITMODE .EQU BF_SNDDEV + 3 -; BF_SYS .EQU $F0 BF_SYSRESET .EQU BF_SYS + 0 ; SOFT RESET HBIOS BF_SYSVER .EQU BF_SYS + 1 ; GET HBIOS VERSION @@ -200,12 +196,12 @@ VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563 VDADEV_NEC .EQU $20 ; ECB UPD7220 - NEC UPD7220 VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918 VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445 -;; -;; EMULATION TYPES - moved to std.asm -;; -;EMUTYP_NONE .EQU 0 ; NONE -;EMUTYP_TTY .EQU 1 ; TTY -;EMUTYP_ANSI .EQU 2 ; ANSI +; +; SOUND DEVICE IDS +; +SNDDEV_SN76489 .EQU $00 +SNDDEV_AY38910 .EQU $10 +SNDDEV_BITMODE .EQU $20 ; ; HBIOS CONTROL BLOCK OFFSETS ; WARNING: THESE OFFSETS WILL CHANGE SIGNIFICANTLY BETWEEN RELEASES diff --git a/Source/HBIOS/hdsk.asm b/Source/HBIOS/hdsk.asm index 1d1b3c84..f3cabdad 100644 --- a/Source/HBIOS/hdsk.asm +++ b/Source/HBIOS/hdsk.asm @@ -169,6 +169,8 @@ HDSK_DEVICE: LD D,DIODEV_HDSK ; D := DEVICE TYPE LD E,(IY+HDSK_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%00000000 ; C := ATTRIBUTES, NON-REMOVABLE HARD DISK + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,HDSK_IO ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index d6164225..8613e8a3 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -546,6 +546,8 @@ IDE_DEVICE: JR Z,IDE_DEVICE1 ; IF Z, WE ARE DONE LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH IDE_DEVICE1: + LD H,(IY+IDE_MODE) ; H := MODE + LD L,(IY+IDE_IOBASE) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/intrtc.asm b/Source/HBIOS/intrtc.asm index 3765bf1d..6602b3a3 100644 --- a/Source/HBIOS/intrtc.asm +++ b/Source/HBIOS/intrtc.asm @@ -138,6 +138,8 @@ INTRTC_SETTIM: INTRTC_DEVICE: LD D,RTCDEV_INT ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,0 ; L := 0, NO I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/md.asm b/Source/HBIOS/md.asm index 81567653..1761b530 100644 --- a/Source/HBIOS/md.asm +++ b/Source/HBIOS/md.asm @@ -149,6 +149,8 @@ MD_DEVICE: LD C,%00100000 ; ASSUME ROM DISK ATTRIBUTES JR Z,MD_DEVICE1 ; IF ZERO, IT IS ROM DISK, DONE LD C,%00101000 ; USE RAM DISK ATTRIBUTES + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,0 ; L := 0, NO BASE I/O ADDRESS MD_DEVICE1: XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/ppide.asm b/Source/HBIOS/ppide.asm index 6b795ed3..e87a3a64 100644 --- a/Source/HBIOS/ppide.asm +++ b/Source/HBIOS/ppide.asm @@ -555,6 +555,8 @@ PPIDE_DEVICE: JR Z,PPIDE_DEVICE1 ; IF Z, WE ARE DONE LD C,%01001000 ; OTHERWISE REMOVABLE COMPACT FLASH PPIDE_DEVICE1: + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,(IY+PPIDE_DATALO) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/ppp.asm b/Source/HBIOS/ppp.asm index bad672cf..ff395002 100644 --- a/Source/HBIOS/ppp.asm +++ b/Source/HBIOS/ppp.asm @@ -693,6 +693,8 @@ PPPSD_DEVICE: LD D,DIODEV_PPPSD ; D := DEVICE TYPE LD E,(IY+PPPSD_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,PPIBASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/prp.asm b/Source/HBIOS/prp.asm index 9a62a741..cea20545 100644 --- a/Source/HBIOS/prp.asm +++ b/Source/HBIOS/prp.asm @@ -550,6 +550,8 @@ PRPSD_DEVICE: LD D,DIODEV_PRPSD ; D := DEVICE TYPE LD E,(IY+PRPSD_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,PRP_IOBASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/rf.asm b/Source/HBIOS/rf.asm index 6fbedfe2..282a962e 100644 --- a/Source/HBIOS/rf.asm +++ b/Source/HBIOS/rf.asm @@ -181,6 +181,8 @@ RF_DEVICE: LD D,DIODEV_RF ; D := DEVICE TYPE LD E,(IY+RF_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%00110000 ; C := ATTRIBUTES, NON-REMOVABLE RAM FLOPPY + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,(IY+RF_IOAD) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index ce6cebf7..a45738ca 100644 --- a/Source/HBIOS/sd.asm +++ b/Source/HBIOS/sd.asm @@ -125,6 +125,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK SD_DI .EQU %00000001 ; RTC:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %10000000 ; RTC:7 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -139,6 +140,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK SD_DI .EQU %00000001 ; RTC:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %01000000 ; RTC:6 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -151,6 +153,7 @@ SD_OPRMSK .EQU %00000100 ; MASK FOR BITS WE OWN IN RTC LATCH PORT SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CNTR .EQU Z180_CNTR SD_TRDR .EQU Z180_TRDR +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -168,6 +171,7 @@ SD_CS0 .EQU %00010000 ; PPIC:4 IS SELECT SD_CLK .EQU %00000010 ; PPIC:1 IS CLOCK SD_DI .EQU %00000001 ; PPIC:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %10000000 ; PPIB:7 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_PPIBASE ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_UART) @@ -180,6 +184,7 @@ SD_CS0 .EQU %00001000 ; UART MCR:3 IS SELECT SD_CLK .EQU %00000100 ; UART MCR:2 IS CLOCK SD_DI .EQU %00000001 ; UART MCR:0 IS DATA IN (CARD <- CPU) SD_DO .EQU %00100000 ; UART MSR:5 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU UARTIOB ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_DSD) ; DUAL SD @@ -193,6 +198,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT SD_CLK .EQU %00000010 ; RTC:1 IS CLOCK SD_DI .EQU %00000001 ; RTC:6 IS DATA IN (CARD <- CPU) SD_DO .EQU %00000001 ; RTC:0 IS DATA OUT (CARD -> CPU) +SD_IOBASE .EQU SD_OPRREG ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_MK4) ; MARK IV (CSIO STYLE INTERFACE) @@ -202,6 +208,7 @@ SD_OPRDEF .EQU %00000000 ; QUIESCENT STATE SD_CS0 .EQU %00000100 ; SELECT ACTIVE SD_CNTR .EQU Z180_CNTR SD_TRDR .EQU Z180_TRDR +SD_IOBASE .EQU SD_OPRREG ; IOBASE #ENDIF ; #IF (SDMODE == SDMODE_SC) ; SC @@ -213,6 +220,7 @@ SD_CS0 .EQU %00000100 ; RTC:2 IS SELECT FOR PRIMARY SPI CARD SD_CS1 .EQU %00001000 ; RTC:3 IS SELECT FOR SECONDARY SPI CARD SD_CNTR .EQU Z180_CNTR SD_TRDR .EQU Z180_TRDR +SD_IOBASE .EQU SD_OPRREG ; IOBASE ; RTCDEF .SET SD_OPRDEF ; SET DEFAULT IN HBIOS MAINLINE #ENDIF @@ -236,7 +244,7 @@ SD_CD1 .EQU %00000100 ; IN:SD_OPREG:2 = CD2, IN=0 Card detect switch SD_CSX .EQU %00001000 ; IN/OUT:SD_OPREG:3 = CS0, PMOD SPI CS SD_CS0 .EQU %00010000 ; IN/OUT:SD_OPREG:4 = CS1, SDCARD1 CS, IN=1 Card present SD_CS1 .EQU %00100000 ; IN/OUT:SD_OPREG:5 = CS2, SDCARD2 CS, IN=1 Card present - +SD_IOBASE .EQU SD_BASE ; IOBASE #ENDIF ; ; SD CARD COMMANDS @@ -771,6 +779,8 @@ SD_DEVICE: LD D,DIODEV_SD ; D := DEVICE TYPE LD E,(IY+SD_DEV) ; E := PHYSICAL DEVICE NUMBER LD C,%01010000 ; C := ATTRIBUTES, REMOVABLE, SD CARD + LD H,SDMODE ; H := MODE + LD L,(SD_IOBASE) ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/simrtc.asm b/Source/HBIOS/simrtc.asm index 28394990..f144d1aa 100644 --- a/Source/HBIOS/simrtc.asm +++ b/Source/HBIOS/simrtc.asm @@ -140,6 +140,8 @@ SIMRTC_SETTIM: SIMRTC_DEVICE: LD D,RTCDEV_SIMH ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL DEVICE NUMBER + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,SIMRTC_IO ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET ; diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 0590d256..b65e9f5d 100644 --- a/Source/HBIOS/sn76489.asm +++ b/Source/HBIOS/sn76489.asm @@ -197,7 +197,7 @@ SN7_QUERY_VOLUME: SN7_QUERY_DEV: - LD B, BF_SND_SN76489 + LD B, SNDDEV_SN76489 LD DE, SN76489_PORT_LEFT ; E WITH LEFT PORT LD HL, SN76489_PORT_RIGHT ; L WITH RIGHT PORT @@ -304,6 +304,15 @@ SN7_DURATION: XOR A RET +SN7_DEVICE: + LD D,SNDDEV_SN76489 ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL UNIT + LD C,$00 ; C := DEVICE TYPE + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,SN76489_PORT_LEFT ; L := BASE I/O ADDRESS + XOR A + RET + SN7_FNTBL: .DW SN7_RESET .DW SN7_VOLUME @@ -312,6 +321,7 @@ SN7_FNTBL: .DW SN7_PLAY .DW SN7_QUERY .DW SN7_DURATION + .DW SN7_DEVICE ; #IF (($ - SN7_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" diff --git a/Source/HBIOS/spk.asm b/Source/HBIOS/spk.asm index 427bcf4c..74df2143 100644 --- a/Source/HBIOS/spk.asm +++ b/Source/HBIOS/spk.asm @@ -20,6 +20,7 @@ SP_FNTBL: .DW SP_PLAY .DW SP_QUERY .DW SP_DURATION + .DW SP_DEVICE ; #IF (($ - SP_FNTBL) != (SND_FNCNT * 2)) .ECHO "*** INVALID SND FUNCTION TABLE ***\n" @@ -149,7 +150,7 @@ SP_QUERY_VOLUME: RET ; SP_QUERY_DEV: - LD B, BF_SND_BITMODE ; RETURN DEVICE IDENTIFIER + LD B, SNDDEV_BITMODE ; RETURN DEVICE IDENTIFIER LD DE, (RTCIO*256)+SP_RTCIOMSK ; AND ADDRESS AND DATA PORT XOR A RET @@ -321,6 +322,19 @@ SP_DURATION: RET ; ;====================================================================== +; SOUND DRIVER FUNCTION - DEVICE +;====================================================================== +; +SP_DEVICE: + LD D,SNDDEV_BITMODE ; D := DEVICE TYPE + LD E,0 ; E := PHYSICAL UNIT + LD C,$00 ; C := DEVICE TYPE + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,RTCIO ; L := BASE I/O ADDRESS + XOR A + RET +; +;====================================================================== ; ; STANDARD ONE SECOND TONE TABLES AT 1MHZ. ; FOR SP_BEEPER ROUTINE, FIRST WORD LOADED INTO DE, SECOND INTO HL diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 9a0ec46a..54927593 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -222,6 +222,8 @@ TMS_VDARES1: ; ENTRY POINT TO AVOID TMS_Z180IO RECURSION TMS_VDADEV: LD D,VDADEV_TMS ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,TMSMODE ; H := MODE + LD L,TMS_DATREG ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/vdu.asm b/Source/HBIOS/vdu.asm index 2c057ca2..bb37c14a 100644 --- a/Source/HBIOS/vdu.asm +++ b/Source/HBIOS/vdu.asm @@ -181,6 +181,8 @@ VDU_VDARES: VDU_VDADEV: LD D,VDADEV_VDU ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,VDU_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index dde3ae33..e6e7f6a8 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -204,6 +204,8 @@ VGA_VDARES: VGA_VDADEV: LD D,VDADEV_VGA ; D := DEVICE TYPE LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,VGA_BASE ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS RET diff --git a/Source/ver.inc b/Source/ver.inc index 53106fe9..f36d1c00 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.17" +#DEFINE BIOSVER "3.1.1-pre.18" diff --git a/Source/ver.lib b/Source/ver.lib index b2bb943d..d14c4276 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.17" + db "3.1.1-pre.18" endm