From 09f10f9549cf4cd3abf242126c08e43809182dbb Mon Sep 17 00:00:00 2001 From: "drohne235@googlemail.com" Date: Fri, 11 Nov 2011 15:42:58 +0000 Subject: [PATCH] --- bstc.exe | Bin 0 -> 120320 bytes installation.txt | 234 +++++++++ lib/adm-ay.spin | Bin 0 -> 34167 bytes lib/adm-fat.spin | Bin 0 -> 312958 bytes lib/adm-hss.spin | 738 +++++++++++++++++++++++++++++ lib/adm-plx.spin | Bin 0 -> 17354 bytes lib/adm-rtc.spin | Bin 0 -> 43102 bytes lib/adm-sid-combined-waveforms.bin | Bin 0 -> 1024 bytes lib/adm-sid.spin | Bin 0 -> 80108 bytes lib/adm-wav.spin | Bin 0 -> 49506 bytes lib/bel-htext.spin | Bin 0 -> 56808 bytes lib/bel-keyb.spin | Bin 0 -> 94800 bytes lib/bel-mouse.spin | Bin 0 -> 32672 bytes lib/bel-tv.spin | Bin 0 -> 63654 bytes lib/bel-vga.spin | Bin 0 -> 55312 bytes lib/glob-com.spin | Bin 0 -> 61154 bytes lib/glob-fds.spin | Bin 0 -> 23654 bytes lib/glob-numbers.spin | Bin 0 -> 90480 bytes lib/glob-pst.spin | Bin 0 -> 39544 bytes lib/glob-sdspi.spin | 1 + lib/glob-string.spin | Bin 0 -> 74732 bytes lib/reg-ios.spin | Bin 0 -> 210560 bytes lizenz.txt | 23 + logbuch.txt | 224 +++++++++ make.bat | 77 +++ make.log | 424 +++++++++++++++++ makelog.bat | 6 + 27 files changed, 1727 insertions(+) create mode 100644 bstc.exe create mode 100644 installation.txt create mode 100644 lib/adm-ay.spin create mode 100644 lib/adm-fat.spin create mode 100644 lib/adm-hss.spin create mode 100644 lib/adm-plx.spin create mode 100644 lib/adm-rtc.spin create mode 100644 lib/adm-sid-combined-waveforms.bin create mode 100644 lib/adm-sid.spin create mode 100644 lib/adm-wav.spin create mode 100644 lib/bel-htext.spin create mode 100644 lib/bel-keyb.spin create mode 100644 lib/bel-mouse.spin create mode 100644 lib/bel-tv.spin create mode 100644 lib/bel-vga.spin create mode 100644 lib/glob-com.spin create mode 100644 lib/glob-fds.spin create mode 100644 lib/glob-numbers.spin create mode 100644 lib/glob-pst.spin create mode 100644 lib/glob-sdspi.spin create mode 100644 lib/glob-string.spin create mode 100644 lib/reg-ios.spin create mode 100644 lizenz.txt create mode 100644 logbuch.txt create mode 100644 make.bat create mode 100644 make.log create mode 100644 makelog.bat diff --git a/bstc.exe b/bstc.exe new file mode 100644 index 0000000000000000000000000000000000000000..febcbd0a7304f2acd70d3b87f80aaa3f351d4da9 GIT binary patch literal 120320 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%0Dw)c`$B<1ZS zIkiMcVdBBwgv#`G^|^6B#mi?0$zX@*3f6h|nzuJ->kdSS4G{UDneQ_hr~#?QWdH|& z29tjN##Im?11dXb za3wCTQ*>h60d2<6;LAP94VHe8l&l?&Y0;Y5+1T`Qlr5Wsw8991>FMdz%E^aP&;%3B z5@(Nm7uk6f>QUJvV@#)~tz3$?%QfOo;3ITV6Ka!kqK2cey10v?IckgVjR;q&G3;8 z9mZ;@ZPzEQQ}6B!G&xqbvFOU(UK20H3nKFFk)lf!5j;08HR6su}{vTq`_Tu ziX1?4TkE>@=GGc7keB1{NhF6vv-Qw5v{EG_Y;AqhS1(WbFTLv>g26S9l211b}_3^L!@OTgcL2a|TIBH;u55=%&Dv-lyNId9Hn z)F`oM@SVLJ>NU8@#8S7!A_9@oTgqwNU7j98Sv7DS<|nD zS*O}4r-O+y4{NB{{Sl?{gaMPkK0lRt&{q&#nS4bUubhG@zy1oU>u6^snz&Y5^q2It8_ z+C4k4`w|@4&^9+yUlAdcR#K2eBthxx7RP~ZvK7r-NCr6UO1stlZBW=VC%z>`wV@(g zcH}J!6?I`R-_~+QWXSMqJDJV=_8w)NL>i(qg-)%U(r5SDHMW8e6&($iyo6>H%gTt_ z-UOadgvkJuH&C|K!ww8X3(EEK-<`grc9a0mM!Sj*s)fKG4>bduP2Q;E-=n##&;yUj zEIEi%#?h!7P_ExdYGQB{itIp74!(VHn)8t5cp9bi80w*i;4*+^ilZ3<7*r_!$Z?0P zPbvZ3dtmHFp2QKN#Y3T7!<@|uw?Al0I1bZk-4^tZ`^Q`g`R>+Hnw0W@V{IfUKd_f5 zDEB{*%hEMBc}6lZYIAlp9r!Aw5^XuvR#s{SkZV2(8?@B$Ci58xlm+0arR9}2&|i?J zblTI>$FUmGrJ-21MJGs|OtJ(!vH3f`mSFFCVn59wj!UcJfNJHLorLq#jSiZ;zxm&a zPn$q<}za3K3)!D+-YOhFp9V?z~MwENBn*^Zrfuw-e zHI{oRQAF9jH(c@m{PebAY^v;<$=MV~YCx;*)Y<60saj);yjQxu6k@bEcru$$4lU)` zYRr39d|BX-oGpI#Y;~!YrXF@YL$0`neHCq=VRSUcSwP6}k$8ILT#e*OR>c|*t57`? z7IusDCZw4K)b-Ndxe}+hW|r2(dQLZ9Xs5N++|I*uN{qL63@@@Pd8>qK?`M*R_TxHU4h}PJ*06Z&T9dY7C|qZz;dvdD_B~Gk z1fH9581PP)G}&))U1CCy1nM@m|4|%DwEVkV3Y{SVi1s&ye&Ak3p$Q3f{Et1RO z>l{F@M_0jZ9BzBpebCTRWZVIAlewD?h)caU0}Vq#2LoNVq_?P7I4&K zl^rW|B5REp3qB5Mf7d|7Iqs(LLnVL9DUP5iqI05D@cbtdIQH3(8nQt@tW5fI8b+0~ zo?**|LLr@(WV&vB*QlNU@PNCoVtJxXy%MKUNeYH%ZV(1e>UkQs-L)YGk=U+2G3B8En-H$R3F+Q1!@6O7ij*Eobk+3i_u2)BzlarjE9jnZ){%|omN z{E@12PKAupdDwQ!Md3t`9;D?mpZ9jIkBPxze^3s@dQ)2!`CoWu;`4wbW$N+##=j=K zpWy81ZH*T7@aUM~wCLMU=UpApJ@;93s1|7G(B#O1SpGSAT@tQhT0zdG^;7Em)Ml8< z!MN~EMF|El1T62Q6OZyF=hyzsA`1j5kdsjB-)c@COH~78RhJ+mVvscxmrBabnY-aq zj?NVdyjOT|k=lH`J4N~Mysp8>S$4GCz*6ca;FuTwk~qd6^2u$XI4DS}!6-)ACQ~)l zxPMmhzRiiHZR!+-QkOB1h_K6wPy?~^CMcurW%b7#LI+rJLMR1`0M}_f+W_?A4|>mE zhh;Kb<;*Pabr8aX{GQi4LSaqOMr|%C=~|d6tw9ALok=UJf8Qe5d)F!2#URyRd*te< zgQttq`afI!DBP6l`mHTGAhebXXcR<0ek>F;ZVz^T?QL^;lOD99n}k%F4$L&iNATAJ zFW(J5$MzeBDF5&numRm-A3Wn6@*rlhaH5;;4#HAx$>ZucBrf(h5@dEmE$fUjn&;sV z;RkRkg&5N??#8BT%DyqgFWVa(<_N0eI?#HmGVd>6DY53*gRR2iEwi_N-4j8#n;Cxr zx2;wVP~on}Qb;Wr+f|v7o!qUi(UBykA{4~BI)g~FW&^P#?;IPh&L$!*8nG7DmjKCg zCwUJNoZ6;m31|`k>rpt#uAkWPru1-bYR_xQ1w(i$qs8U`K5#bCb0(Et?_OqM!N>d~DZ zmMEiKryH{fIiiOHq%p}-=1$Y+!$MlV)ktB}ViaQs)RqJxBPxd4VNMY@S=?EflUIel zT$%`l`J=pkm~z2!$fh*q zpWmq!1K@9Hi2YR7wBjrYfPtHZje2XaK@FYy*VcPEsnA(K@I_lHpJGo|ZiYK3?W!In z$>jfO;GBX{@&7l_*E+emFOYV8%B|OEmhq+m7}H#{cu^NeM@c+5+6G-=^R!Ooy6TG&#F+d`O)(& zfM8K+Zj}K{H%Jwv5F}3E6?J&k3|9%9;lo%!UH$?PPi1fB-_I}CX>rfHwpRv=q>s%I zndx!ElB(BWWpB1yS?nlZyFNrIIjAa(qf-cs+aiWTu2yxtB~>{ct@EEt2keMtAXS4I!|yJ>Pr z2cT2LSh(BvroRAc=6)CY|IT;SVT^Q@BHAP^yQnN^a+kunDVbV^K?ys@TfCdMd9r2# zRb)&;{CcYFyHFu%)fjayd*jKPUgT)UD)f;MF{2eTZ#AA{^~8IYhg+u%Y=3f0m4HC% zfmdvVP&}9luzbI$Sr?j)h0{YmV+#0D1h}c!ImwaYKE>gURwi(J_9>3WkBVv1Y4D+JUMPGR-3@S%b}(7tt>PCIl zBf^T7K#SqWg6AuRPVpdO7F32V-5aDKLtuik)zFhIToD+iad!t-uK|ZyAZ7lsWT(s` zmv5v8x z303*4)H004Yu6X_Ymd0?o=;iUNq*wE?s{hoC*jZ}=1QqxCd9k|&b@#rOJ!Jzult>$ zkK>+nsnPKh$o9cZGG$`~VrsOd$aR_iqjka_`RUjaxcxs7>|cB@^L{-su!-<_*gD<2 zAYSwUBW$Fwx%F)qdjAx7qN;o`=>_}s0&sZ)V^Gli4Yh;n-S)Rfp`>C@TQ|D4WCNon zMdD@dFaS4%Eu*Z_iu{7QLr6_+^bk>liDkmMbQWn5`KGadphY(Rhr;}j@iHNHB=hv- z<9`neLcL4f70-fHS#!`X5@twcSZHa*2yw#rHK20K{cGROkpt#Ow@x0fEQxy?e+Sx` zFt4P5KQnB_y`^Q}`0#Qza^)fdhIy}zIpVJWiF%=tL&I+MUPakvCU$}zN5-=8kzDWn zy9Zu_X#%$7cFv(i@H*w~mD^%8TN^y;c&eYH8B2BCeEQbG(9FbNvd2_;)|>R(QJE8f z+A=sB|G70`kO_>Oy1(7Ij_D4$`K$dXRnulZG5ap8BvHxXSV6CFUXLaiWt~XYn?NAR z95Vopza;h0md3c@^H{XZ9l6h9H*j0@V+1effU+Ptww2$xsL97AKr~lyDH=`YmqCo&nzY(;&>zl{Sh~=l4>n9CH){N(<$HqWa|m~`Co%I2)@9SwrHNU>(NiJ zVC{>t2O@n(TNdlIJe$X1e-%)~Tw>|cF+^AF)ANIcaVhqncB6b9=v+#ZEt>@YZ$fQ6 zz|sPRx_FnXZh&CPa!C6vo==~bN32tZ!CM_{4^Y`@oid5xv9dPZ2n)MH4@v)6gLsj@ zem`B)_e<}x4g;nBq>E!l;1MqJIUVcpkmM>4BeJ9XYD^ZTIrDfyRCKEe$q|8o$X9%7 z<~4nnyaRIABMrYFUkj_x>()v=IzR|}?{I7*MD=SJFpB9@i32bc8&psgGg4}`$U&VB zGc#3BsNhqSi#T46zFY7j8os!}Y%Ib#ba>icV&c;?N=*KoC-HU9R-JP-NjPl?p&yPs z+_vesB6C|Bbb1PzqCKNO4F!`P6A@edGM(q6ytT?| zY@T+l;153#B!`?1XQi<`rs%9&+2;eGB#)~7&1`DjAAvTWiq)!CGX`ty~8Lrg0b*l{W6Dx7O0pEEM3Q zr1>#~BOsH8-ci|&Vw;yBsg?vc^`z1?d#V|h87_&;edrj3LKZ>35GyhE1aQFoR_(9 z74ve|z{eeU(Po^zNbR3rskbYN_m(ln*beegEvXt!BeZ+megV3YNy zlT@MrQgDB>y#fwz35J@}7FQ=|)Ylhxt#P3}0XV*ocx3Zv>@M0=7kh(ZJ=S*G7rvJB zDPDLSgRuBx<2e8xyQNun))ph?%7JSIJ4sFIO~DqFH>EY+sYC;YEz~4}H}hIEJU`5N zf1_I7Tk?6Zgp(hGtEfO*Bip*sOshPaVjN_tHs75UsO1qCO4VOX8ZgEC$re~N8^y(L z^=wq=YQQ5*@D1a&x`1|4L6TmnT`9eA5dUd}F;HWlDGu;&x>5#%RQ91Q8+=aYn!06o>N7rYv~aJ$WyZ+@6B|YyhzsAUwtOAZ>DRi zZ`e;wfBwjqfTIDj6N{R3%_W_j&Iq>+_ra*?@m22ByF!*NCq1>i2TVHmG1|}J9AfT6+myz2VEvoGh>3Y( zWUR2CT6{;s!BYZZF4hn-P;c0i1^M;PDfFSuhXVe?8#*ix|9*q<3M$#5GERgWk!S8s z!8U$Z`%iT^haSh7WiDjDh4uJ0Ykyg@5Z*Mg9n|!;bnps>OMxC&uK;Ebo;j{KFTAgo%esoT2ppdZxOr5_xm`?(u-4c)rW%?W;Y-Q0# ztB;3A*hfWQ@k8tTENs5#x4LBYuP_q0pb~8$J;6aY)b3QU|Hj$jX;9eFWOUjwXe~Md zT9%k|c~DhXnHdl_$Ix=^@M{??s65Ek!!ytIv$@o(e1Nn zSt(=0cFyqrC*Y5I{2WT}8sD039Z*Rp@uywt5u~WJaX#H~T(;?+ow6GLwozfdaNso; zUO24|5Vd1kRwpJGqLYa>@l~PE+R(^b)de9@8(1Tn&;fj(DS@O??aMH)Xj94g$(y9z zjRBP3_Su6cN#b!~f2@6acr9_k)&&RCcZH=*Z5dqHgMA{{DMfu(pLQzX|6!g3l5smi zLUhdaJmM+P&cS=^*!as*h@Qr50)pNXMAywN)!YLj4s7+eM1<{3w1~4!3|LgUsWyW( zZJvsNWi6zmo5VK>`h(0vY#>2QyUc)fMSPLT8w>Z|FI&g1fJKJ062pxF-l8D;YqcfJ z^3MY{Q+N9hYNNn)dJDaI-hTL_oR|ls4@=2ISB^m0l6n&f*)jgUbn&dBnLX&P(td5k zKaY_^&f;G@$$x?(Io-%Rp&T+qACPrWOB)NcSg&M}!cwN33E1W?|seH7Q`~2`Uua@WCPjdX5MFOO;>l*7x zvu9UsGP>B)^~&6;a2gH;F=Ku?$@#U>Z37e;M(oa*N3zhl88>o;L-oiRW&XXhK=CdAX^H9DFg6w9nHr{n&&h59aLTAik0ImPmJ(j_O<`krWJ@)d;U1g$!2}PlK@>epM0bR78b;zBlFP&4@ z#gx{fz$3ewMnh$hw~ZKyFK~g|X_y^X_Z!cQf|&Ipq(~RDL3zA_8D*N4P`~jdcY8(N z+ldyx{~UtvGN~1u2YD@K!1@lg=sv-E{Yhm{Imu|A5ibR(j|j$;sl6=8h2NT3a0FZ_ zqlWb>mBbWt+MH!%haOqx)goP>#A5eQsm;X_vIypEkj(?yl9ci&n!B0SaBn!+VDt82 ziKx?i$%rRblFfskJ@^`?XfXP368U0>(@^^ue>Xy9Wnv8TGP@E9$t$S-;@MNrO0lW) zDVt<-$Tr+q*_&vTe)?giFtNZf9+W5f6h;|X%`5UxDKw50#Qq_1nGheH0I1nj( zW`o;l!!!t5-U9%enV7V2&_Zy_dGy8QKpsX*5Q{J?8K&>(hLt2wSMVE+rc;MfxC!7aI(BB2NH=1X(XM1tVv*piNF<`vfAi)wI53^ygD<%Bz;-{1j>#X?` zkcp}3sz!U^3}OqynL>t@@xTdd^gPRA-_Z9exZ!P+!&?uj4Y1)?lnL`J6l1u+`O~!N zmUW&TV9$CZt&1&pJ1Y`8fd4Iz3yoz7V(tg5gMT!XA)K`lO!|xP5JKSpLKU&b-j912 zbQ!U^piUfXFL#cz(;+ob?zt~UHdm#}*AFZBC>(|=#uy&eYghW*3LRUm(LvH54+BRI z15&SmYh|&)M<*_uxo@5G*vM&g1%+IRfp^!(D)=mOMcQOacmIO`ret%r6ab4k`}nJ(6y&Xuy}%Orb9<5HK=Rz zk-+yEoK}4K5OT8o39$(+nWw&xBA^dN7_C^UyihJo2N3@C*{V*E(|9KD%uL*#w?9 z$7}Zu*q@CZ2<;n7!2{HtI4>Nqay5{0A_!)Xn~15Kt9q`O+Bsjws#N7o16Z|H6L62E zg~04vH^mHhm)OWb(RGiU(R3Ld+Y~ux2ZBCiwU>wm^8@?^vYOve{ne!X$Jgtb9ey4q&I(D=inb8xGvWJw}|3Zw# zNY7I3xPcE9CDHV1%&`(-D1-3{|5k*fnWEhJQu6D)3yZ0KtqYr!7TVEVn+0fjd3ms=XJh~2wX+`c1k<1BKFiAR-e)Hv5k z%qx59wcQfhEtB2XS%B|THxsU0*ja*U_@VAoFup;Cplt{MUB*m?FIW}GLU1lcYGoQf z&=o&W`tb_ypxSXWu)8EGpN4Pm7FPkr957JI(p2()!pD%mK?Ak6n0njaCyi*>3ajXH zj!InV&opfr{6JGIJx=9$N3R`W3>3okWjsiDezPqk(fRJxcF`UcrTWe8cm~ zUG;O3$vvS)ka2@DlzUWbRA<8Daeeb-K$gzb0ToFkZwm3Ra4Z|5=G2s#IU|6EN7t=n zQ!M_7R2<-9+v}*;D8gc<8r%;Z(q;Hk>7D|3nq^^W;<55+S=5%x8JdgryKV|K zJyo)1N{)-f$l^P&{L?iQUb7wopbgN!$=Mg-k}uCtH=*j0(R{n67EjQ-Y)ov9?ws+t zzuX~33S33)80VWP8zKN24a*igkiqxWdeJ^eI{0z5Si}_sapnLZ6w}x>?nySDxHGN`)KPweUpX}1nynlmDf@}Q=hcwdxS9O$voya7;=C@J3l_&B`n zH$Q;JyHpTbddKVG)h%=4RjLT=1y{TfMriG~i$|M(h;{y!%&Iwg^owiTBu4uj`5hEu zj3U}l`hxyYz{I5E~<+;1#Qc z_+B0i{_Lw`|IjUO#3i}!!zEfHY@FD^cyx89>Lg{lb>4W_#E58I1>XJFKj80(GPThapfWOK2Mg9&KzKsw}?4?g6#%PNBazjAg)*d|TP^SvImgmerfM5FuOBUw?d zfFZ1MEEXFwGAGX73tq$gz{v6@PZ4z=u5{>Wa8GzV>*3T+{Pk?l@r|_+qse^`XSS@2 z7y)NNm=Ht{Elyk#Asx*K6I$zSpSN23xrqho?~FV-&__YlJ0W0M#$ zI})I+{cA&TMsElf!PSI=eZ{FlcOcVm-M!%oR|xLmfYG^IXZhKppcsagBYY_Y4s=c0{TJDVu`x3qnddsWX@WRTlSrmC zTFmN#PLSW<)o#6GIYd#(2uo(Aqpns-k4X@=mKgVA?kv)H0bE2Q2%GKc0H``4Nk~0v zC#-Gl?*^)zBNt8oHaG;s8V1-3g_t^@(gF-|R_TRkXVPv{2Xu3w;)i^_?Ra|3+px&( zqfC$Ryn4!Tv>pg*0`lDHw;Cf8YmIt;dn_j%3|2w1 zKz~=ZvVF;`Yv4+V85LjALvUI;tdlW16L1%L1{k2+N@Jgjzg@8R*$j@*D>MjY5uzOr z&J?cr1N{LC=VDGPKuEC$ZclJwtpiI9W0^7_0Q7*;oZgqWv)F%qM3@GlT&!sFxi*>fY=h;U<0Y(iL1c zHFWVz1$}}v)m_{@Z-tJQU0%|Op;U=_778Z+9ro`vT(-_FD3Gb?8@z?!8X9&fYBfFA z0cNgo^kOfk8oZ3+G`nX$;MmGVR!yOG2Zf|7!KavtM(VE52_Igdtb(o2X;peqLUk~k zbm!!c&)=6}n+b0%C34a|rR1av8>B8#nXBYe8MIH-)xR>W#9B@zDIp`ttbgs1{2uufa@)tjb1 zwB3;~E@uy2z~pp8^E}jgQd1v$F;0|-7~Msf zYP0X?gpC$Uxo2ljF*5ShLO&Jw5yqb!=A&*4HdB=cuV0*Xv2W}XyVQ<0)hpDCecgl2 zKdpNMFEC(~yB)-i{K<30{LS1+F*ALRK`h2BG1fDe3FFOnfyPNYi*d4xvU*gSX)sjn z>w!HP1#a_FiMRy)9!NEbHqiWR6{w}y*F*Mz$?{X*R0XfvpZ&=eG2^8UXcl6dg`Y@+ zSRGqSNx$YZ*zRNRklU@gbp}I~PnsDkzz^gFEN+6x8$$QbeYlnSW z$6E~!R)Z9^EFFNqK2{N-=lmXyy)?t0%Bzcn5$+tsv{d09pzcBPFpgBA_m(#B;d?X=(UM(`;2HHJ?du|CWxp7L8ottNHe5e$32&+}RIr z4|6z!YV3F49k#qT{Md<;+`9M;X#DA>dvoal>7S*ygi`K3a8oFmCjN736Jx1wD^yXj zqr@I_Eiw~jEk z2|t*=FyLb-t7mL&1RdnB!45I9%StrzZKy_Q?pzOiw7kF7h2(}LO(w&bKby|>J z``ylh7D0-$-b-lxph)B~X8Yl9W9cX$p-tS4b;!aFYa{iuJsMU#;)K+_;5PFY-tfx(8Pwog0Ut;>b&}2b-@c7Ikk5LW@U~8$DddUxb z;*_S#A03kj%RfLsx(wxUjCtV*FOZA_G_1#rte_l(^)x1Qqh;ko%B$GGcU0~r)8)w{ zxL@&7v$Xi!LKfvj?Z~K{x`vfj4z|D?HwX-FJxseS@;hbI!G8={FSoa;9nb<0roUfu zaByx|5mzwh>}%XwsWVf=kkYbI=X0;A$A7+#;dugW2czs4P{BWfbZAq!a+&ty9+*6k zn2A-#a10la9kQ&7w5m3Ebc1VnolS?J4TLHG>y^5_`?-Hj_l&9JW=&dtwjGq@t3m~3 zu27N7IHZ87LD}AR_Pq)iC}SDPU>FktKIaZ&&qL9N($G%%snP1)v|~7Riq1=;{O))n zMyT^2W?lYzy3)fxC%%Oqat2P{G+Z6>I$EO{!@g|h@6~!#KcX6c^6n;NSFcy|6l01m zFmb0vN-L$Da)`(d%ETXL*bH2xcZ1qzRKTZ;cGk?TnIwcH6aa;aFul1Ev!Nw&2p^QU zdghg5BO3U!WjLqXi;w1D%7QT@O(Qh;@!|Iqp&-%c9W=)uJ`(wHmE9P(1{Qz#DS@2U zX2vCVP1x#5U=mk*-9XxDPp<9Uw0#`~lO7@0C!h-3TnoY;Q3|@wi05ZgkiNQU?yOwa z&F&voHGVTT!;)9FwHH49=66Yxun;DZuU7XRDUg8iF2KPJe zs?j>+7OFr*b<;l)w*L%Nq`OO}a3+PuGy@Z*W=5W+2%pTEik^{ zSfsBW*NG~fF7POT%_H8r5f1(YTS%1jHRuVLP-ppXE`1m;z8|wrGhb;zS8u=SxT2;U z+gczJM0+?V#?n0<6EP;V!mHwh!!2;AOw;0Vxl&oYdHtw8AC%{X9#6p3os|N`r@9iK zBd4md8acFjg1RQ*KoI>e#}7UW6w4xj0{-cJwvKROG+efhN|=cfS*&^;Q>YxD20C2a z7C*!nDklEO=C6k)*EzyC2g{*oIX8yBs>`;Q-)#b`TV{2jA`JBCO#9MC~_0E0?lV$aA@CF=3?A37jHH3yMFh_vkK0 zIIILOYhY6Q_WIDX2cP=vP!3|Cc*Z`u)VpxLt{3!DH?xaHkFG5tE}+2aR#Hy^1RUqW z1a>aarSC)6c4|J!cU$<{1eNehMQsU}oh9IUafxv6Q$ZzUbfrT6E_??rhGHOX5KpID zVOe={;yeSMpZ+Pkf4vmU?WPEgO^1;)0mkxYLX@+E&^DO+nEwdG^`CSX1j5~vs^HGh z{ge2f!-YOx&Xp;V0)_VKwu<^}Y$J}olDIW@s=b2fC)Z3zKCJCe|CtE2gsa&s5;ON> zlzhMSq6^hjr0H?Be6iQ?*BuKmYoZasU}TXJt_~$H_0kBQi&cETa(Q=nmbapR8(im=xe!J3^S}OZ@pDn^b^u`r7QYN(~3)^*iR4+ z|CLV)Y6(jt>ywBkxCBt`JE4^LZiPvlw(fa{IG~~e2PcabVGFv*t^0;05xI9r6VI=j z++9ypS`c#~$b*;NKl5FYaDM$AW#nnS7i4KujP-UU(igVlaB!=zRfI!*$oJD%E&HPH z0&uKZNP#y^8o$*Hx|+KoCI`pm?+YWl3eikFH0HoUiN2TjmAYSlXpg>F=I=tFDqTs? z!DRq@m>DrHqT*l$SjGRAb3qbATyEO;y_T$SuUjAN)rbJQq%SVHPEnm_6&8uWVuL6A zK_k)qnZ8^S0trEOxA1RAi!z$=Z9`9p7(2JCr@FpXYV@z}^0vR5<07)=1Fu9XEPOJ1-@1SbOa|*=L>R6-nLvpbvm~H2t%chp6r?c9C$#w%fp|nE= zr67vqM*6o3wO`DAP8?$@()y!zmL4+7qG}t-c`SsN31rfikf5IPjnB1*X%3qUZ5|lt zsrt+Yv-kLF$hP06v}&XLByF@^AtHHs!%~>i_R<~?Ww=+>ApL(m3-P?T)OyKT#r{fz zaE8rrQwVWfGykk9w=g!jA|MYq?4p(7^mB^Y_FGV7ErT-01_p!!7O z@quh8jt5HM_5-D1s;a$yk`TOku?wUVCu=6u5@fCt?mF+>m-7bkhs=}7gNeZLs>Be1 zQ1U&xGNvZv4^y!Q%|$N0sqOnGEUzu3@_LA)A^j#2 z26=+4=Dsg~9{2%oWh`I~&YVRk|5Ou(gi?hTP zlQV6iF!A+19@BgQIjIQ^k!YE!Sz14|Bs; zp%}pM!E`_{cl>1;N2k%e2HKA)*tL~OllKXaO9VmwkGsFJb zLP(oNNC@A={vt5~!v|hH`nD@@m{w1&k-kMJd^%Qi!3SXVs!V77M*E7(e+-b8r}h)= z!8u?D2~Z$e1abu@Y3pnGTYi~qUYC!}U0Ph0t81b>^-W@1R!5^Dyxb~TLt$7?zLbvd znL@K#M!uF%11ep z0>9r{U+gR5=ZhrV(Szti3zh)H7#;$+D0iff(s26z(>Xl~%pY@X1bErzDCVU|3fnSa z&-_sct4xOai`H~k1HtHJ7w=ogUjGY~B=+bOe?a(O6;%W?rTs#x0|un{G+VOPzGW8H zoB8(^jLeSjRQm`XK(YP7fAefbxoMJHL<&#U*2S}wB*a&IHv))&T7+H2Wf{Kb57_S6 zZl{>R8LR4bRi})4nlh@W91busL06x{Ytkh>b2lJBsKacCNMGNP#*W*LZDWtQm;B}_ zAe^d6c^0yWu+UWvhIUk9a{`MV<1vNG&#)f%htefuOjjB^jX48gO<27w+6s}Z>PS`@ z5DlMadMr48d^c#}Pd`lDqTZOOR3i>FK~Zj5;Mwq|(=3mOWl^TJ5ZIFjFGs;E;N}EC z)A{M?tpI5yf!;#PB%lu*{!Tk7_2p)WrGg8K%?}0*5Kru+u5Z`ezl)tlgwRV65qqhW z_o_pO_wCEZoowhfgTlF;O>B_bgV1XHd~}0cz-24Px?kjPTS#d+_k483DJpE)t}Lln zBIVXN&^RGBLM3-@HFkbX!N6DM=AC9Q=hGjkuhmXZ_#(=g6*n5etJc&nJW09jNm|~n zC`b}Ib{gW+TWc$mynlm~tB#!3jbt*&6}_=o^QzUsxh`5#0|# z4~?*IG;)sShAi_S+Sd8|qWqcVRdO80jHC=7taX zI>lR7O55i4T*oqoz=Hq`_<3AoJu3`N7IZwP^Pf^getVEP@RYXI@Vy$SAn8pJ4M5{0 zs$|oc%}V7G<-gcMd(W`Wyk-Y6i>IKgoC+NLIE+98deD zM-+N|vLP$tNk6BOPEOOQPM4ika|y7${4eitZ(a{t<-&PygT4bLV_kfzp>Gdx^1nIf zlZ}#o_{_h1to0z@8barMjNmEcAqjTM$v1bkQ5}Rk(b|r;0q?k@xR7%Tp3-R5dM<-y zp8~csx5Xa0uBTHRnE(Ezx%cYPd4?tzTU#v>@EIfk-q}PfckoE>v;n&ChhaN!vXqqd z+S?DnX-m(Rs=&QoApXqHirn1{`42KXF65@7Qk8Eq9FOH5c6S5;*yID}P~dVk{R51A zh6NffT^!)ylcrdK>+vU*f_0S8CP|aASD<_x_ z8`D&nPC@}B<7jc@P9v25b9Nj7v9nDCB2IJTGET(G2iw&Kl$4fQC!!N|k7PO<_ z_Y;jnwtfnkuE|H}pw?8Odi*7v|5^xcRC@c;{I!1lllu?C!=sM{hss#MAT#+i4U>BodrN zT1>?wq)G7JboWO0V8bi71CCNxI|0W4*V?t zIF|C+fbha0n@6NYuR01(2S)>R-`0(LnKz9fDYBk=L%HYXM( zijOS5cNjJXTgiGq*RLTV%j@wVi;J)IN@duEH~k*+Rg{tYf3i3Zn^|d=@U(253zW z%QA2Jna*vD*lk@9RdHSfG=5r3DXSCUT#=J^c&pc}*q7no^SI(}LsZ79_gmOh!pDBo zLZo!Uhg;-1lr_*)5Iu@TUcDolrLy(CE-zh+eZ6!+CNmV(F0@L+^(E!~?l4iNIKWAi z24elat|ke_c}TDKgjv1w_XYjXzPLCg5E~_T{z|%Z^p?GSGm9s5XC0g++pm#SArTzx z;5NJH1I`-Jyt_P@2l0{w_-lsu84vp)?I}~U)9|0Xm=|T%8lE1YuWn;(rqF{&NGFEh z_T5-UjM1(qZ)Hq)b{PXtOw9o( zbhIDrFcMJ(p8-048Mnb)N|#97TnQLJeLn8~4LwOh({yDEf_@K2LTp1Fh5qvBp;YhwDm+-9qme!>z>ra| zT}tw?_p;h?O|^0e_I1gDON(~-o($%6gVaV1n2f(Txhu7yNNF6KSY^>u(hjhJLr2)q z341O;B|VV)!;zFf`3Q;z9W9e?wP5^NGEwq_o`~k}tkm`2*1?iO5)fWc`!?f?Vuld*$-Ggfq%5L%W8cFw){vMYbJefd4BJ*h z+}AY>%%MM3To}mhvGD5F+zYmB-J6NjdaL6ae4wv%RogJl!X<-ehhd#xFwE#ww zh1=<;kgx>UZkc)Q%^(jRC0?&F#Z>idmlMP58KXjSNpwEOgiS`x6J8Q?neR!wK=J17 zL~b8lu%c>HE78KLIqY^}vWt3DR+E_VVTo%pizJ=EJThf%v3npVc!q&e4AKfBHD+z~ z$$p^2^MJzCmGo&i(|9zG84NUna(FDNXc6z%ECZ=GX619IKBHtxhsW9ybM5?J-jT10 zeu%K@2{#)O-FS;y#J-^+$pu+bZzwtTL0b*Pp(V3 z(o@|YIz0|wS*7Ss705bpejBo5%fK4kAcIlFdKk3U%>T_?arJ;A`&KVz!nx*#sAZBb zdPs|)C)@QIx8@C|v96oMv9jDRY~tDrvCO{)O^>P~3Kte1&NoRoZ;0tVG>uUC^Y4QG zUd$T{komlirraT|5*Y9+ka2|oV3Pie61$;VEd4_)Q+tJjV!WR?iBUw20n_8n+WLf# zqvoKp%6tGcW*G?t7?N;{B<5FIiNK6Z64E$ons-UI>R5IR$uv4$o?KJ=8guPYy9l6` z+7JHB0a9(IaHs*LVQuj$6Nm=*aFh(>Ub#T=5V$o^(A`7A+zBOSs+!xmov1J+z_&$` z2>ot))SNwk_K+YEPH$#~H;0vGIb0S9r4Ho*uNJD#9pn7X0dy{aK|r+;6Cz4v8^|9W z&-^*l5Y06eF}|4{HcH&DCVw!_!4E>_PnLgX-tL4mz^y8+nPREC1m8vS%@4H*Jr&IO zv(*Ys9NSO56I01fIyZ=51pXs)Sy&+hmeK<|qpYdl#MHqNu z+gGmI2+q0TN*AGh3%@Ov0HO?I;=L_g?IzvI-CctUu}lZL?(G5YH`*UNcDhS4n%>)J zhv?p;6ug&lTldBTBAHVl^ zpgd(p>3l4%+bc1^(=Qb(VKDdyObR;_hFYb?5`&cHGH0Cb!$yjZ;Ns3}D7JZn3%FE= z%_Pj`Py%IJ-i(`?^#ALM-xW6@7!~$-vSKd_L@?eI7Rl9G2nR6zrF{&Shkv_3O>)T9 z!>3xX1kgod=fCQnPaOuV97=?!u-KVpVz%178*9A8a^0v+M2BD5X_BC`6Q%D>f**uD ztzm-z8V&~0Jrq8LZ)8WZiNbJ(Lb#YA4n))GO@VC6x|wTU9iPxIoqbniT||!iJxZy1F8){E7s(yM0C)r^@f~wxf!@V zZ)ZsQ&zb-HfvTx#;j!SHh#Oi`%;%Ssk#q}@y^D<0#9vk$Lj4JZH#p@;Pe`g@%QvJR z)C&6hslE+1js?(!rk-7E7IhC2p<<2$t%dPCDB7#V&W85>z*2snzGY6LNr`>D4pVbP z^ouIrl)XhEU9~K($bj(T1GFZPYz0^o=fwOnBYC?Z$UAt;rN-9(dK#2o86N3@AzY{= zu)!UK^B`A{ArlUIfsuk#%xMO8+9I)71PeXHJ+Ru`$#nhiZ4CNrVWaV{OoM{mb!ZC|pKnf%jei@M zi8=$fN2CBLF`bV6`7$ScP2wnz8)D!rR4#l%GemU(j;ZxYGWkf#JGYkG#_X0ld)vXv z+v!(e2*J+`#Wr`kGk5x`0s2*SG&KYL3UD?K7GGD(5wu43tf`PGPr~}iUg~DIeh5$v zRx=GTN`7Lfa5M~xVLZ}4hkW?Tn;IX}6we5p#JORQ!k=9KS&o6a_PhTKB0?Gt!$n5d zDv&7v;n0gc@j|+T{=2=qnUW30A%Np9rU&`RC_Q>z%`tJ8^=_2;pGNDqpH;k~YRNYG z9wDi#cza=lw5a0a#Y{zTBNb)#e~zMncwf6<^}w9@g9JOcIOR5LzS7JWK>$VB+*%Q+p&$q1=kOa zsVrqGVlN>ut257YXZgeof#dpsa9b2d<`mec`Q$jl0tBGcw}vi~&vR0~?$(sqfgAf@ zojY@i$;+)DRPfeUfl>Pv(Sb7IC|s!=G%;@=iY}ejY)^uwS})(e!TvbaROGHI-h6k( zAzf%84>wWdcx5`W$Vihd_0IO@jMU>#GwPLYOKXhMK|RHY4{>GZm5C49qN+K-ggz@c zbCdLjB>?2?+kPoeSZ=i+L-U0buiaiB_S^~xp$w&d+s971f+7(jo9_{uO=RZ1Hl=IAxay8P&>={3yxG*XF{pKN)`}dJwh`^;%N4p+sW(#3OWr#Vm zA|i@I_p+uo$8TDa!6Z2yy1;32Ok|ipPQe4>!`^*AET5Kl^+-Y*!b&;i7hv0Iq&6#b zM0FWDX`d6HJW1T;lo=*&`VUk)?yJJE5wN@!Ltf#J`l z-OEt^As$=RXb_<%=TE0=wQLk)@7Pj87cS*?WNj)}c0aloq`V4*A?;0U;j~1(#nw}n zy|t#i0*4CikTO`UD)al+wpyTw;nj{Ea!qUaF0aZDg^@W(SUxjMLHk~+X$*`z?LHfs zQZ|_Hkk`w5@%X-sREAY#0gCj}1-@0xxsvO}9_@jUmfaIqW2?n%Jo?YD0c6E_H%;qr z`H1{pP*kmo7G*6OE~`XuSXW|b0!(LiJE&DKvFKK`)ytyJtk%F-ew%1MF^byq^fC+o}|OVbbd8wMw;dC(On;GH~|IYV`sw!+J8Sl3!BrV2VIQ;`z^iBp;RrU zZmaup<%tWu`fF7)zt3$&N%L%3(Om&J)YT8evb*6C?O27nms|k9Fr&1lD2qzZ$=GxA zbv@lSx7X+v`>I>np6_=!dzNj@((3R%lX=y6?~EbATykg{IDg`_`*YED>Q&6qTe~$~ z%Y-}H`_YBpUBl4kdYv))TZj8Z32F6S;x7cKWYThfNX}J^?^|}Qzi`|37%9R=3xEo$ zv&Ae;oz?e8_dA5BZRV{@&H}+fmyAm>zSn8W?HkNPa-K$Cr-WoiUnXcdOf_O`)NlsU z-xR(2s@||V!kuS*5^ssrq?AD#+-xh}DLqjd#}=Hs)Qb|^LkbQ&B8Z&de}GYqVM%2U z=^-PXLYLSpVeUP{vT?XyF{IhF8gR?!I|s&gsEkl4!vaVS6i-d2LT;I&Xhg|0S@gjV z#i9c>Bb^V-{(FDq>F~I(i)OSJ(EgDoxc4&2ayhn)Nvj2bC3^70mP;}#4~q40F(D@{ zBypnZc-_Ffx1wbX^bes!^xv1c(&I4{AmkTbCO06W5rU`zyOJ4OIFpEIqr5OrZ90v(|#RWZ^bix5X^rm#=smbH?Y| zvnTF_LHt?2F-dZO^@er>><-OGosYuONh`%H#zY1xifcfwG@@4v(JZJ$>XnxDK}W?w zE~5kDiD?ZQh;&0WPSB;qq(we624Rh)UKc*FaFJlfT69AzSL}y8#yxd(bVT`A5w`Qp zODkrTz{0dnp85Y`^cewsj2*L949;iNTfHNQOMvPG$x@UF+Z(z0*5Sh}U6_CZD?73} z>LikSn{JppOs)pbSH8JE2?PqLu-DB2*Ja;0L}!Vx04K)1Ze`tqzT#|bA4+{wv}-B2 z&01g1tOxOVwS!>rh50b3=D%ppz~9nj&^qZbCsxzri{J1YpvJ6oDydue;$_ZwyVsV_ z5}@AC1+1WqW~1nx*%SAh5lc7Io0KYdMu6wGOk-The`Dd*kgWsW7H$%BPc$AW1=bP( znFAd#i8FR9LxIQFB5gGfBTKdXln*cKOXIgC0;NvX?||F&D2jInfcgBCaEu#+{w1_o z0-Uc!sP)+gsZ!RSShk!y+~9U2M20vQ?X2{yf8< z63H;8v`?>DfKy5f$l1}Fk2(N&W9C8#-x>IMUPeTvBBqmK->z!Tr}%)EuzN`e`QQJ~PY8Yx+6vTTl^g6as59eP=B=@k4toIsEvtTv z*d_v4J{BW%m*Tiz`H*1~7x8WUsP*Fe)ZSy6Sht}J9n``%JBcCaFw(ejbJduLmDHMQ zJ<%=hhdJm#3{Ox^JH=5zIbwh88kgKm#tDQdF`#o5zj7^=_@D(x0-P4sX;*k1(l8A$ zm_Wb@*8c+Az9#7o~+7Mch0pDueHfsLPSo-2sCDirZ}8Z#uw_BB!pK%5W5ha zbvUO=yl#U^t1H8lv^^zX!MDnbTL9p`sbB{>Ep3KosBXGO^%T<2e2T5=8e+EbKV5!J z8d8lOd zOyJl!tLG*^rk#s zS(eN%&JRWFK1-o=Lwx(g2tt?T*$6!_c4X1;yD*Ve8(LdrODiUMfvWH};x>QQee!V5 zkk_jwJdm7;Xv{|sg=A$GYdkF&39RFi^p2lEIpDeiw zMb$#}T#>fSw6p$`Hbfp+oz)#Wt8O5m-uR6Gs#*`K=ymDOyPLD6V(*JK4@-tLz)7St za%s7is$eAKH@kriIKOu_w$(*?Vk~`l+0{A9ir28nr5qTvVtjTj^bZf~EmPwSCGDHk zO+Y$rV-bJ*m$2u5o`@&gjYFxTQa1a#jO|6X(R$p$<|~CMF~mA$D=@|eQk3;V-=k%B zdiV!xtxZoOMWH@jnFDJ{BA7vGv#G>&nO#(W(E+)+e7uuY(#oC;P^N$dm#Gx+9+DMY zFT@AI%-^2CJe3HUzZA6um`S5%r$OF8w)a)|ZGY-6(F(1)y?BO`j>ha7P zKm|QmrW%RL_KwWA5bqfv6@i8XO^j?UL#L?D2)j{5tv|GJ>L}UK0mCC(k7%JEW1r5h z_5|PM`@G@|tfmW2GNxKv_Hgy5gjM(;9}nl-)=#InRq+2aovx?vAg= zqzw_K=p=tk?NqF}KiVXm;}a60JC;iyjifQB=ovr1DJ(GgrBTv`pFu1!#@wCv?yfl% zFh*J=9UuB8A%WK3@Eh&$7+P6s23o|DH~A9a-e`5Q%Jsz&;lPd$J#N-3xa0rc+Ln$m ztt7cS)Q_9cw|0u~>3?zH3`|@u0(?c*i-$sET4t(vk^fK260a?owSLXIBGTYlb&i$L z=l-j1iu`M9p0vd#sNl(H_Tq|*-tPdHkx3=vlpoo6Gb)`^NPxfW*@?!AhLt_ z6KSW`E@6det%?nzJLq%>HP`(cFcF1WMGPM?{jNe(F@hsm|BBS*NJ9e?$I92heZ6l~X?hCU; z7g1n>bu7O0h1sS#sQHG;C;Byx>y5PSi&);Fzu$?d$mxJ`iCwVrmqUV49Wx5iT$r{#gJb zuc=`R-6{daV;#YxvQF$TX^UD9jUv@KVjU`|V{>&D8=JKI!h<4Mom@Sj78>YHm@7U! zZo#a<7i2N?vfy0~+YmyeB(leIp3G{SQ`@nrD=S*0(3EhCHf&{kxFHt6m~KdShzK)a zMP+U5cMwQ1VC0aCRg70ZYISwcLaSAoX*F%z*^9qmG`Tp)zgT6b;ynlVjDo|9qb~$+Zg;(8jYpsg+Hka`bYwgH@t(&7&OeaLDB@Auk@cl6euMN%W7f6y1fLwzQPb zVIy_+t_XF4HO&FmKuyyu{U)5YN$@~reu2}^_qkq0ojW{A)@>_bi-dPi(qoe@%DzjWqooWI>%Ua3Wv62+6;(**^W@RZ`1$v zi{?q4j&~X?qw&F~e*!sy>4CbL-h>o(J zn+s>MDm7Se=Cs1P#EaM3Kt1!{f1GrVkiP&_g@i#+jyAW0*AT^pi-fL4?#Ixkdl)7E zMarB^Q-pZoZO0qP^(P4=i@FHX^c+#U9-`qefi@oCTm0ZNI-JhOR;6N8!PG}zV2Y^a zy&vkBbbUxsEXHIyo^)SC%a)7W(ogd4NI%n|I*&{SPLP@h2&#GyI!*vdPdPqv+E->8OtLpKDYnQBgzyZI^JfaI0uno($CQl zJTP)UUIjWSWt{IK8cFA*4`AXa5}Jf+p6G}jBD-h9*R)CCfTSl2%PpcoEjX}DE3hnt zme58Ch`_pjvtuW;vB1s8g6e;l#WTHuae4bOW+rt8;aujnlxhC`kVajwMHN(D1$F*e z7{`3XCBZ&fBA0hPs{&0}dT932z+7>>i-L>>V+Vsr zfdX&s#sVek_1^xh?4h=t940^YwI){0Zu=Y?Rz>Zk-zH04CQBGYd0z%U>cnjoZK!9z zV0lnO+HPVZ5N$mhM&?BF^GID4v{9jRk8aPG{r1Dm!LB$fUsqs)frr^ixWRk``M zQ8pykltYN_TBF@*UogtCQ5*R{>zwn`k4T&d6)k_P*Ywa)^EelDt2cl>lU-m% zz-M+J_uu6NI+(-ByOLJ+GYgfK>=J8idtHY2Y>zXh0eR#FmI3rnT1%MXK{!lv90_e#IaO}PY^@@zitHKYU;43qmkQr> zg3L=kbhM}tW7m+y_m+bTCVQ8(;I4+TpzI}56!|e+Ae)A8tetF3Ec_C$_|@+>B$J@P zicJQ&coi{Pp$Aj7eo*g(Vh6?&-Mg9{4s<-Udm-7T2}J%1FZKW=prFR7l+ybO^ zQS$LZws#0~`^rVXQsHeN;0_#ZYE1-RpACae0gi)GQ9_m*UcXNl6ToKq6L_YmZ_Foy zjg<3FMG>vWbFjlhaR@4=9Z8huUku~sfFH<|d&(p%gOy!$7N?Eun;H#h9lC(T)c2w6 zdbkPBE*FL6BAE1}hDU!=0?`*LcRViF?4m3wl7p(UQ?odv7*@bb=4Djxg(OG&anKXj znSOQys-z-AUr}MgM3cKtpy?D-$yC(LN<>lNQBr$cBJHV4Byx|oScA=wfis;sjBXPl zB`Vj$&*3wwFFruKfV0+)X9mt6LV%(ho&<$ggeWqlev$6-o31|u0f(?_Vv1%=KR9T6 zHH8L`>N^2MW6gy9J6@sf{o5ht4WpPAMJkZk(P`b9vlPY35asP8N90nba)CfBse$w5 z1jm{&Q&{r_MF_<4{{RgxVIN%{c*v7DGob+Kh`Y>{ywF+q-1&quW4Iju(1*G+0GT_U zv0IKO&AIf`J);)?>b{UdcbwzWq=T{O)2Sr3UsuEZm@3W{?q_D|&Ne z{=642w}u$iB0murJCxlYqtJINz$N4_2~To$f*gyI*^sl*vB#9-%lko@FjP->>huor zVtOw`pO|dTC9k?k5xA@TbH!P_H7VG%0p{(#*8&kTT{XO6Gs0x78lxtP5&fUUgbkb# z&lzz9JL&8*^q&S`zM_l+&sl@YeCx8)6*DAa?@5pXG}Awym1yN|-VfU4uBbhIH(mr2 zh32Lv;1FPeQL`YvcExbkWU^f^6bT#BWc+A)e+>=La?sOwyJ~d_Fh=M(H|H(GxqQ+9Fq6gSoj)g;ac9rAyRd=@p#(b|Qa4%*C0sgrM#IWm7IAbyr zC5&Q9l(o#zpzJz8^oQ zFS9%BU#CstFVUYTp>RV5Q`sQlV-A@e0XtYgrR(<(-J{1Em<%g**PrJI-MqqZ|Kjr| zis|uDFp3|5@AWyJo?uCXBq#LNLzBeTVy1JAvH@F~&LFu-dUhZ{IBQ}!K$isdS&k>B zpgDD5{L>}R?rrvjJm{;(0*Z$`&RcN#X-Z{Tv_AAZZ|1-}3>?_Im)_(Zp>D`&H^nv6 zbrx7>)7L0+xTgPLWX46pa2q-y4`6a0FLNKf4Q4BpaRf*C*g64jS)bUeuEhR(3iQ(r zI4++~g?E_6yDk z*mOVfGcmvfW^&Ih*UzVA`isO>5yV~TZ&oOY3d2kw(+daH^b@k{R!?n`QV0*%rQhqz z?g)RD>{zxw=(SK5@=)q#{p+x+Ok<}RLmR&r@b&nd)kX9&o#MYXK@^>7@FW5OEant( zR1{y^4&eR5D(TgPd=n)f2}V>Hmm(PtO>>XtmzArO+h?7X%){i{m*|i9bDTZ<;;t*x zEp_?Fc1K;7{<*7j9RN!}w7>f|3v+f3zM@?b2vI#(dr(K_h)*z6ykv_BlyY+4&)}GD zc!Ix$WBz~?ucR67z>_=Su~{F3DpsgamvZXq zss&pm@Bh6Lh0HyDU6^c%CWi0auFb##fYwge1mgEv3R()(Y_Q!ZLptMDZAF*yX*QWDl#cOGSZ@Y`MIZ@c# zh$tV`ofu^|zff9~$T`}4ia=(QrT;Y2fT2ez3!XgCoe_yrMaE-v^DYW}g?0LEv2QkX zcjowe>0Z%0OwdAZv}4Ids*~>~vYFxv+s{D|IM#)%%?-MjSMI?&%rRz$BlXqt-UKv{liGk)@wBn@nnr%f@1PF0$7m zU%#UtEmFn!*X5ohFb@>;xz2t14Sz)7Q7zp%AF>7Qo;!PLU(=NT5d7F;?V_r{L^H5} znD(38hOM-Fs6hL-Cf@pL!lx~mIs_K3jAs6rMtk;lEFz5PtLUYnlpCD7@Rd7wugH@ge8`Ts`_9ggP zPEfeIGx37^yRPuDVxeXLNu-`%3l@IZQZDGcVg#f=fRuTX;B-ckqlLzG(iaQ9dW?3SUxm7RLmRDA#$zdV^!)3~7^i)}Yj>@?1LJE~L9iBbZe5=)Y2A>L1W028L8lRAf-i$6CMmy2el9UFwHWFO@A_ymAe0*cG# zmWOdTVZW=H^)Z;Tt!}+uV&A{0(gb|XgSIO+t;=v?DDm+@ar8Xo!cWz7IVvdph#+#P zNm{z1yC2L2*bc1ZC=L?rS|uaCUEUz4NS{N?y<8JN{~W-1;z-dlMaj?w^Lk;qOUeBE zxB{>cK}|4DPR@ID_z<~Ba@nEN^`p>!7!8tbCBjg@13*cFlnlEqwPX5O!m05iY0(r! zSGI_<-Hi)b6`ztWmPGJKa{^sR0+&Ra-FQk;lF7EEF`%2t3d{72&>m?0bsq2bASz(< z*}_Vr5s1=PG?6JFy7;}KP^VRC17ksBD0v@C9$27u(sov-h!Tk)`?YuvV2tKPYnI|4 zUiF@*OSerxh2&>lrRaXdg+d0v@C;s2m(EKtrFBY3$!nQaay(gLPx|8r;?1yg6#|~T zJ)iHAL&#SHMxAAub*D%mj7#AK8U=Y}5MMN*OsDXmtB1Gaq+)UvuugFSzfL}+K@Z}&@+I3s3^zB)*}5fT_?qrz>@(j5uBHEv{bymC6d|KDzTh9jIv!GdG4^Q zbf!W3BaJqZ*b)(Cz|`WiG9vD7z!3@@ZNYiB8zvLij(6KAn~eZ$W39`nKtTF!LCt_;*xqqz+PX?$+Y!W=84pG3o+Lfh(c2F4%g__Y4$b6k!j|E- z<|{V-2~e{$G_?+{OB>(KU6eJJh^anR_D+)2&_lsm3%z1y@)~8S7@LM4-e5V7^L0F| z)0}7J0oM(Ow#EF`EC?Io6&y~BgCaMEpR*In+c!CO#z|a1_mB6+Fhr29jFZ+z9Ezi*%F)7D;WPvAq zB*C_EoBx%`rJr-BF?s!Lp1}xJ7L* zEk{ne59Os+<#vWeiT@Ag!ERfK;eSgw10t%|wZG9=?P>O>;SOySq*HetjUd4kv!)9> zW;l*j%*^U}oGmV-qb-t!NY?L&g+x1};+TI0Hvn&5LJr0%8$@L?VS%Qzq?emvo)&dc_*4YiUR zv*>l7cA%9+K2-dNy3)S5%C9aHg6E--cR4o<{i=Mcr9q~2VsvCow4{NoTf51?apAyo z1`FKcX_kGA(OG|F=T>q&u=iU?`59PV^ssB*&+|=k8K2ua*miQFahGa?2z|8(xs3ylECyY;-Vbl8Ru?$y zridZN8$0BZ%Y@F84(T*xh&M~qD%3Y+>}*}hDF(W2r@M=M-~IVNAHVgDFgfE++|bdZ zKrWN4)(4WEXH8Ks-82Q`Q2am#(KI8emfe4Vx8M?93Lh#}_WKlbnZk_F;8e3+zqhx> zJeO>uZCL`1b)6pMrz=q0gl|qd7%4;`kgs^fyxRc;^yPvbfwL=||Ep-|%|SmSD%Jp} z5u6plR5uch?@P>Uxp=Pht$am%Lp&J?SCv;h9Fa~NO}9(99WoppuL>tYDK zFG#q<^L}EBiN3LrV33yoeI;#jC%9+r5|zPrHPPl$oeaOuCOjrdrX=#xlqd>voBl)+ z3C-)@V2IdQc*E%LkMzA)#!U~bEkIH){DR@Te;Ahgd1Zp(o8CJWk@Cd?bj$*)7Xls+Pp{yU`8SY6P%bu; z7&?Y9qdr6yPp1y@t`yz4oTZ?R+sTwpRS2H?n#=8I^EsP$C!~g@NRle4{&nI#-h67L@+{7 zVa?KXqEkcQIS7%cOp>_ReGnk$b1=4jP6pW5{*M*x0{w1{yNR(*H7dOahag%OPYbyi zEcA`M#-Z3Z4}PMpb3vv3TS0hyF@|#%tZc~hGqW!(gI*k+cblC7%8W{yI-v!hP{tG) zKPB-#rNEUFI{=J-hiYSU2TbkK(H-`mw)JW?;Gf!o;y!gKTsdk3;OkIIRgbc4|L_>4 zP#QCbb@&ZCB!LG?aN8mh*wQo&e5-oIxt0wD`OQJP)MgkK2DWE977EEp5dUI}L4a)u z9$)L0t%mJVrm6B@4fu$?SSqRdMHb8dipj5{#&@}JKCXV}8dmP!?!2BYTI@f7bXG7r zr#hkkV3%Z1N(bMI$6(OI;m8j5!RL) zz~48K5axlC4#g`EFReYU!#m*du>rtsd%XsL>3^`3+W<&-rm*ONPR_gb?3Bae2j$mc>(il1K+FsmIvXHCa|eXGE~>8)tr}W7PMao9?&X6P;XNc%5A$EFAtVK!Zz@~TxUvEqAmRILyoGaD!2>lfq zbVJ@jw#w=i^c{yL0nqs2A*yu$5ekFgUwO7{YLIH?ihO&n&x0>`&2>N6aky8FraA$Z zEg@KV6&d(fJjzCzuIM{bF(C(X?;^=*Hq6o;S^GS={c>c*w2Co$q|y zmv0FjD5dHfTzh;2Ao5N2Cqik1fX_W`x!3<>S@}7vfgif7@3;p+gGb5hKrlQCJ|sqQ+00>DU?FAwQVy&sFK5=Cv{rMzNmn2^_DaPPGm6GUL~!NC&ny zbu`qoGpil+3Uh23IeY|sCaKxxdWa#t?KBE75-%gPH0&DtGn<5uP9Ciiz!Q@dpe6Hw zP|c&6OXCwCp2x_9=hZSEsS{+F{%yyx0&7SqReJdWc>JvUPzT|5KQ(4BwlRAQ-@N8$WiW z*6(?U11j3WrKzgUUfdh|P5irGj(^tFJm6nUR&eHCFKS*{omi?f6lyfX5_BYbnp9sL z4Lxa8(Ovv)8IKde2>h9!N5?t+;9c3&nJA6kAl}rbAZhW;h&h&GN~_Cr4wQ8>p+`*Z z_hEyXVu<`Z@V~^H;S@M%!W7Ws>|T)n1e2unQTd2jwL7YPnit0pRF0o64NA<{GK}d+ zi>S`eP#Dm1B~nGPM5+8Els++^X1)I;$v|WAq@P$SD>qx`i`UaVNE?b}jj^LnPMMk3~|kjd!FJ zeTT<$(EDzgR&UUyUUkaxIdTsl)>^H>%QW+2SuVE?EG)~Q-C-Lex zstted9#=b4w$ibkk9iH!V&4@*d?ftxje4WI5%3($NQ}1Ex0dMb9n0K>^Iu37wdz6w z%r4IMkIkyKVu~pmYp~Ut$f+Hv^z|T=-@I1kM0;w+60*;0F66*0vmvNY@Lc)K zN~>30_)yqNp)O_mrl|49FL(9S(cc>XUe4Pg3~$8kVt>)QJ}0DUIZpoOIdvm&+qrs% z5k+SZfM{p2;!6D2N}0vKIk;cJ%j2}WY~qy*!4Q`yc{2E46R*ZmVH2vD0PCE)ebqZ8 zAEZC@h-QDht^D8g4<(QHr_T$K%uwbOy25)C4U9mzUx&*2*HNBc9``qR)feB1ICh}` zU8u^@LwiV&@Dci^yoMG7Lo>FQdygn3L`v7JG+Jvur2?^&imZbyuHd7uv&nz7dPt4- z?fx?vWn;nL;~e{aX(*WDOY~jx^7!D>1WU=jX1zQB!$N;0iZjM-`fnsEp==Deq8mqN zM{UqnlVJ{CxK|+zci9xMcdP;Ep&dvmHDZiYt>S`#&7C7q`mJ-K90ujT)|utLbI-HW z`Z))?SMy`unMzwO7=~+Yb@_0DN1d`m(3QepzpC0t0!W;rrgb)FgN4&j2iFvoa=pJO z5}o2S=>ubAH~Swd^9@zheBuz=_FR}s^sMU!cS@wf1?;`k-JCqf-7hdc&F5l>>f+Gn z1d}RCI6GbeD0yz|b4Jg1UDIM&7{}5#vgB&>4Xbsc99ZYAEPnUhRd3g; zN})OOxoNuZdC5WlS&a1T%cRHz+to0|g-ex%i65QhL$3+)M;zr3@fie+k@Hd4>r%4(+Y*z4pxj zWr&mo@C;m?0B-wxb*)7xDCzg}nW6EM(=)>p7tT9WxJ7Q_D3q@>tYfcoW;E=x3f7k5)42LA6I(`W8(?2`=(ZhYD%5d&QaPVLF)CWyYYN%Om749OK(nnF zACk6M?XiEU;@%jEpFwnbIP6^H9bt`lipo`cJ^5UO^tQCXz zTF6L|vl>t|0f-mgr+(}qRmXL<1&FEzqK1iTR+1>(&?X;?lK5_lw_z}RSDqr4@+EE| z1L@C{b*MGd;u{@hVb_tjP^Bx1G+*WU?=Uh!pUpWTjxYUX-oWWqfXuJu7|0s$*+>K1GOqKMO5g!&8*02+^l-m#y5ZAg5Q6MjODq&RN6BHbL|HIkkUZ*NgtLR*HeE?lu*{l zqK6fee%cs+UA88Jg}bwn;9b~u7>l({EL;1(TsH*lT)%RfC(P$Lax+gLj93F zpILfdU$L%F1Z+XC-K$b+73rp-Iw91m0vpWyRa76Bu!h>^rtp1I9}Y!Z2WQu(rx;En zm6oUtGDV(d8V^ywUZTZ4ZuI+9-`s_z;ZaKWL=aq5uRERKmc#Kp`xt7+$g3GR#D~9C zT?IUT{R3vW>;g;l)aqpRe&hO+q=jl}m-A>|i_FAD^rookZ;ik;=hAY87adrxe;hr% ziBD%7?)=dezphn-+&PmDuz@gztGU}oj$tCwFD-wV-~#AQ|gZP`y-tkEBxT3ejUJkpvl1>Sb+x)HN!ZZ z18d)vjUhEjwRot(?5M3)Ly-O~ZYjpm?(HgV55G61c-o_mHc?Q^wk{0u9 zUp(!vM)>s4r&sUEg>qZQtk?`tlJOmc>(a%!b|e@|sQ-)WJcSPEsSWXrydDX0Q~m zhywqzn4wot66NPSW6QK8UtZ}?AX#ig@%v0G&*5Qq7yy9>pTE+Tb@>bCf!2+35xw?} zH|zhh3{Pxr+6rqOVDZ**^%WDB9c7Z#s>ziQ=BhoVYy8x(bB27(VkVo;eh^4$Ee4EU z_Ue=!x-6;S#xaZ~DMb=C@+CbfCHl7H4|B<*d)l8zmM7(ee2gHiaqK|-h@bcHC_NVn zs6p8UBV#WYNgu`qa)U^iBsZ+N3yk~h=piD&Mp-$`G(inrw5rIHD4uip!&bixMTx)n zvQ(4E$?@t;-wPw4v#(5=;-TN*MS2Ru?GXPG$4UrcVelBHu*Yk`PRQG2nuiI8xixg3 z|9}xuxe_aGafKh1@vF}ul-x&QkwQ`+Z&1Ou^gX1qZn~&_Es1zqoydahP%r_iSxb1L zhF3JblaCiL41EM94inqQI%mSCxbR)^=f<84L%tiCSB=u^f){gTC_+L@V0qtM?5+uOg)P zC>L4ApU@67OcQdAba+E)s4Y?IU>w|JNzX`jac(m0K)N(blG1pgJ^!V~!oMI8Y^kaS z^gZ0#1XT?#g*N6dQh&$+eCp!c%6T}km5sot8C5W?2Gkv(_&`Vz;9n4i(5c}~ChV}9 zpp|SmHcI7K_<~NH`8(o93rPrS#e2ES%^E{0EeNa-ORWUyYzu~A8{8BTn~~M|?;WD` zg#0hE-Sv?2;4hWxk|FnwB9S@aVxraj|Gc2A7#|@_@aH^YLKGa;Sq|oiG^OJ(xz-Vm>u_9fsv^}{b`)p! z_HjQ|X+l=B1w@wJt}JmiPY+##+EA%^L z_ePt)vnSDamNltf1+SG-YDpGG&c0cgI6<|L8#HuYW8}DPDtlt@Jp$uX0G0{Zz}E;* zn#63FGa7#2)z{q4Gq~x-jg&z*O)<;ALRjzx2+heVxZLQwrE2@uU;Nxk00ROCnGI%E zm-G^cmEB)ichRVT7ut!#gEvyZR$z3x8m9AQgu&GNW|^H~-axTX6r` z(;SR@Cr${ayDMAe?cyl4CMxZGpal#7-@Zo2)c83;ruQSLoot_Wjl&^-u%@pdGexE) zLQ>(>1X9X68M`E_j=dlAy7<`S6tv@JmxEi)t1!Nt&<6Y2Ci^synl)==avY;iwfUJ& z@(%khL8u>gO-kd<7Z)0Dw|M(dYf{-no3I((FFePKr8j^3}WsPiCCA^5jv0=j`X!K)T2cznTMW6zrsn zSzQHe`kqoqWYq)iE$0lAa|2%M-MK9bEoCj|V&|i*(FgM{?o|@~^w6*@yv*w{7Aajl(S#||Ib{_(WyF;r zqOR)Pobas)-il8guU*aL1kiW88_No$v|9#+`xHa5nRR8x5=``Qr9O$(g44s${v8#+ zsO6oSy|iu8f{(L*GTz7A`AH3~Nvb#fYO!+3dtgsa+Hcuy+aNvnz%>u`(D!wDEH4zoGeIk z+$;PIIi%54?x@24>v*k=s2A@}SEIp?Nng;sO_~-d7p+*sTwQ`nf`PklB~o&t&}B+i zGqIZ74ge|<$4OxTu+qP42}km8?tQljjlsTW_tuJmy74MQttgTAPX}1r;4le!KtP8^ zj>ZTpmXAlI`Bl->ewolAd#YsH`yVN}VXg2Tf%6bnkCH77cj9B+Y(5WtBe-AJ0qx!3 z6bQ@5u3mjL0j`)shm@YhqR@Ab*_7zNs}`%F#j!~bc%PP?8Zx$Y`~EWZuAO=r%IM!2 zvQO7fr7c?Ziuu)p`Q|#qQikv5BB|!ZXA&e5C6}s9g@XL>K8+IFb5Mmh((wIRrb~ z@LLGf&+Mmy`!9Q;I0jSiSSpPGdB&B3v`juZJoKXpg=ufhT>Rtw#A6MkKCVGK#2s^` zshDakAO-vGX(vLvwGL@t3N3S_P{Zl({>ryoKl5Ih zI(*}DWEv>m`rC60F<^AWD@WeVIdxT#Us4v~?6`ZKNO}0Ek8=Wwc?P79=e95%!4t^| zck?-OA_u;mxK5jk^#3)hyQyZB)J-YWY#c}NBaf71q?utEK=xaxpuu-LOBJP?6lyaZ z_t*XApYmyQ!%n7wwJoO(U?M%OKdJGH<$)|!cp3W^ST-T?w%|u^_7r(Y3{?~d-2#J4zq>(dMBf)9d7D3TrFV;J$Rhn}(!ow$mG(;-qG`Puztdt+61EVsh zJ2MOKFosJS5_%kzgF^boqi2n%q5xez=uw&Kmr5qjnb_Af1Yo^UvKt3LO+S-!qtSf#o>P< zFpf#g@=Wpch9GPbm$ht+CJ(oHSeObzztKHe84@N>E{g6xMaiiH4|+Q;%q;A#9Z`34 z!I*1~9DMUqb+WHyso{CxYLZZC;$@d5Ua<~n9Vp4zx22WLzbUS?5%bF#5n}H`xgCCpeIuX`#GP6!cV^-r1@4Qh^DVgN5lB!^z4g7p(E-UB`f(@Bdp=B0HJk0E5X!GPOjTb2*(TT5*vco%g=+1pF0$OYP|tv zNvUGS9>fcnan>A5sZfB4W5!(}*~_nV2IK-@V~|}6n1ko7RX@<$Bo1rfyA8|=b1h;z zC(O6cCxsWM89oK0+A-4HU)Jy{e~X+1(POSoGc#a4`}-#Ositau_Wd4ClO=n0P8wwD zH;>c7Y($DJHquCW7a2l9&P+|R&16Ec7p3_P(R(*&~1YJq)WL9=@yvu zPhK1Yuwx+$)T^V_FL~4ci4p9RjNxL=DQUcrGBpw(d;D1>|JiWB{0|VPm}MiiWM#}B zdU6s6ENDTwM`1?Q!s0J?ij`Bf2mejPqWLh1ivDn@AalwBmKet@uE?tib?gH?Yz&Zv z=OnG~iEl5CQ`j(bI27KC(Uff1+7@z|o~l*-GHb1;*{teMx_KMJ?gv6}MIa0tzpS3V zE;6LAUY|Lr{cgDyj23eXeMppp8QvRTx*M{)aOON=s!W}rH0+^*Eqbu?75~iXT4Vpz zRu>b6^sby8_O*W4%0?-NQyXfOVY9-_1v_7&ex~a#rIUS^`R{8W0u-Wo8ae~_nGXi2 z?mco%beN$Y(K_#z5sMKZDgJ(qWV2aUwVy|7D{y$d*uHTo9wu*lbHkkC>gNO$w9rQT zW@d1PRyh&Gj*e*_l}3yDF5pZM=pbKyHc3>YrPFiZl%mh+(<|(1Zq6!-`({IZJ}*4| zd_oJA>*zfxmj*d&X^k}7v(2wTN$gdL1np#{(bu?9PeZP?y(aV)o|A@(2G8JHNmJn_LgRRM+jM% zGppP#8S())D*jZ_I@uNX(18yO+!n}zzTUpPv5}a|VV_N+#nLQ_A%m~!L84@Hvfqyf z!>0$BKCtb>B`a#}1F*KJz1c9&@tc_+MF;0rFvMeX-022r>q$pp-^+xULxN_*$e@IP3HqCrKM~YX9sMFVTF%z0b3lh12HS&I z0E3#R92@=)V7fA|4C0x!FuW|mIIjm0<*b0rSbHx8J^h!BS%AxsMB^JlTykP=%Kkml zY2L|{c_%S7(&9~OpMQLAh*%q@+%tlbS2TtAWklcj^yd0BJqoE`6gB^b9jowM$&S>6 z*4y{VArR@$02HI6h3wWGoQkKKkBL`A(;mR_Du~wI^l<=Y+fqXryil|FHe}<7@s(2R z$QVpPPKgzPGZLdJ(}hGZ4PS%GJ*E-&681@!fFzEp+UV?}cMS=P)dC2mQ2=E59in{A z=8Ep}txQC-+r~%e9&--x*mWat_dy7sYl)rmhv|2md&(~E3K0b&q+j0w(Y5E@V{e6K z#Yd%dpE%{61jB-I^KI(u^X#PXtZwP`>2}(Zk#5t<6=#77UH;BiUU0e_>V*mpa>|;V z?!(V=6uw)1gf0ut0H#K2U8@TGLq@v(d<0dMP=6@Z1HzVd|A=J;p0|9*{JvJ>qc8VkDpSNXPHW z9l7BJJH&qa6gnZ z8y{qHRCk78z1m98_qTcD*eiT@D`I|*iE)9noFV0}TkK2xLs2A6wP7Lmf878ie& zr%8A9eoc%%H~cy7wt2U2g^ivDKcvMtikdvOEc@d7C9PL#mwn~Qwq&ABLFT8e*}CF; zW+J@oIhsQgfiP<>?L9adTGwv%L3__uR(n|zu{^43^Anh)<&U^m9r3axzwS6;GA)Z%)v z60r`L_pmz!btqp4H(6_D5K@guHdtMU9Sr}lQwQ3F+dvDzODHbk$fmD--cX|w!hAi= zFVXg)i^ZO?H1P)(C{-@MT!_M+j-1BSEm7|(YdHAOwompGtAf?cj^dFRfEjqnrD1GJ zZ~CdrFEqx8c&hd>9(q^FCuqhuVK@-%D$S%KE6lj^xS$wS$o#iYj6Eqz{YSGK(!;o_ z)2oSYB=H8cC52#@X*$E8iCbQMSPLJlf?2E^r8Ip_9)E*T%;i4TqEVA7&p^1j{gRW9 zV)ZlnXBfuFfTYrqVyFQa6*fINt!ZzEC44?;-U;g}Rl`(4yqr=BO-8vN*VbPt79u~) zJvW`GQZ>u-#3LD+h2r*G=Dz8CPIc6Za6i>OB936Ag$LPafk9e_xmxP`dRYhu*wP-t zIyF_ql!nI#cbjDO8=6KLyZw8=7y}4P19e~cvzL!VRNRq21@a`O2R%(eV&W*DLA{_; zx0weX_*ZrbOK!2)GpC~ZMrAX@!ZetCelJLPfm!7d&_U%NmJf83*d#znl5Iw62^GO$ zeMX~s$ws@wVkx42DPu~>i)zajASQTkpNp1(JB&^Y9M~PI_7J4)4r=n&!Eb1c4({;2 z*Db(RQ0lDxoZ;g0;E?(?BG2Kr;PRLFOFd)0t$!P^0hyqUOU~^IlA-WpL{K$+VRN3C z?mV3yF3=kU9pPspSkR98HPe1@B<8>iHi@%b4(`{BRK_GqsF$uRlrKjUdd<|xO13tr zLDTp2?-4{CNAar*OfztZ5C2;~3sP8UD5YbhqB`ksV%GRrX5lK?{Z0NjOR>DG>b+{+?`=4e%6mVSXi&ySIdfvW9k=h6DsaC`aI?G>7;m;|!ZfhJu4MyQ}Bcq3D~o+g+rVX9czYf$*}_R;uS!Y0yvF`KNH?K+q^Ux4QduW zE5VD^3Yre6;W7UYYzn>7$<=1T7b@h4qKVd|1o>o_}f$Q23U1DILH zpOa4xib(B&0EZTkz$7hjA{>+WssT3r_TBdi#@Ub6`SO z86}@Ag+BS`v3jKj!^Dm!UfqCh`Y@VUuhwei=|*f%`bs_3G!41oR;lRlWmFuvZEAg-HfM|lgR{wgIq-4Dr$co0ETn^5{vtRLgco|I zdjf88Z;eB+#^qRL9Q^}~@Z}#bXgP4De?>Z{11wK?0Z&Nd{ecXH#jl)}htEUNHQF(o zBX&6)W_!e<5cr`wXaDb0fmFh*rWA6$GyrZ}uAB=QJ?4bambSUKVg zqzxmjIkABI)yjl*%`rpkaK}=)5cPex)RdP3JV0W1vczZDW0KAA!~;|5Pgb5{{vQ}v z8Pxc_?DQ!Fn6f+B5Wdj0$O$iZrUmhX_Q1I%y$(U?0cTA&57&})pr~>zX9{KJq=c`! zA=TMY{P~u8T|!OeWKS1`x5saxf5V_ysEnshc0EXLw2{q%IMcyYv+_b`G6Vx5-UlPd z+Rh^m>S4Nv7Kn1E(u7Q4>@Zf#A{1yz z)lf)>o61`qzLSl(eS!6u^@v9gz4aJpCpt}5S)&dcBhS!ajUM4*wRS4po|)nRtr77- z*A{zKOeuZ_jPGxC0+*O?0JR>UzvsL&QDU^XqZf zOk+tZj1`K8PZ7ZB;SJ{^0|lOXEj#tXN^I%lXD8OEE0GzzzaM}!1Az9lcp(rVKec|s_`wRILe4a<^QXZ@Gy=zW!Y3K!uJ1l-HG8IcO(o+%wbL=O z0nEiO7lLwt8mTJ*aCdY-eJ5UG?L2}+PqA_Cevc09L1K%BNy$Q2r0hNt|MTa_TO#~sxp>A^844KHF zc=o}Loqvin^Vs!NK;u(gJ0=~VyD-g-9!&A(ioPuBdhl_nKj;Fr-25o2#f?24pDrm@ zjupwPTv(WhBftaaz6;K;=F`c1J-w29Dy4<_LshE-4|6=F5|%=}LH=4liU4{IV($`h z?m%?GBUs|Ry6hKd(dr;JTz&g>*Jn?eI{#4Y@37qJ zVFT0l^52ll@F$KH?RuTBMzHl3#_DF4SKin?|XF5QZ2qfdw zv)HysoAGH8+)&X@j$uZyGNw2YF^4F9Bvgt+QCb?b(4=JAzG$q`Dq#4e$Ebe%mp|Sf zoR&G^qcKXIoYGEMu^S$=s9apZ2@3Sn5VZ`w0&L(S@UY5WFlixUBy`#eWk{^cyR8LO zi1Th8V~5&B99I$ntZ&#-%=9G(%p(D&nsUC)p1|!8nvm2MEn8ArC%yO7>yHT0ikyu9 z?~7-mBvcT)nJh|;#B4#G#?ToVv?uX;1Qb0o#NYHYHi4_RlFMu7!;a+^9^vyRL|DqA ziw`e5jjMfmy2^kKok2yS#5!Js77BqCpxX>M!W3ANQ!VCf0)@<*ueAZi+?;r#=UcO> zg{0QfdZlujEZq<)Rcl9R<-UI7q7p&0+$CbLp5PZ}8eeB}(He&~BNnrV5@zfXp_8n9 zj7W7%8{EodrmQa?{tjUD%{dn~<|83H7P=x;l&iq3-REpQN{`5!MoyozmK0+vO z$R-`w=lL3_>jQky>aY)gQuOoiqfrZ_`Ey}hsG8>y@^LY8NPiU4WBWm@bFlkdM!9~g zXS&H)MH69PJ4oy0C2ihZy@^GF%+w{^c>v`gS=@|)H41DQ9&QDHI2ONf40+LLqFN&s zrW!c~g}?tWRPMMpr!k%rF({EX_L=cGHx&0ocxQ<)63cC;1fXb60XK1i$n~LJ;9d=3L@MkKCfT z#jDRw`&48=LGM!JT7LZhO;lGVNpVRyEBheG`Uo`d#YfL%o^3wsZS-E60ZL%$2qr5( zeKP$h8#&END0NcUc8|*+j?SH6@ZT&oJC?mFT}?Z!6m>R2{uu(ulD_J4Xo5-t_UexbWy- z6oKm#mBDL-QJXSO%v~met>M+cA950TzEHVWWMLYzee00Ez4a3g$@FV zQb>%Z%)VWD{TxT7Vj~%n6B-}RDr*9*Qkh!%kk~V0-t0atCKvL6H963g+eeSKu(3;g%;^s#pRrs$|hjx=(Kwoin%qiWr4h%6&F^bs4fQG%Z_#FxX?2RaiaY zj9|RdsQ;Q zb}TYYzUtb#;rZBUt62}IR$6Jgfx393vV`G!Qy$!cZ~Y^8S6kpQI_iS+jSkd z_Y;=j(!xHG+9a8gW`b|RH&cLV1Y7qbTFf_yUoups0a)IL+HH*jWp_{_Q0#oO<5k3EiUqQJ&gcEohF+iGU8 zFg45hYC@o&H?GPuNR=9@;S-wzC+Kk)&I_+I&WdlAZv`U;sz=>!^c&?w?S%?^7!6Lr zxQVP2G?F^^%f2<$>AYJX0!^FPvHB=Ya;Fgc%C;ogRG%w@+7-nfyaPPnz~~j4*H1e? zypkz{cYOHQ{X~db2Irx?&5>jzaXKh3?r|(m8hcf1MI~RJSnS9FR43hwez8_k+m#|r z9-^dy_3fvaWyS@0S7J}LI5@vf%BSBc_Q=N9{_#c{I750Xr*CxK|F8Bl;vUmQNFK3G zW=sAq=NUb-82g>i0AFU=%**oQ8@lOCaYYvw7Y^}aHz!%s1l~Ly38?*)W$+6;tbu@4GlNHq>)e$;E1&3mq64?YWxLSE^MgTQH%D=^< zZb@zm0bp=dZ$M9~c93lTP{rhol5UO9gd{*~W`uyZfvijWmEp?rh{#ys6$TrGjR9uw zi7Wth`~0lYMM$(nebM_e_zF~l`!FW~_=R$M6V17GOH1A5VdO!y%g*Pb`D1)eI*R$_ zok|EYwrN}3Ngs_CgK=QVhysaU)7uXJAF^Rzs?)+ z2zERGd8-c{`zG1igqp5ZiQo7MoLEW^H9oK>RmtJL=@YroI=P%JtledU zlXiBNGaTz--**#ulo3m@~m+GTR zt?!7E$Q>}X{#?Mw_=o}*imd}D3j9zop(+_BgtnxHw{MjO(2h&Z(nqa+`E(4o*7VG2 zr9lmNN~%^T#1xcK)?AE;!p@J=d%d`yp9@o`QeX87s`5&(YvW8?$Q6iWkM?|D2&$8f zX!9wz_Av#!YjG{>1MKxVSPs-Bm_m#D59D@5re%Hn@OXY6#2*s#R-&jsmhF($X6|_o z`clSzX&sFOt=Q7q?4pe9$_(d@V_>gfhBqCm-fgf!z-y($A}gTGB=rmTKb)=9M>;9dK-$Jf%F=?GXuL$fU_rlt zw`;7v;{$ane+v7oP5KNd3LcJwB1F1vT*zyrnaR6@GSdX@HqK{qA|+XxinI<{p zl^5R0`#z5TSJsFODv3yT-*3X_&Sc9F(VowIpBUm~UPffZ3(@>)rfWO;Zd$I=K%Q_( zNfqrBVk7;CccC;;hJw^wJIJr-nGD!MV_oD$Alh%jLss#WaQxBIGxD4-lATlS-^M>n zeiD}PvDN`Zq#>w5L)rGwd9OF!iOU;WO&ZQJ0bqcLu~TqwgxEBW6zV*c4F~R?|E~UXN~fNXraA8v@rqQ zQh=)3N~t<6E@CC(0M$@HIkyc_|gXcN_FLb@=Zc{@~ywQ&KD zrRUKG?av%FMD4m9`0M!(_McEW!oi{K)ikO4ssjriC&3`T=j`kUE1IA-b+ zxjDrzDYyl#$wsT{@1}}NKDxIG9M2}cNl~oRt{p?ZbaA8Jr5Z^ig=6%LMq6U9&O~%R z4ify14vb6^yP&div9HC|IB>KAJQNGEqodT|Ld>D-cbOxz-g;)h2`V3x0NrLReeRCMB!)-vnLoLg(^B`hDbq z0d8ZbnCP3FKjb1i7$*Th|AwJa#vG;fIWuJYLWYeg+j_;C7JxaSatf=JuF&Jhc?`ftk}NzMWg4C^5=+WLyg^3Yi; zI8^zUf%E{uadfRjamm@@6QyowA4TUE>J=(HctXD))m%daw9zVJ*X4Dd7oX`m~ zL(vm-gb$@LnbIpT$Q=1V`d*;D7JGLa`*nnLK?A}|NL2QwP0iXz=_oafRh(R|4ZUl1 zz$7TT`oWr9jS!;EZiNz5iwoKZbld+DF~s_Ibl}FSiN7w zUdPa(Z#@9euP22_Y296@{N~jwI5)N}(<`a3sGFOq#@LSa z#0u0I9=y-JB>i$Yoq{>e9gML=5zLb}_`D9_GNeDwK3tR-+stv>p)jbpDqS)AAs^v9>e4#Ne@h;9mvce zq>uk*Vb4b#3N=eJS8-_BCJP%e=RI3zvqF(3Jx-~+{2DalHP`f_G{w zQCqplMLP^HxDlbSmJI@Pgtd-}2^BR9E z^PB(8LJB6x-(3xwT6HhDDVqFZYiN3YtmLfh^N(FE|>=Ztu19%j{prdt+*Dv>=IwjR6qgjyY@bAN#( zZ;+lS>nAbT(llDK=iXzc4HwKH1-53r9P-E^iHuRqFrI5+wWH+lb-|Ar|fS zfpwaU4LbEs<{Qejvc@XzBpP^oQ*TBx zsQ5CaOM>mkr61=u`kpMu5w<^}gqRoEHJ{TDgAsKqE!kMhn(czFWtQZmGFQi+{1waR zat4`LCYbjK{zOe?W0pS9d?Ag!IeYpIoU8!)GvKTpXDV_C$mTQ8+$P_I_co-WIxW#X zlVN%y{@e&~(0gH(fCt=?R%CJ+*ne$!{jli@lr(UiYO2Omx7;uPkxb=?_hTCLTo-rW ztSsF9Nse-5Q>$BrR@5y@!%O>kCrVh0+T6*i*@b{xBGhHU#=euC`RNQ=WKLu+G_!n( zi;``^j;g!{-2@c78N=tJ6$2eISc}KIn>Xw3LI+lX#95QI7fWZs1Hej~up(OVGns^T-*ItW0OmSFAeS9-J>$b-{?LNVIl~}7O3-r5u3;~9=bq-Wd9{*h zZ)1$=MGtH76>*Uh_xH4REyw^0>v{iw83*>j1Pny)mD3={H;@rJVt{RY2MXCRB9~~o zHhH)1P8}*3THoU?qlDWascDOr9-;e%YH) zpx2sPAbR-)`o8j95%3_1V$FV0nceKNtxY^R7BuIVEWD-%3I7wO{J2O6~Tvt5~ zGkpwX>DeFHKbpde0T;iJ62pXJ#nj{il?<5N>RkF&vDn|g&6v!ssvz$w)*Z<$g*%pz zFC?0#EUfF%5d@q{1MymGa=Y(JUVE%=PoU@Or@w%058k5d9?SoTwZ~QZ5tJG4c38@PvU7I$VbB@_i3;8)__Pz^ ztkArfkM!KOJU5}+=u`_kBdv_NhmnuOC$Y4v;bu(BoXI~X+f|jU4R^xGJ+mqv7m!GV z98s;R{ZxTEGb!8_)Nb|W@Hzd)WW6-!iA!?SoVQL4uC7xl*FbfSpjp3`azs zS{gn2+|g9@Db@7r(1htnd{wX4+FilnViTQY3mR=InL9CJa+GMjHAj|k9}fV#^L zk8P|(ZvEDVBYP6PBhaFJ4Bfj06UO7qjvZDw7{Ry&)IP`W_mFk6d}5WDi66s&M^JDQi1=Nf zm_)SQYGJ2WdyA57cs@je+w8`9K1?Gnm6mV`Aj(rHWMoM>0+0gWLukvv@`oqg2LRDN z(82rp_bWMxMwUsBk44&PZE|jO&b_F!MO3EDgKRxNh{lYTkHcIEa6NH|S%w^ozyiWN zifeH`v+66v1jco@1a&J3(jG1< zHE}S%OSRYz2$lM;Q`Or1;;HCb;KhW%OqG*Z4`2CCe01ZAx-_T9f31D-k6faR49W>3v1svk-g2q<|jn*k!ds6YD+cd7?1mJAS zrfP-Pnwh5O_Y$b0+zr>2?x&Pt=W{n;_ehwiq&`a86S_Mg!YpP~3m?&jg{ZPRJ)bBb zQ;U957ZFrl8+hx~yC(W@EH=8a@bpqh>kCIoqLhG=xd}}gNOwh7Nu$DRRUc3^=3#IA zXaNzdm-+)vR-gogc~!#JU}UlFxHVGNIaKO|JnjBU&&D=eW4xKUS{x*?LLi8nBl|uM zDWnpA5dr=oXIgv4H&DBUpsVQD01Kay57=DJI*86AoT|-nFW=cOIO%rN9j+*b(ASXv za&J6kXTB~ea>oGwNQBgfe~&Q^;o^tpyZT3Zeu@ExfNhN<8?JEe?j+Sq_}^CW$gws-0K-fG`Nk8aOnomq^D@KyKJ zkA$HxjP>YR-SHQHw1lg8PbT6wI?oG=-C=~8V?Ze!GqTPqPo41imDdN0r#EAnrg3_4 zI_xpORih>yG5EV~sVN)Cki(B4zp7x7Q6N-7RuJr0OCS;zCY27l?Ui&#yOQqlo?08i zG*u>?QRY*zTzSxW4c{jryQ=V2BF?Pk=AEs!4YrNq!AJjTmL<0J7A?2Vauv9i%P{Y+ z?*p|;YJpOUNH2v=D;Rc8O5loLOv}mUr*8`Gp-}98)f$`uxC%>V)r889A4syB{pFlVODndlWn8D2!Q=wctnFj=<=l?a@qDFyX zd>mXjOYUo zp-05?hc(zbqDbS!3(_4?@kJMIs>1dQs4q-m`tJvn-}*UyR#FKf-r(yAVAKxp598oD zEa%xOMnxWWn}hKobGyfcITxs$bK;+9)F?;i*H3`+l(Fx|1ZIkUo44cKCw;T!zdKg2H34E~e@;M9&BLpC=D`(V|Q| zpy#~6*XNia#*d6z&DG~IF9Z(Nhpg^Mn7j2k(H8r}`cVw>n`o_U>*nb;1176(?JqRA zW3P{A(S`3|iofvP1vz#RkcaE0ayG+poCyIitOI>QtEAx0c);@OGVEoM?7Ov3Vyp2q z(Ck`nn3{m%yEvh^5sS9>-AJz@U0pRmaEF-Sa}VJ7p`Camdbpn7>@(i+R~#)DvXLm% zw$#y}6Eq=9o@I!XVA^#NaYEfCb-`W}V^} zkJM1kt0U&JqV5xiDcCeI4$>Zf1(XmW=Ha42M|5(We8z<|E7~4x%1FD?hKRT zUmCt#BL-B54x7v3OyOSznZ&6p8u|OgJA3%`RFJRc!b(_}4R1HH76kPs+`<8J54JI& zNCcqWLl)$;Sr!|;Q2ugrV=`*SvN#@7M&WWnF4KDs#okDo&dtFpf%s{h0#29TF(|h` zSS1uUXP^QoYYknJ`|ChBxRE8NdpjKdOkfn8%zy$n!qYi9PVD-v<;x?!ivN71ckng5 z)4m@fDd7f*kNEdBw_G&Ys%G@u;fg<-(-5|kLOER2Bdl~T4M3rmR(q>aw|VlxXkKnI z4JHSO70$jOWxVD^V;cx?jnAUwd7M(JG16aoPm^>!SR~HHGh>YJX>`=!`VcFWjFv( zrd#4jCR&j`doxfMtASD2F55SIAlC3ZiX@K`UT_?#rij73qNkTbFSDEb$4B)hI`Iic zaA(je<*ZDJzg9C10KSCrr+8wU$gQ};WJVSv%_PH_;S1?qYFSlO+Pavd!}IkejXyQI z=7CmA4n4=&`neH71^J=^=-GW@E`_qTr!U&z!^-&eSOC9BZ;>0KyM8 zA=!v&m3Al?`TMDN1qa0aE&Vedbs~I$37%wE6`o&s7@Cm|E z3jwRJFFw8DuHM>^n50|^5pCC6Rmz?}Gta+E^is)?F_ZoKP=)U>(Wvcax0R(us(-+> zJPX<4U?f9jhf?-_fg;AoKXhmx$YVfbFgkrdQNf7S=#M23j2@K|jFhQLyEOr6W4&c= z`c`gr?r>_DEXQBaYv03Jy~Ee!4QaIYz@xqe}Uitn$H3>!dKo9i{q=8&z!)fnSgGPe? zoh6?b7HS~uJzF&xpJpXLy=wa$%H;$+GycZHetJr{*a-X%;}r&;H;RhCmDNN{_2GwT zxjgXatp$!2;ZRRNxa2Rrl~55+|Cn*Z(m0HB=FM?YKTHzv*%#E#?)GH}-ypa4>hKN3 zW55hn%fqU3mn7~u=13zfSG#~Hqlr;|x=klsfai)+#9=v%N*Md>W`VMjE2J6gW|@-O zB9DojS}!jwmb;o9&mpJo;bucTHc!z>s2OOyC#p#0$hA}z)O5=;s6B4pG5{M88XpJKUG@fq>3qtHTkOs&- z{SE2STHr9--vR8*Z6YyQZlPM6vf5q@(7EqP`4(t4eL%Ji-4e*`%W}5> zd5+zFbS1u3&8!)WSroHy+BDn2Uh?|Qr)x1Ru1`$6H~l;HoCme_@ZVUYG1MynF*Ju!3T12KZjJcB4tT z)(C@)y}hfVg-ncptw`2|ECg1vR^Ccjq8XJ}dsONlIT}jTBE! zC+K!^6jY{0HL~-v4fceay^v>dv(#@w8pp--)HQE|&t1;7hD&}9N1EcD;Z;tnO;qd} z!Qwg0ZaPd&0#3KW6SZBw`s0w3ca}f0IOqvCO0|092hvBZP@vUmSDS@5@%9>ni@oZ= zI`YwBRx7_D!#wQq6cCoAbv7SBvplkjpA;FJHbd?@G~R*LAZ}qw!}PrqX?>^=*bRQn znllsKu9~e2%yr=vO*1aBF;C#ujYvVhTJ<#`7JCmz*H-X`*1Bdq_wQip+;8ZWiz`$) z<`&rL)_hqcMm#L)%&Mje6|f#4Nx( zdpKr%RY{NUaf_t6x-LltLl2H~nuE;u4DY!&_`q99aP`d4?YJwbd>}Y5WQ3qgk_HoP zmA=@g>gJAm6~tO*Is0 zb8jI~fIl?5OTWcYJ5z(9N39R`LP(K4#YHo$vZvT~p_}_YWPU^uy1c-b4s!uQO#tY9 z9WqKAm_Qg*{W9_z`M-K_c{Y*x850Etx{nJZS+SGLeBNS;lg&g;wsWZklxMqMQ_3G7^w0Qsa$y}2Z*IZwvEJN2C{J!+p7~;N=y0{ZVC8OO5_Zziy15sObFtSs+;-Xf%pb(K*okP!UzM z&sni2Pts%f9FMEAJT%leD@VA@x1h6!b#-{die6D^3-sU}a^`m?gn#d9bNio>=FW%@ z9Y>s6v@?SztKc9iF41PVMZ)3-_g)hVjUAit>0Czy%CT(|mE85Rl&v>xERvm! zq>*tT1R-u`rq|AGA31FdVwSgQ-IP#dQH>$yRWbe2zzfq%JtRhxo3&V)%p8Rxr%$gX zey0;f7kfLH!ql*EOkTS&3IQHorhxV~GEfVot`po!)JMrY zpbmvpwx@{I91V(#^R)Ow_SqtQ>bK;~1ag+5BH3L#lisDeewr4__4}*xhd>0j;DX>7 zw`_N?iXPU*`6B&MKk+3m@PF~dC$IAc;h!{IOU7A<$UH0JJH{GkL4yGHg0T$@uP=9} zMp6&#{{5Nd+x?ACXv<%MIG`r$G`~KTmBjMZlKu^Ydn|_kz3JkrI#gIw)BTM0huCej z9mqX3vY(o4y7!$Mon=LWB7Er0-7(6BJQr~h3+~4pHcvE*gBB&mk2CMAYLYa5mzFe< z)Eh}tQC&(V+L`b&ZyoP(0$_%8uubmih+zG0N3|1Ne0z|!Ge*0Hi|97B?330TJLhNU z!A*IwzO0UFa}@+;d*g!4d@jRR?zpg8l1XLfx7KPpLm6GZts1>wnEaK+59o7ppt@kEe7m@-OI*2O1B4U2!pbOA^FdB%#km#QgD zlc;i2I!uO5;g2_#y>>3+wKYu}tHo*waqZ&Whi=^JUKD?LC!mGI!eQxCXWTKPVBr3} z6d!np6AWz!vuYGLgz@sDYYa3~CUM$*#s#y>sauZsam}4@)!Q|zv%TL@v%G`45$)n| zUcZ;L;qbyvEuGh5Oz<@un@Xtd<)0l%1t58wN(4QanZdG%!)tnwPyf-I){xmLjk8Nq zD{yW8I3l*PIg?+V?~a8OocygMiKr6Ek0Nj1@C^-ThgeH$xBCLE`q}%eDDYfs%Zq=} zkwDNGo}tf7rfI6&52b>O-y}KchR%P(y!w?Wt z$I*B!*!Dr4^mKHjEq$vQeSN%-(t!rR-9;dKVjq|s-z#jvx^8KyuJjN}y=g)pclc-= z12}QSoT}tmEh(J#N3doz5D^B1GVZu1ZNQqskBPt!l7{1JQS6 zV+b-hwf;W-<@$VMqis83pG53>=!;fJlcEbQ&K>%RyWHtHtGF7mJJ)%b>kV@KEKrnJ zrvVAbkCVjlw`AsMOF?E*k#BBL%1ek4Mhy(rdg=s0oDblM(o{*4}; zA9hC*WMA6%Fz@`giX~hw)J9xa9waY-<~L%TQNlPb!r|}OCA7XMtFq=4fw$}e`Zl`6 zaeng0>^BxUCG$k4uL74ltX6C0$Iqd$v4-9-Ir+an^IGFJBZSL*;H-F%yY2Pw`c zzIdAgu3LUs7(b;@BMBe^QttYU)l>3K1G#JC_63jr%alo6`cK%ZKLy5ggxYVc^1tD* z#Bq)cAUxn)ObmZv$UHEniUDhlEp68Z>$I=q3kHI|%=03N*BYmzz=g-#gw|8boMN@2JSX zjRV!+icmUl-Ixmns|-EH?yf|u(vM<{XK@b|MVc^7H#YrLkODj9O8v{^TJ6^jYaM?a zO;c&ECTw$OT4^ZW5RrEv+Tp<;cvSXu?C%jj42138#oE`tp_pHi6!dS_$+%b^gg_b)2GV|mG0Cpteu zeP6Q6yZpy?oAZ$r--L^@U=_w*GRj9#y4MgHyb(sk4i@i z{erDTU_D=xWuvzkC&mC(-$$Z{wr`}Uf6hp*D1Pa+Oo{T@$}r-LM4g5S*-%sC>v+5s z&(UY;b}VigDd;QXSoO&$Zf!CbQtHjcL@mW7$U+UjVF9@RuPZR&H;BbHk-*lLGJZLb zE!Ok4b&|q_y)p9N!(?H{pganisR150Y`wE~nCe%>3N-C?$rvnQ$Rmup6+fFRpBt1m zkUx-}V=z%*V647kTPU1n;x!$-o(2WHWY=j=Qc?Fq6^P>ZY7N`fIWnOMa_0J5G*(sB zD}(~x9+f2<2n*yhTmT)4>^nkRg0r2!1mN4s21*lyW>!P+gQ21 zdSue%!iIUs2vxRSuAl^0C}43@)j$cm2wO`_AoLo;GOCkQt>Q1e?DdWQ0RuBhXUGhR zU&TGZW_ZO96qx&5NtMKQ1P{&Gzt~R3VkILZYxh!yR9m0z-QpF!IOt>rZ92{Z7qI2< zq*p2|#=X}zxWp8&Cl4P&kQ3Z&EA2GEwa=jjSRXMk6gEa@6vUVs&g5YbVc>Otc;d*F zoP*i6*0b6Ta!~nSQ9k@g9jOW3HI`T!lHnB^>(Q0HGc9(}UBlA$^jpfrt#VBZ6xydp z7+Dp_cZMK((H;uV`Gs{a;Y-EpkN|4AWCC;}sEEHki7O;(Nm!`{+N6b7sbFR8B_TGE zgVU-yO3;wkZJlNO$~8`fpl5nY1R~2>CF1V<7y4%cKw(*=Eqr#Cbk8~br_m3wjm5Fd z1Ih+D$>+=3R0Gmaw0=uZ(4`+En-5(Xj53{niZC5j(%n-e*3 z&D5XR%Y|hqXJt_vXpCdO2dkXfm~r}suy?5=mSqR87%v`V$&Zu$SdQZhDDMlWF zZc!m)!(S`0i8FPHij#?B|B%<$$dtx7pT1fWt_5Sq3zmF=%^+ooZIw$Xgzn^v->Ch* zSaM};GEI4;(fN?&3|R!FmiKaFEV|Q-fYOW>tzC!f8O;<5(NRhf7CS*y$j&x~jSRi$ zobf6DCOeWaB53i&RVy|JJlfnA!`)3*ub;&b>67)G{9wey<4~Q616}kVEh{T&f$@*7 z8#TC@xJ6bAxuK}3Q8`SnW{#EgX(Sb+-wkUE%MKPoq;Q9t4Vx%I@^r?mt%iO3!msyuF+VT03&9gT?QA~o=v2>B}1+tYQ znjQd!?l~qmy1_6n<2bLD$i6D2r-8=hc{OMR3l>A@-$QgAZmNln{sBYtw8ZNTY^ctY8l6 z)%{rQ(aH10yfER8395SkG~my@pQvl`hMY13nQ>slPa^Z4sdK{LNJaw?f#@v~(&(@q zizmUywZ@fCOjusp9gK;1i@+s>(IvqHu*UZ-OsV8W)6wlM<6nFf*>F7v(xoCYTswEa z9lHlfOp;n;(}$bQ3_OElmNRSO1B$eS7odNhTr`GWi7 zklOn*%G~w}^(*>z>5y4F54y_>mv%<@-;48p2($YQ5|*x+!6xA{6hTAJPi1=5`9w(s z43*}+tDXav#=7XB0b5|blLoDSFV_|d@Xvr~#wAt0L#NA>c_=*KTKB1IQWVTsk*q-< zcpD4o^u(v1<=s8c93m5x?|%F9sD9XJ){|C9P?-UfztM z>D?Buo}Z=1t>SM(bOE#JDIJK|*H__DLN-p{Vkvet0b+FUHh~0gpzit-XRCJ2?Rc8Y z$V-wo?grjQRHbuf6E@m=&*2QuQEaIq>Uu}&@EX2xiwVOqcZ5ZVD<{6SE&o5`P`&rGwN1%(ses>X1`GRCZ0f1ZDZ*}8R!Gb6Rjzo;b z&K7<8Mp3=zaQ>^wr@$=eq#YtG$hW@dS+b6>Q-7A8=Ohq&v6gc!Gj1SCx|f4jHA|i^ z3iP%(NR(iIQeWp@U;-|xx}x4phR;~Fb4**)4=Fyby8QVD0scmx5L_Q+Rrkxk3D%Tq zl|r+sedrJaNQIk{%ZM^RTte-7nwu8IsCgSU$b55Bg+Vxc2P~Cx3fdKyiQ;B>4x;H142*L zyDq9v8!?+iPUJ$jERUphRmX8tEJuGjEBE~%jk!a>d{VnXUWoYSRW0*`z6T3Bse)Kq zio+9!+`-_yi<*&}#-Af9oIop}3i4#e(ryu9T4v)0c*Ch(hL z-D49NC{h%7WErlvSmMgfc%ioCxp2~*4yBIvpGt7`J6X))Qt(TD1u^k`#*f6Er>}TJ zl^nAVHK;R3Dro5;Pvdm*{;K7FcAur?X!(XYw$R?sN0WR~xa_X!c$GHN6eGAG$A)2i zNeNaH^^?Hm3T`j=IU3*7uQgy^uQ8S94doqnFlVxHQoSWs6*PZXdu-br%tAVZFrL0i ziH9#~SqBW*q=enpCsMbu^=AMZ^4{EWuSA&%D~zKP-lP3dQ52#awQD?Yhs#k;kxK!p zUgzx3;$agHPRLg1r@+yJlVfMwLBLa-gG82af_=Lrey@5a0pj62|zW%P4g@m z+ISL+6B>~y5^>#0(0sq8w*i>?!HYn=?TL;1);G6WM22T1dMgkYQ2OGbz&WUNty27`4hQZ*(>8!w+7H`FmCQf*Q zE^qm2B30Qo${whod@~4*Y;FiW@9oaB7_s1`>~8cgCLvNf1)#M5(U)Umet_~?;`cEw zEnLILcDOI@Rr5Wv4B<8RDOOfjgd>xl;tcBb&zfTWubH>3krrcgV(Iua=Dd))WbJDtC|GDhmH z@X01~J9r5Ef3Gl%FWq`LV#^0KmjsS)jG;`h=aLA*$S8$}m4mSNWjv1r)uCZ+C|A^z z+Y{+*u7`|Zndzqb+v0ieaC9)!r7@9A6S$rZ;%#N$Z2;7-082gNKTu-#;A;$x$;T{_ z)!|;wdjSVhs)s4YGQ!~32zhNi^c%r4q48)0tgn^=zLg{rt8me8{|@6Ir7`%1NU z?7i&mY%^|Y^z96@BWtmBMn_D{TpU}j7;?~`H>mgI3Wy#iCtV|#c=HCX&A$4a5sUv2 ziYExldE@Vo--yHEyb{x7ACq7!ro&3Ll`#M*UA~V9VBChF001(WE4hPJcPUOcR^)9X@+_|f$gb++>@UtVtlk*AZ5 z1RFB|RhB()mmXsJ$p=O|?4r{@At>iqKIsCA-u6Y)YH%3^ZzDScy?8MN42x_)eT$`M zfHV@8Vqaz+o~98!e=O$0K*SuvbXIg2&h9R$mHB@4rIyi;>$FH{UO>wNFYL$)aM48m zA{6y=?WC3@K>b0NmeKg*VP^S$Lim8s2z`o7C4~9yS}$70{5((6jE?F6y!mVRO4W zF(N3!O&N;>)2{FwZvsVXVCK|)h|LtS-+6lm5TxvcW_8XAtR4Tp1;E9hrfRa@?%VgL zwb07rku4BbXbG8Vy|-7W%9V1F9xlEy`fzuv1+%;sUz_2sNTe713}$I_Yy4(~uM&C~5@eV=25 zpyNuP{1uR%!iB+$!Crh!$#(>n5QJ(T+;#k?Bz;H6DPdg(qjZ(HneW>5(S$IZUF${O zO;-k?Q@Z6NpT&}Ab(0LSZgK^!#LA|-sP9yHC7Qhfuae5SKAck0qcjAV;7hAuN&Cvk z~S7qdr&vRhElY4CR<79Yj-L zdQ#Z6{o!3is=#w-Jd#x7V7$Qai))ayjafnLAaZ))!-(%X`q5@Pt0VWK3r1Vgz7zn8 zfjy(95ogui6wh0NQmBBO{4v}?)x~aaBzSB!&{m$>tDN_OQG*KpwR3HfF-!@KaZ@nV zII8mPY_2Gz>3Y%hFBdh^agaoNaYB02{452VMwF!T9_F23&hZlJ>Jq;+r;_ zsiFj#%~RGKrB$NT(R1$G4*^|#;O$akFyd#|XP`79HvLo}`>12f?LEzs8zftVcYG4N z(8#xrXe9y&Boi4kxZJZOL8WAh`)h>uhK`a=lEM!#@IVnZjw?zH(DV(sAibM>QzZV< ztJo<*NP`!qlzE-cjy;zTSdL7tWA{Z?E96YcRlr0S{dp0@G)9r)b> zDZU!dPBadaBT44xRbTudqUrx`=enw7d*<2A09k$dzJgPsRf1wz%Z*G1z%(DZ>~2U* zrVHod8$p2I_-{l=d=zg6?)pvT+Ori-%cZ1eqvU!8u@)>p(COAMyatZmF_BtNjN=ARJHtCr?aAG#i2&gLlbqJrrqyY3GvPkiw zFs5L%a5!Cwga~#@uqs6MUL3Mi3s#3E1fA0AZdnTZMt%ke0pfS<9W< zxv_D;$9kg)lPQ0Bu%SG{_aQOHC9F;^>fX_UXZL=&^3n};W+UtB9ny@po_n^Jn*DW5 z3T)xTeT{3A%5T$*Q6nA=CMAy8G&~8LGccq-LhYz4rX&53N4xWD$*2HK@WS{HkO44` zPSGm851u~&uEOcI)t-|77K*PFw?8a!YxFg0$Ms(U>bs;DQ&ROW5LR^2i@Xj$5{7+J zF1oavE##eB5d+%YB?DB@Fp}x=Mc~iLWBg0-T`abeZcA{!w*0>H?>{))KpkPzwwh!y zu#2P+JD1C8sYHJHhcMDlVSM|^Q4;exNQ{CltzecCUj?)}1!PIPjTvDZqj@7C1MD!> z{jIvivEa-{5Bk(c7VX=CbF5V7P4voU`KtQMyZ}3-x)A!HZlYNf)lQsxTM$36lo~P3vC`Ch2_Z8(EES7{blgDe0FNxj&Dc){w_%*F;|7;Z19^APgpe_ z3Ldg@yJWT+Ks2|q)ed>ypMeOQ{5EayzxGY<4c{iZ1^LsOs;%}4mo`ypd6uC6lIm4_ zkz&C6y(=m}Y<94vojxwH0I!@kT|0>;(EP53&2S@Bg2HMZlkbmzeCe&Wf?nj*E?95N z=*j#n*me7xYS6TG!e`<4K-oNTm(L7{LO?pI_Vt6h0NiN@j)QCND9B33HM;*NQxdO6 zP8_EZuKQM)&1UnXLQ$ylP7AdyU4vX)RFYK!fg_<>uI@>ghO%<)YI16}F9^C=gGPiU z3h<$^9r?J7n%THZPZsJBQ&Bs!XdUS{g_EHgAbr5a$@!DRLoLguhmFzT5_nr_b3#Oz zh99Y%#BDa(=&UG}jS+qO*+O5eG4jJ9;@6pAbe$j5j(u}dN_v!Q8{9 z<^oH42+C$M1KODt8)~9_i4zhY(y;IlkF}%G&mrmjn#;g_|La5oqFO>-wLHcXLM&6f z(5~Wx0@%JD+(#vXc!e@Zfi@u7KzRs_0s@Z-53KvCfQVH^{aG+-A}wrk!3If=vo2C3 zztTSL*A9!8ca=W~R8ut--j|czwTJgb#Kt=sc`i;?b`ZHlUA9-WU3+XAc>{nJQ>~r7 z!8x(k{S^I)+%$5*z;n`jeZf1Z=b;Qpey*$5Ulzit;#o*f2#I@cM)xXYJ+<{zvy}d+ z`b_h@3j_vO-L5r|0qz@UqK{1ZaV-dEYJbrW)_~Ni3m^gupW28rD1ZT=KE9BBTC6&{ zi=7L5P9t9VUBSPxTWDp7gk+(sx?0ya%;-ugjYWUK;SDc*qkspr^H-|nD3DTOJX3Cg zehKiS8Uf~0=wjzdDl}S%$$7J{XgFM>hn9x7)q3xhR)Mfa*QQY8GK63?q1qm1>#yH4 zEz-c>(2=}gaHS(VN<9_qGU*~h++2>Ul_}2k{vNNQ`6Csu`fKI};AI1}E3ATP&}q zPf+kkaW2J%M~&zl@RJ1B!a}^~Dj3C|KW^33$X~o`mrJRZWQG|c^wGpJ1$1zGLt{-J zjC_E4Uj5u20tH0I_P~QkJ>XV+C=*D?2nnjyJXM^FcbnG?0sSs(9pH^3&jOA5ydMDf z-gpo-4gwyZm6}bxVEDj!M6X2OWxZ)YV1emlC1hwW+y}CX9IMOCf{uS5y_LW^RBgHOH{4`85mrun zfex-iJKYTRZq$Dgi314(V26VJ5ah~(8UaR(;xc$zr1mF(T?(Re=t_v9(a8vG@Mxxv zFAzbUqj9*_Vj{*;w|yX`U#SzDY@eyAS;{EqPtoJD1d%OP$SnE`H)O#2jVj;o+s?ZA zBh`@-u2c$&$2!anQ(AM@zl}8?IBoyu{9J8{0dT`uS~M7-)#sQ)!rw-1`{_Qe?DT&x zTk^!^U1?MkSr)E92#ZL-21G@{p2PyIZkUIzidgRuF-v8)p!dEvTsN0;rk$Dv4{)pE+lKO`TJz_g=kw?{~lZ zy;skp=Xj{;*KI#JOqp@Q?tr~K{}ySe;`aptcnQMF(H zu1+TU43lm*V=kMVG!1Oqwq4XfG`afpzOwIiY82cQUt{8((Z{ z9UIr-;<9Y`6pT^ra3iE_S!u50V6S-RwpYL9N z{*J?je(vz|0R;|4#%Jb^e5lA2u9U<|*2kLSS;t(ff5*nA_029>bhOawW>`VbqP?{R;<^8DsjBYqJfq?; z3uV06edFTqExU?Oj_xHaPj5$^84~a|Y{Wo4ysZk<(RMUF_4z>C+2W*?S9&J|jOctcsI>RD zxT8L1EgGoXXiJ{kdu4O5qv_*qO`WyfUyOnOi@tN|S~=T* zNK>Zmh;^T55-=$&e_`CPw@*cH?29)#sMfaF`zqmLweWnpC%!R(3ETWWxE1(Zvf|Mjax5aP3m^kAJz}i67Oq zX7FV5?jLvWRmJpq1=clfcxHFJdfm4RUE5Coo^BJVDVK3v!E@P5IBBe&dk zd5^P5GAn%5v@vm9S#nr8audFMR+?#;o421E1aFzt_wRhjkU zY0Xx>$M%z3ie{6XZEK%?+kE_-u|<$b*-+^FHKWWePLk%^b2gzXZ2k4PqMWMKh{s3# z^82Q`P5ou)ip(-SS*-e!V88E8v-N2c6X*>y65CT7rzFzjY2MpdVMEfbRtm<1E_FEd zfIC+3cjqw|n=j3Hxhj8cdo24!zDq!(`a(?LEno56(f$pB^c;-30!yuG*ce%=@)%J2 z6A#FPc#=}Bc2@A*np7T8__g};Nl|a(&}0`@Oqs* z1uvu~xK#SUlX4YEJ<$(Vg6U%zA;E(o!V2UGo&xQYuYK~g5ook0buHwMsfHNl&c!7W zW^xEGti&+7RH4`ULVgg>1_#b+aKTZ-Mf|RxjqigYf{$~ZZ-27_=Q2~`jS*UXWrvZM zw{fMkpPtYmPs0zxEaa0Z4Tkq}2`+Jv;3DuJDCgtR$`(36WYc<+<0;P=>Esnqu#cOeI$gHwVTVHm4Q#>In`uMA32W+YvY zd5(`q2ninyY$XneH4z?N*Kz^oVvaDiuAf#Ds=yc+CXL4f8Dxrq$c*x5$xOcnbC8)M z5D3-EgD&$NT@QkJ)&}FAaxU&kT22LrmdW=pi1#iB_B;$~HJx-a*X0rj@%}0o5=5a% z=Lz$4g?nX$!~0Zvi3UgnU`>ZaXhI?t&6WI3HIW6`vMPxxQcM#nI}L;^B{fM%P~IeF z$#2yNYPvsEN)@B&C4Q@gN~_nw)M2{{RsSn&^F9JL>{DPACLc_d`#BsTF%MI1hx$s0 zUXTDHZU@MF2i?RAv8)fOkt7ZVF$KaKtZM`SK;y=VCQ=c+?lM6G&|-99&;p(zT~JOS zOG(sdGA>K*gXAzFu>?Z}B_)wa>TXfi8tFWNdTLaoyk~@jBf{N?Dv*s(zB>sj#XR55 zJY5cSFCr>5y6J=|0-zg$@j*6#-3>~}gKo5t*otgG2`dN@&IcX@&I*K=!OT@8D}x~x zN%w@|z%B_?h`7nBWL0Q@g1MWJRR$%X!0tkRbQtHo$JqW3<5OifU?lfZ7?sS^HSUc} zX&aDq8L69SV3h-Fu2j1d&_WHU5JWPv0EB_iWh+|@^kMxb_oJw!6Gs>E4}*8CP!WNQ z7BC}vKUhx@fh;cWs*J~74S;c1$ch80N+3fQP#~JlOvwU2S_WXl$^&$$)IbKw#*7gU zxC2_o9MvH=VF{qKUeo`Sf?pY4ikI z)9PtY6%|ygCwpB`q^I{m(HwBjSB?Ep9iR*pQAq5h-t%!jba_A&lAQqL#|I}XfKa46 zo#xetrULR(`k%1NlKTHV9SXVZZl(3KM~g7!=y zK?5Lcl1rll2y>PAqmt>WVxbF{@>#frdLPI8=0C(ko3LiFv4zA;Ju=OL4n(1tfMznd z#Z;3tv0-s@kTwuXa~KEe&=llANG#M#R?^YR14E!^^3UJ|b;grULqNplv`3$Ad9`TQ z4gUPoV*TMtuz8QVN+TblTSzceRxHi_`(DG=FADlBYl*EpcZ0I8>GzqM`Pcw4FwB)Y6-J(*D6fv3;T~ zSVY&g({2;4ILVI0STzPKVTl5Gy2_8_4SY(yAGrFM`dSgrp}qJ94gg|9NBEWAr1?fx zfdZqI?R4;Jzy?x)8+%xUlwWAuq7qZ&KzKS$0pV0#q)I(^SjSPT;J}uLQs{PsB@G8C)FEBR%NVn$ucMxq8V(zCBuv;;sZ$f!id$6{ zU`BP}C3EY=7i#spG_BCrj$%Q=QW;VWmA$v4_OzyeGYdLR0uBi=9L{isDEJ`h)%fKr zR|V)tyw;C<<*Xpna13A*Jv{dtkpo1JbM;E%X{1z`Z@bERMe8MCGF{q5r;J(~rCqedU&vBy69bbQ8Y?8z z<*Vpq%495$fzh7vq?JbMJv?admKn}AQb?MKK7Y>B;w9=md>Dl3hJ-$xn^pJJdxBv= zUMzrL@YbtVU&LSo;PKbf7yGO0$?dtIge3dKq`>is0v?}-1_ePR8&6t~xnGU!m-Zxe zU2J-T4n+TpEB<>1#)JFAi-5l9ld(O}mwYm&v&n<;Vz^7;z6p0T+}&`a>y`FtbVk#k z>$7OS4|j^oL^hX;g^NOhA|=oX7KyOPh!C;1iE+b&g1Moq#X;hjnHV-ZM8Xq?ubCMf zEDni?z%aj1u_Q7`1Y?qrHSlK-ZGWan6u#zNZCrA+|Us0*x=0h(p8H U!dvfkL1J!rREQX&{Qq442KmAZP5=M^ literal 0 HcmV?d00001 diff --git a/installation.txt b/installation.txt new file mode 100644 index 0000000..cfa5a18 --- /dev/null +++ b/installation.txt @@ -0,0 +1,234 @@ + +1. Installation des Grundsystems +2. Forth im Überblick +3. Regime im Überblick + + + + +1. Installation des Grundsystems: + +TriOS kann in zwei Versionen instaliert werden: Mit oder ohne Forth als integrierte Programmiersprache. Als Standard wird das System ohne Forth installiert. Die Installation ist so für den Einsteiger einfacher. Möchte man auch PropForth installieren, muß nur eine Konfiguration geändert werden und ein Basiswortschatz im Forth selbst kompiliert werden. + +WICHTIG: Das System kann nur mit Brat's Spin Tool - kurz BST - compiliert werden. In den Einstellungen des Compilers (Tools/Compiler Preferences/Search Paths) muss das lib-Verzeichnis eingetragen werden. + +Download BST: http://www.fnarfbargle.com/bst.html + +Installation ohne Forth (Standard): + +\flash\administra\admflash.spin --> Administra +\flash\bellatrix\belflash.spin --> Bellatrix +\flash\regnatix\regflash.spin --> Regnatix + +Installation mit Forth: + +\flash\administra\admflash.spin --> Administra +\flash\bellatrix\belflash.spin --> Bellatrix +\flash\regnatix\regflash.spin --> Regnatix + +2. Der Schalter bleibt ab jetzt auf Regnatix stehen. Ein Terminalprogramm (ich verwende Tera Term) starten und 57600 Baud auf die Schnittstelle vom Hive einstellen. Nach einem Reset meldet sich das Propforth im Terminal. Datei "system\basics.mod" in einem Editor öffnen, alles markieren, kopieren und im Terminal einfügen. Der Quelltext wird jetzt im Forth compiliert. + +3. Im Terminalfenster, aso im Forth, dass Kommendo "saveforth" eingeben. Damit wird das gesamte Forthsystem mit der gerade neu compilierten Erweiterungen wieder im EEPROM als Image gespeichert. + +Nach einem Reset sollte sich das Forth jetzt komplett mit seinem Prompt sowohl auf dem angeschlossenen VGA-Monitor, als auch im Terminal melden. Im Prinzip benötigen wir nun das Terminalprogramm nicht mehr und können direkt am Hive arbeiten. Später, wenn man in Forth programmiert, ist die vorhandene Terminalschnittstelle aber manchmal sehr nützlich. + +Erstellen der SDCard: + +Im Prinzip kann jede normale FAT16/32 Karte verwendet werden. Lange Dateinamen werden nicht verwendet, Unterverzeichnisse sind kein Problem. Es ist sinnvoll, alle Dateien aus dem Verzeichnis "bin\sd-card\" auf die SD-Karte zu kopieren. + +Das Verzeichnis "system" hat eine besondere Bedeutung: Hier sollten sich die Tools, Erweiterungen und Bibliotheken befinden. Mit dem Kommando "sys name.f" kann aus jedem anderen Verzeichnis ohne Wechsel die Datei name.f geladen und compiliert werden. + +Systemstart: + +Beim Systemstart wird immer das Forth aus dem EEPROM gestartet. So kann, wie mit den klassischen Homecomputern, sofort unkompliziert programmiert werden. Neben dem Forth gibt es im TriOS noch ein in Spin programmiertes Betriebssystem, welches sich dem Benutzer durch den Kommandointerpreter Regime präsentiert. Aus dem Forth kann diese mit dem Kommando "regime" gestartet werden. Im Gegenzug kann im laufenden Regime mit dem Kommando "forth" wieder zur integrierten Programmiersprache gewechselt werden. + +Wurde TriOS ohne Forth installiert, wird der Loader aus dem EEPROM gestartet und sofort die Kommandozeile "Regime" aus der Datei reg.sys gestartet. + +2. Forth im Überblick: + +Einige nützliche Kommandos befinden sich in dem Modul tools.mod. In den meisten Fällen ist es sinnvoll dieses Modul mit der Befehlssequenz "sys tools.mod saveforth" fest im Forth einzubinden. + +Wichtige Tastencodes: + +[ESC]-1 Screen 1, COG 1 +[ESC]-2 Screen 2, COG 2 +[ESC]-3 Screen 3, COG 3 +[ESC]-b Break, Reset der aktuellen COG +[ESC]-r Reset, Neustart Regnatix + +Wichtige Kommandos: + +load - Datei laden und comilieren, Ausgabe Screen 3 +dload - wie load, aber Ausgabe aktueller Screen +sys - Datei aus sys-Verzeichnis laden und compilieren +ls - Dateiliste +lsl - Dateiliste- Long-Format +cd - in Verzeichniss wechseln +mount - SD-Card einbinden +unmount - SD-Card freigeben +words - Anzeige Wöterbuch +mod? - (tools.mod) Anzeige compilierter Erweiterungen +lib? - (tools.mod) Anzeige compilierter Bibliotheken +cog? - (tools.mod) Anzeige COG-Liste +cat - (tools.mod) Ausgabe einer Textdatei +less - (tools.mod) Zeilenweise Textausgabe +dm? - (tools.mod) Anzeige der Systemverzeichnisse +regime - CLI starten +aload - Adminsitra-Code laden +bload - Bellatrix-Code laden +spin - Spin-Programm starten + +Wichtige Dateien: + +Die Dateien *.mod und *.lib enthalten ganz normale Forth-Quelltexte. Damit hat man schnell eine Übersicht über die grobe Funktion dieser Quellen: Lib's sind halt reine Sammlungen von Worten zu einer bestimmten Funktionsgruppe und MOD's sind mehr oder weniger fertige und abgeschlossene Programme. Ein Beispiel: + +Die Datei hss.lib enthält Worte um die HSS-Funktionen von Administra anzusprechen. Mit diesen Funktionen kann man nun ein Modul (Programm) wie einen HSS-Soundplayer schreiben. + +Im Gegensatz dazu die Datei splay.mod: Mit diesem Modul wird ein HSS-Soundplayer ins System eingefügt, welcher Funktionen aus der hss.lib verwendet. + +Die Datei benötigt man aber mehr oder weniger nur zur Entwicklung, ein fertiges Modul wie splay.mod enthält dann schon die die entsprechenden HSS-Worte die benötigt werden. + +Die ifnot: ... Anweisung sorgt dabei dafür, dass keine Funktionen doppelt in das Wörterbuch compiliert werden. Das ist quasi ein verteiltes und fein granuliertes Konzept analog zu einer DLL. Die Forth-Version funktioniert dabei aber im Gegensatz zu DLL's nicht auf Bibliotheks-, sondern auf Funktionsebene. + +*.mod Module, Forth-Erweiterungen für das System +*.lib Bibliotheken, grundlegende Wortsammlungen +*.adm Administra-Code (z.Bsp. admsid.adm für SIDCog-Code) +*.bel Bellatrix-Code +*.bin Spin-Code, im Normalfall zur Ausführung in Regnatix + +basics.f - (mod:basics) Hive-Core für PropForth +ari.lib - (lib:ari) Zusätzliche arithmetische Funktionen +cog.lib - (lib:cog) Zusätzliche COG-Funktionen +adm.lib - (lib:adm) Administra-Chipmanagment-Funktionen +hss.lib - (lib:hss) Bibliothek für Hydra-Sound-System +sfx.lib - (lib:sfx) Soundeffekt-Bibliothek +wav.lib - (lib:wav) Wave-Soundbibliothek + +bel.lib - (lib:bel) Bellatrix-Chipmanagment-Funktionen +key.lib - (lib:key) Tastatur-Bibliothek +scr.lib - (lib:scr) Screen-Bibliothek +sd0.lib - (lib:sd0) SD-Card-Bibliothek + +debug.f - Nützliche Worte zur Fehlersuche und Entwicklung +rom.f - EEPROM-Dateisystem +tools.f - Nützliche Tools (cat, less, dm?...) +hplay.f - HSS-Player +wplay.f - WAV-Player +splay.f - SID-Player + +Administra-Codedateien im SYS-Verzeichnis: + +admled.adm Testprogramm - HBeat-LED blinken lassen +admsid.adm SidCog-Version (wird von splay benötigt) +admsys.adm Standardcode für ADM mit SD/HSS/WAV +admym.adm Yamaha-Soundchip-Version +aterm96.adm Mini-OS für Administra (Testzwecke) + +Reset-Fehlercodes: + +0011FFFF - stack overflow +0012FFFF - return stack overflow +0021FFFF - stack underflow +0022FFFF - return stack underflow +8100FFFF - no free cogs +8200FFFF - no free main memory +8400FFFF - fl no free main memory +8500FFFF - no free cog memory +8800FFFF - eeprom write error +9000FFFF - eeprom read error + +.err-Fehlercodes: + +0 no error +1 fsys unmounted +2 fsys corrupted +3 fsys unsupported +4 not found +5 file not found +6 dir not found +7 file read only +8 end of file +9 end of directory +10 end of root +11 dir is full +12 dir is not empty +13 checksum error +14 reboot error +15 bpb corrupt +16 fsi corrupt +17 dir already exist +18 file already exist +19 out of disk free space +20 disk io error +21 command not found +22 timeout +23 parameter error + +3. Regime im Überblick + +Da wir ja drei verschiedene Teilsystem in unserem Computer haben, muss Regime wissen, für welchen Chip eine ausführbare Datei bestimmt ist. Den Typ ausführbarer Dateien kann Regime automatisch anhand der Dateinamenserweiterung unterscheiden: + +*.bin Regnatix-Code +*.bel Bellatrix-Code +*.adm Administra-Code + +Dabei genügt es, den Namen ohne Erweiterung einzugeben. Dennoch kann es vorkommen, das man eine normale Spin-Datei mit einer beliebigen Erweiterung gespeichert hat. Diese Datei kann man dann mit den Kommandos rload, aload oder bload ganz gezielt in einen Chip laden. + + - bin/adm/bel-datei wird gestartet +mount - SD-aufwerk mounten +unmount - SD-Laufwerk freigeben +dir wh - Verzeichnis anzeigen +type - Anzeige einer Textdatei +aload - Administra-Code laden +bload - Bellatrix-Code laden +rload - Regnatix-Code laden +del - Datei löschen +cls - Bildschirm löschen +free - Anzeige des freien Speichers auf SD-Card +attrib ashr - Dateiattribute ändern +cd - Verzeichnis wechseln +mkdir - Verzeichnis erstellen +rename - datei/verzeichnis umbenennen +format - SD-Laufwerk formatieren +reboot - Hive neu starten +sysinfo - Systeminformationen +color <0..7> - Farbe wählen +cogs - Belegung der COG's anzeigen +dmlist - Anzeige der Verzeichnis-Marker +dm - Marker-Verzeichnis wechseln +dmset - Marker setzen +dmclr - Marker löschen +forth - Forth starten + +Marker: +r - Marker für Root-Verzeichnis +s - Marker für System-Verzeichnis +u - Marker für User-Verzeichnis +a/b/c - Benutzerdefinierte Verzeichnismarker + +Die r, s, u-Marker werden vom System automatisch gesetzt und intern verwendet. + +RAMDISK: + +xload - Datei von SD-Laufwerk in RAM laden +xsave - Datei aus RAM auf SD-Laufwerk speichern +xdir - Verzeichnis im RAM anzeigen +xrename - Datei im RAM umbenennen +xdel - Datei im RAM löschen +xtype - Textdatei im RAM anzeigen + +EXTERNE KOMMANDOS: + +Die meisten Kommandozeilentools zeigen mit dem Parameter /? eine Liste der Optionen an. + +sysconf - Systemeinstellungen +hplay - HSS-Player +wplay - WAV-Player +splay - SID-Player +yplay - Yamaha-Soundchip-Player +sfxtool - HSS-Soundeffekte erstellen + +vga.bin - VGA 1024 x 768 Pixel, 64 x 24 Zeichen +htext.bin - VGA 1024 x 768 Pixel, 128 x 48 Zeichen +tv.bin - TV-Textmodus 40 x 13 Zeichen + diff --git a/lib/adm-ay.spin b/lib/adm-ay.spin new file mode 100644 index 0000000000000000000000000000000000000000..f46e5ebf4bba206f9988fd15dc86559b021f569f GIT binary patch literal 34167 zcmeI5TXS5;amP>TF%?(kArE=T!cl%sBBrEbNa05_kXDFH)``-*G_e) zl6C!ls{2QRLHT2q9sl|u@!(&7#9C0D{%}S;7~=Zf>T0zm9k?U;+^W9N-+Q{hT79Ow z+mapfdzv)jZL0C8`kmyuE&Uj&)?3|K@=sJcs%}(!D%p|557Y0V-sgKh{V13Zet#>* z;NSHRJ9Jy}J&?87lcW#zcV99erC%dy1kV`#->K}$*ao~*$>ZuHmF%Xc=*zzDM`Im2 zP|cn69NRNWc7ygW612l{5Bq}pQqT6(A0O=7!vterHK}iyFNFoTjr5`9W%Wk&z{-%Z zNDmY4`|5vB_r`A|94UDv+R$VAda388&zgb$*&6Ta33iTt&Z-`ikE&A|LG?aQ$!ms)krw+rKkJChY<(lm^$^>2jnzBtw|A1OEZcWKOee2pZ_{Uk{=Jv7`}W=+c4Sz6b6E5?)O=8<{> zPH6+IeYP)At2tsko*18uN5&c2Wy|zJ7#$<<4xOrDKHiYYq^o!Daf_Yo@@L!2R;KoRQZ|MVdU+B51yqYk8j~}ZBWv&P3?(4%7 zqz8UCbY*(i6L*lxR>9dO7lH>Hs&`uy(eE`u11fEA2s1bUWtS7Sa2YP#NWU_*mMt<` zSB=fYn=88C)aRP&X6Yg=WP+pvTAim~rRTYp>4r~mYeVg?CtihSfjyi+=Xi=-kp7nb zhEC;P(N{Q6Ew11Jn$Ht+9!aA6rX+ORnjBgRKJFX&mw3gP$nt29FhdFbbTre(c9bN5 zbd48$G(Vzc6Ed1I>t!DN^N%`W{g*T^{Hgj=@|i7HW(q#=^R{&3TJ<35#ntM!M?C(O z?p9R(X}aS3WBsDl8GSaAm$Y4dt9!>3zn2Gw*S?)10cJn^&zE{$_pyjt_w>y2B(H(b zg_q5ocrC%ev&0@;OZg74@Lc|E3==OGkNlN-In*6-0vMAm*%bUg$mchW{tL#oiMB@A z+MnvmPp=4r=b{Wa%)&$@^bww+y}&$I(#8&Yd&F!ss?d>T@q6t^Po^26NaBt-fh6G&Zgb;c2%H&SqA0`b9kg0j+BY|kbOjEu20tWU0eap z_GeUGkbc<)M&^y2>r>&3XGA`N-%tQnJ4bkvu|=+{6We29unCq~8^%h4(T~GrJ)eZb z>HrS3AHw1M01g`iIFPZP#0T0B;b0v+f5gjD(;d4Jr9UpXe>C5HV$s~9V` z`B~~0Q@h+#m(*XYFET%5UUJJz11;foS4%ScaHzjeIMm(JI##E$KC=3?13ON?lUh%f z%d)h)F5C9VcGQfFf>W%0)cd`zl@Vf`h=Dz}UQ1qZxol}&${4p>n#*NN`n_M_6>~?= z*qxl`vBlvT5e@A<;}eaa)!2+I-A74x$ZUQjXkY6|U55^j{0}k%9)cr-_k*`tpKZ3w`f#!NUG-qSHD z^!zT(A0_N1m3Wmic!_i^;YHZczx>sGI|4#eouhE%ft|#<)TQXC&nsx(Xhb|xEqqk$ z0Coci-W$Tq;us9yAbN5v?DaR+&)kl=HP>gg4KI(J2^hRcf3f5BwcA7a>Wk)HpSC0S zwrwPagI6!)Er$PyE$Oo8P*!SB^B!L<`)qz1K1t4)Ehqce?zIW6{+sb)*)z}oLRP%g z5oU(0Ddz`A0{%HVRbG9VE-7MgtWwtQzX#JctiV1;U&HpNZK?aDHLAd}AE)*cu#9nm z4fs}C0Ce^iFcwZJ$^l|zAWjYPbUNv;99#M;lK$!-Hq%Mi*jU0t+C8f@hTu)duhnDo z>%922_Kx^vY!=5a_WC&Pu}0^N$ZhE@Q5E?R?AL7erL-=;9OPAun{rh3W3p5cW$sP^ z74Nx(*+m7kEluIWqFqgHmD!-CH#7^+N^V^kqznH9>s(%wxHasbPd^gp~?T<6HPk?}$@j-A^i~j&Iw^q7Kb7(`i*$_LIS@ zW=3^h>t2q(u+YT_HMi+A-)&hdes(MMM-G}N#6!U3aPf2rfnFZ7O>;a4fk9Ie8?j-8
  • Sbb$rd`ISzrJS%Fyy5+cq$R#i{?%ue@5|(8sf_EE@2Wlj ztL2qP#xqaK9fYWnZz>&+ST`z8uh`RdtNF8aZ_cN6EVPWC(Xz|w{%V2( z?((`1=k5Ml!sZRjanaiPd3qxCODpr5<=am!1215feq6P@SFMce>H4X?rv>2g9m~Nx zCSQbb$TDU)Nk;#Wu;v-_`QTH z=PX(ej^H`oLKmoi-TpgIMXm5Fm?sxM#{rzr8|N>m@Wr|(&fDT-=Th3Ex}ksGE|-a* z$56slit{I5tpTG-jn?YRflycN0*}InL)In3DNBFC!HfAO=F9W>4_DLQC%f>M)nB^U F`~QRYjF|uc literal 0 HcmV?d00001 diff --git a/lib/glob-pst.spin b/lib/glob-pst.spin new file mode 100644 index 0000000000000000000000000000000000000000..a525a4be6de09fc6484285ea6379be29e945dfd2 GIT binary patch literal 39544 zcmeI5+jCS$l7~;snT@BjR@`)l`)-9L2Qsh9nsm8;!@ zZnxX%KI|slTDRHl*>~4Io81e$a?9@Q*%MrwbQ|gHp`AZUSI&0(-IH_%q|ejceLH__ z_knl5JKMdJXj!pqPr9EHtoz-!-BY`}+--HI?e|@K=AG^XJF44%+pb+VSX%~%7Qkl5 zuI<>hZTo%P-Lt>_RgkZx?^`H_Mw%REx+y*t^Bur z_~k3jxn^9uWzzbrTkpOy>bL_=8wp!+Zcy1<%pji`pW6$p1 zPaJ=EK;35dqdkQ#Y<732Fk86t?h|VZEvH5J^4LCTI5OY2mSh9EyP4z<#=Ca!al(7Y zAjnqGwcRB1AMI_Z8s^G#d-iUknzyik=jn6y0GeCgS)&;GPiHziUxG*jF2Dn{@UES~ zRoM!hyK4NTjm!2czP~7Je9i75XK=flU<_&h>7@V9lSXYNZIBkB8??EbY-t`wu9@@j z3VhlYm-FeiQFPJl@k*xoCnngcq>6STVQd^5md}W5>*o13?8`lT%bwBmbSejA0IW+% ze*4BN>;sv*Uf|h=HQ< Xek7Q!E0X_SCcj`~tE=M5513p72N!+NZy=ZMsx<8wjp4d~@x}OtofFzkeHeCsCl0%jr%7^UO z(?42!``tN%2L;#~(FBdbzGwx#bbh|u{VBEiY0_lq4tWW4d3<^L8s-_J<&o(jme7ZN z-mb15z*T&4zb$|2XYl4`@-j=^(!nox^*OBfL+63y?-LszC634kq2cl^cxRUn&&V_J z?EV2B#}{MV7FWzZCf&#OJ>R{bumoGK64O_Vqj(v#=9cLlvLzlnHT(voD|RMG@OzTz zUP+c&LX!PlF*p&|cTF=M8SH=@a4#LeeK&)9sfVG%K)O@)kIb zR=%9Ja=v>nYvs#sR)-b8 z0rm0$)Uf=jZJlNeMbp`~56ms=2Ug+1ah`Q+u8d z5}3uMGj{*{fo@@s7rQU*{fz;RzL$EEhvi=D`6X+MUNC)>XZD?>$oI%NN9N-_%QCki zdOb={!&~)RcI_IGn{(bKmwjZsg5zA-GPvY6e)s1j7xGC(fA4P-Bln6P!RN+{^~4+3 zIO3byK$`TCT9h5nHF5&AaL*{%w6@L}4cmkG>=`fbB(0;Lc|17eP?nP9p_&W{4S#0G z>diP`u!Q9#Pb4x)R!v_{x=ZgD4!5`|?CCeqyJ|i0w4iVJiCHkzO4L-K&vEBiZ4BS% zeLeHgXosE_9(Rp~rzQ)ygfCS#S+|8(pdtcK?ii2IV276TefZd)rYEW1%EVxx1v%`m zXW0KYM)To5?gzcMLGG`tvhE+q?>U9RgB)A&a&c^-xJ9+>zovWGm%U{^?=ZA4nMce$ zOpbBXbLM#_@c{hSEN&5{fvTP|^?^w=p;T+et&62wj=_VGnXqPO53Jd+R?JQ#; zlX;pjrO)fIls)d*b>349ePlfFc!@qz1&PRq)k%BFgpi3cl&f}?TAtv%ld8~qleir3 ztGdyzE1oTCuHff3fJKnegbl2lzuU0yvSm%@r`gjx=~sVisYdjn285KhQaqztzH63t zFX_$?*2Y^2Q(_&IAMLZ$xvr}Zoa<0%`kK+TaUkcs5^%KE=f6#^;WjieSt1$gm+p7k zJ}Y=n)KS!wW#(rdDY?^^#(W<;5K zf^z3FUIU-`#4HIPpjN5Lm$|HbmE(xLpb7X^a^W50sQi@1f{@Bisy)*ulgHh#Ox@uJ z&fq~@Rl7M>WNS|wc)?*}cnc#{juyjbeGnh#wqqmT8WK_+iD(f|E?e*C%+&uvC319* zcs)AcwT|SwC#lBiQlZvBWg1$MUCFl=6psP2+!h?TeHb{@u7IN`N(58I8Lc^Im?5V< z^GEp4!@|BWg)P0pA3GFeNF>4olf$>@cMFL6H+asAfgYJ&zqmpKLkdoT_XRZOxoc77 zFG)+HUxgP_WO=XAlR`*XaZoZZJNlyQ1Cp_rkpi^!qa0W3U6IR=CsM~~BUIpyW>lTml18lJ45 zGuIij@DyF*U>{?0Nh(q+Hfny|@Cxb}Po_4rle9*W#$!=mqIfcLaN+dfJ-9q#r3uamvIG*E&J) zr~TP+m;uw_O2dg^Y9S&gl$|nNX5NS9hj?6Dnd;MZ(cpo-2bc z^_L3XuHnI44Rlz~cvt))>QeA7#kN+~#Se^o$eZPTtmV zj~8s;NVaj-yxkjV1RH};{G(c}(T5z$;+{KyOKr=0Ge3dop|)J74ugZgv#1{zCd5Bl8Rkmu z!9ogOH#qs0_1?dkdhtH*(b?gaT3Rd574jnHFq*TMBuH%@pNGzPU8OBA;*R$=pzn* zF*Em#u`_Ht^vJo?$E?P@?-Ta3Y{oUH^~(%|zy&#~>Od|}<$(AGb$B@>O=V#zV1g+#0& z!sKzE7CmNodq3C{cwfKny^D5kHJfTQhCXr7ciPUWupG~4srxUZkZMOOM=Gt7ijgXE zdzM>}ZIjtD1MWt;L$ug5Ek#c?iv5mVaqkH?_FKg( z9M94cvY?L7d}6c?FXFACXUe zJnMeb3u{-^kQ_7Dg)63=j9I*z52IY(KMS8G>&NDIEH@yRR$tX^L6)9V6a6};Bfl%^ zf9ZZHH03SJntn|WC(M@2+c08V(}s3HH?!`DQ8DL~j92SNwr$S2XT3faKaW?m>V9sy zJ7He^#4DiMrBePb8NELLIUfh}Q7E@|-g;nP$??3^6;(&8e@p1U-Wf7w%?^5s2T{*i zqqeL~(R}Benlcho7yR|Go!8Qmd1C6;j03oq2}4Gq@7vdB<2$6jJ${_3y~ylUe%xO; z4q*qmcVPSmOv&m_m?Tb2k6(0en!n(Vd?hvN({^^epYR8a0LI)7X^*&#Z=iP;sfVe##k0}eyDx_?HF^Mqey+pFxPxh<*}ulu`#m2 zGMi(0o>w^gd2?80 z)VLQ4i@0`(>f#1A=mlsErVEA+5Tdd!?kkuDPDAV{%OoY zi?%%DPzxJ|<0X?MR>^FFp*GOK{^-o5L|fid0iV$E{pmaN`YOyzVE&P6v|H02Y~E8T zR}|(gU?=ESUUdse_4_q-#VO~EY8&1wg_fiBZRXPzm}2oIUBhE?Ik(Dp>d`r%eqkI^ zB}rA~@KsNY=iByC^;urIHBw(|XU?;aY!sZilB^~X|8k7nhs)-CRK4{Cn1+YXb&7HJ zGpUUjQKwoIxy_JfUQe3wI(VH@Q-Z&)ALBgEFjSW)T#t2DzcsJ(?$mz-mL65Ena(mB zH#jxU^We2#BrBL-EqOhC&|xTaZ4GArPOt#&$*s(L4E_Rz^PN;QX?d3>ep7^!p3b}sN6(qr!fNzd;)m+IC3%N7HPpFd5XN89RWN}j+$ zjsCFP1?y_b!3BkS2J8NrZ?T-o|L_#B=R!~rlu_gEYpY{FkJ>K{D~B+iQhM*yyd_EU zTY8er9)bE&Hi7w?jZ3s}cYNmI{*~eGbS{p2E|E6Y^jlqy!?=Id#NF{hBCcUKjUUgg z=1NaxQT^vh^u}#+k=ai%rzPHEtt&m6`4+`m;El(2;kV^sFkG}ee#@(Dd=Uya$= zuAA(&|HWeXGHUAkWxO1W*XLkNRjahFA>NYl$-lYQF_zl$#w9nky0*p5+jDU9-8mM+ zFSHRKd|WtQ9>8(KV!_=7V_et;Gn(!icKN6vv98U>&^&e^X=@&JEUkm5u0a;$R?CPw z_MlODT2Za8wh6c1u$|mnx@GzJ9y9r{%i8jMb{RVrwsazBVK{_dM8d0JgLHib!JDtqOU~K>c%`^7-cj~vqd_3oD%mRrgoo6+7$+3tB^$bgBiWMWX zdIYWhXUnrux6`Uy+GCB;BJH}Y+&2fcUNdDCM6A(LpIFz>=6pwq{9VtX}*7TLWDW5q7P4JbP$oIxQjeM4CJcQZ0jS{mC zJfD*;UGXX^aJ1tDJ(z&0YGYq|H5J=wo&dOd#T{v~HkTOB*fdtn{&2H2NAt_P!pWQ- z$FJWWnQ%RCpEi~4)mq(uADe?aeDU?(k~qQmo!=46QiFU|k*>loYP9}FA6}`Oxg~vV ze9zY_eN#Xw?>Us^>Yc?_GC8$trU~dnYivOy3$jPe?1ay(1ZC`j8cA8Fo!HD4POUWcx_KsM0IL1ylX8vG)Tmdr^EdKi_(7zDqy70eJfRtnST{YCzyXX~ z^Td|ZiY}^8wI1ixYSv1~#Puh9MCo1fnSoTwWDEY5TS#jj;5XgZhN;WmS6uk~1s|32 zoT`M2)w8b}BL&R;^t*qwb5^b~s>NS@^xOrj$jKw)w#t3nP@yty!w2Yubaf9`%_FroBmF0 z*Fz#CWAt%dRWFU(&xfsjH-0o){qxkk&f6Bf82k5YL%&Ogm*$)+ia#@bQ%;C~EVXS6 z<$@5c3%8SL$3-72io4|zJEeSYvZO8mHDEYN{u!ufzx!41Da0;aC8YUhdj^p@wR$%6 z1KHydZ0EllJXHRteImwiOTFJ{5qQkog%59cCk>l1Q0dw1W^|NLp%kcNAkUI+P|-dL zu4xVYc&-i0ZVXMe48ZRAWl%zW^)f&w%Do82@UE7GLxrcrGFjBC)i&mDw0C%H>uLLH zO{t(V>rK_N-v*^o0rEX%j!UZECk{H>d>X#mva^7S=J?qdoco?B;NeM!D@S9slZuHV zlxXhj{>g)#J$T}|&2Mn-EScVDT>z1XO1-=x5suuQ{DGdUqLXrSx2ZAQSqxYDarBVD zb*mX4$f55T9d`_~9s9d=K#?c|Z>N!8&CT6RejvPRivow7znve~kl_wJH1x5A+=8A% zY8|(96Di1towPRU{dodP$g*7HA&K6%KB4BYYR5F+dxZ=}*$y%WXa9c+I;I{-U%+?c zh$rX^#Pz^q=;%9(W~$GSO;NAWnsE2ean^^hWKUCdQ0;^xDw(S3NN zV9vJ>efE__br!7!QfXgayN;DA*s9il(-S8qK#3~pVS&emX=D&sF?Fu^%(t$c?uUkT zNsk>pDV1R9&U77FC2?L%lyehPN%;v0^Y1zq!E{d708WnnCh9Ai6MDYDQn*T?(%$|3w}{Lc1!?EW9m=0|pOXW2>FU#z1aqmU7g{Cr??P z-OgL&3&2LBVLmp;$Q$)wvI)ON9y81VWz@OEomTz6Fi$c|%Yp-AxKQ_(RbN}QM#=t` zniVoE_0SP`g73hi5_`wsTgPnSD;rU-dJI(dv2Yo|^-{~c3RKEv{#oCTQ@cDWu5AvC z^)|JAiJx^p+;{OD%iDehR~iPqF);g)rqsV#vRTR`?NJ(wts&%DR9J7_``fVh;GzFl zK&a6(v-+Yf{ObG)UlhGIw8qc+Z_n!g@h1I3_iD%8|7+)0i+Yeezw*5b+&}p25FbSt zqbYrBVGQP^#kl^Om_A>JueALpnbmP(Nsrk_W5&SkV|l@-AB&~($l!^5#nb73po{B% zL{GnkwIW_r+5CC`?OS(kOF(Twb_heieQgjwq6RtiCjSx6N8}<>xcBtPb`(uTRsmV{ z#>jNw@)(NyF{q|^4AeFsk1qy+ZsASdst;}J!Gz`OiR~? zwX%Ju9$6%ogf8LzUIxwMd|y9)l>Hs%D~-Xn1=lN5(U%6Y_o&*u>|b51=MeHQE1u;( z7+y_Kg;TX!A7dCp^M~oP6tkY#*xArQg|A zjp1m->@0FGht?h|@w@)plHI(Xo?43f%JA5Ux3cJO-(N$Ks;APxsLs|fOK%lfacx6U z$*&=_&i{X9yXcKR1b#)EN zwW@2ax3#BL%tejysdnW4kA&eEEc=xA^`nI$*M|DHeF$O8o`ZmE-NU_YeuDg#%4t4w zswy|LRyPx!-s@dtW>(-%uRAK!{y%Q$S;RB*kA|RJI0h*2gg!KyLQcVW>^zLx_{{UP zHPki~$H%MS^;@m;Hl(}~)q1PGHVnmc%leJh`7ji>!`55%wP7gp{cymV1!XZw1FH=M zIZ0t{ z?@!rupx5T}Pp827cc+5N!yIj-|MI?SYnUe8XSO0^V*f+;mR)0Y(yFa)+OS_%hckvo zjdQ-|Tcq`|*e(Kl_A~J653h}E(ZV;T@?A6D>p#^n?_U4$mr*8SCpjg$O%$J4l}Z(9 zdV(5@^8fGVGlIxMnPEdci^{jM7iw9&uW@YF|1#(1u|ZW;OIZN3qnIUw-91Uq`z#~& zepe*_-4thFu!f(U4g6vx2#?5J)=fLAJ6LNxpyaf!VVlGALHAy8QlDTVBo`>`fb*uYiIwQ z8pj`)+6Ms6Ne=7}Ex9<4X-k<0JxKkJK<;_T zss&XCc`_`V)>PL#XIx_B5qz|Rj4&$y1DVrO^EBW%WhKtiGx4U>y5I#X`SkzyhFWnO z;QxE7(lK-Bj6gssyPCK}!P@x@{o3Wy^*}pf&h|R5 z=I+b$vd)cHL)W-gUmiDvkMm?>>Y3Q@A$ClVuMBI~F2d*#cIWmc|0FLO){*;r{SOU) z3+wj1owRNeopp~S8<5}gr%L;EoZZUt8k&7cWysfUF)LR884KOVHpAnCdu{h;?b^%x zIL=V>pOuRup>lu$%?0n5A0{$oV z7H{k0IP=C0!v}sq=OsHLyT5KNT(V!zf_BLkxm>g-RuiXKQ_4&bun*}XA>@Fh9a_oZ zFVg*ZO4Py~c(h{gUpL%1^N-^!O@lW0fe!LCQbPmQ?XT-tV1fR^f1X17ITO#J5B(Q4 zuHS0IH5Dw>9vYG3=5`U1aBNFH_iazGU0c<|>f=30vO(Iy77mM3{$>sNtUYnGkNEu0 PuT_ueUsCUa{ayYK!)rep literal 0 HcmV?d00001 diff --git a/lib/glob-sdspi.spin b/lib/glob-sdspi.spin new file mode 100644 index 0000000..b4c5c70 --- /dev/null +++ b/lib/glob-sdspi.spin @@ -0,0 +1 @@ +{{ Modified Tiny Basic for use with Propeller Demo Board and Hydra. I2C and SPI driver initialization & interface object derived from Propeller OS. Copyright (c) 2009 Michael Green. See end of file for terms of use. }} '' 2006/09/24 - Corrected action table for i2cRead0Cmd '' 2006/10/02 - Improved assembly comments. Changed i2cReset, i2cStop '' 2006/11/02 - Changed data setup time. Changed i2cReset timing '' 2006/11/03 - Changed read/write method speed to 100KHz '' 2006/11/04 - Added checkPresence, writeWait, and computeTimes methods '' 2006/11/06 - Limited boot loading to 32K - 16 (OS uses last 16 bytes) '' Added ioVerifyCmd and verifyEEPROM method '' 2006/11/09 - Modified boot and verify to use the minimum of the actual '' length of the program stored in vbase ($0008) or the '' specified byte count. '' Note also that these routines don't know about option bits. '' 2006/11/10 - Now control block address is passed to start routine '' 2007/01/09 - Added SPI routines for SD card FAT access '' 2007/01/13 - Corrected checksum when ioBoot or ioVerify '' 2007/01/13 - Stores stack marker & clears VAR area on ioBootCmd '' 2007/02/06 - Stores stack marker & clears VAR area on ioSpiBoot '' 2007/02/13 - Changed the way verify mode was done, combined code '' 2007/02/20 - Added ioStopLdr option to stop the loader's cog '' 2007/02/22 - Corrected bootSDCard. Needs start and initSDCard calls first. '' 2009/04/04 - spiDoStop modified per Cluso99 to turn off card '' 2009/07/21 - I2C setup times modified per Nick Mueller's timing tests '' Default I2C bus timing changed to 400KHz. Thanks Nick. '' This portion is normally run only once during initialization and the driver remains '' resident in a cog. These routines can be used completely independently of the rest '' of the Propeller OS. The start routine here expects the address of a 2 long area '' to be used for passing information to the I/O routines in the COG. This area should '' be located in an area of memory not expected to be overlaid by data or a program that '' might be loaded since the COG routines will be accessing this information after an '' operation has completed. '' This object provides an I2C EEPROM read/write routine that can handle both 100KHz and '' 400KHz bus speeds and EEPROM page sizes of 64, 128, or 256 bytes (or no paging/no delay '' as with Ramtron serial RAM). The SPIN interpreter can be started after reading, either '' in the same COG used by these routines or in a free COG. The control information is '' passed in a 2 long parameter block whose address is passed to the COG when it is started. '' The parameter block is updated when the operation is completed. Note that these are shown '' here as they appear in a long value rather than the order of the bytes in memory. '' ------------------------------------------------------------------- '' | cmd/status | I/O pin / device / address | '' ------------------------------------------------------------------- '' | byte count | HUB address | '' ------------------------------------------------------------------- '' The EEPROM address is in the same format used by other routines with the I/O pin pair '' in bits 21..19, the device address in bits 18..16, and the 64K address in bits 15..0. '' Note that the I/O pin pair is the number of the SCL pin divided by 2. The SDA pin is '' always the next higher numbered pin. The command code is in the low order bits of the '' high order byte of the first long (see ioCmdMask). This is always non-zero to indicate '' that a command is to be performed by the COG routines. When the command is finished, '' this is set to zero. The errorFlag bit is set to one if a NAK was read after a write '' transfer. This is the only error reported by these routines. A read operation and '' zero-length writes do involve several write transfers for addressing, but the data '' read transfer has no error checking. When the command is completed, the device address, '' byte count, and HUB address are all updated to their values at that time. For the '' verify operation (ioVerifyCmd), an error is reported if the checksum is not zero and '' the HUB address field is not incremented. It may be used for some other checksum '' reporting in the future. '' The pins used for the boot EEPROM I2C bus (at least on Parallax's Demo Board) do not '' have a pullup on SCL. This requires that SCL be driven both high and low. If the bus '' used is on pins 28 and 29, SCL is actively driven at all times. '' These EEPROM read/write routines do not provide for waiting for the write to complete '' nor do they check for paged writes. All bytes in a multi-byte write must lie within '' a single EEPROM page since the EEPROM write address counter wraps around at a page '' boundary. Similarly, for multi-byte reads, all requested bytes must lie within the '' same device since the sequential read counter wraps around at the device boundary. '' Command codes are provided for devices with zero, one, or two address bytes following '' the device selection byte. As for all I2C devices, addressing is done using write '' mode and the device is reselected in read mode after the last address byte. In the '' case of ioRead0Cmd, the device is initially selected in read mode. For 8-bit addresses, '' the device select code is taken from bits 15-8 of the address value. For the case '' without address bytes, the device select code is taken from bits 7-0 of the address value. '' These device select codes must have their least significant bit set to zero (for write '' mode) except in the case of ioRead0Cmd where it must be set to one for proper operation. '' SPI data is handled a little differently. For ioSpiInit, the 6 bit pin numbers for DO, '' Clk, DI, and CS are given from MSB to LSB of the 24 bit address field of the command and '' are used for all further I/O operations (until an ioSpiStop is done). CON '' Command code and error information for I2C driver '' (For convenience in using just OS_loaderInit, these are included here. The "master" '' copies are considered the ones in OS_loader and these must be kept up-to-date). ioReadCmd = %00000001 ' Read from EEPROM to HUB RAM (16 bit addresses) ioWriteCmd = %00000010 ' Write to EEPROM from HUB RAM (16 bit addresses) ioRead1Cmd = %00000011 ' Read from a device with only 8-bit addresses ioWrite1Cmd = %00000100 ' Write to a device with only 8-bit addresses ioRead0Cmd = %00000101 ' Read from a device without address bytes ioWrite0Cmd = %00000110 ' Write to a device without address bytes ioBootCmd = %00001000 ' Read from EEPROM to HUB RAM, then start a ' new SPIN interpreter in the COG whose ID is ' supplied in the lower 3 bits of this command ' This COG is stopped before the read is done ' unless it's the one used to execute the loader ioSpiInit = %00010000 ' Initialize the specified SPI bus and SD card ioSpiStop = %00010001 ' Change all SD card pins to inputs ioSpiRead = %00010010 ' Read one or more bytes from the SD card ioSpiWrite = %00010011 ' Write one or more bytes from the SD card ioSpiBoot = %00011000 ' Like ioBootCmd, but uses ioSpiRead for loading ioCmdMask = %00011111 ' Used to mask off command bits ioSpiMask = %00010000 ' Used to test for SPI command codes ' Options for commands ioNoStore = %00100000 ' If set, data is not stored into main memory ' If ioBootCmd or ioSpiBoot, no cogs are ' stopped and a new cog is not started. ioLowSpeed = %01000000 ' If set, I2C runs at 100KHz rather than 400KHz ioStopLdr = %10000000 ' If set, the loader's cog is stopped after a boot ' Return status ioWriteErr = %10000000 ' An error occurred during an I2C write (NAK) ioTestRdy = ioCmdMask << 24 ' Used to test 1st control long for ready ioTestErr = ioWriteErr << 24 ' Used to test 1st control long for write error '' Other constants from OS_loader i2cBootSCL = 28 ' Boot EEPROM SCL pin bootAddr = i2cBootSCL << 18 ' Address of boot EEPROM clkfreqVal = $0000 ' Current CLKFREQ value stored here clksetVal = $0004 ' Current CLKSET value stored here chksumVal = $0005 ' Checksum over memory stored here vbase = $0008 ' Length of Spin program loaded (# longs * 4) dbase = $000A ' Address of start of stack (marker below) VAR long cog, control PUB bootEEPROM(addr) | t, c0, c1 '' Load and run a new SPIN program if not start(@c0) ' Start up the I/O routines using a abort ' local control block long[control][1] := 0 ' Check for the presence of EEPROM long[control][0] := ioReadCmd << 24 | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for check to complete and if long[control][0] & ioTestErr ' abort if there's an error abort repeat t from 0 to 7 ' Stop all COGs except this one and if (t <> cogid) and (t <> (cog-1)) ' the one with the I2C driver in it cogstop(t) t := ioBootCmd | ioStopLdr | cogid ' Tell the I2C driver to load 32K long[control][1] := $80000000 ' into HUB RAM after stopping long[control][0] := (t << 24) | (addr & $FFFFFF) ' this calling cog repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB readEEPROM(addr,buffer,count) | t '' Read a block from EEPROM to RAM t := ioReadCmd repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (t << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB writeEEPROM(addr,buffer,count) | t '' Write a block to EEPROM from RAM t := ioWriteCmd repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (t << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB checkPresence(addr) | t '' This routine checks to be sure there is an I2C bus and an EEPROM at the '' specified address. Note that this routine cannot distinguish between a '' 32Kx8 and a 64Kx8 EEPROM since the 16th address bit is a "don't care" '' for the 32Kx8 devices. Return true if EEPROM present, false otherwise. t := ioReadCmd repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := 0 ' Attempt to address the device long[control][0] := (t << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) == 0 ' Return false on error PUB writeWait(addr) | t '' Wait for EEPROM to complete write t := cnt repeat until checkPresence(addr) ' Maximum wait time is 20ms if (cnt - t) > (clkfreq / 50) return true ' Return true if a timeout occurred return false ' Otherwise return false PUB computeTimes '' Set up timing constants in assembly ' (Done this way to avoid overflow) i2cDataSet1 := ((clkfreq / 10000) * 900) / 100000 ' Data setup time - 900ns (100KHz) i2cClkLow1 := ((clkfreq / 10000) * 4700) / 100000 ' Clock low time - 4700ns (100KHz) i2cClkHigh1 := ((clkfreq / 10000) * 4000) / 100000 ' Clock high time - 4000ns (100KHz) i2cDataSet4 := ((clkfreq / 10000) * 550) / 100000 ' Data setup time - 550ns (400KHz) i2cClkLow4 := ((clkfreq / 10000) * 1300) / 100000 ' Clock low time - 1300ns (400KHz) i2cClkHigh4 := ((clkfreq / 10000) * 1000) / 100000 ' Clock high time - 1000ns (400KHz) i2cPause := clkfreq / 100000 ' Pause between checks for operations PUB initSDCard(DO,Clk,DI,CS) | t '' Initialize SD card access t := cnt repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := 0 long[control][0] := ioSpiInit << 24 | DO << 18 | Clk << 12 | DI << 6 | CS repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB stopSDCard '' Stop SD card access repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := 0 long[control][0] := ioSpiStop << 24 repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB readSDCard(addr,buffer,count) '' Read block(s) from SD card to RAM repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (ioSpiRead << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB writeSDCard(addr,buffer,count) '' Write block(s) to SD card from RAM repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish long[control][1] := (count << 16) | (buffer & $FFFF) long[control][0] := (ioSpiWrite << 24) | (addr & $FFFFFF) repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB bootSDCard(addr,count) | t '' Boot from an SD card if count < 16 ' Must load at least 16 bytes return true repeat t from 0 to 7 ' Stop all COGs except this one and if (t <> cogid) and (t <> (cog-1)) ' the one with the I2C/SPI driver cogstop(t) t := ioSpiBoot | ioStopLdr | cogid ' Tell the SD card driver to load long[control][1] := count << 16 ' into HUB RAM after stopping long[control][0] := (t << 24) | (addr & $FFFFFF) ' this calling cog repeat while long[control][0] & ioTestRdy ' Wait for this to finish return (long[control][0] & ioTestErr) <> 0 ' Return any error code PUB start(ctrlBlk) | t '' Start the I2C I/O driver (standalone) control := ctrlBlk '' using address of 2 longs for control stop ' Stop a previous copy computeTimes long[control][0] := 0 ' Initialize the control block long[control][1] := 0 cog := cognew(@i2cEntryPoint,control) + 1 ' Start a new cog with the I2C driver return cog > 0 ' Indicate success PUB stop '' Stop the I2C I/O driver (standalone) if cog > 0 cogstop(cog - 1) PUB getControl(i) '' Return a long from the control block return long[control][i] ' Check for operation completed first PUB setControl(i,value) '' Set value of a long in the control block long[control][i] := value ' Always set the first long last DAT org 0 i2cEntryPoint mov i2cTemp,i2cPause add i2cTemp,CNT ' Wait 10us before checking waitcnt i2cTemp,#0 i2cNewOpFetch rdlong i2cAddr,PAR ' Fetch control information mov i2cCmd,i2cAddr shr i2cCmd,#24 ' Isolate command code mov Options,i2cCmd and i2cAddr,i2cAddrMask ' Only need address at this point and i2cCmd,#ioCmdMask wz if_z jmp #i2cEntryPoint ' Wait for a new operation mov i2cTemp,PAR add i2cTemp,#4 ' Now get 2nd long of packet rdlong i2cCount,i2cTemp mov i2cBufAdr,i2cCount ' Byte count rdlong SaveClkFreq,#clkfreqVal ' Save clock frequency and mode shr i2cCount,#16 and i2cBufAdr,i2cWordMask ' HUB RAM address of buffer rdbyte SaveClkMode,#clksetVal movs ShiftData,#0 ' Initialize for saving Preamble mov StoreLocal,initStore ' on I2C and SPI reads mov Preamble+0,#0 mov Preamble+1,#0 mov Preamble+2,#0 mov Preamble+3,#0 mov CheckSum,#$EC ' Adjust checksum for stack marker test Options,#ioNoStore wc test i2cCmd,#ioBootCmd wz if_nz_and_nc mov i2cTemp,i2cCmd ' Stop the caller's COG unless if_nz_and_nc and i2cTemp,#%111 ' it's this one if_nz_and_nc cogid i2cCogId if_nz_and_nc cmp i2cCogId,i2cTemp wz if_nz_and_nc cogstop i2cTemp test i2cCmd,#ioSpiMask wz ' Check for SPI commands if_nz jmp #spiEntryPoint movs :getAction,i2cCmd ' Get command specific action test i2cCmd,#ioBootCmd wz ' bit sequence. ioBootCmd is if_nz movs :getAction,#ioReadCmd ' treated as ioReadCmd here add :getAction,#ActionTbl mov i2cDataSet,i2cDataSet1 mov i2cClkLow,i2cClkLow1 mov i2cClkHigh,i2cClkHigh1 :getAction mov Action,0-0 test Options,#ioLowSpeed wc ' Set bus speed based on option if_nc mov i2cDataSet,i2cDataSet4 if_nc mov i2cClkLow,i2cClkLow4 if_nc mov i2cClkHigh,i2cClkHigh4 mov i2cTemp,i2cAddr shr i2cTemp,#18 ' Determine bit masks for and i2cTemp,#%11110 ' I/O pins for I2C bus mov i2cSCL,#1 shl i2cSCL,i2cTemp mov i2cSDA,i2cSCL ' SDA is next higher pin shl i2cSDA,#1 test FirstCall,i2cSCL wz ' Is this our first call? andn FirstCall,i2cSCL ' if so, do a reset if_nz call #i2cReset call #i2cStart ' Do a start sequence test Action,#%000000001 wz if_z jmp #:skipAction0 mov i2cData,i2cAddr ' Construct a device select shr i2cData,#15 ' code for EEPROM write mode and i2cData,#%00001110 ' with 2 address bytes or i2cData,#%10100000 mov i2cMask,#%10000000 call #i2cWrite ' Send device select code if_c jmp #:doStop ' Failure if NAK received :skipAction0 test Action,#%000000010 wz if_z jmp #:skipAction1 mov i2cData,i2cAddr ' First address byte is most shr i2cData,#8 ' significant byte of address mov i2cMask,#%10000000 call #i2cWrite ' Send first address byte if_c jmp #:doStop ' Failure if NAK received :skipAction1 test Action,#%000000100 wz if_z jmp #:skipAction2 mov i2cData,i2cAddr ' Second address byte is least mov i2cMask,#%10000000 ' significant byte of address call #i2cWrite ' Send second address byte if_c jmp #:doStop ' Failure if NAK received :skipAction2 tjz i2cCount,#:doStop ' If byte count == 0, we're done test Action,#%000001000 wz if_nz call #i2cStart ' Do a start sequence if readdressing :doReadWrite test Action,#%000010000 wz if_nz rdbyte i2cData,i2cBufAdr ' If writing, fetch the data value if_nz add i2cBufAdr,#1 ' and increment the hub address test Action,#%000100000 wz if_z jmp #:skipAction5 mov i2cData,i2cAddr ' If reading, construct a device select shr i2cData,#15 ' code for EEPROM read mode with and i2cData,#%00001110 ' 2 address bytes or i2cData,#%10100001 :skipAction5 test Action,#%001000000 wz if_z jmp #:skipAction6 mov i2cData,i2cAddr ' If reading using a single byte address shr i2cData,#8 ' construct a device select code for or i2cData,#%00000001 ' read mode given one for write mode :skipAction6 test Action,#%010000000 wz if_z jmp #:skipAction7 mov i2cMask,#%10000000 ' Either readdress device for reading call #i2cWrite ' or write a data value at this point if_c jmp #:doStop ' Failure if NAK received :skipAction7 test Action,#%100000000 wz if_z jmp #:skipAction8 cmp i2cCount,#2 wc ' Carry true if this is the last byte mov i2cMask,#%10000000 mov i2cData,#0 call #i2cRead call #StoreData ' Now force carry false to show success or i2cZero,#0 nr,wc andn Action,#%011100000 ' No readdressing on subsequent reads :skipAction8 add i2cAddr,#1 djnz i2cCount,#:doReadWrite ' Repeat for number of bytes requested :doStop call #i2cStop if_c or i2cAddr,errorFlag ' Carry true indicates error jmp #checkEndIO '' Low level I2C routines. These are designed to work either with a standard I2C bus '' (with pullups on both SCL and SDA) or the Propellor Demo Board (with a pullup only '' on SDA). Timing can be set by the caller to 100KHz or 400KHz. '' Do I2C Reset Sequence. Clock up to 9 cycles. Look for SDA high while SCL '' is high. Device should respond to next Start Sequence. Leave SCL high. i2cReset andn dira,i2cSDA ' Pullup drive SDA high mov i2cBitCnt,#9 ' Number of clock cycles mov i2cTime,i2cClkLow add i2cTime,cnt ' Allow for minimum SCL low :i2cResetClk andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL waitcnt i2cTime,i2cClkHigh test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkLow ' Allow minimum SCL high test i2cSDA,ina wz ' Stop if SDA is high if_z djnz i2cBitCnt,#:i2cResetClk ' Stop after 9 cycles i2cReset_ret ret ' Should be ready for Start '' Do I2C Start Sequence. This assumes that SDA is a floating input and '' SCL is also floating, but may have to be actively driven high and low. '' The start sequence is where SDA goes from HIGH to LOW while SCL is HIGH. i2cStart andn dira,i2cSDA ' Pullup drive SDA high andn outa,i2cSDA ' SDA set to drive low mov i2cTime,i2cClkLow add i2cTime,cnt ' Allow for bus free time waitcnt i2cTime,i2cClkHigh test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkHigh ' Allow for start setup time or dira,i2cSDA ' Active drive SDA low waitcnt i2cTime,#0 ' Allow for start hold time andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL i2cStart_ret ret '' Do I2C Stop Sequence. This assumes that SCL is low and SDA is indeterminant. '' The stop sequence is where SDA goes from LOW to HIGH while SCL is HIGH. '' i2cStart must have been called prior to calling this routine for initialization. '' The state of the (c) flag is maintained so a write error can be reported. i2cStop or dira,i2cSDA ' Active drive SDA low mov i2cTime,i2cClkLow add i2cTime,cnt ' Wait for minimum clock low waitcnt i2cTime,i2cClkLow test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkHigh ' Wait for minimum setup time andn dira,i2cSDA ' Pullup drive SDA high waitcnt i2cTime,#0 ' Allow for bus free time andn dira,i2cSCL ' Leave SCL and SDA high i2cStop_ret ret '' Write I2C data. This assumes that i2cStart has been called and that SCL is low, '' SDA is indeterminant. The (c) flag will be set on exit from ACK/NAK with ACK == false '' and NAK == true. Bytes are handled in "little-endian" order so these routines can be '' used with words or longs although the bits are in msb..lsb order. i2cWrite mov i2cBitCnt,#8 mov i2cTime,i2cClkLow add i2cTime,cnt ' Wait for minimum SCL low :i2cWriteBit waitcnt i2cTime,i2cDataSet test i2cData,i2cMask wz if_z or dira,i2cSDA ' Copy data bit to SDA if_nz andn dira,i2cSDA waitcnt i2cTime,i2cClkHigh ' Wait for minimum setup time test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkLow andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL ror i2cMask,#1 ' Go do next bit if not done djnz i2cBitCnt,#:i2cWriteBit andn dira,i2cSDA ' Switch SDA to input and waitcnt i2cTime,i2cClkHigh ' wait for minimum SCL low test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,#0 ' Wait for minimum high time test i2cSDA,ina wc ' Sample SDA (ACK/NAK) then andn outa,i2cSCL ' active drive SCL low or dira,i2cSCL or dira,i2cSDA ' Leave SDA low rol i2cMask,#16 ' Prepare for multibyte write i2cWrite_ret ret '' Read I2C data. This assumes that i2cStart has been called and that SCL is low, '' SDA is indeterminant. ACK/NAK will be copied from the (c) flag on entry with '' ACK == low and NAK == high. Bytes are handled in "little-endian" order so these '' routines can be used with words or longs although the bits are in msb..lsb order. i2cRead mov i2cBitCnt,#8 andn dira,i2cSDA ' Make sure SDA is set to input mov i2cTime,i2cClkLow add i2cTime,cnt ' Wait for minimum SCL low :i2cReadBit waitcnt i2cTime,i2cClkHigh test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,i2cClkLow ' Wait for minimum clock high test i2cSDA,ina wz ' Sample SDA for data bits andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL if_nz or i2cData,i2cMask ' Accumulate data bits if_z andn i2cData,i2cMask ror i2cMask,#1 ' Shift the bit mask and djnz i2cBitCnt,#:i2cReadBit ' continue until done waitcnt i2cTime,i2cDataSet ' Wait for end of SCL low if_c andn dira,i2cSDA ' Copy the ACK/NAK bit to SDA if_nc or dira,i2cSDA waitcnt i2cTime,i2cClkHigh ' Wait for minimum setup time test i2cBootSCLm,i2cSCL wz ' Check for boot I2C bus if_nz or outa,i2cSCL ' Active drive SCL high if_nz or dira,i2cSCL if_z andn dira,i2cSCL ' Pullup drive SCL high waitcnt i2cTime,#0 ' Wait for minimum clock high andn outa,i2cSCL ' Active drive SCL low or dira,i2cSCL or dira,i2cSDA ' Leave SDA low rol i2cMask,#16 ' Prepare for multibyte read i2cRead_ret ret '' SPI routines for Rokicki's SD card FAT file system driver spiEntryPoint test i2cCmd,#ioBootCmd wc ' Check for boot if_c jmp #spiDoRead ' (Treat like read) cmp i2cCmd,#ioSpiStop wc,wz if_c jmp #spiDoInit ' Decode operation if_z jmp #spiDoStop cmp i2cCmd,#ioSpiWrite wc if_c jmp #spiDoRead jmp #spiDoWrite '' Initialize SPI communications. The pin numbers of the 4 I/O pins are '' provided in the 24 bit address field of the control packet. From MSB to '' LSB, these are DO - Data Out, Clk - Clock, DI - Data In, CS - Card Select. spiDoInit movd :moveIt,#spiMaskCS mov spiBlkCnt,#4 :makeMask mov i2cMask,#1 mov i2cTemp,i2cAddr ' Only use lower 5 bits of and i2cTemp,#%11111 ' 6 bit shift count field shl i2cMask,i2cTemp :moveIt mov 0-0,i2cMask ' Store the bit mask for the pin cmp spiBlkCnt,#1 wz if_ne or outa,i2cMask ' Make all pins high outputs if_ne or dira,i2cMask ' except DO is an input since if_e andn dira,i2cMask ' input/output is card relative sub :moveIt,incrDst ror i2cAddr,#6 djnz spiBlkCnt,#:makeMask rol i2cAddr,#24 ' Leave i2cAddr unchanged mov i2cTime,cnt ' Set up a 1 second timeout mov spiBlkCnt,spiInitCnt :initRead call #spiRecvByte ' Output a stream of 32K clocks djnz spiBlkCnt,#:initRead ' in case SD card left in some mov spiOp,#0 ' undefined state mov spiParm,#0 call #spiSendCmd ' Send a reset command and deselect or outa,spiMaskCS ' to get SD card into SPI mode :waitIdle mov spiOp,#55 call #spiSendCmd ' APP_CMD (Application Specific) mov spiOp,#41 call #spiSendCmd ' SEND_OP_COND (Initialization) or outa,spiMaskCS cmp i2cData,#1 wz ' Wait until response not In Idle if_e jmp #:waitIdle tjz i2cData,#i2cGoUpdate ' Initialization complete or i2cAddr,errorFlag jmp #i2cGoUpdate ' Could not initialize the card '' Stop SPI communications. Any previously used I/O pins are set to input mode and '' the masks for the I/O pins are zeroed. The card is clocked so it turns off. spiDoStop or outa,spiMaskCS ' Make sure /CS is high call #spiRecvByte ' Put out a few clocks call #spiRecvByte ' to turn off the card andn dira,spiMaskDO andn dira,spiMaskDI ' Set all the card pins andn dira,spiMaskCS ' to inputs so they can andn dira,spiMaskClk ' be used for some other mov spiMaskDO,#0 ' purpose when the card mov spiMaskDI,#0 ' is removed. All should mov spiMaskCS,#0 ' have pullups to +3.3V. mov spiMaskClk,#0 jmp #i2cGoUpdate '' Read one or more 512 byte blocks and store the specified number of bytes '' into the HUB location given. The block number is provided in the 24 bit '' address field and incremented after every block is read. Partial blocks are '' allowed and any extra bytes read are discarded. spiDoRead mov spiOp,#17 ' READ_SINGLE_BLOCK :readRepeat mov i2cTime,cnt ' Save start of timeout mov spiParm,i2cAddr call #spiSendCmd ' Read from specified block call #spiResponse mov spiBlkCnt,spiBlkSize ' Transfer a block at a time :getRead call #spiRecvByte tjz i2cCount,#:skipStore ' Check for count exhausted call #StoreData sub i2cCount,#1 :skipStore djnz spiBlkCnt,#:getRead ' Are we done with the block? call #spiRecvByte call #spiRecvByte ' Yes, finish with 16 clocks add i2cAddr,#1 or outa,spiMaskCS ' Increment address, deselect card tjnz i2cCount,#:readRepeat ' and check for more blocks to do checkEndIO test i2cCmd,#ioBootCmd wc if_nc jmp #i2cGoUpdate ' If not booting, we're done test i2cAddr,errorFlag wc and CheckSum,#$FF wz ' If booting, no errors can occur if_z_and_nc jmp #nowBootSpin ' and checksum must be zero or i2cAddr,errorFlag test Options,#noStore wc if_c jmp #i2cGoUpdate ' Return error status if noStore stopThisCOG cogid i2cCogId ' If an unrecoverable error occurs, cogstop i2cCogId ' stop this cog '' Write one or more 512 byte blocks with the specified number of bytes from '' the HUB location given. The block number is provided in the 24 bit address '' field and incremented after every block is written. Partial blocks are '' allowed and are padded with zeroes. spiDoWrite mov spiOp,#24 ' WRITE_BLOCK mov i2cTime,cnt ' Setup timeout mov spiParm,i2cAddr call #spiSendCmd ' Write to specified block mov i2cData,#$FE ' Ask to start data transfer call #spiSendByte mov spiBlkCnt,spiBlkSize ' Transfer a block at a time :putWrite mov i2cData,#0 ' padding with zeroes if needed tjz i2cCount,#:padWrite ' Check for count exhausted rdbyte i2cData,i2cBufAdr ' If not, get the next data byte add i2cBufAdr,#1 sub i2cCount,#1 :padWrite call #spiSendByte djnz spiBlkCnt,#:putWrite ' Are we done with the block? call #spiRecvByte call #spiRecvByte ' Yes, finish with 16 clocks call #spiResponse and i2cData,#$1F ' Check the response status cmp i2cData,#5 wz if_ne or i2cAddr,errorFlag ' Must be Data Accepted if_ne jmp #i2cGoUpdate movs spiWaitData,#0 ' Wait until not busy call #spiWaitBusy add i2cAddr,#1 or outa,spiMaskCS ' Increment block address and go tjnz i2cCount,#spiDoWrite ' to next if more data remains jmp #i2cGoUpdate '' Mid level SPI I/O spiSendCmd andn outa,spiMaskCS ' Send command sequence. Begin by call #spiRecvByte ' selecting card and clocking mov i2cData,spiOp or i2cData,#$40 ' Send command byte (1st 2 bits %01) call #spiSendByte mov i2cData,spiParm shr i2cData,#15 ' Supplied address is sector number call #spiSendByte mov i2cData,spiParm ' Send to SD card as byte address, shr i2cData,#7 ' in multiples of 512 bytes call #spiSendByte mov i2cData,spiParm ' Total length of this address is shl i2cData,#1 ' four bytes call #spiSendByte mov i2cData,#0 call #spiSendByte mov i2cData,#$95 ' CRC code (for 1st command only) call #spiSendByte spiResponse movs spiWaitData,#$FF ' Wait for response from card spiWaitBusy call #spiRecvByte mov i2cTemp,cnt sub i2cTemp,i2cTime ' Check for expired timeout (1 sec) cmp i2cTemp,SaveClkFreq wc if_nc or i2cAddr,errorFlag if_nc jmp #i2cGoUpdate spiWaitData cmp i2cData,#0-0 wz ' Wait for some other response if_e jmp #spiWaitBusy ' than that specified spiSendCmd_ret spiResponse_ret spiWaitBusy_ret ret '' Low level byte I/O spiSendByte mov i2cMask,#%10000000 :sendBit test i2cMask,i2cData wc andn outa,spiMaskClk ' Send data bytes MSB first muxc outa,spiMaskDI or outa,spiMaskClk shr i2cMask,#1 ' When mask shifted out, we're done tjnz i2cMask,#:sendBit or outa,spiMaskDI ' Leave DI in idle (high) state spiSendByte_ret ret spiRecvByte mov i2cMask,#%10000000 :recvBit andn outa,spiMaskClk ' Receive data bytes MSB first or outa,spiMaskClk ' Copy DO to data bit test spiMaskDO,ina wc muxc i2cData,i2cMask shr i2cMask,#1 ' When mask shifted out, we're done tjnz i2cMask,#:recvBit and i2cData,#%11111111 ' Eight bits received spiRecvByte_ret ret '' For both I2C and SPI, store data on a read operation unless ioNoStore is set. '' Accumulate a checksum and always save a copy of the first 16 bytes read. '' If this is an ioBootCmd or ioSpiBoot, adjust the amount to be read based '' on the value in the program preamble in the word at vbase ($0008). StoreData test Options,#ioNoStore wc if_nc wrbyte i2cData,i2cBufAdr ' Store data in specified location add i2cBufAdr,#1 ' and increment the address add CheckSum,i2cData ' Accumulate checksum for ioBootCmd ShiftData shl i2cData,#0-0 StoreLocal or Preamble+0,i2cData ' Store a local copy of the program add ShiftData,#8 ' preamble for when we're reading cmp ShiftData,testIns wz ' in a new Spin program if_z movs ShiftData,#0 ' Pack the data into successive longs if_z add StoreLocal,incrDst if_z cmp StoreLocal,testDst wz ' Stop after saving $0010 bytes if_z mov StoreLocal,noStore if_z test i2cCmd,#ioBootCmd wc ' If we're reading in a new program, if_c_and_z mov i2cCount,Preamble+2 ' change i2cCount to vbase adjusted if_c_and_z and i2cCount,i2cWordMask ' by number of bytes loaded so far. if_c_and_z sub i2cCount,#16 - 1 ' i2cCount will be decremented again StoreData_ret ret '' After reading is finished for a boot, the stack marker is added below dbase '' and memory is cleared between that and vbase (the end of the loaded program). '' Memory beyond the stack marker is not cleared. Note that if ioNoStore is set, '' we go through the motions, but don't actually change memory or the clock. nowBootSpin test Options,#ioNoStore wc mov i2cTemp,Preamble+2 shr i2cTemp,#16 ' Get dbase value sub i2cTemp,#4 if_nc wrlong StackMark,i2cTemp ' Place stack marker at dbase sub i2cTemp,#4 if_nc wrlong StackMark,i2cTemp mov i2cOther,Preamble+2 ' Get vbase value and i2cOther,i2cWordMask sub i2cTemp,i2cOther shr i2cTemp,#2 wz ' Compute number of longs between :zeroIt if_nz_and_nc wrlong i2cZero,i2cOther ' vbase and below stack marker if_nz_and_nc add i2cOther,#4 if_nz_and_nc djnz i2cTemp,#:zeroIt ' Zero that space (if any) mov i2cTemp,Preamble cmp i2cTemp,SaveClkFreq wz ' Is the clock frequency the same? mov i2cTemp,Preamble+1 and i2cTemp,#$FF ' Is the clock mode the same also? if_ne jmp #:changeClock cmp i2cTemp,SaveClkMode wz ' If both same, just go start COG if_e jmp #:justStartUp :changeClock and i2cTemp,#$F8 ' Force use of RCFAST clock while if_nc clkset i2cTemp ' letting requested clock start mov i2cTemp,time_xtal :startupDelay djnz i2cTemp,#:startupDelay ' Allow 20ms@20MHz for xtal/pll to settle mov i2cTemp,Preamble+1 and i2cTemp,#$FF ' Then switch to selected clock if_nc clkset i2cTemp :justStartUp mov i2cOther,i2cCmd ' Use the COG supplied as the caller's and i2cOther,#%111 ' to start up the SPIN interpreter test Options,#ioStopLdr wz ' If ioStopLdr is set and ioNoStore is if_nz cogid i2cOther ' clear, then use this cog for SPIN or i2cOther,interpreter if_nc coginit i2cOther '' The operation has completed, with or without errors. Update the control block '' in main memory and wait for the next operation to be requested. i2cGoUpdate and i2cBufAdr,i2cWordMask ' Copy updated information shl i2cCount,#16 ' back to control packet or i2cCount,i2cBufAdr mov i2cTemp,PAR add i2cTemp,#4 wrlong i2cCount,i2cTemp wrlong i2cAddr,PAR ' Indicate operation is done jmp #i2cEntryPoint ' and go wait for a new one '' This action table contains bit sequences for controlling device addressing and read/write '' mode selection for each of the commands possible. From LSB to MSB, the actions are: '' 0 - Write the EEPROM device select code for write mode and 2 address bytes '' 1 - Write the MSB device address or (for ioRead1Cmd/ioWrite1Cmd) a device select code '' 2 - Write the LSB device address or (for ioRead0Cmd/ioWrite0Cmd) a device select code '' 3 - Output a Start Sequence prior to reselecting in read mode '' 4 - Fetch a data value for writing '' 5 - Construct an EEPROM device select code for read mode and 2 address bytes '' 6 - Construct a read mode device select code from the MSB of the 16 bit device address '' 7 - Write the data value or read mode device select code '' 8 - Read a byte of data from the device and store it i2cZero ActionTbl long %0000000000 ' Command not used (indicates done) long %0110101111,%0010010111 ' Read/Write with 2 bytes of addressing long %0111001110,%0010010110 ' Read/Write with 1 byte of addressing long %0100000100,%0010010100 ' Read/Write data only '' Constants for all routines i2cWordMask long $0000FFFF i2cAddrMask long $00FFFFFF errorFlag long $80000000 ' NAK received during write cycle speedMask long $40000000 ' One if 100KHz bus, zero if 400KHz time_xtal long 20 * 20000 / 4 / 1 ' 20ms (@20MHz, 1 inst/loop) interpreter long ($0004 << 16) | ($F004 << 2) | %0000 i2cBootSCLm long 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 literal 0 HcmV?d00001 diff --git a/lib/reg-ios.spin b/lib/reg-ios.spin new file mode 100644 index 0000000000000000000000000000000000000000..bbc9ded934e7c3329cc5c27d8fa806d28799f8a3 GIT binary patch literal 210560 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 uZL9DA-nCxfXgqS{c;-o1HTLw+Wn*ylug@5+ - datei in ram laden +xsave - datei aus ram speichern +xdir - verzeichnis im ram anzeigen +xrename - datei im ram umbenennen +xdel - datei im ram löschen +xtype - text im ram anzeigen + +So ist es also möglich, sich in der Kommandozeile anzuschauen, welche residenten Daten die Programme aktuell angelegt haben. Sofern es Textdaten sind, können diese Daten auch einafch angezeigt werden. + +Die Speicherverwaltung ist allerdings noch sehr experimentell - was bedeutet, dass wohl noch einige Bugs drin sein dürften. :) + +MAKE.BAT + +Diese Batchdatei im obersten Verzeichnis kompiliert das Grundsystem, bestehend aus den drei Flashdateien und den grundlegenden Kommandos im Systemverzeichnis. Ist ein erster Versuch. Was noch fehlt ist ein Fehlerlog und vielleicht noch die anderen Programme. + +09-06-2010-dr235 + +Nach nur zwei Tagen hat drohne085 (frida) das Geheimnis um die Bootroutine gelöst: Die Ursache lag in einer von der FATEngine verwendeten Semaphore, welche fest auf den Lock 0 "verdrahtet" war. Diese Semaphore wird an diversen Stellen in der Engine verwendet, wurde aber beim Bootvorgang nicht gelöscht oder freigegeben! Gedacht war sie, um den Bus zur SD-Card bei einem Zugriff zu verriegeln, falls mehrere Instanzen der Engine laufen, und gleichzeitig zugreifen wollen. Somit hat sich die Engine quasi selbst verriegelt und nach dem Bootvorgang als "neue Instanz" nun auch keinen Zugriff mehr - so schön kann praktische Parallelverarbeitung sein... ;) + +Hier nun eine neue und aktuelle Version mit einer temporären funktionierenden Lösung des Problems. + +Im System-Ordner gibt es jetzt folgende ausführbare Administra-Dateien: + +admflash.adm Standard-Flash, welches auch im EEProm gespeichert ist +admini.adm Mini-Flash ohne Sound, nor SDCard + Managment-Routinen +admled.adm Das Heartbeat-LED-Testprogramm zum direkten laden +aterm96.adm Die leicht modifizierte Kommandozeile vom Programmierer der FATEngine. Mit + diesem Administra-Code kann man direkt über die Hostschnittstelle (9600 Baud) + mit dem Chip kommunizieren. Dokumentation der Kommandos findet man im + Verzeichnis "komponenten/fat/fatengine beta" + + +07-06-2010-dr235 + +Hier der aktuelle Stand von TriOS. Momentan kämpfe ich an einem +Komplexfehler mit dem Bootloader von Administra. Das Problem ist recht +einfach zu reproduzieren, aber leider (für mich) nur schwer zu +erfasen: Die verwendete FATEngine besitzt eine Bootfunktion um einen +neuen BIN-Objektcode in den Propeller zu laden. Dieser Code funktioniert +auch teilweise. So kann man das Administra-Bios selbst laden und dann +auch per Regime-Kommandos verwenden: Die Kommandos "cogs" und "sysinfo" +sprechen Administra-Funktionen an, welche auch korrekt ausgeführt werden. +Das Problem: Nach dem Bootprozess kann man keine SD-Card mehr mounten. + +Es ist auch möglich den Fehler noch weiter einzugrenzen: Wenn man die +originale FATEngine (im Verzeichnis komponenten/fat) vom Host direkt in +Administra startet, meldet sich diese in Form einer einfachen Kommando- +zeile per Hostschnittstelle. Versucht man dort eine erzeugte BIN-Datei +genau dieser Kommandozeile (demo.spin) zu booten, so hat man das gleiche +Ergebnis. + +Verzeichnisstruktur: + +bin - BIN-Dateien für die Flash's und die SD-Card +doku - +flash - Quelltexte für die Software in den EEProms +system - Quelltext für ausführbare BIN-Dateien +zubehör - Kleine Zusatzprogramme (StarTracker, Boulder Dash...) +komponenten - Div. verwendete Objekte (FATEngine, SIDCog...) + +Installation: + +1. Flashen der drei EEProms mit den BIN-Dateien aus "bin/flash" oder + über das Propellertool aus den Quellen "flash". + +2. SD-Card erstellen: Einfach alles aus "bin/sd-card" auf eine FAT16/32 + Karte kopieren. + +Das System bootet Regnatix und Bellatrix beim Systemstart aus den Dateien +"adm.sys", "reg.sys" bzw. "bel.sys". Diese Dateien können auch das Hidden-Bit gesetzt +haben. Externe Kommandos bzw. ausführbare BIN-Dateien werden im aktuellen +UND im System-Verzeichnis gesucht - alle Systemkommandos können also in das +System-Verzeichnis kopiert werden. + +Hilfe gibt es meist über das Kommando "help" oder den Parameter "/h". + + + + diff --git a/make.bat b/make.bat new file mode 100644 index 0000000..96702ef --- /dev/null +++ b/make.bat @@ -0,0 +1,77 @@ +echo on +date /T +time /T + +REM Pfade +set sd=".\bin\sdcard" +set sd-sys=".\bin\sdcard\system" +set flash=".\bin\flash" +set libpath=".\lib" + +REM ---------------------------------------------------------------- +REM Alte Versionen löschen + +del %flash%\*.* /Q +del %sd%\*.* /Q +del %sd-sys%\*.* /Q + +REM ---------------------------------------------------------------- +REM Flashdateien erzeugen +REM --> \bin\flash + +bstc -L %libpath% -b -O a .\flash\administra\admflash.spin +move admflash.binary %flash% + +bstc -L %libpath% -b -O a .\flash\bellatrix\belflash.spin +copy belflash.binary %flash% +rename belflash.binary vga.bel +move vga.bel %sd-sys% + +bstc -L %libpath% -b -O a .\flash\regnatix\regflash.spin +move regflash.binary %flash% + +REM ---------------------------------------------------------------- +REM Startdateien erzeugen +REM reg.sys (Regime) +REM bel.sys (VGA) +REM --> \bin\sdcard\ + +bstc -L %libpath% -b -O a .\system\regnatix\regime.spin +rename regime.binary reg.sys +move reg.sys %sd% + +bstc -L %libpath% -b -O a .\flash\bellatrix\belflash.spin +rename belflash.binary bel.sys +move bel.sys %sd% + +REM ---------------------------------------------------------------- +REM Slave-Dateien erzeugen +REM admsid, admay, admterm +REM htxt, tv + +bstc -L %libpath% -b -O a .\system\administra\admsid\admsid.spin +bstc -L %libpath% -b -O a .\system\administra\admay\admay.spin +bstc -L %libpath% -b -O a .\system\administra\aterm\aterm.spin +rename *.binary *.adm + +bstc -L %libpath% -b -O a .\system\bellatrix\bel-htext\htext.spin +bstc -L %libpath% -b -O a .\system\bellatrix\bel-tv\tv.spin +rename *.binary *.bel + +move *.adm %sd-sys% +move *.bel %sd-sys% + + +REM ---------------------------------------------------------------- +REM Systemdateien erzeugen +REM - div. externe Kommandos +REM - div. Systemdateien (Farbtabellen usw.) +REM --> \bin\sdcard\system\ + +for %%x in (.\system\regnatix\*.spin) do bstc -L %libpath% -b -O a %%x +rename *.binary *.bin +move *.bin %sd-sys% +copy .\forth\*.* %sd-sys% +copy .\system\sonstiges %sd-sys% + +echo off diff --git a/make.log b/make.log new file mode 100644 index 0000000..1af556c --- /dev/null +++ b/make.log @@ -0,0 +1,424 @@ + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>date /T +11.11.2011 + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>time /T +15:28 + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Pfade + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set sd=".\bin\sdcard" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set sd-sys=".\bin\sdcard\system" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set flash=".\bin\flash" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>set libpath=".\lib" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ---------------------------------------------------------------- + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Alte Versionen löschen + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>del ".\bin\flash"\*.* /Q + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>del ".\bin\sdcard"\*.* /Q + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>del ".\bin\sdcard\system" \*.* /Q + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ---------------------------------------------------------------- + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Flashdateien erzeugen + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM --> \bin\flash + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\administra\admflash.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object admflash +Loading Object adm-fat +Loading Object adm-rtc.spin +Loading Object adm-hss +Loading Object adm-wav +Loading Object adm-plx +Program size is 12584 longs +2 Constants folded +Compiled 2429 Lines of Code in 0,186 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move admflash.binary ".\bin\flash" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\bellatrix\belflash.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object belflash +Loading Object bel-vga +Loading Object bel-keyb +Program size is 6432 longs +12 Constants folded +Compiled 1108 Lines of Code in 0,078 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>copy belflash.binary ".\bin\flash" + 1 Datei(en) kopiert. + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename belflash.binary vga.bel + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move vga.bel ".\bin\sdcard\system" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\regnatix\regflash.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object regflash +Program size is 32584 longs +Compiled 694 Lines of Code in 0,172 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move regflash.binary ".\bin\flash" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ---------------------------------------------------------------- + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Startdateien erzeugen + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM reg.sys (Regime) + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM bel.sys (VGA) + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM --> \bin\sdcard\ + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\regime.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object regime +Loading Object reg-ios +Loading Object glob-string +Program size is 9168 longs +2 Constants folded +Compiled 2279 Lines of Code in 0,233 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename regime.binary reg.sys + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move reg.sys ".\bin\sdcard" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\flash\bellatrix\belflash.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object belflash +Loading Object bel-vga +Loading Object bel-keyb +Program size is 6432 longs +12 Constants folded +Compiled 1108 Lines of Code in 0,078 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename belflash.binary bel.sys + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move bel.sys ".\bin\sdcard" + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ---------------------------------------------------------------- + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Slave-Dateien erzeugen + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM admsid, admay, admterm + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM htxt, tv + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\administra\admsid\admsid.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object admsid +Loading Object adm-fat +Loading Object adm-rtc.spin +Loading Object adm-sid +Program size is 11968 longs +Compiled 2206 Lines of Code in 0,171 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\administra\admay\admay.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object admay +Loading Object adm-fat +Loading Object adm-rtc.spin +Loading Object adm-ay +Program size is 8308 longs +Compiled 1705 Lines of Code in 0,141 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\administra\aterm\aterm.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object aterm +Loading Object glob-com.spin +Loading Object glob-string.spin +Loading Object adm-fat.spin +Loading Object adm-rtc.spin +Program size is 10932 longs +Compiled 1792 Lines of Code in 0,156 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename *.binary *.adm + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\bellatrix\bel-htext\htext.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object htext +Loading Object bel-htext +Loading Object bel-keyb +Program size is 6656 longs +12 Constants folded +Compiled 958 Lines of Code in 0,063 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\bellatrix\bel-tv\tv.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object tv +Loading Object bel-tv +Loading Object bel-keyb +Program size is 4204 longs +Compiled 979 Lines of Code in 0,063 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename *.binary *.bel + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move *.adm ".\bin\sdcard\system" +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\admay.adm +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\admsid.adm +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\aterm.adm + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move *.bel ".\bin\sdcard\system" +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\htext.bel +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\tv.bel + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM ---------------------------------------------------------------- + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM Systemdateien erzeugen + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM - div. externe Kommandos + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM - div. Systemdateien (Farbtabellen usw.) + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>REM --> \bin\sdcard\system\ + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>for %x in (.\system\regnatix\*.spin) do bstc -L ".\lib" -b -O a %x + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\admtest.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object admtest +Loading Object reg-ios +Loading Object glob-string +Program size is 7940 longs +Compiled 2090 Lines of Code in 0,203 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\basic.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object basic +Loading Object reg-ios +Program size is 8452 longs +4 Constants folded +Compiled 2481 Lines of Code in 0,156 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\beltest.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object beltest +Loading Object reg-ios +Program size is 4284 longs +Compiled 1689 Lines of Code in 0,124 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\charmap.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object charmap +Loading Object reg-ios +Program size is 1920 longs +Compiled 1402 Lines of Code in 0,063 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\eram.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object eram +Loading Object glob-numbers +Loading Object reg-ios +Program size is 8508 longs +2 Constants folded +Compiled 2368 Lines of Code in 0,218 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\flash.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object flash +Loading Object reg-ios +Loading Object glob-sdspi +Loading Object glob-numbers +Program size is 7160 longs +6 Constants folded +Compiled 2780 Lines of Code in 0,186 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\fterm.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object fterm +Loading Object reg-ios +Loading Object glob-fds +Program size is 2260 longs +Compiled 1582 Lines of Code in 0,078 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\hplay.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object hplay +Loading Object reg-ios +Program size is 3944 longs +8 Constants folded +Compiled 1645 Lines of Code in 0,109 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\keycode.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object keycode +Loading Object reg-ios +Program size is 1892 longs +Compiled 1404 Lines of Code in 0,061 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\perplex.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object perplex +Loading Object reg-ios +Loading Object glob-numbers +Program size is 4788 longs +Compiled 2132 Lines of Code in 0,139 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\ramtest.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object ramtest +Loading Object reg-ios +Program size is 3988 longs +34 Constants folded +Compiled 1658 Lines of Code in 0,109 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\regime.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object regime +Loading Object reg-ios +Loading Object glob-string +Program size is 9168 longs +2 Constants folded +Compiled 2279 Lines of Code in 0,233 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\rom.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object rom +Loading Object reg-ios +Loading Object glob-sdspi +Program size is 3972 longs +3 Constants folded +Compiled 2018 Lines of Code in 0,094 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\sfxtool.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object sfxtool +Loading Object reg-ios +Loading Object glob-numbers +Program size is 6048 longs +Compiled 2191 Lines of Code in 0,156 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\splay.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object splay +Loading Object reg-ios +Program size is 2956 longs +Compiled 1516 Lines of Code in 0,078 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\sysconf.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object sysconf +Loading Object reg-ios +Program size is 4392 longs +1 Constants folded +Compiled 1620 Lines of Code in 0,11 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\time.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object time +Loading Object reg-ios +Loading Object glob-string +Loading Object glob-numbers +Program size is 5408 longs +Compiled 2180 Lines of Code in 0,156 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\wplay.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object wplay +Loading Object reg-ios +Program size is 3256 longs +Compiled 1537 Lines of Code in 0,092 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>bstc -L ".\lib" -b -O a .\system\regnatix\yplay.spin +Brads Spin Tool Compiler v0.15.3 - Copyright 2008,2009 All rights reserved +Compiled for i386 Win32 at 08:17:48 on 2009/07/20 +Loading Object yplay +Loading Object reg-ios +Program size is 3208 longs +Compiled 1586 Lines of Code in 0,108 Seconds + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>rename *.binary *.bin + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>move *.bin ".\bin\sdcard\system" +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\admtest.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\basic.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\beltest.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\charmap.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\eram.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\flash.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\fterm.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\hplay.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\keycode.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\perplex.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\ramtest.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\regime.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\rom.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\sfxtool.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\splay.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\sysconf.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\time.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\wplay.bin +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1\yplay.bin + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>copy .\forth\*.* ".\bin\sdcard\system" +.\forth\adm.lib +.\forth\ari.lib +.\forth\basics.mod +.\forth\bel.lib +.\forth\cog.lib +.\forth\debug.mod +.\forth\error.txt +.\forth\hplay.mod +.\forth\hss.lib +.\forth\key.lib +.\forth\rom.mod +.\forth\scr.lib +.\forth\sd0.lib +.\forth\sfx.lib +.\forth\splay.mod +.\forth\tools.mod +.\forth\v1.mod +.\forth\wav.lib +.\forth\words.mod +.\forth\wplay.mod + 20 Datei(en) kopiert. + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>copy .\system\sonstiges ".\bin\sdcard\system" +.\system\sonstiges\BLUE.COL +.\system\sonstiges\BW.COL +.\system\sonstiges\BWHALF.COL +.\system\sonstiges\CHESS.COL +.\system\sonstiges\PAR.COL +.\system\sonstiges\regime.txt +.\system\sonstiges\test1.txt +.\system\sonstiges\test2.txt + 8 Datei(en) kopiert. + +C:\Dokumente und Einstellungen\ingo\Desktop\trios-v1>echo off diff --git a/makelog.bat b/makelog.bat new file mode 100644 index 0000000..44f9f7d --- /dev/null +++ b/makelog.bat @@ -0,0 +1,6 @@ +echo off +echo Erstelle TriOS... +call make.bat > make.log +echo Fertig! +pause +

  • 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 YuU+UxS+~4zwkw}ay61eK-;!AU4Vz?I9smFU literal 0 HcmV?d00001 diff --git a/lib/adm-fat.spin b/lib/adm-fat.spin new file mode 100644 index 0000000000000000000000000000000000000000..9e0c62dbd0ad033c1a3570c8c25861f27718b807 GIT binary patch literal 312958 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 0 + +PUB get_hmus_vol : var1 + + var1 := hmvol + +CON + +'' FXsynth Commands + +PUB sfx_play(chan, soundptr) + + if(chan == 1) + sfx_ptr[0] := soundptr + loadsfx[0] := 0 + if(chan == 2) + sfx_ptr[1] := soundptr + loadsfx[1] := 0 + +PUB sfx_stop(chan) + + if(chan == 1) + sfx_ptr[0] := 0 + if(chan == 2) + sfx_ptr[1] := 0 + +PUB sfx_keyoff(chan) + + if(chan == 1) + envphs[0] := 3 + if(chan == 2) + envphs[1] := 3 + +CON + +'' Hydra DPCM Commands + +PUB dpcm_play(soundptr) + + dpcmreg_ptr := soundptr + +PUB dpcm_stop + + dpcmreg_ptr := 1 + +CON +''***************************** +''* Hss Sound Engine * +''***************************** +PRI Hsound +repeat + 'Update Music Engine + UpdateMus(song_ptr, Hmus_state) 'Update Music Player + 'volume/frequenzwerte werden in die soundregister geschrieben + VolumeInterpol 'Delay and Interpolate Volume to Remove Pops and Clicks. + + 'Update DPCM Engine + if(dpcmreg_ptr) + DpcmUpdate 'Update the DPCM registers + + 'Update SoundFX Engine + + 'FX channel A + FXSynth(0,32) + 'FX channel B + FXSynth(1, 40) + +PRI VolumeInterpol | z, channelmul, musvar, freqval + + fxphs += 5 + +'Volume Interpolation + repeat z from 0 to 3 step 1 + channelmul := 4+(8*z) + musvar := (chvol[z]*(hmvol+1))&$F0 + snd_regs[channelmul] := (snd_regs[channelmul] & 15)+musvar + + 'Freq Interpolation + channelmul -= 1 'Jump down a REG to Freq + musvar := chfre[z]<<16 + + if(chfx[z] == 0) 'None + snd_regs[channelmul] := musvar + + elseif(chfx[z] < 3) 'Vibrato (light/hard) + if(fxphs < 128) + snd_regs[channelmul] := musvar+(chfre[z]<<(7+chfx[z])) + else + snd_regs[channelmul] := musvar-(chfre[z]<<(7+chfx[z])) + + elseif(chfx[z] == 3) 'Tremolo + if(fxphs < 128) + snd_regs[channelmul] := musvar + else + snd_regs[channelmul] := musvar<<1 + + else 'Portamento + freqval := snd_regs[channelmul]>>16 + if(freqval & $F000 == chfre[z] & $F000) + snd_regs[channelmul] := musvar + elseif(freqval < chfre[z]) + snd_regs[channelmul] := snd_regs[channelmul]+(chfx[z]<<22) + else + snd_regs[channelmul] := snd_regs[channelmul]-(chfx[z]<<22) + +PRI UpdateMus(songptr, state) | i, channel, channelmul, scrdat, freq, freqoct, flag + + if(state == 0) + return ''Song is not playing. + + song_div++ 'zeitfaktor; wird erhöht bis... + + if(song_div => tempo) 'Tempo Divider 'schwellwert erreicht, dann nächster beat + song_div := 0 + flag := 0 + intreg[iBeatC] := intreg[iBeatC] + 1 'interface: beatconter erhöhen + intreg[iRowFlag] := 0 'interface: Kennung das Zeile bearbeitet wird + repeat i from 5 to 5*5 'interface: channelwerte löschen + intreg[i] := 0 + + repeat 'Score Decoder and Processor + scrdat := BYTE[song_ptr][song_pc] 'song_pc ist zeiger auf wert in MusicDat + channel := scrdat & 3 'untere zwei bit enthalten die kanalnummer + channelmul := channel<<3 'jedem channel sind 8 registerwerte zugeordent + intreg[iEngineC] := song_pc 'interface: enginecounter setzen + song_pc++ 'zeiger auf nächsten wert setzen + + ''Base Commands + if(scrdat == 0) 'End Row 'nächste trackerzeile + intreg[iRowFlag] := 1 'interface: Zeile fertig bearbeitet + quit + + if(scrdat == 1) 'Repeat Song 'wiederholt ab MusicLoop (MusicDat ist also die einleitung) + song_pc := WORD[songptr][9] + intreg[iRepeat] := intreg[iRepeat] + 1 'interface: flag das songende erreicht wurde + quit + + if(scrdat == 2) 'End Song 'status wird auf 0 gesetzt + intreg[iEndFlag] := 1 'interface: flag das songende erreicht wurde + hmus_stop + quit + + if(scrdat == 3) 'Set Flag + flag := 1 + next + + if((scrdat & $3C) == $20) 'Patch HI Note 'oktave erhöhen und veränderung zu "Change Note" + flag := 2 + scrdat := scrdat>>3 + scrdat += 64+channel + + if(scrdat & 4) 'Change Note + freq := scrdat>>3 'note Bit3 bis Bit7 (32 Noten) + freqoct := freq/12 + freq -= freqoct*12 + case flag + 1 : freqoct += 2 + 2 : freqoct += 6 + other : freqoct += 4 + flag := 0 + snd_regs[4+channelmul] := snd_regs[4+channelmul] & $FE + intreg[(channel*iChannel)+iChannel+iNote] := freq + 1 'interface: note setzen (0 ist erste note!) + intreg[(channel*iChannel)+iChannel+iOktave] := freqoct 'interface: oktave setzen + 'frequenz aus tabelle holen + 'je nach oktave wird nach rechts verschoben (/2) + chfre[channel] := NoteFreqs[freq]>>(6-freqoct) + snd_regs[4+channelmul] := (snd_regs[4+channelmul] & $FE)+1 + next 'Repeat To Next Datum + + if(scrdat & 8) 'Change Evelope / Channel Effect + if(flag) + intreg[(channel*iChannel)+iChannel+iEffekt] := scrdat>>4 + 1 'interface: effektwert setzen + chfx[channel] := scrdat>>4 + flag := 0 + else + intreg[(channel*iChannel)+iChannel+iVolume] := scrdat>>4 'interface: volume setzen + chvol[channel] := scrdat>>4 + next 'Repeat To Next Datum + + if(scrdat & 16) 'Change Instrument + freq := (scrdat & $E0)>>3 + freq += flag<<5 + flag := 0 + intreg[(channel*iChannel)+iChannel+iInstrument] := freq>>2 + 1 'interface: instrument setzen + snd_regs[0+channelmul] := songptr+WORD[songptr+32][freq] 'zeiger auf neues instrumentensample + snd_regs[1+channelmul] := WORD[songptr+32][freq+1] 'ende des samples + snd_regs[2+channelmul] := WORD[songptr+32][freq+2] 'loop + snd_regs[4+channelmul] := WORD[songptr+32][freq+3] & $0F 'flags? + next 'Repeat To Next Datum + + if(scrdat & 64) 'Detune + chfre[channel] := chfre[channel]+(chfre[channel]>>8) + + + +PRI DpcmUpdate + + if(dpcmreg_ptr > 15) 'Play Sample. + dpcm_regs[2] := 65535 'End sample if one was playing + dpcm_regs[0] := dpcmreg_ptr+8 + dpcm_regs[4] := 128 + dpcm_regs[3] := LONG[dpcmreg_ptr][1] 'Get sampling rate + dpcm_regs[1] := WORD[dpcmreg_ptr][1] 'Get length + dpcm_regs[2] := 0 'Reset play counter + elseif(dpcmreg_ptr == 1) 'Stop Sample + dpcm_regs[2] := 65535 'End sample + dpcm_regs[4] := 128 + + dpcmreg_ptr := 0 + +PRI FXSynth(SoundVars, ChannelFX) | TimeCnt, SoundFX, Modwav, FMwav, AMwav + TimeCnt := Cnt + SoundFX := sfx_ptr[SoundVars] + + if(loadsfx[SoundVars] == 0) + 'Setup OSC WaveForm + case BYTE[SoundFX][0] + $00: 'Sine + snd_regs[ChannelFX] := @SineTable + snd_regs[1+ChannelFX] := 64 + $01: 'Fast Sine + snd_regs[ChannelFX] := @FastSine + snd_regs[1+ChannelFX] := 32 + $02: 'Sawtooth + snd_regs[ChannelFX] := @Sawtooth + snd_regs[1+ChannelFX] := 64 + $03: 'Square + snd_regs[ChannelFX] := @SqrTable + snd_regs[1+ChannelFX] := 32 + $04: 'Fast Square + snd_regs[ChannelFX] := @FastSqr + snd_regs[1+ChannelFX] := 8 + $05: 'Buzz + snd_regs[ChannelFX] := @NoteFreqs + snd_regs[1+ChannelFX] := 24 + $06: 'Noise + snd_regs[ChannelFX] := $F002 + snd_regs[1+ChannelFX] := 3000 + + snd_regs[2+ChannelFX] := 0 + snd_regs[4+ChannelFX] := $01 + + loadsfx[SoundVars] := 1 + runlen[SoundVars] := 0 + fmcnt[SoundVars] := 0 + fmfreq[SoundVars] := 0 + envamp[SoundVars] := 0 + envphs[SoundVars] := 0 + +''Modulation Code + fmfreq[SoundVars]++ + if(fmfreq[SoundVars] => BYTE[SoundFX][4]) + fmfreq[SoundVars] := 0 + fmcnt[SoundVars]++ + fmcnt[SoundVars] := fmcnt[SoundVars] & $3F + + case BYTE[SoundFX][5] + $00: + Modwav := BYTE[@SineTable][fmcnt[SoundVars]] + $01: + Modwav := BYTE[@FastSine][fmcnt[SoundVars] & 31] + $02: + Modwav := fmcnt[SoundVars]<<2 + $03: + Modwav := !fmcnt[SoundVars]<<2 + $04: + if(fmcnt[SoundVars] & 8) + Modwav := $ff + else + Modwav := $00 + $05: + Modwav := BYTE[$F002][fmcnt[SoundVars]] + $FF: + Modwav := BYTE[SoundFX+12][fmcnt[SoundVars] & 15] + + fmwav := Modwav/(BYTE[SoundFX][6]) 'FM amount + amwav := 256-(Modwav/(BYTE[SoundFX][7])) 'AM amount + amwav := (BYTE[SoundFX][3]*amwav)>>8 + +''Envelope Generator + if(envphs[SoundVars] == 0) 'Attack + envamp[SoundVars] += BYTE[SoundFX][8] + if(envamp[SoundVars] > 8191) + envamp[SoundVars] := 8191 + envphs[SoundVars] := 1 + if(BYTE[SoundFX][8] == $ff) + envamp[SoundVars] := 8191 + if(envphs[SoundVars] == 1) 'Decay + envamp[SoundVars] -= BYTE[SoundFX][9] + if(envamp[SoundVars] & $8000) + envphs[SoundVars] := 2 + if(envamp[SoundVars] =< (BYTE[SoundFX][10]<<5)) + envphs[SoundVars] := 2 + if(envphs[SoundVars] == 2) 'Sustain + envamp[SoundVars] := (BYTE[SoundFX][10]<<5) + if(envphs[SoundVars] == 3) 'Release + envamp[SoundVars] -= BYTE[SoundFX][11] + if(envamp[SoundVars] & $8000) + envamp[SoundVars] := 4 + + amwav := ((envamp[SoundVars]>>9)*(amwav+1))>>4 + +''Run Length and Outputing + if(SoundFX > 15) + runlen[SoundVars]++ + snd_regs[3+ChannelFX] := (BYTE[SoundFX][2]+fmwav)<<24 'Update Frequency + snd_regs[4+ChannelFX] := (amwav<<4)+(snd_regs[4+ChannelFX] & $0F) 'Update Amplitude + else + snd_regs[4+ChannelFX] := $00 'Mute + + if(BYTE[SoundFX][1] == $ff) '$ff = never stop + runlen[SoundVars] := 0 + + if(runlen[SoundVars] > (BYTE[SoundFX][1]<<5)) 'Duration KeyOff + envphs[SoundVars] := 3 + +WaitCnt(TimeCnt + 52_000) ''Delay for Synth Engine Update. + +DAT + +SineTable byte $80, $8c, $98, $a5, $b0, $bc, $c6, $d0 + byte $da, $e2, $ea, $f0, $f5, $fa, $fd, $fe + byte $ff, $fe, $fd, $fa, $f5, $f0, $ea, $e2 + byte $da, $d0, $c6, $bc, $b0, $a5, $98, $8c + byte $80, $73, $67, $5a, $4f, $43, $39, $2f + byte $25, $1d, $15, $0f, $0a, $05, $02, $01 + byte $00, $01, $02, $05, $0a, $0f, $15, $1d + byte $25, $2f, $39, $43, $4f, $5a, $67, $73 + +Sawtooth byte $ff, $fb, $f7, $f3, $ef, $eb, $e7, $e3 + byte $df, $db, $d7, $d3, $cf, $cb, $c7, $c3 + byte $bf, $bb, $b7, $b3, $af, $ab, $a7, $a3 + byte $9f, $9b, $97, $93, $8f, $8b, $87, $83 + byte $80, $7c, $78, $74, $70, $6c, $68, $64 + byte $60, $5c, $58, $54, $50, $4c, $48, $44 + byte $40, $3c, $38, $34, $30, $2c, $28, $24 + byte $20, $1c, $18, $14, $10, $0c, $08, $04 + +FastSine byte $80, $98, $b0, $c6, $da, $ea, $f5, $fd + byte $ff, $fd, $f5, $ea, $da, $c6, $b0, $98 + byte $80, $67, $4f, $39, $25, $15, $0a, $02 + byte $00, $02, $0a, $15, $25, $39, $4f, $67 + +SqrTable byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff + byte $ff, $ff, $ff, $ff, $ff, $ff, $ff, $ff + byte $00, $00, $00, $00, $00, $00, $00, $00 + byte $00, $00, $00, $00, $00, $00, $00, $00 + +FastSqr byte $ff, $ff, $ff, $ff, $00, $00, $00, $00 + +'Note LookupTable. +NoteFreqs word $85F3, $8DEA, $965B, $9F4B, $A8C4, $B2CD, $BD6F, $C8B3, $D4A2, $E147, $EEAC, $FCDE 'Top Octave Lookup + +CON +''***************************** +''* WaveTable Synth v1.2 * +''* DPCM Synth v1.1 * +''* (C)2006 Andrew Arsenault * +''***************************** +DAT + org +entry mov dira,Port_Pins 'Setup output pins + + mov ctra,Right_ctra 'Setup Right Audio Channel + mov ctrb,Left_ctra 'Setup Left Audio Channel + + mov ChlA_wave,#256 'Set channel signals. + mov ChlA_offset,#0 'Set channel's offset. + mov ChlA_counter,#0 + + mov Time,#10 + add Time,cnt 'Prepare for asm type WAITCNT loop. + +'MAIN LOOP +update waitcnt Time,Timing_delay 'Wait for CNT = D, then add S into D + + 'Transfer Sound Registers + mov addrregs,par + mov y,NumberOfChannels + + 'Fetch Channel's Registers +transferchl rdlong ChlAp_sampptr,addrregs + add addrregs,#4 + rdlong ChlAp_sampend,addrregs + add addrregs,#4 + rdlong Ch1Ap_samplpp,addrregs + add addrregs,#4 + rdlong Ch1Ap_freq,addrregs + add addrregs,#4 + rdlong ChlAp_keyon,addrregs + + 'Fetch Channel's Static Variables + add addrregs,#8 + rdlong ChlA_offset,addrregs + add addrregs,#4 + rdlong ChlA_counter,addrregs + + 'Run Synth Engine on Channel + call #wvsynth + + 'Store Channel's Static Variables (Tucked Center X move to Wave) + wrlong ChlA_counter,addrregs + sub addrregs,#4 + sub x,#256 + wrlong ChlA_offset,addrregs + sub addrregs,#4 + mov ChlA_wave,x 'Doesn't Waste anything doing this. + wrlong ChlA_wave,addrregs + add addrregs,#12 + + 'Loop Until All Channel's Are Done. + djnz y,#transferchl + + 'Run DPCM Engine + call #dpcm + + 'Mix Channels Together + mov addrregs,par + mov ChlA_wave,#0 + add addrregs,#5*4 + mov y,NumberOfChannels + +mixchls rdlong x,addrregs + add ChlA_wave,x + add addrregs,#8*4 + djnz y,#mixchls + + mov x,DPCM_wave 'Add DPCM + shl x,#2 + add ChlA_wave,x + + shl ChlA_wave,#20 'Convert 12bit singal into a 32bit one. + + 'Update output Channels then repeat again. + mov frqa,ChlA_wave + mov frqb,ChlA_wave + + jmp #update + + + + +'-------------------------Dpcm Engine-------------------------' + +dpcm mov addrregs,par + add addrregs,#192 + + rdlong DPCM_address,addrregs 'Start Address + add addrregs,#4 + rdlong DPCM_runlen,addrregs 'File Lenght + add addrregs,#4 + rdlong DPCM_offset,addrregs 'File Offset + add addrregs,#4 + rdlong DPCM_freq,addrregs 'Playback Speed + add addrregs,#4 + rdlong DPCM_wave,addrregs 'Waveform Amp + + 'Check for if keyon/length is set. + cmp DPCM_offset,DPCM_runlen wc + if_ae jmp #mute_dpcm 'End of file + + 'Freq Timer/Divider and Increase sampling offset + add DPCM_counter,DPCM_freq wc + if_nc jmp #done_dpcm + + 'Decode DPCM + add DPCM_address,DPCM_offset + rdbyte x,DPCM_address 'Fetch Datum + + mov DPCM_delta,x + shr DPCM_delta,#6 + mov y,#1 + shl y,DPCM_delta + mov DPCM_delta,y + + mov y,#1 + shl y,DPCM_phs + test x,y wc + if_c add DPCM_wave,DPCM_delta + if_nc sub DPCM_wave,DPCM_delta + + add DPCM_phs,#1 + cmp DPCM_phs,#6 wc + if_b jmp #done_dpcm + + mov DPCM_phs,#0 + add DPCM_offset,#1 + jmp #done_dpcm + +mute_dpcm mov DPCM_wave, #128 + +done_dpcm mov addrregs,par + add addrregs,#200 + wrlong DPCM_offset,addrregs 'File Offset + add addrregs,#8 + wrlong DPCM_wave,addrregs 'Wave +dpcm_ret ret + +'-----------------------Dpcm Engine End-----------------------' + + + +'-------------------------Sound Engine-------------------------' + + 'Freq Timer/Divider and Increase sampling offset +wvsynth add ChlA_counter,Ch1Ap_freq wc + if_c add ChlA_offset,#1 + + 'Reset sample position and lock at zero if Keyoff. + test ChlAp_keyon,#%0001 wc + if_nc mov ChlA_offset,#0 + + 'Reset(loop) if needed + cmp ChlA_offset,ChlAp_sampend wc + if_ae mov ChlA_offset,Ch1Ap_samplpp + + 'Check BitRate and Set Offset + mov x,ChlA_offset + test ChlAp_keyon,#%0010 wc + if_c shr x,#1 + + 'Fetch WaveTable + mov ChlA_wave,ChlAp_sampptr + add ChlA_wave,x + rdbyte ChlA_wave,ChlA_wave + + 'Check BitRate and Skip if 8bit + test ChlAp_keyon,#%0010 wc + if_nc jmp #skip_4bitsam + + 'Convert 4bit to 8bit + test ChlA_offset,#%0001 wc + if_c shr ChlA_wave,#4 + if_nc and ChlA_wave,#%00001111 + + mov x,ChlA_wave + shl ChlA_wave,#4 + add ChlA_wave,x + + 'Center Amplitude and mute if Keyoff. +skip_4bitsam test ChlAp_keyon,#%0001 wc + if_nc mov ChlA_wave,#128 + + 'Volume Multiply + mov x,#0 + test ChlAp_keyon,#%10000000 wc + if_c add x,ChlA_wave + if_nc add x,#128 + + shr ChlA_wave,#1 + test ChlAp_keyon,#%01000000 wc + if_c add x,ChlA_wave + if_nc add x,#64 + add x,#64 + + shr ChlA_wave,#1 + test ChlAp_keyon,#%00100000 wc + if_c add x,ChlA_wave + if_nc add x,#32 + add x,#96 + + shr ChlA_wave,#1 + test ChlAp_keyon,#%00010000 wc + if_c add x,ChlA_wave + if_nc add x,#16 + add x,#112 + +'Return Audio as X. +wvsynth_ret ret + +'-----------------------Sound Engine End-----------------------' + +Port_Pins long %00000000_00000000_00000011_00000000 + + '- CTR PLL -------- BPIN --- APIN +Right_ctra long %0_00110_000_00000000_000000_000_001000 +Left_ctra long %0_00110_000_00000000_000000_000_001001 + +Timing_delay long 2500 'Sampling Rate = 32,000.00hz +NumberOfChannels long 6 + +Time res 1 +addrregs res 1 +x res 1 +y res 1 + +'WaveTable Synth Accumulators +ChlA_wave res 1 +ChlA_offset res 1 +ChlA_counter res 1 +ChlAp_sampptr res 1 +ChlAp_sampend res 1 +Ch1Ap_samplpp res 1 +Ch1Ap_freq res 1 +ChlAp_keyon res 1 + +'DPCM Accumulators +DPCM_wave res 1 +DPCM_address res 1 +DPCM_offset res 1 +DPCM_counter res 1 +DPCM_freq res 1 +DPCM_runlen res 1 +DPCM_phs res 1 +DPCM_delta res 1 \ No newline at end of file diff --git a/lib/adm-plx.spin b/lib/adm-plx.spin new file mode 100644 index 0000000000000000000000000000000000000000..6917a14823a9ce1bc0ea83b8fd10cc0b53fbdc34 GIT binary patch literal 17354 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 literal 0 HcmV?d00001 diff --git a/lib/adm-rtc.spin b/lib/adm-rtc.spin new file mode 100644 index 0000000000000000000000000000000000000000..8cd6854d7d4303775e76b023569e389d3d8b9ecc GIT binary patch literal 43102 zcmeI5OLHAZ700{Gj)E!{RFMUX!HLK<35g{;jsqc8vL3M#Nfwf9Cs0&MmMq&umW3q8 z7{?!o6&sd(sC)w8|Lb#)yJzlee6Jo?*3{IMW_o)1aUTCZ-RDft|Ni?Tya+!HKMp^c z2@JupsPaNOX|03KCAL#G2E#5@b|KgPe!O`_!b`TlSzJN)$;>k#Dj5n0f z5o^*AMph6N{df|#^>imAh-|>}#-YrY=(L2wZeJ4?1 zHtNQA;^w}%yC6w`>x{Q=_K_&?X7{sq?-B*pWo3Z_tFpFdDz-H?Ha5h*DSV&*n-^ZOQV=cYSs2jQgEP_7P1$pm6qPn4@uwAQK-L9Vk$Eb z#>&0e9{Ti1SIkLv&gh7kC~$m|Hr^#C3M@+&H{y!Jw>rBY-WRXW!(kNo`MF)03KMU& zvG8Sh88H!DoC&wWa=dzd8F)9mJHnGz-xVRsm2hX|a(?jxy&0|#_LRxTC?)*ohe8&@ zWv%1<^G8S5n%Ow2Y=m#Zig3953eX?a^QpMn0Z)qXuOGt1?|)#u@&?qNM)Azh4l(;aMPFEek=;B$ZKZMBv$ zYfbH-4r=6jDcUIMdR_Oi)l$k`U2o}`aw@jgQ_(2TIj`$S*^_Hg2gzln(H3t{J<3?? zm`ik{PJZ`;S0z_z;x#%2zKB#dYt?8lufE+=EAzA^<=U6c`7lyxT2>u>+iBCxsrN;s zrdb1=V+%u7)~K>CG#s!b1JTc z+tCs=8Dh<5v&~Cn*5n;Ih3ALrjd@5GW1a_UnU`ZZ&!_k4XVI@>6u8j#FCB_+`;vF4 zh~%NOn=uVUV0OdIBvG4{!^=wht$rVAG+_;KTO~XZ$5IJAYo06S1?IU*Gn&(z6C0iy z15`sNHC39ZHXH9@ElM^m9_$2{!w02 zkhu3aiAG|*Hab~HBg4cfI%#xHT6snK*^H9)=sr%lM%T%!eRVRegEd-NkMF~3kPFS1Z4cD}Ky#8tb)=Rt~F^c;i{CM+Thm*7#9+>2Xze zq3dB^4@!T3NZG@3a0cS1a^1y~bpDPi1k7I51m75Ob?6*EHTSiZbapy5$7- TSea@d>Y=?6Yf)e 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 literal 0 HcmV?d00001 diff --git a/lib/adm-sid.spin b/lib/adm-sid.spin new file mode 100644 index 0000000000000000000000000000000000000000..54cea4c33a0cc153138cd242fb1e17fe504d8d7a GIT binary patch literal 80108 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 z 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 Zh8@NOmveV!i~Z~i_um)a55!zq{6C9II0*m% literal 0 HcmV?d00001 diff --git a/lib/bel-htext.spin b/lib/bel-htext.spin new file mode 100644 index 0000000000000000000000000000000000000000..d14ddbb3d702ea105736342ae7db8955b3aa7bb3 GIT binary patch literal 56808 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 xrI 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 Q)iZ{_oyLVf$h(RE4}w-@ApigX literal 0 HcmV?d00001 diff --git a/lib/bel-mouse.spin b/lib/bel-mouse.spin new file mode 100644 index 0000000000000000000000000000000000000000..c37ad5c10802494c30109a805179159a9b3b9077 GIT binary patch literal 32672 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 literal 0 HcmV?d00001 diff --git a/lib/bel-tv.spin b/lib/bel-tv.spin new file mode 100644 index 0000000000000000000000000000000000000000..b58adcf2b7800c2fcce2836b91f59d2b53f1226c GIT binary patch literal 63654 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 literal 0 HcmV?d00001 diff --git a/lib/glob-fds.spin b/lib/glob-fds.spin new file mode 100644 index 0000000000000000000000000000000000000000..24a6809a0019b14e6d49894d5fb3a9786df3cde3 GIT binary patch literal 23654 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