From 0f37e64f351659d18323471d4efc542488a873b6 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Tue, 24 Mar 2020 17:46:26 -0700 Subject: [PATCH] Cleanup --- Doc/RomWBW Applications.pdf | Bin 140215 -> 140215 bytes Doc/RomWBW Architecture.pdf | Bin 371106 -> 371106 bytes Doc/RomWBW Getting Started.pdf | Bin 160281 -> 166543 bytes ReadMe.md | 62 ++++++++++++++++++++----- ReadMe.txt | 61 +++++++++++++++++++----- Source/CPM22/loader.asm | 80 ++++++++++++++++---------------- Source/CPM3/loader.asm | 80 ++++++++++++++++---------------- Source/Doc/GettingStarted.md | 56 ++++++++++++++++++---- Source/ZPM3/loader.asm | 80 ++++++++++++++++---------------- Source/ZSDOS/loader.asm | 82 ++++++++++++++++----------------- 10 files changed, 305 insertions(+), 196 deletions(-) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index a81cd99127f5d2d81157011f685ab06fb6d2a7bd..7e733d99940a0d7bf0e3bc8b22a96b46d10a5ce1 100644 GIT binary patch delta 111 zcmdmfoMZcOj)pCa8o$_03{6Z7jLfI&|6-JZakdBjVr12Hwlpztbuuz^u{3tEa05bf eLnliUV{=z?OJ`FfXJbP<1sg(2rq5Dlk_7>Zq+GoCH1Y#y2X5K#Y zEz7!Yb`wJr69Z$z>3)^0GBD2e!b;YQ`Uz%6j^@rr&KBkt=7yFoMwaG=jxI(9riSJg s&KAy==9YE}HUyQ#D%ja^6_+Fyl~fd^rg0gYT3DEwaH*=g`nz!f0C%=HKmY&$ delta 194 zcmZ2>Zq+GoCH1Y#y2X5K#Y zEz7!Yc4I?JQ$rKu>3)^0GBD2e!b;YQ`U$R%mZrv*2Cn8Vmd-A&rp|`Wh6XN1u4d-u sMuz4F2995vjd0g;f- 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⪚dXr1i^RQc8P}-lEvbw*;zZ8@OoDh`EpP!2ReJq1VDR&wGJM8w>Kum5H_? z6Y)x{Ey-meF~fy5!;CEvirF?HKRYS2L0V~dc|S{xy;e9kgA77nE7j_$I~2qJ2jKo> z!To!0cQqRD%-9?mNq-zj(3s)VyM*KN;h2f3@+i-!v5|{Ds zYG3n}i>OoYv89;4K9?;N(tO+=lIL|_lSW4@vHwhSDYEem(O7GRiD_9eKW!mCbzYLc;Y} zueh6R?ZrVTa&;e#sFCNH9Jb{|h1>TqdJIU1!^$QWE1JtOvkP%zrDQ*Uv3N>oJaQ>E?z%~JCHctiT_mH1AV!z z97n^V*Q9uY{`^+nET0c}U~2rt#z^rp(5pAl*9I(&RNgB6{4D1qhL{JO^+VU<$ABh9 z>sv=*eP6uNsy#xP)R{-I+`>2-?a6o&Y-iZ9 zB%w}q(J8~~=aCTGHn%sZs-e8)*c0oL)b`7=kUYo^os=StLAHQU;#-sgUKpW_sVXS#5{K>cB2T}5@5hrLeK<1SE>NPrF zLPAOhDiUY-K74!G45IZb4^w*W3Hf$@Mj=mj8!yu8=<9Z=G-J?!fgrgUht#w4)_n06 zI}`0$1ZTaQ6I%a6t3tB0buDRyk1nomk)Otz9#^fGwFy(DXjnVN2e1u2R*ETl4a?uR z!P>&whs4ni76OVHx3Vara6DN{6mazCh$TjC+|2nCHJ2_irDnI#GIXHgUbOB5j~=fR zS5ep&qiqBBjsF1DX^9D33JLM&!7>%r{$c`ke`aUBx{{a z$d85wM19S_z8_Ow)9G&DTcn15Ep4z7|H>4Nu0-UNOGFJ$Rk6lxz31bx(|5Fq|G~N6<`xv*{dQ_)1(GJ|fnc&f5pgU~aS1R&RD=~O z0Rbams5oj-I2bO03S)=BQQ_C(0GR*+h`&Y!$o&-`i3+bnMOVX7vEZn{ZB!UFDgqEC z-GU)d=wD5V0IgrN!1o36-=e(T;tev_O!5Fii)5%AN`~kC9jo$p5QY5)V%C47B3uLt zmOyDC%r-bs|K@;#^S@O=p2K5o|LiUTfq+r|Fyk9H{{``1y>Eiq zVQ|r#-rWDt2K~<{P!UvHSZ0_oDjrc~;YM5aA5}={2J!C*LDZiL{3X{XJwuS9G^`MaJC z6Hs>xlL&_dnw2pLPsIzg-da8spKkA1D^CmZFY`z8JnpoAXDR95y)9VRH{mmQ^+11T z(|6jq<=6IChOcY4#-@?l<%9vXjWe(F_d|zb;p0PQ;Gr~V-K}RBYI%0=YPWCW1u3qz zcW?2teUjtOryWiXe!6V*i)-2K7W?f3k&NRFnFenQ6UI*}rqvhU?T!)PoazsfC)Lu( zhv#7f2a^GhK1@ZG3g-BNrfmzJji@9Iy$(*@W@QP{v#!vwIWx*a27PeguM@38n3=wC zG8EA=+hvJaT%G2gpzudeQhwa$gEZMx^b&s~FxL6q2R-ffS&C@x7zMK4E!D2JY+MY# zR`7irCzkVW1@BuX6#<#d=2dUJ@Um35?RVo3)Z%=SIzDg!fb7fg|6}VP!|Py}u75ag zY};yV+jg2Xw(X?ZX{^R+(%80b+qR9y{_pm@?)SOye%r^fm3-MVvu4(Bsj!5hi+X>q z>of`DGywr!B$$o}_<=`d2RN!&Fv5OajNu=$#M}8yuS(Aq_5s!4pKYU=t@^!|TbtAs zGw4|)etNlkdg|eEUMf6L6GN#6RxVPSxRjm?ROHx5yX#LSyz-9wL=5zYL(*NmF} zZs?|tn*7)>%{q-!*OaC@GS}YR*7lU`w?A8AaSV6<5@Ll6oU&3}2cS{ZSexhWP%q9V z%b#jykvsDHenzOx>uaVMgSJ(6=kK8p}IEuUq2Q&mt+9yg!YQq*My#B}ujT~5tSVLPp zYXIK4gn}3&B)>axcL^4DS)m0d4ux>rEl9wv4kLpc!ip4Ii zL~FCv0-bOWW&LoUZ?r}Cp${W@*Aop7%E1{OlBbrAE}+3N3ofimAP1R0?4J>H^XcL_ z3C;ypCRDQOIHiQCuAMaQWYNwLa=F<$OBn}v)tnhdiRRhkY0|!AKF>U&h0=5tQ%Y3d zfr>#kfwB+O7XV6AM?7R}vA?oq-yXd_`_*D6bBRQ3jTn4hm8%Db30|NYgZAdt4tK+8 z7y*hQvWZMqta zK?|yoWyuIrgR>{D;2m0;X)n%Npc26?s=43LAZO3%pQ&XRD9<91wBgSHR zkB2;6LlQfLrE4Ik*&25bsM4wOjPGH<`Hy+FF)|j%26*Z(I%eN6n^OV69N);nd)9Ix zF|PsCKaqw8``k_J2(negi{M+au%VH9ZsHY35|_zkn-}u>_QK9iiaJU_+Ayd>YWETY zc6L+!c+yPclg9an!6m=4x?TB@&3T~W1sPaEG49X5tu8g8YYEj>fS_v*+8ynP=b4Vm z^&Q<&c4S*9EJLn#nRHZ&Yt3EJZ6ORIF5)>5+#i>FY8BV`e?cRZwd&;$%MKx6I zZ&nw_4EKsX_MzjgOLavJrVNd(-5K914ji4*1$v!Z%t+GcAkle%6tQ@2?y?>ne9G9v ziKqEYD#8{js?GRAo6=QLtcMU=C+CQb_4d~$4G+hdw!U{1Q|cIbd{Y}+JY_`Jy9EjW z!D2dkP}Sm8!){^D(dNY_Xj|v-DkZEFPpPZ8Hgl?}tpW0@eW^7PbN%HsmP5>8=jK?t zxDRofoO_xtFLZGM=Qt*moCsflJs+c=o`RrUR=3maHq2JRWqLj)-nq*>E9@3+S8Js{ z;p}irqGL=v%NMf`@Q-O^UnxD&&v_5;!bFzZ?qK;?z{95V#yUBP=j z7HX4}ODX2o^*<0J2uU&De)~^9KVR+4x3WYx$+2pM9yt&>7Ublh)5LqaSmY>Puev?Q zt%a)eH?}KqMG(c|J+cq+l85)_5*By^Oa=lEuK@|Ku8$ZS`zVK&iHF;|KQ$5|vgvlH zMMvrk)Lo8*2g+|M)g5`az3OJ?HYoi2(}kmIU2>>eW@GfO)HAQX2x9Xzv0hj!4ZsgQ z9uU>sgtiLWd|cm2<`vqD2)b92Tf%t%2Q@`@v;U zMSzB5%GzF8I8yY67y#OBtQ`igA+&FtEK8^VgPin%*gJ~Qf}c>*8v+N!sgxl7zQB?_ zPSu=1#m%D!#_ABFKn2DQ<~g$~ug^;Uq8x>GwG3wPAq-0d@4@0KO0)k3%)M0oeL|B6 z$IIb1sQ>egNzC=H{j+i2yv?I(&#*(H4S?@pO%j2#k-A>Bni+-m-LL8~!f0tB?m!z+ z5YisvdNGWB@r>VTdIDMVG00|D-;vzhhd>zTDf?(_ehz(OLd406J^E?T zPGlQ>_AMc!ds1Ore+IP43u|`KA=Y$+R;GFO0iAq9@%^-(NsLc6A034{1~w=N#1Noe zsU!7+p0kDpL!5Bmzc4($Pq2GYSd^hp90RVYY~)SyuG)RUZ5C~~Nd{f1hdk*e+Ljt* zA5q&CiXQ(mTL=K^&PLMDSAK2rnZWe*;6d{e0R0FCIyy6xqyZ~&`CNYja>b9%kcsQ< zKo&Zs7G`q@a&7$SaZdn^L3YSqya!+(GQ3Ldc?Mn`Q&`ny$Bt-0OOv64Ry(vvM~6;H ziJw_@*5p$?%C+^Va()Bve(qQK-Q(RPou4z$F9Fj@-(vW?m9xP_Mu4#!d(4yjZ&oQE znnoe0X2@Xi4!0aqk6Hr4nDbrCWo#AhqvrW+{}M`MP*3VqB1dmRa!5#Nj~)Qx)si#F zZp>*oErztp(V{sq`Q(L9ODsmj=2xO3S!38{Fzw3?iQfu~0(Bi}lnE?kUa=bZ^9mR)Cx2**jjJyp;orM0;1xbp6i7(6i#y3?850__xQfLj&;c=cNZBa3wRq#0(mgN4c2$|^8;D& zD)3#Eq=D@i{S1mlsSdDkrI=q#&c z4hBfcjB}}Ssp_?tjHmke?Gc2BRIDYl3h)R9gWt;GEZ zXAqmQ)r9a}g}5o-N#ksSn51Hb>4yZRtc|Da1?mjiBJg+!9nQ~5bC?wx353~oBEIQK z9Zf%JX?}p*6>(&GGEv%Nd5gG27r2oqEOZLUBIpUWCxe-fXKM0|J7FWM#r|f=)v8<4 zeSW&y0Tf)L!~E5MS^wT5V6w3O&qkbul^uwUq5QvULv>CF`p;hX=?oS4==&~peBn6? z-ak;8|5t6;*cjNkSpVv;Neb*>xWs>EO`s7aQ_aZ|NSC1 zATaI^QwSOqjf(Bhdi>vq-~V|r5UmDOoEPtiaQ^>&Au|UM@fI(V9eFg$i#xv{qn_3-I@;d+d2y%j=kvIoC@Tz1X*cEoVi=6$bpEIV<~TMcxcT+J>pDWRua*^g)W>k_J@@ZFS5n*bRVP!^X&jv&08V?}>~@~)?7h&Oy}hu)RMS6X z!tyoP0vJPM+`FT~a2EPwr)hp|U!oak|EMfxwUY((E4aAoB?wD-I5{Al(jHRqMcZc= zR)Xso4)jSfiGYAR>Y?v5#UMwK84BSTu(yPlqr-!UqT)%92K$h-vp#@VlpLUZs&QE8 z3ynM%1Tcf;fnsa0k#l`9N)wXgrYDra#l7dZmn9w&)5L(TE!-_WJo~i~DxJI3j7*)O zk;ij2a_dXNRL8utxWCSi;I!mV;h^-f>;GMBv$Ul^Z#Igq2U}S1`)FnkT$iJ&UX6^z zFB5)27N_^h(?ZXgPo+d7p7qgk0|dn&Qv!!nwt!f#`C>$O`=5)q3&p`t$Hy&grza&t zgS1_lM^gmZ-1A5F(h~zbGR&fBB;4u9b6YcIGJfOl8)6uP%1~d^?L0U7!Z2lyhx(3> zYtZ17V=YO$F3H?`KBYv{n}V00Gvg!d=zf*9>{ik4YL55Y$8lwk^jU&TH0Hlf8@5Rp z_zAcL;yAS;LnVGF#X6qt(#eB&sdndGfP!bn*CjY<%W(AxBj-TxI7r7ipsi3}`;y~y zBlE=YEwVEb+#^ZaPVG2I`OINzYI-%gG6hjkMfLp7u_Y5G%XOslM;UsSlBk z!`eC5v>4zbxN$x)6xHW@-whJqeM<$m?*`c5!3o@K+TM6LHf!#|3ghgOj#je<-tdK; z@fMIA{7OrS)oHW`@uxsTKV=6Y&n>lt#V=YLqb}-f@@vB6SLuZU`8ZA)eRbf1vFKl! zjaOJE8HT_lp>>o?hcW-r2dQv+e99U;H;BXrS&EG+IF?OJ?PSFBSTQiGJJ>)WoDO)1 zHjRmewzs}*Ob*>7!DbIWyE_ZTj*OSm8ppmhm{oa3V9u(F4mUWZ5uwe4#Q;ETf&8`1{Zoa&b~^6evbo8H-k+n^!#4_J(0<5H^)pjX#Si*xPl>)yV94Q;Xopq~9sp1CZ zOp~Y1{`kqeThL@VMjM)eM(49FwdUiA_VjcnO<2WVkHk8z4}vE;I;+|pI57msKCCp2 zwO;_vjE)KNm+JgaBLe6b>NoyXcB^2^R|U3FZT)ihipLWZCb%?~Kiv1=ci2>Z<$d5h zUj7EltXIB4*0^B?&v!W;!`1$j6-}_#`aipO&)w5ewI;KU2Kp;B6_ze9JOLiq7_!e`Ohv zfnyO#IJn}BNNJsZoe75?>{jHae$JnE(p%wU4QoUg`nz!-pY&}P(E8EVDjX_ik0j^k zOa)nqncA_gE1EqgonWN^N_2tMNOU=EJMBs|^`hO=#NAeT+$m<|KLJIJBK2IEbJnEN zvnh&a_3?Ns+*zO=TopcP8(3L)OVp zO2)`kN}*|K;pOgFg0m@-9Vb1Mp#7UZCpD)cUh~r_@9-v4tNW#3G1D3~1&eXd_=RJx zNlRF~($J8NTmM03_hKt!rk#L(#0$V@>D~LG@gWnnUYpSbI%F6jlCpRRz`}1|Y3RLb z!`Mp>8+;gt`z9-xz~11hVNXW5$PW{a3*w0xZ;MqDoaqjbr2g&n^EGW{oI65 zn?;biW5oZFyK?!2EO0wj@45V7dYuA`ny1i?Sky61Dytf|+0t6mHB(4rqq)G^J<9w97Bn(L8E|;C`P2{Jck8zu778v=y9WeraoL@{v$04z_RCe?R{|soK?5{ zN4Ca!-nl1!o?Y>sO=C7Zaf@76EB&|M_f_*O9@&InmcpDMf|PJk@Q??${mK|B0Ik0A z7hhn=$T~IBL}4w=Ym~4r)A6c`7S4=q_8JZ`TZlRVKJD{Z780zLJ5sv@FYVEn#&S3H z+7hH1Uf=HCE>7$|0YW08_3b7@%T<@m=ez{JBT#r4NDsY`l?Hma)drg9?iw_z!iBO*uK{b)#d197VRkrFaQ%q8+j24%==G5D|55Oiz?fa%w)X zJ%%c8E9aPCJ8Y5q_Z~AHU|FzJ7=lgM9b)vbo6}(qzsd}=QsW+f&e9mUU{5gF#v|f8JcH;)2 z`JIlt_T4~OAoA+kk8D8IX`XL7ys!o|7c`0_O5dXB^9Qen?(!szq4xRMkHt1fOBpy~ z1Jo2LQBm}kJph{gaLCb0ptJ*$jphulgf{+~Arq*O#i0un6p?T0f_O8GFVh{uJ*c~Z zkVH2mBntjQ;^52Cs^*>Hq_dzB`snRmpaZi@nR)^ai7He!efWdvHmVY?cW#;iChxt73OwO>NZ#zh#kJrz6m3k8hn<(wY}tuZu?8UQtI5q^&Bs;?7_@1FXih_ku7 zcsWh(aCk;Z8f<1TKHEp&qmv_?cw+Z%ft6BQ53giOe9h{^glug8Tv;I#BVa9dfjCX0M(y993bEuVW_1RZKKyXd}bX+SI%PWpiIDCS$qeM?MVUa4V?xEo% zAykPF3V;@kJKlyNS1zzPr>tp;89|_?G^|2FX_8KXbcbnGh$}26zB@`TL=0>iQ%AtS zCn!3zRn^$*V~Rcpl1v>DPzn|UuK{orOU{oH@Z)}IkO+o8Rw3|m>lqjY z6$^Z}Q~VbCTb3MPle-$G!m}Z;9!5ab^fh!xr(=K(w|mR^O2z=9=^6thY1K>my>Gv% zh&qIYXllkzSaphNZy#(fitOA2?69Eie8Me`Owj0-tDt< zm;U@>+LFyB*%dju#=BpOT5#H=Ub|Ro=y8E$Mt@uI9X}rzb$}6yrR8$C6I@D4e7Y8; zVOmZaHwQu{+BA1CP0bBBg@m@eKyTxI}!~rlW2~ zW6W~t`|>iTS(+~+8!sX3CGxP=3zjk&!q^~AUS+u`ZrWAL>ip|tUWsUHNp3cO2Lr%- zlO~DO!Dt&2*PY9`aV}(Jo??n5o|-&o@cVD~L9(lmEZ?P4(PR)>oHi1{6`TBtM<8bJySM-r`ke03;%umSwX^+^m>BM@U!^j9 zlfAksm)#?%O5g2LOt-lQ+Gmfm_dP&IJbv!)g#-PI#qTHnId*WT#!udmzs0vorWZRN zL)TTov1^<;n+rqXD_$YMZ`2SH7(O71*w9cYP3H`POVC^`zIq+VLKBiLAFh`X>|u0C zo$KAO8MdwL$G|P+T?tB#6k`M@b;6N7=6C(2R0sWe& zX=J!jwpv@6@yxNXSo)K65<^p>Rn=T9r!SvFRXg<$gkRtt?->pSN4Kp`xhz*r(-kFS zIe{f3OuFs0qqm8a6ryHF*A_U z4wOgYne}o0u+qU;*pseuK{0_Mi|{@zVAXDo<1Z?`9NnOlltM;r^Nh_-l^Ai$29H=; zdFb;>sRSxk4#&m)DeoSS>mZ(twvK&d12xo9R?&uCEC0Hk!}-H#Ed+%*q8z!`FjdVM+ArlD zJ{7TSKswc}$L`Md3@qu)3$p)fMLNg%Rac^BwbU?Ae_4jxSKNwiHm=%rh3-ri|14+* z=je_jwn|iJ^ExXbfApMs1L(N&(*p2~#+h#lF4S zF8a^#b`DO?_D|V#%LNV8kei&X^_<9N>=lSBmJT5`UlCL%M4WJ1Cd|QoIPaF$`rEpA zcFFbB1+_&BcIPQ1&ZJNo=&6CL0pvmz4U2ACt`&tC=qpaA)?uy)Dw5rOeziDjT(Ae%v|r=r2hC<2yJbwr z&D*_pZ^nhE278f%s_Y)Gs4(;$*O#MS4g0>yr~L9WJWl&p#gy(CyIfKK1`BwxRi^r{B}ji@zvp;io?+`^XkuYS}aRab?G3d+~I`IY`&OZxy`OygYZWI z?@F^-??lNsWxqJ0*Q$#AZ1p$ed=!we0Vt&4a33|Q@sWUn5KD!Z5M#5Vd>opDU7Lm; zg7GC!UM@~h(WTrhOUd>Oxft~kVct=66C6yz?lGYdbADFLg|mwE6Kiw1!rqIQmHVb6 zGg^6-A_v)hod-a7Mj34!n2Mz*d~Pb_D#WVWoeSC!60+aM4%8yO{t@`Ek$Aq_fk7?7 zB%{_jNJ@00tiL}Nre9GL{Ewcfe9bit~t3cNa6Vl;p+Vcs%vIOp7_a_eI==5_j3dPR9M zVGN%5e5of!-RfD45~P!UwNuy8sSB+PNn&klL!S^jbYJFic2}EHTlEe*y!^};Q=$y# z4E*egcHo*i&-r;j9mHTvRD0!#x?-2P?-l_-H z;dgU*pb9F$R0Zjh1)Blml`Em(ix{+E4A5ymmzo=wNBN;?Ukzf2S7YfxqyWNT86m`d33|3x;zDht*EJERCz9A;? zN+3?is%g;SG{XkMmq2gN&3wffc&oR=&C7#ygQLJQNy3eQtrSD{`>1Cum6<6e=WB=a zsBlyIefzz8(15OlcG!I=U`j!5FBqp9KsBUa;y1k7kvXc@}nb5>uZ2E=1~3nC4) z4wO?Us@XVN_{BOS?tPtqngl)W6CE-OFP=+;^(I9yvVC)Lm7fCWitl=?C5qPfN+YiJ zX8Z)$J&fyfXoL&kuQq&Iu)UXwxAb_eGh23MdA8c1RoO&>tZMgw!ARKZ#%cEn3-LjeJMv9J3#C(x zEPS5fSnfAhJkB)0v)-Vll<$YS}dfh@p`8W+b2^;2<(;Y>wk?pQuN>d`Wta=mQ=bV@Gzx zv~F}HIX)Z3=k>iX4u({$WgqCz*wDrAi^orl1V!Lch=&jXL>vmx_926f!vfId>y-_- zJ)p(IdE@1`1+>{1^cqe2pj$KUOFAl3x)WXB#PB`{UJSqMW| zMSKgZ{je1Rn7;}E$Yni_%QJ+g>PY1o^?gF(5+ZNLsy=zGfJlPMSTVuwLBb*(-t;no zx@#BRIDnY`5=q-BAo&z1T7(^4OliD99^`QXW2wKfTX*tA$BpE_2=G8Nnaz@TSk)OAbHbK*1oPd2~yo_)!b zI(czTZo3}TUqd$m`uTEg1(CAEl&)-W?*T4vVx@9{}eYg?G{Axz9^LO>mk(2JV@u=(_4i zeTl4f9^fRAkrS_Tm0Pt3rQLkF0xsM~X(PPtkZj*%W~63y&7Ajnt@l=bs*ETZxt$Q> zSy{K;NTKG7n7`VJ6c)zXo+aq-nZMu|v)r4p&H!?v~JB-*yt_`@%Kx7zLN$c%k!=mfFuYS#}e zh$*YkT6#w)BS<)%P>g%&`2FoK-ov>BG!#B;h>~^;0~v94i= zyo$$^TWrCZkZEUe)J>D5mkYEHA=8bxr0{{dujq^A0(4N>bOeRz?kB$?F=_|vKuwjX zwG%mmZ&4d`tQ_QgtC~LF4#1J*^x%1sY(0vt2SeU!%~OjZ;ITj1uP9YT4Z73NPFDlQ zni2wzT7rxsAjHKnMe1LIJ;O0}Jnm3fzYd2SYk}YIeTDy$4f1`8U2ouQ%RG}h(*~Us z;xx#Lx<3wCJ4SV8RHe}DS06jN(yQJq3x>P;U5cV~`<|+{(n-xqu3l&WJ{UfcN@S7H z5)n9KtEl)CDXxjYWW`V3l-LUeOA!KqEKg7ryb3m}?Kc8^o}5V5OR;_v2>UrGX~cYw zk}$@oEP?e#goUr!+s@;yEO$L;Bz2VH33;>%&JqCG>Yhdu0#$A$apaLO!dc?vjvIpI z61L$cjPYu{zHm#s04F;OWxl(${9tcvi~{Xk9qEu{xUh>K;eyP#$vbh=U*p&Tgqias zV_QA=W#8y4t6WdN$tU_Z+($9aKpU1_&!d;g+1fdPf5A&lwYT6xn|_q*r4rD2 zb9f5pnUk3f`(Znhk(*36qzz-l*J_ix>5GN-w~z0U9yOf&^Z$~ImK%0naQsEK;q zO*r&mL)VugM_5ovXa)FrBANX!TYs zWW-h~&gq$6ZKg^}gRx--Kr$>nku!BAqBVuabx-!TbCtB(;VyhhxhqB<)u{(U?H?yybT@(R zy(;t?oi&G%qB)*Lr6RW1U&^2Kbr^Z$ABwU<3NqR72^aL~NV~@s0J~_iEbKJ@5*q{n zwY@2;)PLh!a?F+Khuz$=BXszDhW=CVO3%46kJ`xAHDTW%W-Q@nX(^zc|4ESZJoK*% z4j5MUPfznNI>f)_;jsYo&w#1`<-b&cfAhhy|8pp(`|nCY{58Qp(M5zn13fT8jfWXJ#-oJ0Tvj5MnBq)yU+0Y%07OK1AGn|+QyNp3(c zq{$sA=Knm$!~u+l`+H@d#0d@hA7}Q!2n^6bP;>}pR$wyUpZ-Wg-+q+~9)xO*$ zmiW5ao89DQ?bfcVOgyR!cXq$UC1X6+05)p((;kpVU8t~a^gtd)O7mMXoZLMF|H8*> z@Z782%e`7EkPKopXUJXSYe+3!5bp&@VxdCXV`NBdZAp5i-RZda-o3mkhvLRsG^r+$ zE0y)Zcz{wq8G-jvvI%YV zURoi|xRw#{!c2ZaN^n0TxvV zV2CBH0&UFJHX7IR!dH~YfKRy|kSL>IPNrn8!X%#;q1MRVMuRn8RL&~+KoyYZsM5;O zmx)>V@-j`@%tJq+I zK^!~5kI?}&h1rQa2L2$0`|||09194cx_dH_JCO`^Jn^}`*=4jV%W8qT<~XgIkI40B z6U|QAk={SW-NVIx^rCU}GkAl4zh;cAiOeUZ1i47<$pZ3$;RmNe7^fsLpF{opOHq`D zuRP7s!?5W5Du?ilj_o&p-4eDwi|;!!l$05F_QOK_Vv-*|T@ z!Vg#SVR{KF8MdWl;-V53q8lNt@a?I*-r#KBi*6P?l`vAl-(LF5A!E_0p=Vq-`gF;! zp2nR!eiS+}`c$uy?8N+~pq{lj;h;!P?YzwC?||yh4|ShYn;BX+Ooof?kWTwW9^Y}c z5EB4`2jD$;ReJ}&Keb_pA%Av<@DwaXIIO$c z6M?|;`;j^jP$z{GjT)z?2S`RK%p_fWEdivw=$MGTK0CZ!*-DI5cK9@@$P)gIBI%*3kE$$!Ea8}k=x|O-@C&)t{b{D%uB*)*kj^!G2zLLD|nqtvu*!&96 zO~uQr5t&co@HQ!}Cd3x#_Q6ck!kLK&%q|LLP?Tt}??I6FsUjp(Ke&y;|^kP^;5DS;Wt>9f*-#J*jN}INVl(k+OIC)S|2+Xd+8Fi z)AgI-o8YsyKrZ?xQ$p(0m(chBG=58udW0Kq!TXX8T2IU9rcuS#KCQ#HL=XiCFj|-W z4Ej`yS2vW2;Rb4~@N@YZOL)Lem_D~c(e&%`wf$W1tRo)vSu)(J#!1IX@QmFmDE$ws zgVhe^o5bUOFXt2{Ybd zTH+}2k0Nl>8=gg z;Bva8Rf=pm=D{5)y=uK4h@K>^GX9LmNwjFdP`f`26-<`D=$!v_n{oVeQ}>sQq>@Ao z`>zR^;3af1RAi}U~GSANhuq6Qy!A@ssr5=~)S zw>hN@)pdDU3NRY3=ZG_va%z8ikVT}?a*C&vLJBtH!bj96l9oMeB};E)BnRkE>bLPB zCFUlCe$(f@$jt@o}BCG0J-((>IAXCXl#T7n9|*?%!MT$nYL7#8GkY z158&W-xZW-YbR>Wl5f@q5B!0%g-GmW<)jwfl4%(+FwaQ^|T0gDy6rLODUG0IT+`pas7#!txI9s zXp~{y=EkXqS^1Srx{#$UfVU|@vRF0XyB5ARr&PpMn}wm?H- z%2cNyNt!^SH8_E^eo$dq8@J%O%q<8)R4CR~F``&0IPFz!yAu8@e!O4^Yb(%dT(g8d zeQ8Q_HO0+xW9@gi%><1A!oXE_Ri9&}2Q?T0@AtTzh_N==wDyZ>p@*Vbe%vFxct8i* zKB8I_cS^FSbn6$>W3KCGcvGUaOA~gN8Y1iM!C>@u3CX3akc^08e}?OIr;vi1*%&PA zXS>u$9VZ*PGd;Snk%>I{8UOawpB#DlAy=Ta$;nfN&MoF>2%UQ`<=;kM(fKAeJ~5#p zBEa)+<3))@H+JpN&s?mCaI0L%{{)nWiQ%N6{+iK<@BCG_(~4Pa-O>3#khXTni_s+M z(&CP?X6$3tIAo6^s^uu@?eWy{h#-Fhz8y6E-SR~x&dJN>~+}RxDZw7l!I@|t2$Yg6*DAH7DwFnnd4cX^=H$Kp8y)!r*W)ZAXSl$If zw;K$I9t|rY7zi&=f-nvO=5as@BvuU`EjDgkJIE~miA@R+O8jiN#u}XK$oR}+npH`U z?03H(3Tpps<6D;#(t||62u~sds#QCR*Qa*mYzzIIAe>^`{jo1E%l}ECm3F!i0ae-) zpw(rq zb2GYtf&ht2<{t_f7x2bFD|+L6VZaqe&iRD{HWghmH&~)AgGzRG@aUc6PLMQpdKm zCQkx}YP_Lz0H(97t^>d*HxNS3=Jo2vxcDhEz2kZJu9Q&-^~$>smN8BVW&TSFvG|1T z>nWAkavwBgv|Vm-hfC+!1cQ0q-ZiSmkr8|`krE8K#1v|eb$!qyG^u;#D#9pVyBBwU zBIdJUSfQrsG|YKW@h3T9DI^kuo-dEIYpY;1lb1bBMonn*b#DMCc2k+cPsq|p-nP&0 zXI@1k$rjDdgujaH!9lGu=yyC}E#IN_qCM&x5w&;e4(B}{YtxuAi&h;Bdp?Adl0Q7Z2MF`1oNpz?ABsmx^eB@18B>T%vjr6d|_eL$dT(7 zA`P!KvTVnHltlMhRH?NuvU}?yg{P!X$>gZSH~8$iuX9?Om{2+J-u2k2Eq)oFZ%Pp~ zTwqgyU6y|fv73HTjt;ahPPUZkf7AIgYj>qDhZJ!>7@Q9{lQrhd^XH~+#v>kvdjyH* zMt=3eKb8amPXfJ+yeP?XgmX$VWnbqabo9o~<4m5UIz{n4;qTJhzIn@Zlk68c9r_MS zzGeK82bf(UV*SQ{Z*-h7W`<=i*tJKd&@D;^b&M}+B#q7POY>bDMCuXVIR-f39PcmV zHNpE6Hht)ZQXHBSQLVo$FmL8DdgcUkNY>rdKG_H;r#$+J^2;vXjGi8cVbo&X(+L9< zGr!%vz73yEZaOdZpXrhVsP0YPhF{zTWtFmnbM|=s*s^)JC8Coz#`Is2plHMXnS=fT z=#irTFN_Qby916vF#i-T;K-9ChzI&Nq7E1<2ZWC$`Jnz+>5`-PTe_gZS%8pQ;eFs3 zBI}$7vMsZeiR#Vj{);wfE+NeT_A@`lW-C4F{oAEV#=3XMx zF4uTiT-X0B@<1(O9$|6#;L!f)kb*1*J;7CI@ht>eo++P3n*v=jGS~IHo&Q%E&qvcY zN1jl-pL7xarA$%&cd_r$(E_?QrD7HUX%+nIJzKofn~3<&Tm*4j7~sdNP!o)cr}3w* zQbpH2tKWNng_%fm7fcKkyQ$xA$5C1;okZK`9H0EA`nJ;YTZ%b4oLuf<*(;1*}Y!hyAHza$5)zKg(fPOLJ8vQ+)Tg8Y9qYrjz;XicR%$ zla;1&S%;@w5B{3i-xd_V1t`Py#pw*DV}TscluY=rAkQC^l-x3zN5&`y;MHg2e)hsVj| z3e%-&8%i0?zl3DreoLK_ndHIcM!aNUBTq65HAAm7N?NP8pQnjR0Mg-=vovT*N%`#A zboFUXXJB?N)emV%0Y!9U8d;XD4CO!1F2%ooLo%#*49MW=6X+>`>E&~LQlqE>v>6oy z-CYKgcV!qd7erWyOF5AK4zV?rT=Jg8ISz1$uzDmh(c0?BV+b!?@YPAoX{s`1@p0a0 zdfX_M8_`Tg<0Oqx0qhf+ahjP0=8bmPe5#i>5QkY;Z6)M(7h&i4ai~STOa16rlTYcD z>c7wNWf9q|f>B{1q7y4VmwW(++>gay3qQ9_Yt1K22{e`Ht|?6OXt;=D$`XFb3-T0K zm+^h+;b7**(kxjLCMUsA@%mHh@o!2Gnr^mL0k5|1%9}&|FhE}n<@yhZjn5wxal_hq z!Uh-HbvTZ=suH@gpe-%r+S{KdxLkItmW#e2>dBF=I;o#y*PNOn5;XK0=+Zk)W+Rz) zZqwxvapG(eGGM77_%^w=K>L}0nnt|SXqFo=zoc>K?<`!?sk6~SK;mst4d`vbkhi3K zyGZ!FYE`*-&5>={ht1tti<`3#FX?6 z4fHQxiRn)=GZrg5Hv+BqD4$v41;ufb=EXo+(OEeE8^rjR z8VU>~0qRcwxoG43FFy_&7iatjGln78f1z1f{^x~2cm+4`-}#GI`gi4v>%a2c{^y;n z96&GxS0Xql8PzpbDG@)u%HD=S2!jD~XJ)=-f44mr9eib0+HW0$ZFsK9DdEB&r za3M2Z4o@s^XF~GwdVX?^zFgz(xOpEsyv`(p$-R`49GQ}R>k5mTnl;?o8=pR`>`?8R zjE=g@H{4tMIx_%+wm;0~?|D8J{m#Rqh2PE}9UGKn1t8#xpdgf@jI1Z(RYv#rP2-6e zc%qA1JZ%}N?O-W?alLkYc+@Bo^Ac`xzArli1}4U9tDVMnPq+5Vwj9mD<*&_)Q$1_C zEIX-YABJStQVWGP<8XLB#ht0nOI{DgQ@TH34awILG zZ2io;cT7TN4y6~CJM?R~@5WUmSgQ#&3R^Xx&#0G9+w*OBM4YaIt3t|YV3 zw29qN(!fqb9*USYBKvqL=Ae{|>89p60a}@*PuFP|aP3Ce(qYr~_Pq=(Mt`6)BVi@B z8cV9YtnjUGI{Vh7uY+eoInthfxsxHHwZP`(qM!O&2p)4JnjeEQN(PPbAge=59l4;E z2{66mAFLkS*4g?U^VL}0tU|8;p~SZffdW@m4SVZIg4|+iSF|H1QESG642p{5v(Oah zh1{@1TZmEH`LCs^Wd7MPiGEdfA;>Cgwv(<7`G7FuCJ|wWyeWAKonI?{F)}{6`s$L# z$}?_|UY`wn(cF^oX4^)L+WJ9&e!^vBFo2Z+X6R|nW-^)-h|+~`bgBu9IumT0)Cr1b z%H0&&12$SMiTG*>AgjD&{4{&Z0-?|GYnSd;t@rcWaIjBm<;K)AowcP?fS{85l^YyT z!^Sgm{Pjj0=b2I8CEFdXIfK@(F)|xUjd@8EM_Xrx9{PZ6NiZmk+`p5nReyUp2cS!m zU-&K1lfE9T(=l%2YrM6Mh)e?B3QI(f2w<@IY;CcelELx2Wvu8Rl8@y#DEQf=1I8T; zY0-Ch_JvtLHGQA+MT%VQ-Ykw_Ix>cMy(xo~l1s^{Q#sX?hF63osY~S4XAp1DQ9pQf z;t@OD19gqB`34BjVhM6hH55<-J^)orjLY<2+Z7W$+HIT#e!X>HTC&O0`p7_@b#h^} zaKO$P<#vZ!6h&<`$Ky?xNsd$hKf2yKkjnS}A9o)kdvD4td!2LaP4=viy=OKVSqD)h zJ8mQ@L}X_bGD@UDin2pisYGV-yN<*A)$8^7{{G>WIT4_4}7*M*pxo+K&bodn5Sj(1!pfs;VTbGLeHO3J#&|>yuhPROGRqw+}BjN zoQ}z<-#e>8tcg&*mripuGYZX}iV+#48K%nru~*~oop&>nP1^7b%lKBuC#VUZw3xhR z?7H4riJx^j1Ww*BrIAWMY-U)#@S6J((6IcX8x5oM<72>2sw=&H7j{*iRcv5**xL;U)kk-dDY~5V%hW(W$7a!IFs!EO8lt4`WHWU6n z(KAZC7vkEjXbSB=?5zp6QZ#CI%k9pHPz8_25ci!fp3cUbKa2MhX}EEFsqB(?vVhVn z5sH~tp4zm!!n@bz9#AB-d~7seX2HvJQN8u_!>l|q{;3grub9~Mi~WvVVFuSL(p z)fc(AS5(lU>1J=vuy7X|=l;ANh_Q3{roPJDs53(GMUtrSr-qSy>MC<;n~l*M=X$Q*6#LM2 zzT`*E4Ed$=#&rch_Po#d;w$~y%%!HhNWUS@lc4>4zGJGL^=)mY>d(YIIc_IRjn1=Q z9@Bb3X??dnOi1{iKYG1$ayVT5SNrx8^7*TeN7Obe5I(kl;wUqb;Yw%V z6rsz`%#-?%EJZnwW)}F*wHKvr6?JcP>xBfYcnNu?o z2z&o;f+A8bmy&OiF_l%#_u6Y&?`P%Ms~TP9leR&G{i8#oCeZD<)SJc-1t#@& zI_B|@UDxHu_D>COm(FeZU< zdD0u7)OYan;W1H=IElK8nqKDrW@MBB85zOT{D1FYM>(pI|L3tSgUzoffRw>LOpmtB zV0Wq>?6~>s8g0HJADQ2HyAC#I|X|@O2@B^6?Z9x-hFI{Yno1WEAt_*}eoQP~)qkJPjB8sVoS8aR;LUoJp5p~_mS1S6FMr`=X zXVx-P1)2T(K|4am;PmU_0m0~5=PKP(WHAGbJ>g@LTl??DKXi^v^gLBAb&(Jy-72K> zTg!K;<9#$IoW*kAGQm`l{f@vRsmoMmtkeRQe0&Ll*~RWo3amlgi+ZC)U+nkrEyd!6 zmcz&~79m{ofxnqIT(DSW1qD0veHUw|1o`@qZo7sDb@@x^l%ikX z9v-(mb;0VBBWED<#91SgkOsE#c>Cl;d5@x6(Bt)M%fPW0DK#&P712Vk<#J(iRHU~1kaiV1}gB-1guMpTe@VprKgU#v+ zE1rjl8PLFJARR3!Dh-z4Xe?|Fpz3IZ1TzN&_~2nFh!T6qB2WZo8~BA1n7KCe`QUP5 zh=xJ-KY3ZDB*jG~G6$RKU@cJX@3e5hP&nNagk-=RSS>CNfAWPyVM+^#6eiJt$lw-p zhzXXnz?Pw42{(uywzYubU;#~RnJ>glDZu$px_*>6Ebay|z%_0VAuM7E2_VF!;Tm&@ z6Arb+N|41$XMyinLK=_+e8v&t$}A)zf+?*aVuS<|C%)PV)RnLTbtO=^x)D|&ELP?q zZLEwN__}l33Q|KzNF9_>%lu0{IFaGNM9u(UKGGUe!Dax&>Zg|d7aukuA=VWjiWKg$ zhQh#C`%lgw2(~s56+CGUG2&cEuz{>$W($ZLCb9(u+7?Fz;%>!vv0y zJ~+wpz-{ai74|j|KfK}qvBS-d5C=SG1FGyef`~HM0>LMofL-ObK-o1Xpll3F11(?+ zGuQ!|m@}Yh+Tjccf%~07+b)9w1jvO%X%7TtxIj{{zdc~}b^)w+?E!0;E9f5#4uH0d zrD-~V=C^f*yde|}J3zv)sVktqbpV`m?vM*?7^@ z7ZBMLFX%F?>jG#aSXwxiX5kGb!_NUNGm7mPyy}8$1sfRY3fML-05&IAz&7Lq+2f;R z(FbA8tY$w3^SJ@ma9_}K+}!}HhZkVYbpx!{cF-x9%@0z8k?x>zr;i_lt=s|cK|59X zL7CW*bTBALe1M0q-GPS*{?Hj%*8|9@_Q6`_0cfBTJ3-=b=S_&ADK`M3fUrX*5~6E* z6bO+(@BjeAW?ttKg3}_w$RH1bieSMDU{F2^f+pc!c?9<0c4D|P7^;Qsn?PR=2!ZP1 zv}VwPa-mQqd zH3C`&*8q!454%J{WuPw{@B^u6*enXV1R*n_IC^+43LqJg2a6NMNk}^W&u}UgIWMPFo7P9 zOoFNrD5)mV>yQp~m`4k~o(zHGqh*?OQ$QC3oSn6Rv+oHc1Xra(AAoNM-rr1vR=_nD ziCkKc4ng1y+oszYkT3*G%N&IKSkrVSL=OQTuq>l*BFTc3A^4*|XqcPLV4T`yL(kwv zX}}7Sp1>e2_6|6F7A^~flwkiHXac?*05LQ<PBCN-!Dk{s$8*02t-!{Sp!h;5)C-eG0XwwHARY*Q9R-S` z??aE^D;RKPTn;V6CeeV=r~;aYJ7XZGCjAEx0R+#)LX1tWmCz|DI}Q}zsRCwm#RFPl zHP%+wD}b1nhHJ`B7;_Z}dtVDp!#)W>*NZx=Yvzf7XRaRl1Ls`>#Lb6T&)ky0C4VC% z4Z%X!K_%@%&_1`Dpzm;SGPo^ihTg+kDL_wJ3)W@tRIIp1kSYYnr-4h(R_GW6Urh&> z3T+T41mDU4yaDZ4hW<=I?R^5_gGk)~j?8pGauBSQ4XgkXgqv)-0459zMwde(c;Vb` z=$0J%VC4_C7-;x7`8s>}xN)Kn*8G5??(Ps^9N_B|2uQfxKL0!=LA55or_dUN57^;w zaRh%;N)OZwVQ{QRZwwA76gH(h7Mn&Y<^XoUp^=9#B@SqDPPF*JG76NSB>>xDwmJup zsRu1_2n}!m=QN|ivIZvr4FpIWEWxmKK(=_W7&$BfiwtavI#L8u-J?M>;k1Hd zuh2&u6&<9338*8jAcSaK$|Rr_gb;m{@5up#5G?a>0x%9BhG^802_S}O(9k&9Acknr z(1$lb>p@B;Y*0ZA(MJbzJAk)HG-&8UHsCle!2*^Im~fQB!2$GAG-&5THekZRaoU&z zali!7(1%691RR7CNC4|~^bu~;0W8+h5=V}M)h7Dr2m=SOoCizQLjfS+G8*J*#z_Nb zHlZbtjFS+@iaQFBggB6g0lfgniA_!g@=yKm4#+<`e$zoh9Jqzs{Rxbc5C?vNUU5_p zD97#AJSYR&kM@)TPM{uij6+T^V!)F8e|JE=6y|@{fR2PdICl&i5eeWL`e-u|xWg(u z>NFBytf7y-B7icW9`uhR6+k`cAV+sV{n5c_4iaF5p+OfpECc-;EsdrVSGG(P0zJQ#+ z5?oO$PQIn0hUcBeqQZ)CCY_!^;1LoMo>{^>Yb+mftR}vMF8a(lgPV!*@xKZSo}9%y z^=+T!lHw9^V>I5PowBuxl(D=O_0uJW8BC<{aRP*lMJ(RDJsY)(u7>G(RSU`v{?Z2| zY51xtls!^-rfzg>H3BLmUZk-yu{n72#>b*xDU(MF&^r?SsgTs#z?>H*(TbMn7^HM2 zjZ!2EKoNf2V{jz=5X0`(nUYdHg;&GV(bdU3vo43v$B#!Y(cmw&o77P;#l9oWC4X!Y z{9@wyl|i3jd2!Bt8Lu%A(Q0OzmA!Y&h)>U{^vMPJSi5e#vTe_MEbrcJS7-l8Y3pj$ zymh^kS}U5a_tjFh+5hNSsjoPkWBr6Ct%e8()#bv}F^B|M_m>y1$wD z+c#}%iu=bCjmiC+&HLqpn8#1|M|OW#57fPul6uk8SWWgL^%&8Qoh})~4LnSn#J*is zt;mO-JxuSPk<;D-%FKU^I7tnAs-4oJ&0BRl`(AHT@qIYM_>~BGj!-_=67e$G+tzKp z$&SvED4+&XSE;uAqlnSOV@rcK?HpON?az7k+Nm$l{gx+)&Dj%LJAdiV{Hs;fv*&eH zvp(C|4Lzwhu`>;M>(>;1a)To>B06smUS+yc%=?aFx{qjXfvCnm@aGd-DMO!V&eYqR z`^MjWIj5CZsCo=3?WLn9J%{o;o>=XtPAQ9A#>Aw@9J zzy5M}#a+zQ#z^-5(4X)=RZi(Nf#n(Yck4E3rU91M&M`Qc?Uy~Y4dJ71SN>47cvUm1 z%8u}1x3sL6dd<7VT4YXJu=Qd~-`>KViJ=tkwQu%(F%;@r+>7X|FK=GCFT@m{)gE8y zA|2gbL(KD8TmJ2uml?+6_$NA!(&2COi&~Q1U0S?9R~db-O1m}bN1;VqqCy`^2j?i= z(~-1WwW__~;8*^WGIeow!`GKN>?+aDu3QvP@Jd>pbCkxNa5w$MOh0Xg?{hwLe!sfc z`?4z4_<2M_ufKR0PMx^dp21j|$>?xC)+B%Y=Q~b|xNya;hf#fQ7_()jz8LNinM(~Z zfxz|mw~or zF&o9qtYcP7F&2RaS87S5Cgzx4b=zR0Ddd|c$rZF>D(rj+PsZC!!wiTA^f zNF~`{F%}-Y^K<@qfjat6MvYdNP3dzVTI^Sgz8-QOx{3Ta#JH%^-leoiGIg1S`*!_@ z@3u}edv`Leh$fA@#h0OypEB&0?_Uy}d6}?#_d#G&`}sSB{$7ZxI?M!%=DCP+0(u73 zWod~M?+KZh^4AxP&i~vf4J2t)SKec%-cDGO6_qd+P7Z6?<_~Bx+ zuKHks)krUoI67}l%v)8j<_F3p?u<>z2Wof1+7kWhSJ``JI)qd)rz$Kj3TQvR-E%t1 zTp2SjT3bGMyqQ3iDkvUPWj4n+k0&xM!c%&F{}q{5RHJF!${FYSv+wDrXzQxXJx1(N zja}TiyjO)2o#&fFyQvXeOb?zp4y#AJjP#&lJelmXYp_okRhSaRzbSsUFX3^5e{_ER zt)-;XQ?st3FFx^&8;_L4Z-u0s9=1{Xfl13#9Sj>!7?bcB@$CCvh&dA%_43%XQvg9f zIZL`B6JAmx*H*h-qJ7(Ri~}z?vUK8U$Mapyy400~As6{mB@O~sQ*~e|YF1H{sjd}q zH(qKK4%Os4$wLr!a+c(|Rmhu3j)_VBLh`Gzd^Gn;J{XogV{4w%@k(;$F69asAL#cQ z{^mUO8o%JC7sB#d+#^g^M`oEL#Os2PFw&L~YhiV$O4qS@6%b-x9T^!kcjxt+r;V8x za!SlrvL8`hUHIV8-OVgX1i++GhSkqQNTC{E|;L3iAZ{T$%e{tQAk(xqXLlkC%M&L=2w+)D`l@kiSLn zBNLI1(qRdfYv#Viq8*)eC$qWeF*A^sxql&>aR-DN&LRxcoi zT;XwQN_$`~Q@Jhr_#EnYtmxy-o8O-gI$lv`ytV1fGm^kdT6fp*`cvrliOZ6-T?Ly) zw!4VLQq*Qm2K{vjg*mPBwX}b%w_8rpx@UFrTizBpXd`}p1arUrr}d8y(}b9B zO^W1m+jok{Klj`;2wr^C#hGq_c^Y$Be?EuC%FcG)c*?lV=4(h-q@wCgu@C{*t;q94 zIX=g~Dq2MtT-hXZKD9btP|serlT_wn`+SgZN~}wRp~C9B$%hN`@{Mt*ok8U_efMKa zJc`dW$`m>(t0f*}FwRI~Ml*G84*A|rV@ivExSbI0lr?mgP$ngfq19qt((Z>IK0n?^ zk7p}a{d(TBeKRb^zZ_(r_b850a>e6a80vOFGlw2id&k<3!qIVwLa@^}oRMqq!)?s& z*IwEts#u-nCj$-S*{7Xo%mpfny!XpRwx7EYx{37A6h$PFK1_~aLSftjKF2dWS=ISm z-_TxSxVTkj_PEho;##xSazeF)g!@Kc@NAiTBmeFs>hX5p4?TJrXY#9$Ww^gb>{{3U zX8$5Szw7baWA051{ewH(8VzhQWqixE@C#)^EC$+m4kwYaE_fxhEg2EcFh`2iIkw1Qn5#V#!i5tJ8j+TAP zP;o_scv|l@Png38QMY(+lGXm>DGAC6_2{G#-J0NYf%C_Czsx;Pa5BAt=S4Hd(~`4h zqbC?Y(EMcV(L=TUhcF9mGNiZ~R_daJkJwBN(sc!un1^bYuV z(dUj)eycikCMtA4iIwDfXsitIY^6Q=ECoX@CVrD_4FrBv5hs( zZaiZOW+2sp3P-t#=I&X0pUL>CR~nEH<@QD0U|^)xr$DQIz3UP8(QdWa@pr)j%@yOR z<9D4Bx8<^ZP2G#6+V$;9#m0$sH#&nIvnvGLi+zWug?K+lugUa`=;T~)vv68ocDp;z ztFxUMoa~;Gx9j&PPzV#E5W*Fg^DxdSmW=un|483JYIuX?v2fnbhxfD_kuNk}tvpkV zG%JxmWx?)o-M@E@jc-u;y3C&pWj$hQ3D0Ah%li-NJ~uI(M5DS3v(Nb;HS}DXLECn(m^QTOL{hv=^pjYeu)vV#M2z;|*>IcTAEu z$?V9R(;nrTV-j=g!+TQv*z5y1M=Xee?|$x(#berKqPhL%*-6iYPjK-N`9eAqt53bdzm9 z{igr4Ao*8D(-~4W!T}#q-BIfRlki9f7v9~<`zY%qsJ?!~I*Q9z=&NqG#2UN&Sz^Qu ziLZXF;pe|BWH~+hwU;2)66f+mB=NRyuN%d!hBMXjf!Tudxv43~FeDbKi;a#FTINxf zcHg`xZCTQa@rNY~QH(3!1!Gj#-#O$Bk;ZPGZgwxx`(YE);v?6RMvxz89ZV4O)8ogC z@H_8B2ep+ehN`pptKTl(Fx1L?cl@^~(QsI-74znV*C(FK2?UkKS%iysJy01ck;w&J z?a@L8zx^LDCtA>u@r`1()FpeCyHtj9@^{jVQs4OF<>Tj;amX(#zF^y|yL39-!g`Nb zNAUWuYxm0-!^@tq?d0gBJy02{Wt~i~C@h(m8e&|MkgF1TBbmvZ(Gy5GbEdIQw3SnO zM&m+oBwn~u$d*%6JqQlIC3N0OenPBQDKuxBw6D_%Q`>5#XVdbU!Ay!5#&NVmqMDaY~ z)EN{7Kdm!+mF=fHxqkX9nZeCt z583Oe=36qKMBK0Q?^btRN9E)lXxxr5pJ=GV+%b*+bqimt`?@NJ zT(c;;veNBX&gRGMaK>SbbgT@}AOOVtV?$CvQv1mY^uI~Gb+_usl16Ix3;-#$xW%%>(%od_|y zcrRQR^-lO^WRHm2Ga+l!RTZGu=UcjUy+XV7>4>NrobJ&;7!VMI@XXlEA`^?xb$dab zLscfw^1`v+{S9d~Z6IdXJbU|b>)S<=2eU8z6s{_X@^D^=6Jx4<`?JPkm_pNj&#aMW zqF8YJ#9Y`iS2w&8T4b>pT9ahGdIIHPC+~UR^=7Ix^XvR1)3M>lKN!PI^~RnfDx5$5 zGLU^j(Y4*8lxKWR;t2`Qw-{Z9hbMH#OQIIv^5x1E|48g|wO@8A!JOO5iPM9m=47wA zrG|{6>WL^7Pss%r(znEIm#(A9J!v@l;;+^aNKe&N+LT!|OX9pO_ds#ovut8R0KRN$6Gw;8X2-B0&Z zp4l4~=CsXjklD%PTFj?6r+1_`_$DtPMF`tja&Kg{PCc(}v5?tuO*Ut*UyizW_Osddy6C7}7-`>9+$I>xNhS|yYd(zmV{E z$?Z4Ig+jt_Ez~DAZM#PEG%F2y6889(o|>Hw*KE5#qN*u$S6d+#(|RBO=VGXGcE)H^ z6}1S*dmiyXozK!_>b*~S-`Y2ZIGMjKBe_hunfs@hb|#ZZ81={X$GMsG<151h;T#e< z7Z%^K?M!-wkcAs+Xt~|^v(m@fP9S|BnTYvP?Rj4!_)CY7bbrev;mWr%Hs)KMo>^q4 zsp;g()z%i@7=G5io*#&zWy+f)*I!CJzRglqzhR*vwTXhR5mWcOlORCC zGH)jnnVr3nWa>++3k|mZXeGN%;MBmwJk}RS`9>I#izrf zXl?DuQGXILtQ>8glJXioru$Olt9p@NiCWUC`N8c^c|Y!K(A`>L!|XLm<2%1MkLbOo zg>N63v6Mx#`NRDw@_XutdNE5jcc#P@Pm)cMRQklR-?RE5K7K0eaw*m=vn4CIE|-nqU(x`3|apQtrm)`!*_ z<_WO<-IJApg!x+;Z5WexMp4ZIxp|xO>?C;^bSECaKP4f+P)EHA zyH9*yy_}p{U>s9$s(8^X&&xWmmNno+n6}0Jz_H;PH0i*-du%?I5uVFbMo$)r?oit8 zSa@A1`Xk)d`*PpMV_bw{wDQ&b{T}~Y*>z%{MjATgmaFJEQroU${AD$kbCyh67EZv` z;!0=ss_xNCozI?RTu6R9qM|YzE>z#WdRB~xVxxsys&O0z1%lm!A*LdeWPhl)x^ng+13hhe z$-()8e|A#?WEB`LVj9EzEpJ}#@T_Vm5qve*_NjYVdUc!dX) z>&GaSSx3G-8fq))tBd=%m}$h7>7jX@cKqDof-Vr5N_@%)EZAi5DfCN)U|uJ_4jCVDN!30 z*)xP?>4_^Bk}kMQ++6#al%E~9HgkUGS>Q{jEkfF=0@ak?m60WO+Xc;w53UjGYa_Mr zSY}s+-;Bvb`#nqO4A_e17+-d&&S`mcmhz@(N89B5o6NS*b0l}&+UL@)Jj~-7JgXFF z=AaRC?RV;B8AhhJ(U@y0Gk2xKBa^2Y!yfDO`R$Wx#xk?UBMB@eq z7skuJMbY-XlG~@zC8I50_{6KCh`{?&B~rp$Z=!ld1X(^(Suq>CVIJ^56A<=jaS72C zzjxB$X;~V|_4iXFPG8I^SGUG8YxP2MrtUeXi=P?DW*?V6{`B}>r}F()CIVzV-{+VS zU*+QojP99F6a{HmH2JRF#-tDLWq$r8^Cabcb&9zu$O5sj5&3ZNUDjQ8!<~^blb(B` zwffo(V|g7+j~Yu*--}i-r@iQ2yIu5|$;^<9U{@XPT{>28&V7lPuZM`=+PPd{tw`zt z&rQ)5X8}^rN4znvdM~nDm)>YCQLemIxNNRYWsy8y*m)we*6+!q-MZK*v2zWyY9Y)3VP?bnu((1>1Ms z)(`KBO|a0+9lNG>Dx?41c#wPFu_gerD3rLj}X6>~0%;pOYlWa&Ji2R8>Fw|#h%fOzQ7B|kmrLj(!?ptd1dVd|jn?@I+!xl7FA8h)go zwbi)7$i0kSvvEqDEVx@_JlQR|(kk3zoAO=li~G$E(^JZoL)^X^#rMiG>0evPIKQ19 zyVY^d{e!)o2HlyU$FFUhcXG@y2_0|GrTD%goDyEIlq@VuMozQdK7WcUlP0X=qUnZS z(!IE3V@*aghE2MY4gt;gHF|IQWo){^q;WAtg%9V)IIo;Ga|*R7FetqoQ0F7}iAH(k zQz2pYW=&c*V+gy9{7o9#iQJ41Ve62>5JxW3k~y^VorjjmBgCvHu70T6R>hpth*Y`C z-80<5GP0?o_MG0cF}$#pH)^ymExV9|!Bg1q{O2${Mtd*j4t9eR%xhJ@Lj+e}$Unh< z$xoAbdEu6GMOdcrj#lI3OW%NqsgD*6cg8ekizjnS3l_=!CGThyT0N85wbioXo(<~> z>hBEO;nzx6IG-Dyp`)+3PCv|mA@5<0<1=~4bY4Oxfmz-m%V*W+kyb^1=*J)0y(E6u zWY01_u(^tP~u`GXxxE6J}aPiCTr_c>6sAwQ{qxLpkO8`c1HrM!5 zpg`%AM-CKxOJArrEqqAb@b@nl*UEVg-YeU)Sq|GS>)MYVmjpz-4(U&NO8GIqS4#$_ z?LVHImiwg5 z=V!)-nKUCE%=$IH(c(u8AB*MgYba9C$gv<<4_7?1BkW!;`-9^0jju@tZc$O|PW{fC zpLx&g%ziSVc!v}Tt(77rc&PMC2(u0w1kL^d=u)3RQHehFs_O*VCaJ|mqE~M6czi9B zx0BNp>n$`XWMh4j68ns9g~m5KH@;F=*4}uC?|Zhkda;X_fd{j9irUbm2xbk=`N+T& zPbtdDQMu<~Y?$)BgFOM?&B5~RlWw~kJbagXG8^aa-JQ}oug|Z)W<=3+j}~Ls7q}}E z&qpudmhjbq{dSJ@XQDX0@I~Gzo{z_9$(;nRes$_g52ttaCg>`wG4H65p?w$WWHXb! zyHlcsDz#B7c|RjPZ}mH*AAWq7gC^Sr5!zts7};eomv$|EH#*b=H5>3p}AC} zk-Q(4^FyuOIP^5RpQw~g@e2}+`6`0BHM73mIl}Gy=TA2i=b}IU`h8>ARpq$I`t*`i zXPetZz2(crij(&gj1YJIBb%=i9%MgFP*4Fyw(bBv(c09tkRIw5|-YNryY<;0@aBmqxz|x3MC* zO#d5R+P*EDbar=VRwMGF;g|1UB~`0VJZxzr`opJEPopV7rMgB6~9VYyYPzVb;TvwHsi?~c$wK7_d&+1;nO0t51h_+>D{Gf4tZ89g!0~t zW$eywnFum$V#m{=@m6_m-YazR1^=y0vl!8AVEJ8uzmHeQuB zEJW(J<}*Upt18>ai(Ed~X^Ck4>gI@y+bn-Gb=qr&%$##=5akwiX)#}T_2_-;03%Hjo90%n&D3C6Apy(6 zJ_ ziZEsk{;N++FT84G^q=Y)Y3jn?D{2>*Zz!5?KUqw-s+6rSx@}y2dUCU$Wwjy((_ugG zK>e)aW&Ba@TeK03;}_nuHKxamG2GC-Zy&O=^PK8(ncm4^ZlSW@+WwX7d=FwX&i_JQ z`gXbM>B!!tOql>vyGQ$rPMDI5txAu+ms5Y(F3}twFb~$y7=4MEW{Q=SDMYMX_x#A> zug=)qrCyV!&Zu?qBX7+`ltAh_`GEL=7j}`Yu zt?@-r*3jrixn3C@{qllpTk}is@;TdS4d~g~VfMM>4^kybos1)y71&ot3f@<|S*{%| zSTGmlBs)n|B9h7$WOepzQqKs7_*Wr*quOt$%rKm+kHi)G=?bhrS<;`ex43+Ne**Ke zYLKuozk=_+U$u>6cKOOV2kNWcvkB`PKkjt>E?U~#`gMJ<0@@dd3f897b{wAE*rBq? zy8CopHRQsjbng{KO)i#JkD*xj#`&1Fh7(D@^~~Q!^*Vevvf3<&xn1z`$MV2=e|g>9qBXUY&uHNJ#zNk68RYY`)!y^ zUxRZOZdFc58nFd1f6=R%3W?>aex{j-FyVw_9)gXseWxE=%uioa6-) z!mfg)ExJ@m-&Sf-iDQdHibrxS$Bnb1Q4RN)C`3D4l)KD+Flh;BW1Q~( zR2sN-)d_wPGtLlPc-L%aDd}tM854_)b-w)8T)6#P*k-PVjJz`PHQz$X@7$gl+bef4 zEovi)dO?Jh-zMh8@rg9awnIM|#(s@VEXq#5J;pw@NJy1<-?uz@OfSqMVT28(JXIVy zc00@1t3KLK=!bCF!zSX}$4i3Ul6`$HqJ2rqCBTUviwwF`*TrChWX;t?u8i4SqUxpWuF~JtFnd6-&=9 zjJA5fUD{dMqWc5hSt=hEW(&6&___6kwX)LWVsB2rdb}eGmDWDWTkrHqB)RerLD%&KsE+>~oUcg|| z^LKi~O57vnrRS;1-9gmC$bylZ+utw`J*}Md)2);pg$mJl8K~T;KyiJ28Nn41 zllSc|6!fK2CYL%__gywui#P8?_wWX=%(r~r{#`V+sfvgfQ33}evG~6rUwmzwpLtI8 ztHf0{DQ9D?gm*8ZJ~>^7uHd`mnG9u_Jrzc%y^OnS&3-BLTYkU}i~3sEn&|3n%8msjsAPjr5X<)Y@rx>-D5uhPI`1gFFu1>8 z`(oPHWI3jjsI%kC=JTsJ1WSw@RWB_NmP(QdW*I1PFigLqIJd3P!v2~jQqcUQV~|no z#K@=>{xe~^oopo(gXYP|hUbi@fBqUcJClsD*?QsKr8J`1V|l~&o0Xa6sP!(*@YcyS zW-(>_kL8uQokeNU=U9u5SKX~2vnfd&aOl;zD`Jz2!rmKL*J$`=raDoPuuSIsSIc=SJPDk1yYh zPFY?vSYEHtX{HJ1yM68Msg)VFyFIAS0mtdCSx#3}w^T_cSe7Oa(JOry9Hg2JI9^g* zbN1P1?-aVtUB+Nt;~=Nzd3{&<9in#WDEeQR-XA@L7vy;(vQG@QR#0Z%|l66req?xn!~yjCKmc77o3c7L1ADw-*yHfiVMgLtK@r4dVKG3!hUVJ9VWFH-06 z$4t0}2;S&S9Cmkm|DtYQQ@%VsY>Vw&Hy6cEgk|`QS7qbGkw&t^fsHeSDKI>Sc}a84pYpMP%c zB;JzC4mdjFP4uEV+RzT=7X7~>hiHr@*aPv2Ek zl(om=AD2FhpUr>>boK3)xUQ&L?b4vTnagB~c}h~V`%_@du3p}}hx9~M(wTDswzOH) zQ?bZn#cH-Hrj~u_ZPpgC@OI(-odAsVqe zQ&yNkWu6=_c3r791*Wnqx4%bowo>^~jU>y~xkk1A{Ce#NwbeYWo|*^pc+MX6W}M3J zF-T%=!}`pY!V6xb7v!~EZvybC5}(x@gc?aL%)hJF%yUHAC5Bx1njDok*k0(Eomh3! zUxC+)-vR~SUgWmaAEW)KyM8L@wA0K;hg^9+rnF_OM>W;?;)NErKKhG8!^5GCI4`8k8qq7Mg-9ti<@sv)+V~}u&N8c9o6?YcK5n~l zvg;3ln1a4()H;tRs&-xNT(fP+gL6^FLnrUCa#U{IdHpTbP(QP2BP!(rgdy;DJ2Rhy z=ED%L91BP)=>JmVmA-euFhl8deS3eH*aQ_!iFxMUEkrlUg-0YQaWm~`^)ytt~ZsoJS4NP z*>X*n7vCOYWINv+`IMX~C(}J|R9x&2#kZKxn9EyntR8#e1*y5b38KCV&RWmIs#f1z z{!H>f1L4Gd{;U8!Chh0fDAX$(i@V`U8S_b(UXN2|ryA|PEOzmmP|hwuUsuR*-)cmd zX)gtgmk-czs4sjSOo%LRhk>%;l5Z>7;A&m{UK%afQ=c8fWey`17QTOP}wyDy|BB zGSgfpZNHe)6>7n{U~+#=Ivg$&hO?H9W}NXZ+Szg#Q}CQlUhK&7 zr5a4zJ+kfEp%eS@-PywXG7DBqH1Bny>SZYZiQeYWD3H zEqxS+4#vIR&!0V?*hxl{^Ww8R$b{vb&Mk#Mn2NEN(=`{zvr*DEXXZ+bcmf%GJUfV5 zpIT3NOLOGMId|_rFFE zw!3IUM~;#`*Z5??7k0`Ik>~H(#!;$7Qkx^tSWH z`37LDx82*iPw!iQ$gzn%-T&a^Dbs}NGUqBG=9Yv>77by-4>$e@=4%PRJTdWNUB=qU z?}v%0Lcfyk{PDIhl!>{q@%xip0yX`fosF4!>Yo;7UOs$qcgNuo@6gb-@cfJyg7VTm z#bl+jRhX|m$Y<&=C&NW-irs!y1&UqIF-hDL|`krliwLr4HDZ6X)P5(yf>D?iP zq91mblo7HEZ`3o|3)Ym&OGuXYl%+0Bj$(1)ffwPBI}jy+Fn!sBgoq5(EYx+3VSgmZ zP$~8YN`xQ%fh-7oJbYYW+I@f)Q`m=uNYOX|EH=BB^vT+$MEB59dGtHpSk6tjY)fz~+AJ9d={=!G9bC0Bk`&xX(5T*qi^3^^L+)TDX8x|`{KrIt{|Y=rDN6vHFV;yU04m`A zAKv3Y5S&OHMCET2ktj4atu@2{zi=cDZo+wVKsWO6ILxCXt&li;1VAw#DE*gkDcOI7 z8%dIi89M~H_*}$dk+JrXiXFBW4#mKUJdDFpUZA5?1OQNtW&c|;knoRW4HOW4DCz(# z0Zz+0Z0*BNAc2E|10QhZhXC+@Nz9Dlp@S=>5!5tDfB`u$Pv0RB7z@zBucZ;J@J$7T z7(!MGj#NN!z!M4x5zsfKU>J?Rl3MhN7im(R%c-0Wr zWPh>1k!lEId=!v1pa$9j*W56ZIzsM%=%|j+KWL?74FoI4k!hM90iaz`M?ju~Rz`vB zPy;FmR&appsxpYetU7{?`Uo0@GX_8)*-s;s5hzL6<}|{J{O?k@@ifAi2lY3J6Lkcc z!i55dc!G^J5OQ#i2Es`9Kh1Ll*TQih;gJq)Jraep^$6{x?i&O~lZYfts)>;MZx1`d z)Zyd-qfIpt%G5_xoJ#=US`4TFLA#`ZV1v(T0?&_YAw+mk|KU5FdU3LFpfy<83}S`< zC?kk4N60r-P84oh{ohFcpPa**xTgE7(;etJ0u!2eT=a4QG7f=DSaC;V>1g6Ox<43O zxVfAZbJ(SiB6t|HBYYq(W=Ej8!=ywGq@Oa1rI?cXkQ(aB>M0aqw{# z3G(s4R+B(U!L`~5He%#~0TSZaI}Vn^1qHveN1&(3VKu-kjfR)B5yufI6ilpxPz7pa zacb;z5ES?lGBU8Q4uTy4lHeulAWkwO4_68N&b}c&UcL^_Km@?-_v#=x!MWCOf-Zs! zfkwf*I*1c+iY|hM>hGtWB*>wG4V9W}fQw7OMPICsxM9u7@8;s;65!w^5)|m*<^qJ` zz^7RH#ftzwEaDIt=n;6)!N&;{BEb_7rH9~RIef74d-#ANFE59S9=<-HF36YR4T{-t zqrwJs3lDD)8cr+z|0#z3^$=|TF;3#ZI00WjV90^az)OLk8L?I#uH*Q9gIxlGJzPSt zUQ5Ch`Up-3+ziXf?+5G_m5=}>IE?5K1#|)l9JKRqL;fF14kaK3{v9$TtZIN@c91|} z<=_?=hn%4ENE|L=4k?m=f`d*TX_vxMaEsAH9%(?qfs2oLK%x){8EKf>0Kv!xv>fuu z{KpQ|fgN@dAYF)r>|vKZ@EJIGxTM6@M2cfM{?>^EQ9MS;6U0(jKFo|;ad5yDsUZnxN1J60N0U+>*hlWa2e(YX zKs8cQ8n!n?FtP$IhkUaCF#}FFLD0J#xQ}fY+>CO_i~{~6acJ5j3f6xdF!qRo_5WWj zg~Iy(ua-h#os>C<2*W?^0;vD)A5sVHVvWKE0Jp+D)Pe0DI6(Lz0oyxpkG4YswsYW~ zqK5=*-#8kO2hL%;2ACN@*I)qalB00ox&|Cm4e|=;8z3l%uzdn84pSN<81;{4rT|}W z5vQQQi@x3-VTS_~q|C(5yqx^lvH%Bf5$s$P2L*Hy%EvXNe# zi&97%Z7lYnmR2ET?Y+->*%FIsnt(_wh>ek$!jUFHh)GROwTiL}g5VeM`6#{ePQ22K zeuVk~yz}@&tH@$o?(48R#-@74 zXYY5{slBrK@B0KO0I_|CoAFNf11sY4>7DNK#id{aJwGS<&Z9|m|DNY*gGC%(x<$6 z{FAQMnzC8mUUkakBZ|-LAL#PE|O6y4$_j5w88^Zg+fX0hPyZ{qFgPPoH1u zZM_4zkbm6m;@cJ6@38g~w1eB~I>A-j|1QoIkWzn-+jK?@gQ2jmzp%A>umAPJrGDum zZhacn&bCb!(Zx`qFICW%Az~=iuiZoC51WojYL0%59NIa?E$)a5gg=g3dmfi^9{j$j zaYS3pw!F=5?ewDU+w7_9d#Rs7AKS?yRQB}B=H+|cm&wlk>Zjes%S%uM&sH`|bVC)m zenF$u?zL-2SAYE5j~*Ofy>SXed-}*A{3D9u?XxlO zeSG$qY@boK0mBbZf61?LpeWY8uJGviXP@8eUcc~d!aNq-UkUlm5Z?UO(bd~eKYaJ} z?7{I{?|x?pLkJ@Xpt5W(-|rq-A*Daw?*^-#Vn4@Ej*sd;LYOQHZ)tsRo8@SODWRj) z>N1WNt;~j_W!pRZnGXY#TiX&3G}30$7`+8y+0Tk^v<-8#T5iM9lDYI1?JEDK&^Ic& zBJxk_yT~AfPG$4254tyJ5eBi6WADiznWnehj=`$FtZDEiEAirJlX;Xi4M9x1X&!{e z##ou4mXRVMUT8h4;RX)WCowqFwoS=wb3@}zJj>OsXfrZHXny-iOIn?m6{E>^v`lDA zn~Tm%wk~9l zf^VC9D=ypimq(P9@%cHNzRX>MFeVG`9bYyF*wP9*;%Vcg+eF%G-`~8mRVb#{))5W% zgP?+j3z~tcmn3Z|9wiIG(#lbsBL$82v)N82=3oijW{{W%^L~z2Gjc6$N-{{Cvi8Tx zp}#8sz4$R{a_kbR1236GO)qaNQqn?r_a zJLpWFCWGV+tqg-$%))v1+ZpC*kQIli7A9*t44g1&JQXo2gs2v@H*HDWm|u6aihrv7 z_u}sZLiCJ%Em77q4pWdl4wwZmEiAfa44Sss{vdgf_@2>Bl+Rm1El&yC9AGsI;-xg>!AA>@gr(7s9Yr(yad=eh$3s9VBm%xY@Jf zY3;z}#Bi*mk@fSmR2nN<uGQ()F%5r@~jV z#l*Gk9{-IP2CpDvnRda=-bg_cA3@bgfos&Lw5YkAAV$wA>l|n-0T0rb#@IZIQkxE` zzj%OBTkt|HN%1An1PuYwf%Db=9gYclBuYrpNe+@5I2KVjI4a zn{`r`y7}Uh?qw>X0@2!TQ9F)MOEd5@Q7l#Mb=C%k{lEldeq)fSs4*d$ zY*w7}XvxoZCBP&RKQ2!OAruilpr-UkWFvf2{j8(~XlR%}Kp}-7=q}<=L<+f9+iVvy zMcopR=4$Jf0|J8Al}trff=lr$N!-o|ji^*;@NXxMZx?nPb z26E&qwt9pD$M}jPhMYlYn{?KFb522WJN#b>=QHnx_=82RLb7eZRY`E=66`Xs*;vp+ z%}1GN_Gbg4T>v=7Npe7zB=LMi%K~gmPtw5kR|1j6fwq{Yg64VmTyRO!m>^gNMxm51 zN-$I~yIu}v0dZ)am5#JM7toW+@EzjgmG>yR%D@N<3@Hws<#Ax2S5c5x>a6}az z0$C(F`>ZI9!CQXd*h})M03FsVVScpDf(S|+B{GAy^+*TPMB^lJBDl>@kXgrFuHJDnBxKqNO3|ATXievXf?Cxq`K5 zpm7Jho?tZs+-^7-8l(DDRI_Pp`_yMW@MwdR4E+@^1=^;x`R8xCZ_L~mfK}G>s$GM9 zS{i)zctIm{XmbBb*Y$5f+O&%Q6i2B$L#bQlsO4Jgip{H zpjtgWJ{(P{^4~c$;23Vxtz_a#&&?V>E;>9P!GJ#pfJjm0iEqgc68zd?BPKk(S1t=o zHedX{yZDM&e$*~*KL0~^arR&UiD-N}@x8b#VXRNhG-^8W(6rYU;&uU_pzSTFd~vV3 zNQC#wE_`Zpl9ga&{i)=Z+V3YHJ*efK$d5|fMCRFxA1}P{9qbxcPwEFa5fXh)`J4{% zHKGeSsxD-Lr}bn^r8r_Lg)&OK%?Xoud%|8d9a?|nA4TD~JN33=V&K^k$pHpAvlh!Z zZG|uTI2szZe7!oXW8m8c8G{qM<=cZB7_+xNBuaw6w}J+A_Ji;_stn9W^)l&^&pDd5 zGcyF3IuSyXkPd@hKSo|30%+$qAHFAY4>SW3<|xQm!?* zPH9%h;?gW`j2J>#24)Xn}x_4`jAKIJzC ztiSP=?X~dEaGi`}$~VK!8{>GByhJGP+`4gn2sf_ZxN+<4 @@ -704,6 +704,16 @@ usage (“CPM Manual.pdf”). If you are new to the CP/M world, I would recommend using this CP/M variant to start with simply because it is the most stable and you are less likely to encounter problems. +### Errata + + - The original versions of DDT, DDTZ, and ZSID used the RST 38 vector + which conflicts with interrupt mode 1 use of this vector. The DDT, + DDTZ, and ZSID applications in RomWBW have been modified to use RTS + 30 to avoid this issue. + + - Z-System applications will not run under CP/M 2.2. For example, the + `LDDS` date stamper with not run. + ## ZSDOS 1.1 ZSDOS is the most popular non-DRI CP/M “clone” which is generally @@ -718,6 +728,13 @@ Additionally, the official documentation for Z-System is included in the RomWBW distribution Doc directory (“ZSDOS Manual.pdf” and “ZCPR Manual.pdf”). +### Errata + + - Although most CP/M 2.2 applications will run under Z-System, some + may not work as expected. The best example is PIP which is not aware + of the ZSDOS paths and will fail in some scenarios (use `COPY` + instead). + ## NZCOM Automatic Z-System NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM @@ -728,11 +745,17 @@ On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1. After you configure NZCOM, you can add a `PROFILE.SUB` file to automatically launch NZCOM at boot. -To use, NZCOM, you must run through a simple configuration process. This -is well documented in the NZCOM manual in the “NZCOM Users Manual.pdf” -file in the RomWBW Doc directory. Additionally, there are instructions -for automatically launching NZCOM when the disk is booted under the host -OS via an auto command submission process. +NZCOM is not pre-configured. You must run through a simple configuration +process before loading it. Run MKZCM to do this. + +NZCOM has substantially more functionality than CP/M or basic Z-System. +It is important to read the the “NZCOM Users Manual.pdf” file in the +RomWBW Doc directory. + +### Errata + + - SuperZap (`ZAP.COM`) is not working under NZCOM. + - There is no `DIR` command, you must use `SDZ` instead. ## Digital Research CP/M 3 @@ -744,7 +767,13 @@ support tools and help system. Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the system tracks of the disk. You do not place CPM3.SYS on the system -tracks. +tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`. + +### Errata + + - CLRDIR is not working right under CP/M 3. It only partially clears + the disk sectors of the directory area. The extent of this issue has + not been evaluated, but it is not a RomWBW issue. ## Simeon Cran’s ZPM3 @@ -754,12 +783,23 @@ ZCPR 3. Essentially, it has the features of and compatibility with both. Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. +### Errata + + - CLRDIR is not working right under ZPM3. It only partially clears the + disk sectors of the directory area. The extent of this issue has not + been evaluated, but it is not a RomWBW issue. + - ZPMLDR is included with ZPM3, but it is not working correctly. + - The ZPM operatins system is contained in the file called CPM3.SYS + which is confusing, but it is the author’s intended way of using + ZPM3. + - SuperZap (`ZAP.COM`) is not working under ZPM3. + ## FreeRTOS -Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. -FreeRTOS is not provided in the RomWBW distribution. FreeRTOS is -available under the [MIT licence](https://www.freertos.org/a00114.html) -and further general information is available at +Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is not +provided in the RomWBW distribution. FreeRTOS is available under the +[MIT licence](https://www.freertos.org/a00114.html) and further general +information is available at [FreeRTOS](https://www.freertos.org/RTOS.html). You can also contact Phillip for detailed information on the Z180 diff --git a/ReadMe.txt b/ReadMe.txt index 9dd43532..63c35051 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -3,7 +3,7 @@ RomWBW Z80/Z180 System Software Version 2.9.2 Prerelease -Monday 23 March 2020 +Tuesday 24 March 2020 Wayne Warthen wwarthen@gmail.com @@ -735,6 +735,16 @@ usage (“CPM Manual.pdf”). If you are new to the CP/M world, I would recommend using this CP/M variant to start with simply because it is the most stable and you are less likely to encounter problems. +Errata + +- The original versions of DDT, DDTZ, and ZSID used the RST 38 vector + which conflicts with interrupt mode 1 use of this vector. The DDT, + DDTZ, and ZSID applications in RomWBW have been modified to use RTS + 30 to avoid this issue. + +- Z-System applications will not run under CP/M 2.2. For example, the + LDDS date stamper with not run. + ZSDOS 1.1 ZSDOS is the most popular non-DRI CP/M “clone” which is generally @@ -747,6 +757,13 @@ Z-System Notes. Additionally, the official documentation for Z-System is included in the RomWBW distribution Doc directory (“ZSDOS Manual.pdf” and “ZCPR Manual.pdf”). +Errata + +- Although most CP/M 2.2 applications will run under Z-System, some + may not work as expected. The best example is PIP which is not aware + of the ZSDOS paths and will fail in some scenarios (use COPY + instead). + NZCOM Automatic Z-System NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM @@ -757,11 +774,17 @@ On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1. After you configure NZCOM, you can add a PROFILE.SUB file to automatically launch NZCOM at boot. -To use, NZCOM, you must run through a simple configuration process. This -is well documented in the NZCOM manual in the “NZCOM Users Manual.pdf” -file in the RomWBW Doc directory. Additionally, there are instructions -for automatically launching NZCOM when the disk is booted under the host -OS via an auto command submission process. +NZCOM is not pre-configured. You must run through a simple configuration +process before loading it. Run MKZCM to do this. + +NZCOM has substantially more functionality than CP/M or basic Z-System. +It is important to read the the “NZCOM Users Manual.pdf” file in the +RomWBW Doc directory. + +Errata + +- SuperZap (ZAP.COM) is not working under NZCOM. +- There is no DIR command, you must use SDZ instead. Digital Research CP/M 3 @@ -773,7 +796,13 @@ support tools and help system. Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the system tracks of the disk. You do not place CPM3.SYS on the system -tracks. +tracks. CPMLDR.SYS chain loads CPM3.SYS. + +Errata + +- CLRDIR is not working right under CP/M 3. It only partially clears + the disk sectors of the directory area. The extent of this issue has + not been evaluated, but it is not a RomWBW issue. Simeon Cran’s ZPM3 @@ -783,12 +812,22 @@ ZCPR 3. Essentially, it has the features of and compatibility with both. Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. +Errata + +- CLRDIR is not working right under ZPM3. It only partially clears the + disk sectors of the directory area. The extent of this issue has not + been evaluated, but it is not a RomWBW issue. +- ZPMLDR is included with ZPM3, but it is not working correctly. +- The ZPM operatins system is contained in the file called CPM3.SYS + which is confusing, but it is the author’s intended way of using + ZPM3. +- SuperZap (ZAP.COM) is not working under ZPM3. + FreeRTOS -Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW. -FreeRTOS is not provided in the RomWBW distribution. FreeRTOS is -available under the MIT licence and further general information is -available at FreeRTOS. +Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is not +provided in the RomWBW distribution. FreeRTOS is available under the MIT +licence and further general information is available at FreeRTOS. You can also contact Phillip for detailed information on the Z180 implementation of FreeRTOS for RomWBW. diff --git a/Source/CPM22/loader.asm b/Source/CPM22/loader.asm index 72febbef..d60c0b16 100644 --- a/Source/CPM22/loader.asm +++ b/Source/CPM22/loader.asm @@ -31,17 +31,16 @@ SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_END .EQU $FE00 ; ENDING ADDRESS OF SYSTEM IMAGE ; -BYT .EQU 1 ; used to describe METADATA_SIZE below -WRD .EQU 2 +SEC_SIZE .EQU 512 ; DISK SECTOR SIZE +BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE ; -SECTOR_SIZE .EQU 512 -BLOCK_SIZE .EQU 128 -PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS -METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) +PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS ; -PARTTBL_LOC .EQU $1BE -PARTTBL_SIZ .EQU $40 -BOOTSIG_LOC .EQU $1FE +META_SIZE .EQU 32 ; SEE BELOW +META_LOC .EQU (PREFIX_SIZE - META_SIZE) +; +PT_LOC .EQU $1BE +PT_SIZ .EQU $40 ; ;------------------------------------------------------------------------------- ; SECTOR 1 @@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE ;---------------------------------------------------------------------------- ; ; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING -; ADDRESS OF $8000. +; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER +; USES THE METADATA TO LOAD THE OS DIRECTLY. ; .ORG $8000 JR BOOT @@ -145,10 +145,10 @@ HEXASCII: ; CONVERT LOW NIBBLE OF A TO ASCII HEX ; HEXCONV: - AND 0FH ;LOW NIBBLE ONLY - ADD A,90H + AND $0F ;LOW NIBBLE ONLY + ADD A,$90 DAA - ADC A,40H + ADC A,$40 DAA RET ; @@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0 STR_DONE .DB "\r\n",0 STR_ERR .DB " Read Error!",0 ; - .ORG $ - $8000 ; RESTORE ORG - .FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE + .ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS +; + .FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE ; ; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A ; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM. ; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80. ; -PARTTBL .FILL PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES +PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES ; -; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT -; SIGNATURE. +; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE. ; BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; @@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 512,0 ; JUST FILL SECTOR WITH ZEROES + .FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES ; ;------------------------------------------------------------------------------- ; SECTOR 3 @@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED + .FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED ; ; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY ; SOME HARDWARE BIOSES. ; PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE ; -; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES -; -PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM) -PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED) -PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED) -PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED) -PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED) -; -; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR -; - .FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H + .FILL (META_LOC - $),0 ; -; SECOND CHUNK OF METADATA +; METADATA ; -PR_WP .DB 0 ; WRITE PROTECT BOOLEADN -PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) -PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION -PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!) - .DW 0 ; DEPRECATED -PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM -PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM -PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS) +PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN +PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) +PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION +PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!) + .DW 0 ; (2) DEPRECATED +PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM +PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM +PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS) ; +#IF (META_SIZE != ($ - META_LOC)) + .ECHO "META_SIZE VALUE IS WRONG!!!\r\n" + !!! +#ENDIF ; +#IF ($ != PREFIX_SIZE) + .ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n" + !!! +#ENDIF ; - .END + .END diff --git a/Source/CPM3/loader.asm b/Source/CPM3/loader.asm index 979ef532..0a417849 100644 --- a/Source/CPM3/loader.asm +++ b/Source/CPM3/loader.asm @@ -31,17 +31,16 @@ SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE ; -BYT .EQU 1 ; used to describe METADATA_SIZE below -WRD .EQU 2 +SEC_SIZE .EQU 512 ; DISK SECTOR SIZE +BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE ; -SECTOR_SIZE .EQU 512 -BLOCK_SIZE .EQU 128 -PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS -METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) +PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS ; -PARTTBL_LOC .EQU $1BE -PARTTBL_SIZ .EQU $40 -BOOTSIG_LOC .EQU $1FE +META_SIZE .EQU 32 ; SEE BELOW +META_LOC .EQU (PREFIX_SIZE - META_SIZE) +; +PT_LOC .EQU $1BE +PT_SIZ .EQU $40 ; ;------------------------------------------------------------------------------- ; SECTOR 1 @@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE ;---------------------------------------------------------------------------- ; ; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING -; ADDRESS OF $8000. +; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER +; USES THE METADATA TO LOAD THE OS DIRECTLY. ; .ORG $8000 JR BOOT @@ -145,10 +145,10 @@ HEXASCII: ; CONVERT LOW NIBBLE OF A TO ASCII HEX ; HEXCONV: - AND 0FH ;LOW NIBBLE ONLY - ADD A,90H + AND $0F ;LOW NIBBLE ONLY + ADD A,$90 DAA - ADC A,40H + ADC A,$40 DAA RET ; @@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0 STR_DONE .DB "\r\n",0 STR_ERR .DB " Read Error!",0 ; - .ORG $ - $8000 ; RESTORE ORG - .FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE + .ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS +; + .FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE ; ; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A ; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM. ; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80. ; -PARTTBL .FILL PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES +PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES ; -; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT -; SIGNATURE. +; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE. ; BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; @@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 512,0 ; JUST FILL SECTOR WITH ZEROES + .FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES ; ;------------------------------------------------------------------------------- ; SECTOR 3 @@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED + .FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED ; ; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY ; SOME HARDWARE BIOSES. ; PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE ; -; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES -; -PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM) -PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED) -PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED) -PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED) -PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED) -; -; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR -; - .FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H + .FILL (META_LOC - $),0 ; -; SECOND CHUNK OF METADATA +; METADATA ; -PR_WP .DB 0 ; WRITE PROTECT BOOLEADN -PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) -PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION -PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!) - .DW 0 ; DEPRECATED -PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM -PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM -PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS) +PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN +PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) +PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION +PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!) + .DW 0 ; (2) DEPRECATED +PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM +PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM +PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS) ; +#IF (META_SIZE != ($ - META_LOC)) + .ECHO "META_SIZE VALUE IS WRONG!!!\r\n" + !!! +#ENDIF ; +#IF ($ != PREFIX_SIZE) + .ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n" + !!! +#ENDIF ; - .END + .END diff --git a/Source/Doc/GettingStarted.md b/Source/Doc/GettingStarted.md index 128d29f9..896b5f46 100644 --- a/Source/Doc/GettingStarted.md +++ b/Source/Doc/GettingStarted.md @@ -753,6 +753,16 @@ are new to the CP/M world, I would recommend using this CP/M variant to start with simply because it is the most stable and you are less likely to encounter problems. +### Errata + +- The original versions of DDT, DDTZ, and ZSID used the RST 38 +vector which conflicts with interrupt mode 1 use of this vector. +The DDT, DDTZ, and ZSID applications in RomWBW have been modified +to use RTS 30 to avoid this issue. + +- Z-System applications will not run under CP/M 2.2. For example, +the `LDDS` date stamper with not run. + ## ZSDOS 1.1 ZSDOS is the most popular non-DRI CP/M "clone" which is generally @@ -767,6 +777,12 @@ Additionally, the official documentation for Z-System is included in the RomWBW distribution Doc directory ("ZSDOS Manual.pdf" and "ZCPR Manual.pdf"). +### Errata + +- Although most CP/M 2.2 applications will run under Z-System, some +may not work as expected. The best example is PIP which is not aware +of the ZSDOS paths and will fail in some scenarios (use `COPY` instead). + ## NZCOM Automatic Z-System NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM @@ -777,11 +793,17 @@ a host OS. On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1. After you configure NZCOM, you can add a `PROFILE.SUB` file to automatically launch NZCOM at boot. -To use, NZCOM, you must run through a simple configuration process. -This is well documented in the NZCOM manual in the "NZCOM Users -Manual.pdf" file in the RomWBW Doc directory. Additionally, there are -instructions for automatically launching NZCOM when the disk is -booted under the host OS via an auto command submission process. +NZCOM is not pre-configured. You must run through a simple +configuration process before loading it. Run MKZCM to do this. + +NZCOM has substantially more functionality than CP/M or basic +Z-System. It is important to read the the "NZCOM Users +Manual.pdf" file in the RomWBW Doc directory. + +### Errata + +- SuperZap (`ZAP.COM`) is not working under NZCOM. +- There is no `DIR` command, you must use `SDZ` instead. ## Digital Research CP/M 3 @@ -793,7 +815,13 @@ support tools and help system. Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on the system tracks of the disk. You do not place CPM3.SYS on the -system tracks. +system tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`. + +### Errata + +- CLRDIR is not working right under CP/M 3. It only partially clears +the disk sectors of the directory area. The extent of this issue +has not been evaluated, but it is not a RomWBW issue. ## Simeon Cran's ZPM3 @@ -804,11 +832,21 @@ both. Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system tracks of the disk. +### Errata + +- CLRDIR is not working right under ZPM3. It only partially clears +the disk sectors of the directory area. The extent of this issue +has not been evaluated, but it is not a RomWBW issue. +- ZPMLDR is included with ZPM3, but it is not working correctly. +- The ZPM operatins system is contained in the file called CPM3.SYS +which is confusing, but it is the author's intended way of using ZPM3. +- SuperZap (`ZAP.COM`) is not working under ZPM3. + ## FreeRTOS -Note that Phillip Stevens has also ported FreeRTOS to run under -RomWBW. FreeRTOS is not provided in the RomWBW distribution. FreeRTOS -is available under the +Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is +not provided in the RomWBW distribution. FreeRTOS is available under +the [MIT licence](https://www.freertos.org/a00114.html) and further general information is available at [FreeRTOS](https://www.freertos.org/RTOS.html). diff --git a/Source/ZPM3/loader.asm b/Source/ZPM3/loader.asm index 979ef532..0a417849 100644 --- a/Source/ZPM3/loader.asm +++ b/Source/ZPM3/loader.asm @@ -31,17 +31,16 @@ SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE ; -BYT .EQU 1 ; used to describe METADATA_SIZE below -WRD .EQU 2 +SEC_SIZE .EQU 512 ; DISK SECTOR SIZE +BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE ; -SECTOR_SIZE .EQU 512 -BLOCK_SIZE .EQU 128 -PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS -METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) +PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS ; -PARTTBL_LOC .EQU $1BE -PARTTBL_SIZ .EQU $40 -BOOTSIG_LOC .EQU $1FE +META_SIZE .EQU 32 ; SEE BELOW +META_LOC .EQU (PREFIX_SIZE - META_SIZE) +; +PT_LOC .EQU $1BE +PT_SIZ .EQU $40 ; ;------------------------------------------------------------------------------- ; SECTOR 1 @@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE ;---------------------------------------------------------------------------- ; ; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING -; ADDRESS OF $8000. +; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER +; USES THE METADATA TO LOAD THE OS DIRECTLY. ; .ORG $8000 JR BOOT @@ -145,10 +145,10 @@ HEXASCII: ; CONVERT LOW NIBBLE OF A TO ASCII HEX ; HEXCONV: - AND 0FH ;LOW NIBBLE ONLY - ADD A,90H + AND $0F ;LOW NIBBLE ONLY + ADD A,$90 DAA - ADC A,40H + ADC A,$40 DAA RET ; @@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0 STR_DONE .DB "\r\n",0 STR_ERR .DB " Read Error!",0 ; - .ORG $ - $8000 ; RESTORE ORG - .FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE + .ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS +; + .FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE ; ; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A ; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM. ; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80. ; -PARTTBL .FILL PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES +PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES ; -; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT -; SIGNATURE. +; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE. ; BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; @@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 512,0 ; JUST FILL SECTOR WITH ZEROES + .FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES ; ;------------------------------------------------------------------------------- ; SECTOR 3 @@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED + .FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED ; ; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY ; SOME HARDWARE BIOSES. ; PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE ; -; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES -; -PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM) -PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED) -PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED) -PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED) -PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED) -; -; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR -; - .FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H + .FILL (META_LOC - $),0 ; -; SECOND CHUNK OF METADATA +; METADATA ; -PR_WP .DB 0 ; WRITE PROTECT BOOLEADN -PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) -PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION -PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!) - .DW 0 ; DEPRECATED -PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM -PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM -PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS) +PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN +PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) +PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION +PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!) + .DW 0 ; (2) DEPRECATED +PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM +PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM +PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS) ; +#IF (META_SIZE != ($ - META_LOC)) + .ECHO "META_SIZE VALUE IS WRONG!!!\r\n" + !!! +#ENDIF ; +#IF ($ != PREFIX_SIZE) + .ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n" + !!! +#ENDIF ; - .END + .END diff --git a/Source/ZSDOS/loader.asm b/Source/ZSDOS/loader.asm index 74f2a6b7..d60c0b16 100644 --- a/Source/ZSDOS/loader.asm +++ b/Source/ZSDOS/loader.asm @@ -1,5 +1,5 @@ ;=============================================================================== -; BL.ASM +; LOADER.ASM ; ; BOOTLOADER FOR ROMWBW DISK OPERATING SYSTEMS. ; @@ -31,17 +31,16 @@ SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE SYS_END .EQU $FE00 ; ENDING ADDRESS OF SYSTEM IMAGE ; -BYT .EQU 1 ; used to describe METADATA_SIZE below -WRD .EQU 2 +SEC_SIZE .EQU 512 ; DISK SECTOR SIZE +BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE ; -SECTOR_SIZE .EQU 512 -BLOCK_SIZE .EQU 128 -PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS -METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below) +PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS ; -PARTTBL_LOC .EQU $1BE -PARTTBL_SIZ .EQU $40 -BOOTSIG_LOC .EQU $1FE +META_SIZE .EQU 32 ; SEE BELOW +META_LOC .EQU (PREFIX_SIZE - META_SIZE) +; +PT_LOC .EQU $1BE +PT_SIZ .EQU $40 ; ;------------------------------------------------------------------------------- ; SECTOR 1 @@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE ;---------------------------------------------------------------------------- ; ; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING -; ADDRESS OF $8000. +; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER +; USES THE METADATA TO LOAD THE OS DIRECTLY. ; .ORG $8000 JR BOOT @@ -145,10 +145,10 @@ HEXASCII: ; CONVERT LOW NIBBLE OF A TO ASCII HEX ; HEXCONV: - AND 0FH ;LOW NIBBLE ONLY - ADD A,90H + AND $0F ;LOW NIBBLE ONLY + ADD A,$90 DAA - ADC A,40H + ADC A,$40 DAA RET ; @@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0 STR_DONE .DB "\r\n",0 STR_ERR .DB " Read Error!",0 ; - .ORG $ - $8000 ; RESTORE ORG - .FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE + .ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS +; + .FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE ; ; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A ; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM. ; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80. ; -PARTTBL .FILL PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES +PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES ; -; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT -; SIGNATURE. +; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE. ; BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; @@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 512,0 ; JUST FILL SECTOR WITH ZEROES + .FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES ; ;------------------------------------------------------------------------------- ; SECTOR 3 @@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE ; ;---------------------------------------------------------------------------- ; - .FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED + .FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED ; ; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY ; SOME HARDWARE BIOSES. ; PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE ; -; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES -; -PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM) -PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED) -PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED) -PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED) -PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED) -; -; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR -; - .FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H + .FILL (META_LOC - $),0 ; -; SECOND CHUNK OF METADATA +; METADATA ; -PR_WP .DB 0 ; WRITE PROTECT BOOLEADN -PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) -PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION -PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!) - .DW 0 ; DEPRECATED -PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM -PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM -PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS) +PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN +PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?) +PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION +PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!) + .DW 0 ; (2) DEPRECATED +PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM +PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM +PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS) ; +#IF (META_SIZE != ($ - META_LOC)) + .ECHO "META_SIZE VALUE IS WRONG!!!\r\n" + !!! +#ENDIF ; +#IF ($ != PREFIX_SIZE) + .ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n" + !!! +#ENDIF ; - .END + .END