IMD 1.18: 22/01/1996 7:46:34 micro cornucopia kaypro user group disk 35 small c compiler and source v2.1   0P COPYRIGHT (C) 1979, DIGITAL RESEARCH COM$$$ SUB_͌> ͒> Ò> Ò͘~#͌ì DIR LIST]TYPEaUSERDFU GO ERA 5SAVEREN |GET JUMP21wy_H 2*y2\(z>/*/2*: )1wͪAͱF( 8 >1ͱ0ͱj2\:Ґ^H@Oy H H: –ͬ  #H: !  Hù H H $O͐: 2 *CN# x: 2 p&x~+é72 H! >w_: ! 5ͤNkͱ¦ͱxʊ#Nx: ! 2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!ͪ>2!6!~8 =w4!9~ ( ( (  > x (={!5 6>P(ͼʋ>o&M(:2,S()SY|(+! #< 'Delete FileͼY‹=M:!,= (#"Y G!~(p p2͟{_HÎ2|T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎb~#fo: !No Fil> ͱ> _a>(ͱ ͪ~ͱ~#  _2<!*~6z>_ F懇!\2>2a{_:*(Ez(;:=2 /!P!6#5z#(>$ͱ!2:2L>>ͱ [!F#~aw6!"Y ļ>ͪ*[~!8ͱ#2: 8=_.:;<>[Y o$! ~+ H(+!~ (#0 0Wy8 88Oy!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw*| ͔A"F2B2 >( 2_H!篶w6!>8 =Ful>}K"C{2!"E9"1A22!ty)K!G_^#V*C~E ,&-AGMS!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :E B 2>: b# : y! 4 5~yy5 6yì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:Eẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄ ~ (-H()08 80#OzW{_W{_}!9~ɯ2:\>=!\!2,S[( @G:(:\wx2p23. 3T#6SY:(#* 6?Zw?Z#6 :<2!  # ### >!~ -,(A(S SYS(Wx2'̟(g=`O> ͼբ J{ ͪ | xͼ  > ͼ (> ͱx 0 >.ͱ . 6?# AllͼY:ͪGʹ=>2,2("Y*{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-#   35-DISK DOC36-DISK DZCARGS C CAT CZ CC CZM CC CZMCC DZC+ CC DZF !"#$CC1 CZ %&'CC2 CZ (CC3 CZ )CC4 CZ *CC11 CZ +,-.CC12 CZ /012CC13 CZ 3456CC21 CZ 789::ʑw:2E**E}DQ>2HÙ /HC>|ÀÄÈÌÐØeè  0123456789-, .x2:32:G KAYPRO II 64k CP/M vers 2.2 >!2"!2":Ox Warm Boot 1̀̈́!",͈͐ *"2~ >(̈́!4(:.3ʬ.*ì(:.6ʬ.-ͬ!5O ~:.9ʬ.Eì.6ì.9ì:.9ʬ.?ʬ.E@ʬ.9ì:.Bʬ.<ʬ.0. ,*******Disk K35 -- Small C (Version 2.1) Compiler & Source****** Disk 35 is Fred Scacchitti's upgrade of the Small C compiler (Version 2.1) and includes source. He's incorporated Jim Hendrix's additions and added a few of his own tricks -- global initialization option, no boot option, conditional operator, 4K file buffers for input, output, and includes files, and many more. Read CC.DOC for all the details. This version requires Microsoft's M80/L80. *****************CC22 CZ ;<=>CC31 CZ ?@ABCC32 CZ CDECC33 CZ FGHCC41 CZ IJKLCC42 CZ MNOPCCC SUBQCCCC SUBRCCCM SUBSCCCR SUBTCCM SUBUCCRTL MZC_VWXYZ[\]^_`aCCRTL RZLbcdDELBR CZM>efghijklLU CZMhmnopqrstuvwxy.(.$. .2.2.:4(.!s1&{˿~#O/.9ì:.Bʬ.<ʬ.0. ,i6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!Bw!>2*C~=2u:B2~2wE:A*Cw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6************************************************   v36-DISK.DOC[04/07/91]% AB$@W2 fi@T7@Khm0 M(IRL &LG# T+Fqi7i6 a`5 Sqi7itU)!7A he2)BQ $MKOLHdrY9 Å1|F9^3 h4," g7g- o9:D#yciXPzƓe@bM- 6μzamp}Gb,.rp:=4:n',EL7Z򲉬r h@+±@; #>C9`:#80"Ҧa /c;cB7'"<#('P;on4@!H`"p&Ie)J>) -, ȈOc26o$&a$q+!VOCJ҃f(#u uTQd0f} "|$@r5FY*(͓J ` `%`.N/ppG(PiA7~`?Ӝct?f2GSRA0<"n>pB9tSA#h@@҂Vꨊjӂc-ټDV:bDJ/8y4&co7#xo1tGej!~),S3h0dɪS(Z( @*U 8B<" )ۊ .J@xCX$}.͌+۶ ,CP#l.2P " @  vCC.COM[04/07/91]% `)lM/2Np耀f Ph(7@ȈB"#DP +h 4  `g2@6óJ@,i `W@ ? H>e;k+j0$÷@`rL)g!1-EYd Cx|:qZW?O!5(mKvt:? $@M'IP4:}NVh5q.脡f@mj|\2 Z! b k3@al"i@"@B0z!a 1C"ތb0: J (@)TA-K, RlF d&b7dJQ!Ҋ/pIIa{8qM'l?1  CvCAT.C [04/07/91]% @PT 1N$i6D3yt2r7Fh$b< 1Rqr/ つ 'B4FiHt2GƁ<R: ճpd7NL #) SPci(01f v,B F;ˣ H&a c,^`F㡘P".F!g2[S5cq/'he!D)FSQfϽQeǶCy7Ė%`ŏ|0f*&x@n(n=Ԓ3B; P{0#2PV SCc06 Z-:E1Z#hŦ# PIC;P3A#t xKoX60:/l&P2[Cr?LP3t: rʤa "33 eG(F(ھ,Op@EN!eMDv΋M C<'V 'ќ80N<@R541W_|Vf`8 (۴A QG#(K[@Uz#(b"=FhNx=@"K ޽*0> yπX1uMe :ڋDTǀ ?( P :H9 P!0r main(argc,argv) int argc,*argv; { int count; count = 1; /* One line does it all*/ while(count != argc) prntf("\n argument = %2d , argv = %d , *argv = %d , string = %s ", count++,argv++,*argv,*argv); prntf("\n"); /* makes it look neat */ } |t2ZZ)|elaibJd&L)) 2 u~p@pha WX  &٥xh&]@E>K\72p|y,w!sF<j.IJa 3@ =%  ;w5Υ؀bKwhwqڈE4)0B:^nG*{\mշ3* &CtD`Fv15)3Gx _C9 noH0o 7*`8u 0:0l !AØi b p =800S2@*ḝT[`{&@L`0Aϣ-~)%4oSWW3}ϕ( @ }`c~7?q}BA#>ex?;/Xad(<p::H164p1`: 2p7A0b@(4(h93+29k*3Bfh`ah6Xu=(,xl($( 9h3/Ah4C4PqhLaPa~(>X.habAm3kMhޒ=σ>-Ge7YQ9@<1oFouԈ<| j $n^ }fopx!&Goht A`lAP3;σ!xq06C8cdhRgpHKIgy~Ҧ^cuqPMS`cXohIѹ>g^2` O47(\m` ;_#o+wtAm5A䵽2xg,j@ZAPZv:r'1Pj4)ot2`Wt(a_s)unvhty?VuhaOA'S2fDWMu}ueLYX?uvqdYH4V(jF e3߾ \P\}sY=q\Qu1\4a hWHp@h\ heJ]ݳ&m?e|H@ Y`T\4`߸i]p:  m) H&`22!ل" $0Ef^)^X2;C )}hc=ӵiw a؁@HHF'A,UH!Pgl=&p>߾XZiPC;2JTHsc\Jg3@ќh~p{zA G\kQyͫA(٤2 rJMdDHy5siG ,oR>q#궢'uahiG^|s(iOcnRvف̪咦A^wHdwaG*)O H l?Y3dk0q#gd~kf'xslF3[08=t^S]#J89]!D^#5p* q( KEJᬸ޷Zk`jHy$k`}-E2@4#4Y,=R/Nh;BX'Di9̴[,#JT2`0JI4}hzp,0xZ)DxCapG$"בKGDMhZ2dq"A7785(: ;27`ۃIЧ |@ă{TD ~HP{>vSC3#S1l`x'([RXf#CهI[ fpXkɳ3%p`9Ƀ$FCq4l%q0LR[ɨDKH4XDDK@HK$K3I4K4,4K-i6\hsx&4x kvx(Cx$Hx'Mx' $:3(<01-p%-h0܁h4`8lt僀.|h97W pIfX>ƭ/h: [~h+4 |u)#@'/xlZ*c4 ۄy[zn)c!ɲ+Nc,ĀV ]x n2`+j$V`%&žY/ a`Xa@  j p8q(aaŽnVָϫEX\`Zj$ag6V(/2>"jdBkfhdD"M=cv.hh j؞IkVՍPm W3 o Άn²5&0H8Խs"~'#@햱;Uhd=8[ NRh;Q0 5 ڦ(ĿBMhhVL#<.n+8&u8?,9mdH8܃<=h4Wx80a흻.8~ho91YB?,޴ub[F|znK06o'GՅd[Pl`z['@e\0M&Mxاl;~t`b[lד&BkHuFm'MvtWw2jɃ27GbγL3;)6uEBώAv5t2tC:MC;2,^eH6g禓",=_Sp5lxXOKcs>ax+4E 9 H`2*qfh\`䌁SFҞ܃(8^i)6{c H9-O03 sHTJ= O08Dχ35p+&cSC5jSB\PTHd-~̨384[*h3 h4:d|h4{d ǘ257 KDz=Aa=cNkzp9(67 f`D3UVwE8Y8Xp+9v<,xaUX,aj:c7/uB60azw0 +3;;YsۥIpgz2tagu&J$H*z8f X,G  5`g24IB6*8DQhQ 9h(aflHfo_qC<>kÉb ]vd96itM+D[)Hj|}Fw9!X Wޒ{oMaT5LTx (CN[s&7Uwnjs:fK7TC6ݶ(>_2`UV>3āH=%e7ZYs&xS'l8x[{:}XPddLU iA{:s9[᭕uxX4Zy'11IxaK&2q2w본}o륒Pv'%GqXè0yh?'d!%l7e`fذfOP-aqM庅zܹf\HPl?-e:,woB !-9Yx ץ17^ T7 Hz89X}E\1v8dH.U qGM8<;b2 ^rJZ 6&Ϻ7"0=|GH7`0||68 jI&:#Q>׏8P^83`g[&l>D_&Z oWXaXW]WPKľwo#&BqɄdH> 2tK8HK2KEQBj]$ܺDCPkK\"_|Z:̀4fW^usaknP\CP(fhacם`: `;2S&AA_ah_+vΒ5A2`oQAJb[ö 6k c?pIO22a`v#=ȢP&<_eA[haHtYsC9cPRC8>kYkIi3R-af`=A!3VqkpjE %gU抰P;qaf9;(Qn\ ȍ7n^l2E፟S)ְ9*C^QEQ#*[z6Xjz)@6`lHP,>X{22`{CV0e^:7OfN\^nQ":zp0w Dd[x ^-`c44>8YIRdW} Ӷ羐ˢiQT`(['IJČL 2`'a^fX,d{a:SuZno%څ>mAgS' XS6ʚFO.C=I~P|S~kef a" 2κP [U835댶|V`-Uf5pH{G[>H>p0TŪhu.^:/ς($ [Ё!σ$ [>4|=K0gm$τ$ [l|XK0Ő$(φ`$ 4XmHU3a$k[ u$ql/llҀ}l}({[Fš*:donq(l2f;y]|nL,>7j#@y#}c)h47b S4mQ8>ુC4v3N4pnzHCl.0h gd52#]꥾gdC2oQ&*`]3㲘`Zngd&XTJ` >[ΰo>9c8k& zÝfo먘o*(ePd=S)5F&}Goug;B֫Ǖ+zL[z˚l̘8al$<s"$ F %?|N2`-,&&`0 7|n1C[P?wanf(e0 `q88POifP&L*i5i2Ci7B24R`|GN[8 GPP#XX88&fPNLZS7 )cd{=is< sPE #8s n` MJHCfh@`G5 yT:v:ZDI8_i`I6z [(eZ; yNk۽[Jrax,<8laa)UqOsՖD>j`!%|g1ؒVg me*_3 kW4FC JR>ꀉ˺! ,/u> 8f,ۍ5nۍAuYs"&X.k@IZ05WlUw*-~f+8fn'$:scV+&8!, 䔲`fh 1u5V5Gv)mBd-_X*tŭ,9vxd*FR<([aȉ²kvb2\6}},"h'>('LTTdRc=|[A^$"*"=_mGte#(mGYKm̆+FW {(E".  ኸo73t [zO""8&sݜW]s)},@ gdXIm$P g>8 @(p+&&)m& vCx4:+ECsPfk0M;IpH+DНo| v@ziGRlhwe0L MJ )ˏhl?BFf]Ա@[:H|ޤa ]8N&H' &˧\|P kIՁ'{a^#5A܎u"VC2`l|Su:x`QI sDRWpSYv|nf.왲XIĦfC@(~{52`?808Da$4+g2`C8Q)18,C4J爳BlXɐ? I&7`umH0p2`勏 ؂eAld4t.Ns_P.DJY<ܛ^NPaN +&N 9ԂԈrFE4Sf,k2O:dzh H'*`$p%-%!("Ԓ_k ͶlJ"p"  x羐ˢ⧖z18H* i CH~,?H'~`#&$ , Ĭs?>$2`' *rd0C&P0%%C/DI),UƀH*(,)s$~x 賬mȘƞ0^X`ie d#$df8$p*h<|hmpRd*LQ4~ASRd&.h5/I9ØH5/Ol|`Snr865΋$BckZ?Xf8_M 2[nr8@2E]Qw0WM0qԚ'ܷ*M:G)+&X))Q8(J.v"?D\%aP m2`58 _I8s:\e^#5,ƌdm*#5l')G%[.Ios&P)qY'PF&?ʏI:>jW!1h.?$\%:2c.>uV.^&]ԍBv]Ta)\.5RgQwʕ %T8ʵJϡR/[Ҥ2wCk1k4Pa碚gQ=&\6ċ^Ũ( m <0p91H8GiN'x`t.0*M#+/ N0Kr*;~v:*kԗ8f+JH1-"AR]8HY9`9pVuX`iuPrJUUt^,rmdW&d@2!T ;6P3WC]-nmԭP+#& yrn-vfaC $ a2qhMO!""ꊸo ,8Hd'Kv ,Li }"d)$h82Ho `&2EH)(*Xx46Se<gW}4)S72`-feOT‚ACc0Adf8?(:rAd ÁPea MԜ nR6 G8"7 5/-7rӶCH3U :@2G 6E`6(EGFeP@2G!}xa`6(lPGP^w x,Oi({Z?u2G !(:{Z? h72g8.r(7LLJ72G (x{Z?''!)8!b[ᯕc&30&r)u8eq⿗ ,[>4E) +s:)14(14ʬ2`8}A`3,(1Hx>L5@,lnRd1Ί(K4a<Ƀ:+,oڭl賬2``1Xᄆd$+0T(fH4xB'̠%׼ Aݖj,(:K^2|'F|z~$"l +B0-6!XG.jsՠϴRo86h,rxI6 GO`kne038,O}&&P3[K eB(ϴPaEru6k%2ei@3_2o`q0DSXa2)3;ḱ!CL9mNQCl_H'eZk!",]N!""U+Ò)3C&BXdʠ*CUNh*aØXAd"H+h8;0XUNփ`UNØXAdp'&qUN`'(#8XAdp)Bdp)f Bd'(#884/H!'n(@,O36  Fh<ϴ0&/)8!;)qH!0&;jCd:b")ݐ"d%uݐ"lSH'X$x$l&"(H'b40&"$p!N"M&BW]/H!0&;$q쏘mH'b40&/"ݐ"d%uݐ"!0&;jXeu8 KCdv;M&BW]*40&;jOXEuH,vCbRb")Ю3xCatq#Cd퐞A'K q#Cd! 8,W0r}$m*!s LW='(No85qg(18sbTP3`kI68L537Ԇh q+&i?x8PWb( r 6ah^&H8x"Nm})w؉g/Nk4>N4#4;0; Xč 9 m4c0!Ʊ\'MFL{ڈ61b=:<󥁀f @8)X3c Oʵ%OATBЎ}NC)7cg1xOl8ٸˆ"bx- < XVCx7ã]G^&, #]263OڻhDﰯ3Zs* P:#L4@1)C7039 ,)L3tfhL#p6'S`FsjHN) ι>O׺!$)Fs4Up6]u6ZɽgG4pš1Ҵ-K:|^;\7\'L2kĬ0͐#6 # a`j&Y&L2i,a/=Sy>[b?@QZ㢠>fтLpd5fU `j eM!\IkGa)C0;6":[;3yqdTr Am$8/dnVs4U*4ei"RQճruE^m\Tkpз'lYd@hBd6wXk0hw:@U/txJlLj6| O9'@sBP`uSMBu >skw] IwO7.<a h qϵ=f*/5#fgI1 ,=t7A?*MOv"k_-<хtaXr N6duJt#ncfd4Z.޵n.a5(l3Lwڵfy?멭ZחyМCͬ9o(ۙ[ ?h!3٭ +$"ɯY !0i r>(B9x߸,B+!C *'Xh ۆQTa)+ʰlZÍRIX>#$G&"3q&X- +d &px=/Lxe8a8x_8Y="`=x+ H<x#z_! YJ؋8dp'#<$$t]84Hu| 8>727(8ta~?x3O7"@3xdrאpdk@.{){4y4b >7Y9\pP3 QQ8dP9@OL`9O@lXdhXdlXdw3a9^Xf9Hf XdXkdhkXd^o6S7N8dhw d8>x7K9pQ8dO0dXV !I XdlXd oQ{&9CG`@ 88 zya l^ʘo D-'ǬC%12' wxlaCXnC `*B} gdugs1d6#q:ZĘ#P@(x~$/@SJ /`56é='"YxuDCRH8$U0؉)B&fLpFBT H"9pH!8!PBpT i*IÙC !!RJlJQC6MBPuOF`0åQTF C fH\^Yv=e[ *ӣ븅ėT81P`0M?דF(iu# YCePѹJ"l碏iD& )q@{ .2:zü ̏z 4e uH%OYDLvTCKK$ӻ/̊8vCC.DOC[04/07/91]% ABPm0 h  3n:Ny  SVKbj:m8űsj9 6(9 80m!Ct y,(7G+ ٶ"3 !O'Pt\9!HB#89;q6p"196r$ "Cv6 #,+<"  Cf!Hz"޵ SXarK0Llq D<Ž #>ٴٓM#H :1-ԾP0Tۗ+(e.x7 @ ȣ|C> (&൅ (Ԡ:qDBk:RS¯s ڜQCC5 蕋9*, _ؚPEW@RsEEKǻ@Hїl@X t79Ƅ9:#,hd򑙼h-4<Y˃X6ڻ;E;;X ;͊IL9 긗|>5D ALCs=@Yd=z0H,PՕ~2_JƏэ ˃8$Z$!$C$V%R89%JU W9 ׏[:0807(̐(ya2!9[h:84bX2+S@);襃,c 6cଢ଼1ʻ5|chkHf@Xkf \l ' r=D $7vK5rO9^o-XOӐkpB!`)d|Iy 1~'FL LމHĀLucfZD]Tؖ <+%RN_=Ħ'r(?[&x! 22 WuOMڇEd"KYeƮfP1 dB; )L,H" @hDpxoܢF[ʳpxɫ rG$d} p2CJ8nE*d`n1шRdeUf)zie17)r@rL(DfP깕)|V;Uha 92=f(=(b*0eyh ʶReƆ3TE/ntrtq#]tWqXF)xVYV}| 2ON=<؏]/ 7*`b-_۸4؞8tƐc)frp"M{26$\,sCSY I8|  *A [cE-Q i66ơ ૯H6HLEHʸJM1a:3`;.@ 1.hګ#`Q?já 5|E𤌂<(rEL@ _يd%Y2$[B&%_&aMbcM 1JLL>XJM:j:Gi37ªJ$nفwۜ2QГH&z x'98!S ѝqɡ2I/ꤎ+4ɝ%KT?hMMԴ 04\'w6ɫx.N,1q7 &-8ӂ}B(0+!Oys&+Y=橔 :\S11K\_ ʂ_:kLh,Gɗt`79(tS")) X69 gG膻 .&]Fo ppقi/F&k`6Jvl ^nrGnnnmv٧jmBamZѾaveSo =x<; 2pZv.%p.>n肄 Xx&Y*90 4"L>l7R8p6N%Дs7P̣.#T&!3.3 2o:$zZ*m$np)UH($x''`+H*nRp6_LOMqK r,>er0rG.%q'sֆlgzL D"Yrː78 5F3ΰوРBˏP7?yiÐTJ*d.BȈFFWU {HH̶ u?M8<[ee ,Hxҵ$ :<2wGXp8eFΆ \D'-ҹ`6J"ܞP`cg |F:7(7 ,=H!I lXPjጣ :*:OƐ; cA#B˪ è1I9SEaPKַ0XH! EhBR8@T9#h0RhˠL 0Բ8`2)8/-; 0ͨ2K7@ <<9 C2CW<^Z]8*YǓ,4? 97 ҉WIY9ہ͑'՝6+ ܖ dH& eɃY<x9>gU583o0\9C#t'UT6nf~.r'w,S%tэ̡ٛAOtט ?:7 Oڏ9!kl<%H2iN"X$9VSz! X3(-⍞kCYMʰ@e$"0lFɸI}ۙ)Jn_4PT !Cyz ͅ)83dN,` E!\Bri{ΪxMxFoN;7FZ.9 -3 "άr{m$T@1c7d *~ޚpi:YC_D##s $-W!ڐަK[9Ț0r& ޶x}Oỏ%AT[wDGzSAr`ն+I$Si>F j|r]A@eRp#9/جI&fbzve)f fd 3P{K_gY;\ v'*,Tz/IfI:ϴy ]‰A"u*EH"`0 =R 5Y bK!& ёHE)H':=@"$`"H0Q&r!q+ [bXEٻ vH M*VY |&MT4pWt2RR=cӏX:iu[6@0iR9Nʮ%wD#;`᚜Ô H*a ]#Q/$qlR<(kflv<>WVǜl Ѩ@`mmm%#nDAN։ qX-Bnf`Nm`)J6@ 7;hL*+&D:!2p[н{U چtp;4HNɠH@98p_p0-RB6*z8#J2=.*3 w}XbXe= =@ ^ ϸؚ?b \ҡ #b Wr@.T}e_x=; -vHU ¨& !ծ&:`+ 2.^#POl<RQ |Bh?R : h#TG/%l tlB o 9prܚ,ɯy7f#45t zh*}`vR9kүNm=QTr&&$.zBv"Fw~P6rԯMF̛f @w ҍ;jCV ڣ7</ I $!e\˪~e40_Ze*- ȁ.$  [@ˆd#ƅSE?U!Ie[ !\m͒k)#fv4ףc a#`@ x3b~i)e./qWItV?(|FsA72gòcXPvt|I!>m_r~p+d{tGu3322A'`a#sUBx spD,I:0_H-!_+E#)`*@$1R`^&Hbr+`Sx($-@숩 +Ț.lp)8?A\"?Љ@>?$?(@ =rȽ ؆pB,:s'rt$?a X Cã8@7 #j7 {R%9Ӵ<DCQixU3*@J?`MTCm25gXs@5.a2 b (ʈXss "h! bc& 7E}VT]ؚ bu_WxUh~"(v Z']wn-Seb}bn0W$VjTUyc*MB7i ҎZ0Avք3l/@é6Whe^0g/&ah! ,].r.~)85#bլ90sHIY!W˫ =8Mt4Pj䃚r&CċFivf2 PÖsllgkay(!.#vCj=9yw2A*auKk}㺛b-Jɓ'Ug ߕ LΡ:2pC./!$ƓIW Io=Dd<j>!AoƳ?U3Hynfewg?joo=V /:#I4wRX< (8:8&09;< #P*' 8ø9X c* -* 4Ax+4ƸD("#1(6!@&J|Tr&TG$'7H'Y"-S(# 0>#?(da@E;XEqr82dNG%ǛrHGP*(1v T]+hp)'2} ir𮐿TT?&>Y:Ŭ[LQUBzIp*Eĸ,l%A&#iH0Gx#4Iawa X$A#ʐĦA,+9; 4\,K@Ti<?n oD'&` ɜD KEQKP"p"L\DƓHDLT(#L8&I L;MLL\LM0)hL` TӂԄ4t0TLX)$ρMwM*On/%@Kk| B l7@3.` Q, b *(lo!F5 _q>Z)© "{)476S|C?9Nq%vR). iRIӾ H#᜼IFN%Hhkm$4:H hb)2A!Ȇ %2dh8u+Hs)\a;Iw7]#4+t@:Ms^nOhΣBHzE )eY;0VeVżhA\l-p*g}.4r$I 9_u@}φ`A A)tl_k c /@@ 0 'RS4n7AQuŻ6] \jv=uxZ‚S abu])ԔjZ),iL)1vCC1.C [04/07/91]% ABTT*ͦaZCӁe9 ѣn D h:#@JAd$q@ra$Fi7͇S!@"9 qEPU*Ձ. $m4fXye7Nb ټa3iCOTLֱ@[+<;N>@4=|(<>> > "R %B91@;cJDçFdSEJ 7#=m`\pyĥXm1}[~76ðor|*/Lk=HaD#R`TrO%2R=7"Z O~->u!HxRR6+mܵ>rT@<ٙ! ̮ Ad5( τ# nކeFB$mUh&ۗz ٝ=$HHt[*TTM7&cgre󭮓K+_^\U*b_N fy1of,i}^~o5L`ƋۄUtǸjx ;iՍ.aHcJ]kZ'1n> LKE0Z  vCC2.C [04/07/91]% ABTT*ͦaZCӁe9 ѣn D h:#@JAd$q@r n1C(Ds:$@Qj#]V3XPH5x:FfP fS 8Rfcls9HfLfqI!t0eAU @H hiݫ+ac$giΜ Vۚn7fÝ_bB(Ae24B)*HR$E5{|6@ۍؚ bsmkx7T@H?Os b`'>=İݨ03 Ӊ r66 C9GTW# Όr\'H}&a#6kq4*%6#T0c*#޹aΫC R6 *ԍ=5.B0p5̛3`SJ2H;&RAgMT]2 /M5K *!pƶ*[aI^ % j Se;/CLJDDuYՃUR8#ޭPt-v5WaVr]H7T X(3Ck2ʱ#RLzr jP@\!TI)-8z_*2 +=AAP8hp^Pl46 ,9 73ͳz66c:; 4 7B122]'>c1f>`v1ihLH]hW3ּkA4X4@X#:m4Xe3\*4Xѳ6a(ΌNM-3Ԟ0Bτ҈V=0n:5-Nhӄa9lgB!Wcj~o!Cj>XA?7m %ʁR*Xpf Apc-"$H-hHy9CbEn 9P_ U|diI0b(0r2LD+C"}K| F@PeA)reP<Z T&˜* ad`X !4#I$$S m-­urBpQ&ddL#oI_ PuӇ w%;F>UBݬ)2V\հ \l-s+dR. &SQ`W+z{(a\(`bHrNcE? 2/=M (5s~MfNyp@蘐ld7y9D9t#))\}?A 0D{혅18ve> ,-uSӇ*z:h Ŗd*D&?ZlKamh\zB 5m-ZDaj8JN1` %eRFpFŲ[ b#3z خ(oSB h(-)#TU\&S7ңac259C43ʏ2;S/r87[#9c*CC7.SH%b=/Y(s-oJcX *RBޔLJ/ /S( K2RDѕ27!@S-%9\O_?+ 8dبh&1I&DDJ5vCC11.C [04/07/91]% ABTT*OSi7#)n9 S/A Ƞr3ł I)FNTm0-Gb܌ HB4| &K2RCa ( yAru6h1t2GBEpa1GAAR!Ȅ[A]>'&3^cҍ"aa+E9 s-хbx@*mg5k2/&o8Z|lU"ev 0%61Z9/kژ" "p&";`c 7a@+)A`bC W VC G$AH|E 36œD#"K0ȣc H(W%2h$"D;2<9 ED+c`:LLdK)@T3Aa bC(ct$ 'I c9H3#JvCC4.C [04/07/91]% ABTT*ͦaZCӁe9 ѣn D h:#@JAd$q@r! n1C(Ds:$@Qj#]V3XPH5x:FfP fS 8Rfcls9HfLf " CLfe>\3 L#5NF3,&ӡş2WH4j7y34ْ A /(p\45dVyh7- Q42ȁ-ӥ!莸 (ٙc[~cXA s/"6pwl[rj226&cӓ֬t: 0˲ҕ38-"zN *KAk('kb̎t.O#1ݢs.xgxP7Cs%兰`8"zߟ3K w':6H.C|#>BxFOH.Mu  A+d@zn;frrZt{K p[6q h4ݏ3D 4 Lqit4Ҫ^Rz^VޤzQe+? (5|<`S67#_M1}m&L]D)e:^H֧fI&Ք.5`p&E&0ZhY^ Mg%R"a1C/h% fu%y ̥cK%~ Lu9O ԃoLu?Ŝa H6ЉԢa#/@/?)jj;"uS@ύH0b فkr@*&sg .`њ h7 .Yx-. lۻl AL&iP l p 490A7A ! IP ;̯ O*JVKOE@RCU#-\9:ă8A<+#HΉ7@p4ىKJӇ7XNhS ¨&Ln lVֈңjۄHb (،ِL#lXK攩)9͊Uk'Z^%DLWSggP!b@)&=s/S؇8"Y4S:kaHR>i "Bpt`&6l' v{nhAU?Lj>fY#@hcL;&#Hv1zg^;Z i:< PӰ$X]v E9ApAUƕ*-P`BOs@)&]rdV;u)Bl !!멂 =80T(ih$j'"fz6۴#B7z{9̄HC_CgA/Z_xMOLk{AϹpu ч(7G -}18#'OV@<)#^&A{ϡϫr(ԉ$e>MAHˈRu`94RN^!upkFn qDn/Pm*w5jg{uĕrlBDA_8O69ю?J[d.L q۟ࣧ}ˠJ.X(m,uq+a ~f@eAN]w8wpn>Z9BD#74I 3x&[>*ۃ2cS9[ (8   XAڈXȘ$3(p&&+ " %$jL> @H+(,HЎ" PՄȇ + Ȫ&,,>pHCl= "/Dk!8E@BGHLJLE?@ HPD'DS/MTYEk@ hC|E"4{E@n+w#f\_ø!CB:/pB%-™S »12;hh. -#h*>:>FHȀm B:9!ʛ'D;&ƣ\9C p{! &!01҂\0`plt.(ЦFl_ Ɉ7I?|?(FƐFJ4IJteJH'\.-K @ `6H=u=ȅ=tٗR*!7>;҃r!*Ǎd,| u 1zw@ A 2.jt c4:-#4G90٤JJH`BaNk^KŒ8ČXƷ+lР9lZ`” a!IpQM(#P I 9y4"" o hVs.c !fj~HQ/ "` r a7NJAj-xyt9"gM^;DP{! rd4 U; b dəS.1. "XЀm'k<"wڥ Tz.5ǹ&Aecf$HN3}ZԚba%0~cK=rjp ad(ikℰMeAz6d[TUĦsR0|(BJej K#'$1 FxtOpJJJYWԈaJe 8VD ~, K0#M0xT JeSFUsU~AAfVjɫT7R [רmx* 誾C]vt㇯vCC12.C [04/07/91]% ABTT*Sp4fé 3MX@d7s(R rłQa6f#[Kh&tQR4  :Q27UjJDR-9 ^7b]PCAm0mљe󳹠rM9J$$F=+47!TH3 "g @!4YMH1'*ȠE[`Xj9U o;B`fk% H31B UZf"q@ :NF~G1"&WGXĄO3@ 07@ ":ެ(6)ھ#++p0cX:l@ZڷCDP8zՄNwy"6@5a'4(ஃHxsd rTq|K4HR A#NRI(5s ŏ 4 ކ&A 1t,, sk@<.,ɟR+,7,0Кq:C^$>,?<58Y釵#?E@͏1Ÿ cىS|Z-ER`*`':#W@i`͊ȔHȻ@:·!*(ǡb5Z T0A H * Hc8#숛.kZ=3| ;PE@ٞ#HSyk52"k 9 *ރcl*H-H")΂1:wp 5[ p#".1HF",4 &!S GS>X#JlʌKi!` )ʌf3' ɢ2C$LvpDzŠ$#:%NjڃssgÔx14fgF쉈3(+u9B!&8@kd#;G=Jfߞl I87 8s@`:9rRڽIN0dܐ>?KO i((2#= d֌Ux= $2H8P@qP`8 e 锁 &Q=, QH9>U Q3H8ѵ QbUљ `{{3sҭ(P)$R"S ѝ3?m +37U.u6`S+RS:3ӸR&RuCP}9R9=$=DPmIF6R mRmJF 2TxIQOѕ:M@ UmЈ6RIR]m_љYm+VEiџ|>6n=`Pq6јI 5 @ЮtmeDX*'5dq@A;d%c`=A@+۸kcDjOZ6X_#@Y,-iP۝045x/ **Jdp-^ ufPT +`gl^NGO/jm3”aЧxBmx@ 2mngJ^C!5ʊk@M1|!ÃZE3 HOYof;"<ցǏ$e|Xb R y d !YY?Hg @`sZچBl %AO-"u ѡ;ab#:aZjՏYـ@,CnMO@JV |\7X+-gD5K4%Ѝ[\5@B}p. khۆ.J!N6YdiμwMA1_JYFH\R/r+!VQpaZa{Z'Vj0eV 0H*|7tU5^1.[LD ҳ\ g0HRA6O+yDL%EVMHL'3x0ԙsLN 9+ .Zk|uQHg f. 6Rjq+*+64 /!#:N#J3?Ԣ}?- |8@4pEH# UM;W+CťZ͒)W PX3@$f9Uch6nR7u/\]We$SSyM`$lĽ"28%r!"=--V:XGeX1R^V*]wmrT7=GF>ΔJ7).R9-hVEf|0 F*`0MW4 m~O<ޱ* ^IDCz0tmA*gğ,4G[[MZNkF0J#M(̚~jˑrT>*"_NNTrR(tILd6Nq&PJ҅.ĸ3SO+`(9X'0#*eQ%,Dc !$@+Ծ54 : NRr^ґ& S\ۃ{D!M猈A9E= 0>0+Ҁ&gBK=ij:8'[~4m?tF~aQ#"%3NS X53=7 ,>M56w@ϟ(нS7<#3EWSR("4M*!>%a@ARB%x=D05bԃ?8ԠTUmT䴪k("HWKmRpT#Udi LBDMAX&E8 j5\rtìHH+L6( C8D6Lx4_}=-y:קʭoj۱ܠꀢ9M7u->I1""/2,<ں3L:EЊ9II۔RE4pZj3d1ȪU:Fџ M[.A#BAB:DZFI J\ .G:lֶxC'K須s,dc (wz>P?B^qy jY|??`չmuN*ϳڟ{}&@gG 1&.M'D:>:!Fέz=q~okp911{{#>g8b {{&"1{@4m@ɘK*!{'&'(4 SY3fv% "ᘪ9˒qa Adj@"_}H7ĸP 1{ 㹦 "4;I8ⳳtKHa3FC mFiP@#D8j %UԋNR^(y2&=l.u dJxR69&qal$@xBT>0 ':uQd7ѵ*"dZ^%^yę 8[ʹfcb|QQ2"% B+*194PTM"amR/!CgDP*TBSPB Ae\ƒz+`4Yb?Z#ҫd8_%A"ࢱBíoҽBIID_C5r*GC(Pʓ%)ET+K&vCC13.C [04/07/91]% ABTT*c"t2L㠀a9̧(H@c0 S hNXbčx7 @"0IhA {R @0@PF;@P$Y@097ǡ[;X {B@F0@΃=N1b90.{\46 {h;3r7,0$L6d&#JZô2 RZO @&(1rT;ܸ?aC19{% VLB*( AQ*0aT0ӠL&6L:<4+C]E(Ţ8D"ecv'0q>+4RS\Vlb  ơt6q0;FB{EDc۷?I,|GL}A<:A4!c2 KG<9A@2 G '05tG6y8֑T[ T5j洃njcH|(<>97Ɉ:FKCCHI Z% l7GP 6x4qKQYfȒHH3H4H*x.Dv\IC0k0y9@!c;J;A  ܨy ;|  5j <i "ô)6p9ψr+uK{!4 15q4$)H{!!A\ރd:(0LM rCP3ʁ84;  vCC21.C [04/07/91]% AF(pAfMƒIy:aIh4#AA)8@e6̲ ' Gф. $9{?FS _BK u01"Z SqtC+UE|SQNS@(ZiAt9 CGc+ #6&`e9!@$e3Mb704" Sad2ĎyL,A(0T;XsYIM0" њ.e2kf0Q:vk q\ >#y6N} sH98@s6",6J 2 ; 86 K|2#Ch $& 2h@X b) 8!H& p#!* "J.JF&^F#I rBÈ 4 +ʿE,Ar.,,%Aʻ&(%1u*%إ8@@1D5G7\@SZ 񖑻`z$ E0Ţ D×XAx0`D蟹ppR A#*γE0H52ꟐؾDKf`5`rU0'%wK-Tͱ"e ‹'nzc D=Z* [͋0Ƙ3F4P:!7*+>H#\ ¥aX&H''`7=p^2@H0Hr.ܥ"|Cyh#BD6Ĵd !".{rM4 3,ꄃ4(RA ])57<0O L`2`1%52*Rz*'Ybk8b >38B,=9ȄaWʤ889Xplolh6ӣK>~,){6,EdK0D-nܿjU/F7XA>1ѰUj>3r$8'*IUh$r)85J-{{o}XBz3Vp4"~ Sr<5N 1;QM3!@Ru`K`P2 aP (**^ܡW =1=8}` ନAa S-yA,\lLLq/rn4%vCs+*bpƲ2"DNA9 1y rYj0en6G'][(\ (8ك4e )\ˆ7SRf KN #nU:C?잜CoBi8beVP h&pes-:d6X+ZUcY4u4~ f؂ݮԵ#Yw=t(4:,ΏIj?br,2е; Rڷk0 l+1LbvB̓( 43TҴH@Ѵk^6cnM9Tk۰; ?o @C${+G CMƬs٬ DMz65M"f=o7 09Pj* 5=q.r3( O)!33JPa<8ړ5 ͋;8NQ.c*P s `1DU8C@ZǃP#;c @33]5V#H9 Y!Ȣ`!J g6A5R3-JM4NSVAK5}QbX5z]W|` 2H8HpH`4N 3VRsfb.:jJg`s4MC6jPa{`V]*($d3Fq13K۟ H5 SJ: *j7a aHؙ:Sn ;v.${%A)JEol_p A|o5Im0ZN=7P!0jGVc48&<οF/&y!\'k ݵ}qC 8p jH)0d LoApT ܘ6PHBC )DPijHI'6 dV@}T(fa\bolr0Ɓ897㾦rś K7A\&ؐL X$O~< ;^72{׭. d2 Q aBmHթ\et,CQ^?cwk7,7 `$(ȹ@M Z(1–7ʟ 8$ZD%:t(s1"oxH0"˓JeoXmZrB訲X(S7I< <X(l(Zӕ P0DQPFKXRUD\$c8S;4Cd7i@Pa;%hv 6[bX=G)u<=tX0w PH 21ta6Ã9`4b!#(anPj}CY93,!.=$S"@2nyxX$JV|N#%ra{Z*YM]5WƄO[:,mz3^ΙnWL7`6 B[Sl`r!7E9AoSuI 59hZP:rW`U`n|Q!z| ܆a͕'7-0C͇_AHCLv]_GuKu.8uO0ޱo/7iyiGՀ} Ұ15w$VcMe Ԍpp7ԨO)P"B !j փkQ=g7$Ue,r +QIFQs=h&֛^~`/&(H֑f 4.ZyZ11s;cVy(q8FItnxHh/"#GLj/Y"z%k !l +U i~7Dn 6jer:Y<ǶehMu/~ml\0rLPIf0A䅞<&T!)`Ҁk( J' g 茂39M@2@GS(#$l)85L(q~Tb'L)m)L"UM=C(i" ΛNji 1T$WՌբEh T!P~A S!B#bl2&L0S.fLٝ3\ aOzi iB)J6}(Ì6 Cjp E #QFT 0k3Øc`VfS` K$rf(I@N /0iga˧эHH6_ )z؈Ab`xo p6 }5vDc(,} I aiDHRiI:D0xQa 1ӆ.cI d d6, ck i5ڏ? l'i%3T;'DrPZ-5 l01C_x*'(dȝ>} 6Z0uuT5wM*)cɔNR  9>*:04iUN@H{u6=_12?Zc5ڣ14 tzZaփOթx4Є ڭZZK fF3ղA:#]7kcà9H=X"Ǘ0E82;d0]$ɞէ2 dqN948]Q99ΝPIX^5ޝ1^Y \is 0 Ä:Y5ܷ61\&7镊2! W9,=ApHPZKyC&C h:05441C1Zѭ*Ќp9h2"&23? =[kG:;+%1e,/C'2D2*Ip r+`:,6Ι: kn H0ʧ vٯh2:ᙘ:\G7Ai0 p('0q#$G59/DhF,-Ȱ3ąHdHqpI<2IȢ\Ʉ} |.qmԖ$+ x0K@Bܡt\\BB drLC-+B`@lBÜ03LL7܀,t1ZT1y#, *4ʣtAukLM43,TlaZp˪j2i7M)Z*816Ex2@Jy%%!74 @OO28E Lru'Q7FBड@G@G !Z4Fi\ɸYbY, t Z{Oeug5Ʀm7Sg?,>EMY{8X,<\/Op=nP9VM\8Sвkvδ[%VBZ\Fdr_L '֚E(,飩{~zH\) .${NҬGD1N4Y?H`q AiIKC "LS`$E6=NLǶmݵ'm4``n`LW\Q I?{]n/7D|1 +` 6 dtz.2`Sv<'cf\)zf%L P7]jEV9a[oc,=г N)L<:`R no$J j,%$P 2md0Gl0n3 h9 ƦY-,ңm+ |c9DitәPU@[5eUuC A( V*>3 ,~hoYG;&d6QVuwX<裕4r"u)M\k-a넪E~(%| YDu9b夫vCC31.C [04/07/91]% ABTT*c11!a6@sr2) $=(0*+&ɋܻ-*zl J(#CQ2T%  q#Q 2r. bvr i:&v8<;J24!a=I#S453!DLS@lP74oC;<˒/H3TV DD4@p%Q3J F1À=%r)R5ShZ`U؍JJ6"Af+;{T}܍!RWT%-w2B@IXBvpZh ٙ%2D˓;68XRBJd+Sj\[LH|A"0\!M; a* @ x-}s ܵr_T*TFh 9LO^$h9fe4ݜ#ڹA5~h1жk(,##VP/eavWJ#`UאY+#W 2er 퐝@{v)rx̣ӏt.*_jn{ഖ:݋ȸ/ E3lS'ώWxh,n6L;W&]hHN Yhۻ8e Xǜ9YAQYǤ$s6m$\.&ȡ0sHtX,"!AfܽIaסŇMaG-İlB*#^cǙnEϹA 9'9˔o&Sz tرt˃.uTnA<(@eA<4bح7]w=7Hs\]n-+crx9]Tq#Y (MHrK-~@ scl10G n_eu.۷=J|po̡t1ܶkx G@EÍa0vؾdӑ\h ddjʿ>;ܼp p> CףP={3>填ҁۄ"pX쩛!!`-1AYt,k]{*!mB\&>>Ì@B`!< A@|1T2#T7K(x&a!Ô:"z07 x3SDMR  CPFCH2P M{?ԴP[2NzpVU8>s:D+F9˓U".PATY889U8 g6k+2;[23(P2f5Uu2Xv-6Y6P(@Qa%X]ZS|a2Ud`'"{$[? :Cr|\WŹ .ct 6&(ݺD *&rňi~y6c{HʴxZ:l73 T ֝95(Q"sM,}ZY Yenk߃L0AՏ↞KXUn TxIr.7jY hѾ f=ʠ7T,dQJ^ή7q ySn"Bq3ocIR.Mӣ?ٳ!Mpodgv5J[4д>U#U V;5^W*<V +x [(.Pɣo%ݤٲ\>JH8  ﵣgφ=$$t+l)9G$> $b~[3e$.cm[){ A+/K~e%d?HnߜV9O%^YY=oGPI> y.;fxI?s/ t>-:Eu=_|vO{#u_~4 k䙢$э((:ThA9q2C2A 42O @yPP՞q (l!J@q4Y92ϛ$! 릉@b 2΁DKpj(25N4k~ ) 8>+J<8Mt*9>D4K3E)À{!86$Y;DSAEX=6E*DCTqD+!N)"Eh[@8l#B2̓ΘҠӟUzKAԧD1yBLtGrYǢ{Ǵ GÐ5c@ȭAL$'*XޙjČQÄ+2|,B/C 1pʄiL!5"ɴ$n)lɁ_TI7BAS)*SiF]\,,)\/r[# QK 1(<@8 yȜb 91 h1 8C0?LT@Ɗ̍xѓYʕ.pD ܉GL9̙̍8@@XpIpLK: L|%PKɜ̎8! aJ` IP5փo hljS,7dBHDKР8THpؘ\Xb'A=!H)Hr^Ȝ 1|:DR#Q(E &xLc!,[@p3 P e(cs# Rz˒YqE~a4H-)DȲژTwiH:*Tj]d?cH &?=\p arĪO1ɚvhr"|_oN"SaIf8m>l-o89'$ ck\$FL Wf􆑕-btPQ#P I :7Eȼ. S)kM"LI"R E-Yh IG"؊ۢg:SKaDqWt'k0$!2J{OI%gTH*TK s$/BA4FLhP+d46هvCC32.C [04/07/91]% AF)1 c R MA6[.G$J)5r C 3 P"B@ B `+CL C!a?S)(( cu9 "@ }gC)Q1"[imK@e6̱9nhEDe)0Sˉ ̋':(7%#7)#/BFʪl}M®[AU({5*J\42I/ /+@A K-Ƞ"k 8 V("**M7M\xHMKۿN$M;MLyNJJi=l8 8uB|QJAɸ99T85 Pй= [ aÍPJMQY-ѳbC/PuJ"@!PrR!R@(?E%9Pt'!*=-RPu:T1H=SHP<M5TĘ}(H 9mP}>TS-'ӔSUҠҒF!n+d"A:+'e1|jnMƳ, βhs!*[d":5 Ps ̺|S '@Vh[є(L~Q.ίW+X0z/UHŖCFFj[ 5P+>hœ_(DY,i*ԵgRYLk"'ÉJƿD٥e .7{xqc&l~%#*7|ls&xm >*chT5Lَ]o,6v܃ՑPa8b9?#2#*(V t\WѠh\_/@A Rsy-0"a)d:&'g|WX 2P30ji:k,JLjyx#nHb $:cP1.J+ HgnkWpCzTղYA\6v\Øa7r  vCC33.C [04/07/91]% ABTT*GS(f&Z>2$:a9'dFBq:pIda/ FátE"`S%flUbA3RQtB=!IJt:bVv{}un+cxXOH$ 2\df (ASaS0.|eWc?+c)#(4ixJA к. N k < 8/ 9)s6D?Qcʃ D K)0EΔP.;Á#E(VKco Mr°!/PH62RH2 8R0)R;;0@:Sozw*2X(7zC8 *+Eit54Pz pA wJl 9okK Zj ݅Kt&i`䨝: X&@U|A j`6Q{tMi3T~OP=ׄ[a2H%!4ۜJ֘c@1Iì7ZE^V.w 8+FWX}wjEJV.; .rB9ݜ`j:@CKC+:X`t/,|AL !P&XLF@2*0e!ĕ( xwgD1bBRa<"\XS(ʑQp=1 n7ds y2AQ ɦ15¥(tNn-XUIX ŝ+APɆ _\~ hdA8n!#S&}D(!*G!Z`mMK9{g~l»Q8; } AhA#p`f%V5z─$[o.+eyB LI%$O0Y+"A! b$Q\ ^A 苚CDpOX�D a a;9BE`;" l2!( I"/5+˜Hy2o!J9y u!*KI>wc*!]0k !ЬAA tZ~[ } YW>/ H pmpо 81.Jo/QLN9t0e33Zeڣ"K *Qd͙@fy&Eԭ4N@ZhPsCi :rI]B8M2FR>­?(q41A&L$]) t Q5Dg$֞:|zU CT>Th^*]MurʐAF G]$@(t4S\1$)Xg&.)`elFi;@b~ g T:(%#s*θT7Pn2J1UBFK`0N8%C(9*q\h}`+1 P@WC4~JJT:M zX 2 7uP]@;H 0OàR5l592-^+|U9O6#vD wUm߸`3U K5QpW mrM׍v(pQmc(85NJϏ  H`$4 P6e Ky{ 2iI*$F+Ev쀑І0@3uc%CK= R>Cg: pˎt#߱GD6{DU\'IuT3ʏ]l%ؕe‰x\xn;ouIu R{q|~Lwа:;,9I%z(ϥ6` A0 @WRMs,/!/2< <8 T^yAX*:BvCC41.C [04/07/91]% ABTT*Fq@a6"'3b6NBq 1d#,DyI9 3M d Qa {3:Sf( 5ME2) fB8M$hD*e1Xf79kds9t OPCih!tˋbx# b+=SI D5 F2p3ci Ck27HK3҄*=σ幾?;qkTхV0HBPa.8[6مa[S\5N$U .q sL\qiL4w4sl#KRT'2K@L} HSz9or[DOA3+m<QԀIB.7S44 !KLr%JZՈ=Vj[t~9b5TRY pƵ^h (0(uQX"]w  p0bq{H90NJ#v:,&,P`ThsIiQ!&Dʑ rO0`x%$zľ t{iL(wkjQ.}ThvՆt}fp^;^R(Рd 0{hB _Χs腆@Xq4 'y^;6ɦLfl5 u+9*ǟ5}RS};ok p'TC9J& 9  ! 9.,9[?[ás9  |C49!JAKE@@H2* y4d/ )Pl'D,P <ȓ+r)  *02Io$)>>; $:37"+KB`lT'ˆ,  (1P"@KAKc?[BB`2;4& [2,CR`h 341Dj+z[D5&PH@C2 DS©*.EH8;s 5B5XyTUe!mBkE\ho+Iڱkݫ>|:!_;+6=Sw=qs=t-s=h#cӳ쁌l9F 8tX9|> ⼳`;ǫz)$qz;1:p) 9@D*2 `&01ʸ?3H6GxA ,nkO '6db%؟8dҘ@V)H"T '"DTNU;1z >;8F^|Ih(z 6Ѓ}ueʎ]9F>iQtThhFma7W`gT\ UΜO(>ڇ*F~Q9Rle2>UC]X{ d T(vCC42.C [04/07/91]% ABTT*NFe:Lb7Nbf0̦AhGo̦S8B!Fm1 !.m̱4gQbci;)A;`Ӂd H4dG&anP,Xg(Du6tzv9E6$r DyP""H R;>`pT$A1)@ =CN$ЋS «A/J(@7@< o)riţL^)x6c8NkZ1:p: _-+}Dϸ9ˮC1FScˏT4H)$ T94)l7Ì94 w6 u`x 0`BcA,W KC;4C5h7㠳˵4 zûC6{G4K624VQ5 854jLel7T\]{,@:\Gf{hƐ86iE\kmnGpG P77y8`s@8d,;U;r9|ȄȔbHAAH~Dc HsI+I;˾;3D:T\rһ a@H[t:Ħ;I|=p>ǼklBILIc̗̘3@I̩KsEKKH)˻>:JJTHü M$˜83@l_ ITJ pJ$<JIL,aKD\tL{Kc_8LAL MԮC$ +LzN\N+;M|69OOͶ؈C.F xP rLM 5ɺߟ0В< `9(p9Lh j~ѫĵ02rC  +K'y7z]Ǜ+y!R8KK^T&yKp:M 8X˰0S<==J55>01H-CGJ`TEF@5G4JԨsEUF5@an!y"O+\4&PFXD[s!|!*mUUln}H2Ӹ8ELp' X$ V@mNOԭPգ2SuV\/!WōYZrLUT5m }`TW25THﲓ*UlFUE|4HD%x vVEtګ2&!#жhz$N=IH bI"H#JegNΏDZ@1SY`;!2bB` ϙsi@u #f8CA] Z&uJd\ f$iɶb[ZiՆ4׸)_e}Y֎DL> u(;+YrfU)u!)Ɂ.7ZcZC*5&KWx!U;0c8TĬ€T !4$A5Ͽm cdPZ/#?d !<@#1 `X / )4L(fʸ`LuݠSAtIX3Y28;fa LG4@( ( t&C-;wAe m4Vfg@rי5{Sk;wvfۚk~E.2}`D7MptY!|8#> g'Dۛdm  ɤN d|ʌ=AL\s+A'\IlC/A7A: $#d$%l/[LBBX i 'P)J+C4JsEJL\Τڲ+dN AtB4+$OOŋPt(PBPT.PmQ1PfLJhvJDݺFJ\ ':͈˵D%Ҵ2:3M  #ąE=E"[YCC1.MAC CC -M -A -P -O -I CC2.C >CC2.MAC CC -M -A -P -O -I CC3.C >CC3.MAC CC -M -A -P -O -I CC4.C >CC4.MAC M80 CC1=CC1 M80 CC2=CC2 M80 CC3=CC3 M80 CC4=CC4 L80 CCRTL,CC1,CC2,CC3,CC4,CLIB/S,CCNEW/N/E  cc -a -p -l2 $2 $3 $4 $1.c >$1.mac m80 $1=$1 l80 $1,clib/s,$1/n/e   CC -a -p -l2 $2 $3 $4 $1.c >$1.mac \T8\@9xRJ)P@.5sm8; m ?P炑| aZ*õn1auRC|)Os3hrHtőҮ0 @g(7S[ {聼aopLB(MU.bBy%L4f[Yl ge xFŽ)f\5m&s~[ʙ4|6:&!|TNC@_Dp@I{a3iDhush1*ɨ Yn" xg$zI5jQv2;L)fTL6 & gz!"- ]! ϣb(1̃5} NZq4>*]7`3%$wȖ Sb:AFZDZB`X $$W:NJ3tUL)) rAS6oWv<Y [l X9gme$ ±bTpEw )qRKi51s45@qH Xf/:0 `3*2>#P: P)(&VB,*!q }ѵd170Č8#(I3깏L*n  ~1 `@([ոgWk㒯|TZ-Rhz6PC> TQ 4'#d27n98$ɜ v,7 ~428l<(*Cc1r !|%9f7͎ )Xs 8@ Q>gAm47 Sv6(Nydu 2 # c"`n w#(0#0mI<Ҍ#)P|抜 -[w34N{{Fybg'9!~J8Xl @"g _; y!:AByaJ<*BsIfԓ;w; 5 1 s>5")!HDzfJ<GO4 2+3RZdLlLADL<[x S6#$ lI#Q Ɋf\[9q>;*I)$2쬂CQ&`" !RH'!K1Cs*+,*m BگF&p  [ނ&p%|LЌB(KJj2L6328 QBdS75 Th$]H% EEG z: ?HP%2՛DTU M &ucF# J's%REo L;۹dJ߹ ԐZKU>T).⾳I 6 (kxmDhȨ=Z/pQ%WC ntNQ%Xdq&F#׸LpQTH8!-Ub ʥ e`A(` S5*R۲ps!~j~J ̥8MifMq !|;&o9d!J;NS?srAa Kyw+Zp(aY ZR:P kLIH;VvHf[yT`gB_`|U0V L,0N/|קs b ftisv 4RvU1 =[nۻMoCGcr`=n6}t_wuq>5:Y#G5H75*(`<(b q*FZ ;2<3 zjD,*(Y8 1ԝ3%@<90bX1H4<2Z%"`(8&+t(,şYý)PkdBx5 *FAAp0+oYer+NO>wٱ ߄7T; A%æ3y09qŠ0l Zla$Py.!PJrdk 5ZD A1æY#stȚ2@k'(*)(A0z;o! :ŚmCw2EFE#Ĥ%@I8!JO DA1F % &д2ᱶCq3H3ta40@БBh J;C D3)-@(eT%cz ~OH7lJ{Pe*㣡rFb0$.h0$PB"ؠL%b0`  $I eMH:VdUj=)Q'i\YRkLP^}]Uk+} T+z .VlQFM4'St?z eZAiZA AR! F lXiT7%Ղ-8Ӝau;'Ig\.T#DT0C͌LL|GY9<*9uH*\N6^ M_TV,LӤ֔QX>'rjs[H 3,m# %ڜYtZ3]%HK&ڽ@WԿ\\T&{ǭNE49pXR#]v݇!*Ý,T=_*< =[֣%12BP߳A2*(=x- )]VЪe04]@Ve53恵5_xƠ:bYw*I9DbG M[2! ;(h¨շͱ8- K8 Pp&+=fQ\UE-9Hn(D{t)I^a;W @9 @YX1(7#X >=/Quy-p7rt ףV9`+((ظH"|;p9( Te1H &mLgi dEq̣zԢe0U!vVDfzfᶎDj}V[׋}ط}TV?k֛!E^bվ \3JGJs>.B:R@ݤhNkm{ I+ gxł+2hC?4h͇۹!i;Ԍ[!ji հksu9 D )RIaMZcƱEuBn T\:2>TX>儴uvM/FnDP$o]ê#xS$>,));' I"ё8G]W#&X:_WQJcv8J}3}3-&!zߺ}ֶk%tJw۸3|}ڮCM:lT(8*$ņ(%羨CtYXXb@ h L;Щz:yZKeIɽ޹vϽ 4]fHAWT7~ X>T::{$; "% /2 #JN7|H08XOl\=BnNQI[b\gG( rf2pKHdr&`߭7V&g=aX2@H`{{R#{t|YH#nO1'CVjw6V+z Eu7?$< `뾝6"TrKkJ): |?`:5W} _y|Wח5XJS%owu[>amy$@-#}EV+\=#TX>T AiJ~Tp2,= dۄ(N=ivXl$!:o Pm2 ؂ DPZ[9f 1ޝ|+߯_$ok <ウ;X)Ӄ6V3K? M7}o]'/V:zJJ)]tƞۥk7>]f~9~P>2449%-8#v1>7}ߒpkrie'RW%NJ(uߓ1""l>8^ӑ*,b#>02(t8rgM<#D .[-$*B$$/ھ*p: #C-'x"J(b^JT" lCBn~9o#46z]=yչ81s!}ߒo&.%R6e;_oo!On?H$sT\)8#~z-"_C%o,S,}Œw!Wok?HfNN{ieH8DaVo>Rȭ/ה7l#}?҃ @tˢ m#]=g=>v ^^,lo<&TX>(#*Ǯ(9]3H7 4:8lHЉGBe>|ܶ}'ɰ~9#'Ҋxap.ȽLn+YN@)d.0ZC#~Q aVEV[ &):#81iX48c!"}ʌeh;2a7["!5?B%vOѩk=gqc7yͱ1"ޒag ImdI>@jWFlRX&cΪ-+$]l@q(H"ܗkz^_C,]"6&V@(s`6e881-vqx73AR֏ȗVI(z:9pдMx e0:~XH8q RK5aC=e=Æ K#»Y8Í8#8r9/_gT9R[t.i_ i3A>@7ɰ.чtaS*G}7=ȀOo9Kbˮ\[ӐN] Y}R1 jDwNByYkEߏQve9#_^ya24p Md:gheХ5^@&e;&.+?0@&3@ `"H?)" w98=+ng$uX>"ھrKx$}?>@))=-w @ā>wSv,?ӐفljhL,CyEWЌX[N*V͕"Xcx?`k5w>Ё ct {%*Ȃ'3|m?:Mjr7 ھ X"^WwN8.b)Ƨ":3Y]+ D ZP0|t)k@ga+&e<)7Jfc-Mt唚`"rLvn[NG1J\dR 7No7wx!V  $FlϭYw?p`:_va2( QKoB(p`:|ٸ"_R1=P) `:~ViQ!e)Q(1h{R !~y >|Nmqf?~_7-8.HB/ǔӉ?}sz H4&XL/@$޳@1B@`/֥d8D:q *l]db Ǩ?;Y"8RwطkNH.8)$ty,,b};NabC&J.E'+DA(ŀLV+>Dseص%>$qϬ%9'h&\nrI/USRX[ +?v@ sW>/ $f:BG,he_AkD:zk~wnrFڇ(BphAH>IHFa˜EWM2eXoW=M}7pَQ1 S+6G}:VnAL#F\@:~|@٥2~h@#>>H 8.r"Ӑ;Z Ռ"oK _=<'f}{3H7Ү젊JeSgyu 1x}\AKn h@2Kҁa"d>)/$pkYXgF3H7&5MAK'<3 oBdnFid4gޚNH-k*NIk,vĚITNH@O0ZʗKz#eHx0.C7?ye_@ah{zہft oK _B$cH-ITHAbW-˽b5X,xN3u6ǯRaSV3Nz>ej lXU9xiMYYP5)P7El7u)'U hHXYZo4hnr#:j)r;F?:'EG(fu'C^_aţR7ez/pIc8/:'tݷ?ND(b}k RЁ֤zbcRSD֍~?BX,f; 2VW&~魁4@{$Zmsz &x;W>G5ڂ׹ B48w{D7dM~x8#(N2ۍ 8ט}Gq *8'OdWQ*#XGi芸Btq }.WG8CSJٲ@W>{ۂf,>=ۧ2p '™r>~,O=>)08)8ٕ6ӹ&HPzִͫ{5_hڔOz]n @Z[ ~#>4oUkmރ޿:,; #-pl 쿌a4y(`:gx! JdNj鶞g!7h&H=BԞX9̛' `Bf]镞>~D,S^ &E)* 3<+ y7_X>~O"tp`:ߓ3#lطe 8qNNr?Owve,wGؿ99+;1cO? ط+5n6,#~zq$P؈70TK$Iv(Ae'B[2p` -  )xgI+|N#a>8, }ߒ^cH:h'c 1+'SDߘ}:e9E.-Akd=g:yі>Q%]+  ~BF 2e;J5&Cxe|LMWBVp9w@rJu_+#.Wu}q 3 .C}EukeƉ~qހ=- X9̛'EFBo@V^3IDlw0rNtaʳOOl-qLq81#gGgHa9 (x&H=^s5'nt"?:̤Y M$PH 1Q`:+ՅQ>v^od1̔n+nt,Gz.ʳH h8iӿ Ix1HX|6t 3)5M-{cqtv6tQ(,ť?k@xFpƴFt?cU6txweØ P1~ ceMLIҠ[.D#F"  F$6t)u -`i Jq:$-.g)dݫȹG}9Hsfy?bK(+$jt x~5"ՖsDꅌy9e_p$E݁coK _IQݸGy0kd~+?i˃~rdm/z~턌n> U6fL '™3j4m1f[&ㅨJ&]GxX"a>a!?&oK _/i"dբ o|S(  @F hBm /LJ& +%Lhf_IئY( OrxIDD}7vUD 6M@ ;#;_,J}=6V78N{$ @jB<`yE"X@m"%,voK _=KgLH+3}ڗ@~u%} SmwskWE022m(%l+JqZN3Ld?v<3bTɗ5m|ƚOFνf,r0: ߬5km ;#;gu65*[a24w~ t-o3nS%%LpT8.s_qe9VŁdV*+nsV_:[{8'Q~BG0l1؃دng^JT _ WNgysOߑJy74r?cU U07I6S'@ !@D p;`dP0K λ0 X.s`"8'l">'T@0 !|7V]snuϺ]% d,g:( 7 uΠ^¨t-ư &,@F0 #h0N-B`9"UBt6EPCtrP1] "Ldh`VbP/8LaaZ6 `L\n`\anb  D  ` q.P">A BvP=  (P8*(lzR?pa &LV2)- 8#2C _@ Bα7z2C@ )!!BA"QD4TFa Z@_$_1'HWT "HxX:P.ʳ~FMQe.vV6S4 7T $ޢfӥdLcM1sebr'7na"d4@+LX9 S<CbL`F?UOXp'Bmejjh> SlħLP3pgPvŽF@$| xU,p~y9ߺOg{LZpH߯e `x*aoU2:Z+ j4vKT xqp(OJNh?x9p>Ü :=6VB~}R?x: :<>}7H}v6znk!6Vр._IFij. w4^:ꞲX7QK v6zn{:KCV$~ (U94yo9o{O3E'(~ Do2 H-}*0eXB $I pJ5!tXvCCRTL.REL[04/07/91]% J T& *TB`2i4J QpL$hX$U P!QGD'`d1BDU(b9C4JU" t*Q'QhB \XNezb*L<E0ZEpY%U $xM3*,&i!.B )  @V @e@1Qvt4Z]CEЀXjo@Sb@*@l0 0`4Fpa0c&L FC)x rLHaGӢ hH q` 4MG(i1"** h.g9p  O@0 #!5X(b  1dU=#I "@ 1dNWGD}KcZ\|NUB޼҆,ҳs 8|) hC^#^eXc IJPn].y3J>2+$,*5X") #'JDG9l7pgs>i3Ĺkf{9p`X+t~y`(-؜'*"-)P)B2} NDg58+'q"!0@'fs%:VP)V)p':w>|%`'8*ӎX)`_p'knTo~YA 'zė5!ƒ! r*"-)o)KJE㳙wg  ||7sR BP$d4j`,.]ʹ5zƺJߥV=j+yZT)a9sIRI8Ч ")_험W;Ρ&<hlBP)b/}>p` ParE.u*+V"!l/!Q(h T{t` @ ` ,B  B}h0N!N9ŀ? xN,( \  , LȏiV @_xQ h@<ERe^91CPX+[Řk,d./k ZP8E=CT:11h9Fh3 {G03D- 6`, B,PXhhSQ6 !c,6B)@Q , V-`=Fw"H8.*8#~ÄA H  9 f G !|8ohW[:@32 D`16VrBB"XB .}W ;#;J5J (LH x>lo,W rr[nns7?Wq OnR-Mu,>TMf4pXKg_9FE}ٶMf,bg]l;vRwk3bD})!\>5itA鬸 3hbdh߯Biz t}xAQe.qgS]WI.:ζAI2C m(|'1QPMOfp.4n+J& |$fD0;!mVp"hJ0'NAt 1@@q&3Q\`@FDy9Fr6\eY* IF0\ `)jEPc: !T 7E$0Έ>@p^d.2]9J` PJM`v@hA A8G˜A~@ @BSE@$ a ͸%o0Y*E-X L:@JF(o8hdU0aqb*kpq(H 6B]p fp"*`~aTwR [ ["4!.8 !s@ #C 8|SðUǤ ŀ `=p B1Z@-\ o@]I`H.@*C  >aa I0[n0X%X e 4>I<@+RElt10+@H)($4|.Pqȅ BĤ|m4C@°Uב99 bk"Ȕ0V3Ѐ`3c7APFLY \|Z:: ɛ4#XR~ 5<QdA,REa-!Pؕa@d (kW` m" t@u@0 `  d X@l.daMXbo|:wdd.Lv`2A&!*m( g!< Aar)\ ,>)x atF@ &> 2!Ϗv2a-<@.6˵x+:gM@YL#vTI[a.+rO/  *$9G.%="Gz0~2abZ|2czŜ<7@RLH|A>0-//@8F)>a&r:4ɘ8GaZ+R9P-a NqLa0@,q>XXc|B*["L> ~b@9Z'&rVܿ' /]1LpP#Yx_c\$\AC4 aH&8@,$t1Bn 1KTo0Pu!㨁:g94Y A,7:0 Oj} w(5348bVG^߁\ عA2J;!|,<fsӄ%MK*8fa *>)mE\P\psyDa5SVpu"_@%9)Υ[y;MځU7$`CB۳q\-B[i]v1j`^L,&$w!GxqًSo_ةd#`2 4pt( 6 C@;_!lC@ C10.a94p6@\&B@0c밌K)8mAd9 nBp; ӜcXm4 #= p:@Ax<& xC(:Cp2pԽv 1d:ep O\1o|cxzc*z }pç ~!ܪ, a-=*5 ZtE9P =6IP.ӕ?M]79Ӱf0a4 %:%8=PReK QmPXϭvU4bI!3ELCS*եLSR' ZBS_ VE^%`=TPuѬ֫|hBĈ`=0i,(GmpSQimn[5W*…h Ws:uPāYMlZPHft*ڸLX1Xl%ؐa q[+ 0? 'iVҠvD0Lpnra Jl `JV`A`:_P@!`0N  !2 ` :  !b\Uan!`A"`0L`: !bNDAP!R!P:AT@@ !:  % 42!P S !%$D}!TsQ R VAhA8V `R#NPA.'45qt$ )1G4q;QIQQYWqksq{qqq  ZaÅ|0 E\@ui|) іycm }w U`!W`Lb08 )XQF@1 0 #10sTk" -`0.z Z}[a<,4@aLPVqGiq# yUAJ m!^aX[R"-Pa/K=4B@=R)00'C؀1r;DA~$a;~@ ߧ@.g @ Y ]lS쯩<!u=X}(b>h;Yh0xh&?JX@IMr 8JK? ] =1T ;ˀ e,kHկгr/#;߉'zbl*<$ PgPC9`}F)2")&}Ӊs8$vA A*p* Yf}Q̚ѩ"*4핵f L5KJ9(C)<^]+ ѠF^TXBWeMXG*[HaW*P'W( h0]iY`k;@PP@ Zf  Z=+N23Zڻr `[`l=kh`M@[!2!kQ[Pe@DoMLdX2z]rUVBӎ]Kd .M kӪڦD2ɜ>w /]ڴm:^mU^j^="E 0&tK }a%ܵنX =8цJ;feehq-Nd!Mp)!`ZZ'P`B ƪ!!N|\ p+ah`U[x'b6:b&*b8,)bF <=M΢ȮMIRZX,bRzvDELBR.COM[04/07/91]% ΁fk}^A˔#3n Fr -^H#ţ'YxFVltS I! +GDbre+f.ݔ'G[ S[ Fr^ ƋF6u(4#` H9Hr7ݨB[-pm K&ֻ \ X0&ѹ.#̈́LYCa;ZL8-^`C[KS\/ 8H=b!npL k+9e!6}m H9. 0 뙤 >F%⿍iopҖ)jև)y1(O ds c &)ĪCFG .D<'2s&E 1Ӳ \fpBl+H\aI ?ofM 6(i8\@f?a;A8r9t( 7><8h@BI AȹЖp^=\ X+C84HfX{\_(hrFdbґ@EF0P%<5 T@V-폐iHP“薆Ld Ms l aD; r?"\ݧ|VL<Ո˺ #  d ;Ƥe Q1^ADч *aά@d;X0a G%>@dZI҉VR \3 <#hH}EM$9PJ\'B%a>M(čffff f~cWUħ/uKR'&pUMc-X+8 ;vxyZiI$H( HgU6 -4`b@ax8P^fMϬ lL#V}YV(EX=h -|ϮՀhaH<*h&(+",?O֫oC#bhYc[0}σpirc܆Mu;xXR+/8Yp=|v* ZsQ[vX X u (]|2HaQÇ/I8s v3:3,dh āXj/^MQǭu<$֐d W2OZ OqOa`p0Wx[a%z$yM p} ]p#tS< }WUXW2s[a%+K$ aa%w23 8dS2 aRW:@*;pٰa k$sd(#; Cac0d`n!k W)k|d-pu`ee[b"'#t⑽+#>>qZV%2z%zl,=(c҂5 ɞ؛f6-٫/W:эzVX_.dWf&?ej_`7y y-9W>`ˊVey]2Q:Xٕ^=NW:<{Hhz3ˎ=>{ˎ%t]A`5D86k$^X#HeWRç6|X$]0( JO > )c!\RS(jȷ0W?+wZu=88[pzQu*Wr'j![f),zZ;>.%dcp-b=,2.b[ 70f; ,k*c1`bBAq4+7;EvLU.COM[04/07/91]% @Xc 4fA 3MPDUvEiYvFđ@2,-dIt ٫Pk ^nQPT?M&S5:^LT&fdV,NMzXr }R!2l #Ah3!O+e37Wl=/NlO'`x ' 3E '/3Ed5\H 5=>dF07+^C2x/0xIf dk<&@>'D aI֐JCn}R@)E^+ax &^=>/!z <9SOcK&ѰmH8x`aDd&?920aC!F@e"Ԡ!H"X @@rbFhF|H CDBd@@j0%Woal1vSxe&e.Zى(Z`0f00xf DćXv(Pd#(T q%oNV I;4 vi O1  o8oZ(ƓT zӇ 0fp*_v2<pwnez1tSPG{xqq, qLGhrh+rr r."xpwrfZ&s#]Dx@}t 88[eU1M}( [(YTIxdsr#[H#ax[I%z rx< eL$f} !;x I%y1؄eU^ AI afv},Bz5O'0   m?<Ms+Xa "9rU(S݉-=m]u ,OHG$4ERS$0\t3Uˮš€(x/=(a!:(a_w,Oc($lP0πąx/4AASu?HaӄAǢz允z@R AHJE4vQ i]iyvh^W9ƕ@%]Ƥ:x%i(a5 04Y| C| J i(\ZD8o.Mh(eYPa5{6p!0ehfDO'Al̦,2"hs,aQ@~'T1̘V]8P bg:ۏ JɄغ?0s¤f«#xXxZ⃉ :t˶Q-cr-Uct`|Cb 0l.` 9(0`xCX$```5bX11aG XPIc—a ,.{X 9[Mo˷up$b[jw4fQaTPjT)zep ;+L,pxa6exmZep ` a Ç!T0"fa`UW*D2Ӄ`D/Ӈ@ 4,B aiai!B/`p ֘> fA9LA8 {yPfh d`r$@8nlKSx$2`*g@e`nedDa e`Pjo8ue&ta &\cGklfjjHBlGS Ubj}Cɔ/Wb 7uXXHBpa`!@H|8QEz (xs'0e# pBXu ' ;+A!jG0#ѐiH4 |G  k'A)Bh@(J @-z 04P`ŀ`hV 6@w ,hTFxfǙyfKLyOʧw-02 _4݂rZPhxMjs|90%/;v3 s0GX{]bM$ % aq菐Gl ny*gqrT&Z)f|z(W؁W|܇_҆Px}A2J Mnޗ}=N=ubA4A q> 4_vhsv+8?8aP'l FdW d.|{jJkݬ6{sNJ88,V`n(rD ą̀| ~Vl$Vmh9,Vl]늁p2떈Rov9KבNغ]/5p=Xa׈b WXf`U{8a9e(8UVMx@"_fd~213ĄČI HHMPEH0 Hy[(qM2"g8xf4idb-gP "nq9n="Hڎ ]l  ;f 4 8ƈ! 00PTk!@#{8e0 4FP#< 0_!1!#004  m3!)c = B2L x,S,a $!@PDH@A.Ô0=tN;$xa :SuJ ΈJx% `0]GhD@wNĨ@Nbk0~ @ H$1D LT9;dbG!NrD0 ØBe sB r 9Hn2P K )@( Lú!fAI bg0.Vv,ҭ.A BVeO!$. ai Bs`1aS \dkFQ IFK/l!G `UK;O^K ݪ@@A drAVHd-fOtBlNd]^ q mCtlp7w CyJ.pj܀I umf- ERspTv<&"uy|"ka @'K;;zn: &1b`uz$I~bw~xBpW p  ^B Q@l )w̮'}  Ď n87&nh">åJ,aYtPJ BW ~ +JI *ufnhsf@`B xO(*xIrĜk!B T.ԩJ)lzL)8 >~ @ "`d` / @ @   ` Z  @  *.nJ$0f'M^ @@  'j" ` !%XVwA>*M80@m+Iw@B;\<2Ȟb2֜һ+:  [-F@.+2;̴N#& B(n`6g01 1as@Bb!]4`-jA<U5;*m2.c$Q%@B_%\n.)r/-,B`:6 7~8{?8Fa ~eh|p㠵VzMnLa8ؚbCK!T;U۷kd œb'g> xW߻A M*@#c랼c@Z?)`W,^^%G!@B %Ϟ];B㡯wҿ\|5;+=u5cB |QMURb*p6<#SY_S׵Rnvo@]n_ʷRa;&Y' S('M>Og<&\*ʠ `ʲ# =o1@ D\}oPϝGqo[h0緻3 -BirB׼ml ŗr$9!Fk?cx; w^8N <!O'0aqJ< !L)(T T(4Runں?`Aխa_ 5O #lhAj^kYniqsNv [: ̭`*u,CU~@7bWVu(V(zpQw0ĺa<&p~V0eeSb B+ STޫ  03FX)syxX HV9yfK!Y1f2ˠ;(sz FSN)3(#Dto#Ɛ,mCO; Ю!0 p{B*Y"~L?8y`dfY7 E]3A t ' #-d.rXz'k AMкXsϭpxM%2 1`$)2eA X.WRzKaKp ``犃-88Y8BXxNӇC3V{H+,/BP9CO9M[WzvyBfkA O >: = wb ;b6S>`FJ@z?`|x ~ 0 ِ.R b cvJ 31@SxOVcAэz"Ԋ^,VC|+RZ1LI{5D`PC*z= 7JY y?VcӢ coBZ>i`1 0zK|7s|^s>Zgp)R%-Z٬э50U3jzS55U'Uz`mB5}53(oAvX;GTcX5gRՒ򵇶Y-:5Y~[r:5 /ZOuM\\+5!@ 2 ܱ('(K1(@ ¢ <ҋ `?@& ~J.'J$j-tAңТ @  RRCt`XQ .  Ah83$*H2*@ "+lt€6ԀN;T3?IH"8sHH 4aHN0S B~ASugUu"/@?=<8  lсTAP æ#FvK6!n !MX?]pqK^2_K3\r.H>~R"АR*SͯfR-<8_[4 ?-2K`A`" (arB'x5+y;`@0AoҞ t @SH0þ%CHQ:1d`Hlvޡfl,Om`l!jp0! BߧPA@H!\ ` \!@ @A8 ; @IT)e2J^KQHæ" ؛|Bv+aRBx ma@CLoA&6P* ]O{v+WeḾAk =ݳB*PC(Bs2w1(Zs9EC+3yUCC;XCߘ!?P(f  @U;hz*U wt8rw=s`-FAhav %J?0CpXɌ>`+1G緐N]ۭuμ3C-?gbFhl;flQʂ,$!~o;?7 ߛWn[qNB*|hC'8 G~.#'#`_B/oO)-oP10'c@4!$! I V@TR,PrA`\ ń`@ @ @ rf @³@ \ ` ` +D`Z e'* K   JnBM{MV{/{8 =4%/`ᓘ P Qk0Rkz-8  @ @ yٙ) \5FX"=V `U=W-C1^Mg|k^69 yJ#9jŗ){_X|A|3(%wJAʕ'&{_V{÷n-e33 Tyd\e!`La`e_ Hz# :/5#Lc l%=bwBY C|"(7ž^{l FF.!d`4c!@dUk)@F.,/ . @dB *A[y-Bxs@u2CB b`(1p" BL,,o<08RZ ( >j 䟀(_;oAdd)έ8*~@,RՉ#7@h{NVh}v<"p5. nn"2_@ q/b'C%Drz`4!!oh԰# AޘRD_#_Vy@BpAYP}"56n@c~@r`Vh"$βk^$8aŔ)@"p, @A2I#g .fƾdC\@vIb!lxC] 0A;㠒>!Ja`mSO8P7[bki*z!`+IifhrD9..:X+Rlf 6ar@hnq6A5OJp(:ЈZ'$ ʊ!~ޤO1@#֭!%oK'^d SmHT9ic@m!y4<#|!e+" R(y0av̉su >!hc@v{ @mƔ"$ p) ]K!L^7j7˄,.Gfv7M$ &.(i'$(ø>OjV  ARyb O]b | kV) 1 9ߝǮYBl Z ^"5LmAΈ %R䐢&;4 D!?!BC0( l<4 U]= xaJ1,,CI{ 00a$nPb&{BsmBH!U6hc[&D`P|!oS&Lsmcz럼U)vPꣳDƝA=a@\"eCO@RLd^N7-+#7O"f;v!_eAnLccH̔A N'0A{:)̜U|Y,W A NchA` @ Ri`P'0&#)mA3> \24P~\Dz)n) 0a+; ͵t`i fM;%F^@t}ؚ[>j`"A`F{;b @Bs4&HXfP l`I ` [Bs `ln <* Al'1sDΊ@Fk-9R+! l0M.nC)!ҡ`n%n}x@y 3a Pc< <4Y 9("qB4zUuPn<53XNӶ`G"&n:KTQfJRNBqx@AG1Hkl"SE [;|? Sa.V;`# `p/@ho3`FDs`"Q\C; iPfdJ 9gg p'0nWFO7_;`Fbo@R?Ói_;d B 5b)[;|?RrPN-y/cMIGl%J*S6f_H"x`8Ib GOú A=b>!?途AN ?Tu|,Ru fn*@׊}Y4Vn `+^*v6| ꇊ*a\ hʪ "khKu+nû+Er:+i%ᕽH-oifhh `'0avVz+(`k!`3` b+n`uhA7+9"~BX(b'1 ^@B@eՈn ;sA b¹֕.7j;䐫3SbK^Y႓~`dwi |^a"`r@C~a! : ~b(~PRKeIC80#K+ybpٝ~R 3?8b r, F. Q/DDΪ0{t2`GQ`6x^+C! .Xd&C8}W0@;㡚 2Wj 9@ns[XU[IySi~rka42-l^VSH y@"$aI n F;;x*9]trGauTOR ChcM6a_-P)YSlT!a !a AaR4 Rq%7 B2º#{B+\q$jhR\h#Jh!?ָ񜢔$ 2 j8@@fAaՋwRQw:w(*RbvkQqoY;1kWe dK@& TaK쭬-KI) L:e!ķ>56+K\azX?J BMVJ7P]@LLa^p%4S,!wt),<@v #v" <3\ D:G@":xBvi_)\-,N\#{@xAaXV@@Za '-$qnL!z +; )EIӶ`FW0M6 L'̯MYg.A~q @D 匩@V hB1 *SD8 㠉UA& "-*@ki`G:<'1LU6|'pa!l kL?s щ9B8-yIW@ZRAJA~Ͼ.!)>F;J".! q@Z@s2l<r`@ i+2(;hM'jWvC89h cːQrs`)@MڼA` @ @. ba^b a`xiᥡ`Bޮx/]HBCr  `lC8fx-n%> vA^ F`/SCڥ;#"vԌ!`CS/`   tJ +G.ĭh!f^6!ҽXaD`jS6^Y>|+K@TPC"bl]Mҵ6a fᲳ) *G'0UusT"`A0AD:nwtS`@Ò`YE2@~V`T '~? !`DY*5a5g\a  " a  @`M<~ ObQ + m40b q  ` RA ˛1n59 gC`p x ` x`tT1TAYTj# 4uGР* yE @ z噹W ? /`ljf:@%Wt@ ! s#rz"+͐?͐(+!(+!9!9DM`iw#w! ^#Vr+sn}^+`i^#Vr+s?+͐e+!9t+<.!9DM! ^#Vr+sn`is{+`in} ª+͐! q+͐`in&q+#|+!+|+!+!9!9DM͐`is#r! ^#Vr+s! ^#Vr+sns{,+͐,!9&,d4!9DM͐͐k! s#r͉͐! s#r͐|x-͐͐k! s#r͐͐! s#r͐͐! s#r͐ `is#r͐͐`-͐͐ ! s#r͐|J-͐͐ ͐͐͐!,!9~#foVY A3wi0aHI@9T 2A,>4 L ͣp)8 {0KQ`E mF eeao($^hw04*Cf L#K =D!0"?ddlr7?h `@2@&ԝ@x?(|Ԇ{ELu1| A 7H `bT7821:@ .D@[4N5B2Ad!?&- bS!@G0_*14/xL!%Rl,Qa? rd4K#Mì2A; B>GYkxcA y55!h9DM! ^#Vr+s~#fo! s#r͐! s#r! ^#Vr+sn`is{U4`in}%?4! ! s#r! 6#6! s! s! s͐n}-”1! ^#Vr+s! 4͐n}0¤1! 4͐n&0}1! 01!! s#r! ^#Vr+sn`is{. 2! 0! s#r! 4! ^#Vr+sn`is`in&1}D82Ut2X}2Oʆ2C2S2)4͐~#fo|t2! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 Ì2! 6Ì2! 6! ~#fo! n&! ^#Vr+s~#fo! 0ѯgs#ru3! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+su3!\ `TSaA^ t @ˆ` |a@_= Ϭ,a,|\|#,d$@t&duSaAJ , xya@|dpО fC@D>Ѵd^6}F4'0!|@8Tc@{MLSc 4(Avu8V@dpt fz@39=R a`Fxg!;2v+h#+2Y4Ri-H8ta@#` @1, CN*r$P4dhX4 `B1Ff7F4"G "(Z|PTM:R< O K6dDl0!h:6>oN jb zD64e$;VHF,,ݬ ucé\gBޓML-JzsW%z -J-͐ ͐͐͐͐#,! ~#fo͐s#r,`i~#fo͐s#rä,! ~#fo͉s#rV,!9Ç-Ï'!9DM͐n}ʱ-! ^#Vr+sn&̈́-Ï-ù-7!9DM͐͐Ͷ-s#rz-!͐͐s#r͐##6#6͐~#fo.8!9DM͐+.!͐~#fo.H.Ï'7 8!9DM͐+|h.! n&?.͐++|†.! n&!B.͐+++|¥.! n&!B.͐++++|.! n} .! !B.! n&!B.͐##^#Vr+sz/͐^#Vr+s(s#rz)!͐##w#w͐~#fo!9DM`iw#w! ~#fo͐n! ~#fo͐n}…)! ~#fo`i^#Vr+sn}‚)!ñ)9)! ~#fo͐n! ~#fo͐nѯgWñ)!9)0Á-!y9DM! `iͽ)`i)!9)&7v7!9DM͐| *)*͐+++|"*!)*͐##^#Vr+szL*͐^#Vr+sn&*!͐͐~#fo)`is#r!ډ*͐##^#Vr+s*͐##͐?+s#r͐͐s#r͐^#Vr+sn&*!9*)!9DM͐*`is#rz"+͐* n}3! 6#6! ^#Vr+s~#fo! s#r͐n}u3͐|u3! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+s+3͐6! ! s#r! n}3! ^#Vr+s!3! ^#Vr+s! n}3!03! sÑ3͐! ^#Vr+sns{3! ^#Vr+s3! n}&4! ^#Vr+s!&4! ^#Vr+s6 3<4! ^#Vr+s`insR4! ^#Vr+s`ins31͐6!9!9DM! ^#Vr+szʱ4͐n`is! ^#Vr+s͐ ns! ^#Vr+s`insl4!94ú4!9DM͐͐ 5͐^#Vr+s͐ 4͐05͐ޮA l8*03׏uBV$ISēD?3$HxHA %{0[7uv@h 1ť0 #`> #tYV\{"LMQb4l?(iL S· wB`ħ,*^tG v]bL"I{^cWfU8"}݀RIV'bc(6JJ:)Pc9)HWVRf|u0vFy%Fv<_9Uz( @#4EO`"#C0k^=C6nx0R0EcB <AycX+՛ĦD3@A,:Hv O02B9NPj?Ó6"({x#4G0!(Xdc.9WDu CM4@>d<!,! ns&!͐͐~#foE.8/!͐##6#6͐͐s#r͐^#Vr+s! ns&Å/ 8È88!9DM͐Ҡ/!ý0͐##~#fo¹/!ý0͐##~#fo`is#r͐͐͐~#fo|/͐0!ý0͐+?`is#r͐##~#fo|ʖ0!͐͐͐/͐##~#fo͐s#r͐~#fo͐s#r!!͐~#fo͂/ý0͐##6#6͐͐s#r!ý0!9!9DM! n&Aͯ0! n&Zͯ1ú4d5Ó  7s!&[5͐ ͐͐ ͉͐ͽ4`is͐ ͐͐ )͐ͽ4`in&#&[5!9!9DM! n&0ͯڏ5! n&9ͯÙ5d5!9DM`iw#w͐~#fon&͖5}5͐ ?͐^#Vr+snѯg`is#rç5͐5!95.6!9DM! n&5|#6! n&(6! n&!9DM! n&aͯY6! n&zͯ  !\&!7*!6&*!6&6!, !\&!TELk76D9î(]67*^#V#z6+V+^+6*#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77#z/W{/_!9~#fo! ! ! ! ! ! !9~#A"s!`*"!"!Y">2>2>22!"!"!@"!" ʞ!F#x±~#±!b2r~# "2r+}|~#G:rx"2r+w# +6#!6#2w2x*s!>r<o&F=-` r'~h6!+`W?_!~7z?` :>ª@w#G.¶ww#?*>?w#> w#.7:77ͭ )H"/L*PM} *"SMͶ!"3L!"L}aS >i2>L*5L#"5L*3L*5L{ *5L*3L!, !ͪ; *3L*5Lҗ *RM}— ͼ{ *9L} *:L*L}i *7L+"7L#*3L *RM} Ϳ *>L}c *>L}i P *>L}dP !?L! !ͪ! !ͪ!ͭ6 *RM}a ͼS ! !ͪ!ͭ!9ssed.c 2.0 11-4-81 Usage: ssed [-v] infile [outfile] Editing commands on stdin Edited output on stdout -u U6!7!66Broken pipe 7:O*o`7,2q*&:q):n7=n7=r:qo&7:)~:,"s!"u*|7**s7! ~76*u*+"*"*u#"uØ77`6277*7\!*7#7:)~:,"s!"u*|*uʆ8*~#]8"*s*u†8#"u*+"J87*|DM**8ڷ8><8~# x«8 ><8~+ x8|}8):7:,*8:*9!a{   `OE!y6$ -7rBo&))T])))!y:=b#:=#:$=2#v+:<"(">6͋5:&=͋5#*&=|"M1Ϳ5#>6͋5:&=͋5>#͋5>6͋5:'=͋5#*&="<(#>͋5:&=͋5>s͋5>@2=#R1Ϳ5#(,#:==2=)(@#>s͋5#͘(Y#X1:>͋5:&=͋5c1Ϳ5#f1Ϳ52=#(—#>͋5:&=͋5>{͋5c1Ϳ5#(#:$=µ#>}͋5c1Ú#:$=;-͘(#>&͋5͋5f2Ú#:$=$v+è":=*K͞+@k)_Q'+FÎr ͖ 8{ Ăw#w#w^#V#*~#fo^#*~#fo^#V#*n^#*n^#V# ~#fo^#& ~#fo!+!#!+!#!+!+}|z{|}|z7||7zZZ)|/g}/o#|͉k|/g}/o#ɯ2qZZk:q|/g}/o#|/g}/o#:q<2qqDM!xxGyO҃)v|͔`i|)Öxڷz/W{/_ѯzW{_=yOxGæ2qZZ͉M|}ȯ|g}o)|/g}/onsqueeze infile -v Verbose Can't open %sAt line %d: Can't back up to %d CRC error on Antecedent File %u should be %u '%s' is not the correct Antecedent Illegal command %sDifference file garbled or not made by dif -e Ssed finished */L !9DM*YQ- *YQ+"YQ*[QÀ À  `is#r!^ ͐"[Q*[Q#|U !0u"YQ*[QÀ À  "YQ|r !À À *YQ++"YQ*[QÀ !9Þ Ùâty%!9DM͌ ͏ */L͒ v *1L! !͕ !͘ */L͒ ! ! s#r͐*/L͛ s! ^}|2q 29(9:qw#9! {w7*!9& 6C#6O#6Ms9*|‰9!\&Û9!\&*|›9!!l&!~#fo9> +9#~¸9##ì9a{ !p9!*w#9:**9*!ѷ! , FNxg>GoyM:$"J87*|DM**8ڷ8><8~# x«8 ><8~+ x8|}8):7:,*8:*9$,v+2#:$=>$$>͋5v+>͋5>@2$=2#*="<1Ϳ5:=2="<|s$}d$[2Ϳ5z$g$[3Ϳ5>G>)͋5$#͞*D)͏,Ͷ,v++4ʱ$̓)) <ty%ë É +C!9DM͐! ͡*"SM{2PM{2OM! ^#Vr+szl! ^#Vr+s~#fo`is#rn}-l`i^#Vr+sn}i͐n&ͧ>uF>U>vR>\c!PM4f!OM4fv͐+|! !ͪ! !ͪ! !ͪ! !ͪ! !ͪ! !ͪ!ͭ!)H! ~#fo~#fo"1LͰ#| *1L! !ͪ!  #Vr+sn} */L͒ ! s#r͐|4 ͐N *1L! !͕ !͘ !"UM!"WM`iw#w͐͐Ү ͐))UM*/L͒ s#r͐))UM##*/L͒ s#r`i^#Vr+s` !9%s Not Squeezed %s has invalid decode tree size të÷k<:>29L*OM}$!":L*3L!! *QM}>* !?L |X*OM}S!! !?L"MM "7L"5L*MMn},*MM#"MM "7L*MM#"MM+n& }2>L*MM#"MM+n} ²>29L*MM ":L*OM}*:L*3L*>L&*7L*5L!?L!! !9!%d:EOF on stdin %w&|g}o|!w}ʇ*!**!!w}ʇ\!s#r\w#w\\tempin.$$$tempin.$$$tempout.$$$ëty%[|%!9DM*##s*#s*s! ~#fo͐ ~#fo)*s#r! 6#6`i6#6͐͐ ~#fosw}ʫs! ~#fo͐)~#fon}<|ʄ+>\! ~#fo͐)~#fo#n},* ! ~#fo͐)~#fo#,#|F! ~#fo͐)~#fo#!|!/2*6!! ~#fo͐)~#fo5|*n&|g}osë*##4! ~#fo͐)~#fo#*###s#r! ~#fo͐)~#fo#n}! ~#fo͐)!s#r! ~#fo͐)*s#r*s#rz!͐͐s#r͐##6#6͐~#foH9'!9DM͐b!͐~#foEU;&<'!9DM͐+|Ÿ! n&v͐++|½! n&!y͐+++|! n&!y͐++++|! n} ! !y! n&!y͐##^#Vr+szE͐^#Vr+s! ns&!͐͐~#fo|o!͐##6#6͐͐s#r͐^#Vr+s! ns&ü<'ä''!9DM͐!͐##~#fo!͐##~#fosop1=%d op2=%d cmd=0%o linno=%d cmdcrc=%u =ëty%!9DM*SM!L1`is#rzz>2RM*OM}w!!4!L7#|!!4!:*3L#"3L`i^#Vr+s!*2RMEOF on old file Uë÷ty%*J!LF||!!L>2QM*L}.•*L& ڕ!LO#|¸!!L!R*3L#"3LVUnexpected EOF on stdin Write Error!"]Q*UQ#"UQ!a! n&!aFile output error; disk full? B!9DM! n&?|i! n& n! n&}, Û#!y9DM! `iw͐`izâ!9ñN&!9DM͐!͐ͮs#rz!͐##w#w͐~#fo÷;&Ò&!9DM͐|͐+++|+!͐##^#Vr+szU͐^#Vr+sn&!͐͐~#fo`is#r!ڒ͐##^#Vr+s͐##͐?+s#r͐͐s#r͐^#Vr+sn&!9!9DM͐`is#rz+#n&|g}os! ~#fo͐)~#fo#n}<!!/2! ~#fo͐)~#fo#8*! ~#fo͐)~#fo#;#|¦! ~#fo͐)~#fo#!!/2*#4w}3͐! s#r͐͐ ~#fo ! ~#fo͐)! ~#fo͐#)~#fos#r! ^#Vr+s͐ ^#Vr+s`i^#Vr+s*^#Vr+sY͐ ͐s#r! ~#fo͐ ~#fo)w#wg! ^#Vr+s`i^#Vr+sË!9Can't open %s > >>>>> >H_!b! ^#Vr+s͐s! ^#Vr+s6͐͐b! ^#Vr+s͐s_ÿ!9q,!9DM`iw#w*MMn}.–*MM#"MM*3L*MMn}$­*MM#"MM!}*MMn&n|͐ ?*MM#"MM+n&`is#rí͐!97*N#"*͐! s#rz+͐?͐1!1!9@,!9DM`iw#w! 6#6͐ n! s{ s! n} ! ^#Vr+sW! n}- ! 6#6! ^#Vr+s! ^#Vr+sn! s=|͐ ?! nѯg`is#rà͐͐?!9U!9DM͐n}*! ^#Vr+sn&!9DM! n&0ͯW! n&9ͯ!9DM`iw#w! ~#fo͐n! ~#fo͐n}µ! ~#fo`i^#Vr+sn}²!i! ~#fo͐n! ~#fo͐nѯgW!9'!9DM͐͐  s#r! ^#Vr+sn`is{.C!! 5 ! s#r! 4! ^#Vr+sn`is`in&8 }Do!Uʫ!Xʴ!Oʽ!C"S4"`#͐~#fo|!! ^#Vr+s6-͐͐~#fos#r! ^#Vr+s! 6 !! 6!! 6! ~#fo! n&! ^#Vr+s~#fo! / ѯgs#rì"! ^#Vr+s! ^#Vr+s~#fos! ^#Vr+sì"! n}G"! 6#6! ^#Vr+s~#fo! s#r͐n}ʬ"͐|ʬ"! ^#Vr+s! ^#Vr+sns! ^#Vr+s! ^#Vr+sb"͐6! ! s#r! n}#! ^#Vr+s!#! ^#Vr+s! n}"!0"! sCODE3: CP 3 ;CODE = 3 ? JR NZ,CODE4 ;SKIP IF NOT LD A,C ;GET H DISPL SUB 20H ;SUBTRACT INDEX CODE3A: SUB NCOLS ;SUBTRACT LINE LENGTH JR NC,CODE3A ADD A,NCOLS ;ADD WIDTH OR L ;MAP ONTO LO ADDR LD L,A ;RESTORE LO ADDR RET CODE4: CALL PLUS1 RET SELECT: LD A,C ;GET DRIVE NO. CP 4 RET NC ;ERROR IF >3 CALL RSTART ;TURN DRIVE ON SEL1: IN A,(SYSD) ;GET SYSTEM DATA LD B,A ;SAVE IT AND 0F8H ;CLEAR DRIVE NO OR C ;MAP NEW DRIVE IN OUT (SYSD),A ;WRITE IT #"uô&'|%N&7* '\!*'#7:)~:,"s!"u*|*uʢ'*~#y'"*s*u¢'#"u*+"f'7*|DM**''><'~# x' ><'~+ x'|}'E)7:,*':*(}|2q N(D(:qw?(! {w7*!9& 6C#6O#6M(*|¥(!\&÷(!\&*|·(!!l&!~#fo(> +(#~(##(a{ !p)!*w# XX X X X XX XX XXXX XXXXXX/ X XXXX XXX XX*** X X XXXXXXXXXXXXX * * X X *---* X X X *-* * XXX X X *- * XXX X *- *X XXX *- *X X XXX *- *X X "͐! ^#Vr+sns{,#! ^#Vr+s#! n}]#! ^#Vr+s!]#! ^#Vr+s6 6#s#! ^#Vr+s`insÉ#! ^#Vr+s`insj ͐6!9á#s!9DM! ^#Vr+sn`is{#`in} #͐! ͞#͐`in&͞##|#!#é#!#!9 $$!9DM͐͐ [$͐^#Vr+s͐ H$͐0P$͐7s!&æ$͐ ͐͐ ͉͐$`is͐ ͐͐ )͐$`in&#&æ$!9õ$,!9DM`iw#w͐~#fon&Ͳ$}%͐ ?͐^#Vr+snѯg`is#r1 - - XXXX X XX X *** X XXXXX X ***** X XXX XX XXXX ******* XXX XXXX XX XX X ****** XXXXXXXXX XX XXX XX X **** X X** X X XX XX X X***X X //XXXX X XXXX X // X (:**)*!ѷ! , FNxg>Goyi)$#'"*s*u¢'#"u*+"f'7*|DM**''><'~# x' ><'~+ x'|}'E)7:,*':*(}|2q N(D(:qw?(! {w7*!9& 6C#6O#6M(*|¥(!\&÷(!\&*|·(!!l&!~#fo(> +(#~(##(a{ !p)!*w# XX *- *XX X X * *X* X X X * *X * X X X * * X** X XXXX X * * X** XX X X * ** X** X XX X * ** X* XXX X X * ** XX XXXX XXX * * * XXXX X $͐ %!9%J%!9DM! n&%|?%! n&D%! n&!9DM! n&aͯu%! n&zͯ  !\&!7*!%&*!%&%!, !\&!TELk7%`(ty%7*^#V#z&+V+^+&*%!-&!%%Broken pipe 7:O*o`7,2q*&:q):ʊ&=ʊ&=r:qo&7:)~:,"s!"u*|&**s&! ~&6*u*+"*"*u XX X // X XXXXXXXXXXXXXXXXXX/ X XXX// X X X X X X X X X X X X X X X X X XX X X X X X XXX XX X XXX X X X X X X X X X XX X XXXX X X XXXXXXXX\ XX XX X XX   X * * * X X X =======******* * * X X XXXXXXXX\ * * * /XXXXX XXXXXXXX\ ) =====********** * X ) \ ) ====* * X \ \ )XXXXX =========********** XXXXXXXXXXXXXXXXXXXXXX  XXX X X * ** XX XXXX XXX * * * XXXX X eck second letter cpi 'O' jnz not$right lda fcb+11 cpi 'M' ;last letter jz is$com ;if it is a COM, then cont. not$right: call end$mes ;it's not a com file, so tell ; db cr,lf,'Must be a command (.COM) file' db cr,lf,eos ; end$mes: pop d ;get address of message mvi c,mesout ;PRINT STRING command call bdos ;print error message ; finish: lhld old$stack-offset ;get old stack sphl ;put it in HL ret ;return to CP/M ; no$type mvi a,'C' ;if there was space, change stahe program ; program name next time, instead of running the program ; right away, the program asks you for the password. If you ; reply with something other than the original password, the ; program doesn't run, and it returns to the ccp. ; ; ;EQUATES mesout: equ 9 ;BDOS functions incon: equ 10 open: equ 15 close: equ 16 delete: equ 19 read: equ 20 write: equ 21 setdma: equ 26 ; cr equ 0dh ;ascii values lf equ 0ah eos equ '$' ; boot equ 0 ;0 for standard CP/M ;4200H for ALT. CP/n call bdos ;print it lxi d,defbuf ;point to default buffer mvi a,8 ;tell CP/M max chars stax d ;put it there mvi c,incon ;READ LINE command call bdos ;do it lxi h,defbuf+1 ;point to length lxi d,password-offset ;point to storage lda defbuf+1 ;get length ana a ;set flags jz gpasag ;if 0 then ask again inr a ;plus 1 for length byte mov b,a ;put length in B mploop mov a,m ;get char stax d ;save it inx h ;increment pointer inx d ; " " dcr b ;decrement READ5 READ4: HALT ;WAIT FOR INTERRUPT OUTI ;PUT DATA JP NZ,READ4 ;UNTIL B=0 CALL MWAIT ;PAUSE AND 0BCH ;NOT RDY,WR FLT,CRC ERR,LOST DATA READ5: LD HL,NMIADR LD (HL),D ;RESTORE DATA EI ;INTERRUPTS BACK ON RET Z LD HL,RETRY ;GET RETRY COUNT DEC (HL) ;ONE LESS RETRY JR NZ,READ6 OR A RET READ6: LD HL,TRAKNO ;GET CURRENT TRACK LD C,(HL) CALL SEEK ;SEEK AGAIN JR READ2 ;AND TRY AGAIN HMOVE: LD A,(SPEED) AND 3H ;GET STEPPING RATE OR B ;BUILD COMMAND  fcb+9 ;to COM mvi a,'O' sta fcb+10 mvi a,'M' sta fcb+11 ; is$com mvi a,0 ;zero record count sta fcb+32 mvi c,open ;OPEN file command lxi d,fcb ;load address of FCB in DE call bdos ;Open file inr a ;successful? jnz open$ok ;if so, then continue call end$mes ;if not, then tell ; db cr,lf,'Cannot open file',cr,lf,eos ; open$ok lxi d,buffer-offset ;point to where program goes r$loop: mvi c,setdma ;SET DMA command push d ;save it call bdos ;and tell CP/M lxi d,fcb M; bdos equ boot+5 fcb equ boot+5ch defbuf equ boot+80h tpa equ boot+100h stack equ tpa ; org tpa ; ; start: lxi h,0 ;save stack pointer dad sp ;put stack in hl shld old$stack-offset ;save it lxi sp,stack ;get new stack ; ; stack saved so program can return to CCP without ; intervening warm start. ; lda fcb+9 ;get first char of extension cpi ' ' ;if ' ' then change to .COM jz no$type cpi 'C' ;If there is an extension, jnz not$right ;make sure it's .COM lda fcb+10 ;chlength jnz mploop ;if not zero, then next char xra a ;zero a sta fcb+12 ;zero bytes in FCB sta fcb+14 sta fcb+32 mvi c,open ;OPEN file command lxi d,fcb ;point to FCB call bdos ;open the file lxi d,n$start ;point to new program start ; push d w$loop1 pop d ;get DMA push d ;put it back on stack mvi c,setdma ;SET DMA command call bdos ;tell CP/M lxi d,fcb ;point to FCB mvi c,write ;WRITE SECTOR command call bdos ;do it pop h ;get DMA address from stack lxi d,; title 'PASSWORD.ASM' ; page 60 ; ; ; PASSWORD.ASM Version 1.0 ; By Bo McCormick 8/6/81 ; ; This is a program that adds password protection ; to programs. Format: ; ; PASSWORD name_of_file ; ; Then answer the prompt with the password to be ; applied to the program: ; ; Password : enter password here ; ; If everything goes well, the program will be saved to disk. ; If not, a message is printed and control is passed ; to the CCP. ; ; The good part of this is, when you type in t;point to FCB mvi c,read ;READ sector command call bdos ;do it pop d ;get DMA address back ana a ;EOF? jnz done$read ;if so, then ask for password lxi h,80h ;length of sector dad d ;bump DMA xchg ;put new address in DE jmp r$loop ;and read some more ; done$read: xchg ;dma ==> hl shld end$prog-offset ;save last address gpasag call get$pas ;print password message ; pas$mes db 'Password: ',eos ; get$pas pop d ;get address of message mvi c,mesout ;PRINT STRING functio  80h ;length of sector dad d ;HL has new DMA push h ;put it on stack mov a,h ;this is to get 2's complement cma ;of address. We are subtracting mov d,a ;the current address from the mov a,l ;high address. If the high byte cma ;<1 , we are done mov e,a ; inx d ;Now 2's comp. of address in DE lhld end$prog-offset ;get ending address dad d ;Subtract (add 2's comp) mov a,h ;get high byte inr a ;is it FF (-1)? ana a ;set flags jnz w$loop1 ;if not, write another secth ; move equ $+offset mov a,m ;get byte stax d ;save it inx d ;point to next addresses inx h ; " " " " dcr b ;decrement length jnz move ;if not done, loop jmp defbuf+20h ;go to segment ; n$mv equ $+offset ;segment that gets moved lhld old$stack ;get stack pointer push h ;save it on stack lxi h,buffer ;get start of actual program mov a,h ;We have to compute the length cma ;and because X-Y equals mov d,a ;X + Two's complent(Y), we have mov a,l ;to find trd is correct, the program is moved ;to the TPA and executed. ; lxi h,0 ;save stack pointer dad sp ;stack is in HL shld old$stack ;save it lxi sp,stack ;get new stack call ot$pw ;print password message ; db cr,lf,'Password :' db eos ; ot$pw equ $+offset pop d ;get address of message mvi c,mesout ;PRINT STRING command call bdos ;print it lxi d,newbuf ;point to input buffer mvi c,incon ;READ LINE command call bdos ;read it ; lxi h,password ;point to actual password l!9"1:e WC':fO':gMfL Must be a command (.COM) file $ *>C2e>O2f>M2g>2|\<L Cannot open file $\ѧ­!Ò"ͿPassword: $ > !:ʱ*.#".ɯ22)! ",". <  NO FILECRC FILE$!   >. @ Checking wi match - : ̓ : J M @ Quantity of lines failed parse test - : ̓ : ~ M @ Quantity of file(s) not found - : ̓ * d͔  ͔ 0T  Җ Wyʩ 0T 0ztiilh2|2   ~$#~# x  : F} *}= ">͇1 ]2 s : ~# ++FILE NOT FOUND++$: F*}’">͇†]<  CANNOT CLOSE CRCFILE$CRCKLISTCRCSK FULL: CRCFILE$  w# !]͐ DONE$!e S!]Q !eZ @ --> FILE: XXXXXXXX.XXX CRC = oS) \<‘@ ++OPEN FAILED++ !" !" * | ʹ) \!~2 #" Ý: ) > T : ) @ ++FILE READ E---------------------------------------- Contributed by Randal Dickinson, US ARMY ENGIN DIV EUR ATTEN: EUDDP-S APO NY 09757 FIND.*------- This routine searches the disk for a string of uppercase characters. (Sorry, all you characters have to be uppercase or you'll be ignored.) Anyone with a few hours to kill might futz this one so it doesn't look down its nose at lower case etc. -------------------------------------------------th file - ! ~T #M M 2 2 2 2 ! >2 3o: : @ ***No CRC Files found***$> ʉ ʉw#: <2 P6: .6@ Can not parse string ! ~ʽT #ñM ! > 6 #6^#6! ~T #! 4M #x] #e w~ T #>2 @ - s M@ File not found ! 4 >2 o: G: „: G: „@ *Match* 2 ! 4@ <-- is, was --> : ) > T : ) M 2 ! 4<2 ~# @ Not a space between CRC values<2 G-CATALOG???; ; EX 1.4 INSTALLATION .SUB FILE 11-20-82 ; ; 1. ERASE ANY FILES FROM PREVIOUS .SUB EXECUTIONS ; ERA EX14?.HEX Y ERA EX14?.SYM Y ERA EX14?.PRN Y ; ; 2. USE CPM 2.2 XSUB (not required if using previous version of EX) ; XSUB ; ; 3. CREATE EX14.LIB FOR ASSEMBLY OF ORG 0 RELOCATED CODE SEGMENT ; ED EX14.LIB #A #K IBASE EQU FALSE ;SUPPRESS EX14 INITIATOR CODE (ENABLE RELOCATED CODE) IREL EQU 0 ;SET RELOCATED CODE SEGMENT TO ORG 0 E ; ; 4. ASSEMBLE ONLY ORG 0 RELOCATED CODE SEGMENT ; RROR++ <* |): o% |g}o" 2  ; 0T ~T #~A > T > _h : F{͇2h2|: ʲ !\   :\2 ! \  \ ! \  \! \  \<7=Ɓo&   ]  2h2|2   ~$#~# x  : F} *}= ">͇1 ].”#””͡”››tK››͸›* =: =͔="  ʳ ª~#.  ¿~  #~  .+~#0:0~#!A.O.Gy~#0M0 K MMɷ:m2 FSÄCRCKLIST$$$››tK›, › **}|!"*{z*~]*"Ü  DISK FULL: CRCFILE$!"*~ MAC EX14 ; ; 5. RENAME STEP 4 FILES ; REN EX140.HEX=EX14.HEX REN EX140.SYM=EX14.SYM REN EX140.PRN=EX14.PRN ; ; 6. CHANGE EX14.LIB FOR ASSEMBLY OF ORG 100H RELOCATED CODE SEGMENT ; ED EX14.LIB #A #K IBASE EQU FALSE ;SUPPRESS EX14 INITIATOR CODE (ENABLE RELOCATED CODE) IREL EQU 0100H ;SET RELOCATED CODE SEGMENT TO ORG 0+100H E ; ; 7. ASSEMBLE ONLY ORG 100H RELOCATED CODE SEGMENT ; MAC EX14 $$PZ SZ ; ; 8. RENAME STEP 7 FILE ; REN EX141.HEX=EX14.HEX ; ; 9. CHANGE EX14.LIB FOR ASSEMBLY   it. Especially exciting on 5MHz modified KayPros. ----------------------------------------------------------------------------- Contributed by Jeff Richards TREK -------- You finally get a chance to command the Starship Enterprise. Phasors, photon torpedoes, warp drive, in fact, just about every thing but Jim Shatner. ----------------------------------------------------------------------------- From Micro Cornucopia et al ZCPR -------- Once you modify your system disk with this, you'll nevs file.] ; ; EX14.HEX contains EX Initiator Code ; EX14.SYM contains symbols for SID for EX Initiator Code ; ; EX140.HEX contains EX ORG 0 Relocated Code Segment ; EX140.SYM contains symbols for SID for EX ORG 0 Relocated Code ; ; EX141.HEX contains EX ORG 100H Relocated Code Segment ; ; BEGREL is the symbol for the start of the Relocated Code ; Segment in EX14.COM ; ; DRVERL is the symbol for the length of the Relocated Code ; Segment ; ; DRVL8 ------ From Micro Cornucopia et al ZCPR -------- Once you modify your system disk with this, you'll never go back to "straight" CP/M. This Z80 CCP replacement will look on drive A for a COM file when you are logged in on drive B and page during TYPE etc. Install by typing DIF2 SSED DIF/SSED.DOC ----- With these you can update someone elses copy of a program by simply creating a file of the updates (using DIF2) and sending only the differences. He would then incorporate the di --> FILE: EX14 .COM CRC = 02 E3 --> FILE: D .COM CRC = 66 48 --> FILE: TREK .COM CRC = DB 75 --> FILE: INSTALL .SUB CRC = 5F B1 --> FILE: 9-DISK .DOC CRC = EA 5E --> FILE: ALIENS .COM CRC = 40 35 --> FILE: ALIENS .DOC CRC = E6 FA --> FILE: FIX .DOC CRC = 0C C9 --> FILE: FIX .COM CRC = DE 4A --> FILE: FIND .ASM CRC = 8B 50 --> FILE: FIND .COM CRC = 93 41 --> FILE: FIND .DOC CRC = 64 2F --> FILE: DIF/SSED.DOC CRC = D7 AF --> FILE: DIF2 er go back to "straight" CP/M. This Z80 CCP replacement will look on drive A for a COM file when you are logged in on drive B and page during TYPE etc. Installation instructions in ZCPR.DOC DIF2 SSED DIF/SSED.DOC ----- With these you can update someone elses copy of a program by simply creating a file of the updates (using DIF2) and sending only the differences. He would then incorporate the differences (using SSED2) into his file. Saves on modem time. ----------------------- is the symbol for the length of the storage required ; for the relocation table bit map to be created by ; RELS.UTL ; ; RELOCL is the symbol for the DW in EX14.COM that will contain ; the length of the Relocated Code Segment ; ; ; A. SID is invoked and the .SYM files for the ORG 0 Relocated Code ; Segment and the Initiator Code Segment are loaded. ; ; B. The DW at symbol RELOCL is updated with the value of DRVERL ; from the ORG 0 Relocated Code Segment. ; ; C. OF EX INITIATOR CODE ONLY ; ED EX14.LIB #A #K IBASE EQU TRUE ;ENABLE EX14 INITIATOR CODE GENERATION (SUPPRESS RELOCATED CODE) IREL EQU 0 ;RESET RELOCATED CODE SEGMENT TO ORG 0 E ; ; 10. ASSEMBLE EX INITIATOR CODE ONLY ; MAC EX14 ; ; 11. USE SID AND RELS.UTL TO CREATE EX14.COM ; ; [note: If only REL.UTL is available, comment out the lines ; starting with IEX14.COM below and change the line ; SID RELS.UTL to SID REL.UTL and a SAVE 10 EX14.COM ; must be added at the end of thi .COM CRC = 6D 0D --> FILE: SSED2 .COM CRC = D8 D7 --> FILE: SNOOPY .TXT CRC = 15 BF --> FILE: PASSWORD.ASM CRC = E3 4B --> FILE: PASSWORD.COM CRC = 5A 48 --> FILE: CRC .COM CRC = B2 07 --> FILE: EX14 .DOC CRC = 9B 8F --> FILE: EX14 .SUB CRC = 14 EF --> FILE: EX14 .TST CRC = A3 A9 --> FILE: EX14 .ASM CRC = 3D 9A --> FILE: ZCPR .DOC CRC = BD F6 --> FILE: ZCPR .HEX CRC = 33 17------------------------------------------------------ To verify all the files on this disk, type CRC ----------------------------------------------------------------------------- can update someone elses copy of a program by simply creating a file of the updates (using DIF2) and sending only the differences. He would then incorporate the differences (using SSED2) into his file. Saves on modem time. -----------------------Memory for the two copies of the Relocated Code Segment ; (ORG 0 and ORG 100H) and the relocation table bit map is zeroed. ; ; D. The ORG 0 Relocated Code Segment is loaded starting at ; location BEGREL. ; ; E. The ORG 100H Relocated Code Segment is loaded after the ; segment loaded in step C plus the length of the relocation ; table bit map. ; ; F. RELS.UTL routine SETADRS sets the starting addresses of ; the two Relocated Code Segments for creation of the relocation ; !   table bit map. ; ; G. RELS.UTL routine SETLEN sets the length of the Relocated ; Code Segment and builds the relocation table bit map. ; ; *H. RELS.UTL routine SAVE saves the EX Initiator Code Segment, ; the ORG 0 Relocated Code Segment, and the relocation table ; bit map created by RELS.UTL. ; ; * [note: not used if only REL.UTL is available] ; ; I. CP/M is returned to by G0. ; ; **J. SAVE 10 EX14.COM saves the EX Initiator Code Segment, ; the ORG 0 RelocatedT SUPPRESS ; DIR ^.XXX^. ; ; TEST PRINT SUPPRESS WITH EX COMMENT ; DIR ^.YYY ;; EX COMMENT^. ; ; TEST PRINT SUPPRESS WITH IMMEDIATE PRINT MODE ; DIR ^.ZZZ ^^. ; ; ; TEST CARRIAGE RETURN(3) ; ||| ; ; TEST $$ ; $^$|$$ ; ; TEST $^$$ DEFAULT PARAMETERS ; ^$ DF1 DF2 DF3 DF4 DF5 DF6 DF7 DF8 DF9 ; PARAMETERS=$9 $8 $7 $6 $5 $4 $3 $2 $1 ; ; TEST LOOP TEST ; ^: LT PARAMETERS ; ^$ DF1 DF2 DF3 DF4 DF5 DF6 DF7 DF8 DF9 ; PARAMETERS=$9 $8 $7 $6 $5 $4 $3 $2 $1 ; ;  '^<...^>' immediate display support, ; '^#' EX message suppression function, ; '^$' default parameter support, ; and '^|' cr,lf generation function [Larry Steeger] ; ; 1.0 08-03-82 corrected $^ error and ^ error [Larry Steeger] ; ; ? 06-19-82 added missing TRUE and FALSE equates [Ron Fowler] ; ; ? 05-17-82 corrected last cold boot no active message ; DATE EQU 1122H ;SET UP DATE YEAR EQU 82H ;SET UP YEAR MARK EQU 1 ;SET MARK VERS EQU 4 ;SET V Code Segment, and the relocation table ; bit map created by REL.UTL. ; ; ** [note: used ONLY if REL.UTL is used] ; SID RELS.UTL IEX14.HEX EX140.SYM R I* EX14.SYM R SW.RELOCL .DRVERL . F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0 IEX140.HEX R.BEGREL IEX141.HEX R.BEGREL+.DRVERL+.DRVL8-100 C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8 C.SETLEN .DRVERL .BEGREL+.DRVERL IEX14.COM C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for ex; ; EX14.ASM - An enhanced version of EXEC and EX. ; ; START 05-09-82 ; ; DATE 11-20-82 *LAST MAJOR CHANGE ; ; HISTORY: ; ; 1.4 11-20-82 fix for 1.3 modification to put CP/M serial # on ; a page boundary and refresh it on warm starts. ; (Some programs are not subtracting 6 from the ; BDOS+1 location when calculating high memory, ; MBASIC is one of these) ; ; 1.3 11-07-82 fix for software that expects CP/M serial # below ; BDOS ; ; EX14.TST - TEST EX FUNCTIONS ; ; ; TEST RECURSION PREVENTION ; EX14 ; ; TEST XSUB PRESENT ; XSUB ; ; TEST IMMEDIATE MODE ; ^ ; ; TEST $^? WAIT FOR CARRIAGE RETURN ; ^ ; ; SET EX MESSAGE SUPPRESS ; ^# ; ; TEST EX MESSAGE SUPPRESS BY WARMSTART ; ^C ; ; RESET EX MESSAGE SUPPRESS ; ^# ; ; TEST RESET EX MESSAGE SUPPRESS BY WARMSTART ; ^C ; ; TEST EX COMMENT ; DIR X.X ;; EX COMMENT ; ; TEST PRINERSION ; ; EX14.COM IS AN ENHANCEMENT OF EXEC.COM AND EX.COM ; ; OPTIONS: ; ; EX cr ; ; EX cr ; ; ^ WILL GIVE CONTROL CHARACTER ; ; | WILL BE CR ; ; ^| WILL BE CR,LF ; ; ^: WILL CAUSE EX TO RE-EXECUTE THE .SUB FILE FROM THE BEGINNING ; ; ^? WILL CAUSE EX TO WAIT FOR A CARRIAGE RETURN ; (^C WILL ABORT EX AT THIS POINT ALSO) ; ; ^$ WILL CAUSE THE REST OF THE LINE TO BE TREATED AS A ; SET OF DEFAULT PARAMETERS SEPARATED BY BLANKS TO BE ; USecution. ; .SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for exID RELS.UTL IEX14.HEX EX140.SYM R I* EX14.SYM R SW.RELOCL .DRVERL . F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0 IEX140.HEX R.BEGREL IEX141.HEX R.BEGREL+.DRVERL+.DRVL8-100 C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8 C.SETLEN .DRVERL .BEGREL+.DRVERL IEX14.COM C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for exJMP address. ; ; 1.2.1 09-16-82 fix for MBASIC execution under EX 1.2 . ; ; 1.2 08-11-82 added '^:' EX runtime re-execute logic function, ; '^?' EX runtime wait for carriage return, ; logic to prevent input/EX buffer overlap, ; logic to insure (Xsub Already Present), ; logic to prevent EX runtime recursion loop, ; and prompt character logic [Larry Steeger] ; ; 1.1 08-06-82 added ';;' EX comment's support, ; '^.' print suppression function, ;"  ED IF THE USER HAS NOT PROVIDED ONE ON EX'S COMMAND LINE. ; ; ^# WILL TOGGLE PRINT SUPPRESSION OF EX MESSAGES ; ; ^. WILL START PRINT SUPPRESSION OF ALL CHARACTERS ; FROM .SUB FILE UNTIL A SUBSEQUENT ^. IS ENCOUNTERED ; ; ;; WILL INDICATE THAT THE ;; AND ALL CHARACTERS FOLLOWING IT ; UNTIL A LF IS ENCOUNTERED ARE NOT INCLUDED IN EX'S ; TEXT BUFFER ; (I.E. AN EX ONLY COMMENT) ; ; ^< WILL START IMMEDIATE DISPLAY OF CHARACTERS FROM ; THE .SUB FILE UNTIL ^> IS ENCOUNTERED OFFBIT ;NO XTHL ;YES, GET BIT MAP MOV A,M ;GET NEXT BYTE INX H ;INCREMENT BIT MAP POINTER XTHL ;SAVE FOR LATER STA BITMAP ;KEEP BIT OFFSET OFFBIT: LDA BITMAP RAL ;TEST FOR OFFSET STA BITMAP ;SAVE NEW BYTE JNC NOFSET ;NO DCX D ;GET BACK TO LSB LDAX D ADD L STAX D INX D ;MSB LDAX D ;YES ADC H ;ADD IN OFFSET STAX D ;PUT IN MOVED PLACE NOFSET: INX D ;INCREMENT MOVED POINTER JMP OFFLUP ;CONTINUE WITH RELOCATE ; GOTO: POP D ;RESTORE STACK DCX H ;RELOCATE PROGRAM-1 PUSH MACLIB EX14 ; $-PRINT IF BASE $+PRINT ; ; START OF EX INITIATOR CODE SEGMENT ; ORG 100H ; START: LXI H,0 DAD SP SHLD CCPSTK ;CCP STACK PTR LXI SP,BEGREL ;USER STACK AREA MVI A,0C9H ; (8080 RET) STA START ;PREVENT RE-ENTRANCE BY ZCPR LXI D,SIGNON;LOGO CALL PRINT CALL EXACTV ;CHECK FOR RECURSION LHLD RELOCL ;GET RELOC PROGRAM LENGTH PUSH H POP B PUSH B ;SAVE LENGTH FOR FUTURE USE LHLD BDOS+1 ;GET BASE LXI D,-806H ;GET BEFORE CCP DAD D MOV A,L ;SUBTRACT RELOC LENGKS XCHG CALL MOVE ;MOVE TO INPUT BUFFER XCHG MVI M,CR INX H MVI M,LF INX H SHLD INBUF JMP GETLIN ; OPENSB: LXI D,DFCB+9 LXI H,SUBNAM;MOVE 'SUB' TO DFCB FILE TYPE MVI B,3 CALL MOVE XRA A STA DFCB+32 LXI D,DFCB MVI C,15 ;OPEN FILE CALL BDOS INR A JNZ READTX LXI H,NOSBF2 LXI D,DFCB+1 MVI B,8 ;NAME LENGTH CALL MOVEFN ;MOVE FILE NAME MVI B,3 ;TYPE LENGTH MVI M,'.' INX H LXI D,DFCB+9;FILE TYPE POINTER CALL MOVEFN ;MOVE FILE TYPE MVI M,'$' ;END TERMINATER; (I.E. DISPLAY ONLY .SUB INPUT) ; ; $<1-9> WILL REPLACE PARAMETER<1-9> IN TEXT FROM THE COMMAND LINE ; ; $$ WILL GIVE $ ; ; $^ WILL GIVE ^ ; ; $| WILL GIVE | ; ; |,cr,lf,1ah will eat last from | to end of buffer ; ; ^C FROM CONSOLE WILL ABORT EX ; FALSE EQU 0 TRUE EQU NOT FALSE ; DAY0 SET (DATE AND 0FH)+'0' DAY1 SET ((LOW DATE) SHR 4)+'0' MONTH0 SET ((HIGH DATE)AND 0FH)+'0' MONTH1 SET (DATE SHR 12)+'0' ; YEAR0 SET (YEAR AND 0FH)+'0' YEAR1 SET (YEAR SHR 4)+'0' ; MARK0 SET  H ;SAVE TO USE IN RELOCATED PROGRAM SHLD OUTBUF INX H ;GET TO BEGINNING OF RELOCATED PROGRAM PUSH H LXI D,DBUFF+1 ;TERMINATE COMMAND LINE WITH CR PUSH D LDA DBUFF MOV L,A MVI H,0 DAD D MVI M,CR LXI H,PRMDMY;START AT DUMMY PARAMETER FOR .SUB FILE SPEC PUSH H LXI B,PRMPNL+2 XRA A CALL FILL ;CLEAR PTR AREA POP H POP D MVI A,(PRMPNL/2)+1 STA PRMMAX ;HIGHEST PARAMETER # + 1 for .SUB SPEC CALL PARMS ;BUILD POINTERS FOR COMMAND LINE PARMS LDA DBUFF ;SEE IF .SUB FILE PRESETH SUB C MOV E,A MOV A,H SBB B MOV D,A PUSH D ;SAVE NEW TOP/START TO MOVE TO LXI H,BEGREL;START OF MOVE OMOVE: MOV A,B ORA C JZ MOVEND DCX B MOV A,M STAX D INX D INX H JMP OMOVE ; MOVEND: POP D ;GET START OF MOVED PROGRAM POP B ;LENGTH OF MOVE PROGRAM PUSH H ;START OF BIT MAP MOV H,D ;MSB OFFSET MOV L,E ;LSB OFFSET OFFLUP: MOV A,B ;TEST LENGTH ORA C ;IF 0 JZ GOTO ;JUMP TO RELOCATED PROGRAM DCX B ;DECREMENT COUNT LDA COUNT INR A STA COUNT ANI 07H JNZ  JMP NOSUB ; READTX: LHLD INBUF XCHG LXI H,80H ;GET SECTOR OFFSET DAD D SHLD INBUF MVI C,26 ;SET DMA ADDRESS CALL BDOS LXI D,DFCB MVI C,20 ;READ SEQUENTIAL CALL BDOS ORA A JZ READTX ;READ COMPLETE .SUB FILE LHLD INBUF ;MAKE SURE BUFFER'S TERMINATED LXI D,-80H ;GET BACK TO END DAD D ENDSTR: MVI M,1AH ;EOF CHARACTER SHLD ENDBUF ;EOB ADDRESS MOV A,L SUI LOW BEGREL+1;SEE IF BUFFER'S EMPTY MOV A,H SBI HIGH BEGREL JC BUFLOW XRA A STA IMFLG1 STA IMFLG2 STA PRTFLMARK+'0' VERS0 SET VERS+'0' ; BELL EQU 7 CR EQU 0DH LF EQU 0AH ; PSUP EQU 80H ;^. PRINT SUPPRESS FLAG IMON EQU 81H ;^< IMMEDIATE MODE START IMOFF EQU 82H ;^> IMMEDIATE MODE STOP MSUP EQU 83H ;^# EX MESSAGE SUPPRESS FLAG CRWAIT EQU 84H ;^? EX RUNTIME WAIT FOR CR FLAG REXEC EQU 85H ;^: EX RUNTIME RE-EXECUTE FLAG ;JMPMON EQU 0FEH ;^; EX JMP TO SYSTEM MONITOR ; WARM EQU 0 BDISK EQU 4 BDOS EQU 5 DFCB EQU 5CH DBUFF EQU 80H ; ; NOTE: EX14.LIB IS CREATED BY THE EX14.SUB GENERATION PROCESS ;NT ORA A JNZ OPENSB ;OPEN SUB FILE LXI H,0 SHLD LINES ;START LINE COUNTER MVI A,7FH ;GET BUFFER LENGTH STA DBUFF-1 LXI H,BEGREL;SET UP OUTPUT BUFFER SHLD INBUF GETLIN: CALL CRLF LHLD LINES INX H SHLD LINES CALL DECOUT ;PRINT LINE # MVI E,':' ;GET PROMPT CALL OUTCHR MVI E,' ' CALL OUTCHR LXI D,DBUFF-1 MVI C,10 ;READ CONSOLE BUFFER CALL BDOS LXI D,DBUFF LDAX D ;GET LENGTH MOV B,A INX D LHLD INBUF ;GET INPUT POINTER ORA A ;SEE IF END JZ ENDSTR ;THATS ALL FOL#  G STA OUTCNT LXI H,1 SHLD LINES LHLD OUTBUF SHLD OUTLNE SHLD BUFSTR LXI D,BEGREL MOVSTR: LDAX D INX D ANI 7FH ;MAKE SURE NO PARITY CPI LF JNZ MOVST0 MOVSTX: CALL INCR JMP MOVSTR ; MOVST0: CPI 1AH JZ SETUP CPI '|' ;CARRIAGE RETURN JNZ MOVST1 ;NOPE PUSH D ;SAVE OLD POINTER INX D INX D LDAX D ;GET PRESENT LOCATION+3 POP D ;GET OLD POINTER CPI 1AH ;END OF BUFFER JZ SETUP ;THATS ALL SHE WROTE MVI A,CR CALL INCR ;INCREMENT LINES FOR ERRORS JMP MOVST4 ; MOVSTM,A LDA OUTCNT ORA A ;ANY CHAR. ON THIS LINE? JZ EXCOM2 ;NO...SKIP CR EXCOM1: POP H ;YES..FORCE CR MVI A,CR CALL CHRSTR MVI A,LF JMP MOVSTX ;CONTINUE ; EXCOM2: POP H MVI A,LF JMP MOVSTX ;CONTINUE ; EXCOMX: POP H JMP SETUP ; MSGSUP: MVI A,MSUP ;CONVERT '^#' TO MESSAGE SUPPRESS FLAG JMP MOVST3 ; PRTSUP: MVI A,PSUP ;CONVERT '^.' TO PRINT SUPPRESS FLAG PUSH H LXI H,PRTFLG CMP M ;ALREADY ON? JNZ PRTSST ;NO...SET FLAG XRA A ;YES..CLEAR FLAG PRTSST: MOV M,A ;SET/RESET FLAGI A,REXEC ;CONVERT '^:' TO RE-EXECUTE FLAG JMP MOVST3 ; ;JMPMN: MVI A,JMPMON ;CONVERT '^;' TO JMP TO MONITOR FLAG ; JMP MOVST3 ; GCRW: MVI A,CRWAIT;CONVERT '^?' TO CRWAIT FLAG JMP MOVST3 ; GCRLF: MVI A,CR ;GENERATE CR & LF CALL CHRSTR MVI A,LF CALL CHRSTR STA LCHR JMP MOVSTR ; PRMDEF: PUSH H LXI H,PRMDFP PUSH H LXI B,PRMDFL XRA A CALL FILL ;CLEAR PTR TABLE POP H MVI A,PRMDFL/2 STA PRMMAX ;HIGHEST PARAMETER # CALL PARMS ;BUILD DEFAULT PARAMETERS PTRS POP H INXUP: MVI M,0FFH ;SETUP END OF DATA DCX H MVI M,0FFH MOV A,L ;SETUP EX RECURSION ID, XSUB PRESENT, AND CP/M S/N CPI 11 ;12 BYTES ON THIS PAGE? JNC SETUP1 ;YES..OK DCR H ;NO...DROP DOWN 1 PAGE SETUP1: MVI L,11 ;FORCE PAGE BOUNDARY FOR CP/M S/N MVI M,0FFH ;SETUP EX RESURSION ID DCX H MVI M,'X' DCX H MVI M,'E' DCX H LDA BDOS+2 ;SET UP BDOS JUMP TO PROTECT DATA MOV M,A DCX H LDA BDOS+1 MOV M,A DCX H MVI M,JMP PUSH H LXI D,-6 DAD D ;PTR TO PSEUDO CP/M SERIAL # PUSH H 1: MOV C,A LDA IMFLG1 CPI IMON ;IMMEDIATE MODE ON ? MOV A,C JZ MOVST2 ;YES..SKIP EX COMMENT PROCESSING CPI ';' JZ EXCOMM ;PROCESS POSSIBLE EX COMMENT MOVST2: CPI '^' JZ MOVST5 ;CONVERT CONTROL CHARACTERS CPI '$' CZ GTPARM ;SUBSTITUTE COMMAND PARAMETER OR CONTROL CHAR. MOVST3: STA LCHR CPI CR ;=CR? JNZ MOVST4 MOV C,A LDA OUTCNT ORA A ;ANY CHAR? MOV A,C JZ MOVSTR ;NO..USE INPUT CR ONLY IF OTHER NON-CONTROL ; CHARACTERS IN CURRENT LINE MOVST4: CALL CHRSTR ;ADD TO BUFF POP H MVI A,PSUP JMP MOVST3 ; IMPRTY: MVI A,IMON ;CONVERT '^<' TO IMMEDIATE MODE START STA LCHR PUSH H LXI H,IMFLG1 CMP M ;ALREADY ON? POP H JZ MOVSTR ;YES.. STA IMFLG1 STA IMFLG2 JMP MOVST3 ;NO... ; IMPRTN: MVI A,IMOFF ;CONVERT '^>' TO IMMEDIATE MODE STOP STA LCHR PUSH H LXI H,IMFLG2 CMP M ;ALREADY OFF? POP H JZ MOVSTR ;YES.. STA IMFLG2 STA IMFLG1 JMP MOVST3 ;NO... ; CHRSTR: PUSH PSW ;CHECK FOR INPUT/EX BUFFER OVERLAP PUSH D PUSH H LHLD ENDBUF XCHG  D ;SKIP CR MVI A,LF JMP MOVSTX ;CONTINUE AT EOL ; EXCOMM: PUSH H LXI H,LCHR CMP M ; DOUBLE ;? MOV M,A POP H JNZ MOVST3 ;NO...CONTINUE MOV C,A LDA PRTFLG CPI PSUP MOV A,C JZ MOVST3 ;PRINT SUPPRESS LDA IMFLG1 CPI IMON MOV A,C JZ MOVST3 ;IMMEDIATE MODE INX H ;YES..IGNORE PREVIOUS ; PUSH H LXI H,LCHR LDA OUTCNT DCR A ;DROP 1 CHAR. STA OUTCNT EXCOML: LDAX D ;IGNORE CHARACTERS UNTIL EOF OR LF INX D CPI 1AH ;EOF JZ EXCOMX CPI LF ;LINE FEED JNZ EXCOML MOV  LHLD BDOS+1 DAD D ;PTR TO REAL CP/M SERIAL # POP D MVI B,6 CALL MOVE ;SETUP CP/M SERIAL # POP H XTHL ;GET JUMP ADDRESS/SAVE TOP OF MEMORY ; ; (SP) TOP OF MEMORY ADDRESS ; (SP+2) START OF BUFFER ADDRESS ; PCHL ;GOTO IT ; ; ERROR EXITS ; GETERR: LXI D,CMDER ;CONTROL CHARACTER INVALID CALL PRINT JMP LINE ;PRINT LINE # AND LINE AND EXIT ; NODEFP: LXI D,NOPRM ;UNKNOWN PARAMETER CALL PRINT JMP LINE ;PRINT LINE # AND LINE AND EXIT ; PRMERR: LXI D,PMERR CALL PRINT JMP LINE ER CALL CNTINC ;INCREMENT COUNT JMP MOVSTR ; MOVST5: CALL GETCMD ;VALIDATE CONTROL CHARACTERS CPI ':' JZ REXC ;RE-EXECUTE ; CPI ';' ; JZ JMPMN ;JMP TO MONITOR CPI '?' JZ GCRW ;CR WAIT CPI '|' JZ GCRLF ;CR,LF GENERATION CPI '$' JZ PRMDEF ;DEFAULT PARAMETERS' LINE CPI '.' JZ PRTSUP ;PRINT SUPPRESS TOGGLE CPI '#' JZ MSGSUP ;MESSAGE SUPPRESS TOGGLE CPI '<' JZ IMPRTY ;IMMEDIATE MODE START CPI '>' JZ IMPRTN ;IMMEDIATE MODE STOP JMP MOVST3 ;OTHER CONTROL CODES ; REXC: MV POP H MOV A,L CMP E JNZ CHRSTX ;LSB<> MOV A,H CMP D JZ OVERL ;MSB=, OVERLAP WILL OCCUR/ABORT EX ; CHRSTX: POP D ;ADD CHAR. TO EX'S BUFFER POP PSW MOV M,A DCX H RET ; EXACTV: LHLD BDOS+1 ;CHECK FOR EX RECURSION INX H INX H INX H ;SKIP 1ST JUMP MVI A,'E' CMP M RNZ ;NOT 'E' INX H MVI A,'X' CMP M RNZ ;NOT 'X' INX H MVI A,0FFH CMP M RNZ ;NOT 0FFH LXI D,EXACT CALL PRINT ;EX ALREADY PRESENT CCPRET: LHLD CCPSTK SPHL LDA 4 RET ;RETURN TO CCP ; SET$  ;PRINT LINE # AND LINE AND EXIT ; PRMTOO: LXI D,TOOARG;TOO MANY PARAMETER ARGUMENTS CALL PRINT LHLD ERRLNE CALL EPRT ;PRINT PARAMETER LINE JMP CCPRET ; BUFLOW: LXI D,BUFMTY;TEXT BUFFER EMPTY CALL PRINT JMP CCPRET ; NOSUB: LXI D,NOSBF1;.SUB FILE NOT FOUND CALL PRINT LXI D,NOTHER CALL PRINT JMP CCPRET ; OVERL: LXI D,OVERLP;INPUT/EX BUFFER OVERLAP CALL PRINT JMP LINE ; ; SUBROUTINES ; ; CONTROL CODES 0-1FH ; WITH SUPPORT FOR $ . # < > ; GETCMD: LDAX D ;GET NEXT CHARACTER DE? RZ ;YES.. LDA OUTCNT INR A STA OUTCNT RET ; PARMS: MVI B,0 ;CLEAR PARAMETER COUNTER XCHG SHLD ERRLNE ;SAVE IN CASE OF ERROR XCHG ; PARMSL: LDAX D ;IGNORE LEADING SPACES INX D CPI CR JZ ENDLNE CPI ' ' JZ PARMSL DCX D MOV M,E INX H MOV M,D INX H INX D INR B ;COUNT+1 LDA PRMMAX CMP B JC PRMTOO ;TOO MANY ARGUMENTS ; ENDPRM: LDAX D ;GET TO END OF PARAMETER INX D CPI CR JZ ENDLNE CPI ' ' JNZ ENDPRM XRA A DCX D STAX D ;TERMINATE PARAMETER I MOVPRM: LDAX D ;MOVE PARAMETER TO BUFFER INX D ORA A JZ ENDPAR MOV M,A DCX H JMP MOVPRM ; ENDPAR: POP D INX H MOV A,M RET ; NOPARM: PUSH H LXI H,PRMDFP;TRY DEFAULT PARAMETERS LDA PRMNUM CPI PRMDFL-1 JNC NODEFP ;> HIGHEST # MOV E,A MVI D,0 DAD D MOV E,M ;GET PARAMETER POINTER INX H MOV D,M POP H MOV A,E ORA D JZ NODEFP ;NO PARAMETER PRESENT JMP MOVPRM ;MOVE PARAMETER TO BUFFER ; MOVEFN: LDAX D CPI ' ' ;SEE IF SPACE RZ MOV M,A INX D ;INCREMENT PODECIMAL LINE NUMBER PUSH D PUSH B LXI B,-10 ;RADIX FOR CONVERSION LXI D,-1 ;THIS BECOMES NO DIVIDED BY RADIX DX: DAD B ;SUBTRACT 10 INX D JC DX LXI B,10 DAD B ;ADD RADIX BACK IN ONCE XCHG MOV A,H ORA L ;TEST FOR ZERO CNZ DECOUT ;RECURSIVE CALL MOV A,E ADI '0' ;CONVERT FROM BCD TO HEX MOV E,A ;TO E FOR OUTPUT MVI C,2 CALL BDOS POP B ;RESTORE REGISTERS POP D POP H RET ; MOVE: MOV A,M ;MOVE STRING AT (HL) TO (DE) FOR LENGTH IN B INX H STAX D INX D DCR B JN INX D ;INCREMENT POINTER CPI '|' RZ ;CR,LF GENERATION CPI 'a'-1 ;LOWERCASE? JC GETUPR ;NOPE CPI 'z'+1 ;a-z? JNC GETERR ;NOPE sui 'a'-'A' ;GET TO UPPERCASE GETUPR: CPI '@' ;0-1FH CONTROL CODE? JNC GETCC ; CPI ';' ; RZ ;JMP TO MONITOR CPI ':' RZ ;RE-EXECUTE CPI '?' RZ ;CR WAIT CPI '$' RZ ;DEFAULT PARAMETERS' LINE CPI '.' RZ ;PRINT SUPPRESS TOGGLE CPI '#' RZ ;MESSAGE SUPPRESS TOGGLE CPI '<' RZ ;IMMEDIATE MODE START CPI '>' RZ ;IMMEDIATE MODE STOP JMP NX D JMP PARMSL ;IGNORE SPACES BETWEEN PARAMETERS ENDLNE: XRA A DCX D STAX D ;TERMINATE LAST PARAMETER INX D MVI A,CR STAX D RET ; PRINT: MVI C,9 ;PRINT STRING AT (DE) CALL BDOS RET ; EPRT: MOV A,M ;PRINT PARAMETER LINE AT (HL) CPI CR RZ CPI 0 JNZ EPRT1 MVI A,' ' EPRT1: INX H PUSH H MOV E,A MVI C,2 CALL BDOS POP H JMP EPRT ; CRLF: LXI D,CRLFS ;PRINT CR/LF CALL PRINT RET ; LINE: LXI D,LINEM ;PRINT LINE # AND LINE IN ERROR AND EXIT CALL PRINT LHLD LINEINTERS INX H DCR B JNZ MOVEFN RET ; INCR: PUSH H ;SAVE OUTPUT POINTER LHLD LINES INX H ;INCREMENT LINE COUNTER SHLD LINES LXI H,LCHR ;CLEAR LAST CHARACTER MVI M,0 LXI H,OUTCNT;CLEAR CHARACTER COUNT MVI M,0 MOV L,E ;DE=HL MOV H,D SHLD BEGLIN POP H SHLD OUTLNE ;SAVE NEW OUTPUT LINE RET ; CNTINC: CPI ' ' ;CONTROL CHARACTER? RC ;YES.. ANI 80H ;SPECIAL CONTROL? RNZ ;YES.. LDA PRTFLG CPI PSUP ;PRINT SUPPRESS FLAG? RZ ;YES.. LDA IMFLG1 CPI IMON ;IMMEDIATE MOZ MOVE RET ; FILL: PUSH D ; FILL STORAGE AT (HL) WITH CHARACTER IN A MOV E,A ; FOR LENGTH IN BC MOV A,B ORA C MOV A,E POP D RZ DCX B MOV M,A INX H JMP FILL ; ; WORKING STORAGE AREA ; SUBNAM: DB 'SUB' LINEM: DB ' error line # $' EXACT: DB CR,LF,'(Ex Already Present)$' BUFMTY DB CR,LF,'Text buffer empty$' OVERLP: DB CR,LF,'Input/EX Buffer Overlap$' NOPRM: DB CR,LF,'No parameter or default parameter$' PMERR: DB CR,LF,'Parameter$' NOSBF1: DB CR,LF,'File ' NOSBF2: DB 'filenameGETERR GETCC: SUI 40H ;GET CONTROL CODE RNC JMP GETERR ; GTPARM: LDAX D INX D CPI '$' RZ CPI '^' ;UP ARROW RZ CPI '|' ;CARRIAGE RETURN RZ CPI '1' JC PRMERR CPI '9'+1 JNC PRMERR SUI '1' ;GET ACTUAL # (ZERO RELATIVE) ADD A ;DOUBLE FOR OFFSET STA PRMNUM PUSH D PUSH H LXI H,PRMPNT CPI PRMPNL-1 JNC NOPARM ;> HIGHEST # MOV E,A MVI D,0 DAD D MOV E,M ;GET PARAMETER POINTER INX H MOV D,M POP H MOV A,E ORA D JZ NOPARM ;NO PARAMETER PRESENT, TRY DEFAULTSS CALL DECOUT ;PRINT LINE # CALL CRLF LHLD BEGLIN PUSH H ;SAVE BEGGING POINTER FINDCR: MOV A,M INX H CPI 1AH ;END OF BUFFER JZ FOUND CPI CR JNZ FINDCR FOUND: MVI M,0 ;END OF STRING POP H ;START OF STRING CALL PRNTHL ;PRINT BAD LINE JMP CCPRET ;THATS ALL FOLKS ; PRNTHL: MOV A,M ;PRINT LINE AT (HL) INX H ORA A RZ MOV E,A PUSH H ;SAVE POINTER CALL OUTCHR POP H ;GET POINTER BACK JMP PRNTHL ; OUTCHR: MVI C,2 ;PRINT CHARACTER IN E JMP BDOS ; DECOUT: PUSH H ;PRINT %  .typ$' NOTHER: DB ' not there$' CMDER: DB CR,LF,'Control character$' TOOARG: DB CR,LF,'Too many arguments - $' SIGNON: DB 'EX ',MARK0,'.',VERS0 DB ' ',MONTH1,MONTH0,'-',DAY1,DAY0,'-',YEAR1,YEAR0,'$' CRLFS: DB CR,LF,'$' ; CCPSTK: DW 0 ;CCP STACK PTR IMFLG1: DB 0 ;=IMON ENCOUNTERED IMFLG2: DB 0 ;=IMOFF ENCOUNTERED PRTFLG: DB 0 ;=PSUP ON LCHR: DB 0 ;LAST CHARACTER READ PRMMAX: DB 0 ;HIGHEST PARAMETER # PRMNUM: DB 0 ;CURRENT $<1-9> NUMBER * 2 (ZERO RELATIVE) ERRLNE: DW 0 BITMAP: DB 0 ;PRESENT CALL BDOS LXI H,STARTM;TELL USER WE'RE STILL HERE CALL PMSG LDA BDISK MOV C,A LHLD CCPJMP PCHL ;GOTO CONSOLE PROCESSOR ; ; JMP TABLE TO OVERLAY BIOS ; LOCJMP: JMP NWARM ;WARM JMP BCONST ;CONST JMP NCONIN ;CONIN JMP NCONOT ;CONOT ; ; CONSOLE INPUT INTERCEPT ROUTINE ; NCONIN: LXI H,0 DAD SP ;SAVE RETURN STACK LEVEL SHLD CONSTK LXI H,MEMTOP;SET USER STACK NCONNL: CALL BCONST ;GET CONSOLE STATUS ORA A JZ GETBUF ;GET CHARACTER FROM BUFFER CALL BCONIN ;GET CHARACTER HLD REVBUF SHLD SAVBUF MOV A,M CPI MSUP ;1ST CHAR=MESSAGE SUPPRESS? JNZ EX1 ;NO... DCX H ;YES..SKIP CHARACTER SHLD REVBUF STA MSUPFL ;SET INITIAL FLAG EX1: LXI SP,MEMTOP LHLD BDOS+1 ;GET WARM JUMP FOR STANDARD CCP MOV A,H SUI 8 MOV H,A MVI L,3 ;SET UP FOR WARM CCP JUMP SHLD CCPJMP LHLD WARM+1 SHLD WARMPT LXI D,BSWARM MVI B,12 CALL MOVE ;MOVE BIOS JUMPS LHLD WARMPT XCHG LXI H,LOCJMP MVI B,12 CALL MOVE ;MOVE NEW BIOS JUMPS TO BIOS AREA ; ; EX RUNTIME BIOS INTERECHO TO CONSOLE JMP NCONNL ;...LOOP UNTIL IMOFF ; REXECR: LHLD SAVBUF ;START AT TOP OF BUFFER AGAIN SHLD REVBUF XRA A STA IMFLG ;RESET ALL FLAGS STA PSUPFL STA MSUPFL JMP NCONNL ;...LOOP UNTIL ^C ; CRWRTN: CALL BCONST ;WAIT FOR CHAR. JZ CRWRTN CALL BCONIN CPI 'C'-40H JZ EXABRT ;=^C CPI CR JZ CRWRTX ;=CR MVI C,BELL CALL BCONOT ;<>CR JMP CRWRTN ; CRWRTX: MOV C,A ;ECHO CR/LF CALL NCONOT MVI C,LF CALL NCONOT JMP GETBUF ; PSUPCK: LXI H,PSUPFL CMP M JNZ PSUPST ; OFFSET BIT'S COUNT: DB 0FFH ;PRESENT OFFSET BIT COUNT BEGLIN: DW BEGREL ;BEGINNING OF OLD LINE POINTER LINES: DW 1 INBUF: DW BEGREL ENDBUF: DW 0 ;END OF INPUT BUFFER OUTCNT: DB 0 OUTLNE: DW 0 OUTBUF: DW 0 BUFSTR: DW 0 RELOCL: DW 0 ;LENGTH OF RELOC PROGRAM(FILLED IN BY SID) PRMDFP: ;DEFAULT PARAMETER PTRS REPT 9 DW 0 ENDM PRMDFL EQU $-PRMDFP PRMDMY: DW 0 ;DUMMY PARAMETER FOR .SUB FILE SPEC. PRMPNT: ;COMMAND LINE PARAMETER PTRS REPT 9 DW 0 ENDM PRMPNL EQU $-PRMPNT PATCH: ;PACPI 'C'-40H ;SEE IF TERMINATE CHARACTER JZ EXABRT CPI 'S'-40H ;13H JNZ NCONEX CALL BCONIN ;WAIT FOR NEXT CHARACTER ANI 7FH LHLD REVBUF INX H MOV M,A SHLD REVBUF MVI A,'S'-40H;13H NCONEX: LHLD CONSTK ;RESTORE CALLER'S STACK SPHL RET ; GETBUF: LDA PSUPFL ;SET PRINT SUPPRESS FLAG FOR NCONOT STA OUTFLG CALL GETCHR ;GET NEXT CHARACTER ; CPI JMPMON ;JMP TO MONITOR? ; JZ JPMON ;YES..DO IT CPI REXEC ;RE-EXECUTE? JZ REXECR ;YES..RESET BUFFER PTR CPI CRWAIT ;CR WAIT? JZ CRWRTNCEPT ROUTINES ; NWARM: LXI SP,MEMTOP LHLD REVBUF ;SEE IF WE'RE AT BUFFERS END MOV A,M CPI 0FFH ;TEST IT JZ WARMR ;REAL WARM START RETURN LHLD WARMPT SHLD WARM+1 LHLD MEMTOP SHLD BDOS+1 PUSH H ;RESTORE CP/M S/N LXI D,-6 ; DAD D ;HL=BDOS+0 XTHL ;(SP)=PSEUDO BDOS+0/HL=PSEUDO BDOS+6 INX H ;+1 MOV E,M ;GET BDOS+6 INX H ; MOV D,M ; XCHG ;HL=BDOS+6 LXI D,-6 ; DAD D ;HL=BDOS+0 POP D ;DE=PSEUDO BDOS+0 MVI B,6 ;LENGTH OF S/N CALL MOVE ; LXI D,DBUFF MVI C,26 ;SET DMASET FLAGS IF NOT EQUAL XRA A ;ELSE RESET FLAGS PSUPST: MOV M,A ;SET/RESET SAVED FLAG JMP GETBUF ;AND GET NEXT CHARACTER(SETS EXEC FLAG) ; MSUPCK: LXI H,MSUPFL CMP M JNZ MSUPST ;SET FLAGS IF NOT EQUAL XRA A ;ELSE RESET FLAG MSUPST: MOV M,A ;SET/RESET FLAG JMP GETBUF ;AND GET NEXT CHARACTER ; IMFLGS: STA IMFLG ;SET/RESET IMMEDIATE MODE FLAG JMP GETBUF ;GET NEXT CHARACTER ; ;JPMON: DI ;DISABLE INTERRUPTS ; LHLD BDOS+1 ;SAVE BDOS JMP LOCATION ; SHLD BDOSVE ; ; XRA A ;STOP H3TCH AREA REPT 32 DB 'p' ENDM REPT 30 DW 0 ENDM ; ; INSURE 8 BYTE BOUNDARY FOR REL.UTL(RELS.UTL) ; ?PLOC SET $ IF (?PLOC MOD 8) GT 0 ?PLOC SET (?PLOC AND 0FFF8H)+8 ;GET NEXT 8 BYTE BOUNDARY ORG ?PLOC ENDIF ; BEGREL: DS 0 ;RELOC PROGRAM STARTS HERE (ALSO USED AS BUFFER) ; ENDIF ; ; END OF EX INITIATOR CODE SEGMENT ; $-PRINT IF NOT BASE $+PRINT ; ; START OF EX RELOCATED CODE SEGMENT ; ORG REL ; EX: POP H ;GET TOP OF MEMORY SHLD MEMTOP POP H ;GET START OF BUFFER S ;YES..WAIT FOR CR CPI MSUP ;MESSAGE SUPPRESS FLAG? JZ MSUPCK ;YES..TOGGLE FLAG CPI PSUP ;PRINT SUPPRESS ? JZ PSUPCK ;YES..TOGGLE FLAG CPI IMON ;IMMEDIATE MODE START ? JZ IMFLGS ;YES..SET FLAG CPI IMOFF ;IMMEDIATE MODE STOP? JZ IMFLGS ;YES..RESET FLAG CPI CR ;CR? JNZ GETEXT ;NO...EXIT XRA A STA OUTFLG ;YES..RESET PRINT SUPPRESSION MVI A,CR GETEXT: MOV C,A LDA IMFLG CPI IMON ;IMMEDIATE MODE ? MOV A,C JNZ NCONEX ;NO...RETURN TO CALLER WITH CHAR CALL BCONOT ;YES..IMMEDIATE &  7 DRIVES ; OUT 078H ; ; LDA 0DH ;GET H88.CTL PORT VALUE ; ANI 0CCH ;MASK 4MHZ, ORG-0, 2MS CLOCK, AND SINGLE-STEP OFF ; OUT 0F2H ; JMP 0 ;JMP TO MTR90 ; ; CONSOLE OUTPUT INTERCEPT ROUTINE ; NCONOT: LDA OUTFLG ;PRINT SUPPRESSION? ORA A RNZ ;YES...IGNORE ECHO MOV A,C STA PMCHR JMP BCONOT ; GETCHR: LHLD REVBUF MOV A,M DCX H SHLD REVBUF CPI 0FFH ;EOB? RNZ ;NO...RETURN LHLD REVBUF INX H ;POINT TO EOB SHLD REVBUF CALL MOVBAK ;MOVE JUMPS BACK LHLD MEMTOP ;SEE$ ; PMCHR: DB 0 PSUPFL: DB 0 OUTFLG: DB 0 IMFLG: DB 0 MSUPFL: DB 0 CONSTK: DW 0 ; DB 'BDOS>' ;BDOSVE: DW 0 ; ?PLEN SET $ IF (?PLEN MOD 8) GT 0 ?PLEN SET (?PLEN AND 0FFF8H)+8;GET NEXT BOUNDARY ENDIF ; DRVERL EQU ?PLEN ; DRVL8 EQU DRVERL/8 ;LENGTH OF RELOCATION BIT MAP ORG DRVERL ; ENDIF ; ; END OF EX RELOCATED CODE SEGMENT ; END  ; DRVL8 EQU DRVEUF: DW 0 CCPJMP: DW 0 WARMPT: DW 0 ; ; ORIGINAL BIOS JMP TABLE ; BSWARM: JMP $ BCONST: JMP $ BCONIN: JMP $ BCONOT: JMP X: STA DONEC RET ; PMSG: LDA MSUPFL ;PRINT MESSAGE AT (HL) CPI MSUP ;MESSAGES SUPPRESSED? RZ ;YES..EXIT PUSH H PMSGL: POP H MOV A,M CPI '$' ;EOM? RZ ;YES..EXIT INX H PUSH H MOV C,A CALL BCONOT JMP PMSGL ; F121: LXI H,BSWARM ; INSURE ONLY BIOS 1.1.2 LXI D,NWARM ; CALLS FROM NOW ON 1.1.2 MVI B,3 ; FOR PROGRAMS 1.1.2 CALL MOVE ; THAT MAY HAVE 1.1.2 LXI H,BCONIN ; COPIED OUR 1.1.2 LXI D,NCONIN ; ADDRESSES AS 1.1.2 MVI B,3 ; IF THEY WERE 1.1.2 CALL :10E40000C305E5C301E55000202020202020202066 :08E41000202020202020200024 :04E4590008E417E4D8 :10E47700434F4D01242424202020202053554200BF :01E487000094 :10E4BC001600004449522084E84C4953545DE954F9 :10E4CC0059504561E955534552C0EA44465520CA56 :10E4DC00EA474F2020D7EA4552412035E9534156AF :10E4EC0045FAE952454E207CEA4745542081EB4AD7 :10E4FC00554D50D2EAAF3207E43177E4C5791F1F8E :10E50C001F1FE60F5FCD48E6CD0BE6322AE5C17939 :10E51C00E60F325CE62803CD10E6117AE43E00B734 :10E52C002FC42AE62F322AE53A07E4B7202931779 IF BDOS+1=MEMTOP XCHG LHLD BDOS+1 MOV A,E SUB L MOV A,D SBB H JNZ EXEND ;DON'T REPLACE BDOS JUMP INX D ;GET TO BDOS JUMP LDAX D MOV L,A ;LSB INX D LDAX D MOV H,A SHLD BDOS+1 EXEND: CALL PMCHRS LXI H,DONEM ;TELL USER WE'RE DONE CALL PMSG LHLD CONSTK ;GET OLD STACK SPHL JMP BCONIN ; ; ^C ABORT EXIT ; EXABRT: LXI SP,MEMTOP ;^C ABORTS EX LXI H,ABORTD CALL PMSG JMP WARMX ; WARMR: CALL PMCHRS LXI H,DONEM ;END MESSAGE CALL PMSG ; WARMX: CALL MOVBAK ;MOVE JUZCPR manual on disk write to: Micro Cornucopia P.O. Box 223 Bend, OR 97709 and we will send it to you for the regular price of our user disks ($12.00). ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: active. Do not enter anything from the keyboard until EX14 says that it is finished. You may then hit the reset button and enjoy ZCPR. Once installed, ZCPR may be moved to other disks using SYSGEN. If you are interested in the source code and the full MOVE ; IN THE BIOS. 1.1.2 LXI H,BCONOT ; (MBASIC DOES THIS) 1.1.2 LXI D,NCONOT ; 1.1.2 MVI B,3 ; 1.1.2 CALL MOVE ; 1.1.2 RET ; 1.1.2 ; ; WORKING STORAGE AREA ; ABORTD: DB CR,LF,'>>>Ex Aborted<<<',CR,LF,'$' STARTM: DB CR,LF,'(Ex Active)$' DONEM: DB CR,LF,'(Ex Completed)',CR,LF DONEC: DB '>$' ; REPT 10 DW 0 ENDM MEMTOP: DW 0 REVBUF: DW 0 SAVBUF: DW 0 CCPJMP: DW 0 WARMPT: DW 0 ; ; ORIGINAL BIOS JMP TABLE ; BSWARM: JMP $ BCONST: JMP $ BCONIN: JMP $ BCONOT: JMP F :10E53C00E4CDAAE5CD00E6C641CDB1E5CD46E6B7C2 :10E54C002812FE0A3809D60AF53E31CDB1E5F1C6DE :10E55C0030CDB1E5CD6AE6CDCBE6CD04E6CD00E617 :10E56C00325CE6CDE3E7C4F2E6118BE5D53ADAE7A7 :10E57C00B7C2DCEACD62E8C2DCEA7E23666FE9CD85 :10E58C00CFE7CDE3E73A9CE4D62021DAE7B6C2F236 :10E59C00E6189BCDE8E54E6F2046696CE5C93E0D4B :10E5AC00CDB1E53E0AC50E025FE5CD0500E1C1C95E :10E5BC000E01CDE1E5C361E6F53E00B72806F1C5D5 :10E5CC000E0518E4F1F5CDB1E5F1FE0ACAE1E9C991 :10E5DC00119BE40E14C5CD0500C1B7C9F5CDAAE554 :10E5EC00F1E3FMPS BACK JMP WARM ; ; SUBROUTINES ; MOVBAK: LHLD WARMPT ;MOVE OLD JUMP TABLE BACK TO BIOS XCHG LXI H,BSWARM MVI B,12 CALL MOVE CALL F121 ;CALL 1.2.1 FIX FOR MBASIC 1.1.2 RET ; MOVE: MOV A,M ;MOVE STRING FROM (HL) TO (DE) FOR LENGTH IN B INX H STAX D INX D DCR B JNZ MOVE RET ; PMCHRS: LDA PMCHR ;SET PROMPT CHAR ONLY IF SPECIAL CHARACTER CPI ' '+1 RC CPI '0' JC PMCHRX CPI '9'+1 RC CPI 'A' JC PMCHRX CPI 'Z'+1 RC CPI 'a' JC PMCHRX CPI 'z'+1 RC PMCHR'  5CDF5E5F1E3C97ECDB1E57E23B7D9 :10E5FC00C8F818F50E1918091180000E1A18020E19 :10E60C000DC305005F0E0E18F8AF32BBE4119BE48E :10E61C000E0FCD05003CC90E1018F7119BE40E111E :10E62C0018F00E1218EC212AE57EB7C83600117AC4 :10E63C00E40E1318CC3E005F18021EFF0E2018C10A :10E64C00CD46E687878787215CE6B6320400C93E53 :10E65C0000320400C9FE61D8FE7BD0E65FC93A2ABD :10E66C00E5B72845117AE4D5CD1CE6D1283B3A898B :10E67C00E43D329AE4CDDFE5202F1107E421800040 :10E68C00015000EDB02188E436002335117AE4CD39 :10E69C0023E628153E24CDB1E5210815E6CADEE9CDAAE53E1732BCE421BDE4BA :10E98C0036FF060021BDE47EFE803809E5CDDCE5CE :10E99C00E1203DAF7734218000CD39E77EE67FFE64 :10E9AC001AC8FE0D280EFE0A280AFE09280DCDC431 :10E9BC00E5041812CDC4E50600180B3E20CDC4E5C5 :10E9CC000478E60720F5CDE1E628B9FE03C818B4B3 :10E9DC003DC8C37BEBE521BCE435201036163E0068 :10E9EC00FE502808CDBCE5FE03CA8BE5E1C9CD3E3F :10E9FC00E76F2600E5CD4DEA0E16CD1EE6E1283A6E :10EA0C00AF32BBE4CD2CE713FE5328021B29ED5388 :10EA1C0059E41100017CB528182BE521800019E57B :10EA2C00CD07E6119BE40E15CD33E80603FE2E200613CDF7 :10E81C0033E81803CD54E8060423360010FBED53FF :10E82C0059E43ABEE4B7C9CD0FE7281C23FE2A20D1 :10E83C0007363FCD5AE818077713FE3FCC5AE8103D :10E84C00E6CD0FE7C81318F923362010FBC93ABEE2 :10E85C00E43C32BEE4C921BFE40E0B119CE4060477 :10E86C001ABE200A132310F81AFE202004C9231004 :10E87C00FD23230D20E50CC93E80F5CDE3E7CDC586 :10E88C00E7219CE47EFE20CC2DE9CD2CE706002868 :10E89C0016FE412806FE53200E068013ED5359E454 :10E8AC00FE532803F1AFF5F1571E00D57832D4E8AA :10E8BC00CD27E6CC9FE528673D0F0F0FE660EBCDC5E7CD15E6201B3E00FE0003 :10EBAC00280932ABEB5FCD48E618E921DAE7AFB6BE :10EBBC00C277EB360118DD2100013EE3BC3816E5C7 :10EBCC00EBCD07E6119BE4CDDFE5E12006118000DB :10EBDC001918E73DC8CDE8E546756CEC3E01B7C9A0 :0000000000 2028032318F542 :10EB4C0006001181007E12B7280504231318F678ED :10EB5C00328000CDAAE5CD04E6CD4CE6CD0001CD4A :10EB6C0004E6CD5BE6CD10E6C33AE5E1CD41E6CD5A :10EB7C00CFE7C3F2E6CD7CE7E5CDE3E7E120F3CDCB :10EB8C0094EBF5CD41E6F1C922C4EBCD46E6324219 :10EB9C00E632ABE4CDF5E5CDE2 :10E6AC00E1E6C8CD32E6C33AE5CD32E6CD4CE63EE6 :10E6BC003ECDB1E50E0A1106E4CD0500C35BE621A3 :10E6CC0007E44604237ECD61E67710F83600210876 :10E6DC00E42259E4C9D50E0BCDE1E5C4BCE5D1C9A2 :10E6EC00CD3EE7FE10D8CDAAE52A5BE47EFE2138AC :10E6FC0008E5CDB1E5E12318F3CDEDE5BFCD32E66C :10E70C00C33AE51AB7C8FE2038DCC8FE3DC8FE5F28 :10E71C00C8FE2EC8FE3AC8FE3BC8FE3CC8FE3EC929 :10E72C00ED5B59E41AB7C8FE20C01318F7856FD0FB :10E73C0024C9CDE3E721A6E4060B7E2BFE202004A2 :10E74C0010F81804FE48282B219CE40100117EFED1 :10DE1E5D1E1200B18E5 :10EA3C00E4119BE4CD23E63C2003CDE1EBCD04E6D1 :10EA4C00C9CDE3E7C2F2E6CDC5E7CD27E6119BE4DD :10EA5C00C8D5CDE8E544656C6574652046696C6580 :10EA6C00BFCDBCE5D1FE59C28BE5D5CD3DE6D1C9B4 :10EA7C00CD4DEA3ADAE7F5219BE411ABE401100045 :10EA8C00EDB0CD2CE7FE3D2028EB232259E4CDE35D :10EA9C00E7201EF14721DAE77EB72804B870201171 :10EAAC0070AF329BE4119BE40E17CD1EE6C0CD9FD8 :10EABC00E5C37BEBCDECE65FCD48E6C38EE5CDEC54 :10EACC00E632A9EB18F5CD7CE7183C21000118378C :10EADC003A9CE4FE2020143ADAE7B7CA8EE53D32C04F3E56 :10E8CC000ACDBCE7D1D5A2FE00204AD17B1CD5E6EF :10E8DC0003F52005CDAAE51808CDEDE520207C2018 :10E8EC00A0060178CDBCE7E67FFE202013F1F5FEF3 :10E8FC0003200B3E09CDBCE7E67FFE2028163E2008 :10E90C00CDB1E50478FE0C300BFE0920D63E2ECDA1 :10E91C00B1E518CFF1CDE1E62005CD2EE61897D163 :10E92C00C9060B363F2310FBC9CDE3E7FE0B2012C3 :10E93C00CDE8E5416C6CBFCDBCE5FE59C23AE5CDE6 :10E94C00AAE5CDC5E7AF47CDB4E8119BE4CD3DE6D4 :10E95C00C93EFF1801AF32C6E5CDE3E7C2F2E6CD02 :10E96C002CE732EBE9280513EB2259E4CDC5E7CDB2 :10E97C00E75C0020281823D630FE0A301357790707078173 :10E76C00380B8138088238054F10E379C9C3F2E6BB :10E77C00CDE3E7219CE4110000060B7EFE20282D42 :10E78C00FE482829D63038E5FE0A3806D607FE1092 :10E79C0030DB234F7A07070707E6F0577B0707079D :10E7AC00075FE60FB2577BE6F0B15F10CEEB7DC989 :10E7BC0021800081CD39E77EC9AF329BE4CDD9E70A :10E7CC00C81807CDD9E7C83A5CE6C310E63E00B7D7 :10E7DC00C83D215CE6BEC9219BE4AF32DAE7CD2C03 :10E7EC00E7ED535BE41AB7280ADE4047131AFE3AEA :10E7FC0028071B3A5CE67718067832DAE77013AF15 :10E80C0032BEE40608C :10EAEC005CE6CD5BE6CD10E6C38EE53AA4E4FE20F1 :10EAFC00C2F2E62177E411A4E4010300EDB0210099 :10EB0C0001E5CD8BEBE1C02269EBCDCFE7CDE3E79F :10EB1C0021DAE7E57E329BE421ABE4CDE6E7E17E4A :10EB2C0032ABE4AF32BBE4115C00219BE401210069 :10EB3C00EDB02108E47EB72807FE2028032318F542 :10EB4C0006001181007E12B7280504231318F678ED :10EB5C00328000CDAAE5CD04E6CD4CE6CD0001CD4A :10EB6C0004E6CD5BE6CD10E6C33AE5E1CD41E6CD5A :10EB7C00CFE7C3F2E6CD7CE7E5CDE3E7E120F3CDCB :10EB8C0094EBF5CD41E6F1C922C4EBCD46E6324219 :10EB9C00E632AB