From bc8089af7d07684d5db4066ecdc1d273ab18efa0 Mon Sep 17 00:00:00 2001 From: Jakub Husak Date: Sun, 31 May 2020 18:21:43 +0200 Subject: [PATCH] M091 action working --- .../ACTION-36-ROM-OSS.rom | Bin 0 -> 16384 bytes .../M091ACTION36flashwrite.xex | Bin 0 -> 26277 bytes .../M091_Action36ACS_orig/flashwrite.asx | 378 ++++++++++++++++++ .../M091_Action36ACS_orig/makeflashwrite.sh | 2 + various_flashers/M091_Action36ACS_orig/readme | 2 + various_flashers/M091_BASICXE41/makerom.sh | 2 - 6 files changed, 382 insertions(+), 2 deletions(-) create mode 100755 various_flashers/M091_Action36ACS_orig/ACTION-36-ROM-OSS.rom create mode 100644 various_flashers/M091_Action36ACS_orig/M091ACTION36flashwrite.xex create mode 100644 various_flashers/M091_Action36ACS_orig/flashwrite.asx create mode 100755 various_flashers/M091_Action36ACS_orig/makeflashwrite.sh create mode 100644 various_flashers/M091_Action36ACS_orig/readme diff --git a/various_flashers/M091_Action36ACS_orig/ACTION-36-ROM-OSS.rom b/various_flashers/M091_Action36ACS_orig/ACTION-36-ROM-OSS.rom new file mode 100755 index 0000000000000000000000000000000000000000..61a974194692b71dfc9affc6441527ececa716cc GIT binary patch literal 16384 zcma)jeS8$v_4n-VOtJ|fS>ALNU#{9BQLC}GHd3ns2~FA&5Mr?}+C|u!R0IX=>!$@_ zXIYjk>=B?~k;rubVh)m0v#oCyb84j&k{J|-YlJUnQ zR4y@jKni}!po;OAYyt?4S;Z~ib5OPA`wopuwA4DXw57&j8E#4&Y%Ns|8gJlQsvYPE zt;d)HzIHX{OUaxsrm95PMdNPoJn2F5(@vSowp$aVm`@#5RW;jQt&p2LkHpN6Jb(M! z-()VSS&`;oyjk5rDl$H~7h^ao-?zzJgsQTKm5U{r_MLoBfS0!Ptmmbz;@~cFSGGyv zNLiL_+NG_QR85d#@?5P@$&!^BQqoD(UE+ey!s_MAmo1-0q}Ti>N%D0v`X~8kF(Lr_bV#OjpB-8V_d~`?-v>_*JO#(*WxE-p7eFO zy_8L4^kee`dG+;7A*)b7_Q*x(5k39W|B1-`NhYRUZl>Mht({Wb-|AB;y)j7*+fMr_ zIkSs6I^`Rw5|IP0&)rnU0?A?fXjFG+<0G-~15!KzWLhif{E>Nw<5oe&DaF+|=-Wz_ z2h^H!PqMyz=hb1JwLhcAX{$MwD&|-{^&X1E-|l)qj>zB}C+Hy8u8zna8Z-Zyu!c$V zF04uW4&GPip>@*p^g-!44}D&$qtAgu9G&FHo#IbB=~mN8!_pQSk+ynB*DjM!M4CP1 zbQkL`(wtx)5Y^+R+r1$yH%FV}J4A5WL-8M~byktPVJhYsFwaV|KkCsQmL9=me(C|- z!;wckaarTAep(3@kW+4yJ4HTYub$S787npnrE$rP=j}Q6&uc_(jhu1ZD8w5PxuFX2c$s~*=?+{?lP_me;N<@ zUp1y@N)kQ4>$3jp`fB+q(@n~|%~IpXmfLv5nrJ+1xy)na4dUU?h-%QBb|s3 zs0ZkvhcxdtyR@~^39`70e3V7M4f^Ra>4v78cBxsjG1Iu-D4JNPID(qe#aa?dcu58^GPR0L#+SStoh=Rka(bz z?zR2}((O$>&r7|jCSK|@-=~AdHP(A5)zEfSvr3HXt+A>W>7`AsGqMdV$ojnA`iH7% z&5_V7@kF&tnn4INNdJ*-9W%%yWvQa`8PFUog;(0 z=oaY@@vVNHoai#`QUv?N5@yi0c$*r^zThFNI)Ur9(I$;2by<*6T+>OWbxCdhc2v<5Mxp6K9!RzYEr%Xy6IXR& zmtz*II>obHbeko}c4RdNd90fT;_J!IZZ#ym;NR)nhK@r3S3?Ynz7XH(VT|ZG&{_U+ z=T$fFzMAYVnzVb&eO;6F&PgS^FS}>=jC*!Zzi0P?dAqN%b8MGBbzj!PcdhD|MCOITyGTdbmFAiG7{62vZ{ zTjE>Y4F%Z6*x=xKPV!6ZFgu6!Aoy#6aiev)@uW4u_?1| zNx8j#$shEtlh(2IyV(@TqE53{=8Q+oFpjw9zjw)E zPRN~8126H8U@+*Yo-=FvfFLYdwq)7z;1_mYtesyM+|Cy)_Wq(_kvG`Q33cGt~)I)Ok0|*$a2m%K?rqOyCP08^L%g$4JNTsH6 zDDjZZn%Wp>B41Bx=RHMBm#ri}TlVzQ#Ran(mM*@R{0EiaS>-i2L|)9{!U321G$)va zX`3)S*%}K>%e1k|i{$;iW`T#C-D~|@`yINM4pyc(;mlMhF3t?E*+yb+Z?l9$D&gHB zMYGLQ!==`hiEJ~@+Cz<*v*A)n0X8~21P>|Uvnr-#6`tJ`3vMR*6fOJzt|FkMwH9kRh7@|XoIGf_}=%vmuxC8 zOrX78c6zW*#tf@4eqwmK<@9I^Lfd!~hjS%l;mt|pRYfP~70fkI29VeK;EE3O(d)Pk!-MI zrxMzq8sx1C!;!hluxp{XtVY8H+Q!qSO()&`#|C+E#y&B-Pbnrp?x%7*+CIn!P?0*w zTi?`(a!PJR4mfU1B(obKz+4bu5MB%vedADhx*Iit|J1NewfaT0=rO{XC(et&8p)*P zed~TT(CalOC2YHa%otNCR)6Kk`?CloPgZ#!1 z1!GmFu;l^agF#-0s*9f>xh+X{Cyq7q6*JNw3d6DR26CYdhx?V*VZ&|SifJ3M%p^m} zTxLWwmxJ;$)~8=1Vt2oyke}~YqU(6n2nIQv7BzN1dk3M4e3UhniC&+af)IY)?@p(&HgFCC%~VD{auI{)G8q zDv!s5=3|VCHCkh&2djN|TfNbg`AK(AAdu!XounaUP&AzP0XDR~lDOzdov3nM)=>auP* z&}aT#E{^o%CM}O46Z^%9Z7G>Q+-`l9Jl1d6Os5tg>-xnPdkxOyHQoGJljH5Ay`Q#+ zWL`~qv7+7%h#J$o3@Pnk#5=P%zsgwb$3zC(Lh@6Kgt_ zind#~o;GjR#jjy1HB^zExYo5NUBkB=>NBrom|erVtY=+5z`A_2zNiF!j<%OOtq;Y4 zG%Cz%$ktwn#&*pmC9^$lZ@VFfZ! z-9Q1R#WZjU&;Aj<_Y|MZ?Fe5=E%l|A9)KdVZpgGG zKV1`-$oFKrHtxfZI_R3v@;zDd``1-!+=xGc&$?uj$C`}hNo$gS07sm&7=75i2Zqeg z+)QQ6>4g5lVb0|scgfNk|5_@!N|V)t(jfJ*5}#iJIiNQ#k*Q?es5qyrnX-1ux=Ols z#FwD!Mx-z=t@EuNGXF}~+@x^OiJ)xCii?5Wl;IEi!j2JN<&gOyE6Aa|7WE`7=SI$J z$+M)N=e1-e%zcWxUh*|K67`bQz|}O>U~PTU8Xcdt_#}Fu@vjNE&e3tEFgi|rqtzoR zeq4}oJytt>sjMOmS(jy1$$+pi9_anr5N|pUrS=C% za-LVy15WKi=31y6eYYxpaCq;xlnPhAaq(#=A>j{D0-ZJLm6PUMG8anm$s!_k1a)6J z(py9dIIW`VRnMxOT|I@huATLB4Dz5@ zyXI6vxJ!?SM80!UFketYSj>y~f?vb+{hgq&%q=O5@0VoeaD< zlLrk!`%@;GLugVy5bCqDHjSx0_S)51k$vYWxK1+6Hv2hCJELoa?0`i`nS(8XfMqIzwbr~+e&ZdFY);RGc zJ_s!eYE;XB@YdFtN3r?G)sQz@>k}TPGdDt(aM=NAaCA@^+oiNv!jO5+zri0I4XVLI zgPAw71IAa)veBT<5>|mxjRU5c98<;jV=8o^(G8N^V+nm93939W(;6L^Zx)bMtahLl zsqvJhYLFV-ixe4UH8pHEK@4mg5E9ua>@T|3Y~pg2Gs4v8>~(ww+BxoAY801r%n7Rc zl>aVTn#(9jRiWKA+65_ApX(GW6pKXbRfX(f07{`>&DmXGYlLa?lHG;;;FKhzT5C?y zZhusbDr3YBRcBJje5^ygXRZ)YAUHe_c4zXEhP9TN zoQx)$0CGB*=$XTS%yYqrqHAA^C>|IOC&0j%Tk}>`o2v+t>ZdSf$UYDkawaw!(};dt zH3j`ptm14|HNIv#Bn27Qoyb&FR2b7-x4tLQ{e@jT zt{Q^tGD&VKFO!rY!%S+^aN41tGT0_NpiKb$j`Tp|9IRWv{Yxt%ZAa$n|fJ!Wn#p<8-+r(aW8<>wB$| z?BSjFtwyn(728;Gz~tFZ1u}B(?7+TMBw5EN>S27r1h?!VziidPyFX1n$9LG zCK~)`huV>CPX;n2*>=YJ(-Yu#lwkjlb{x?xr*;byAy*~bH0ezzX&X+|V2xJJ3XiIc zlYNl3jF+?Oam8|w#ssukn@5W4tiTiw#lxR^lnZ`2?8qw2Ky_)7Y(ADV!G4%U_dmsl zX~r(mBdVJ!UR6>sgIFb{BWlL3aiWs=51=(xiXXvbQD@mRHc#?!JnVGScoNMhrN=R3 zM0Uf(t>*VeP>d(|IZt|*>QyQq92X20%w68FbY-=^M7518%%!WU^%bf;I8Ky4~&K3%16W;OZT{Z;xl)q!F7?|N5O4W-Z( zKlf>jc2wmYNa)8@+j>?~g}rYNt`}IcT7Ls@j)!XJ=x?b7umlA$P!53^`YF`pv7Aw@ z{{tCkz5r(sf*NJGLE0UY^7Hp z8+QaJju+-G!(!^+K&B+<{OjzsG7TMMZ?O5WlQxm z%NB^s7A;)q9ook-{M;qWR_X_HVDr5zXEO7fehfVZgZ!+9B}?@8b5QdZE?qqI5jqy; zGi#8}xAJVI3g$0eJa5HH{km4JVD7@ji|6;Pt}!(^sr$cx1|66oZ`6GM%>(GH#!#;jl04<;kp~{ z_=2-I&iH8l4Ksek-I$z{1IFhY_`inZ)^kPoFZ+czzrLMV-|;0KJ2;MRMh(YhE^hfM z{S)lo;9o8^{)A_U3^6=_Do1;A6&;tV55B&SC6A4HIFu`TntK<&?gbp@!S8o|r%Y`B zh$sI{TfD|ucDOu0;+3o0hxq|dzR+XZH8C{ID>t+c@dIz?3*ScJh0qYM+|hpUzZzc% z9psg1?c4vaqV0U@7*8(mQ0^nwcNhYMw_r>N+qLnbV|<$O*0@k3pU@lo_)6{aGspN) zFQ0lP2R{e!p;vf1k2U@gGSWQw785t&uiOC}!ik0`4Er2z6 z*)PfMWJSYoywk>r4NC#bl4C{h&sLHr7A}9RVd=Eu>Nz4=RKF0;==(UhD&&d1_jGLA zE(`@+pCvScl(td;g-1u3O(N?UL~hC@lu5J?6Q_K11$bs7bUA- zG!|I@G*+2E)tDtT^sas5dv=XkF<@di6X8Rfd0KYnSw6Idr^l_kaE~^nXaFA>R?>(G zgN5nVY3WlYtSqz)KV?*wOd6GrnrA8Vl1lO2BbBi-67DyqWcDT9 z4X4q%_p33<$GY(4Jx?%aeq=mszK-su_s7f3&9oGq!pfT)lTqL`-XKsLj9J!d<3`h! zb9wlE@e^7hGgn_>OtI!=-a#_C|En<{%3;fXb@)E(so`p~06LG)dJMy*TX?IO2r>M+ zCRSXYb1Rlyv`}LZQ}{1@Oc6xi1bs=H90{-)6q?uO*60dokiG5(J2Q0WR|l0>n#Zi; zasez1?gl3#4{A0knjOv(3}$-h30QU(!|3hNc$85yejF1#vxmH?091yybR5Pn+ef9D zg={Rhne%yCccz+ovlw2NQqwhBW|l$Sb;e8mX1vUQ{7cF`$1u%L%B=VY@EpRF+To>f z=7$*GgAI0`jf39AZ(vHt9k8y+l;FbcG@cBP z!YutROcw8u@9#y013Vy|zzRIpU8&VSv5k)eV5IHc&>;mc_JuAm8k_h6IA?(k(>YZi zQ}6te47AxDXh%mnLUvJxHG_9!-1Ndt=({Du4%AE0*RcVyu|&)^E@03VaEqe ze0@bByrYG%WE&g8Lix3@k(ckp2kmV(yWL(uwj`t=Imd$wZ-6-*Jv*uBW_aTCye#su`o2;2_tqnNhZzPjeseTTlbo$j3==nmnOwx)%X=s>sU(J zDJS6ZCvWc~6Wh=p=KosQv1<#>?~tq7(5Do{3QWZy}TgS~*sC%3AMG(d^V?t>L|pMRgU-y@eW{N}c5oa~6~GbeyZAHds) z65u758IPK8qg&%4kZwyWSeBuK(deK&!B}i!Yas7`*0))FMwPFKZ?>{v>SxjWv+xQ> zo~5OM$g}kcGyq9uw;9zg$GpjFt-u89bH)gVoyK#S5v@@gl%0`%I+H!5D8W1kg^0%3 z&8P^kh}Rs%^{_}T0mzW~Z`nzvx6;A#!lKoR4QBnKgytf@jsx&#h^rWrPdpmLh+SU#gynq@qMXO;;D%xVx|V7RDqWFN#a^8x8%Q9^cR_mvkK zjtZVeLC=6}i}b?737}DIXy&F6n44lM95LkeI8{J}$;|N*s!?U2kB`8dy!DJb;eGIc z-kE;M6QHv?doN5}FLR8YIIN@K0h7=KN1% zK)~E_$~f>U#_YQjHEcH;HI@_ZDs-7?tFHkwj|19w^@HlJM2^i(CtFQc2L46KXe$=D z-b0^_ZwA{JCFnlsS-M}^>>*1NWMzV_phwXqDr#5FTTIBX+)Ox1>fhS{dC{U zF`n)}qw?Vb*g4oTUdd+mS)X_}qyZf5sx`)C8*;N-chE~=5}~E;5t!yM6gHBp9dPbf9!LuD89>{tXb{?eNao(5|Zotu13Qyj6ax`gN zVf~g4dT{6!qT~rUeBwcC84Nx_#J2nnf;SiK68odU~x2=!zV9`MM&2i z9(Mu{CenlE?M%e){?dEw2-{D)5%DpQ_aY-gMwY-EFyuq}_QF)PcCVpZFM(73pp9dq z*hR5E*!Ue%^oXo7BW+}#HAbWHs9XczqbeVX4%p38DN8V`aTMX4kZrIAqXi63qiB)c zx6KmJqF#~IXs*R*bfC;Ug^ddIw}SRKD+-Ge@Y%u(S*O7khmfo76=&7$J*x$*N>X0q z8)Qc2O4{>&q0|$8Q|9Pkq$ej6#fklSKQr*hD)uDH&&iWD>3KwjlPIcr*$BOHTu)=TWzhZr_HPV-V;Sf>2OkcksEt0$V{r zVWA{5l1Y$CIUNKMu@Yr|WJ$SLq6#$Gd$>=EGgop#YGs-V6(8#-ueV!wr4|X+t+?`3 zz|iip#=$)5?4zo6nKp&FiW6^d>LXA&S~;T9`;?Bb`w22I;2ET zOGn=e9b%%J_4*!q#mxSqjplp1LNl58FUffukwSU2PaX?NfxfUWu!(XVLXMmB;N`rN ziBd#=Wp0O53}-Dh?;08s>6&Fj)Nl?{x0n~XZ@_;$TpJASG z3^K8;+-1I-Ya&~3V1^5*f|6PAt1@`_I9&aCne0S`2f<>s{noYcY}&LC8H95c5RQIy z2dX^MUVfjs9r8}L1tV#Vv);qu7zBW=-}K84z#%W;Ff~_WUb!RX`qW~M)PnZ+k*&f*j$FL?BA!UE6 zN32R!va*l9Ec>V@Y28k#`892=c{6;&5KcH~Pxg_5K5|Dt&ToVR;HWGiJ9Bx2FGTtk zj<(7O0nn+I_xPjz_jBl0GeTKs3}={m<23|m{!xl*#qoq?*S;sk^8L~nhBy+1f8+Un z@fWbBNK|T#EN0Y~6bX6*1H%$XiVqo(+=;=pB*Uu!JO&L!flq|?#}kN3K_4I(Fm!4` z1`%Ohl1v&*W9!GMf9b$sM8@HtKS^+moMXCWB?%?09{~E&ek_LxSZ;9O(8#I{5a#T_ z`5PE6cjR7=!yNrV2KM#S(i%5SH#nqHbUNBvk6(5$yBi!3h;V=7a>sN4G(d{+FOUQ; zX*GwVrf^t6gcL3e3sUms>{tP*ukW`6Z8}qzsC6}RPGn8868r%;b16JP~0fmqGGP?`P#`>;pKs@=5ET*oz#;;U3{| zFRXlL`gOL7uq$JkTw%&ynBotm3XZ0P%hP;yy7+K<%;9vwH62c&qd@3zB5^e3Sdik@ zrR?icCEx1c>O1~_4Feok#N7Dsw*{pQ2;N?U%fnj8v^A2?M2y`UNiqwq>A3_J+jn?f zxZErXAmI-a>tVeIpw(U@GuL6jfaF8agd}BskpOzhU&(wC=8cc6$z9JRAL36V0p_3w zoOd0PYxPQu?T@UX{s@};M%E#@F5+{C2c>|2J?7)Xe56Z=xLc*)NKKGzXmj!TG4r@jUr z1%QHAI2Gg5D&HPQRNMz~p8St22BKu4CO)33e4o$QhQ$Ao5eFTkTP2m4QE7{RE2C92 z^SI{yAJ|RU=)aG`XduyG1BW1e*(!u*mcp4r)*w41*cC-$NaD0+v(q(it|>XcD14+Ry3vXp(sy&g9zI=((NDH z2L>|Z+N1oyWYc9dTPMgZs`%5Ga#D_&yrRf4^2r|LKjyz)+;-JXZCCr-u6?}inkVS_ z?ezD+|F`Oef2hq9UR=e~9Shnf|2*-#jcUvNFYf%&i!Xf2fA`wtXSXKLK9D^2qvR{y z$>D+IyI*fT{aEVAmDPcUw2t^pp1iGAM|X$E{flv^y6BwNMV zW~SywnnxSe#zWDt1xArcR7H>ExF()g<1J9D1oXKHbia{x0ubTIrWBUQ&P-~#)!klo_JEDd}3 z9C^GADOi3ZXhmDheF)mkRb@t4nE#)kFKn@1CB<#z)+A5^$xnCTUV$-`r$CFW%pO$f zJ~b1$*xR&~>U0R(wZI_;5gkG&jR#&D*>?16Z8nur+gJ1Btop3Vs zg<^bM+NkpEc2+jDwbA@sIvCOgkcNdn!-_98g?8}dM+xor5amNVdGhsm`!QbkZOfbP zr6#kId_mFLmg`SyhCtb&-4_b;T5G7454G_yP$u|LJ8P+3p6d>AFgtl^8wSuil(<-_ zP56I~wwd$UJFegCO%DIwx_kI{7S3dMw!OiIi0W&Ho2{=LidkRv$Kns3nxA<+(w>0S z$UiF+k07i7yccPQBP~i{|2n*1`qL8(3Jjl=QbXzQ9BB<873zvlnbRKR#mF zS(A2Mu;!;<;I(Nl4+++lFTW&MlXSgN7kYGI+mL`~PTI84kYE<248ge9EK~}#s*oZ0 zW8}81W|LG!hXT!KDvD{Ww!m~?c1*Q;Cj(yyjDS-z8jo;|LZt%cM?8f3{PoH-$DXa1>@viieU*>!-_mT;41(OvEf8kwx3&~gAOVB}B z$h&(a8D^jSJ3%VL=yNa*ieqfz(3k_ru6y7D$~lN6nZY40h05}3JYr-(UAyQ(s{{+l zVHZBCfG5N*wxQixY4VAke4?w7ohAqc^IR(FS

