From 6d85a16ad150d225b23218ece2840437e4539ece Mon Sep 17 00:00:00 2001 From: burniouf Date: Sun, 6 Feb 2022 18:14:18 +0100 Subject: [PATCH] ProDOS.FX:Added .PM modules support & bugfixes for 40/80 col display --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes .Floppies/ProDOSFX.BOOT.po | Bin 0 -> 143360 bytes BIN/CC.S.DECL.txt | 29 ++- BIN/CC.S.STMT.txt | 53 ++++ ProDOS.FX/ProDOS.S.ILDR.txt | 476 ++++++++++++++++++++++-------------- ProDOS.FX/ProDOS.S.LDR.txt | 12 +- ProDOS.FX/ProDOS.S.txt | 1 + SYS/KM.RAMWORKS.S.txt | 106 +++++++- 9 files changed, 478 insertions(+), 199 deletions(-) create mode 100644 .Floppies/ProDOSFX.BOOT.po diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index e1874f00002c7bc14b188bbf1148892ba83b0a67..99f937b362648f964801edc27776270bbb970a3a 100644 GIT binary patch delta 35058 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 LCQtIAivBqT;7GuRanplWY zpBjyrBKl&~s7cfmQ4=+4?3!YXHTLLt=FVL}^Zviz_uk{(oik_7oH=vm%$YOiUK^gj zWEfMrsIt?MU$TG}&~$q`C+$v;*h@I%2a3GER8KVsM=xjjB{RP;wB z!M+X%T}524h;Z>I&eraX9%=Kl6#ASrB>czngTS*WrHu&=kFpK`R1_Q@Vk<&OtFEpa zsu*8XT~%5>4xyK_Kn6J?^j27u)AN;A@9cdmOzHH=BypaYvH0Y;qrz*+B}eN|UWPmF z=2^nb717-#mN(LQzCOvl(Pp#pX_6&ovQu7u;%LV(Gaqhz$ozNXizLy;k42(Sb=O2g z=0wboY>6o@_^x2gpu!;+hm0Kh%h0%C@gvY&hC}-fW!SV>A4$EV)ZY_H^C#P^nq&jzqjfeN7vTBbG@Fi7+h*?P5QqD4UVfrK#CSC45lCR&;oWn~o9iJYHqfQLwGnrXz3L1e+sk+XevbZ8bLY&E)U& zI5PN7Y==tdBosQCZ?}Iw+RsHj~0WoxBekqJZN|kF?0V0bvoDZ;tRD+x=jOA{8r|8e{(DR zC~H!W8B|p`wxWcqujVSM3$GPaS9AKp+Hu!y3vJA^DLgFz;==UM7Gz{+6yP`gyyWdl zXR8jo<)g&gc5+tw6`(;jt~hs>)db645n*Ed75PO}sJZuUEBNct-g~$8*X!H2jS}ZG z%ZtU^HjWWnwr?vI7g%E^$#$!$LcFoU=2ZK(BwMH-F4<;Ew%wR4k+p9dE&;%E$+nFn zB(3e+o|DocyKQ)a#puQ*j&{>Gj&o$z+Z}4(cE~QmRdgk631fG{bk=U?S^L$#PF~0= z8chfa5kI(n^;sg%&h{tv?c1L?EKkBo!}UIR)B&~+UZaq@;%!wrG0q984s>80QNfg& zk`_hEKx1GGzK~qi;*p<{R9H1Wzoeq1sD3tIp;N}Gkf$fEOsVp)@j_wydqyG;IbN7j zA z(4^)4p&%M+eFL9KsR|7c2cVU;^>xT22q{#`;17o$Z1Nu_B{F zg=C>vsbyW6Fuo!(ysIJ-t?Z{y9;VGO0w-DdX^H_kDkM<=LT#Z@5s!S8*ra8BY}9CF zO<5rdj=|fsY|o%xz(RE`kXDDQkT@2ttf;F+4sqR~LGk#pmJMWj@IQ6t$voSRnVVlT<- zl!bc%Hl$U#MGbn5kkgP(LaEiYm4)?4GE|@wjby{|ap1}DMi-fpND+-+m3q#AXyiN^ zDdO=fS|T0;gN3OU7Yf=m7QLb{%>+A3pMji<&`L$J)))YVoNRqYb_#MTrXXklkT3!g zmk8uaDLI#MgdD}6%Qsgec^O`mUggDqXK)TLdVP+f1ZTLnno=b|Rid zN3U(fi!#_muO<|R#3s5(#Le)mC`4AX0oeN;{AUImZN^`Zea03!delMv{X%zDu}#kLPmaDuK(@W)X_lzzQv#g6!9t*(xnXwykJoQDu!01ob{J zR#jqD#31npRE+i;pt5F)F+in`Lz0a`eKZQ*gy#%kdoo+_jsc)pTWJrSGog%_f^4^$ zh2#3sYt<@Jz1=J%aT{7$Trveob_jBbMbb}brB0tml|=k08D9-@*$E?YO=uOFD$A=T))`gCQkWC%prOXfl1e1`Zzo#B9)zdp*)WH_ zFuaN)B;LobC4B3UwU>qOA%u_VS?|=Z1h&DN4}rg=>;Wp|@(lsPjO7hU&Ks=A&lsM9 z~Del$pY3;$9?1!c4yqzP$y-e%`w`*REY@Y@DO$y^OqbK$TW92u1?qaHJ1k{rMgah& zXNCUra)hCsr&zEuhva1xq=4Lz>ji|R*{m~j317~xk~5d_i|i`*@+-nv(wY z_i8T@_ZWxfR{5kzpU_62@xtUi1prK*+cWb}6iNCV-2k zRV6YU?w4QX&iLW)^1zPy;~Du?J*5G_4osprkUkTFa9BRu+cTH}vpE?_LnybMlO7Wa z&Ddy{FzAlhALuQda6cKvMc}XU+1MZjqlghKgCaF4qaaJ0OH|k{N@x)ik7P>B6|k<^ zDu#C|&C{oVWe9tTBpNV@_tpz}_5xz@%ZZoJ9Z9J~(%9D+i;Tmw3fKtz*Ka-CL|g(s zT)_Iu`jAn8@$XBK`K>CbAO5F+4b&$R7{3q6w9t!kIo%_vCJ`-4qT{mD0XzH_0qU5- z(7geErV8T$F4J-4Al74i2GN=+$S%{|02YD1b1d%J(2M$&UO?HVAaRb+EZ5vjjePSM zMKAn+>V$VbzB`DOGX>aTFdM}T!ug*`9tQsT_!WJ10vrno-26mlKa!IR=Y{uu*RozDkKOK9=F#1aT2vEq29%L}EcH zN`WeC*=Nr|! zCK$F+o0N~drZKN7nTcPgfuL=Yx2cdoY_0}khF;SZ_l8%c6CS8iDv1smsSZhI3Y@_? zppjpk;KwvkhFnafTQG%P3m-|Eg^@=i`E2YkjP(k8heFI8BKJA}YR21(z_~bo7#rX< zk5YGzxaEvCIjH`P?b!LOv& zSYK_dDw$kw99vOcG#-U7!Op|kFvq2Urp-47lS5!I3S5S>hO+_o%K-`^-tVYHff&CH zAZ7)Ae>fW>TS>_(n^MawN{qVdiBX`rE9f#q3tR_zhNX-|Kx|C~yqS888=@j$lKXb+}~&JB;}N|1kpkUymI| zvPxzH?mv=^VK(CWk*tRK58gJCRoiT$v;sHd-$nxJ7Hl_)^<_T95u;$KZN(X*pv5*k zV-y=``4JOl#7EP>cy7mk!6T}TwsqdY5En_S)-UEy)X^!(`C|c;E`U;z+b4KnhSW9J zOr7>viTv7)aTd~6IGBs$FChhx|%+as_X z;QW;FEo^XwY?{yaV28nlO)IH4CKVQqH+JhO=m!QbEo1|1kAXD-d!z1P@Rx_8ISdHYDN)E722U8v_O$(($|>k9gWn$u zM9qG3)xq zJtk}gSUQv1SW`Hzq>e1mqUxF{h`mo&Uy`yZNtcgYA9Rv~&}L3Nb z-i3fVg@SdLKVq<72^h-9)KI%Vp(e~c6v78`enw3HEAn!D-UZUC(~;~SXa_D)XFJk6 z@_i}vOg!^BWC~t60y`rS@7Td%$Y7ST3)2bf^wnJ~MC6QQsx7IjudXdIX5wA3xIQO9KVd6B({DPc3Ses(e>sWnkMBQ|LK}9i+FJ&Vy0-0`Fj& z=PFWi5gR4|k`w?!_Ti$H3VlX?fiWi=MMPkAIUDX4*$D&Di4{}|!BM!r9NbYQ?pw|J z;XUQ7gi+zcG&4w_bG4hAIlOa;bq-gZcA_#kp^??ly50ORm8a z-UOd09?yRhJfsBt1w5kqh^VjI7eoVL9$9}Vlc~(>e%uvnMZ{R4@FeUt9=cD)spDDB zCj}%+ybV=TRds}ss#|%Lkv}0r6t8hS8|;?xZ+dFfe*iu(p6!>DMJqcOymK}Iz?qJi zb82g>azrbUIG5LHjR0y9BXN2q8_tZv z^_8q5YK(}F)D#+FMRw|=`&jdM$u7b7#Rms`it+JE)|)B8w<}rqz*0ds#|gR#-dVY@ zFy5rI6+Iq@SHTWkL5sPmVJejBo0-0KYj0!o|i&nk~VH~<(i6sHQ zkCKRb3p-S^3T6_~s)UfqqA;Ubh{oQCokGe~lu#5;rH#U-;nr$!8Q#W6t63k$fX^gn zc;g<)8E#Ai_DRl&V2pS`a)zH_7M(fp2IWmu?djn2bj`$s2JW{^1?SJzL{|@QVt92W z9$~YHKP|~-(_!$un_DC49NMHa2-IsH43R(m5H*3QLf)Y4aC{S(VCGYn7U13~8Gd#x zoh)&S@wk)>-}oinI0F@ECN8VMnRqE>!e!a(OsG*WjQ6Ev#DJ#;4{t2ps&}(lNk#AW zE>>;T%bZrd#-#shJZ!7p&t?r3W52a{)>eIA#ruRMIOr;o(+2`~o#PU35Hw&TZKL@Q z{%fl~&Sevrh*!OG&1M|GO&@2og(Av7#8bBEz4Y6v;wv7(Xx0qV1dyS|Cg3M zJ~wm2Tff(NNF5!} zP|&`lv<1Y=gcBJ{;qHzoJ6{Lkt0ZlH3N^60Xt1ziDXn*MLUR=v*-1ull%l5AD9VwO zb2mtNH9%ZlUWF8^0qEvRfWw8BmDN?{uxA6@S=J4?vZ9={cY6&~0zk1lWx&k?Wo6~p z7uMDfs-ZVpO0`mr+&u9QN8M%aUMRP|wxBw_u&S8Wsx?sSCC43KDLwtYQF3`*O?6!f zsjn!Zem5M})X3e3kS&|I@oS~XsXn=SQq@A<{Z>XprH3!}IjnSt5Q_Hb8!iw+(H~a& z82klE2Ea{4me!b`o|9LQH5AzgLO`sf23&+_5L*ybreq`hzB5>T#Y z;Gm2GqGK}yQhU%8we-NG z)S^Hw_ByHzfP1z6N0my04i%TYRbEV{XJ(*Ejo4&VS6j54pDj{MLB)0TLNNxhsi>&R zT#Q9*8Y(I-5o$HaF&&janP>{o(jsvN<$}#bHANK^En17%0Z=TXMMHEFVj)RDr5CDo zh|Pjxx=>6;Y&PTum}^rIn*&92Z7O1Okv3YWjZq?YAkxN|i)!SYhbF?xsG3+whaVG- zl=*1v#8OHbzYvAE%TWfW6{+rC%&z`lO$d!>dc#r<;pf|zkw@q;pyDZ>kL{QThBtu4ndhItcj z{{ea#j~yEQLYWGzY4lSvmAJgoFN~?eqmC(6u)DV$Q${IjP)ThqjFz`Tfyr>mH$l*Y zT2wf3a$OCbW~EB0LJ4*F)-h#orXGiMfCwhy0Ub(T<}EzFL&?EbKaT(>_?Hu) z{R=U3QYmLzun#;67V${Q8F?uXDBvwsEOK7V1M>@p<)-kqFAlLwcu?w6LQ8|>OKB0V zYqD~Zd7L0vxL^Qb5XCd-2Hg3CK#*#`HLTwie3e$GOUcjY zyN*Y$D|uM9K51A%3J(KA;_@yJ1n)M3_N7uG@At6xk1&i?xc84rPx)#dBN_TwL^@E# zHmZ%}cD)XHt-&>b!K}q|e^h$NTY1DmW<+&NC!*^*y#Gg~OZf+sR7PIGFn(Za4RYPc z!?N{R+WY}LSJ7}O`yaS4bl5~{_%#&`vHHz)a-FuI!CjLP4?=PJ5QVLXHI~+vln8wJ zZN+_mQgTV#2&w|^UifK(3uTv&ct}nvgu8hLRB^~_I}b~OAUGYLrju>2HoW#H7~c;3 zUwCLf?nKN;9?G+-jzLzR5LQ1WRXnRikv^lWhV4XSD?!gTo>KO}cIQDq+OhJyGOl13 zt(U;HpdxutR@N|N2e*KVoIE20C6VLjXm~Dckg5eF;HO58duUlLlwH1naz<6s#8N<- zLvdX9;*E5)Zg*aL64lCW(XE4KbYDU%Gz(Ix0~0 z{{hX#cVl|Uu;T@#jRV|UDw1=IkR+CaLOZbbveG}eqIz64vN;YlsTtWwe1Z;vJ&C$? zfV_UhH5Zhgs-FaCTJAiOxR92s04(HjN&tgr#wRquldtePjX#HGo@a!52z2oE@T3iY z#CmaI)@M@KPZKBLRGR(KY*_yKWNo?-0z~&Gwv4wqri+oeo%}HLY2;3 zMSjq#i+CY4hTGCD@K9et8T#ZrQp1l6oPR0Ym=aESxIQHt* z9}yzKmJm94On!yo#LLPM%OVv1lvWg@@Mrul*g^M!#+a@scV1D2ER45BqaD%cV6kk^ zi>vP!`GiJD3*94f^KwW(&{J|ALR@t)VW`9+cT}rRAe5%IoS;q&31zf9Ar%-E3&~1Ie{fq$pCea|%)+WTUaA zxdQw=Q%Xx^L5T19IlP5@>DXV<)PcFp}sA_0=^c zRmk1-_4eR0RM(%_S~c8-^Ym= zFY?Qtgc^A~6zPR<&vRT@id5d!Js(_Qy(yr!xTdhS68S@_8wsj)vCnsJjD%QgwQ($@ zenKWAo_~(>?(5{&MM|g7$p_!hpF)Z%cv|joRQMmXkQ`14__CYYUBvaoW#7j6%7Ur+ zP=(M1MJHqdmYj?Wkis#6*s}8C$rUi%;4p+&UEqS;;ekS4V;T!9CKXPpQ=srj zgnz!kg|Z67S1cvhVqsB`<8YA+Vc}$8ri21j2&Z4<{6%VnD=u17u=_ z?qrZV2UmNhlB!~3bt%0F>W`e@j6kAQ&_}Q6#;R%s@{L3I?nTbq1&#;;TQSLeO=vvA z{+GC5Q3ApPE^!*RPd6@l_C^j)90bW>CU;b7Jl9B{G7)B=n-xMGKHzhA1e=c*OnOTGtxO)y%#v)k`nV4AJ(pQ*s%%#IEhfB8_ zvMCJ&Zt5yb<>RVIpnGh2y)h02=OJ8l1!Pk|(}~28*+)`t90tS4AQOzIi|mJz-bln6 zjFkOw(p#K%DY<-=LQ>x=y|N>^h6EzEA4yZ8$Ow_cs7`suX^}r<_6f;*&DHp;tDG#d zP|*EAod&UEX`#A?S9`XIwgtmcQC*CJN)Q%b;{ryOnwuoUQF0tDl$6pYWv?`Gc$2bP zQe6rmO2_fE5*A=Zb=5fJP}x0sfz=XK18PjnB9iiD)*wuEnM1FM$ z|8kA<6-`9=#WjxedCSb64o-lRXhARvk&_YbbDawpO+~o;Iwu!RL%8`mO!0JtH(uug zL^BZn_Bz+o$IwXwj){<#NA@GZ7z7y+W^Zu*mhxG`>Myox1bgb#M0td0nMRqMkq?`Z zsT+jeUD(g26Tq8c_8nTNE2)QrF=FR*7RQe*M)q@Qv8=kX1O?8=j>qHtEmR8;{^?gP z%FtqFFt!(xE~14A6U*!QS#Vi`I*t8YUWsCn+cII1PaP|W_yF`JBKCh>Zbvc6ykU7tfSMJU{KNYgw1Pnu< z94?!MQ-OSo;MCNX8=$`hWbx(E6f%f5d`P><$R3=kPebCZG&_;qM!SL_B-9|+?Pi(L zQRk<@nkHF*)NH zP5MBC_)CiHdVt^UiBCaYyg-Q1I3J{n)1?tea)?eT7#)|d_$I_Fn8#-Xh?U6hYg$dR z1MI#Lev=T=VcL!K2%_8n0@4D4aLD=Szxwd_mV(NwVS*dWqhLFpSPJKMr2G!yAAjK@ zCF1WXxu72qw!Fakvr)u#hg=1JA@e`>0>_OOcL<#xN7P~oog(`av;%4ZPj>4KNq&S9 zVGZ&Me?ru1(PnC7cZy;LK&9_#g#G^DybWg%wH*{G21$PIA^?er#4y12RZ>-73zqpD zAj5XDkQWz-#qK;sCQ&x&FNj(YN(r)zE(nxBNEeZL@$#ZpLO+-I+7Khmgx%#XG7?B> z$3A+T=nc8iY!K*J&G1(kl#ee4^<4Rswo_=7+P2luOoyHXR!Bx5upK)-$WdmK;Eqv zj}Wf^M>2#Py^h@0&B4Y~e$IIH>``L;`818B=O{}5)l0z9LJHj&O2MNL|2a+L?l+c6 z&R3~blVP$7v}*pf35WwCNP*&Sc)4O6G+pBh{(TBO4CDB2brs{2OWq=L3HFjxq4o#bY8#SR%9q*7Gyc_$)`sB!UlehA8M1Mo1DTq@t0-)UIw|NlpVq zNahkxrzkQOO6(A+NxBtY>XP)5jgqP!cBeIw+&LEn5Q4yNuz9cPmiH#%gV z-#N4skGUl8qt?tUk+X^>WzG|NpD%O;v5iQl?vFRw-BMh77&~qjGRBD z5~OhhqBzKPD*;WxH)d#9!!}p}&@)l#{F3^KH3UJjoh(Qo)d<@PRYuv4Zt9oaseT`m zF_$C9Pic>N$-1GimqA>KVON zxV*+1aCVgEEL4>G9WHFpq%c3=+vBZ0{W}=A!2Z`FfFwppGpZ?@g4|DHWrej{=ucE( z`Mgl^Dax({QjPdo2aWrgCiL|_hifXV<8yxz_`M)72V;bkqM8aI45>tXivJa%3YO$m z%D3cNm(*@hm7`Mojlpe4;9Z;F1u^~cFEOd z9)K##jS3BtKA-{v&yr5A?L)BXFceq|j|Ao(Gq%F|MP5&F=1kCf$nxo?>b&XW`LKgr zAAZ%x!%BN0F!0h0LvE0sMH9OfD&@F5Gmq?_r8L&LESCsg)LQgqNvCfa(IZ< zprD=v1_xbN$lx*4>r{NPHNAu7#Mow*#<#!*a7dm;JhGRNd+MqDxfR(%iVnZP0(EfI zfIJ=Zu@~q{SfLKm?;&M})bMMoqPjk#crx;I!qaDIJPghP z{6k`25jh58wo&71APL%zfkL|?rG{jjIzq}08D}7rc}9Y}%B0>tR2XY;0Z2ZK6egP^ zpuFTEai>f2WWI>tBWM=FD;9_Cr=X++9-X78==h+aZn6rFY0k=5KxzPqRrD@i7LD)1 z7&3a1OoSqHYynaUyARtw4)UtN(m{@&21zs^f3oXPTFQ~q5tdW9{%Ro{0=}_bqvg!nC-CYrL49z=MHqD9%rR|X>ZV=klVpkaY@rVDX} z*wn1?%`j&T1;VvGxOYWna(q!%{6EQ+QgX0*I?08U;lG+S!SRqwM8pdhG3M7>9N!d3 zLhu{XW{~Un*HJ(#LMw6hY)y!vir{v>S>sbpn+60Xr8bg#SR-6bl7LPW&_dFhPC~*9 zH;|0D|9Ki$J4j;^=y|WfW9Dh(aMk$sJPpUR;x+R$u?~>GM2(L! z8ilUISLSI#Ab(skU*qQo*-N}byis`mM|eW|5`lA@an^h|27HJs=W96ct-OsxF593M zRIU3Ad3}Vp%-4AK-wtaVthobZDnZ=B6sW6$GlBGD(x6+!QU-}jW=qy3+*rt9dT!wt z?dcB5OaH0{k#g-gcLA`oi^$OhH!jeGO8zSXIr{Gr!S0W9t^MR8^%wZm0*%VBR}dPw zS^KCuy6opI4ZMk&GP%CC5Y94n$l*(2e<>^z!A`@C^FhjmSw+7R>Oe)m?&2?B z*j#0YK}8pLiA7BJT=@~aV4=p#a1^*9uNi5O*LReTS$e<*Tt!lU`+H%gqLJhWXh0lv zXwcE6-)7$Pb9wHiCt%!*N#e4=q{~T?;a2p@)JT35t+Wv~9QRXL)uM5eo)+xu87i5y zpYgC3O{(D>oi%=`NYB4MX&1Ui-8E_Qixf)UCT^^(E-o*fVuZ_%T8KD<3kl+CURu_lROaGxa_Pfw9W=f0Ppn_pj8Ke0|n-lY$+#5GGafs7SiwnU=} zv9{=3TU7Osi`e2{>p9W}|FuLD;VH3z;|6hTcy$%XDh8o=dmOV=qp@?apk8Vma(5)% zxLP0|DQ;P+@h*1$H&rhe3*JlmAG+@2i&;ZBJSZ2)4j}GRPJR!MV#dZtz)$vgMkdj^UJ5 z;hopu2)qWMPLY(o&X-)33Vdq0CQ78Vz%4S!KT_dHtnr6r@m#ElV`A`Z3_C+FybHtJ z#o=GDCS0Vk!0);Fg^1$gam)&h20rOfxdM!N0$#oXTK2)aS7^cw{VWt}Fhtb%@4k3k z`gd|bJPgPYfETwD$pnI(frY7ktvU|sd+0y`kSy7POc_|8Bt8aIN4>NZ3mSb*rLvQy z5iDG^QX>_mTi{;<{rtT$h$y;QesLzu1ek=L11xZ0kY7N8tG?T;b((`L+Dx!&uG#;> zQ6ohzmcFZrw9BKYaJk+uA7{R+=?kf3polWO=3R}K!w_NOiRFnHiobbR6CO3(g4jqT zeuF-pM|4p)>)j}UXf$#gjs4!!$e2Q`c~27#nPWWdsqbk#?218j2Je0n9g*N&@^kMrnKp>(YA^*F(6?c2 zr;!2hQJ(1lq!%CJ86YYmIs=_~S0gbGg12oe#3hmEEX=Idc!V@Umn7QOWWoCcZq1a1 z*DOi&Y@DX=6A>CHwiWJT!6oWI!GM5v0BqJZ!xtc!YX5zkQSZ( zuXrhR3LiA_TF$T3&fNfZg5>=Cd_Kn$(?u*^L7yS-;!$gWgZHp$jV9b}HRT|HPoBun z%}asQCls=VthgWxBwLH`tkJkSwNl;bCRS{3@8}_OSz7 z>Sw4Y%6*nT9nMijAX5vD&v{`sexdaJFW~;`H0}mC#gQupDz?luA3|HxR#n;HfD@W2Bv>OuCj3&`e_um9T=yLSXD0!%YcP5eRA25R; z^eIMj1sDpQ<4roMK#~X#lj-~?om?JguvQN^l3RkHp!3^gUIBCmK-2*Ax`#bJ(8LV5 z4@-vkN>bsr?g1sj-}*`Z23%@EoF9P&;a@N&Q97Pm+b3iq`Kf(MCDZ#EUh#n@-te3X zgl7ynzMv(z1%@PnN@V|%mic>M7FqIs4v2tUNWyo~U_A&KY<40`e!B^P{BVhdCGY6y z0LPLx8C;-ELM}Z79Fp@!vZBEAayD2~0BfPIJJ9R1fq08 zC*(R)W^ZoQJ-yG7rA+aG6GP#6B$ZM$kXAZm!{#HY69vFXvoeMPn^G4`ddrlYkuwPH z(;iD8DwIw8rFik%xYB2iOtPn|qEyAbf5y)4PMtHzV#7Ia*YG88`2;Z3l}fJlBN zviIpW7O5|#K>T5|(w8*ZX zCH-;&WV}oIgJ|jf5v!$?1(}JH01IrOoeqXaPCg_*KAH9+ph!}nG4;HpX@qu>AaD?> zeTJnXI)PulL}UXjg)dQr(6;>0^@0Gix(P5x5MVA5po>8~5b8*f{2F+G9NC;_6^}VLU@i8o}&zc&_@H{-$ECU5tu0yo@0e) zk-%Ir?YV1GO8&)M>A#pO6K1I#uV7h3wt}f+WyO3{dGLpB@jnrR3<5 z<1|_{TRQi*34d^DL-qj@m3>{2RRfiLAUtk|N7k}kKT2MJ6E;l2V_ZPB>p ztb|!1yNnP#ERKM zEf7Qc0Q-KZ2@|ci#LC(IeQY;Ste}mSxYte2-&Xt|3XpBWYd_SuN;i{TMr*8w>|RJg z_1t2K-@eJYLtyN}hZ+yttuR!Wb*MFM)tI)%o3{2gZA~z3?PJ>7cjMN6;$%ggVsdeH zodS#;d_suN?0t!ZoafHWUPM18LBM=cE(2wfUYwd5pM*k0So&E%|9<7Q6Oh;fYDjjl z6$5cvvWIoj=s{@^Fi*p}lLmySL&SteP#+|=p#+>IgaDscJ&z0zjE&T;lfqD*guT5$ zf&{rk9SDVxNLFYsWyq~A;h?j<6K&7K2@5i3eEhS1u8a%MKVI`$zaEkB=^#Ee*^MDL zVy`rJr_Fgd-`s;Xhoe3WUsP3unNtq^oBQqT*WPbu{{t_TFhX-gufvZsff_!Fx|6dfI$S*Qm#5`0|NF_W?UC;memf+2kESX*)4LV`uY8sL4rr zaKxbYNW7aqz5ff(60lb!de)Vt%6EhOKgY=@6aAPyxb$SAKl25C=VYQXXsax2vuh^SlgJi)MWPPgYVC#)a1t;531spkZvQDUpyy9?1{_Zb+a4jSOhWdjsdY}v z&&fyJndPSveWgElfylL|;w)C4N{n@OfN$DzT@}FEH$iv9rxzv49y=An^r2 zg_wcwMZDuwqL1e#f>Q%&1%l1LLX|~v)e>LQ`-L0C*C;@G-IAB_Lb5-pU?S{p&_3hH z?_cQ@smbr(C|pA(>vuvO9Kt_@=S}*Q{V8lsRDg{E+0`&a@h!@l_%Ff>_(``d!+Ma9 z#j5V$m8TPx%w2r+bYcj5&+?Vz7}J@=jc2s(n7O0v%h=)mceHLIdn^2&zh9W#leHpy zv=9$az#CLe{Oe#b$WMyb+|hCdCo6t&1;7iRjrl70h@F$O8KUGNaCPKjhNxm1^VI~$ z)eKSc5Wta{Au3H{ehk5JGeeX-1aRCtA+e3{!90L?7|bA*wlTjKY36B$D0v7Vd6^+9 zU1NSM!I7IGN*)3@-e!m@r7=H_;P{v!N*)3h&DVxr9O@t0)mV{chtNMx5%t{NdyG8=~{xqD=oi0zAySL#%$N+5S%P}~RDvoj z{AO*E+~yIjjCzb0)+Q;KCwOmdl8@-ACB9Ibw)jk4QjnztXqoDhcGl|_R5*J2 zqUqtiozNxt&N%rndGne}I`~U&UvnvC>?3=4MQs+plfX)hZ&%IG9b+K%GSGB3)pRy( z*STmweV@zfk=pG$I4#zvV=} z(9tgtJR|P|B7A$7-YWp^>v+!H4|T&E%75pxUtnqq^7%@HBX{fNJ>mL}NA&vU6-4+d z1tprQgg5g6Stz>b8)|p zOfLu?4)4hHG_-bBa=Ah4?4W*QCxk~|(p7YX+K*o?9_T7MK<$aHA|aLDyR&CYDE93t zT0>C_MK6J|9#AfLwR$*qIG*Xj6t;&P&pgKz?+)jtg|&#<25xQSwl#6wv*5OI+=a-t znsq4fwxjhsB27o^IuUm%rY(xQAKEtNNWz_vBhxzUxqm|2^10a9Hh2B`*du*49jOGO z|cdB(NXlj>^jd@LS!GBcq6x$w4>hGcF@Y+FJrv*Y1AqB}6O&4~Lksx6Yc z5!(<-=yON#$w zI~j?0oXK?4Kw+?eoDImEIgs}HOB*gXK5zO*XdHbcp(Bb6I1ET~&>#p}FaJ5yn`y>A zKWAq502$oj7U0^SGeZcktA5VxpSU)>HGjuhZbfLDcyoe&Md;@JnlaphxGkI4K?if- zZ=F3%m(o04?qfDwaxWJ(U1|~CxIBhCt-xMqGyNE6-1ltewc&db+{dgFX~q=a;%0`n zjcsK%i=+=1JzUqotqq5XDUEH*Cj6xy3B8lbEr@DMY<$}EjB`_wp{roZ+kClWv29`N zpKf?Yr`MOvmL~`rPdk_C9RZlo{0@xMfiuQ#_|v_-N7J9hx7^3T!0VrHN>h(^aH#I^NvAG1}-ZBuca zWk{R#CCiQ%`m^vosf(Gxxldx<$80{P88bbC+WNKFH&c<<6(zv_Kt_{ zCAXSxwb`}ySoDx6Oen(Xm*3?h4H4@3HvFmCWd|=VR9)P_;JkvOB+B z5_dcRQX}Hpynx;oFumNCxI1F5ZxFXO5GslS>GOXfd?X<7&sPxef~%RCFd^+{uV(fX zEw|IB?7WdFo@uz`UX2ik&=u|)*XVEZzofB<&x$XN-yZ*Y{O|FP<2`ye_MRKFEe7}A z(ED)jeQ^ilzKQ!b?o`~>xchMynoy0armrSPGeT3MsnSg1|Ns97=kMND2?G*p5)8u< zmL+_euse(k|1JD#cvwVk#NY@~B>iuX$hgRaNLhp;A|j$7;zGoG;pYF!6rPHBMS`M8 zF->7m%vCH=V0bnw7Aj`(rSB8YCg4kD1J+7{df%}+>iD=JXisSSobmyO=LLD_bnq5$ za*9q*|LKXRs3(IG7_=nZ#d-hDt6$ZUe`un8(!&93Z4BO42(St6V*UgBM!kZx*5&7> z=pY0yyx*f!=-~?~6Kfz_%g&m<-==`bnXL_4N^WSvke38L`mS8wjRg55#K1vXJ#w-8 zHxX9{0T!ZD5JdPV9g4uMccd@HI7tallm~@&P(cooIpMaode)pLXjPzI6xN=Wt=~IUDnm**Hfp+8ALe!c`0Op6#CVtZp#vpS0++Nb^rNF4o%`qE3#v ztMn*&(BV6i8Bq9@!_3ov?LWmVzWBtcu4wzg#0ioa0~d?bzdkcQo8~)d(c+VaKN?PY zmt0yZa=QI<;^{x%|Dq*&Cc5|N59#v;xn;@APYQ3|%$&NP-O`X#wcS5;%}@LOMmBn% zKdtXqZ0c{tJaWm38vUz<XbN*_$aqREJMK3p*w6_{2&HeMz^A^-}^4a>&4&5G=v!m7a_L`>#rS+AT z$Aac0q(QVLe^xwzWvbH`ohQhG5_qdnKk^MC)O(l z+TA<$^>L>WmQJfu*7+}T*)%BBxp`pdvmP!vYmyH1eup*82wArGBlJY-BKqXm+HcX} z4Qls40>jRq@^5~-Pl3h7#4i@0{BPFo@ekaS>p1_X-wwCGJjMQP-23iP=3x7K$jNrX z?|y#!cF($^nOuMM?mC;d@G^38k|LEBP}>%34BKiRo7J& zGZo5-Mdg(>Q&gpfv1LuoUfy8=A&TfD(dW}c56+u#e8Ho&iV4kDpY17eKD5R6%H58s z(y7YNG{LK4cRFp@!#SunMf`pBa?JLDx5I1j<8j%N4-#fKy1!);b6Yp*;2~{6#PoX& zK4BKkcvNz*-SzJq9|w$Da(k}D{RSVU^%BE0<}w!_konN}3ypn%;mFJZXPEns$B0j8 zD%}gWTSqNwu=l-puKxtdwT8)0HUI2!o!a6X;r4y=q#+wU-uV72yWL-p);lM=%{QL5 zzy4RN>1^HOF}}UU5hm5OHM@^moEcGhdB5i7iCO=Qxw1E=XY|sSC@Rlc;gjQ#e}8{u zswg(WN`}ZWqrr z6udk4L2J$W?B3rTO{}b}SsJ&e&rwTF`4^jQhI>A#vFN{4^sq&F{fBd&m-~-ot{BFY zWL!32i*?Z_6Q_ztSl+u|BmLTWY4DnwTkl*gyYuaDiBoq;ipI}*(w&!0c}gBj&tpI$!o=(|t% zJ9s>IwEQB%;*-lvYp%u98tX%|rggwey61jKEH?~9C(G{DCodRyQgSDGiNT9GI`rz* zM4#bSpKhy&{`F~%*NI&R*GvCE@`CO1@vE*z?)=7X!=u(ATT52Y$Tf)8I5OLRFpi7f zx2S3AC3NYHBe%HzA6tlK2cJa!Crjqq4!`^L$EPlCwf^+p!MSV`dfLGz*(|#f=uy4* zg`@6B#P<^}9!Q`3>o>#eYZ6;+|8`^#p$AHK7b@L{tE;yurhF6C#67vgHv27o zYx^x!Tl8SR)71y}LZ@qbL|-!8=h#i?PMf<6GozKc-0EYiyW8M<)cOyu|2(Vve*Fh$ z{1doOWOZZz=oz|SlSjS9IJA!2gr*|aHMpu`YX8HMQ;B^8EuPs<-2PsJ^E=mb)(6}z zj#`cU9xUpAMs#}Pn&C|jt<@VFCLKNgD5-bO*N$I27hip{-luAQW$cSKwiFqj?YDn3 zbYb8w(szkd;$(*>tx-|v-WW;F4~c!>wm!H&A$Y*FBW#P~)V6}pgG}oC_Z-Ak zjz;+hAIX09Uhwfd>Fc$Bgg@pO@u~rrwRyEaj+(U5C+y1;x@S)P+(jbg^>5{^avR;! zyGuLH2b4XXz^-n4`zY(%)=-nEac(w*ez>suB^RNk7wo;@uK zmi&6)V!^CG%0}~!T!@f{$|+l>^I+a2X6(s{Ad5bQ7`9O+`QE91Ln`fv49(%E;8{kcD3M$O#6a$l~OTu*$=Mac|?6IPqASdRXI zId|3a;#sR34Zc>^FZNG&l+JzoyoHC~=7f_r&(6#f`@bCc<=u6@ebAHoeGSZu2mRM@ z8`s1eGjHB1_PIF-rP;+-_G$I@czdqz3**z=5eZ+{T;CQX^?l;_)^oA%?v@vfRQLEy z-%S=54qM-`vG@D-Nc6m^spsa+Hmu%#dZy*&_Fo*Iv~2&qWr~!YyYBWiX7sv2j|!q2 z+Nxp5!)+ebznC!VZo1c#8`h7m?$^XOA8hz*;Ug!Xj}~XT9a%B`jsrS=dQGBK+`kp+ zyb}EztUJwVbyaO$QGG>C`NYP`;!;J~O654!SZRP}{H#E=_rWEzXB)H&rU%cvUU?f` zx+h=lUg$LD9NzQJ&Q+=(PG0V~>-pA%#D0C7{kA+@sQUV?&m!ArF=-11T{`;Km4-2I z|2js7R~u_@&0na(F`sU=xF)v!U|GyJo-mQ#5(ukRf}}tv-7; zSs1=;c>7M;9Qpc%$pHseu6f(tqFT({Ym3SkFNj&Vp`qsKX7SP`R}TfK{rlbjl06=g z(5Jq~w3~Q~@ks{j!dPyqopRUGs(4?dC?MdU*_Q9>1KBYm$n5?8|UldZLo51=07ii^_K^WiHoF z5q~BN>stcjPSbbsvN4Vay)m)Uu~KgaW9S(WJKeeDbsC~3RX(A8FPW^ZV{aE@^4Pea zUvYIdLe9AsOTlT0F`PtfANL}8eebAOfR?W0=(PE2No|W34O%DLN@^2U$cVfwU-dGg z?~e^k#fGx?844zNmT_wuiCgPO)}3Lm|8a?}nUWW!*xpbY8!7y@kXw(b=Hx}4Oe`1+ zG&)4i%$M{XVt2X7*I0d~eBC&iVJPFX>Tn$6nAVB$Jvg0iU6WFBQ|EWkNz~6Ly=&?xv=(j%nXg_b7@X;l$F(jGSB+>m zuUa|aL4Js9X?`smaokJ$t;qO?Iv*m>eZzZDb06t`OWBxqXw&1{S`E` zk#5QsWYNPG<&Ax9-Cd@>Dcnq&8qFKqNY8mkETWIIJ>J;FUY@$``L4}a$1L(^^?UWL zdPj?Mnr7s*R(Ces;I+4vUW;qp$TZlpDMj?%K?mo$kj!kJ6Vz^D3*);7gZ{jtu45~w zjBz${D6O#bLXkzqnfZm0!&z$IE2K`JmnkFeQ~!4=>2ty}__%+-fn!I!ubngu)Hgo5 zh7;@M>v!-}XtcUs3px3SN!u0O#T^|T8X;qKjmv5ZO8!yOu+bcMdv=lI^Ql;(ukVo6 zVm!&V+cfET&LUmcEKB36p_O~|5BcWZan)-ubho6okawdq%7Pnid?tj;@80l`tg#n69;g|VZzs2@%9x*D|9N-;Uhenluo zS}*@Jd%xUdXUfk@jrZM;Slf^G@vO9R7Yqz$s5jjB8NVu2``!Ritn;6AjCWpl{C!d| z{@G+qS;0SO=;lfs9m~pBXDi-_Eq<|`G~Q)m;_zwdW$9)36B5tzPm}pe(pq=g%M>Lu zJs)>%lnZ|o<@u1jZA6}emSi&fF9ynFF<0=g&d+65MP&Ve95V68Cem)n6-FA^WSz9n z{t$)YBee8mSv>D6rrlcR#knfY?1)iWoTHM=^^&d*yLji`s$*6Cso8$555AF$)z0AK zq$UGz$KA~Ksc0*;iF$mNW^gKU`8LwdwV&9%D@1AvE;f&+z2n?7s2mY30o^5rro@Ee zaz_WocAC=iTO(y|BJ4t~PSw=Z{3X@C$oWWB2nE$8Ma>)SP%S+(XiW^(Tct$!6@q4krjMu6y3>Y9$rbPB6H% z_6%d~|InJ@echezcsxnU;G&Kd>DbE}cjM~DuyN6I{W>f_Vd8*^c$86xb#&+{y}Cka zE|cGnAEy;z{@dnkX<-GpMt@~_mxs4?jtHAG-EA`}z4BI$#l_W22>9o9a(Ec@V zBGsiAA~p`VPCT^u{HN^`(Qei&tR(qiap2`l-{ z@_C|c{Q_<*q2Vsnwn=&tRD0*mw=)KG4RmELGT*FaFxza^!@5Qlgp6MDy=S_F zk9Fz|9?e*LV19>VN+MT^mNXi6P*uNLnX^P*Y@53C{j4$zzbD)%`@I~^WTRI2&aqWW zTk2{^Titny{U3XzteW0hwkaIshHjQHXnlr#AmsmlwstHy!25{*@e_fDCl4I-yS6&i z7e5;9Wnj!9Nv(@b32lwj9Id=_=<8=~n+st(Z-%_Tq)xYe-m=fpMWU&$qd|T~kan_Q z*I8vV#}pTtCb1!>_C4y1*;i*1e*Ud)52ru!Jl}GU z>gp+-HGlD8YR#RT08bn@(ajUe!fnQ^y**#i&omsuuIAL*^ zuUT#ITrWc3AfL#7M88P3>D_Q^?uTX%$@0fC)5fVl)|w?#il;poN5V}XpLm?Rv>;=J z0MC#&({oc7J$IJe(=+B|=<3jLH~0!C!b7G&kUN}EWU4>O#`gS>a9Xn7(w3s(pMOHz z=CR(lcJt#iSu`8{R&0ONceYvHYpxpU7rQZkrGbBf*=ZMjmqS0tGh~mt+hN+_#2z!z za@sf%Fofx>p^Rc0WlpVeU6_zVwv+G1m8KYu?kt0Wi40e@?wj6e%C)g1RjO%;TvQE7 zA|h~Mk>}gk*);q3HNC!Z51vQ_YgcM6Rb zrcW|mH~gccNO^~y$gD0~lafLt&=i%-OEyyv|KPPm#B=4sI=KvYtTaA%?kdx|QDKF^ zu2jIDAl@|%F0v3GjQh>D;zkzyam6C*%=6P2{Tg}l-TywLB8pdI z96^yZ5e3U^buJ#y$tO4~C9+GOQw}RTQaP+>3im3#g%y8UK(wqP4VQ8A6!mMXNaCgi z$%4sXjjg9SjhP?Vyp1h#OR5L^+|ERfWiUP~jTo#i>?GXB%2-MiypH+mt^!p*{T{|; z+mB8K(|5|weKl&ADEJm&ZR!2VbmS0z9qS*EAL{7xtF5rEz05LZR$rpM%1rM$BU+&F z_iTaL<}ZagOnRGqc=*O;b#V&oOM5q+QYtx1$!sjsPtV6j_sdzmrF7apa%}Pt5sc?V z1V>MrKKGS{^x1Xe%oDL@(86tuk zNP9s!vAwXp|Kh>o;CTVKw|JhF{p)JK-lao2~kgIe%HAL{h=! z==kUY;+%HszQF3zvZ|8zvAVoL=G<3?+wBE2`7~eOv!0wW+9f9&UeW$fqG+v_p)Jki z!H$9AHaXH{5dCblAV}-F3y~rHiycvKGUF{#d@rgh(eeoWyHrT+d$rZGzZ8s(u4BsE z79UUDb{DTtpHRFKY(0O8k$`| zu8Go*SrL?<7|UMs7q%fHLWZ2{SR=pFmoqBjNHPjAd5KULYPXUeCjEuvXT-O*_(enw zjql_!oF{jTdj_zu`4#kB%2!gGudgC8O2uI^hh7U}{sF<>CypOEb|BCYZE_y!>vwXw z*ENIaWd~QEifv4?6bYKOitN;O**cqg`u%9kn~p5j)_8BMY>eHQ*jI3IZ_uU`3!j)L z_l8z2s=X3%mujUTNJP8TFWobizw+9~Z~Po{QO3g51}bGXLMA-g)SUJvX`5CiIT(L= zR;kwhZdB((({8{0Np9C^GLxHPT}>*_`=5Pn6-Y`BpN&?%{GsetQvxS~E!$sCA{ptE zEbRSM+WLA+6wzaPe`474v5Tj=Vm2%?2zqR3TvPH?TI%K<`#ZJCuP$KAe|zX(oV}-# z_bOSxJl^uc;*~K;*r>B@?v?v7irW73dp8wm zpH6!Hawn6dBaBtcNyFN>km)cI zN$O1*zO>O4XG$hlIOmzn)M+1fJVolc8ev)f>4?$Po0ba_ooz4e?HS{v+8aivn3{r4 zULzJ}Yt%>VqAw*6CM-dMAzLg^OC)=%uP>5||m)-3yCj9AN5RN@ik zia(@e)|Q>_BO3qmvAeKGAXcAJSPn-kA0G$f=eZ(G7Rx2VMQ) zE6mU`=PMXk1W|MrxqP8m+=Wx znU$ptDvR5+-tf~mQ0{YeNdtsV-=-d>hWL;KU59Khr5zaTZ@4@v4u48|?54bNON;l8 z-dl_2)alNZgs-4a`Qzw1D?}$ zhdc)#s&S4;Hc0S_EVYt6gXV`7RiwK*%uHmP*DVycFKtjvv?_>mnBP)9Z_E%J>u1hC zV)SFvsSJx8#t~vH%zc6+`k>)&TrOLU&FHd_`1szzW?r=@t`OB57d_k z%G;OiE?n0@SF)PSd>6?T^ZethO6O>mTA|{kJJV0*+K7a%A};~!O%t;;htkfUytd#{ zPZeW5oA;Z&W{L6FBD+dq-JY(>5kl{$j!_Y9D%bH8bDrtupSTSjy79|F6IZQZhdI&e z15ejUG6}W+o9+2{o`B;XN#4f|j~p-#Ja}^T(U@z#YxKMhbE4z?3O?mCRhD>v+;$-L zQK!9ric6-glr-meh|l8n&T)i|OoeOezFOH(McR^(e-rC&@YYK{+vKxXdY_PbboL@t}xBT zX0LmC9kG(HBi-H_DhM^kf^T(|t>xKX&Pb?!bhuGRqgUgw`Kf*^+XjtCos0AYU2WE3 zY{h3!$zCZ%gl*?A(~{!WP+CNcHlCZ2)pI<6wbi(;8?499#7VudNBxCzKslnEP&-gN zQM*vPQGcWMpqx=IsJ*CtsQoBc)ITUUlsn1;<%#k_d7}=Xd{75bz9>JGKk5+bFzN{E zDC!t002PP|LLEn)Kn0^tqC!xoP#jb!Dhw5lia?!4aZxymKt-b9w?(0%Q8B1kR2(WE zbry9FbslvAm4Ld4;-L~zmrzNl%cx}371Y0|6x3DJHPm&~4OA-XCMpe;j>)eLs9e+&)KkFuKQHxy#6tmOfC5kf2|yB{0aAc8AOpw(a)3Ob0MG$N zKnYL=RDcD*AHYID6;K1z0S!PC&;qmp9e@Eafkl8WfQ~hhda)Q-0xSjefn~sQU17HDI0#*PEU<1~`Mqm@L8Q21B1#AFY zU>mRBeZYRe75E2m1Ka@*z!UHSynzFN z4{#9h1^fVi;1F;aI0766jsXEcAP@u`2TlONz)2tkI0bNkP#_El2O@ye02jak0*D08 z08v0R5Cg;laX>t97B~l-2QB~!z(s%uBm$R!B;YcT3|s;J1yX>kz%}4Ha05sMZUSjQ zI*`=GN2rI4e)_Cz+0dKs06Bjcffm~8u$Qw1ZsdZ{t?FI-pQuu5byL(D0DTb!+1;AgzF-tnv^Q7v!?niut*SSZMqE&f`qd(m#Ho zB{Sc1KHvBGp6{Hg!;$ZB#arF9Dl8{vEWfJ%iBJxYhpF@W`>fHmr% z4upUEAfq3tL)U{#*iNclr^+~}S;U4PHr+UE+EwCwqrEB0K<#XQDQZ>AA(K1LbI1|q zPQW|U`JvVb5022{h;bMnFuKQg_owd&sQYw3d#L2)em8O8EPiD$EL=M- zA~I^cE;?pHY+QW8A)PKj6;~mRyA*uj7&5=$haa%u6HwT5!-;tB|MA0*9e00!z=-!k33HwX2FUC1%VfQSs z0i5fZ+ZyjV*P4L8G$VE*xF`Vu5f=(ZTPGO+a{vK0@--I_9ef6&413EsYHO7OS-6jw3eBV@v_Zb{Ty~BY5R~U>j zxS;)u2@@afG41%!wD;rz9n1r5-#1-W!Ne2MXL?Nho1vV${icAn`$JQ&x=oF*$TR-O zj&~a+uydIq@d>qaol)fCTyJzPZ@0zj3sxIF2(LDJ-!TQ=b@~Mzhy11+Z<+8~qi-Bg zb*w=8&~(Oc;;+LchzJzz_^^F|!9N4(KktVB(`UZPNXes1a0txxFn8 zPk;`S`caW6$DHpjNcwyCbgc^s`t_;iLZ%&oy6 zWH>UVYqfAK(!<@tb-2b6A&f-3Y2i+{=YS6XZw5cJ(7t;T5GscYo8wz!b|nW`&0e?% zLUTgvgx!h>uL~WB$rb=iAAdU0ezK1b>`F9FOyXZkw1ZNW!>x(Z*F?JqRp8U@ z{=@|8%Axa#T2+fGyCBDExqo_e<1>ws3!@hOVUc$6=EYYRUwahg3svFR{|)y|^!^my z`*%LZrT1v@>)~zcDwoFlydNWsKhZ!jO9%2V8lM?&3HPmZtKZR8^yvm*6c&mbEq_gS z{W8tpHaGco8Z+|i?l^URN3Vb!c4f6l&^!T}5A)3%{Z9CK%s)l#Z1FoI{7&R|KInJW z`El+Y+&+X~9>R<6R)J*H)10X7UC685QD!#+D0U2We;Qs9?!eyJr^f{sE_Cv! zLj@P794h{%W5^Q$%a(4{dD9}CQ?*`0ON29D>nzZEjS-c@&S_e2y6`<+Yky^i_Qjai z2{)!`dG^M1ZDHX1GX>f})Gl4(Q&Y9Ay0-Xh(T*6gy2ScE6*-E04(bBuru1cwhq?+u z+~!bi;%~cj2Xv=rX!%12V@^9%zI}W4J5=2c)q^ow-qq5#iNEQZd_bp52kK>wZ=7&* z|3AX{agJzLGF*NW9?-z-O1#6N>f^smw7VQ0)gNfBlhJ|?PO7!OO!)pJTUvf?r7|A0 zC9jd27Jr(w;SMPsi(lUKZ^#ro%3e@ysVlC2sJ3o_*nqHaAO`JW#Z5o(0|9o(z}tjk zN9F}(bv0#G7F+RxvQkiq{SRb8cNay=Ase`9tj(%1&`uE*_!$i$pM1Qi_j(gNJ%n@OqYU~vknj7wn)#v3SX=%&tr6y?Wvf* zY91DT-RNS))+D%H2)7HxTi16I<0n#J`mbSnysOw_6hs{tC~pIWcC~os3M4!J0s9iY z$ecO8moDU^_I4xluX+typ6=ssCfdE}J*Ra&yvA$lIUU^-uCW%T{AceWp>E%7 zpYuvaK5&5Q0`0^tY*+b^S@U!&?bM|>Q&XJNQk<13(7w3QE9?Bb&<>Qbi`s!Qx&8T6 zUT#J!I*Kw|sZF|oQ{&Ir9MD(;jB{UVqP@^AH4^SOyZ>U`F+9}A|LonzMNOrWRliE- z%u^||b!)13U+R44g;WoE(s@1=#6ORaTixB(v*V*w=)>IE-TPB_3}*rq#-7`q+D6&& z)>MzmxqBa_YC%~y_6i_rKwu?&oZi&EaGj|SP}g7CpX&9d1~g~9sra>2M>c@PAz^pe z;~8#?b%Qxs*ZBcI3Pf!i&f3HeIM{8&neYv)y?ax8XBK zNJF?G*5F3`z;fqI!z)(9_9DafS%&TR8{E3vQ8Nt|t3l&J8Apo@&lDN96&W-q{c1jt z(Z^po4_z?RU1X@p93Sr6_JCoNxXp@}*Ei{|dFL1ctcNZ9evVf&TS~M zRodhV!QMbo=(|L*J}A?;4uV9aFn*2F0ST2XSXnesXD={PWg*kJeu7k(NyvGPl|iJA znt%?ajzU^{D7g?4ZM&L!sP|r%&0DCFDxd>IiAc`2P$ip3NZFLBzM-_T)>1)a(Yc`H zM)?74kRUt8K*m=WH&g_Hh@MJO=&zC}G(eF3fD{WSx+;^hx#$#C|B*$i6Edgvb_q(l3%-dW^V~*uvS45sk>Uxr9oq ztSbrX1AE^Slm`8Ggk+wA>`;(IBS4lEH;h281&y}I8Y#$r1xd_XLZz0Fl_cTW--1hL z$SwudM3Xt|apF=UlWPK!sIUUkz->XpJKz}fRu6iSe4H&VRTp&)}YGs+r9 zrpHedixz7}rU%!rAPF-_$$52Up&8B&fws@etDN|Qv$hj|6C~FJB*}C#YYAmqFhUE& zCaM^;OzL3~Sq5CEf&^xwihzWKDQ&D)G+|RzG@2!EJ_Ok{*sj(emV^c~CbPJ{+A?E$ z$&`G_}+^K$+$PaiOgW6j3pJ-wMu0KWI4$EH(4ezinCVIqxMR!2}q+&2WIo?6rTaJ z2L*qRX4a`7gKDIe1brQu>Cht zmxN#mB}b}GiPUO9mdoiurg0r(AWcGyA1<6ie9k_tibPivB$*1bUqJ>9&8V+vY$&aL zh-_r+%V6jkX*DW^le4}@{7sNt6OcydcS2)*SzSo@*w-NJgL2qOc5s~psqlwXD{g@8 zw3cXr*f$_a`FryFJzBqUv`|x>tz^W~aDxRGZE(IVAqi;-Wh}3)YY3?*>>gDV zN|o!05~&UaNl1|2#U&$m+M{6Tx_k0lK?Y@lq1CmGHOel>_JFpZjV`&?qL9;gaW!&H zK#~j~A%Lx`w2?$y{APJbnB#K7kZD|}f+W=yHvD?=iCjUm=Ru9P@5%2XM*p-VG-!Kj z=<);x?AHKYBSRITw!>qnJJM;0y`qXnkLjf>RgfJDlB}~ORN|uQ;`)ZVGP3irx4_>E zC4Vbf#PtJGYEBhHrRMYqqls!UPF#)PfCT*=U&Sw`zLaX5Suu0V%>SBsb0)G{toK`g zZSA%4(|(+G$@;(6$RfH>Qy5XGE1XoAQCL`5QMjt`;lk$&|5W%^;oibSg?|?R|Nog| zEt+4{R`gEMvBgCfi+(9OnuW7-%o*m@=GV+`n&;(6{}$wI$Z_O6VqRzdSMxS=TF&Kc z^6wGLW0s8;hh>k&Z#ib+E$1zl;QN&2ZK4ubinR~d8Nox648N@cDaD0CBJB1=nKOel+!RXH; zZ^LFPyrW<=A$TjWa$1#98g8Et-iE>LOK>|$R*Z%FZ6k+wa#0^K6RF)@86PoUP)moh z@$a(QRK5rIy@#+EVR$u8Dd3i!X42+hv#-oiiqFsR z6}hMbw_a8Sz%)2RpE$*rgR=|ZXc+k8-uwAvY{>E@$edyXPLVL))q9$8tEl(5l|1vP zDsBeX$20H#T2j7#-}Bh}f~dU8S01#aK(J({XbBWv-YglCA?TGR3IdgrMhZ$PcsJ4h zvK;x#Qyf>UEjPo(0T{M=t3D?185J17>a{;TL)!sQvsDLpt3-Q05AeO?!8Z$ z$yCsh_&2WmER�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 F{|`=6=1%|s diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po new file mode 100644 index 0000000000000000000000000000000000000000..a47d6ef44a42ca79132646abadab6a41f10351e8 GIT binary patch literal 143360 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 literal 0 HcmV?d00001 diff --git a/BIN/CC.S.DECL.txt b/BIN/CC.S.DECL.txt index 1839df63..c5c856a5 100644 --- a/BIN/CC.S.DECL.txt +++ b/BIN/CC.S.DECL.txt @@ -3,11 +3,7 @@ NEW .LIST OFF *-------------------------------------- CC.DECL jsr CC.IsLetter - bcc .10 - -* TODO: PREOPS ++ --..... - - bcs .90 + bcs .80 .10 >LDYA L.CC.SCSPEC jsr CC.LookupID @@ -16,7 +12,7 @@ CC.DECL jsr CC.IsLetter * TODO: typedef .... bcs .90 -*-------------------------------------- + .20 >LDYA L.CC.TYPEQUAL jsr CC.LookupID bcs .80 @@ -36,9 +32,30 @@ CC.DECL jsr CC.IsLetter .21 jsr CC.SYM.New Y,A=T/Q, add with undef value... bcs .99 + jsr CC.SYM.Store + bcs .99 +* TODO: AOPS + cmp #'=' + bne .90 + + jsr CC.GetNextCharNB skip '=' + bcs .99 + + jsr CC.SYM.GetTypeInYA expected T/Q + jsr CC.EXP.Eval + bcs .99 + jsr CC.SYM.PopValue Y,A = T/Q, Set value to this var +.29 bcs .99 + + + jsr CC.SYM.FreeBuf + + clv + clc + rts .80 bit #$60 clc diff --git a/BIN/CC.S.STMT.txt b/BIN/CC.S.STMT.txt index baaf2062..2783a988 100644 --- a/BIN/CC.S.STMT.txt +++ b/BIN/CC.S.STMT.txt @@ -2,6 +2,59 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- +CC.STMT jsr CC.SYM.Lookup var= or func() ? + bcs .80 + + ldy #SYM.Q + lda (ZPSymBufPtr),y + bit #SYM.Q.FUNC + bne .20 + + jsr CC.GetCharNB var = ? + bcs .90 + +* TODO: AOPS + + cmp #'=' + bne .90 + + jsr CC.GetNextChar Skip = + bcs .99 + + jsr CC.SYM.GetTypeInYA + jsr CC.EXP.Eval + bcs .99 + + jsr CC.SYM.PopValue + bcs .99 + + jsr CC.SYM.FreeBufPop + + + clv + clc + rts + + +.20 ldy #0 func( ... ); + lda #0 + jsr CC.F.CallNoRetV + bcs .9 + + jsr CC.SYM.FreeBufPop + + clv + clc + rts + +.80 bit #$60 + clc + rts + +.90 lda #E.CSYN + sec +.99 rts +*-------------------------------------- * X = KW.ID *-------------------------------------- CC.STMT.CPStmt lda LocalPtr Locals diff --git a/ProDOS.FX/ProDOS.S.ILDR.txt b/ProDOS.FX/ProDOS.S.ILDR.txt index 1dd3c6ae..1b3bebba 100644 --- a/ProDOS.FX/ProDOS.S.ILDR.txt +++ b/ProDOS.FX/ProDOS.S.ILDR.txt @@ -3,136 +3,87 @@ NEW *-------------------------------------- ILDR.START jsr MLI check for file 'atinit' .DA #MLIGETFILEINFO - .DA gfi_list - bcc gfi_ok branch if 'atinit' file found + .DA ILDR.GFINFO + bcs ILDR.ENUMPM - cmp #MLI.E.FNOTFND - beq ILDR.SYSTEM if so, continue loading interpreter - -ATINIT.KO jmp badatinit - -gfi_ok lda gfi_type + lda ILDR.GFINFO+S.FI.T cmp #$E2 is 'atinit' correct file type? - bne ATINIT.KO error - wrong file type + bne ILDR.ENUMPM error - wrong file type - jsr MLI open 'atinit' file - .DA #MLIOPEN - .DA atopen - bne ATINIT.KO error + ldy #ILDR.ATINIT + lda /ILDR.ATINIT + jsr ILDR.LoadFile + bcc .1 - lda #$9F max size = 39.75k ($2000-$BF00) - sta rdlen+1 - stz rdlen + jmp ILDR.MLIERR - jsr MLI read 'atinit' file to 'sysentry' - .DA #MLIREAD - .DA rdparm - bne ATINIT.KO error - too big - - jsr MLI close 'atinit' file - .DA #MLICLOSE - .DA clparm - bne ATINIT.KO error - - lda RROMBNK2 enable ROM +.1 lda RROMBNK2 enable ROM jsr sysentry execute ATinit *-------------------------------------- -ILDR.SYSTEM lda /dbuf search directory buffer - sta idxl+1 - lda #$04 start 1 entry past header - bne H2434 always. +* BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF +*-------------------------------------- +ILDR.ENUMPM .DO PM -H2432 lda idxl calc next entry position -H2434 clc - adc dbuf+35 inc to next entry address - sta idxl - bcs H2451 branch if page cross. - adc dbuf+35 test for end of block. - bcc H2453 branch if not page cross - lda idxl+1 - lsr end of block? - bcc H2453 no. - cmp #$09 end of directory? - bne H244D no. - jmp nointrp no interpreter, go quit. + jsr ILDR.EnumInit -H244D lda #$04 reset index to 1st entry in next block. - sta idxl -H2451 inc idxl+1 inc to next page. -H2453 ldy #$10 check file type. - lda #$FF must be a prodos sys file - eor (idxl),y - bne H2432 if not sys. +.1 ldx #S.FI.T.BIN + ldy #ILDR.KMSFX + lda /ILDR.KMSFX + jsr ILDR.EnumNext + bcs .4 - tay see if active - lda (idxl),y - beq H2432 if deleted file. + jsr ILDR.LoadFilePBuf + bcs ILDR.MLIERR - and #$0F strip file 'kind'. - sta pbuf save length of name. - cmp #$08 must be at least 'x.system' - bcc H2432 else, ignore it. - - tay compare last 7 chars for '.system' - ldx #$06 - -H246C lda (idxl),y - eor iterp,x - asl ignore bit 7 - bne H2432 branch if something else - - dey - dex - bpl H246C - - ldy #$00 - -H247A iny - lda (idxl),y - sta pbuf,y - cpy pbuf - bne H247A - - jsr MLI open interpreter file - .DA #$C8 - .DA opparm - bne badlod - - jsr MLI get eof (length of file) - .DA #$D1 - .DA efparm - bne badlod - - lda eof+2 - bne toolong - - lda eof+1 - cmp #$9F max size = 39.75k ($2000-$BF00) - bcs toolong - - sta rdlen+1 - lda eof - sta rdlen (read entire file) - - jsr MLI read interpreter file - .DA #$CA - .DA rdparm - beq H24C8 go close if successfully read. - - cmp #$56 memory conflict? - beq toolong then too large - bne badlod else, unable to load. - -H24C8 jsr MLI close interpreter file - .DA #$CC - .DA clparm - bne badlod hopefully never taken - - lda RROMBNK2 enable ROM + ldx #3 - sta CLR80DISP - sta CLR80STORE +.2 lda idxl,x + pha + dex + bpl .2 + jsr sysentry + + bit RROMBNK2 enable ROM + + ldx #0 + +.3 pla + sta idxl,x + inx + cpx #4 + bne .3 + + >DEBUGOA + + bra .1 + + .FIN +*-------------------------------------- +.4 jsr ILDR.EnumInit + + ldx #S.FI.T.SYS + ldy #ILDR.SYSTEMSFX + lda /ILDR.SYSTEMSFX + jsr ILDR.EnumNext + bcs .9 + + jsr ILDR.LoadFilePBuf + bcs ILDR.MLIERR + + bit RROMBNK2 enable ROM + + bit RDIOUDIS + sta SETIOUDIS + sta CLRDHIRES + bmi .5 + + sta CLRIOUDIS + +.5 sta CLR80DISP + sta CLR80STORE + sta SETTEXT + sta CLRMIXED jsr init jsr setvid jsr setkbd @@ -140,94 +91,265 @@ H24C8 jsr MLI close interpreter file jmp sysentry go run interpreter -nointrp jsr MLI no interpreter found,so quit. - .DA #$65 - .DA quitparm - -badatinit ldy #6 - -.1 lda atinitname,y - sta pbuf,y - dey - bpl .1 - -badlod ldx #ILDR.MSG.SYSLOADERR-ILDR.MSG - .HS 2C BIT ABS - -toolong ldx #ILDR.MSG.SYSTOOLARG-ILDR.MSG - jsr ILDR.PrintX - - ldy #0 - -.1 iny - lda pbuf,y - jsr COUT - cpy pbuf +.9 jsr MLI no .SYSTEM found, so quit. + .DA #MLIQUIT + .DA ILDR.QUIT +*-------------------------------------- +ILDR.MLIERR cmp #MLI.E.BADBUF bne .1 - bra * -*-------------------------------------- -ILDR.PrintX bit RROMBNK2 - lda INVFLG - pha + ldx #ILDR.MSG.SYSTOOLARG-ILDR.MSG + + .HS 2C BIT ABS +.1 ldx #ILDR.MSG.SYSLOADERR-ILDR.MSG + + bit RROMBNK2 jsr SETINV -.1 lda ILDR.MSG,x +.2 lda ILDR.MSG,x pha ora #$80 jsr COUT inx pla - bpl .1 - + bpl .2 + lda #$A0 jsr COUT - - pla - sta INVFLG + + ldy #0 + +.3 iny + lda pbuf,y + jsr COUT + cpy pbuf + bne .3 + + bra * +*-------------------------------------- +ILDR.EnumInit lda /dbuf search directory buffer + sta idxl+1 + lda #dbuf+4 skip Prev/next Block Ptr + sta idxl + + lda dbuf+35 EL + sta ILDR.EL + + lda dbuf+36 EPB + sta ILDR.EPB + sta ILDR.EITB + + lda dbuf+37 FCLO + eor #$ff + sta ILDR.nFC + + lda dbuf+38 FCHI + eor #$ff + sta ILDR.nFC+1 + +ILDR.EnumInit.RTS rts *-------------------------------------- -ILDR.MSG .EQ * +* X = expected FileType +* Y,A = expected suffix +*-------------------------------------- +ILDR.EnumNext stx ILDR.FT + sty src + sta src+1 + +.1 inc ILDR.nFC + bne .2 + + inc ILDR.nFC+1 + sec + beq ILDR.EnumInit.RTS + +.2 dec ILDR.EITB + beq .3 + + lda idxl + clc + adc ILDR.EL + sta idxl + bcc .4 same page + + inc idxl+1 512b block, 2nd page + bra .4 + +.3 inc idxl+1 + lda idxl+1 + cmp #$14 last block read at $0C00-$13FF + bcs ILDR.EnumInit.RTS + + lda #4 + sta idxl + + lda ILDR.EPB + sta ILDR.EITB + +.4 lda (idxl) + beq .2 deleted / empty + + bmi .1 $D, $E, or $F... + + and #$0F + sta pbuf filename Len + + tay + +.5 lda (idxl),y + sta pbuf,y + dey + bne .5 + + ldy #16 + lda (idxl),y + + cmp ILDR.FT expected file type + bne .1 + + lda (src) expected suffix len + cmp pbuf + bcs .1 filename LE suffix + + tay + ldx pbuf + +.11 lda pbuf,x + eor (src),y + asl + bne .1 + + dex + dey + bne .11 + + ldy #$1D MIN_VERSION + lda (idxl),y + bpl .10 no lowercase information + + ldx pbuf + +.6 cpx #8 CS if MIN_VERSION to use + bcs .7 + + ldy #$1D MIN_VERSION + lda (idxl),y + and ILDR.LCBits,x + bne .8 + + bra .9 + +.7 ldy #$1C VERSION + lda (idxl),y + + and ILDR.LCBits-8,x + beq .9 + +.8 lda pbuf,x + eor #$20 to lowercase + sta pbuf,x + +.9 dex + bne .6 + +.10 clc + rts +*-------------------------------------- +ILDR.LoadFilePBuf + ldy #pbuf + lda /pbuf + +ILDR.LoadFile sty ILDR.OPEN+1 Filename + sta ILDR.OPEN+2 + + jsr MLI + .DA #MLIOPEN + .DA ILDR.OPEN + bcs .9 + + jsr MLI + .DA #MLIGETEOF + .DA ILDR.GETEOF + bcs .9 + + lda ILDR.GETEOF+4 + bne .99 + + lda ILDR.GETEOF+3 + cmp #$9F + bcc .1 + + bne .99 more than $9Fxx + + lda ILDR.GETEOF+2 + bne .99 more than $9F00 + +.1 jsr MLI + .DA #MLIREAD + .DA ILDR.READ + bcs .9 + + jsr MLI + .DA #MLICLOSE + .DA ILDR.CLOSE + +.9 rts + +.99 lda #MLI.E.BADBUF + sec + rts +*-------------------------------------- +ILDR.MSG .EQ * ILDR.MSG.SYSLOADERR .AT "Unable to load" ILDR.MSG.SYSTOOLARG .AT "Too Large" +ILDR.LCBits .HS 8040201008040201 *-------------------------------------- -gfi_list .DA #$0A - .DA atinitname - .HS 00 -gfi_type .HS 00000000 - .HS 0000000000000000 - .HS 0000 +ILDR.GFINFO .DA #10 PARAM CNT + .DA ILDR.ATINIT + .BS S.FI-3 *-------------------------------------- -atopen .HS 03 - .DA atinitname +ILDR.OPEN .DA #3 PARAM CNT + .BS 2 Filename .DA iobuf i/o buffer - .HS 01 ref# hard coded since no other files + .HS 01 REF *-------------------------------------- -atinitname .DA #06 length of name - .AS "ATINIT" name of appletalk config file +ILDR.GETEOF .DA #2 PARAM CNT + .DA #01 REF + .HS 000000 *-------------------------------------- -opparm .HS 03 - .DA pbuf - .DA iobuf - .HS 01 -efparm .HS 02 - .DA #01 -eof .HS 000000 length of file. -rdparm .HS 04 - .HS 01 +ILDR.READ .DA #4 PARAM CNT + .HS 01 REF .DA sysentry -rdlen .HS 0000 + .DA $9F00 Max file size .HS 0000 -clparm .HS 01 - .HS 00 -quitparm .HS 04 +*-------------------------------------- +ILDR.CLOSE .DA #1 PARAM CNT + .HS 01 REF +*-------------------------------------- +ILDR.QUIT .DA #4 PARAM CNT .HS 00 .HS 0000 .HS 00 .HS 0000 -iterp .AS ".SYSTEM" interpreter suffix that is required +*-------------------------------------- +ILDR.ATINIT .DA #6 + .AS "ATINIT" +ILDR.KMSFX .DA #3 + .AS ".PM" +ILDR.SYSTEMSFX .DA #7 + .AS ".SYSTEM" *-------------------------------------- ILDR.LEN .EQ *-ILDR.START +*-------------------------------------- + .DUMMY +ILDR.EPB .BS 1 +ILDR.EL .BS 1 +ILDR.nFC .BS 2 +ILDR.FT .BS 1 +ILDR.EITB .BS 1 + .ED +*-------------------------------------- MAN SAVE usr/src/prodos.fx/prodos.s.ildr LOAD usr/src/prodos.fx/prodos.s diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index c498f7d8..1442427d 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -330,7 +330,9 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals bcc .1 if ok, read next block. .FIN -.8 jmp $800 jmp to "load interpreter" code +.8 jsr CROUT + + jmp ILDR.START .9 ldx #LDR.MSG.ROOTERR jsr LDR.PrintX @@ -987,7 +989,7 @@ LDR.SetDevID ldy #$FE check attributes byte. sta devid rts *-------------------------------------- -LDR.Scr80Init phx Save MDR.MSG +LDR.Scr80Init phx Save LDR.MSG jsr LDR.IsIIc bcs LDR.Scr80Init2 @@ -1022,9 +1024,12 @@ LDR.Scr80Init2 lda #$8C Reset 80 col screen ($0C:HOME) jsr setnorm jsr home jsr SETINV + .DO LOGO lda #20 sta CV + inc + sta WNDTOP jsr VTAB lda #LOGO.PAKED @@ -1143,13 +1148,14 @@ LDR.Scr80Init2 lda #$8C Reset 80 col screen ($0C:HOME) bne .1 .FIN + jsr CLREOL jsr setnorm ldx #LDR.MSG.PRODOS jsr LDR.PrintX - plx MDR.MSG.machine type + plx get back LDR.MSG.machine type *-------------------------------------- LDR.PrintX bit RROMBNK2 diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt index f6097e58..973c7b62 100644 --- a/ProDOS.FX/ProDOS.S.txt +++ b/ProDOS.FX/ProDOS.S.txt @@ -10,6 +10,7 @@ ENHFILENAME .EQ 1 LOWERCASE .EQ 1 ACL .EQ 1 LOGO .EQ 1 +PM .EQ 1 *-------------------------------------- XRWDBG .EQ 0 *-------------------------------------- diff --git a/SYS/KM.RAMWORKS.S.txt b/SYS/KM.RAMWORKS.S.txt index 1d09cdba..d4bfd9fc 100644 --- a/SYS/KM.RAMWORKS.S.txt +++ b/SYS/KM.RAMWORKS.S.txt @@ -4,6 +4,7 @@ NEW .OP 65C02 .OR $2000 .TF sys/km/km.ramworks +* .TF ramworks.pm *-------------------------------------- .INB inc/macros.i .INB inc/io.i @@ -15,10 +16,11 @@ TmpPtr1 .EQ $0 TmpPtr2 .EQ $2 Type .EQ $4 *-------------------------------------- -RW.SAVEZP0 .EQ $800 -RW.SAVEZP1 .EQ $900 +RW.SAVEZP0 .EQ $2800 +RW.SAVEZP1 .EQ $2900 *-------------------------------------- -RW.BLOCK .EQ $A00 +RW.BLOCK .EQ $2A00 +RW.ONLINEBUFFER .EQ $2C00 *-------------------------------------- * A2OSX.SYSTEM relocated at $1000 !!! *-------------------------------------- @@ -27,14 +29,25 @@ RWBankSelect .EQ $C073 *-------------------------------------- RW.Init >LDYAI RW.MSG jsr PrintFYA - jsr RW.DetectRAM3 - bcs .10 - >LDYAI RW.MSG.OK + jsr RW.CheckRAM3 + bcs .5 + + >LDYAI RW.MSG.RAM3OK jsr PrintFYA rts -.10 lda #RWBankSelect +.5 jsr RW.DisableRAM + bcc .10 + + >LDYAI RW.MSG.RAMDISKO + jsr PrintFYA + rts + +.10 >LDYAI RW.MSG.RAMDISOK + jsr PrintFYA + + lda #RWBankSelect jsr RW.DetectHW bcc .1 @@ -95,15 +108,80 @@ RW.Init >LDYAI RW.MSG .9 jsr PrintFYA rts *-------------------------------------- -RW.DetectRAM3 jsr MLI - .DA #MLIONLINE - .DA RW.ONLINE +RW.CheckRAM3 jsr RW.ONLINE MLI Online at S3D2 + bcs .9 + + lda RW.ONLINEBUFFER + and #$0F + + cmp #4 'RAM3' ? + sec + bne .9 + + tax + +.1 lda RW.ONLINEBUFFER,x + eor RW.MSG.RAM3OK,x + asl ignore b7 + bne .9 + + dex + bne .1 + + clc +.9 rts +*-------------------------------------- +RW.DisableRAM lda DEVPTRS3D2 + cmp DEVPTRS S0D1=NOVEV + bne .1 + + lda DEVPTRS3D2+1 + cmp DEVPTRS+1 S0D1=NODEV + beq .8 S3D2=NODEV, nothing to do + +.1 ldx DEVCNT + +.2 lda DEVLST,x LOOKING FOR $BF, $BB, $B7, $B3 + and #$F3 + cmp #$B3 + beq .3 + + dex + bpl .2 + + sec No device found, exit with error + rts + +.3 cpx DEVCNT + beq .5 + +.4 lda DEVLST+1,x + sta DEVLST,x + inx + cpx DEVCNT + bne .4 + +.5 ldx DEVCNT + stz DEVLST,x + dec DEVCNT + lda DEVPTRS + sta DEVPTRS3D2 + lda DEVPTRS+1 + sta DEVPTRS3D2+1 + + jsr RW.ONLINE + +.8 clc Success!! rts *-------------------------------------- -RW.ONLINE .DA #2 +RW.ONLINE jsr MLI + .DA #MLIONLINE + .DA RW.ONLINEPARAM + rts +*-------------------------------------- +RW.ONLINEPARAM .DA #2 .DA #$B0 Slot 3,Drive 2 .DA RW.ONLINEBUFFER -RW.ONLINEBUFFER .BS 16 *-------------------------------------- RW.DetectHW php sei @@ -414,7 +492,9 @@ RW.BLOCK2.END .EQ * .INB usr/src/shared/x.printf.s *-------------------------------------- RW.MSG .AZ "SuperExpander E, RAMWorks (I,II,III,z-Ram) Driver For A2osX\n" -RW.MSG.OK .AZ "/RAM3 Device Already Installed.\n" +RW.MSG.RAMDISOK .AZ "/RAM Device Disabled/Not Present.\n" +RW.MSG.RAMDISKO .AZ "Problem Disabling /RAM Device.\n" +RW.MSG.RAM3OK .AZ "/RAM3 Device Already Installed.\n" RW.MSG.OK1 .AZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\n" RW.MSG.KO1 .AZ "Not Detected.\n" RW.MSG.OK2 .AZ "RamWorks Driver Installed.\n"