From f29ad437fa8e068d3fa21bb126078bd966efda20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 18 Oct 2017 17:32:56 +0200 Subject: [PATCH] Kernel 0.9.1 : More room in GP to more ROM Calls! --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/LSDEV.S.txt | 1 + INC/A2osX.I.txt | 5 +- INC/KERNEL.I.txt | 17 ++-- LIB/LIBMATH.S.txt | 10 ++- SYS/KERNEL.S.BIN.txt | 4 +- SYS/KERNEL.S.CORE.txt | 2 + SYS/KERNEL.S.D01.txt | 131 +++++++++++++++++++++++++++++ SYS/KERNEL.S.GP.txt | 173 +++++++-------------------------------- SYS/KERNEL.S.INIT.txt | 11 ++- SYS/KERNEL.S.IRQ.txt | 8 +- SYS/KERNEL.S.STDIO.txt | 19 +---- TEST.S.txt | 4 +- 14 files changed, 201 insertions(+), 184 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 727664f86651ba4df49b1deba949659774feb641..dd9ff5849374d8c46c3650d6e779464decd3eded 100644 GIT binary patch delta 16408 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 UJa&(XcaKSSk9i&*^E&>20om8_(f|Me delta 16485 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 2a1463e5355f079b105648e066c4032933591b0e..1fc4f4d0f4ee84bc6f6a80c982d59992e914abc4 100644 GIT binary patch delta 43584 zcmZ^M34ByV@_)aXd3kSUa!uyUeL_M4!{i_VL?9=L--+14mtLwU6tFG&M`~Oz=o5_Uu|9$o+neOW9>h9|5s_N=`n>Uwj z-duJ|v&GVppJU(KZg~)YxZ?LZ)qMPso^<dqOzw<|T@j6e3C zn_7SZ^nY{e6)1??+m_}_y4xSYG^f5J-@JE28Ub0*JdN<+kIy21Oi!m0HGc1o^cg8O z*5+V0FrrQ6xcqqxo&ZF zQ+UtWUe{lh{WF7|i>t%y+6S3>ld_)`+`PBs?EJtj(Tda&)(0^_J!_M_7CuUSEdzj;XWq)t?rf_}`!|=D) zvg8L)J=7I00^JiPZel5imHq2_ySA_F849=8h8vq$@)To4<1vkx^$9Vv=dy86?!E1tg3wchVPiPIjPL{( z2mLkG!RA0oc@;}o#`gF04}|jzrUsaMITJLGf>68Jex~=Z{mXloGkpbvk8R$AWQBiV9Wtp(rmidvHj?gCP4uBn>yw(`{``|vYyk! z{z|3}5YdBd|GHHhnQw^gKW#8$ARJ5S2`%kRUk`xZjcnY8y)!}up)=4XaU=6rqVKLS z(Wq~d!%jLA-E}WFx?}NY$$26W``PGp`SP&8ip8J9uz<_aas^X=2V}Mo^H=fio{h}D z8Bl#aVSfcv!$jH^U;q=TTM2BK`KR)M1~9L_P0TBEZD$yfzo~Dib^Y4&{58Qa_~Tqz z=iVXe+IqVi8XD?%Q)L;`e=jS2=iRp1ZVDBL=k^Tr_4J09wC}B6zme&>toB;jlJ@qY zfzsXn`gy3FTi?-I-^@~NvbbziaY-3Vwabd~(G?XeHC|R!jIO9;dIEY{h27#zWReDq zV)fAO!JgGDAxSQIenCS6)05f$p^byg;V_u4zO%Zyb4fdMJE>q}xVo%=aFIXQwV@~2 z!rZPgg^Sn>&)&6Lj3?nE1K=hJl`*mY%i#YNlT)gdS6`0>;#<72X$CypC&( zp30bdEy_LD?d^KWJ@@*t7;hMhQ9Xbb2{$VKGOgbs{U?vUp;3`1o*LQ%AV3Yi$opI7tHF7?{pdP6j}2 zEzX0%^~;y{3=Xp7Q>Y|}lAeKq{s9)hlof9!1ogGddMd*)F>Vse>w-vZ;g5c*XDZA1 zGhb*vmE}OP?s+*=>E4_5@_17Z`RjwGj5yH2idRu-L$DJ^ zV&~%adZt30vXs+U@g+39Sb+M@rWO>hL9yKsqWR^_xt94$#iS5ObKAs?EVXZM!YjUF z$W9@HATyV(>ka#{!jP2A3mG}HrMaoLy16+_|8~@0`)a@%+)2w`xrg!2`AS7-uiTw; z+Wd0k)U?i}v+5#}oLx-6m_+P4rtg!2(#hF=eq( z{!*YN`F9yA^~>qUYNlR+AHFN29o8>u>Z}$5pc-BJuA+*KVc?+(QND=Eucq=%qskYf zT)hU^a<65)@m(cbyAD4Ju4laOT_tbP4MhAVrXL`A4dHyFA)GO;KT^>qrv8aY`7_OE zY@awZfZ6kx(LGXW85{Rk#y@^n$=7Z|(9CT--G z<|z}EP5kjZWpcuqQHEw!XK{1BQmLHHr{^ojsBv)~^6ZQsL#vo)i!6qgHH7k@KiFB_$y{3_JE8ADff5+sVn{ib_^DjK zf{F?V1^qMPy-h6hbHRK3bWL%(!GQV~QjgI8EoFDwm)zf}c+D*LD}GK-T*f#E?)b0e zf)`YjvH1T)u$D9Z8`(DFztko@?^`-Yz>5FF;WCIl`5k_DZQNelQpeQqF~9jg@HL%E zUg$?dg&-kHIz-Y>MBDQ1ZDHs?rOffOXuo}RU%0kwU;woLB6(Z=6-eAHDh5g6sF@#Z zs$&i%BC`yXx=GpJHQ38^v+=LR_*Yf-&k+@IMuA3xaUDz6p|ti7Y_AIjgNH2vrrV?v ztJ|eScf>2;_x6GQx;A59Ch*{VrR=~0WqUz*LDxWd7PCKN94e*E{v7^<-e;$G| z_Xv-BTgjRKf&qcz7g6kcNeb55V55Id52+YUebu$K%>MES+$+jXroIYb+iP^p2<7i} zNu2ry;dqmOHLQ6v--7hTMvi|Q;&$3ToJL`$zaxqFyvuKXTX7d0Rjy#R_Y~|U+FH){ zrM#xjTOo6?628AHeBMUQ7kFJ#h!mE`8XUq5*#`1|0g2L}L9$RBmJXf8}Uh-zt9QO_YO+2s^(aE|cUrs3+5*3UTR>JvdX8 zG2+sRzLH(E>_Xs5ap{(wsvhMO$V)H%g1qz*S*g(;qhe8r%QPzg4RM)H<-Z{=Gk`2N zlh1iq$%)It-v!xxEyP)M4v~)CkW1DHgk>J)nlxE#;(Teas0BpFI9lM?9t~kRp1<&} z;#P|IKi^df;wAueN-=jFRVtJc9&oCzl1a+`p}~#J?Uw|{sC|o=dorzLR2Mw>o|0OW ze51~`WEZ<&O)g&3k>}YPSZ)(d6^NasuDh?$-#z^uu)d`EIlqEebeh1H&)=|n6@@LbM`dw5~!CX(u z5(6j7rZL-7tPUdsY5LR9RO+R1p$EW%WQvr^y;R%WAx)9wGB7(P5t~t?-No7}_`##f z38Bt%mRyNC=r{$nfj|JtR&v$o-|AGbx?`He7>pP<`gDWaj~m17Fmh&$;&vi#5z~*C z#OX7ooXMW0%;BLGrVM2^zkG!$HNBc-MRe~kI#*cwWP_&F@FM`Q*2=SHd>#LKg=w6% zUgDY9z;jlbN`S0+r72HoY-ru+y znmx<@l24mx&a!?bQF*`Sr%p6`Lf=U9V?j+bDGNR4%9ZhaD~n;!LQCk`VU+$aTH3jK z`5L1%^?O-LMeRKU!Jg&YBzWo%qbf=RLq>(?$7n^#8o)=;{}e4=17M?6|Jfk;7oIc8 z?3w$k1gdSH-`wBTU3)Gu-lV+AlTJE2k9n9$c%_76qG!Os;8kR4dr*|`ps9fo;xqB^ zB(v9NmbK&r3J9~E{$jd?&wI%{`GDV?5+cnMP81fu654nB{9q%@5_J^{98mLPd>#$V zL+%oSs0kOrLhbA*C9TCFG=AY|lCBZx{n9lO1JfsL)oTBou!K=z0x%Es|K1S!s6?UI z79~}}Ya&>tN_tIfgTju0CZ$6=C0if?ZW8i{#Pj08HD9i9_0E0{KNo;ZdD1RR7yw3RaNHh%hSi~D$eyCIbfw@LaAR=0lbI^xXr zgXhH{4Kn-hM<_TCIDI?$%}?391-oKrwu}bh`orj%ZCY}m#%wBt!6m#+!v8pA=1 z#ha0I7NE$=T-DIjT+gg$lc5O@i~k%pcVC^kB!pQLUWI8aDJ1A4cPUV^1k52F$^KGe zJ90cZFnuvx7Gw@gqVTLm)M76tl;m2}wN}&IRy&u)Z$mMi`_rbejB|y`y}i9_a1b2E z|6FHI4DBF1@G*k9TIO{4+uG|}Su!S;ES`wp!j9QBC{=fY8V_dJ@Dv99t!;Jn!hh(- zBuh^Mlv9YC0L`9#ceH8d1(87t$4&WGIJC-r$4d-My%2~~_C$wypuxN&?xemvHvSI2 zpOnh4(*gdm0*x3=z3r`9c)I*f}{eFTz{*b6|Tq5fCJ!cLmck$Ba z%%#@5&BALv@gBbBIdh3}FXzvhCn)#vhn_P}RPN_rJZGMQ1FztD^HdyoCqHiZeEBTRZ==E?JwrV49h7PG5!2a%#KNp%pazf zC15_I;$Fxg{$LX200FF#E;UEoU~)41Y`Eem+65j8`t@ z?TRH`xs3NJmYj6h_>%HzEK!*F;L2%J!ItB%;x{UmaXB#KSpsbK!J#t^e!Z4m#HL** zy&9Xs2Thi{ElNIr=*75H{@1(Aw#+1{Zn%=k6$$ZZxFTzsTA9bek6vqbbLBPDhpvik z@G9D}aNa{$o7K3h^|A+{B7MKlYKh~@V%rZqqcQFTdrE zevDvK%Tb(BLBr);M>WqP`xIl!Aebvr=ctNddkmL3r%5IuvDVnr)!j3|?8il>nW;0V zo8yn|CT%7U7b{MFmE97TJS&1xNDFWE-mk8AcPG~zvuSG$oR!Q`7il17yo@;;Mo5s7 zm8o;kuf1`Ejwbw0JR#y%&o3=!-no2Uyv3au-z-@)zcj$SEmY=N*a~P@8~M#+L^R~S z-Y%T$EM=bb1i)2d94yWb_@3ZA$)79k0)#;rMEBB2Q9FS!FrPmVZ<(wt;9taBiX97$ zlVOo$p!~&rLV_hPv;>12bKdGF$C4DD0sj(QLCn=H+fA13oT8xvH!XD4AR8P^v~0{y?s7&h-mW^eBR|`IXvZYW#!IyU zl2a27^WQ&jE>a%iw>@tjul$X_@w~ZEd6+9tSn`!e__!x5bCgH<+9xa%mB;v{Pgu%r zk4yQL|Acw(=~Hq{fhYO*Phf7I;uD^RZx zA=zy#+WGvXr!09%kYK`dMi)a&zwl7$7GM2Xs48nM?$TPh;gPuN7KKQe5ikA@ch>jZv20E^;7n7 zDe$F{w8{@m6#rwH|K%H>vS*mSW&7-AU*7*B)hrQiHG(V%ObftI^}R$h?gxJ4DSLq* zzBQ8DhLJ$`hqVisojhu!5(JnXJ~W|r1Xw0h_{68}=?QS2iED^5mTgw}RZrV93*asz z7m*$AGGqHDX;D{yL0N!h>k_igDk0F2orES<}ed_b4}L%ZGZpS!xsCwbJBEJpmWQYu67B zg?lzaJ33?a(5i4pXOI=l<@c{ND-%|!2F^212oVT2OqKaqdB zN1ddc#8daGh21BkE8i)ikL@e_!^?1i9vXwFuhCm=~yO* z6t$ae-HN~bz(s0hDBRIe-Leq>4@Ve0Mz=xyk+0`=sh5uS^}q{3>=ILmF76~%6Q=n= zDfXjXBp-r^m!`S2%wKPyZH@L5QO^J&I&SDK0sJfqfy!bPPM%O_5mST%7P#9qiEPnFFU3?gh1JYG{< zS2Mo>HjBCirS`2Bsej>ad>Fs=ZGa*hZ@cmDxyHXc8)yTWJo4D`bxy&HYe1tS!f^8wU&frY!DRU1}Z2;5|U z0+=Q5u?Rn8dv#rHV|53!??of>SHbst5gMgkY=I82d>zEcwBg<^?7QyOE3tsHm~Wqf ze(JEetTg4Co@IR9N>jS&ImZ96(&SBh9>(5piIgLZ zKLDT1%opUsr@Y8UcCwTyFA?i?g`+a%Wy!cwrn~}H9{(!i$L~=KwAb*X{B_1x?NLjE zZy4N)jg%nr{v=5GojVwlHppi8k+9mJUn%Th^Y6>J#!5e)wrqVIv&nR5P~* z{tGzEg~@~l<0M%qh6UPIQ_m6#aXmy~Ed^BwkbtjTkWeg1$eM^QpS5T7z+o=DvT&FS z(k4sNT!Gj*TsW|L2mvhcXi^A_4oBv?Rhw8sIdGD$To{HcrvjwNYZK2DqHt5p0e;|) zxQvjDF6fc?(^e?O5M3QTgFQn#i52ieOd3mBso-)NXobV9V|^dfSIIW+)k<;Az#1bu zXg6)}Vy2%aE0fp2wFtLtK}~&qU=qrEjq4$K3`;`MP#cStB>`a4qp z^}frme%9j2I%;l$LwJE4O2ipZUDg&{l*cOH<1asJnP^*d4vfmla3Q?UZF$-_=a5>IZOFS>X8CpZCh&tOZulQDJX@nVJowJjGvf; zQkMTO{(hd87y87&_9jzgc?>xE3r~nQRxP&Njh^0WOiiO+4^dPyz zyO;_Ui#g{xY{QsDL(2>11$aoFN#X{RbU)c8Zgnk!_7@?`jO5}-fHU5T;BFGo3@Fjdf(x@rD! z>DGfXIvjDLt^n@jmB3TFPqsM+J9$;44bxYXPS(Zjr=dtj`RLeZ!dufDg;LkzBAWU7 z#KgNZRBS7zuQTM$>BcAq2xL&)dKL{ynPXqCL{GR4a<^8Uq0rnlHPE%nc{DaBuid73 zD>oYGHW^~-ObMTPmVjT_2wx^OIXAjI{p*swOF z&$-B&IzM5HKv;vlGMDLF4H+^l3bExnn_B1BGtYL(9>$e$aB*uVE{^qc4NQjW`WbWdtw`&kQ*dpG9S(ok4X}Bx9R)*_5Z>#ePzl#ZXgRKs zmE3@G;dYLA{x#?3OWvGW)Gjn1tJ6$h6-+(#aiY z>%NoUa-QaL9*lrvDi5JN_pT91Wb^8G8ytL(u_5jSi0?kJAu{eaHpBxX8{$EOc@Fbg zJGHFPLx8sbO`fYTfz^lc+w;g6qG@&?jnKgo9*dAY0dw;>%Ej!mgeM~9n05P;(Q@@E zV9k4a1Z&e^bI;IF&%lT*apx~w$sf-TYD|M z_u<~2zLf|WN?K})_^=Ra%92i%h~UzqpY|@3R6DAeV;S`?oL#6Pdw4l|$mljfN>Ws^ zXi+92>>`bO(3sd|d^vNhFbTCvR-v_HrAY)c%VsD@Tg6YjP)jXY4Xn1)Op$QOH722S zI(tpUVd14Q=nt}SYxz|dY6VIkf8;_fFRotz9@wLqP9zx+6DzZgxxPF0h{Rt09;@O0 z0ou?^_&`KpU2tfiv%i_e|A<0kH(P(g-=w*zKLgzNi;OGzRWg*7nMkWc6pbRO^q5T4 z_Y#;^kQcj2k0fp~n=WEbi-`iNW5fy5Rk@-mamM0B-K4r^)aYYstf-km2e@ram0eK7 z^ms{3LIS1?VMl|sne{|jn3cq@ycjz**;vQ!A)zI_4f{9`I+j(TIeox zgunuaTQUj_P)MVA58;p&nCblr4YC8(KzabyvH zY!pX^5Vh89Q}HFFQoC|S`t1xNWB`{V@wt&Mrm}>5*)m^TqmMJ~5B>IF^zkNXco(8O zdyy$(F*+wm&Wwx;=u?Z0xn0tZQe#5Iy=aMC7so`CurecUSo|aqM63?8)2I4rK$Az% ziUFkt_zbT3LZztG%Osxka!dgp8h}~DHRRW!xe2#51c#YkA!jFb%Kwj+N{K_QB7{>h zxJ_LwZQ3X7(tJ)V5o01j|7nt+gncgAUTMrtr zo!G4Q`GB3ek5o_30{l5`UrejEHn_SVjD=md$k=m><@QQkA_PFNX9yb)I;KI#$p+LZ zrs7t*4bECBz_9E9J1=s~H>~dKre=1?U_<<;~rgYn+Lb$SoRkRp}C)atJT#uOO1p69vLnjsv)Ly_l)}k9S3?m!d-e*ib9zyg3 zAa$K!$?c@9he-s`8A8G(q@Ipy`@je@4C1$K$b`TGGB)(}a&4U(#t`8=V|1rr6#GV_ z+j6FEBD&552wXZNbe&}YASnH80O+A}44(O&T$Q9y^h~4KNZKqo&$y;x_Ar{0DLoZ8 z>_k}P0*B7Dt%PsbnD1?oQ%K!zx}4e0HQ|z#c*3^Bghwy5{z<>5o+=_3nEgBh_Y~&X zc?@oSmqe@n0ez(J=Ibug(n9BtChY>FInKumk7;h-gF3P+K;>Rwuw6vlAeiuCgT3}i zuCQ|me%$cUL#s<Kn#;A+yg$nI z)Bj`)=+Bb+?7v9r``7K^=U<_@{r@*Yz+a`9&~K7-r`&vOhu&Lw_7$2ZuP?SUP9+I7U?h>8WuIgF7MvP~>n7F(7AFj~6p?gLsxYwZIK1qRo zzcFbKphIjYDeeRYIzsFZqNSljAEr5e$e6*u{q_v14-?QM2Jw#?lcqg}Qs3ip2s55A zhVZ1Q-Olu<pXFy?spTlo@hh&>GV`7{ zMQsi-Zo{I;J_4GtW3U7H`vJwB{eo=meo;&jsaic7g&_n5+4mCk(~X*&Uv{NdX-a#Q zpL~^;s=h{$d~>Pda=b3bpub^|@Fu_dDlI4UR&+*_-j*|m>*sB?@HW3QQuA)4Ca|r! zf!U9a)VycZOx@O54K4lsXpR1NId}FC4C#p_{!n)9{l^IXAvu6;-v^{+aAN`}0WW1iYI+aJA-8 zzTii$){4shJq8(smHH*t-1C(bq2dgceFNu&uX*t`T2aG)ezV;-Xy^W~Y?lw`lE1#A z!(ZP9ujRMKe*2%nR^I_K|9gJPHCo=BALO*@KN`#R6UZ){#JoQXvLmKT+dv(;`kCjK z5!PuM6lJ6e{c7UMwVKDu;I%^IRE6hUtNGeYW_k$GPdmhbk+{h)m7#`Kq^r918w#82{5uGeyx zzDjm3u1Ly2&1;0~^$0bQ-jm;u)I_M$-!!Os%b@1%C^dLMAU)gf%6_tr@^`P-G9B+p zA5H{g`TIQn2CWR<*jYDdIZHo~`27@Aq<<(KkIDZS-6Z)VIM@+gA&3B60^SqQ6rm9g z{*UocA?aTV-3);h5N-f={zQ_H`YC_l2F+*vO#aOO{J;TC4>2{5t_}0$?Mw7-Qbi;Y zy!!|kfeEyzNd!pNl`+S787wpMG_jCc7s=MqOGiW!iL1((n^VME7XLkH~-63WCYTf<~__@h7ta3h&wj98~JBSz2@bJQO@VnjZ%6vR5kjJO_i zi@+yBFtWxJ{^U5}*b&baV>{-0+>Lmsu_H!Alrb2&#?(vOD7rCXL`OwNOhJsyfiS6< zwJc)=h>|)6jlZ7v-J&IrN3c{3C?=tE>?Bkz;Md=xRfZN~H2NZnDOt^22$&L+h5Nb{ zt5;G8HC#kAT*OR~Ad>Xrb|M+UQ_ys_uY;}_#_tq_O~uR`N*sux8a;0apkfY0Pf;mi zdBiJXrm4$N>|4%Hy%h=*;-^Nn!7Fv)*hyFc^mX+$^XIfxGhIGaXPJ1ZF5W~7OyxU9 zbKvUVn0fbUzftJzmDi;Cb9+Mc!rH&2-5;cw$+aNNiCARcv@#?s>o*KVD>p|gx5&zd z-jT|!(Mm)LV_AIR&cQX&rrRU6o*n#!N8_AM5gSZQ5|QSq=keUTRPO|Yv0lpJcVS>g zbi4)bTQ+K%j7i`@8gwsXcLr6_^Eej8L9g*fA&iy-B1(s%P1_P zi;cUSzrQ=q#s74NmK=8lV0>5d2k+3l%2i_8+pk6u#j!>i&~Y8+1LsNfa#X#ZKyILT zSwVRz^ctm;9OUyi+R<{RI&OwT;A7zo!TN1vRAz zW3HXb^#7A^?!QKueo6aIe|sZAFwafQ;KV&-sCF*ugn`eJZ^lqb+axA!>tv2wWHtj? zjk8j{6=b_^lWp5N_h9itbV#mXDG28waBfr;a>90RjIEXgOjA3@Bq`%!wm!0%1Kqfz~F`5@Si zpd8U2^YA25_EZcK@?1Oco+#QMg?8DWiMFsmYs5x_?&l<(>Cdx>P}>zF2~oxzN95+B zBV@5mVekTa%z053*Yyk`M+$`=3com7goie*>tP)G$6j!u!jIzdw zutr|tfx9$M<*OrIiJp>Pmy)}sy0#HPx9&HLG#m1_yaY>qlb?N;=F50X&Kj@^!Q)?o z7(5m6A}sYC#=p8(L&^rnyT{=7zQ@13OLLi7>ihJEFZ6f7>mShRfLDHn3B zF6X?Xy0xyYrL=NOQRM`d{H*~$#en}G;4{BF2Hqwbl$3^xD*1|gaQkon(HIZnw0#142Hjas)wZGvbgme>G!2c2H9;k}nHAjFP-K}`C9U_&5mpJd z*CXsvjZ+cw)-K+W1 zJ>uqHDi6f&gX?_JJ}qly z<}u|dc=$>hh1_Gr&~}RNk(aQZoY+yIGT00;>CTm%lN)Rc754TI!7RYw>3OV}sset^ zePH!*vCXM%5Q>009*`b{{lo|XU_s0;41;5+qktfBZG?az<}1O)qll3=3=C>Dw~aX_ z9@}b?Y!%Y|(sr>SUMMUQTsQ-Yd{|Ua8JLKhFoZ|DN~1-kR7CO7uCi!Z8I@6hw5vQ? zR!(IUA+1-)4hp9r5Gf+0&XdmKZJqqk{aQ+SB_;vEItf+MF3T@KsGUAl-m@l5lg3$o zK>!xqbSms-S;z68?$(SRE-O!qaN7 zc)~BX?Tr3`H9g(AG$JC^Qzwki?VFA-3s0IE?vMlZ)l2LJ_0`)3$sv6vtibwemfpbM zdO%A{o`ZWk*(FVZzmcmCYLk>EUjCp~UV`{wqmsH#pDP~vQ}bCCXVUVq2KIEkY8`@R>v?(1`e8+dNuox{68YFmgX(!9*a7i2v#|)^&bl zT~ihqivylO{wpw~zEHwsFEW;9$y8o^Saaj9clKc|U0K3UI*cpp6Ae=waV(L;?qrab zgh*kM7luKZur#uGwK(@qm255Ru&327v~Vt?ux&by=yCveyAxRAa@mRkpAZJujV?%T z!(rY-wmP}HLj*}@=?V!N#hI|uxcx4GZj-nQO@*s?TP@yJt~Qtl@h&1o6NQN$wpudix0(gzImi`YKs??(at3<@*UKW6NV|#O5xQL#%PMBEDpwJ(F z7z#b-p8&7#5(yXxY$Jf_VSimsIKT?_^NdHdeCwrhh4U}tjgM$~zRN|#5gt-XQ_Ohy z?74y`zpA*>Q?C>wBsYXn-_qQVznJ$be(NKeN4c7Z9@WOrbzLi04X%!b9Zj9})$H~edRzZx@l zlN?;m&HTutTDEd4{}M>1B1DF^s1bSFNpX~uO36A!xQqxGL#&J;2kZxpJr7sZAwK&t z%@ubSIt|>-mprCTu0({4bRkfdKF@v8vEk`pXLaq|&bD@uAd3J!HQ^|9nf$B*NHZE9=O0T(OpOpxMvA_iCq;vaROfl>*cN1sB|m*ki)W}s_INl}>2BEed{kZ> zkrSTs0_3fDINv(InICxqR~S>D&=O29DZJ}lbpl`agr<9624B_$!--j`ehYB@e^P|0-{D8<_xzlvu`hlwP(r@`2$yiePZDK* z;f6xy{#hcTH%`$kis~l8H+<3_CX6AjxV4Hz8gVYNcyZcx*5;WZ!tr zdzCvp9*c25q8fK6acGgD@e`iW(x)P9M{qwbZLB5`Wiu{c3YUW@yS$+sO;kKuXD9G0 zp3$&ARh4Li9&-e`Ho znMT}G2y`x^%n&SoJW+z{hAHrL7D}q5aRFDNuSilR{4Lz}oE9IN5K}@3kP(8}i$M|H z_)KB;63i`W6s0VFqJbF-mO2SEruix2fgaHdd?Se|kei0E#*_!)pwLU@_z;aFT#>GF z(C>)&*ZeL0>v1nsQo&DsNh>axV$5d&=}`#1q4|ueBq9bUcPjtpIW4DmI)y!u1QQ7S zh~|Nqb{;3&M^r4>^{yFmP!cTIGzVbz0TK{vrr_>X$rRy$`JxGsxe-? zS>F7-HYr#uaYxBXs57RERIqpi*vNwcacXlwIE}o~SlK3Eah^cY45L)6wB~(BwA4_G z9H!VC@D76c{Vg3Wbo>&B-UVZu z^#zz~5sfIH4vqSb1@$d$^Mm!wxp>SJrY!-To??iMlc)~xq&FGhCyxa`h5v|g9lsRR zr<`iEz;SOh=o-@?VVNY)Uqv!uIZb&tpZ5X`i4{Ebf|i!FlIrm~z6z7#U1j1gEZ1FL z{WRPYlhU>Zwd5n|MZ-C3`AaWo4RL*t2NU~w_KRAHV;xpTYL+5^reJ`d_@b7dIf&w8 z?^4tu;7DI@+RwAGUzeyG@Y9Xh8H7klW;ZgnAg2dvbi~cjR<)ifb~3i;S;m5&jau6| z(XISDq7eKLlGPbu6Tc~BPcv;X@u%=_)>gSQ+{3XuyR)_z_7N-DCU(Z0?Q+`k#m+ca zPFR!`)g9a1<3jW_sqeH;N`6x2@{{s9; z#sT>MLg4l95&R$6D=CO}ns8Ap|6gpNEJY5_eQ1@=`ROmirn>|zDA;!eQXW$5#zv9w zw}9C8QiDw|Gyc8Y`1cC=Z}OEQ)b+>1bRW?$ zVzb^KnK6>J4@ml=i%S7CB&_f*IQy`PcWt(N_yccfac=b?pi20gWHnj;u&B?BL--6U ze3Tcyrj1t~=dG`4v)xZfEHU!f_oQiG*zUpO`g>l}@++P;#P2gv_Dgt<+Ca!qq^a}y zF$l7caL4O7zhC5m*EP@Nmkelm*a;_+zpe?1L0&evxQf|crI0ch)U4<=zW#Nsu;6u2 zYJbCMS;d@hj_D=mEq?fQExZ10KziPhQ5RCXq$?wTu$}qd{f(YcF2ZG`>rQf&@DDJ3M9%9UiJc;1VaUtj`B*Mb%pk$0Dk5Z9 z?k5yJ$KTs;chdrCi$9Ho!x*lEl+WbgB1=2W5~DGaO{~WM=x3_qJEPI}vQhdE{HZs!H205V z<~R2zgQN!*G>iPC^O4jk zjpAx3l$>Rx^R@42=|veRk&Yw0N$Kv{uzGn9v{Rr@$TAE4O6>5AY<>%%<8r9qT>ip4 zT81<4*iJq9``*>u@dZX7RjhCv&wUr7V7wTaEy&bDTA(7iK$Zl{1;K6h#C@>O?tV=*s`%2QTB>&{R%0Z31ZvqdG|8UM&p)bVB_3yvJOB@{ zaWiP78HuG^f_-(Hn0h?H%_KOl8-_e?j}m6Zg3l)Kf=~?+O-dLgYoUAdTD0@lQE(Qq zA-Mn=p>Nf9;M{W7OP-OuDH3q$4K!sq!RKI5bbn zfv$6sgiJlzJbGtrH{Pb&PeE^W)%2PqV<|rhYze1EOT1lXUaiHuoQ`FZrm5S&FSW=g zj^GRb-zoTl(9%%g;pxN}@h1jl>xm2@eT77J3>5N*GtWw+pYm-3JwxjU`jCLThIv*U zi;-YcR!fAU1L_LThiPDzNi1^>f8y^r^?SMUq2?}6SS$BKenIsV=IN8HBV{Kg%&$$qFWz(VfGnIWLmm9W55^pW5&<5cA&WYMojzo6*m^^>Zjkevd4_o; z41)5?38x^gTN|1?nRlb0t=YYau$>u}kVY5!nFhwQ42)+R7|$_}gigd_>6)rYX;{xE`mH_$uImuRC6^b1JN zV5?qeOge0^J=jaQUzim*pI=AnScIv#;Xdw?K3YbG659@eWSB^JcE=X-JU=U_C?ieH)M)B06238>6!;pPsi@cQ!Kb zANlhiX`b9aMd93kIR>s7yTto{0xbToBVaf4uRel@?-r_XyKJ{cPmkLqKP|qUPyVMC zJovGeyeZ_XqK{1o{~`Ip47VI|h)k7%2?)+ZNJ&>Op43C+gr~EN=_rulOfjxGd{m;j zmSrA?I+>lCoP6PyuD-67JpO zRG4{Z^CQc3cSxnw!)1lJ%S(Q<4S0b{bEXs5!e^&4b%~xM<)lR zEEA{rJULu<$LQh0_py`Z2l@BQ^gN}LXDrtXC(cK|-UZa{#!;3Z49FzJ-U;ffgcUb# z5$|8F7aYI%|2G4O&SP08jzuNhEl6A2$Gj)eJbPv#I#2FO>1s24GFwLc9&SYEjh!Qk z&~qa~?_jt7{oq8$&EQs<$*`%lu6_|7=%N5en|uaY-`P-&ti!ir;~jS!fBJQOdg%6; z`i8dooroGjt^H2gx$y15);&mD`%pwT!);y}`Lpf<>ysJ>Pw3qM(C;zBHL{Vp?v=tt z-0~Y4UG)1<*NYpC`$-m|?E`2_dl-sM=s`5L9X4Y-&}yjn)>gvstbzQwQOHHr^9J%G5k##K+};NSVKMw@4H8Di(#(1-)kc`?~yBeFJmodou>UY`6G0Q9*ftCA?+mq6Ou+ zgnb)SQ)mbxquw#gt6JQ{H@{1oABm$;%XUhPoB6*TT!`c@MLHY4ijFzCt_u z*T7qfghG%z|G{tPH^k==!%HZ)_WzDF`PLlT$z1=7VFQDu?cV`N+BHc(NEFDS)Qp@p z_8*Pr(20LS4@p0RI3&xDRR4l%F&w7EQS#z8-$qMY~)bFPO}h% zYJqDZ7G>NBfJOj1Wq1PL%cM@j%w@HVT$D!!U_&E00NrkpDndMph%~$&NB|yNBGNOZ zifw62LQW-V3?*BHOFi4cFL_7LLJrGA@94#+xn!x^Z4s%~kqxA`7gs;x+ZFL1iG++UfmBd1BlzyrcyF6MGdgBHOOo%- zrd(E(YE|AjbyA3(JBPAH!P22JB&8IGygk<#D3&M>sNMPe)^~N6uK-j?&2a<=OC4ts z8dr)wUM`bfD92h>#MPs?X_#Q)sV}RAS;caaBU%;iGomv*W0Jt(;sY zw8{MNQ9X5hK$0C}`rAsQvt1_p8duJLJ*pSXtcc8$)S`x&Z;CNXM&{m*`Z<26Xv|qD zc_0R>w~BYYr+d6pjbThP7IL~=5q?#Q-IsbCh#|M}3&QCBNU;GwRQI1=lPrLXS910uaamL|`!NJcjj$~zkAH-*3M zkr{dPCZqWYmg3_2MeP^M;^euO#`;CbttQ%4u*7D|veurJ7s%SG79M_Iue7$xwiRvs z@cVjsQM>%gsFv;IkiLYRBwBnlK!A6>Qvmp8j{eV9Ejuj9i>n3o&TJ$Xx_( zNncEJ)IB_i?1Rf!QNlhXc?;tMQ#~yEM9bb=4`zl=0+{1u+Q_&f2}?Se;}lFtf8-}@ z8OPF51&E0~byNZ3WtSPN3uSjXa5}qb>(kzj=9P2wScDiKDOh1?7yBSuqOYWZzyw%j z37! zIa681r+lbaOmf|@t^*I9{PR~oMyj#sHdl7K);mITFnGig;|VW^^UpV zz(=~tRGGu){X?H(%4NLGZ}#!4|Dngl=ShVWDppYeRp)6PZDE!E*^#iwbmXoH6uT$z4g!g(r&K3hSVJ*vRQQ4ETSjaDk6=tF+)1c6ajpK1g?W^!gSaoq`TT$BFVQi+F)bEEabU^ zbkReet4(9Ry#;^XTy~JF! zkns!Ov5iZxB6IR&`qo*}Vpe?MGdC&ZOVA~f6SQMFG@|{DE!tRb*Dq*7DnbX6({o*j@}PN)J(IrUlfTzJ@!uoX zgG2;^k$>RxP%`VsXo-rz59UL_hgbtxfx?B@(b0qv;PX%v_JRZJS0jXt!E0ZrnD~M3 z^>G=dF?RsESza|{SSY7I{hj9mml;=A*Z~fY;FtVvsa5mUKV1$Y_~}` zdPhjx($-Nelinh%I@^O=6q>ZMZIqK43uWYe8lsy>CK9*kK6%yZN<|ltpevD%L_8x! z+_sJ|5n|g6B|S118DoY;5hFy4Gkfe@D){LgyHsTH7%tNrjc= zsg$kP;+vBAQY?i7)2vm=TFT2pwpj8sim`~?q75^3I>^dAj^FyTp5dKgtWYIRKFU0& z9*@f0nf$|_^_;X>6ia{%cnJMq_G(}wF^FtQH8KlSHac_HO3n~r&=K}f5d*@~>-oH2 zu(9XxUi@Qflx+xlT zwAK+^>1~9|$=iR`HKm;|`c)5<%_D>e`XF|SMd%C4v_ACydc{Eh+OU}4N>Gm&WDiDzRYn^<(AUnRwU5}uC{QxP1F z26%x!3D zXk&Twc+Bv>cgb&ykg)9v_w}3+77z(|MJ7I%Oy4R=_^Y8&h)doiI?Op`CgvhL(lORbrqgEY^FqHp1hg%Py4 z@h&XZbu2y#qTY=L_Iq%!8yd>J`0cn42u7~3U}@ct(v$~AFCW(bK{?g9ijo}Rw@^>K zw8G@dQ6EB^)W3;E*&aiOe-%afWBsD4(io%$Tw#y^j?;+uLfWsY!Uw%>lB!m1Y` z)v2j?f52brFY}lCEBsUZmHsOKRR1)8wZFz+>#su^q6SueI(N;mmhpWvtdsfr8P;6> z(F|+0Qp4kpx3zVsp_8A9fT6fnZTT9sIdDH2O-T!N( zFN592TvI^)p;Tdd74idh)OC%ac5DouXlHr%xDIcr8Hy>E=afo2z0O#!sK z11KoJQEGQ&MSFPLb5;+6m{&Y!&0p{*$@&R@#{3Dpj#AwH#ZVLRVblMUdm!qihdb}D z)C307O@J~Y`|*5{*>0g%U9>wU-O7(XXPv0r&f}lAW_#}-itaQxfG8qPD?7w%p0}3H z0%y@~jKOaQUx@>53cQPwIvuPfx&(Jc;)RH>N*=(67p%pB2iZ>MJ}k89U?bk5Mn0M% z(u9j=o}y5Gi-o2AjmICcrs6vdMUV21Bi2F(xJNjT!9C7zh%r6Trl3Z`4<33gmUw(N*bcrtj-YL4H}TH zqkxRKMvU3By&n;I`rqZSaz2RCERy-6>tW;m6o2NioDWCWW9*T7{F%q}e@Hxzk09h~ znmnz3dd*JPQ?`FX!a+Hj&T>EIkH2Wmss9&1`i0@<`~;sym0u9X{W2cW4zsLJQM3pe z5y=Tkg-N<=IM}mtEq#j_pFbgl1rtw6{)Ykk!wAokwM2Lj$F>1-%9?CsZ#%kS=aH{khVhE_gsD1T59`2^gYb- ze&n-Xw&wbNiZH7aRdnfUhtJa7>2PV+20=@o0PqVm#LtX^N70k&{dUpYEI^%ck@E8qMIX2Z^}dBvI* zhX;i$ErCDuiZwMKj|fEyx+FZV07uF(7{r&qYE83xWnNq)6nyYis~ZOJE3aB7Kmq;rRcnqTL-vC&HjAS(J&V7;(3WZ{ z%jN<6%e!B*`aqx%(Fh4aolnK-oRuf4ZTM5o2i4;W_@l2`3rfa~u{Lx(^P|0%gqMCX zx~9K~yI!|WIu#H5gsNLSrlF%GwgEb#_kAR-q;H#go^n$@Jw&?5n2Vnl&Pc1 z3$sZ`7WRg9VhY~sjp#FY>*bljZ+*k+o_Rbq5GFRUGKgc&nWI7J7H*buIZK%>ank^3 z>uh1U)!g!?HOGrLe6i;~OhSBEJhPS`_og+Yq|UIt>Or2p0k1ERU=NyY%AC>I!mOwf z*B#cvMNM)M)f3P_pDS0}-i(IgoJCxSG+^DWN{pZrj=nOM(k2RtJn@N1Sn%x<+%=CY zZ&{tT4q?VlXXAoA>n&?RJYMF7Tl4m^E@Wb=%b#K-Azcv#0gtNFZzHn(!x z2$!!J;c~pBV`Xc3_UkqezaLFpeFi4HpCc!l;J*WlY}1SVwT;XJHX`*k`YS9<4;=W7}$m&y~MGDxx|5smwz)9xOjz*0Qa38++{cqJ>aTi z8dEB-StBj0={=%s3Fjtw%5VjFYGuokn0_fg7#PdwGzn}~&LzRPan7C-A-Hi&pORqP z3G}>Bd@~meCT<^_+XeCOw|sv_s^D#1RhrkZfSjS;U<#lmBdLFbN+y2Y7be z?|{EB#5>=xjgQ-mzdd2T`3;-fyG3&4WMe4ugZyjzrMqovZBMXR&8@?Er2s9y>~{%LpkmBFfH_JHfhBOfAguU3fZ_`UiRuHU=EY zK6guS{d_}$;n5@WUC1|E>|WDeg`bKrI#bC-{5FfdICL@UGWJookflg(4;hImG2-O> zc=OFANh31j5;?C4`{n6Da)BjXiY_B32V~b}hVZ!jn8rz0j5NaeQgkIhQMDI(uQvLR z2JT%0s!Ffr`&D}&|2m0Usvt5@4-XuL>;DEYCf#8ijI&!YGSmO|S>ZNyRarj6w^6M7 zZ1%@;y?$6k;BL^5PqPoxe@|G8w+@q~wv-*Cdb<+D%1H%@%D<@$Dt@| z2DQeEi^@prMMmqUx(O^}Ce$dz@#Cu(;m)oB^4Q?}LgX*o$TDZ~Bk^|n67T2n_JVA9 zdg+lx&?GF-l~_%cu6 zmnGOU^5FS}Ww3pIA8vkDuUL&h9r?j}72aT$30H6>zcK-zCdq82&*%x}!y~)VmKw`w z(C%{O0EhIG%p84rPri|9lV7V6-|0pAC?Uh`t7NATx*>Hnz>`j+Kq_hCB6dG{&FIBS z?j8MGUu$>;`lze^$V?Ua5z;b&xz~|#OwpJH^;OkX!wtdtHOzUs@yWINs+#)YhUz-R zj3P;tKP14WRg?}lx6NU$!3fl}s)pf)miY)fbPh$zsw*pp8|s=Cu)OurqJ}y&#CPQo zkmGNl*i#v=L&>Bh1vO<=!+65f(AL3H&WIG&R#Xo+K!bB{3`L6S%7Gk#JD8J{O_9R- zsddA_c^%AkX0&7)2GqW=qm!ka6)9^7OdH0PDoZ&#T2fy8cK(Q=rQGY zMoB}Uyn48^I)tJK4Zu@BT-^zG{ARiKSz-FV7QPCzrm4x_v2X{e1u>kpMXq{5MH!3V zN`K>aqyo2+!&nvjHpBA5@9p?qa_%Tp{?hHVmkJK^J*n}|P~whA^9s_^elJqRFz{r#N>iSN)nExlL=hpn9Ko_SKo)_t0q!8;mEh=UaRA&YlM2a+(lxxblIXy01%F4%Sfgj9NQV7G~|I z$17~Y3rx_359a3TopW&+GoFh%imZd?96NO3ND@h%x(x%+ThE(w?1h-ZNq@Ld2y49W zVLHchdsCnS@)|XBl+5)Wad5x@w!X2Bf?I>|kn<8f^It9!V1`an2=r4}pYs&FiXO|b z{W*}N*JuQ<6MG4GXwB6G*`tY$3Ypp2W19S*qsQplL(^rpwYehyYfyk_aV<_*O9Tm22YHb7@cDu!GE-Cde;2t&Ssj^b5SfGAoi z6hn2@7=m%E2TsBkGZSXoNOW4-UbS0#YI^ zBT~34$7oZAMdcWS9ANarIl$c;Ns$FVssnC1q+#!=j!PU@f*rgxsuK7dL#E3j)daxN z6LEz>4Zd7qYyYug+?A?zi5xo(BBQywbB;ozso?5u9VfkJX}Ei86&$_rRz_tpD#Z{S zBfW>}>Ih%0VYUoMlE54=q`09P$M>dQ4e`$p*_Zbr)pm=eU8=Y@N!w$u|m3f0n|Ow=_q&q>TvYz^nBm@CyFeX z+|eeJTPlecg)+8$!^{qd@l6eLSZ~qZh=2#jOhe_uI<9v)=Ls~J{x-?BF_f12PM1BL zJO&fcAWxbmpfPlct8SfE!v1}*!Ft{`DU?7S@Z6`7o6&hlLuUZ;(@%Qy!@A*J)+YwyDeRXO^8N z(LRPqaSgQR@qV+=bgI$bDbRT%{8~w@GiHZ}i0s7Qj+4cmqVqpc+^@@KP<;e;pWBCztHmw>ZVF>TXN+dd^;T(EUTCPzkq;sVO3s}IC zfSYC^g|K&AgIeg$((BW^)UJcj7T-6>d>Ro-J{0|2kek~{=Dr8>F()txs>Ok zUO&wef?h;0w8m_jG@un^piIYtu(Hk7R*qqCbIla>iPX)-Yo@H$;Bzz+4JygYQ@7W< z0{IBtmYxr`8OM@64_xl)8YdL0BfW9edE`5%%O~7LdSpY%pI=}79Xe-O{ZyZ0&diqn zNT~?5mW#ju^DJU(7OX|*Llelrx;RoUabWmsNx=wVmFOl@27x5Z3)GgnX+fmKk|Q9E z7;>~UJ!X~?J!V`5kfU2N9Lni2WLUkWqrv_nWt%>z2O|0<~ zB6p1w(NxDC>2{*M(yP_@de>mrB*=-mlZh&G9M`Dr^)6o?AQU?FV!L34Oiydo*?QN2 zxMji#+(h)PQ*nvzB66(F=P*NH;C~XPYVlILv%gMXLVEy}MCSrhLfa(!uTKJ05^-HW zS6J8U2E8-P^1{%_?v6J=A%U4Nw_GN&ZV;pVSgAbtNRHr;-{BsCGO^x!Ho+&%PasQ5*aL1)s5A>KI6Q)|*(H06Ez6 z44@7E1f0R205OL17ho6s3B-bYr6dEUfS&i7F`-ZhigLngHM7&EXJ^7HwLZ~(l?3`g zTTq$EUadY!bO#)3)USzd|H!qPa%v4+Pk`~qDJ`c;UB7{UAi0_>AP2LZ%2y2^ZU#YqsX#ak7#}4Ve z|&c+WPdD^zI*ENqJo zsK%WL6#X3SE7>j1gP>4($WSOkz;@zy+VcbXW&^|ZQdo*=Di*>m0l>l(B5L39pVY!)O}2QE4puFg`Ry3^9iMu(lY)t z1pg1=Kjoz)y?_omW^z+FY?~uq{KG%nW)pU|HNtW zZ2&;8hQWCbbgxiMMwW*E6en11yf*yrnqTbfGjN)J#kJ`*;y=Sbf5S}*&wH8*5H6M5 zgR>SQ8zZkQpuZyP6H@Ph zjaq9ydJ zWOaBpzv7`q&F0sf6g`{Ya9UA#HvQk~)}kuc@!tJ^;jDf1yk>saCFA5p^$SJdubeA9 z!F}?W zcDsIVcifo@5uVB*jZ9<7m!}&Nygo%o;L?%Aqzfx@Am4+fK&D3_4p9hEhL$NgUghO@ zC!{aB8UwVjMptcj-kG{Kk``_*>~Ph+-q!2}n+(sw6190vv-?j?=j7m z3HPQ8a%stCwd%ASm~Wh{W^J{Lc%v6Ik;d1k=BWZv6Ck1alJ3(DaQ(u+jYYc_o?2yl zLd*C8GqrU8NUqBsg4ms~UCVPUtGaRH7@5UKNJ2H!9C2it(jGmWl_G72PO;Be%8W;2 zvssUsLE}2oAUjqEfg?EhcM_1W%ZS^%wPfqxV;}bT#)kUUEYm`8@3U9^Qs>N_4%nNG zv-Y7zEg*ZJp=M*j018IT2OF;G0dv!k>@*KiA8oW0N!Sn7Ez22hq0xyu_FFOnn0#y2DI_wU(%3||7HE=UeTQ~ zZ|+swn**#(-PDT$Z|*hVQEMig<&$Z{h<{ zq(I;Aev(od53E@VFK|ETGU-2x;+Bf0`Ro*-zUdx~6I(y&rwM<RrGtuv^$%TX@-KRaEEv9e zcI12yP0`C3QSDwG?`W*qjL)t+{y(P0@EQ)d$V0e3f|YX zARxbOD43z>K)W^s??AR{5dt00a$(Uz%utwtXM?V~%9>Es`spZdrAAQ zcRT$|%W;CE6iE;3PUy}H(!;0YIMA*f9=E@42k|-3umVF#UDdfzrF;yWJ_3o6?b_q0 zhSZ&nBBWM#_JfCv=@9O8SvS%P=grg|FqGV#J=~oU&L>fiXD{l}fs=XWgnY{IY?v?b ZkjxOY!e?e^+|VFm5`u-C)sf;}_2Yl2;_MhMG{_^|nZkA+|t?9`I5>l2F2t|si5J)2l)q)`jMMHu~K;YE4R0YHm zWyFrB=-t^1*vr`~Sk8v^?BzT?@BXLWssHbr`TaHp&ySk@&AfT@X6DVC_ujmjIp>^` zbIvKbz0PKvA5z_eO}0nyBQ1U~Q4Qfoj{B}@>d~0Nc*}JTl|zghOEbh^uZm$Y+Gq)YW(1B z!Kqdt_~8Pe&(nKcMXE>ev_wwS=4SZzYR=5ZV20kzCL{zF;Fucv#uDwySOX%Fg~s zQ)OgMEsK9-7=rv_ra!9eTiv~p#XmN(TVX3tFm~ zw~c|8_DE%8b9K13d4B6^^su^|?PK0{zIM6p8Pmb`b@uc|LfKP_n74B<<7`jq3S{dm z*}nF!cBZdlax_*mqGSv6oXX~fYkN0-txXRqjF z-fkwyt?FD~zp^)6*|V;@pQ$~-p178UCxUL#&%h9FVezLEFnR|ish_>QY#*wi?hyb) zJ#+T4eakyfkA%yZ+D}xjWBb;w+Q0(q*}hZzQhFo9Nt;{W#Pl-&(6xb$-7x4M$R5~; zGGjKeaGB^cqEY{yY-ik=sIH^ksE);+#l)x+i1Tbz+TI=sPiCkypNTOnb&np;$k*EP8O}KYZgVf)VH118R=Ws+Zm}ZuWcBN+mdFFmsDlC2g|l( ztVp2l?2R<_uI}!yDPPRgL^Q(V!Qj?aEh(=x>YUxg++K6Qmo_!^_ZG9DZxm3=l9tNy zx;p0ekAN&;S%JX^w`2|kMpL-X+!vejLwt{C z&Os1CvtcSzFHtUG{!0fxc*PgoYor!4l>@te83fjuqns7POuM|>_saF9*@M?v3M->0SH3sGqre2G5-+sa+=5Y1G)^JsMYdOSW z;&sQ?@cUzHP_G9D*9}UzM9jrd5py3fMW4|=-;K(?j!r{(Rj=pFy@FO%x7OBIGZmtgIUzcQ1TJNX?aYw91X9-s;T!B2 zeE2Vcq)rC1ArT-)m#^)LgfS41rp&*J@jHCFC#0`7Wa_C*u5j_EFxWhLW+$HDHl*ceA|BOA5+ofO8t!)^svgkIZdc&^nC;*YdNgtbydy0aPBD z5m{AJTUX8Oy-con;XXF+y4Q;aSn_#j7DmdL!Bx!*!xe2Em2F*JEP3bu&f4|Avv&XQ ztn)`_O&+Rj&*;2pmVSX0ML8ETDcY)P_a1Pj)?Q>RNEge_(+4G3(Iru^+N$35;pRo# zq@E!QS9F~gp558s)YjX!CR~iwIrCC}$^mEkK*C-rCT2H=n|gby8e3Q_m$EZ^VhM}A zOp1%_iCAg(VepbKm*B@@Wn-?8S=m)ZMMao7MCWSezAB1elwtbS2I1Eb;kH6H?^=HK z0cXWQUAZ7=$!O=7&r#C(&6&!JsrG(@F%s4Z#;94{)!EY7*4w^{6|U#EW+?^A8T@FL zGQqXM;E?WVZ1P6#4=H8JCf*QI#wx$#7lagVOvSntEago4ojmz0gJIV7Ph$yZgHtLi zp(FLJYj5xD>tp@_mbayR9SO-Ffm2lx{!M(o$aI`eNsovD8#dm-iT{KG>|KYz4Uv1NTrOI#b%zr*C} z>t(V3z<1k*?UnUaO#L36ANnWX_?$Cq;9rJ{K+=V?cK=qA4olbl>HG%ygyOtsK!yTpry8ox&Jc?rT$;&0exLe|JnHai}CkYwr{q` zV2T7#NJ6e<@fN77J-yqjT3T8jwPE~iQhn7`DVy9eN|eQRksL15_)80v5-cKqUE#B0 z6mOed3R~Sll6o!Eor=)C5@VHp;W;gllFDsZsUmI5p*XuBHRHz+O2JjT1$-O?C#f3o z$kg5Rv6`s~_y{CQk$PaEvOVSnBxJtGv)@rN7QAFEUsyQ~6WkFgpetME&}?Z~x2Cqc zyt0xxUmk*cMcKvFR{`vJjg~8+9R5YNRehasyun|3SMe`=QxX&V7Nqply;#*EOn+PU zh3}|h)&L2%M~p@hQ{PdpVvcu7lO?q|@jXd1L6V@uI0xQW`1}o;&;5Zx&J?D8h$>V5 z$_w9Bk_SGDCi^}{*R91Mo2A3`U`FRB1ON>VlK4}U^M59nC;?R+Zf$I=YiyX!^v@;f z`WHsCz65OISJc|R{*4h6CDXr_sg!fEO^)c(JV_RsrPBC&rbGPg1PAF}bD@1u=3 zx_29k{g;w=nb{2()9S^wtwNP6holO4`1$WCev4P(AH*m=&4)@d{R;m%MoEte;3GT8 zKYvdNEDGN^+$M$G!4C+C;2u~`bg zN>f5HA%ITG=DXilCMsk3WA7`T6LXY({e2slHI&^Q+}?|ACV5sCFo&qE1PTJxzy zTg22nS$qL#gVAHu%^JhJc!g!|!4H%m%uAhZPS5kecwBSZyimx^$Lp5e@n=;+E1Td( z>XxFWki*TN)GcHTTiyI?-7+)&a30IdoB+k`qvG1KP&kfHvm?JI2fvMe)rJC&L$BK{{l#|A^+LqX3m=+)oaNS-LrR6^SGQ&LnuD#DU#vXy7e~sW zl*JaiC4VlgWETt1t8Q+nt_!z>TUx7X8`)15+j#bL0}F&QTp(fU*rw2wINr3>;*UQP zi_}a?Em~O{igEBWmRhDKxLB5t&CayOA^p9R0-;2nNe(nh%ZbnGg`E4gy z{O*I9EH#uj29R@`=Y=N3y9O1@_yZ?ebZfYj^T)1J5_!>c4%;H3I^HeU!}xnxWlOkv zVRb|6ZW0RmL1WoDB=h6$rTqB|YFjTBQ}{k3`+k}2ct8|ysA4S-@=H1_&B{akvkps0 zd6+vpErrS>d}^m9e<1ZyM(TD;Oe|LEravZeIseS|g{v0S z*Dqm?$MLhVIa0)8pI}wgdF9QmEdEJGwq0%2o^VAA1bEz2;=APn`I+#v{H$GCy_-@d zGS4$ICBvu}iBp;5S;ANilJ)0MOEvyJ&xbj4UV6549CO9Dm#Yb7c+gb3kmk*k{P~WZX=?W~F7UeU`*ia6G?ar6pe}=TEP+WKFJsccZ=y3mgoV zf~8Fp>MA3BLgnr3V8Kdcu36XDA6eeH5+G-+?q7wOSH%KVJmX^3uT=9X7ptL+8j0CI zTak)SxVE9SVL|;4+3EV61FI}gShK!Xc=!ivh7U51^hK<=WW&!{4f}wlf5Vp+Skvr( zH!yw6BL!Ap;2%;8UszEGPfmZQfzbC)ep`XnJMb@=Yd9g!m9+)`EmO%a(bU=7(%HVv z$oOGIMsZQUk>UGsC?)8Fm=yenqB}qo`;nQBA*?ZsGG^wKg3HTN4I^ z=c0!BpzqIYTF^45B9aR;xwW~Nlo$7DBlM9LmI&vG@PG`1StG3D^6>14^pdD>sW2a0 zD1wVbnwSdtlbLfZrNTKhnW^xlFh}ozFi@aS>2RBn>fwUVglY)o6y`7|d?#X2gw?xV zrVmYN%oG)_6Xw~#V4z9=S5;eo8xgK=B%cb@wN0db;TtX#Vei0&V%j@!pRiyv94DgP z)zJnBVwnmz3QK_h1ZJ9<1!c?`G2qLY3U3N?!;c~ixkz0Yq!ly&R(|^NHgAFspNf!q z+ohmM-oY;~whN!;y(O!CdG%S`&qBA-c@HfhvpYnJvtX{u1MA zs;z!>9Lc1pYpbHJv2q@ZML&vld+Jn{f)0dAyuGQduMb1dPpGzzDMNRP0miV`&u$Jk zHdQyUcyuM1sis50iC#4*RneWyx0zp4joF8;lr}!pJ51psGBcfUQ5mqQ+s#%9KThcu zICDy8w1gWPtI#hyfG7c-Ycz`z!>!DZJ{H_0!NRTKN>IiUcS>!aIvYr+v(;Uhz~D!h z563{7B*0Eae ziQQRj{C!+|#+Iwx&x@Y1jZ+@ri=MIN95`Yvy3}I}1<+Ao=HJ0zx0%BsUZ)k~n^{Iu6@i{X}a%1?VwwAr}ovxb}r@XL|hh3dlV zZ@2kd62~$j6pHpxGNeNhOB^SYip?Ylj2xL%60Y2Bz~LwJ=bFhCL&+8VF`qRtGcKPL zpxOpgKPoUpO`#Mu{_xhcj7_|imi(2`Iv9<}y0`7L%^4trJfmtL6CbXE>xola=65ivoc?V9AYm@Ip zwDp*!S3Qa7JJ}#yZZI^I!^fvDGj;<`k-GtMC1!dXIV2#*;QeEsc3E!1uyStfqR{Sv zgvW%)P~ik*vG4$j+97O(3(&oa%F^0!aExt3dVFW1xzTpTDOI7k*hA+Q+BRISJje&0 zv4x;{|Na@z%w#y!Y~BSjz|&+o*R)w2vVN6 z$|6N2yJuFmv^Gbw$|e<+gh{rhyC{Gqz-9 z7q7z~J6ww-%0uV#wa?kI;voLWbuKoDn0~<_sQ7(~+o%etWnC}w3tq6LDlhR{=+9yP z{0p}6$`Ssr7i>Ao%RKc(^yDji?u)ju%By_si?-7A*939%Dx0gztHO=*b{Nz*&Lh%W z|HA+LqHX5hEX`|wUG}{H4W5>z`O@CB*23smDE%;dj8f$#jV+6_SlL^=IZG=zRBlrq zQLtTGe&C30`y#1AV?!idQQlHLhpZ8gG(46z!4nI%(P85YkB%SdT{^EWPm|QPM#_0lSGY)!NOBl+tM0o#Ae(W?NIz;^|+}X$85#4Ip@GYBAc_8H(jjk zpDxKws8xpcNO!h(b+Guk5^Zyp+`eNWL!PJ>|%AS)_~uojSByzBc}Mc zCc_Y&Ptc>hEZ$~9IU*5;Xp1yN{R?=}pz2c=@!5lFp=GhcZ|{s5H?RcA14{+c?JIjC z%dz7g>F*IXCG(zeOeOH|oOnzn@b8=?D{-GJ8xi&II8ITZhKPY{lRe>Cu2l4%X6zR4 zEGOqr9@E=pW@ZOE50;bks?S+kn73uc>aH%LD7&J%2Hw<82^haZnxUbx1DB{}87*O& ztt@uG)Cx+lckR4R{)WXC{Qce=oq_J_ks!PVDK{8dLSjSdZ-uT}RogPJww5^$M2n5N z(fnBun#%N>r1VMn1N=i#uRnGenCFj3SqvY!p@+Axf$jY#UUaR~ZwcJYues6b58eV0 z>?1@fd)BNW?t@2lIhJVz0Fad#wOTx}D!~tutu9 zLsp-6C(pXcIbOMo*WKg{4BRbA98M2*JedEU-$<`v$p`=EE=w}pLH}zb=-%JXg0XSP z`hxm%C13iHKE->kO@vJ}l~>il4pGmu?PK{n`Hdgxc>}v`;Ypm#m&K9Zw(gakks=z= zsVw_^8#(y5V;^Dlibz*aq11w}Q?b-7K3 zUu2iU1$_koyjR+!1j#AN+0qu-)Y;oJi#e}CU9`sv1@3A9&AEo(5+5^r#kIgp3prp} z{C;!=9IEJw$~ooDU`3PxpNHY5{yoYhU2lUX)V>xr!PKo?a3e%IRAcMrE-u7tsOqTrOsQRPZi7fCENWeIcCQUzVwBrcBffX@z>0xu( zufwuGW|kD2Vy$M$$1D5z>HD0C-9jZOAC^ZdK?OwZMtEB)A&1GAQ-yEnqRwh#i7R2A z8d(JH%jin4&W50O%%Sad^3`BH63PIKa%dVtJ($ajpVAWZu?*4Xfmng`dSm6MB}i{H zR^TQng8lP(V@#|sqgffTTno=E$ZU~NP|~->#FCPJPfYAGWg+)!u_qq5J0_)YTUpVn zP0X=UO8m(zd6gm3i?&s+YVN_VV%6%tHi&}`Hg+|?|CK6cz0fe!5bY@V-=5g=$vW z*iggbK9DKd#qbGlVU7>+iG`w=h5pKyg|w`Jj|^-d6E<3DOl%XG;}a9u{i%tU;&0|G zWzNrJ0<>Yr=Mt)f>0d}(-Y*GPWnE)SbrHOUuvtUJ%<+|pO#fPf33Gs-aIrFQNXgc| zKWR=pn1duBZ9dVCTmsmGqQ;DGFh~LzWOzymO8~13Pbp=ERs6~oT0snWhJ|YQDLXVj zzjm|cROaxTH*2{{E&t1At#Axf6s8kH&^BcqkKdwAN&ricbP#gp0!n6d@@4%AV!a3m%cyJ#5TVr2)@p|+4x zp+a+ExhL?GS87STXshN@PU17SYQX{MArdolEi?4MoZscJ*i(>B(rz+1w9VKaTaGl6 z&XDNsKo{SkAbYRS9dpitU$oOK!*pmJv@z`j(;9&`I=EKox~rp5>ZuAs1OlgtJxXti z+6AQg8e@yF+aSCLiGj6ZhcM-I%th?XID5?y0URhRjag z!1rv^Qk0GS^*I3@V zYh(o?jRh|d7zxL2VI9eN)ymWhF+!e;hB_2Zu*y|!aK|9*%H*v~}KIu8(?H`4qMX5AD; ztNsDWo<9yzRJ~zs_4>9he!@;Ib#b&GZjBaj-Dctk9nRZ_@ZSMM-aBc-+?@F39UTkN ziLrN?h0$Ag11j^Ls1%9`9*12@V5D%`U34FFJ!z&>bDoN(t4{+>)-yx> zQrlP8*$*Xsa}7dj5psf-L5XudYt&H8oX_JY$riNILV>r;eMsA_{b=O_7iwv)x<;li zp!AI_X(2EEMfa)*m`hv4ANh|SR3Xdr7xUN)wQ&xls!J@`;a|#cyif}%C-Ubn)RG5I zvY1{b3bl+o*&^0-;b%wP%Pini5vJ-sMO04iC;*au*#=}O%PmktDcDz}mu#UxF|%+x z3KNr*GIxhXtT@ra?oNvc5nk#bbY!k3t>8TuX~F!J!0K3KF@qOZTZF$R@l;D*L^z)! zjZKx4^LtKU+~*x%G$mvQosq_uL4AdhA=cIUa{nbr|czlo)BUfk?6Bp@-7pOyhYfG zB3VXDaiVQ_s(?;ZDG90`g}jC$<*hw+EH(ydh5)f^_$?MP9cTk~3qSm>;u~;aAh96W zofcZ<5HAxeJ1E&@p~{xR5%m zh@o2OZtLv}hr>+w$ka41FT7MsUFb6yYU*T`6tI|HZla)N-dhQod#1fZ>-O)fm0NB8|^NRObv^ zObaS;f}9g(yMR7eM4gLx^`%WnH9CY8YrR;`aCeDCSY2ir7F!B}XpVvJW~vjZL6e5i zVt`v&unpCU0QPvzh3)shxYlYJ9B?tc{0r%QNs1{I!(rooO#nuU&*8=s>Z zuO1JujB?(_we*1sBCm2(e|xHi=ry}ptp=pCMnaP8osDnD9CRIAY-D&06+sixalX03 z$u<4|`aDUiUPpg73^2VOt)pG$1`8A}XiJS|?=iIrRp|3&d;HBK+G8?~+Cng`7y?>V zAaup7TZly8B1?Gc_NQ$S%!1=LPc9M!Du7K@~Fg~_ql zEg^J%vXBpN3Ah=#|+IBi*5TSV;>FVqzi7}v_fo$i7 zq0!%nZ^tGJ%uW*B`tQVOvcxlwAtLdtk(GiooM#)=mLfuc=sE`=@LLSg6)^x1fW8?3 z`oI>0Nw&&SiQ5)kA*nawwo6tsI>)&K#c73{0=<+78@6Gio=5n08XdmNT+`IumMfX# zd<&eK!~~8#7Mxq5@sGQJYMN+bV9pB-+>@C5qEWc@izQlh5OpM9!hgM7OB%RzBx!q% z;)r79ql!B(Lmnv=7~Xxr;JBRFK``MJ276s8xx#rB#5tTCbc*U~nG}DG;5ahf5G&fo z0@q48n}fgyG5-l#NZS2|=(~hF?LLBCs4op8_S`uzv_tygNkghK`y_sXgQ_Zw^O1Cj*$gCcz^(;t#F_#PHC zRIci5Cx217&JtDhpbgwxd9U|#5gQP!8lJv)oK70Zc(7u&iC+?{)&Xie3d(|)-w1#S8J2B^w&X2dpj?_TJvSWjDJJIc;7UIRYT_n zVGA`>u)tf0Z`z=FEopD_f~&RE;89D|3n2Q8Y$m`Zy~Dr0S_`W05)OV&vEp&RC!3(Z zZ;72{TOGD{J{ijS)X15#t+l)YKA32Z z{<-Wr=NE?b#29}mtM-32)UpBDv~9En&doDpt94S>Tz^rxh;xSSuDTnk=E5a+qQ+fRnt&IyHu}<4{IqF3myX1M#8~ z?|>`8Om9P>#Au;7kD0znz^_{)+1uXM*U21yt07O-0BQ*YM>Mp#wPhQY za7?Zw*_NbaBj2zgcJM!4r#X^ShN?|9tDQ>Krlj#B*J;VYbnE5JkzrP)XByp`W#w?T z?>fOeU#h<#H)Qn}4M)>UFe!~wM2BJTBpeZz^7e+FNM|n&9uzSD%fe>fZtmsDlXIBr z(ncQpDnIjjEqmE(WFBJ^fX84gz!n z!jq^CBRXLQH3NZ3)Qq7{m_?m%yufUBLN(6)8KFu;oq$*+5v4S;6RJdWyGFLxi`b=O zI{|@9BdDiZ5WzHzZgfIz6et@$c|gn^0a3!T=kX72*Fxj!Mx>*~2yYtQ;>nGC{2f}^ z00Ns}n#dzy9z-n(xXPaH6{}a)^|W;`wUyeoK!y;>jU#Lw#3PsqYR2}pP}3s#PFN&p zGdl?>?!}`yWeFi#DpM<)7Kr1+tX@Un6AMt(6JpYgL$P$QxCEgs%#FCG5$vX)EO)A0 zh?W)5Bf_K^>FmN6eEDF$OCvZ3?#_Kv7)* zlKdG~^s2qeV0{(TZSIgb7g-So|7;{FWl| z?d(PoI2ZCF%-bVcOlOlR42iN4p|+NvuByI)(+OR#EGze}L~%!-QJf_rrkCnM$c9;$ zV|_GpgUrMM)MzFmdPT)7@pm$_rfVqk%xLD>A~O(a?K>@6bimB@Mfl54#*i0(v*ZR- zXa=|N%zIUTqPmq`&SJNrVHCiI5HjC(9(T9qRd$FdXiLg@eEQv5a$x6(rnmIB_4cn@ z%lx|pRBH11(QI+(VnI_F=j!Te8>%VPdH>y7P`Q9VaJM$T>>>afuB%98ZzuFdoDZO* zffT)VG5XLsC~3!ftY0Eyz{g(7Kim`J;o*C<__V!%3Girj(Sab=^Is;$qG=ysT!8*Nr2`1adWP&WeVYv!rWA;51rT-P_Cj*UGM#u%Ewmj~2FHCpkC& z_dNcfmN%J>_EgRxMmsNDJs%+@#gW2D+Fg`4IO1oPdAN6_i{6EgtBb_Rv;vV@ya5>}F-4w3e93xVFsjFgL| z5`)Nrgxjb`+lPV1-EPD|PRO-=^5h{q2UY{WGfgb79?ZPW|57gMoO&)km>tAU);?k9#N zkbBvQt$U+{^C@GK9!-2&4qEav%oKOKhY2~PG551_Ha5jYFD`fvHD)}|SKX_n`(Kbm zN~sHYu_5JukzakU=BvkEJ~fJ%*2tsSPhhn3DPz5EOh}FtjP3381B^8bM_4H%3+Ge~X`dpXM8Qn@Hbe zL>e@gH&iv&7ncze9tAr69a=qbZuDJ1QPkjjNF4J%4Km4Sgjh1?2cU(dYY7|kR~o=* z#z)9lvzjtIpBUmB8}f8jM+Dmyo=-({mta@LNTjWa&w$_kITHcr*l;P`mRmBOsb5g7 zU(&@M-92l!Q&Q|#A_`ahj{n*i)QN!31Nh$np8O53yI)K4{oTl$WaNE|ywvabnfGfc zE&o8CY{jB_gM^z&)u3qOm@fv;4AV0Qj|J`gArzhNAU(L<7+SD`-4AMkk~pzrFO>%%i1e-PgvpQ5^T$iwI?C}9caoc*@Sqkf#0lY% z6G(C)DGG^l(<`cyrF;4Q2eq^T->CEizf7p=?8m(e#NbYZtQxx=zMxdyW%bBxse>T( zCP{M1CAFCnyL$R%D65`gbZV+3J0uHIsTMJLd`cRh^^oSBhA>v<%NRjEFbNeWa}7RA1j z+uDV*iQ-P0>>}7prIgsg(kAlA!&<6R#;-y7q{&ncR$UPrgFsiD2{J0mpUU5VSj$^9 z%}gXJlMwGJ1nbmoXY}-**4dFsfM*Vn@fRGzg-< zPm_I_*~K&d3>O}PT}GG{u{|;YJ}2g0YlL~>L!4MkI9(-(Hw>$M<51;PmL+V8RxWX2i-N=v7Ec7t zkf%5HtfArwXAcz@p<66*AX?st*EnV5e^PbR> zpw(ADp^aBAz~welCF>gG9m^MK`tzK72ku> z%GDC*H3DZz@LD0fg}o*WyzpX)&cFY+Yq^eU8K;Tx7SHt}bdl~065Vj4q(0*&zThb> zJ?W38U(1M7Y*sv5PQZIGhW=vrmg}q(2!ze2hA*SAeh7{e& z-+xM*a2z68jPsvOeav@Hv>iBi*IHgVueGs>xe?7`z(A^CH|DrQB4Kd;nJK*UX)U<) zzGyKz1qrK*`R*qW896X?6Oi+PC@*;*A|jz~iJR$Gwe)w?cC+}0CAp^UnEnV)eMU>l zN0#r=(ePN%j=7XBNzdX{+_Hf^?iQiIYiujz?(c4-*F!rvf{7k z7bx2C9~r|K!A)&7FsR|Xl;bY$p@Yre*wrC&Qa|C-p4U=xJ~aVk0pI5af?D!D7>6Vn zJei75_ZF70;FrjU+@o+3l7INqSSc>T`zp#8>epaS|KIo{&uiXOeBa0s8*#FqsecEE z{;d>G>UT6N{~=|{kjEoj-?I+RaOd|1Vo1|}!rAKjmoYVR*5@$q|MB7%G*8UGfg$Aw zKJNuBx$H-?MZ>S&BU$_tk@cTw`-C^3d48Cz5&wThcQ*bkSxEoI5QM)HUPhbOBfT-< z*2=CPOe3d)eGXbEuqk4(fHXSMSv?S&5mtWF?({c#~_S#JpEffrqCyCbcB~hLN%P|a-U&!BkRm&R)8@-ZETF?YZ zPgJ2$i%?T$u?$Oqwkmin+)_KcQ2uJHAxELFl;Q?R#zj-1jU^&dhSVQZb%IsynIxMQ zMN_Z=UV}2Z35F0heKKvuBA{RjlBCt^oQj{M^&q4HaWgD@9RKC8R@gFKB9Bt)LadB% z&ya2vJJUc}jF_zB0IG`t~;-Tdcc?dFE4-LbOm+H!rM~ z_kboMN@i3iCbbZuz5$#;UO<^BKq`>|zwlW2MaNc0Ey7e^jIKynVjzJAVBlDK3=Y=` z5=VG46+4l}0TJAXUxwANjQ{+ymNe}Y0>E_&lhITDHi>e0AEJSJJGNsOnWu;S!rxX>J6ji}MJX20J?^(mAnj!!4&z5ry!7((LAu-p^ zkzE?)U^M~?$83&<0F^>p-YO^7h)Lw#COKW=rpbtz<=k#?JSNc&YCe(>Dq~Kf^YF8` z%_(NlPE-@#C1z34Zb?v-2G{w+XVD%5CuWg)0ZJub$p8KtLSQZeAB#D#g2f|5hOT^D ziJJ$qiT4pIBY6H2n=?nBI<%O(urhgPsfd|jarY37 zLq_aDvyVu8ACmM(htqklNj6Krk4N6n{7LfqJoSE{ay=k<4GdY#(jTP!w3vsGk@GOW z;SFt^@+g1d4efZ(V-m?QIUe{k&v+9n=HqoVSDXdekqGu(am8#N={`DV0Y^)19d1>ffT-$ES3 z(cb{CsGEnY@K8nKyA-EAVo`A+b|$)9Ab>{r9`z4oz>x1l3qSrL&Er7$49on8Lf5!* z6w06+BR67aj8He}Pe}Mgw$L2jt<3f5u<0s7XbgY-=fJ3cVQ}7;lEw6|BvXz1nqT?0 zHrDbt3;*J%mSIi$#=_n2z|#9W|MhJx&GN1I^dGN(XOuJIUy{GK4C_3!di&4_|MQr> z&-|C*H~z>`P4h7K|BWP_h5jAQc4|L>+Q5$%{_;`HXZcBxm8ty)iAn!8Nc&lm_KPHK zw*IR@8k485k`(JO(ps8^?&?akSVym)x)os_aEpw$@tfY!a#K_*CKN^KVQF*47$2qh z$kY(x@rLFTZJ5B^2!a_oxCn(YN|rDe;$g%`DHgzxbEu>vDS&VoI0%OBUvBE{r}N06 zG5qtRT9y`v;FVOw#1tnh!O1MaEl;Dtao-~E^zb80h7O*!US6Y1z&zq%a@pAYC=2$eDJ>qTHofQR4Hl4F8YZxU~OPfMAY zJi1aJ;$nFcw!FV~&-n`-Cj3X)- zb>_|I7rw7~jw>*tcZOX=QfT%EQ^O#~JHaYul;joTUh||P>pouYwD|(=VvLix>R!w+ zXnZ9olwQhRA82WD6Rn2-6333mPBO-~=>yFbQ$|pe3Ci!2Epts74m@=TSRE+c+_Isn zo4Jo8W)e;T6rs)b>A>QjL2*>XWYk%6pw(43V`WR6DS6A>r9+ZFi~0wPg)<&6|39 z`$-SlAue6TWv)~tihrqYlReAq3rTW%(qhV zkz8i!a_nYoA-GnVAX5=0y4uQ@1!8^2pC%J0$U4HUqqO|%q zTKWFhl|-GXo517wzvFj)tmRqGwDQy2RS*Bi$Jl~6%aB&s0zaE3$ADEF3r##HI{ENc z#420{!{Q^dWu`yQvn49C%{#x~54LjmS5BWLX&dkPL<_cWA40za=-uZ^w9x|kc_eQz zNp~7O3?pxs47;31L8oxT(sgd`-6P}V;I>MWbqSUL36@ zanL9rRRucTqF#bB-b<~9*=y2BqGYcWC5il)Le9(3!tPFKH|zs~yvzA{pK9YRS6cbL zAb)ceH6;e|7hIaf97;Q8@4Q(Vmv~ z^3>H=WEq>!b%4B*bLdZ$e<~1CM zxEEuJ41WktjozJP1XG%0>v-s9FebUn7(J!PTdfET6fa4yvtnn zhpq5q?v~TBro56S={?4Je^AUwvECm-QTM%3C|UsYQy&I|?-5FXur9B}{kN^v4K1~exG3gPWF7YyAN!_0ZQ##n7uIdz-mbwz z226b%xy~mDwb;~FpQNguGPO?ZV3xoLcRmg3$)5>7@G}6=pS8jxw1Ih^lTuNHEvz8L z4Ew&%Bd-f_hA)s1McEgPmP0QacnO6ahpm`&q@<`vtd}sy%h5Uhik#yfT<0pnf5LO- z>=MI(7|GYD#x~~u%di@2!gHAZI#t)k65l{I@Hd(zp;+l}N_>fLnfM0g>^ATvyltk< z2^a4q%$}noFgG+1hIb6)?~Xt&vfeY0zi%RHFmd}oh$aEIVMf+4&xh85;UuC4#4LOi zg>5j~n)vZhTDW+RxP;^rj1XN$@~QFnGx=Bj932|?ViJ)Nv}fcSjyvRxS8Ww9-vMrsqxEJ?pd? zcln@*YTLy;F}9)obAxT2nt7EEi?d4%#!X93hfx|6(P`T^fKwB6y^pwlh;CwXx{xpJ zcYTb!+((bINvBaf2y(k^h7D&TOfV2)HYE~(#|9V4aE#s|03QMPqXbpX87Obw$~=MJ zXh9IAr2AD*vPlId*&q!^5K@51k!mxho+Ay{4@ny>-6rESGHk2)*9cKXGpr(7+Aa|)MDwWMEzj_E7dKrhQ{$J~=2S06mx^K&*_ab-%NsgZUMO=XpU97XpqDvLl0_$;Y#VeQEE&H{ zetJ%!vL#j3l^5eUPlU?hnIY;^tbh~Q*bdv^l7pd1oi^zlU4cd$hWbh{RPrk7wvMfR zxb3}t6%WkmN%N>ugPe#iA+tdTPi<<~+k_2xP$qVAD4m z4cvru5?>IGzoYasNrrVW{VdsC;j{Vuf7J_128`lUnd=4ttF8_D-w@)fmqX(w$*rb;d7z#~R|(Ki0#R zTqjTYM9&Gv50=N_`mQxqiQ~&WdLT799>Km+c|(W@u;G6Qds~7& zPjU0xKGBmC5)i^_Y*ZyeTg>q=$QtWd)kk_IKXSJ-gMaa^)ot-J-Waw9d^Na=8iAH5 zMJ*{|xk)Bqn%3MHVX4UiFxj4Bf*ktw6CF2OIMbx2O6T;`QBxp826GDs5_uxR^|-HN zEAwUU{Svo9q=)!-pX+IO1|e7C9;$~fX<*L6C^^0`ihC0$08}rMf#Yg1KJrWWML(#C{DUuazr7Up12#T= z69w!ff-N&(C*z|K0@8r>@}@6!n|&(u{2mmTMg_(lM+K%E1?Ys5b7r)DeU<@wJb_l> zND_Qt#zk?J=0$NS)vyzW4dD(Fp2DNGk?A#tO)*>A6rnl%yD#-D4Wu|~O? zB)8Re<1sMLe7wel$G~7WSJgI0y6O5LS96pd@w^i(n~~2u#kZOdIEiC}EOr5&dm;qY zmCU}7co%hMEy_X*MU^nG#RUaTHMrNE4nxyg3ObS(^B2C+0xHXZ)pOu$JvJGqZO{*0 zUG$h3{Lyut-CIfSm9X?L_=F$yv?}97p8qREXW|mKaC0Z3IdHsW*|KGrIF7Fos#%MN zJXzA;@Jp^PpbOEDB+e){lO=tFk=27^jRz-EzEy_fk)fO7xe3I$e#Z|3)bbC7D?jOp z{O2EZ-Tu9d=E?deAM>N0iKi$8BM)D({tuxjSU@J=dMr@bO8+lI-~=LF#2mv_;y;Xn zKywKK@h=91hOFg!6X`*oxsd4GY z7R;0dDf~qQd=xW#wrJ2+HhwH$_+LFYW*o@N&EZ@BtLGHu;&l`2?PE=O6!e49h9Qou`crRd%5Yv={hC6TpsX)VoCoC-;< z=I8vPCn+`JVk>_8FL()UHlP11=HTrM9lE7-4u9nry(Fm?XgqTzPr!K@<%!@tp7yIA zfIKuW#!9ZI;z>#a@A_3QDruyGO~)1t%$K(S(ZTK&y*+CpqR-1%S+n31{@Jg3&>EHMKR3EVLhAy`BB*db=Yy z^Bbm@8>vg%BHf*5Lr~pZMp+_SCAI@!O9xYeo^nZV;q+Z#8{Y((x=F z5>aoX#S|ykOf3e7*7&kgi~qy~98fcsee>0jdyF+V`f7;4n|N?|2Mbd~Jp`=5d&PKc zA4WrX6~!H=-X~rRnS`Tjqvaxwu#w%PKPU$V*UC!k_hH~mdW1%afB2r&W664yhf3|4 zWjLTl@rEPbKgCHk5z~#sYBY!{&Zx22Cs9^BX$L#vDY}2YOgS*ou6rhjr-Y}5%fl7n z%5YV!; zc-Vs-5xg1;F~HR8i0a={hr^c0hSGOE5=w87N*~`7jP>#Mm+U^}0N?bIJ+$yf$@?xG zeU#P|-G@g^LTV;nJOz(XUq_w(@T&cZiomM|mJ!kxT00$fblgg(!)O!=Z{y#;WG}$; zEE$LG>Ha&3qPq;HAd0{stmGcP@UXpjmcawV@H@c+qV`Elmz==#`;02-(4rC1hY@G_ z5AvrD+w+PZV!P;&qC7Rbs20@9r&5^rk>QEBLxZM5(xW`%h&`x0#-|;zkBh;uv)sq| ziX-+MH%=kayr%ntX~CZU48Qt_{W$Nl$8t;XIsVNNdtl&s$t=znOg>@yi&7g*e2I}> zK{q{NUt$m8jXw;{5MHc`qHUNqTUg?eCe7<1szq2b2)KsG$%L%!h^ zd%E&hei{B`eXNQ2xf-UbQDF-|#bEwdX3|@*7^YXElEpl|U$s zd*f>=8(LZ7Kco~Iu1*5k-|9`Bh=<1UJi0;7 zg_B+2;F0U?)Tvw9tT^s|-9A%^=S{EMr`g>UaNfpJ6DT!6_gf}I7kJ&CliT># z3f**NVG)LFFVD}vc-=m}Bq#_u7nhsOh_to$uWReVmGNyIrk;ZfStLF5?j_BZPb8}?#*no)l`r6*g`GAKFd03B*3S~@n1zx9SaJ3n-cHGs_oB z7#_!S-?SH=k|S>}Nz6T_pnLrA0;tHHC*$$uwhh&skD3DovfVTTOk=2eF&^3~L}qT7 z-}9zDN14FiebXLJC^F*lr@}j1jO?@$p8A$ORVn4)y#{r=@hyAY_=z;~t@0K)Qef3d z08A(wNnV5%PUbt_vKMqtku;gS5A#?I$9B@jDsWsSBDf*(I4UnJcA7Y#l_gFeS(3Kq zW++#(gqgA`Y7dp&%ra;3z}xl=|M9;yz^UcD@ojrbeuWYCUkPfRRX9e1oA#iTCg6;q z@G2SDA}qIt?|s{zGca2Ys5%D)^jbOUPC6PW7G=7+S~&5%bqY~p$S>iN!)2KDB9X{5 zuPn!DLAvL{gR_ESItWco5Z6O4k-Rm3sdC^Q`zC(%LWiH{ zFLX?aIYD$T|L_+*F%!Yj)W(w}r_q@}>Ji+oCXu8r6H|&CDrz;08aa1X7{Ejyr{wx(|0a^0ep&>OHK3v`1 zLG+(aSW}c<9*;>nj;2T-N|*-$jTkF>nV#wEWY?vw=QqFUNW~l2C=y5o9_HTw7H->k zuDGEP%O}#vj`D4kEevm>63M*iEk^=g#-?H}S-pBDD$6;GuX@WduH2lGf=b* zmo@H0D!!KAqB@Hv@0X~h@Dkf;`gP*$GIRbOqSA1UU$0!ka&H)h z=U|M}Zc+dE_tIxqL394cUONuh!$b73^`Cnk&Zh=~VQ6(2x?FMX)cCF9&)hX@nFk(8 zk&!ok+uFL-%PGwd2c-n2>A009rAUUq(n!Yh4M;Y_m|p&&U^`532joHC71 zayqkO$i109ouA}%rYSS|nNDX;44j&*@Ob_Qr?UVr$iD7$PK<$5lciPi_*iEu9)u0Y zI+J0s&yB^S(X;u=SZ8)RVll|8U_O{@hXa%J0U3mmJdgh|)|uq3CmjjLG$!FSM4><| zW+@H)Enqvbab)@Urjg&N^XYyDX^_;^jC$=b*erDI?F+iGgCQP3G+uHS55T3i@+KDu zUBK7SpM`v<%b9F9-hXRa%x`r$8}a_zFD_?LS<2`COH1VWW1LgyEx2L3d-{pew2M25 zF36w(6SuaQS0M$L$;U@%>x$wMinoh~;t<6tru8$lsl^i7FjR8vWE2gHT`p4q#A4g2 zikWg3$lD=3!Nc9>%-tC+FUMYAA*~I4r5tkKDxMMN^bV|+Mx4B^%XO;J{dAFEK>DuYAUR=9$5=TcdkWx-02i&B*y@O_3^zUhbX>p2BZbO zj;dO3_FHZk!5HHaN=No2Ik~f|D@rDB#Q~t2#%7kVLAE!$x^iOq)*7e}-i>BTRcYB) ziua(HhE1}e3BQBFFCz*OvQJXPb0$)Zca|I^62(JHXVF7T0p)CZXUWS?zSe0E4gl`A z9$Pv`KDHDQ*}whR(q{SC(iTZW-d6tVwRmi48~^!QFxYmUv>&r%2aoJ`CT4A}>FHgA zy`bcC|JMUH2NIkX{=^LXbRIv$p1>14xU*Ovpyz;Z!y9mS9`HHyQsE+pJf$bsi(#?j zqNa#=&Y1#NeFtc<@-DdXSP6F%t!^9e@DBu`{zob9Jb#kX)R5?6g-pEpn6fI4IkU01 z@+*#aW)I+;Gja2fHhMcUlkPC&2T-Sq&xOH9}{m^mtnN-8H zhlfGUXRb$v!{EHL=%mNcCg-0C5NjAb43ASApHRS~@KkK4i;xgQR#i&gl70!S~$ve2z`HOP!L}#k+L|6hs^18<=LK@Fsx4M59^#I<(6H`JrZVdVVx~>E| z%IXTgKQPQ>-Xvir$xJ3QlMs@yB@H17B}jpi5G1mNBm#P>h$6Cs>}c&c0o+9v4%dATE!ZKMNhvaWGa(`79 zX`WO7BZ!lmXr59@+5AY$Vnz-*0QTu_t`(VxyOJsBoZw}?Oms3F); z_2j6`+^PwN3V3f%G@<^J%pBJU?_~T5tI;6gnu4AqE$aCdve25UHm;Px_?mMq(x1WJ~7E1I7!I*s#8FDX%4{ zTP@?=dE73bm8f?H&7eoZZq`PSos3W@4>StW(me}|WD2c9coz{{^?rg*q1m^DnN++~-L^^= z^|}_d3YMwgt&*W1Lod)nuE3B+&RdDc*{iT&*tks|Y^%XZ%^Tx-2kVjx+JP9gR=HNo zkrmhR0QuK5i`uTju3U_y%fK%ZSM}(mjXa-@kK{pUcoTJZ~NQZi9 zHI~jg_2z0>*6ZrUqW=atOw$vf8YymzjVz0{I}?g67t;NlFxcE)Qx86gW3nsZNq z$5|&?%HRmux6!QXlu!p=b5~}Z5$e0wkaYuyU0Nj3A+qmqpHA0NihFz)4J+Rh>cNBV zfdMb@x@ZAm&3}OMvJZtieh_J{KC)$oF_WglMTg~vk5Qxk6Kx8^`f6TA$b}TN-vK#w z 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 : Public Variables *-------------------------------------- diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 0e9dda7f..33a268a0 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -34,20 +34,14 @@ H.BIN.DRV.CODE.O .EQ 12 H.BIN.DRV.CODE.LEN .EQ 14 H.BIN.DRV.REL.TABLE .EQ 0 *-------------------------------------- -* Kernel ZP Aux -*-------------------------------------- -ZPPtr1 .EQ $0 -ZPPtr2 .EQ ZPPtr1+2 -ZPPtr3 .EQ ZPPtr1+4 -ZPPtr4 .EQ ZPPtr1+6 -*-------------------------------------- +ZPKERNEL .EQ $0 ZPMEMMGR .EQ $8 *-------------------------------------- * $42-$47 ProDOS Block Device Drivers Main *-------------------------------------- * $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) *-------------------------------------- -*INDEX .EQ $5E ->$5F +INDEX .EQ $5E ->$5F FORPNT .EQ $85 ->$86 FAC .EQ $9D ->$A1 FAC.SIGN .EQ $A2 @@ -56,9 +50,10 @@ TXTPTR .EQ $B8 *-------------------------------------- * ROM Entry Point *-------------------------------------- -ROM.GETFAC .EQ $0 Get FAC at FORPNT -ROM.FIN .EQ $2 -ROM.FOUT .EQ $4 +ROM.SETFAC .EQ 10 Set FAC from INDEX +ROM.GETFAC .EQ 12 Get FAC at FORPNT +ROM.FIN .EQ 14 +ROM.FOUT .EQ 16 *-------------------------------------- * Memory Map *-------------------------------------- diff --git a/LIB/LIBMATH.S.txt b/LIB/LIBMATH.S.txt index 8f9fca16..e7eed196 100644 --- a/LIB/LIBMATH.S.txt +++ b/LIB/LIBMATH.S.txt @@ -36,12 +36,20 @@ CS.START cld .DA TAN .DA 0 *-------------------------------------- -COS +COS >PULLW INDEX + >ROMCALL SETFAC + >ROMCALL COS *-------------------------------------- SIN *-------------------------------------- TAN *-------------------------------------- +ACOS +*-------------------------------------- +ASIN +*-------------------------------------- +ATAN +*-------------------------------------- LIB.LOAD LIB.UNLOAD clc rts diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 0731f20e..27891ff1 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -96,7 +96,7 @@ K.LoadDrv.YA jsr BIN.FindDRV >LDYA ZPPtr1 - jsr pDrvJmp call Dev.Detect + jsr .88 call Dev.Detect bcs .96 jsr BIN.InstallDRV @@ -113,6 +113,8 @@ K.LoadDrv.YA jsr BIN.FindDRV jsr K.FreeMem.A pla rts + +.88 jmp (pDrv) */-------------------------------------- * # FileSearch * Search a file in the provided PATH list diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 9505bd22..647aeac9 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -289,6 +289,8 @@ CORE.DispatchEvents .8 clc rts +*-------------------------------------- +pCodeJmp jmp (pCode) *-------------------------------------- CORE.Quit clc rts diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt index e5f2cb5c..f103cd61 100644 --- a/SYS/KERNEL.S.D01.txt +++ b/SYS/KERNEL.S.D01.txt @@ -4,6 +4,137 @@ LOMEM $A00 INC 1 AUTO 6 *-------------------------------------- +* A2osX.DIIDrv +* X = DEVMGR.cmd +* Y,A = PTR to Params +* pDev -> Dev Header AUX!!! +* $42 Command Number +* $43 Unit Number +* $44-$45 Buffer Pointer +* $46-$47 Block Number +*-------------------------------------- +A2osX.DIIDrv .DA A2osX.DIIDrv.S status + .DA A2osX.DIIDrv.RW Read + .DA A2osX.DIIDrv.RW Write + .DA A2osX.BadCall Format + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall +*-------------------------------------- +A2osX.DIIDrv.S >LDYAI A2osx.DIIStat + clc + rts +*-------------------------------------- +A2osX.DIIDrv.RW >STYA GO.DiskII.RW.1+1 + jsr A2osX.Blk.GetCmdAndDevAX + jmp GO.DiskII.RW +*-------------------------------------- +A2osx.DIIStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ + .DA 280 + .DA #0 + >PSTR "Disk II 5.25" + .BS 4 + .DA #S.DEVSTAT.T.DISKII + .DA #0 + .DA #0,#9 +*-------------------------------------- +* A2osX.BlkDrv +* X = DEVMGR.cmd +* Y,A = PTR to Params +* pDev -> Dev Header +* $42 Command Number +* $43 Unit Number +* $44-$45 Buffer Pointer +* $46-$47 Block Number +*-------------------------------------- +A2osX.BlkDrv .DA A2osX.BlkDrv.S status + .DA A2osX.BlkDrv.RW + .DA A2osX.BlkDrv.RW + .DA A2osX.BlkDrv.F + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall + .DA A2osX.BadCall +*-------------------------------------- +A2osX.BlkDrv.S jsr A2osX.Blk.GetCmdAndDev + + jsr A2osX.BlkDrv.Go + bcs .9 + stx A2osx.BlkStat+S.DEVSTAT.SIZE + sty A2osx.BlkStat+S.DEVSTAT.SIZE+1 + + >LDYAI A2osX.BlkStat + clc +.9 rts +*-------------------------------------- +A2osX.BlkDrv.RW >STYA A2osX.Blk.GetParam.1+1 + + jsr A2osX.Blk.GetCmdAndDev + + jsr A2osX.Blk.GetParam + bra A2osX.BlkDrv.Go +*-------------------------------------- +A2osX.BlkDrv.F jsr A2osX.Blk.GetCmdAndDev + +A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP + lda (pDev),y + sta .8+1 + iny + lda (pDev),y + sta .8+2 +.8 jmp $ffff +*-------------------------------------- +A2osX.Blk.GetParam + ldy #3 +A2osX.Blk.GetParam.1 + lda $ffff,y Self Modified + sta $44,y + dey + bpl A2osX.Blk.GetParam.1 + rts +*-------------------------------------- +A2osX.Blk.GetCmdAndDev + jsr A2osX.Blk.GetCmdAndDevAX + stx $42 + sta $43 + rts +A2osX.Blk.GetCmdAndDevAX + txa + lsr + tax CMD + + ldy #S.DEV.DEVID Drive 1, or 2 + lda (pDev),y + dec O or 1 + lsr in Carry + php + + ldy #S.DEV.BUSID + lda (pDev),y + asl + asl + asl + asl + asl + plp + ror DSSS0000 + + rts +*-------------------------------------- +A2osX.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ + .BS 3 + >PSTR "ProDOS Block Dev" + .DA #S.DEVSTAT.T.PRODOS + .DA #0 + .DA #0,#9 +*-------------------------------------- * Smartport Driver *-------------------------------------- A2osX.PrtDrv .DA A2osX.PrtDrv.S STATUS diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index a622204f..a5ca3a23 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -43,14 +43,7 @@ AUTO 6 sec rts *-------------------------------------- - jmp (pCode) pCodeJmp - jmp (*) pLibJmp - jmp (pDrv) pDrvJmp jmp (pDev) pDevJmp - .BS $BD20-* -*-------------------------------------- -GO.Reset jsr GO.A2osX - jmp CORE.Run *-------------------------------------- * *** MUST BE REINTRANT *** *-------------------------------------- @@ -116,149 +109,39 @@ A2osX.ROMCALL1 phx rts .1 jmp (.2,x) -.2 .DA $EB27 SETFOR +.2 .DA $E7A7 FSUB + .DA $E7BE FADD + .DA $E941 LOG + .DA $E97F FMULT + .DA $EA66 FDIV + .DA $EAFD LOAD.FAC.FROM.INDEX + .DA $EB27 SETFOR .DA $EC4A FIN .DA $ED36 FOUT.1 + .DA $EE8D SQR + .DA $EE97 FPWRT + .DA $EF09 EXP + .DA $EFEA COS + .DA $EFF1 SIN + .DA $F03A TAN + .DA $F09E ATN *-------------------------------------- -* A2osX.DIIDrv -* X = DEVMGR.cmd -* Y,A = PTR to Params -* pDev -> Dev Header AUX!!! -* $42 Command Number -* $43 Unit Number -* $44-$45 Buffer Pointer -* $46-$47 Block Number -*-------------------------------------- -A2osX.DIIDrv .DA A2osX.DIIDrv.S status - .DA A2osX.DIIDrv.RW Read - .DA A2osX.DIIDrv.RW Write - .DA A2osX.BadCall Format -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -*-------------------------------------- -A2osX.DIIDrv.S >LDYAI A2osx.DIIStat - clc - rts -*-------------------------------------- -A2osX.DIIDrv.RW >STYA A2osX.Blk.GetParam.1+1 - jsr A2osX.Blk.GetCmdAndDevAX - jsr GO.ProDOS +GO.DiskII.RW jsr GO.ProDOS stx $42 sta $43 - jsr A2osX.Blk.GetParam + ldy #3 + +GO.DiskII.RW.1 lda $ffff,y Self Modified + sta $44,y + dey + bpl GO.DiskII.RW.1 + jsr $D000 cli jsr GO.A2osX rts *-------------------------------------- -A2osx.DIIStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ - .DA 280 - .DA #0 - >PSTR "Disk II 5.25" - .BS 4 - .DA #S.DEVSTAT.T.DISKII - .DA #0 - .DA #0,#9 -*-------------------------------------- -* A2osX.BlkDrv -* X = DEVMGR.cmd -* Y,A = PTR to Params -* pDev -> Dev Header -* $42 Command Number -* $43 Unit Number -* $44-$45 Buffer Pointer -* $46-$47 Block Number -*-------------------------------------- -A2osX.BlkDrv .DA A2osX.BlkDrv.S status - .DA A2osX.BlkDrv.RW - .DA A2osX.BlkDrv.RW - .DA A2osX.BlkDrv.F -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -* .DA A2osX.DRV.BadCall -*-------------------------------------- -A2osX.BlkDrv.S jsr A2osX.Blk.GetCmdAndDev - - jsr A2osX.BlkDrv.Go - bcs .9 - stx A2osx.BlkStat+S.DEVSTAT.SIZE - sty A2osx.BlkStat+S.DEVSTAT.SIZE+1 - - >LDYAI A2osX.BlkStat - clc -.9 rts -*-------------------------------------- -A2osX.BlkDrv.RW >STYA A2osX.Blk.GetParam.1+1 - - jsr A2osX.Blk.GetCmdAndDev - - jsr A2osX.Blk.GetParam - bra A2osX.BlkDrv.Go -*-------------------------------------- -A2osX.BlkDrv.F jsr A2osX.Blk.GetCmdAndDev - -A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP - lda (pDev),y - sta .8+1 - iny - lda (pDev),y - sta .8+2 -.8 jmp $ffff -*-------------------------------------- -A2osX.BlkStat .DA #S.DEVSTAT.S.BLOCK+S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ - .BS 3 - >PSTR "ProDOS Block Dev" - .DA #S.DEVSTAT.T.PRODOS - .DA #0 - .DA #0,#9 -*-------------------------------------- -A2osX.Blk.GetParam - ldy #3 -A2osX.Blk.GetParam.1 - lda $ffff,y Self Modified - sta $44,y - dey - bpl A2osX.Blk.GetParam.1 - rts -*-------------------------------------- -A2osX.Blk.GetCmdAndDev - jsr A2osX.Blk.GetCmdAndDevAX - stx $42 - sta $43 - rts -A2osX.Blk.GetCmdAndDevAX - txa - lsr - tax CMD - - ldy #S.DEV.DEVID Drive 1, or 2 - lda (pDev),y - dec O or 1 - lsr in Carry - php - - ldy #S.DEV.BUSID - lda (pDev),y - asl - asl - asl - asl - asl - plp - ror DSSS0000 - - rts -*-------------------------------------- GO.ProDOS pha lda $D000 We re coming from AUXLC, saving bank... sta GO.A2osX.BNK+1 @@ -324,8 +207,6 @@ GO.EXIT.JMP jmp $FFFF Self Modified * must exit with RTS * - CC if IRQ cleared, CS if NOT *-------------------------------------- -ProDOS.INTNUM .BS 1 -*-------------------------------------- IrqHandler cld lda RDALTZP sta .2+1 @@ -351,9 +232,15 @@ IrqHandler cld .3 rts *-------------------------------------- -BrkHandler bra * +*GO.Reset jsr GO.A2osX +* jmp CORE.Run *-------------------------------------- - .BS A2osX.HZ-* fill to $BEF0 +*BrkHandler bra * +*-------------------------------------- + .LIST ON +A2osX.GP.S .EQ *-A2osX.SYSCALL + .LIST OFF + .BS $BEE0-* *-------------------------------------- .DA #6 60hz .BS 7 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index b908c8e6..d0ab6bb5 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -4,6 +4,13 @@ LOMEM $A00 INC 1 AUTO 6 *-------------------------------------- +* Kernel ZP Aux +*-------------------------------------- +ZPPtr1 .EQ ZPKERNEL +ZPPtr2 .EQ ZPKERNEL+2 +ZPPtr3 .EQ ZPKERNEL+4 +ZPPtr4 .EQ ZPKERNEL+6 +*-------------------------------------- Kernel.Init sei ldx #$FF txs @@ -481,7 +488,7 @@ IrqMgrInit >LDYAI MSG.IRQ php sei >LDYA $FFFE - >STYA K.IrqMgrOldFFFE + >STYA IRQ.OldFFFE >LDYAI K.IrqHandlerAuxLC >STYA $FFFE @@ -491,7 +498,7 @@ IrqMgrInit >LDYAI MSG.IRQ bcs .9 lda K.MLI.PARAMS+1 - sta ProDOS.INTNUM + sta IRQ.INTNUM plp diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 2a60062d..156b3e68 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -52,9 +52,7 @@ K.IrqHandlerAuxLC lda .12+1 -.8 jmp (K.IrqMgrOldFFFE) -*-------------------------------------- -K.IrqMgrOldFFFE .BS 2 +.8 jmp (IRQ.OldFFFE) *-------------------------------------- * Called by : * Kernel IrqHandlerAuxLC @@ -133,6 +131,10 @@ K.IrqHandler.DEV .8 rts *-------------------------------------- +IRQ.IntNum .BS 1 +*-------------------------------------- +IRQ.OldFFFE .BS 2 +*-------------------------------------- K.IrqMgrVBL.n0 .BS 1 K.IrqMgrVBL.0n .BS 1 K.IrqMgrVBL.MSM jmp $0000 diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 3f0e1e6d..736c9a8b 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -940,23 +940,8 @@ PrintF.U.1 bcc .8 unsigned, nothing to check PrintF.E sec Force "E+12" .HS 90 BCC PrintF.F clc - >PULLW ZPPtr2 - - ldy #4 - -.1 lda (ZPPtr2),y - sta FAC,y - dey - bne .1 - - sta FAC.SIGN - ora #$80 - sta FAC+1 - - lda (ZPPtr2) - sta FAC - - stz FAC.EXTENSION + >PULLW INDEX + >ROMCALL SETFAC ldy #3 In order not to trash A2osX.SaveSM,A2osX.SaveSX >ROMCALL FOUT diff --git a/TEST.S.txt b/TEST.S.txt index 526d3a08..afcd7c1b 100644 --- a/TEST.S.txt +++ b/TEST.S.txt @@ -80,14 +80,14 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG >CSTR "TEST: %e, %e, %e, %e, %e\r\n%e, %e\r\n" +MSG >CSTR "PrintF:%e,%e,%e,%e,%e\r\nStrToF:%e,%e\r\n" FLOAT1 .HS 9B3EBC1FFD 99,999,999.9 FLOAT2 .HS 9E6E6B27FD 999,999,999 FLOAT3 .HS 9E6E6B2800 1,000,000,000 FLOAT4 .HS 8100000000 1 FLOAT5 .HS 9080000000 -32768 CONST1 >CSTR "3.141592653" -CONST2 >CSTR "-45.567E-17" +CONST2 >CSTR "-12.345678E-17" *-------------------------------------- .DUMMY .OR 0