4%#|>TJc}1?o29K_Fx>kf2V4+R z)|d~F!LNh;9@22V$8Nu=?U*Hq84XZiD2%sJ3IS7!XOwQb&AU;mW29fGjn*-dpt)(& z$VMq?T@Q)4U5dpuu;A$~_ViLS9f^p15$p(J4%zDlyod}^kXbSR!n`Tl(f6CX=sYpG zD<^*OTC;LwK3sLSi&d5NBik!SLMR7FCEfVGUACEpvQVknM>e{>O;Y+u+A8&>fUTM$ zC%cZM@o;0aM!rL>JN=v39C9*$F)Jbe=px5<<+qb5kcX&w1}L#do$GNdV>UU#>!I7N z*+;gc6S}>kdXy!!_mt#l3obDiq!#TjN)p1Npmz5B>UnjA^Qz~Hcm|V0z?zgp!761h z3qd$GHM|l9ugf;__vDd{6%KJu=jcYf5qqA@ZNp2>WLusf*d%{X#y6fm)np0&jpF=H zRQsRDbIomJ7Xx7(sk<2Yo03CJdNX3-d@N*wc}JVu1L;ra9eyxe=B6RXflmTF>hRo$~WTu2g1<)HDtbrW2rqA7Od}r)ZkyTvE951Mnz7RZK)0@ zet}e)seisunu+)hUgiPC6u2$yvlSoUAMxP|u%&2qWQ#}pw$cvrj#;_zF~T0ZtnjYX zW~0cVIayJ|;%VgKhP26Qs~g4=pVSD|Zc9Ao-zrx3z)YOx z(;d7yj_H=Z!?IO|^DWnmMFL9EG4$p?)C%qkg>qT~&kse|Te%)rBxOd5_y z%pwmCQw8HHEPVH{Z1Sg~mVxuf96z*i2k(cMt%K=? z3&41jIw5*MZf&8`k(UP6DX>pOYSO}R$2RI@K^H7vIq{%;NA6&{8^Igr#^>Ygh7=4i8&XgRq3Gp>9jHJ$Q=@IBeYBmnA<}Z1DMc3{+*S-gDif@*;L}o6y8PUi*O03$>x(ti08AQY8!~s zhG#~(r;Z+NqLOB!`C9SnSiy{C%U0e?;EP*j6~Z@MLe8aA@7mMv*-fZ8aH|P>G4*b^ z7E$>@>OH&lKF*OQuvA@ED?q^d1t}@Dxl<9|+ao zVhfKz=EG^lm3u=ASUeO5DBg*uHuHE;o7%$TO)X*&D{fQx-huR1ZOC;FSV(CMm}?4) z;*?CmyLLFEZHgvyh?}i&c;Ga~V@yu!lJ>yFK+9^dDx_{N+}9(TN9H1>^>|7s>}5-P zTb8)@;f7ersEeNcJd~K(KaB&vcld_zzBRqF;96u z=WlSPA3c{|bZqb9M^fIW_AcW)o}8Rses}tp|C9bzXX@T9she!~K(~?_r6#EtF};yy zyeyLTO53I5(q>7=kZD{Qgvc?(`9-qqLDTB^Gr1d*4Vv2+ERoD|VpE43W)+^rZiXVf zR7#_vXL+d%TAI{h-e= zLMDXJKq8=pQkhI<(oEW<3AL08eX+dUOhp_;?y7gyxn)R*{8BUQx4XvHO-=ZebE5^j`$O zK_;m&bKQ$>X`qRLZ)`}M3o0w8G|a1J&E$8rE0$JeDVU8cUs1bwMb*-!4fD#l zvgws5@dx*cn%_PBQ#8N4s%8aQP_>9GSW>(2v6Z(p%$Zv`YtHQN%aGb-OP)qsV{|Ro z_*(F5cB4YG8IPdZnPxMqYL+cFnI)7_vVTIV0C|gQm$|1DH!wWHzpJW2cc)Blm|s<6 zmIi-lc|mRMDpYA;xSPhJ)GtkzOnw(b#~;P}r22Axd~$H8vZj$6t32EI zz*tNt<=OWh7^~ZrHScj_d2r;kql1dCT%Cr7tI=O|3K}m3*I;!XZB3pCCX|V!b-aQV zpxd}l#%VUZI65Tx6EHYKCM1STaMh5&=m|fRFOB*rYxhqiO%u=LPXKpACa4!)8!|yZ z#TAZ+)Ej2jEUQ^r?OufSKLMPzjL~~@jj84Sa#IMDmn=VE41*isCtxH4RTC&xuz4#@ zUNJ8457ouvhzG6Wnv_)(ks5UV z-}(GgrDWrTfc3cQ3_R4XUI;W!Buge5j5;Rp?u4fTV~$IVNFa_oCaM?6?Gsb>qwh{| z{*CLHxXCdwkU#M$%tz#rnseR!tnlnF@E6Z7TO+LT(`bHvempVB91Opq`f)H>o@^c2YSHif6`70w?1p=_h$||D?drC;5@6 zUcfvor_{;(N%899qH|h)P08E5+JN-GT0gQf#K&x47z@K+SWT9Q(Y3~CZ*SCNjOzEk zB02IWtxSS})rQ%N%KDQ+kQLT@*7fUuQ`X)fG4eW(m-~?@Icc#Q zQtTm5(00;O+OK~~6HJ!ZA)f?Avt`+1pg!tZ_hH&KBXL~qz5xvB+EjV)F!2sI3b zOthpu!rBZT>+pzmicDy&&v{N6rrQUHaql+qg5-?|@+q$(w|Ww3N$5AONXvpIGHLC> zuABQ=-ElCP34Wf|_`!snIM}NHmuOQWhjts547YCYlJl&b>~*LYQe!e6vHKRu8x}2H zKaonD*~MzWgvtZ_| zg|lYPoik(6oCO`^4D&HOzYd59~UUr|>1P{r(u3$tcV z=N_6-Hhu0Ka8XuKcEP2LtSO8q{@Xh1f?jlDr1MJ**Q2x6gdXJvB#}`bp~2*h)`5al z=>QwFOSVlnT2Wf-4cf_XBPAn>@73-$#%k9aH%QCXTwxfwuZiwuv z+#Be&(mHjCJ=R%k0(-37oQSk~(-?hI{#*Udvzz|g$}1sbcybr39Bf>}Du)_b#=Xk=>C%qZH}=}! z-xlE|i+5N#dAF%L#tXgPSLzHqde|%U4faVx+oeXs-mjnYZuI&G{j&dHU+Ud-uQpLH z8uVvqz{t_cbcfnNj>_D}5qaYv{u9Jb!`}UwT^4(%8-u;`pbS^j+}>FT4OeKW9HG9w z2$4aWQ%+YC)WG&$dn_FeHN-M%gKniEpZ;}qv_alU*c7Kkyy3VURyt^(ln9yhuSv_y zh!mG4rK23%bEMiNiV=#0!qu`w_Rs=Su2+Vd%#SN_<20MfG?v>MXW8n>FHZ;}vekyT z(%}uuVQC20DvJ&JSu(|}#*p$ftkH{h;h<=Y0l}J%q5y=BIPh`kfvLbTt%HAv& zy^QmnEDtx6<1*EB;W!>rteX2urgAtUldF`AH9Vj#OCCxv(>d23lAt(vD7({HO+#yo zR8NNE^(b=6AM2b$3+d;*#+6Fh>S<{K)BE|k->;c zGH=MbJ##QpayBh%H|sV*Ld1C|A|)jy+7#zar5~5Xm2kNt=1&UapUW)@VzoOggmXm1 z{4@%+9;PJv70DQCawdqBH6hH?aWv(tPJ(_?hRS9JFgJL`r;x%@>3q|QdDd_Xl=Yg=PB{wAfC*BQ)7%guSa6M0%1h2 z$me7BYPltLaS_4l+RnVGm{PDuwp-rh6F;ℜW9aHBj^>-PanKH~XF6@Dii3CAL$= zwpbT)?5tIFv&$8 zQWGE_b8Eu9m!lEG84@%4w}aus5&cWUhR8ul|JtnUp~_3a1|-oUUk`={BZn3JGsA8s z9F+C5{L7nOVZ}A|P#DyP5aKW)gk~ikZN_p|Cu7BzDsjxO*2m*Q9CM;M9T!?McqHgU z^(2kk2a|F#9WNQFv4gF0Yq}-wOBJMB=-i(g!+b{y*3)3?VbyS`H&GRGP0Xdl-O0Gp zj2#u$XfaJZBGZ{n8K!eNEx#cdHc}VU7~R4P(F{${?FXa5FL~*LR}9+H(kX9NK(r3+ zkKu^X7nI5OeNRh=l$2Fa4$Ce@a?65*9z;qN<)oalsthN^F3B;CNiIYWqqE2}tSJj0 zKNJl*TuL;KYKo$~fhI$uOA!$@*M^^q#@IQ_-ODmFWY#~-@6VaLqGs8uvdj|MGA!2& z&nU~Rl&$_@_UTJ%SGqG#%ND=g%*d=pnQZwP880o8Gi%xMCsxhN)X~b>@QlnBnv;z^ zFe9^FwxJpJ=k8TA`V%0<&V2%{9g!Iu0-2+-Wdlu_fwgb-Z?Mx~S>|1ovpqa(PUd|% z$4~z*wmL0y0y$YOryEA0jg{U!k3XY^~|2 zm5*8l**?w63|A~evbAQ-$Xtb-OR=)doyf}8nuS_-)4Xiwr}g_3CfnO-Gy46C#h*=| z_3HQOvu3>dL;Cb1-=|NXafGI`zpPp^t$&AN8Ae01UcD5We#8vTTeV_ZW(FD@#v(W? z^BcuF#0*Z)aEi5H7(2Uml{+&uYV(gAZl7C=!OZ*^kpjQt=PRm~SJy0DnW>C|s~Ib* zo~*3R)J3hxnp?XPeuvs+nIw(oaJ37oR=NB4(Fi+tN$sl40khaV_p0f&OKMkSj)J1! z&(5q_vLy4dS*ilAn*Pr~*gmiJiDip2Y!gdIDrerZMHMSoWyUr!IdiKPEn4F4|4D*Q zpvo0Bi~E1lM9Z(LS@>B0Y%^%4-iiY3+}g+7nJ1gT06OuQdwS+sgbUbTyI0g^{7u&3 z1r9JXjXGp9!6w^q6q~lfUG-Sz-6qGpi;j_37saf@hS?Ea{&c3EhI7pDyi9A19frA{ zJ8$aBl{Jf(W!}!lnT`&IVVdzD{^B%j{W zM+$9m?CTjR;!R;en%UQell@fjTyp zsq1D-)hkaQWdmJo;&rq99Fz~d&MFnO@~;sQDiR;Du^aGLY>U?y@4B|3H6|@4-zF0w zd#so@lY(sEBbGN<@mIQ4oLv{Pix#r06$M&?c0E@cty`_x;}qnf zkXZsHwb90ZsX@t3b|{L-=gp{DxqM00)A!~~b1zwPuXB3UN;g^QUPe{NAKdrmR<5X8 z=)O0Ht690~-lF+6%NEr>Np2%6YyRCmWe8WZ3}tC>DChp&Dzda{#p0S}Q}WB^aAaY1 z)ru+PK8D8@II`=W*6lm&{XXYcF_j>s?vU)V#4Xr6bvkvrjwO>97TFs3dLaML` zUF%P*a<3rs+$;W2v(UYgOrAP@UNIrFF@KgWK*o=6B4!1`Fn3z6^k8?6iZ=Zg`i4~$ z5%XX->-p*sYGgNXzdXT9DQ`5Shy^-}l6J2`OI@@9r@{O)@*96)gH3)vZ1NZ^^0WfW z+|XQ#Qe$bHVN;?tOk9pqyKgZ@2oaAw zD9duXrA#6>w!!%MjQ{)J|1L6d)d)5C&GSS_$|H864O{8Q7MM|rEb=s+D@e8MVmp1T zu(fjoD{SNXc9Xl(^)UR4(q!{)bq%aYyAToQs<~2{tV)rBHX`rl=C|dRtyobDkqd8m zkCXU2WbkeAg2ZG_rT^JD*X}$!YYkp7&-uh>>_z|OB}ZnWmkngBJQ{!rj}sfWELE=5 z<8)IEBX^2ueM2*D%HVOmOVMhq!dpr|?6BkLDPkclmexXV!LZ4wGeTNMof6WN`lu%N z!(?{a;5A6>VD+DK{VC7qLf9+8LVQa&E`Od5!_F@$*78g8wP7V=KhD*h&e1St-ijU< zS<>C^ax1hWgP-fi$eZt^a%qPAIWOjcA}IaS`vu3mEfOq(2Bm|$rA>%>n>#Z6~Fv!ySr{$>9qz_djeP{-2G$eA*?0!%TiI_JI$U(#rT;!FA{?C{(KpJ*q zOj>rbu9j&zim^t=?*0*Y*j+SHlDQa*4bF7fhVWh zDLI@!>4RE}E@g*1fZ=A8hUiWXGwtE%ujEQ2&s8%S{q*T)sg=m9j|h*VGr#3g?vc== zd{o5wWm4+m`Q>`Cjbl^vh=LwV7BrBrPD`s>P@(f^P$-b0?l!a=1^*ht4$Ip*#4ydw0$m7}dT?$X8vzl;XFZ)#Ih1+mUQ zwi|zQPAp!nyGU_|Ua0-XaA}VkBeh2ir+$=t-cgb#9Ftaw?c5i8gk#ZO`4y#)Ck-#@ z?dm$=7+KU#K1+ixxvoP$r`=+V(aMa`@DB~7gAQ{B_&fnY^Y#xg`T=#V-lcklWAf+H z1^sWRBxvfhdYp1~kDjYK^j$RgGky5rG5vYfBODtHQ2I@2{pG^}?v*xplfH)N_9k9n zg|0+BD|G80D}CB^#z#n1QFl-^3bb*?P+5g5sor^7v|tKSn&XU5WL0elb@}Kq2yUim zw;b?s|7?@D>kr9+gLT1~O1&|>WF~1!Img2NL07}!dj0Qm$T&y(b}L(j|A=n$X2`L2 z-718zP7FI-3;ijml|ULU2u~fTH;7Co-QWrE>S~N``o+P(p+L%^Y!?Ea?ZNGGApIgw zR=0uI?Su6yODfY4Be%AVOlcRIy)DR6j%m5N6LB!v>^E@yZRS?DVU?p7tJ}DlBFU_xb={igM^il0I3SV?I+H;=2%4M@$ZN1X7^ZP$$ z+s51te;V%bWIdbtlZ32iQ?y`F+p#2!q3NwgUfh@7Ds1&*l_*=I+gvp{SjAZ2nDdO_ zg;(|%F6AD={F)C3*Ol6GV}$mUQH0@}qxp=bDLYB*2|82@I)+ZU++M-!cf*-W$L~hn zP8PQ5T_U4Bst-wfqDA}pEOn|% zLxpjwNei*)Px*E0U=hd;22cqqpwQi3t`xcVAQCFf_(O%*R6}9-qC~i;V*WS6My}82 z>$U1%`qE)RrjN*y2t$`%KHMs-Hl@TWF?@L*iB}I)m9PWPm~of8OX$L>vs>vo)SWWK zpMgu4yHF@ZT9J}ERFwKlz;>K0Y!wTU6ZLu5MmKoZ(Y3GVM>olvb(XGNug|j~y20i4 zVOUB<=5e1uL*5M#1jf$C%WFM8__{an!XmGG$s)#X?o++5vh=WFE1NTON3Y$!kRCw% z-&t91*1Ssp4mM|zo9_Gm4#r+tF?D*G{{So6>NK{_cAR4)kS^I7c9hq*XzX_8cno(G z;<~ycthl%CHI`KGC9w`}{9ZASR>(UJ4+)Bz)w%N>7?x)`1{h-)bv4pqVh|VlI1H4u zhZ6oGjIdcZfV%fbK#Aa=T@@Khk2%iM7OqPoofaREP#ghnSp>y6k|;+Jvk}@rwN3(` z*aN5SfiqZRX-=t2{o|{YxRrMU4wu#AhqYN{LDhg4qgX=wYg{MwJ!m0Nr+x63#Pf%bob;v`( z7->82CdEr25g0Y{T z48z5dVpYq@h|Ap|V3UfucM9Qj!{lJ0adj-+fW7u$UFvMGP>{e)hHiofrQlf^-7<1d zbuso(L*^5-_l1jg+#LxuaDJs=-V+N}uBurDgYjNs#~pi?-=!~iMXbiCyMFqzF~lSK zsVhz7eiYC2I!Xpb=F~t@$p`$J`-s!QS}n}#o)11f`|Wq|_oR_PAZvnoL@>FZLC&B_flvid0Urj#M)sSC-M z=RlQ4ljg!U?JE5WP}f|>NHR7Yg~xl~YU4{p?P4xgYNCY8Y@;RQF;=6tWl!bQrBo!H4qi$a4<*RbV|2mNJr1nK9-xdk4x{9^2u*{ z6fqiZ>0^D!NE~2|J5(Z_5StJKkDFrg^d=}UClnZz7cC0f*i@eAK#uQ+9J;91yo?&1 zS}?WrJO{23j2rIvAFvNd!AHqG&7`$keU^l~xm)*Rfo|SQ?uetqlDMglg{WOw%{@EW zz>4v%4tuhX-SnwlTb;^ne9(TTkIlf;#mi4_jgyyRM;q9ZX~|FR1CiiHa-kWU`_;xF z&86RhZflX$C{0RTp@madLh>TUr$;4RM~@_t-|v^g^daKGmG9>Y_H}V~-O+XR{ydgb zdb}d|jEaa3h{mmQ*g2-xx1Y18Mwfd;(MrDRmcc1!OvN;S&9VOLvnO zx{(@|MD*q=|@L#Fn?%qb8pp-x}AGcOhD#!atu>;Dk*L!D-)#UW&54>z(oA+m>BjEQ7%k7mL3jE}7E;a={7$COnw z`sb<`Z6Pf^N=rawLK#ws*O=2X{o$>eQ+SMo|nC=u> zs;jGG`j3l=F%?6lv>3OX(r?UgH=`@%iX=L4tZRuo2W~pptzS(!yN;5qrX(MvBo|cY z6@cboOR>ZFlw;=*QJq3O-RW|-XkzeIEtR^Fwi}#OU!KX3OjmV`*3YTV zy9V{E^G1Rl)gi>efh7YLtL<@`!s`2~&DlZO!R;tFl*(8(uFNuL;fiQHV&s~+`k6cj zYB?R`zO^<_jt&2NJf0l-C#A&P{(fJ{sIIwo{j2kH?QoUnoPW@M{!7uT^4w@}DzsvM z?G%!*gj|nz3WXV!!K;W@3Zq4#PJae7MTt7CgE4wCDZo%UG+&ApE$L1^8tdB93W38~ z>5TDo&Re+E@I?tNm~M~&wPI?R7{C7{+jWACn=8VTkPAIYxyaKhGCcH$m`|KNsG?$w zLrJI}3wf<4Q_sO{QE|++n)!+vFFr4*s&J{06@|cBQa_$e$;Bz!M$@7RntGz#Rqsv; z@M+AT z4s&b4;W{j)wSq^-p1W2Mbl^v=u|yg_0-f-Tx}$d9}8lN(dRaE-nZ zIf7qVEBKUk!UhGG>xv+(a|M&iM(u)eSE=IvI9KqetcN!$8$rsUU$6KNc~fK2pil5X zh=P#zgnXb9@=@#E6QZ~Cp|v!O0*M~f= zV4vXgZa{xL=#OxTk!-&XVWUL9PHw=lK+r!@Jo*PX^qpW*;?V%0&m=ivIw9A)X`?!yGzBd>jG_Rqpdd#Qo>L;i7OopRJp2?gy+p$WF1AewL5fCro?&bsK-&&~ ziXix}|KRUodfNv@MhuGYi(iWTIPNByXY#p2ZM?T}Ntj$0Qyj+dgu!aOJ|yuxi^J#8 z1eXrOMsAY1-$tb4 zVnk;pNsN#$_8|T_`=k8kYi?-1*4sShvF7WRD(817e**u{$QM458%DgmnpJkrZyx>o z*dI5^jSsxM>(?*8_$B-EG4Zc%iJyHie)QMz*E`|^z45>PsOi+=rZdmP`?dIM|J`!( z?Y-v~cAmd0_Ca~<{dnw~cI69IKC)POwOjq#r~dt9^Xd65-xZSAzx;xHI!InSdHU1O zzlLE;r`Kz*v%y?4pL*{a4%MZ`38GRLYLG=-SHl9W3w|xvp?jeQsFefcz1^I*IofFa zqlST_#+PnD8JMlO-+Tv7LzM`P0hrh~;Uct=`%N3UUnQ@%3){$xGH&%UFt_38$#^z% zyHq zotLAHdM61gdLGErL^um?Xy(SmK_$_|CS$C3GaZecxUZb82oWz`RJ6RqWa5DS7Fj^= zGLN<6ylt|VXl9cwEIs>cO}cde2ZNt0#y6Pk`d6Yo{UUap7ilKqmsC`(yTJ?m)%NsO9=+78!E@xXW`y7g4xyIPsPBUjZ)T-V(qsSI z*rK)?Z<73Ga!VYnLFA{}O@m*M9)~Q_B6YB4JaSqblw=9xBp;0EpQ0z+8*1WjR$)!z zlvQ|^3VKZ@w5Bw1(t45x5`)&0&*F_aZpE2U@dP4lRM;f5*g&PC{%v*ox59xy#tzZY z;}E?1LVaK-OMV?wZwn}FU>8e%6m2=mW<1-ou6&_hFD2h8sBJOn2@OyvJJtIFK~`-F zG_iqZR%HV*Hqb(As#luiV3_Y>h3#lSZIz;2sXF5S@qtgDNBz40zBfMbC*$scKN>hy zyV5N+7M!rg3^W)M4n~ZL-bnPJ6Z2BW;pe zPOKLA9aU0B-O&g|BLjcZ|7z?2_2+e*!_aM&mzqSD$W1UGn^GkOq&G~L`e))5I!m2b z6yme7iQA&)RJf~fCRBH#yaVM)=Wb&xW&<4DsM?<@8A&}_XE1>`BR(mG(nGR%yxDjd{rzS#`>5{dVK(*Iu<7qcWMg zjJ-2s-`;PB+f$tq=(ht&sM)o9^;{`Ooe|LN-Uzuhty%NNYps%v0?p^=lFe3%KiysCrvD zyo*@Nrgs;!m8(+Wys|r^LA!ZG4+^43x_ED(h_XZuL?LmsO>8Q? z5VB@?TnU*MMuJGo0jHvf;u>6P&_eCIl>~|Dv{^l;oc%_!vr(zh~upBdb=^?3?g{j==-3WFzi_EH#8qL>|9Dk zDNHD|w@C`_r`qXNjH=sW zA@O3d!@wX?ZwGEj{0hV@>3^Ykp&g+8-fpFWi|;noFK%y2PtL>Do#kRyY4yn+r6&VO zN0Cxx)5li0C38i4scJpB$>pvWl82K(_xFglP_9&&- z87}ujr6((dI$nI+qlg#u9C0$BpcgvIOO4+1Rh z>wf(sY)dVPpxyX6M2-1NHnr&2s19gh(UNF|;pa;vsrly#B&mvTWknXHr~$W?KDOZj z{zD!d0k-C?32o)opGqwd?~qkhiwSjpt#q$aXCuj`I%rbOqABEJi+6qBqR}trq&?UX zJ><_VMi*#F&JG;HJwhE!yRFfPcN^2LGXeHmI#h)RH zH#wV#eIJ6KG@FD&KzTYFM1VV=hE$s&lxDac&8rVy9VsQLY97N~8_Ai5k8bWIaNn;s za<%L90&*^y_^UPfkyVF@a~6tYFS_2rqri3gnZ!p{<74b2^_WtXX*CB2*b72jXm%w+ zth-%kNj%58_Xvr&OKDlUg%y&zrT=i!zjP}LVDq7*_trA6?O+#z1N&O*z+WD0t88I z{2X8@Zvd>e29V1VYfTOn@L@?m!GFt+cO(~_OD;URchRE>_v3qO+1BNwlPm5{KKY-? zr`i(tZcW@^xd*nDP$$$2UBLK;8sKRZ_6j?MH-s%h22Cb$WUz;h!nYYpQwQgo=(FYt z$pXu52!=?cF|NMVrHD8gS_i{{5Gxca;lOjOPy{PY=sDcuI=zh*QbPA&H?ARyaB9Tm zoQ%skaU^wcBDxR9$Wy1h`_(6fPM8lbQx6h=0t{ohj0d=k2e^y}xQqw5j0d=k2e^y} z2w%nnT*d=j#sf5y%Xk12J#ZNha2XG984qw75AeSM50Gc#0myr->DI|1Y&&<2nApq; zA$n)Ag1S-gZ)}*Xd0Crp{1Xn9-{Sh=iH^Wut()M2p(qDH5Kf2Kz!p|1I{h3Q*vcwz z77xP>S#>g7;E~LHK$O!Yhpz3P!gUjG8J&A&$LJMcR+4xPqawiq7;HCP+(@8 zR040Y8cA7rZKknCyIyy~f%i;@*AqRa=2AG@RoWz@BK0AH@%2@~c1Bk0@ zW2@l5NDCy;8twRefVaU7{U%lRz?tUuQfE2f&0(Kz#Bqybp?uY&2sdZwjnqaKSXdRKyJk(9@lTv ze7FL+Wv_lhTdwDjWpOTF)}BIWJq<~_a3S}_9`eCHGO`)<0S}x7oZGBi{b%HwX3)gX zFy-o#;R^MWz41)(Ijvr2;dk!@9IS|LF&}e>bnVCB zbUInh2S_ZKjNvM9W=ymLjk%9(Z30l@Nubum9K<%uarpN4!Kdigey?9Gvg9ni8@0!x zvaFD)G4f>-84=?q$Xb;?j7DrROb4Woh@q}HR9mS3)T{(IJCgdkP$nDPCR5RXB__QO z_?&&-eZqcTETH_&ZBiN07TTwefRN4rjf@oVB^GH5^bbH*dl;hI+Jq@f*+FYcpEyEW zq+@9y?tRX)g?m;OuZnIl(wNlGf%11kUJ#wi+BxztPB0PJs>Rf_DU9+)-4PemZRBW{)tjP-QB;1%I^}pgSA+TT3|v zP;J~$tvzf^DtF-;XW!{%cIVY}{7%=}HT*0`VwoKmJ+*e+QZfFJSPejVMlPqKyQjHY z5XpupFp)|aJs&}N0i!DaD4->eO^r22N2bMVGB=|#mK4{ z9mzXm`jWH~cwv3;n-s^VYz9$jt=T2Hy~ zMM!TJWsWasL;-UHm&DM%UHB=Bb$hjp@hWD@f2hN#Dt0OuA1wS=U8|zZQcU_(2K^luGZzS4yZ+EeUeitT7nwEz(b5 zp@RKwkUjQ_+`Jet-9RZGK1N zYi9fh&4A*@_b6*23iUZLmlWU&q-qn`EgsY|K|A2?qQ}$6E1l7o$=xwDiM>b$73bGH zA#r0G#{Qo8{^I6?{@|UmU%yH2>|LNw8n76S0jI$Z6zNx^m_E!8WUZ*ik%>lApk&P?V zNfb&RYgT6h8f`}yKceU8KDyAZzXml4@H+W3tBCpd>6cjN&Q>AT+1T3sVk;Nxpj1Bs zRrKsH>R^`IRjN+ae}RccMhNNQZgD6y1!!SiU=f)Fp~v+KoOW1cj=c26g2-VMarX*kq+(xZC;mA3UDE?_g&*PvhKmNG7}$gW>2Srg0cFo{yeaF|6_$=+3C ze{Z>6XZxLBVrKK``V6~-e&3@s(M?+bdMg^!N4nCTq6NTlRm?-k`gkWdBT-7zKKnlH zv(C728z8GUtLyX|fgOi(!bW?%o8)wp+k3Eo<8uLQl?7y%8OP@hp&p4*nnZjekWtj^ z7Xhe$zsYVH6_jyWa|9_`U&RNUe-^@Oel%uS)n5paEL|mnCJu)IPJN+=`vZP$K~RLI z&>|{*K@wm$&|(+@LGmC1kvq`18mD~aV2;58k$@0TdZICWwE`Lt7&vsOep(_#Ns?3& zlg846UH{UCLxqgZKf9A)8#za9%Tf}E8NWp7OY5;1KM^C=*sy7&Wk5h>y5amC6VBXn z$6+%EJ?Oyh9$ePDlw^%fC6N9NT z^u<#nDVL^0V`jj;YUNVqTnvuHXD3%c^G)rc>8R{Mam>o)#y_zZ8C=g>tu|Lx>4#It zT1tY>l%X@Z32SbGJ($QjlCWQyWXqEIhmu1MC3CK8b=X^T?5z$2jwEdJ6U_RAb$z1X zC#_6%>;D6q{QvxL0K?>6#sgf&16;-fT*d=j#sgf&16;-fT*d=j{(XSUzYl<)R=A7@ dxQqw5{QCfxe;?rT?*sg=_. +; + icl '../../lib/atari.hea' +; uncomment when flashing all cart or want to check all blocks written so far. +;.def compareall +BankNum equ $88 +Counter equ $89 +operation equ $8a +start equ 6 ; format chip and program +select equ 5 ; ferify and format sectors +option equ 3 ; verify +outchar equ $F2B0 +memtop equ $2e5 +dmactls equ $22f + +_SOURCE equ $6000 +_DEST equ $A000 + +; test code + org $2000 + jsr $f420 ; clrscr + lda portb + cmp #$fd + beq @+ + jsr print + dta c'Run with BASIC enabled and restart.',0 + jmp * +@ lda #$1 + sta 66 + ; waiting for cart to be inserted + jsr print + dta c'Insert cartridge...',0 +@ lda $D013 + lsr + bcc @- + jsr print + dta c' inserted.',$9b,0 + + ; cart inserted, fake it was not changed + lda $d013 + sta $3fa + + ;lda #$ff + ;sta $d301 + + jsr print + dta c'Press:',$9b + dta c'START - format cart and programm',$9b + dta c'SELECT - verify; repair bad blocks.',$9b + dta c'OPTION - verify only',$9b,0 +@ lda 53279 + cmp #7 + beq @- + sta operation + + cmp #select + beq VERIFYREPAIR + + cmp #option + beq CHECKONLY + ; start +FORMAT + jsr print + dta c'Formatting cart ...',0 + jsr flashformatchip + bcs formatfailed + jsr print + dta c'done:)',$9b,0 + rts +formatfailed + jsr print + dta c'failed:(',$9b,'Waiting for reboot...',$9b,0 + jmp * +VERIFYREPAIR + jsr print + dta c'Verify and ',0 +CHECKONLY + jsr print + dta c'Compare.',$9b,0 + rts +crcsums + :128 dta 0,0 + +CHECKINIT + mwa #_SOURCE _csrc + mwa #_DEST _cdst + sei +CHECK + + mva #0 badcompare_counter + sta badcompare_counter+1 + ldx BankNum + sta $d500,x +checkloop +_csrc equ * + 1 + lda $6000 ; src +_cdst equ * + 1 + cmp $A000 ; dst + beq @+ + lda _csrc + ldx _csrc+1 + jsr BADCOMPARE +@ inw _csrc + inw _cdst + lda _csrc+1 + cmp #>_SOURCE+$20 + bne checkloop + cpw #0 badcompare_counter + beq @+ + sta $d580 + lda $d013 + sta $3fa + cli + jsr print + dta c'non-match byte#:',0 + lda badcompare_counter+1 + jsr printhex + lda badcompare_counter + jsr printhex + jsr printnl + sec + rts +@ sta $d580 + lda $d013 + sta $3fa + cli + lda #'o' + jsr outchar +@ clc +dmaon mva #34 dmactls + sta dmactl + rts +VERIFY + ;mwa #_SOURCE _csrc + ;mwa #_DEST _cdst + jsr CHECKINIT + bcc v_rts + lda #'f' + jsr outchar + ldx BankNum + lda #$a0 + jsr flashformatsector + ldx BankNum + lda #$b0 + jsr flashformatsector + jsr FORMATTED + dec Counter + bne VERIFY +v_rts jmp dmaon + +COMPARE_CRC16_DEST_ALL + lda BankNum + sta _tbanknum +@ sei +_tbanknum equ * + 1 + sta $D500 + clc + mva _tbanknum calccrc_bank + jsr CALCCRC_DEST + jsr status_crc + .ifdef compareall + dec _tbanknum + bpl @- + .endif + sta $D580 + lda $d013 + sta $3fa + cli + rts +status_crc + php + jsr printBank_t + plp + php + sne + lda #'o' + plp + seq + lda #'!' + jsr outchar + lda #',' + jmp outchar + + +CALCCRC_DEST + php + mwa #_DEST _tsrc + bne crccont + +CALCCRC ; c=1 - write; c=0 - check + php + mwa #_SOURCE _tsrc + mwa #$2000 _tcnt +crccont mwa #$ffff crc16.crc +_tsrc equ * + 1 + lda $ffff + jsr crc16.updCRC + inw _tsrc + dew _tcnt + bne _tsrc -1 +calccrc_bank equ * +1 + lda #$ba ; nk number + asl + tax + plp + bcc crccheck + mwa crc16.crc crcsums,x + rts +_tcnt :2 dta 0 +crccheck + cpw crc16.crc crcsums,x + rts + + +printBank_t + lda _tbanknum + bpl @+ +printBank + jsr printnl + lda BankNum +@ pha + lda #'B' + jsr outchar + pla + jsr printhex + lda #':' + jmp outchar + +MAIN_PROCESS + ;mva #0 dmactls + ;sta dmactl + sec + mva BankNum calccrc_bank + jsr CALCCRC + mwa #_DEST flashaddr + jsr printBank + + lda operation + cmp #select + jeq VERIFY + + cmp #option + jeq CHECKINIT + +FORMATTED + mwa #_SOURCE _writeaddr + lda _writeaddr+1 + clc + adc #$20 + sta _cmpaddr + mwa #_DEST flashaddr + sec +formatted_next + ldx BankNum +formatted_next2 +_writeaddr equ *+1 + lda $ffff + jsr flashwritebyte + jsr flashincaddr + inw _writeaddr +_cmpaddr equ * + 1 + lda #$ff + cmp _writeaddr+1 + bne formatted_next2 + + jmp COMPARE_CRC16_DEST_ALL + +FINISH_PROCESS + jsr print + dta $9b,'Finished',0 + jmp * + rts +badcompare_counter dta 0,0 +BADCOMPARE + ldy 53279 + cpy #7 + beq @+ + pha + txa + pha + lda #'!' + jsr outchar + pla + jsr printhex + pla + jsr printhex + lda #':' + jsr outchar + mwa _csrc badcompare_tmp1 +badcompare_tmp1 equ * +1 + lda $ffff + jsr printhex + lda #'/' + jsr outchar + mwa _cdst badcompare_tmp2 +badcompare_tmp2 equ * +1 + lda $ffff + jsr printhex + jsr printnl +@ inw badcompare_counter + sec + jmp dmaon +; ------- + icl '../../lib/flashwritelib.asx' + + icl '../../lib/crc16_v2.asm' + + ;jsr print + ;dta c'AlaMaKota.',$9b,0 + ;lda #$55 + ;jsr printhex + ;lda #$aa + ;jsr printhex + ;jmp * + icl '../../lib/print2.asx' + org $2e2 + dta a($2000) +; --------------------------------------- +; D500 A000 20 6c offset:$0000 +; D503 A000 85 86 offset $1000 +; D504 A000 20 dd offset $2000 +; All: B000 36 01 offset $3000 +; blocks for every 8kb bank +;------------ + org BankNum + dta b(0) ; $d500 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "ACTION-36-ROM-OSS.rom",+$1000,$1000 + ins "ACTION-36-ROM-OSS.rom",+$0000,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(3) ; d503 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "ACTION-36-ROM-OSS.rom",+$3000,$1000 + ins "ACTION-36-ROM-OSS.rom",+$0000,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + org BankNum + dta b(9) ; $d509 + dta b(1) ; Counter +;------------ + org _SOURCE + ins "ACTION-36-ROM-OSS.rom",+$2000,$1000 + ins "ACTION-36-ROM-OSS.rom",+$0000,$1000 +;------------ + org $2e2 + dta a(MAIN_PROCESS) +;------------ + +;------------ + org $2e2 + dta a(FINISH_PROCESS) diff --git a/various_flashers/M091_Action36ACS_orig/makeflashwrite.sh b/various_flashers/M091_Action36ACS_orig/makeflashwrite.sh new file mode 100755 index 0000000..d22ee04 --- /dev/null +++ b/various_flashers/M091_Action36ACS_orig/makeflashwrite.sh @@ -0,0 +1,2 @@ +mads flashwrite.asx -o:M091ACTION36flashwrite.xex + diff --git a/various_flashers/M091_Action36ACS_orig/readme b/various_flashers/M091_Action36ACS_orig/readme new file mode 100644 index 0000000..45fbdbe --- /dev/null +++ b/various_flashers/M091_Action36ACS_orig/readme @@ -0,0 +1,2 @@ +https://atariwiki.org/wiki/Wiki.jsp?page=ACTION%20source%20code + diff --git a/various_flashers/M091_BASICXE41/makerom.sh b/various_flashers/M091_BASICXE41/makerom.sh index 1d23069..62596e6 100755 --- a/various_flashers/M091_BASICXE41/makerom.sh +++ b/various_flashers/M091_BASICXE41/makerom.sh @@ -14,8 +14,6 @@ echo -n >$O dd iseek=1 if="$I" of=/dev/stdout bs=4096 count=1 >>$O dd iseek=0 if="$I" of=/dev/stdout bs=4096 count=1 >>$O -# for t in 1 2 ; do out8k >>$O ; done - dd iseek=3 if="$I" of=/dev/stdout bs=4096 count=1 >>$O dd iseek=0 if="$I" of=/dev/stdout bs=4096 count=1 >>$O