IMD 1.18: 2/06/2016 18:20:26   7\XMASMENU MASMENUCOPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<د2? ه!߶2:2a{_:߷ʖ:߷>Ľʖ:=2–!B!6#5ʖ:S:2E!~Яw>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:!ʎ ݯw4!Y~ʆ͌†t=ʆf ^ T ݯ2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Y޸psp2mÆÆf ͧÆFILE EXISTS _: É: :߷ʉ=2)ͽÉ T!@k!B}|q=qf^!~2>`~2߯2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOO*!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*Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "ڷ"͌#>?͌͘ =_.:;<> Oڅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER!yO#< Ty#O 3ۯ21y_͸2y2ͽ:طì 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<ʄADCOMf^: !߶ Â$$$ SUB"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*{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# 1͘A͌>><92^ :߷¥.!_~#fow]ݭގޥ!v"!çREAD ERRORçNO FILE^:߷ ! ~ 3#0 Wx x ڀ ڂ G ~ # 3x~#B!Y~ɯ2:߷=!߾ý:߷=!߾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇҐ^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#"##"##"##"!A     AMODEM CQM AMODEM DQC` INIT COMKMDM795 CQM[KMDM795 DQC MODEM7 CQMF!"#$%MODEM7 DQC1&'()RCPM DQC>*+,-SMODEM CQMO./012SQ16 CQMl3456789SQUEEZE DQCs:;<=>?@AUSQ19 CQMXBCDEFGVAXXMOD LBRHIJKLMNOPQXMODEM COMRSXMODEM2 FQRTUVWXYZ[\]XMODMFORDOC,^_`vAMODEM.COM 2 !"#$%&'()*+,-./012345656789:;<=>?@ABCDEFGHIJKLMNOPQRSS<=%HTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw~-|7*.PG xyz{|}~'o{V  :g|KxGs1%VKW{MLLLh  1234567890-=`qwy[]a;'\zm,./eiou!@#$%^&*()_+MBOOT AQM5abcdAPMDM LBRYefghijklmnopqrUMODEM DOCstUMODEM28C uvwxyz{|}~UMODEM28C 0UMODEM28HLP8UMODEM32C UMODEM32C VMODEM28C 3VMODEM28H CMODEM CQ LYAMBOOT CQ $-BOSKUG 161MEX114 COM@>:^a3b /#9!)N;O"$ YUA,&_+KJ(ihyX l`E?c@p[WQM1 xtd4{jeTICmF }zsn]Dwurg\VL0kfZR+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~QWY{}A:"|ZM<>?EIOU16T!336&*D+2:$2(Iu1 ## #### ###^^nfut ###:ʑw:2E**E}DQ>2Ó5ELV_hqx|ÀÄÈÌÓÚÞâ$ͷtE(tͷtͷtͷtͷttt t!t"t#ͪt$ͪt%t&t'z2t!("R!"T:C*R|+"R|*T"R!"Tt4t012P2Q2<:P(2Q+2:P+:<:Q+:P+_ 1!"3"5)>22!"!"!~~jwO1!VsV1!  JV辎~˝?x &%Rm)H GJ8R‘p#%)H G_E!Gt1gJCܐT+LQ5Jߖ\Zw H)z9)Ox}<);<)EHK~^~˕o7~7}t*FwAit.__ϦJScR6W}%#tVRpa.zoann߾ב0ThM`R^)1!%ޖp#%)H GJ8R‘p$*]r~Js4M IUmȥ%zpPR#R7~\w?Gg!ARitFI!߮Stg׋J#QYAəF#2&V&2$ޙ t}9%}u$V<'љfw`܋HiktSKO扂zr"!d~"L3qbbP*d2)#!A@Ҙt&Uˡ2{ lJjż¤:5ftg'.,%mC.ԊwA)W/cl{? -znh7y'L-t!Lݟ0#:R4ţBFP Co$޸00u_qXҨB+L;+[n? ;<Zq?f`́1pC8WaL;KR]P/3P؀H=qUU5g>Zr[hxmKKExgJ0oMyUS`cxmd~*z~VɔZ5~U0o-1ru}spրL-_ WO1iWXf9l GWF#KKL0@ &rL=y/;SWp eG &潀Q`pR,Rx%%vhh'Q7̿Uf7n e{!&"vgb$'FDsw#re19;#9*U b9)icYJs31KuBz\օTE?Iz?״Hѿgi ,zDJ²{Uhso-`\NLD4Fnw+%Fra˽*AL9ZzQ0. &I@"I#;aTJ䄇_o“;֦&|しބ'wMMxyM;6;O(^4/m-HCtgK&8jZ&Ra#*DPtd )ㄞ& *$.k#)r۫~RzLkSMBLЊc '5db% j3O`ޙɥ:^ =.DN*+,>ŧ PMRV%1q5#*$"^@jЙ0saH]x} *Z-hޱGr3}ub1b麬BcDc Hڙ;<11mi($It =$.+3{"'JEMFk`id{AWUѴ18^$oP/孢u9^ KH.e)UxL%J')3?aj 79܌c6St'O>9{ 'l2Gr;M1HEVcuYCk`idN{AIYQf۝0S<Q3őٱ O(o/c +-HCtgK &f2'qY5H#r| LJ/(D5bԄVoYj0zxiO͓uTȽ$x U0I\VfP$J>ox/ұ^rBFw%GT+tҡrKGt(>$ %e#zzS8(JGx8^Xr/9!J;Ɏx!-)1^>^-?,ܔJی7GVی7-6 h7|aPF݂/5I}I'Ռ@ nsv>;4ڜwh\KabicsMJlz߻w4s wc;msL[B" QA1)+ rn۝\apnQnB!& 潀Xz2Oh$LgR!}7V*tt;7+i ѥ%N~ ]Z$}UJ]KAGWb]iߟנ+IB оK)RHD}OAGW HU ѕ$+){OAGWR4K Kg+=}:N`e F^܄$hߋS`~k\XqB8tߏ¤Rr\jբKN:F)̓!éV_~LZ5BLy=} 4'8;+=崾/lJ1#r9Dz)/BLDHN)7%689"DL䄇BAu DsLZ9DzP!&"vgb$'J15= s, "DL䄔4$6EiBJ_۝!DsM9Dz!/BLDH &5 b9*$.k9DzP $ 3L)Ew֦$V zB1Sje3%>Ljt9*ӹ}5x}jK>Kk5V{[J|#\q`K~uDwX~4q0GXJbXxVk%k"|63@0jEQ-+&A_* zz($COǴ  cY{ &|`ifF#QdȺ,3 &šZ浚ɮ zR QII *`y_{}N bb&y/  ZeE#id:9ei$ qTH=zU4BG_eZ~-)\Otv??ٯzb$gο|%50kJ58vOq$z) ;;;1cGr¦V] &ڜcuYCDG ^@1"1. rnw&FrNB ѺA     i:³Yހ!\+^zUC0ą}lþš^ZC2֒z Q0VW3{|Re ƣ}lLj4MA7MoLǧ11TF(L睕?Ts͎ϩͿJ<5&.Zע},U)覉)7➪!cqEWԍk e~k Dx, 11A͋yBCYGbtB6uc,\!܀{T֦.·=TUC0jfA_(Z͌*%lLkSMfkA_(կV̗3-bb&Ke #$ȱ܄L睕b9$C(cuYH ' 潀 v睕dғaiv^n0r{$sǙ_g!츐JZtc{[f߮&?5c(q*MsǾf ~hF/;M)ʏ}ьZNSZǾf ~8pz1^@P|g$K뇘4&ID, a"k+"⎳ı~$hX:K뇘ʨ;+ıvqٯpӜlc1cp<p]4?شq-s8^~9=Ǧcx~8^.q8f>6=px>Z'0Z'묕} Z'Pe_F2x25jyrޝqVQxFh7G$h7Di> Q[(‹lXE!ޠ#a{A,<1`&"vC Ƙyi[!x,Ix HuYä|3Ѫ!p1j|2nwhaiWcSHcUQ^FUQ^hK٧C, KX(~ʴ*A(~/xx>V d~Ԉ%!}v0ˆ'yWH0Ǣ3L&+Ow%q/)L3 WcN˷MfDM&ݗZ _u9xH0y_(Zr_b!]KL'tkw@PQ! [V4OL3 [N˼%$N cQ j^*$B=}$ f2̾`8-s+E!&f2JcD4YA=Od:[!aiM=asZ ksM;NB Ѻh=ő<`'FrpHb"a$Q4 L{IS>̠exF5D^O䶏Ύ栛nJCGZ Ztӽq!hzPz)z)L(ԊLEs$X-zj%;K4R3{A]0/Oid:#96i/ɐ( 瘟#'%Fȹݙɥ:^ =.D0x8vR;vziHbՎ׳OٗCL9Lj벆 ѭ8ż#$iɨ݊LRubKaL'B4e0!&潀V^Ntz)aP/MxLkSMSQV#96 $*r?F,]5ay/ [q۝lLkSMf`B] ŏR+cMa,XDDΑ|KjI}n eoǢ3Լ8'4u" 3D:n 2c6H"SDZïLxͻ/1g} [N<{`8z?. F,]5L=y/ 9ZeEad:>l킘jc&I-+Ic&jgG!J& D0u` e|DIU4Q(.^@P! L:A@Nz0j'DAޙxQx1qd! Akh$ثgJ2ns}hcgYr_bK`8-kzSܪ[?+{?;{>><䇾CS{opÆmasdaaC&s![I6Ϳwg_g>T/]}Ю]s.si#x}y{}Ub]{}³i|AVЇX>]h§O_MB/ >]^0\.^F>?h4:+Cw7oǍ7A6~5;j$N뮻Cu]w}?:;nRz߱QGS*U* (ݵksWsZT@=^F>х.m9.*U* ⫣f zõzݷ(o}p7Z%?T^XX+q7p3e{IXz2OLW;̭<~Hbbb&%Lgb+11)aɉ8f2ǚ2_hw1u]w֘Zg֦zi*tY~$Zע}l}vAL,2$"+xC4OƼd:!Jкca~"scs&25ehq]Kd(QMf@] #C~c=a·ܘTWƠ06|w£N|!l9 }e~چxco :-V>2?n mC1 lIpie!& J't($]/ˆ{Q OG5)3(jW݀5DUSW%}/ 8kspָ Oy 6nόlRX޲{}e2|L0.y/ h!&,z)љ(j2JW:5 ψnkZZ_%bb`sXnXDDQ5$$iCL9GXIi/ɐ( v睕b9潀DXi`#J4NUn:c6A`/=Y(jϦʴ6ta6A`/A_(>n֎޿P|V+]K_|V+11 F,]5[` rL{ h2񉤆 '3SCLDsL{IDQd9Lj벆q{A;+=>D9Lj벆q{A1%zITFYfsJS)Ux}=jŬfZ>DsX.k4rXnXDD;+=lLkSMfk@_b9$C(cuYCy;+=>@LDQ :ry/ #xvub"*$"+$bNB]:9*$BAOFX]Ս1EՋ5z^az ͪ2ԍ1umpZ?\FYxIb"Kᵻ/^XBFC)3zQS58|4\38^_ 2]|zzqREsɖt1pJ`\H|ڻo1pZOFBFCՍ1L Rxfz}5Cx3zep 1q5 Q|3/N|"<ɠB"a{A݊d:mQ /y%O] onY*> !cqEcײ覭TLR^ z2}ݡ2Stnru1Xˤ~^K0CoŕǍŕSv=^n}.6-cCk }.T/ z/tKZ*KA3?p e ׁ1tpbb \S+yb"C)E!i^*tWrFkh$󜯖 ~x{ Q1$=Fnw N(L:-*Ht#9X |h؎v@8Mq4 k`.覩QzoWi:w3QyhFv9:njfTtnjf<֌;T8@tK8@tآc@i48۠FRڢc?`Fl[Yx)xz J? ]zpց??qַd󭻾Ԗ1omz[p+T Z }X}tΊ?0xO"C<|ٕYhSK" =;[ům"=;[}o-wV{[\,|9M&^4uŃ}    @L}0潀Xz2OLj6R =cG}##av#qnXwtgwnQzzM'ᵻ #1chς!BLTpb b"tsҀv=[[?6! ڍihF[ͅWڍ앻sl} פa9DE6Ȗ/5zZu쵮{,\wfw7Id]w; 3ls UW]1KiJzqaKa٥v7*㆘4^/~6Fb9=n O>!=^f_FzWڍrL,wAFh77H,w h7`MLw-̮O h7`Ml)h7ͮrWxڍ{.X]&.4ꖤrW57Y] yFwn>:;OMj-fv~UKIDYǴdBY!Լ?1q5w$p5FHPNܟhsƼȺFxI.Jmf%佀VԵD '40- #R*'h y/ 'umf9j3 O`z">r^@J_R+9D-!D⤮ r$$ha {I*[q[qRfBt+N¼R?1[[==9Ynh7ǍMyOtjU{IcqE1h7?Ύo׮A7m$:}ƙt酖fׁqfe9g\E DeFهe?VOOegT?Y!& 24F,%D+$y/ [qL睕?6T#ٵ3Ƥ*gj&Gr3^ZzkL & 9ETa{AmJ_JIuu<{ѓKsigg^`j%[ =a >v]rͳk׮KGBur:th۷:Zkoo161̈5Z~7 fnد30İx`8{s3o /0b##av#q4>`MLr!;^Ӿ,Z 1TH+ Kz ڍDȺfyzvA]ӱlA]y/ Iil1a^!,<.`<kbR!uYüXÿ>n$~íޜTm30ģ XnTN6Ve;10$@i W fvC4 PWvC ]n GgWdaS+%MmRTPJ^Tcztv{4AGeW,avMd h7; ӾpHR+_N#l,=cűp@pENa\NNIneC_5yx8 A'A}M |b"rGnt $b 5Iri |b"r:!&&A919jp@0i NQnȱ,J&5= :!&jxus, ) |b"rဠ;!&F8r, "DIjż?1Q!qY#ȱ,$EQ LܟhsF(qOȺFxI.J2D OXB nI]؅Q#Jӭr q݊63#haTB"$R*DGK{ѭ8k3Q!¨ED7H0T 4ܷc$Z^@ӨmBQ12/"$H ' F&F(*$BAy/ BD#1KȄ]èED7H0T('AL9cee#)~-ܔԊrr(CޓaOt>zRx-fWNۋ+j)œa>dž|TW[N ϱIjżcPԊyxry;MIIuʚhWMID|A|`M,䌦}5x蟄511nJj\`PO%>ybmsq-/v5vgb$4ez) ;恧Ӻ^ɥz)|.B^R=NWU2Gr2>RT/ ő\bEb,̢O3Xav l҈fH43.J74[gO+٩uh7/3colx~zQz~z/Ԋy&OX3DwFbE!1hۜ.ceeA AMD|9H.L"s_`}% W"s_`[z:Y*|$ GMd(qKO'K.[r94cD5E0"㖞Nv $bPԊ[5%5= 0""qKO'K8#8 Fd]S#rDs09rHb019G]0IFby/ ,ntgPdj%;T*ttSVnWB7uK[tytj_ƃ?b7k,DiY!X-k;RՊ_<}ݡG襹և/ϧ J4{={yhگjFwק7,3ϲ[!&I\VfP$J>o GXiOƴ&+3eY=kA(H%1FsyGf{Ⱦk~~E2{cr@(2Z޻nʁwJGÌX~o|%ƚ{\YV.Z>` ~ƚ{w+ה$n;`5/1o|v~K|{> 14>DŽZrbbZ{ѭ8k3I>HQ~eϲ58Ldk,|È_cnjA#k EV̟OA     r9t9KRA &Gmf'4խ`0J +a#xmqY폻3 Mju+L%%PF93!Ns*& }^/#8*hi p& SZ~z|#$Ot >|N'iX"<#Uq&8jk9FM&AVЇ#b/m"41ФV>SnWpv{L%@yX˄H5g-ASZ0ѭo1%,Lv(lQ20E ^*6BF0A Km (D!egBQ[db53t)DlLWI9i5,q"o&k뤁" X1RAy}@7LyBhK*dm1zG\dLn&"Fip;tX˄kjjL"m#2x 3C笶a E5wpT):*(DLBaE53a"A>b;-D>K*2~ęԘEV"CFX"43t UڜU A&VxM֖:15-dCS0-Xpy:@ n$ea A&VlLBG z1HɃe k֐~rM>'B\G&AXDqC bHMju+qCx?a 's"HMju+qC?=-Rq&8jk9hR[CA#L~rM>'L?.n CؤV`ωvauWW/C怷Sj8HBZJ?OzXCF5LyB Mju+qY#"5V1h ODPpVB i .OT)t T M$T)Ǜ_[ܬwby2VŁ5IhR[CVk?&RF Mju+qY#"5V1h(0a5:B j[ #gB*L<P-$ P&41Pno.O<| np:WxЇ>_2q#5V14խ {Ld ,Lz|zZ-N#NzX#idv&AMODEM.DOC_  !"#$%&'()*+,-./0123456789:;<o=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^χ/ x6U2vVw)C:>ke:>KVQ:>UԲIz~_7beߞnD5"J`j[eBmf'8{83V ЛL!8S x 8Z&֤F Qggezmfl, ,DnkTQ}0EL[l myGh(`)13 ]maj[pֈL;v$}OP }Cg&wC}&\=>InKp:i{8a )AFp5Mju+j8Vs&hD'-TƂHU, XIn%hL2bxk#82Lz|zZ 1Dc ΄au@Z ¼Џ?WOΈYcP!#8kF _'bOs&T_S̄)QA@c"6`^c'-8Vp<VL5IneU yLj[lD΄$pr+ :>?~1p:`NdpHKm 4)RF9t 8ő.O(n™.Oud3a ^MPf2S H(gp&<]_PP<1MdZxĆRGT5j&fxU Ոkx)8kdp>=x&(3X0ЛD(gp&HЭ'V,A+7A0C%hdHPJ΄L' Q"nj-MEm;m db5"|{X@(Dc:S 2-H:k,AkGl(%xAee R 23Ux Љ t p_YvCb#S*HnY"aK*LXlpOB6ȴ#Q QAkh   S 2-Qu3a-SPd9  ?&In%5 Fj8͑6fBTvgBHUlMju+n Mju+HYm!#8K$iX"FII6>oFФVၐ42[pֈ&)XD@,CLJ &Djb(gI#mFIn%>Ox>j w<qu VϏ{<\߬Ƿxofy:>|z|‡O77{篏+\-no|Yuuy~z|-no|Yz7xެ.OCLJכ{<߽x=n<\oVͧyw/x={ܽ<\f[ܯz~5^OO+߽^Wo·n [?=py3^+UJ $`D敆^ 3zs&[p&gB@%4Mi3!P䠍 [=AmPUlsJh*hJɓ<:QdC>B@G`D0XP24c*pvQEx `&$Le7j"Dv;x>{>ޜЇjbg¨"dcڦE{474tը`^cj[p&hR[ጘ%0F 2ơ7խ@#ug,bPV &24tR =Vn QBuVo4%̄@6p&lDQBuV)ay(q'OZDU  AaQ4} rBqTFM42YЛV0H, dbdـ3!dcDp+LCOd[ΐppU;3!6J*XPGrmu'|:>|Y]nˏ-nVozOrmurmu_~p_ޜ~u?t|~}[Y]np~|+'|wx?-Ww7?\ߜ+VCLJ7x w}o/oq~:In%DBZJ&kqLCAFp&ud;3EBZJBT4OL҂&Ї~C< .Ow<>{A %p<dM5p&wЛVP 0qq* 9Qgs0axJr ΄@U8HB"c& d>( x \OI6TvpGj'¨q貐݂3!O) Ll`2΄Q ]#ZHe7?Sb'BDU3!I?@< .OlSnqS fzH{kɉkzQz}\fu9B%q|>qsa5)3aDvOO_nˏ2/43dgB z"pvg8R6@eb;^Wo·n 0j"J쌍Gpp#*_n 6ՙdD&DpvƆ[)P/?WLCo-`DP{M2- .4&uI*&V9m-y; 7CoRDbhRjE3Epvg¨@De~MꒈU M AhsL56x/Yܽ{\ ?|>vOObi{\ O{q5t|9߯p~z}\9V'-V7x>oVo·^7j􄷸Y9V8z_yq|X78뛇{߽^Wo·n ~{՛^W/CLJ78{>ޜ>7m3^<߽}eu›aeLJ=\?q漿:>|zs>vOO/[W7#w+ܯWЇ#y-w _OVCLJ_Wo|+|]=>ÿ b?<2t|~{x\ϟ -^__?ql⻡?{>ޜ~/7_C)A#8J8FMq|Xi #8FMt_~23aDP{M2hgMuI(jL5- ~43 =m9CFV 8Ū ΄Q m 1TijjS }_}*΄&A;|=~_~}Cτ٧Lhn -m`^׋ǯǡl``A f 3pg0T ޲ۖ-<%pp#V(:63h3٧i7Mju+\ω#8Kp710&B#dwz<|~2G^/o8HBZJg&M֖^4PF &Tp&wVPnC߯-db8FM1HgBV8{>ޜ>L(4%P}вۖ 5%Em s&'y%l`^$~mq<;b)i%p<TgBB c}JD;w:i8tp1@D8pJ,A C݂Ndd2BYm1HSb'ggh x>F߬ФVQq@d2V1ޤV{Ї(ۭj0ڠh|ЇK&h=4B-DjLTo C7j5X6JLT!#8k<2EԶpm^4GԺ5xoV_`Apָ/R[A4@ q_>LTe_'mѤV8a 's"4խobgB idm8t M ͧHLk92I#m#X0TvCg⁵%Ȕ$E5fB󔨠hi 7K"V14)͙"8;3aDx-9SQԚ%nClQSA@%47x>{>ޜЇl,J`*(5FVۢa&̮FST3z&#8daD0 5y%hB,LxޠInP4Pc kl4%4@6p&lDQBuVY#V>3 =z%xg逢KXInesJh*hJɓ?:QdC>B@G`D0XP24c*pvQEx `&$Le}ֈ&hiR8;CGp&%Iei-8S"53hJ I#S8$ q-bd2$L'up&<\oФV%0 XI#mzs?= }ψ j,aնhn 2QIm;t΄=VvL~us9?-^__?qp}s~:>|_o|+/ b?ܬ겺~[:>|X=+|oz\W|Yeuq5V [?=py.onVo8w7f [?=py3~χ'ܽ:|ϯ|+VOuu3t|~}[ÿyQRv ҂&l384GjbhR[AZG|סp>2Mju+ӲHG&x:g¯EV1Tq#<%dJ V"1EgY}PwV; 8?wgBIn3yJT^4Pt"{ӂy ^/j[χ?WOxrχ8/Ї-yz}\}Ц&8R@d)BmPU 3 =id*ט =Vvg¨"Vє4ebp&Dv"dg¨"8;cC-p?]7G5V14խ,<28ődbC.j[8FM1HgB>p~z}\9V2231GǨ0Fs&4(  ΄χ'4խpF h>ELCOYm ,>E&k"8I`)g )RP敠y:3avnU A#LbL6tl44%S 3- 8+A#Lx葌wx24c*pvg¨K Je2}`Au5v54Iyraua5a3EMkȉBJט ǯGDjbA iMju+;<|q|X^є|Gd`vnyU [) KFghR[XZ9i8&uqY;\ s˨RHuJK(a&j'*;l44%3aTJCy@D;<fQ ΨGSMua^)a&j'*xnSdֈ` 8kF iU8Rz,R[QbĶ;j5p& X,ۿzug2[hD$g{JG M 30;*vCWQy!#8őq ߮/obL΄ ImHhJC3a jLLhbQL0&ߢN1HV~; aDq7P=aDdq~z}\9V>LBQ!hBaP1NXvCg¨qRgBdp:[)`PqT C nᯱ23t)ġoLL(AOJYX2yQۢE!#8ЫB[sQR kp&'y%l`^3 }D数24bdC 6ՙdD&DpvFSLG TnV1JJy ΄D Z ,CG L5_&g¨3m-܂3 ݦ:SL$pvF̤8R5u^/6Л)Ɇ &P敠q貰y<18FMd^ uo!Rzꢶ(^y8Yc󤼆Lx|xBZeC_j[8FM w՛az?1j"T_c&PHSTۂ3GBZ,1J <V>J4]V1O;SFSAP"<NDU  CA눤U :2Uxk#4"߂38k8YcF0|NrY+7WC W-&q|X>gט +kLQm ΄@ФVy1K`*dgB JhR[FoVo;3=+AeaFSAP"<<%P:"iUL8tķL1NXŠ& ?&p\Vx#SI{-8W8YcZ&l4%8ő4hdCL)m1<vC>Vzs>vOO/CǗL΄@DЈ&uITnq>=hJ0 SZ#O2t΄au@Z QRM|/ SRb R~y:|{Xє``iC$bLHOugqD&V=hR[AB?6Z1JJ%yJj[A*.Oۡw6 ,<0-bhRDb p~k*)XP"YAsLYS3`y ^/j[8IΙĢ󛗡}jD5nnp~z}\9Vun&BFz" >L0 FM@DЈ(RI5b톾τQA#"΄nCau8R(:# ]&8w w_c ^#dg`4t FMd^ oV_z}\9Vx)3hJ%3aDCwg`FSAP"<<%PIF86(AO4tJdCWFSLЭInC --8HBZJg&M֖΄HVԶ@(ΎQЇ5D5;ܯvOOCǯI ǨP-3L@!H@ޫmq QB1p&ЈuIkD2L ΄*ЋjTp&wgЈ)8M&C$+j[8FM;:2UpvFs3ad &z¨-0C?V6 )Ɇ `^i}&'yk,bvX5FC5fSrtyM$ܿ` RĢ$HgBRθ้q?`) g ΄HVvLv]}| qg28l3l4%4%183EI)N4tP~U A#|b<5"%jLLY(8m>@Upy: #S @'28R@6;\Gp&yR⡏ɷ[p&nqє0 JjLuRW)΄㟏Ċ5daF$P ('DjbEx ,ANZ`BU}"Lkx odmͧH5g fԘ ĢGlSO Q,iKPc*pgBv8[-)S8R2`LXS38Xaz΄x#5a YXŠSr ΄&%N1#c) R)3  ?k*ЭI:9KQV1OĊ5da@XP(i2E"@82O"<%j'*(4%183EI;dmͧH"8;X0ЗT ΄&%p#6Y[F)Rnq@e5gp&4(i7 Ǜx+oǡGjbA#H M,JB"c&8#G(S:k#Sg2p&$5gG5fBȻ3!R+֐U,3a'2m fjiKaMju+x7w|Fp&DCvfgw|x>S ,S* &Pc '2-"$ ]8S@E"gzXxsDZ CĊ5dai )R SPۂ3aDHO1;*5r 4_'%FBa˜ yP%TgFSLC_SA5V1h((}NTdLY+410NXŠqd>'*;<_~ЈȚ|N,:Qx:'41ФV1Jb6J*6t1G(>/oqLM$l"<8K$4խDl<ݶY(8dgd Mju+h~rM>'&k"3|{XФV*vC%m s˨Rc;|=/?>yyFSv s˨Rc-X."QĊpGa tRbZBM 3`T.×LٹeT)Ũ-"NL8!ǛЛV"6fyQy)0j"WFSLdrg¨vL[FB[p&g`^ M & ΄Q­@u9iy Y(8K3[FLLa}ֈ Q ƑCF5<%٨mն0j"pp#Vv0|N1„MlzjwC~mhb$a@<Z&3$TO8V7խJY#6= U IisV{<߽^Wo·neCQ<%De hR)V<3  /EY<&5dD ЋEEm q&k"|{XФV*є|΄%6x 5p&0 TbRh8t΄1!x ^/j[8IXa)!O ,CoR[AB;\Gp&/ɷ[p&gB +)g*L` UV&aurb޲oL9i5p&)2d"P">BU&lвoLnRU~=xc  F{}FD2[gBE{,Aňjn덯w% J%(6t΄=KF1E0PSVg*Lau4ϏGl4%̄%183EI) ^y/c-{"3!P#=Q:GO 5ޢ8;4"4ԶHOT΄yG L('_ eޘBg<#l4%̄&uIiqJnpwiwV7w_hJ KPc*pgBvx#ٱє0=%P fBFzTַp+pDhJiLua*`AK oOj[΄@Dهє0<%Pd 5GDra:ߠIn0gBqvh|×L΄@DC/ΎeYBE{D?GD5eu2t׷P=b&2D?Q8*U k8RFSL Ha33!LG LCG Em5>2yQۢE!#8ЫB[sQR kp&'y%l`^3 }D数-t2GDHxņޤɴ9mQpp>=޲38+AGII6T0`S)@FjJggl4%nq@v裤$*LHd[ΐnq΄Q%k"p1H-8l3΄@MBgghLj[pp#*hJ KPc*;\G\n.B$ejն8t58R[p&gB&:SFSL%%PF9m9w_-YgM\GL}*x( h{5B 4`=6fԘχnᯇޤ.:kR^` $Tg hJuZL_n.pf #}gpVrs9yC$bCg'kbhn LuA QB;gVOdCoR[XZ`^cj[p&k*M&CԶCL8!Ǜ#n_28fQ4B hJ jE3k8}YȃjLKv8fJ M$ɷu8ܯ-_WGl4%l0SJhb$aL 8eY$*XQV#1,N*SL[(c)a&ew0SJRc-4B M,JL)a)aɶ%:5DaQHMDl2·qe-F CwФVugL)aLF8ނ38XRFS c&ɶ;|dL)%ɷ[(c)amT08~=—j01ROԶg1-SMĬa`L~×P" (ΎD#34"QL_~[)D!m9c)a&bW5p&T֘qu:gB351N)݂3?bDhJ -I7LaE{l4%̄@N  Pp{gBz貰yJk̄Ȳ,T C-2yٽQ3 %TDPjT%  Mju+Rh^Զ8^W#8ZHЈ8)SJL΄8Q6fB*'*Զz"p&D?7fO@q36856, Qgڪ!Im ߺ|d L5GD$R:3fc-4B &[M$ShJ KPc*CwgB~;\w?}&G5V1h ODC*L<FN Fq}&ǡ-":Qd*L8ѤVr;t΄Q[) >'FSLXSa5"fDp(36H-8l3Ȉ@MB :8Rr ΄&uI*&2Ԋ6g &# 8R 0 3g LCw[5xmhb$OpgBvx>_W\o^>KvF9C8S,%y?gd ,`OQL g gqjۡeIis&Ա)I]&;KGK"4u2m*)Ɇ 2 FM09őB1Hgy*vLФ.S3E(„D8V[p&2b)̄H 3 U A3F)9LyFS䤅Y(Z%ն;KQV1Oiє9i' I0F|KS>k8YcF>AG/lb/hJh>EHOT2DezQۂ3qOxM$|_հєYp&D?dU `&41o&8VP8 o+4խτFmT0hp|wLj[,A M,JLa-y%)LhĠbi%183EICw+Fh28ŪTv8 CHOTɚ OFSL`ֈ~5pW֘q>*U k8R@9BFxJ c z*a ?&aVp>=XlWL 8.O|}z(p ɰqQ85g ""aˆ, |d ;Z)ۡs&p?ݽB#"p8;G0"˲PLA     C_/j[]W_hJ`n3ᤴA c-X."QĊpGa tRbZBM 3`T.×L΄U aLFݢ8;"LAm ǜ#YV^є0T ΄&%S#8OJɷ[p&æ:SFSLXSZd[/+S2S\yJ[%ω8HB1@Dc ΄FhJ KPc*CWZ?Ͽ|~|Y#6#|YȃjLNX0"5 Jw΄ФV2t~նL8Ċ5da&yJj[p&CdUl/ LyB c-4BhJC jE3k8#|YȃjL_WPlZ)`5"{#j!8Rc8ȃ Mju+qS&)y: xmhb$3$q? }5Inak9 .O4QS2%6xeldJ3!N 1MAe`AF4խ%p ΄nv1˔ fB$ d1t26fO ]q/ |]Q[h-LyP%TgFSLXSA&8R #$xsDZn[p&gBd)BmPU M 3a jLe7}ֈq*憙T 4P%T*x3p&lD6& 5gGDjba<%9GHq*×L΄_'%Ƙ| 26fZL㟏e!j[3!h΄_'%| 0a݂38>b)BvCg¯eM0a5 T ب)PdFDFuRbh#|bRZ#jIMm;t΄_'%F bhJh>EgG1jLCEgG>_ۖDhb$aL}Їq^Զ8ޟhJ`n3!8H˜| p˲HLQm YФV ^7jqĨyYC G AԊ6gFSLXS38X^986858$6, -Ir dL0@0[ g*;|T<$*PgqĨ`^ne [)2fX95.wz!Gh7t|dpGz!Fvkt nkgFD֔΄JU0OHp1j"Dv"6fB,LT6J*M&24b jLe7}&GFhJ KPc*QRM|7=^w՛azY]mozZ K@w_ m ĊAFp&GE{<+=fRLuLw_aC@VۂL`gn1O P4#ZvR86A@!H6*<єV 's"p&Dv"63!yd7Xa }%p&/410&߾rx?׋pFSv M$ɷ`g,DeB+*u26!%Iei} el4%Q_28˜| E\G&AZ)ġ3)T5ORujD 58XDCoك7sB 䤅 6LX_޲oLggzA1Fa58XD1l4%4"նeޘX0"0ѲoL$-8XDhك7-Ve 0a8:2U4խeޘL_Cgneޘ#M &Y6t>kDZ 4„'s"!P&\hbn@eKm LyBB\ωVkDBx2ŴFQ &+-8HBn%>'868HOQ7+߽^Wo·niCD?85g puș P4  >FMk4ș T&4b;\G(cbXTַPFSL)8%3!P[h-(Ύ@D6tPMju+\ω0Y@Upy:udQL'4խD47OI6TP& IФV0a5L΄@U8HF`΄ȣ_28Vq 's[p&Dv"F YŰєhLi#Ċ>Kv8M$ɷ_oΏCzQ"pֈ&Y#'gzd)BmPU M D<2ޛl M(n ,m"h-є0Ԋ6g*pp/ yPB F;\G(C#dpM &OH5p&*d;}}~/ݏۿ;h:gW!#@yG 7Z)[|~;43 ݫLƐ4oЈ6@i)R }7$  ?bD% P#=miwx>ޜЇq5b)!,dpQa@EqτD0U- 8 >%F z"l4%4HSPF0z"l$`)a&,AiM#8kG|M#8Lt ΄hbcא֦2XĢćߊc&-"C&gBBкY(R }|!|-Y#O"8UaB , <ПW|gelIneCxN ™Ihك7є0tk@Gp=xP8VPLhك7LX& 8V0OH&M ʘ ԲP 8X߾~us9?pp8y۷C΄64B jE3k88—kDJC*im  &FPH ΄~5&&uIi@UNqĨ0LTo녆~<7Gp&aگ?:_b)V"IL8yP"#FMJUz40NXnC߯L ΄PgB*ayG ?F4խ`)a j 5C &B*a=yG pgBv8sYɘl4%V }HbL<٭x(`նp(A͌E9NJɷ[p&&v js"41вoL!})a&,A@-j!,wV;< |~|D15Lk̄ŧH ǟ^_8H Coك7 hJCy}&,A!3go[3EBZJD dU 23J>S$4խDx 0|N@\ T)TQCo2;­dd2bDP+ڜ%@#`0j<2~wCL~L + 5FM:AG 1E* ,ˏüfx \)%j[Aj[GV>M ͧH8V O>2;3Յն`AK &PFaugq& 5L x \hJ`OX7F9pf mВD:3?bD% J%(6f˜ -Ir dp M 3a jL/b$b/m"p&D?[oq_p;oЇ~ [׋5B nkT)- Po-;Jl4%)2 &T)/b$o_/j[pֈ2-V"6Y[< }Y#VєPLDFqv3 R<#PM 3a jLLhbQLC_C&F5fSrt&A_Vz1l4%쁡>ƐQ}rc<71Ї~I 5i)qu?F4խ`)%5M!qZC q&B*ayG ;3!P4խD47̄)RE@L( LVkPؑSZcPzKg[8;E{l4%0fBK-i١΄JU4>ԘnC&' L(5p&T֘q7ݷ?~ fu/?2~ÇY]n1~ÇY]np~|?F4խSMZ& PQQ}=&2JTvC=JXm&%ŗqFxGL (x΄ѲoLjLCq/hR[<#PHTp& ,P+ڜi7PF@#_%अM,J/CE$|[<5pnͭQLhR[ }1'ŽW8YcG41y7_8H xPgBB c4խ#4B#In4vCE$ QBp$j!`(gx᷅(mФV513BZ #>6ȘM8S@RЇ~ Ox}6QgM$ɷS ~LXcLFYhsy _򠶅8?oF/L5g-T ΄&%a)SćfB$c3a jLa7_ SGDA\G၆~ӂrgBBնLXS"LhbQ ·M x \p[o|>kFx,D*`:gt8In-#Я ΄Qa&,A i='*i΄@< .Oh$*;F4խ@#Lx~rM>'dUa&6v TQ8ЫF0|NÕ's"l28UaB dU Ask&A4"O 8UaB #9OI">KHL85;\WC}ֈ$֠?jd-#FM>ZHhJC~"Q5%3R<#[Dp>j"Dv"F YvC%bBB cG1(߿q_ }Y#6Z"p[?bD(Ύ6@i'*:gB~ahSdֈ~5p&TCqp dL85+a)KQV1Oiʉ  E{ Xz'LdHjL85*U k8Rs<58kơs&Sb,<0J@JQ nx =Xp>=ȃ 4V -2 h##ƍ(BFp&jr0&hfuva^Զ8ެ.wV7Gl4%,0OH,CLHM6o'"QYvد-7ݷ ~#659Qg¨!2~SPgB*ayG ;׋vǛGl4%jr7x)* @15p8Ra^Զ8ެ.wV78?>єɉ8XaƑ=p@YT0HjDAm 5g-BMGmzSTۂ3!ydpDDMju+vQ}ɉlk4"8j+E舵LHa PQ2Z#D*":i pvgBqvp56c17Y q6s }A     833( >60 2E3( 5>NEGOGNG%2G 3( Z>80iiJ2F:Ey>÷ƒ>÷> ÷—> ÷¡>÷«>÷µ>÷>2E:GE>O>>2G:F>`2H>2I> 2H>@2I>>:GD>:I!>:HƊ:E13`  INIT 1.0 for KAYPRO II Baud Rates: 19200 = 0 9600 = 1 4800 = 2 2400 = 3 1200 = 4 600 = 5 300 = 6 110 = 7 $ Select baud rate (1-9): 6$ Select parity (Odd, Even, ?'fG=gX4>rgh1=; U_XNp`wߎ9c.si}>' FWnha+lra(qU,|E8ئ#rlE< ~p>dc$Thg9a4g!Tsð0($&]_ G} O:7s+o^:8J/y X CzCwU` z+;$kI cgUǮފOzY x} ~/JL*?IQᓦO!ST^zƴpX &Rk-xਔTxqURk-xh@գ/KiC >8Jb? N?? DX&EEO>U;C9H6J4+ )9>i$NW tv&Ê5uh<0ڹV|n.2=U<=Ƕ,7r@+XZba{AX<2F0{7|+c`_тԵ1+z"M=ꉠdx0m|8_-{A@WNDfGvlG'r X͡CDT[a+BG5ei,7r@+XB{a`aL4,i zSv& Qo<zV,7Bng{None): N$ Select word length (7 or 8): 8$ Modem port reset.$yxۻA 7Zzsठä#D9Ș>URx qjg(8di(MK//1 /*bK<<Dxc/wr_=7b Nz|#{㞀>}Fgs;1rk|SE2noYM]=fa /M a'Lߋ7ưF*6a!Hb٨Df"_sSxdFE-Z3/O5i?@ABCDEFGHIJKLMNOPQRST<=-UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{7%o|}~x4Bﵳ55ؠI=`px3 ,&ige`]k|:kٞU,ЂZmРlEf.-ᚁ+So :p~;{Xv&H=3Ơ k>РIQ&8E< Lr@}k 50)mT&E0)}ަqhjRdyxx_BCo~܈ȡGYJ#4i:/Fj]f~֨n#ttC40&?k`YPG,r;& 3xS?9)uMK8pR'vk]A/ ~\XONJFzIEDC!tq1lih_Y40$"|mgfedZTB@+(}{ywsnjcb`^[WUL  233  ·fߚŷs?1).d͠Q Pdr`#9ԋ_#+Cr.o}`ˮi^|;#/[Q/sm\gs:ŋA.uI.Sr";\hy)'SuH";1)֗i8Sdr`#9ԋ?#9ԋ^el/;zҨnJ ӧQ듫a*fɊk=LV֥,kVE,Z7He:%,LS)ϩ Q.jQ>NAHU;C9E S,|jQn vrBWmާ,)ئS$Q|4qz+0M -SENѨ7U TiB7szLLՔL[DC,֏I66KK%rPQ]ۊ\_?Y9cJ(H˦ mQxWO)Ӑ]Ӗ nr4-\+j6=M!Q {Q663tQG #nSȘ> vMVsmȻSG e]m=K)*?{vMVsm a۔[Tdj8jS }CC;u:aw܂M9(@^M/j3/*r)ZO!)*p4MT ;,`R,ݚ,f°ji \~ҼzrɫLXBp?L:d77``|>Q]"P_v> xa o6DX$zc4x!IQjThaI`ຈI"YBȊV4b:*G6麢嵢^uş^d]O]An;zЂ4M߾`"bZ' vNs.&!QzYqiZ9fai$SmVvNs.L\2KTCIh Xk9b;]bN@X^Ĥ|^2U i]MSߧqE#[Z辖U*Zw=v}KCnN`RC)m4mfLW1%vHlrm|H8,uQ*SE>dr4-\+6UB&+$v:.:`UٺK+2I&:f{}XmTvNs';$6*QƇF%xx/oJ0 V0F, - K)It}gw^AAx5^Bďx!bd ݯZ"/iot%X:߲M5rG }N*\YCp؃$LGX1^-dVt/5w"~"pKTd*ÊLB̢$1)*4RUO?48mɫqȘ>URUId-^6VfQ@#Dωhj^hjk L Sy[SۆSst |4qtBަqhjR1;Z#5~*CFvɂc+'>c+>duSsc+&COހnC+G甮B_#0S>*ڼ$:ĝu$tH,!`f r*'GS+G'‰̔a +lz}@TvH'q +yrVR ! kAxlLp'bAܜ==H%h˄ܔZ[CńI_*;D$u챞X"C!/"Xb=K$v:{& ~;{'֕!o>:bޓp)@z10c݉pױ+2ў"(ow1/"h-M950IQYMTh_Ĥ{ELwNqugvNsЂGӷ/A%$'S6eˍSMҸKTa#-ϧu|4q3倰>+*2a 0)vOBJ|sOj|SJg$AZ8SoQ)ϩLج-LW %٧ɓ Q[2f0U(5U݇(1} |^jKLBzb}ip}Pa):diyUiIo=>Y8di^UiZ]Gy^Rd`RFiB}~TA(HDH0d(i>ոY>4 Y8D}*Q(ϵp>j2O.daJyNrQS}q YPyy>q]Ta8PN.ALBFy @!nW!cTe1)FnO>hTW6.>S墦pSE |VS4j|*LXV|V!NJӒ"%"@aWϊY/j3a=N"\oXYgE,8]>̫LX]!"@J|sO36>$ui)dL'MV(V屲LHb}X:$Cb萃]Cb8 'MG8P9W*GIdkp8:d6"heU{ΪmuX$ց 6uX*G ./muX9}=gScgc!vf+GI+sVe}mb"E|HT9LT!cTW0,`X8rk ϼy$Յ7p\+:<.+cja>:~:žEOsS?.2\_w}EOsSOXTq>-)NaԔyE],(5U݇(0jJi^6<iMs =#AަP9E8y~wҩ렫qE g^9 `^@⛛}jCiqU6}/OU 4G:2LdayB}z 2O!oj3ԗ9ӖjS9^Ӽ0yơ^=ӧM˜iKT /iWdp|4q0m{<pS#C6i8CZW!oS)dxGMpFu5n3E @n qjg(yTai۰GiiQaC~ /M*ASSyR֛ i^y.*2lr#Ei3RGZZȫ8iqr%&?ÇDEeU)H}4s6C8+nbRTpJfy a Y :@5n$95b9t($&;Flᦶ$xI+Z_Gi虜炩?wE۲BsRu.2mY7H幂z~Z57z ;r/"d\n I|1i\3m`\W_9Bm`\ u90)*2P0)BU;C9Y&lhW^vvHeJZ9e~}"/>Hِm>h\MׂIQ9j0=Rzy4HxqwX}=փtO{yoc=‹3 KO3OGZ^{ no ̈o*/3NgH+"baRTSy_2| xA     UrL"2 "{XgE,K:'AokSxg2Sd yo4 *0d(ȰK:'K|DV >n qj)2l8KŶ@tN>R0ո%jp>6mTRdp^:yGuL yA60նTQΔLYa} @!nWթ`SU(Rd|VBU;C9X?ӧ (/QE \v@H|Vd[.I$ VbV%Zpj@k~P xb6 F#yGHTw0Q$2`R|٦@ؠM4s|>Q]+2Y$lӺi>8HD8SR[^Rdⱆ<-j+QM5Ye-џXf.2=U aWo<B~VY h7-l?EfGvS5ꭐ'VI1<4} SmTpXH҃/cRû0sg`}W)G)gi% D6)Bk]}B{BQ"r_W>/OCB ^hVNcNut#cq"1GpKEdDFAtR=|NWr1\FaE!AVn:`?z@*Oi BXQxݍXßks ϵ"&ER ~aR|y~PȮ"QP%gsSW|EwRoj#sd_ D9'wu}FUks7||)6 ^>se@\:W~عɍΕOBM4=iis,zizn-[_#ȆB !O%/:aw܂M9(@^M/j3/*r)<-ݚ&lֲ:6a-[=IjՄl)R¬]pS=kcXΏH0ֲvCG57g,mA{S mc-tԾZ.0k\#:.`-{RG X֗vjd!ڀ]aUgY|{ЃkP~`R z[8hTW+&EEyvWUh"E#WLJ[А"+X d~J'X G5.cRTM9 }2<qμM0 ,w J ?IQpTs*.S8[ @IM^ -1r0C5+ÿng ̞8.ywH A\f_EPmb8 墦2Oo*laEe—%984 4sv@Fu5"+-|.e㩔\t#-M%[U{&W/E`5I",Mm*I݂2O0z5FZl`]1?fiS& ^$4 FT}B\$#Md N6)`  v"ɡ_ԦrOwKhEyvWUh"E#WLJ[А"+X d~J'X"l GU $jȲLX"\, |.5Mx_&墦2Oa8PL{Ts )IT &E=-"m6L^>Lr`@bRVڊLHBKΑ"gk3^n~4rgcۮq)B__e#TO}=g!xb|V"Pm%Cb}L'Mtj+GTr`Q Gl^F%jK DaYDA{3k# `R,Q.jQ>N!cԖ N}L:y4~y/҉x_ /vcRy5nC szZ"o&EE~6 `S |8]9)g>˔L;:;a'~\agg?=ɍ~8<'C||HUvzҫb|V8~5֋/T#x_vBGHqP>xqs)G?FGՋhI}T:,[ՎϿh__ `h"  \vd4: Njh˝(vx';?*8rZʷ|};$}́Q@\B3ob tH0c`MRv?L?L8S.$bܗkp"lFDf@ہX:$1B۝왁3.< Dv'&Spa'!!¶61P>(~\ف=tȥcz[V_~h, é}ɁowۍOzطn@+Zi">Yҍ"&7㥑y89=2ä/F   z{1|bS+Dlj`"ZiEyN0,6B ;@>ՒnÆVj(tS+|0P=D%.%1<'HL,OonIeʂ1`.^K[ͿVr%&@E5'Z>c`oK=8Qav|lNu0x*ѼYuNz/'`18B 2?m>zQ䑘;dlC/#1;Ɔ_w1dl֐&!>(Hw>(xl 86z2}28al6:ux`8kx?b7Vn iZ/ w5Xn|KxxwsD ~<Nx;^ʂXF¼4lڢuP9Xۅ7a΀U`搦bf>a: ;qA3ymzR?xia^K) pMG$~YO98+}wvcU,'ZEf]\X@"|NJFC0 url_WI1/(&sng`[VQB#{kjhdTL! ONˏ m L31W fhbY/+gbxX)R5|6CEYB(;Zuch7:*S5=j [kJu}Wkzh0l]&2pp MOXDZlϰ:)iL9s)wG"D r()&Q0D..FQ0Q%I#ANDpP-2˰ CLf2V_W˴nКatކ@ibmm6ؼ E"4b8jDG\E"TVWlyADip4ȉ=jT=RY6_I"T#'"_8i."A*+}u&17!?eMc 6/H\4ȉ1P4P0F8T#'\U#Q0iO)8Iɪ&2pʣjLh,jLh?XX5xeX Bl[dL2 |H1kMI׺1Xou=C~{aܷC^=bZ1\zHTHL+C[kJB֋u}ZHHL+C[kJB֋u}ާBZ/fZ1\ZSz1XoufH};N`=dQ h- b>Tm Cq*v֋CYk]@xS>~}Hp'Ȅ4VB3C`BP8LD+[ޓn /`'ukDCk(ztȘ!yADR;N/.}U! η%՞GxD ;>`.`! *`wSFЏ4)43ln# 8D{l^"<,͟@/wEA$l0PX{ \ ; J# C Qhsi5;CH$ 9#qKI}[2H\ &(J:eM Q軇)A(s D&<,CL6Z& M(Z! }ؼ kj 2k_W1UH C 6oT;xpԈō}..|]cUxy|!wa_Ewcsn 5)PhB 1?ׯU[PC}7l:1uFFRu=.^tSԛc͢R򍌤Pyb7LmwuF:}z\}qݓJ=T_R_o#7GngaS~ 5SQ.Dh5 \wzӞS0:5ZU_U\Go46.V~p5S N:Gb}U2jpv7{nޗJNGͣ*g7PC} 5.M¡C-3b}iIkcF71 PC)P^/&o-OR>h ^؃P26g|?ZX3xuQ?eIN+?B~.㌸7g=6"rx<; _M Oj0ICWvuLgfq`.3M|τ{{.9ؽ3 )9#M|چYDPnJW^*V"Q7EoL9ȅsQ0D%.q{,9> PEZ>T\Uf lwSc' 0Xif>`~j( |P8LD+P4P4Epv8ݱwih0<AEu`.Y- a6<-_Y TVkYC=}\Z!ʕ|@EANp-?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*%o7.PS t>-xt =~[>@[-Tʀgҽ̸>"z̀31,ue`}k9|ւV2 10,0,Y‚D Ӛѱӓ\UPH?k4 V á`Aw76farhez03`WYcuѠQk4cY`oiD6 MuD?Ѩw R$oK="B|j1`.R+DFR\4< J=l^OusVsV2saGICz8MD= sV\N LFwFsBzo'ؼ ExX?D_ƃ("H ; JS^VB_P ͡ ET]#q1VGEN'y4I z6#^#^N:8u}u%5vz,=QKjBԣ\?x՝/gff5 ?1T8;LVz,}LUҘgJlWRtb8צ;K1̢㊇Cn-D%! ,Nf6q~R{~R~=ڟ* |1al5Gn!;[HrCLfI,N1k%|4DhCLVۍAXz11a^퟿0OSɘYət׉{#quQ#gЯp:b8ji. S/E?l^"QK( Q.ţQD 0+蟜H$H( rHD0Lxg}PE?lnyFi^"m63FL=-mfcXl:mrZڠa9ۜk,~&>FD'{j}m0̨)?f7k~Ř/gRlcucc韶U_j;2s̃399/׾ӶndKt" r(vaM'#=UVehYf3,Vkkey 1S֔<z,\׷.9,Ȏ r$v[kJ㺾UEZSlP]ZS0MNfkˌ3G|s=g,v%KGa2<,wԩK?5 ?CT{L:ؽ<4sUD#f[^?ބa ,d^[e8,([8yN]Zbϳ9G-ϳu|%ßg:ԒϳGkv&UH9b {%K0`ЌN2FU6/HtH "ѡ*?Z."4[ڽR4-cť]hhLr\!T5?ſ/B]~{h U[ƊKXѬ \!TDթRTU-cť]hh֏vWGEhm -zA< l>!QxdQid iP5wSc[ 1*"Q衇ȿx **)Z^>&HF*4[?YUr?n,^>f[$h!T*TU|3yAJ7:G]~AQUDI~ɣ. QUR%Bzo'ؼ y.D( 6vUlm{n Tֿt`.`0PXN\l^x{0/q42쌸7['y+\R7~\! ,l1R# Pu5 gQ081(Ta ra\b֋C`al^Ehˏn,^. R6e^ <'qU#_8z6-jL9A%DQ=D#jlO2z1Xx2Nx1N^ƪ֋CC`P} rQԘHsMDS+DioL9P*G!<{`h7ePbJPXxmP} )5&\%ur#?~ucO>BTk2CX;ZZ/ *)P#Lc"! 'q1Tz|4M_o^0{%!Z7`aÏn G>ýݷQ9z{RD$\5!!,L} RNL\$nXR՞#^ N'r(>LģTsṇ-d{ Wn, uIZa\b֋C`al^Ehˏn,^. R6e^ <'qU#_8z6-jL9A%DQ=D#jlO2z1Xx3(Cp'|=L9ĉb\L!.ꋷG^Q]qtM{"x(G"Sa"/ALvkdE}c\<Ȳoi>8Ã͗a&8׸+ļS!,lbltwz-=̫<4O{8^(xk8;P{Li(CD0@q4 ƣ aa «GyADqK(r(Dg;Jqx4D oVCe1(;ˍ,ykB^7;B#w,,,WPF; CLAND'҉1,Fi.DTG9ѡ\5& .w@|A1]}>.BN$%DB 6֞#$С~b8ď?J@Ao6 w* }tfVC||(&(M4JhO|<CqE[n η%՞Gx;&HNhf}g}Cyl'PS*?/~?+Hx½<4SOX=T&mW@0C}fc9d\ejQ,CIav0;$fQmw"<7z/czM|c=;(.Š;(+Dn"j(?݆]g |1al5b8jD aƼcn/#/L֙_Vd<:+g Kw e?)8Rdw eaL/82[A?Qpfwi!3n aBj LX`^(Å8~y1`04xUYEfhз*6}^v88bs-e v03W d(zjؼ EP}N _򷠪1uѩ]݇g3c*ðEel>eө]OPq0 Lq~tڼP$_QidUqQ)U?Uv?Q?Yn*.*]P?2XͿߥ=GNyjff6\A3"5Az!˦](f.yADFgQHD1̢IWK-hTLaTtsUqQ)/E]~TZ?GE])T8I]f^u0IF2  QApr`,X"$vadgB윹#/_DpXhYn=J=>-vaz?9XX)JPA": AIq^7ƲBq`#[?g~ h;M[?CBIbqѲp0AH.)JPƲ\|}- \g,Lἲ4IJy-LCpGƲJ I-N'm~̇ g3:HGaAF˒e=B\(aτ(9sG_>i'h?,Q˺~2'3P4wt\(A- :+W7qI~'=!([?sN9 \g,jcY_$}umA <9nϨ'넜A eIxGmۜj; >c HsP!O؅=IDäD`e?ħMm$s!s]Nwռ64b.dB [vrtGhY"jcYF0Zi/&GS prѲ<݂⨍e n#D.aE..)>n!Nm,k*T !0J9 PyAGlj˂(swu^ͻT[m,i$0J9JtR(BHC뗯p] ?Pe=DSn˗;C8'2ceE;Bm,(;>EA8]AH2yCrw6ռc#IIoD;>E9I,B."e'b#[?;R /Y%s2wIC掰C< @H;CⒸĻ7?xt :QW! ~Ν`.i'zNm,e>(.Ljme}PY&_Jp=1H CIb! dK*X֝dVyj7eAcpijeq2w7<sG8Wޡe sVzlX $q]"TbBa oϛ3t_?`P۫Ly|\ߟ/ tÜ"rF_ F˒}Ah:!gt-K!#Ӂwwj"6RZ$pMmv%:Gzfn;jVeGH北$Y&%8^ͻ[wD9zMmke}Ac(XBJty^ͻ[A8SYNY.AoGdCƲw2n˗;C8On 4'\P|؉8Q-}pl4qq^ \**B] G3.1GvS[m,Fp^I{l4鷠8pvBm,k.Aoje}AHqnGXbsQa7D,1F_A@Hm,1P:켪/GxA`NiX0/Am 9oMUn= :whYSΎeqH-;Acpio8yhY-stjcYJ[{5; $!n{5x!{w@m,kp[:H$w=-~]".= Z q߫yuAݛwƲ&!nռ7%Q畝BN27 eqH"D65Sv[tn>c ݬh-;!eѤS#0ZD!8ԣe sVz?@ABCDEFGHIJKLMNOPQRSTUVWXyg^^?>xz{zX+ﶜC|yĎ P$ g9*ίCS2a/Wo\U">7z }~` c(0'IhY\%$!쓀hYԦdnt(,gvjEqƲnLpTb12w!2YFJiD [jcYwBN8 s ;&_Jp}?ƲF9I,B.I"C!"(mQ+e ~`i $wGBbgpWttFtXֻ/W;&_Jp}S[m,98I,Bµw}9qa?+l Bm,)Fe˙?3I::w*N~$8jcY>_?<0ZE":w)N%՜н$Gbi齹#uA'^&M:;уCK?PS˪@Ib~Vx$CpS QB߂zjcYLb4 P|Wpa n :KMmv~V߅^qWX` 2 >уLbx$~Vwy /Y%B A     ]:!A4EIPzwW/%(sRvrt 0Z#[?Sz Q>[zĩDtJ[&_Jpg|::eqc0nV>ޟAH2yCjޥ [?#?1U b.dﲩ6ru ptK S9I'*,b'\P| $A qza>IF˲6`yꙓpvRCPM.DOC\  !"#$%&'()*+,-./0123o456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[C?C sC?w5;s.BvF IQ#LېnwԑClC *F)4ҙ8ɔ(_9WM2@vAO~wϡzஊ (hb+-\LXb'D.ostRJ,B.VNztQke} 9s}f,)R8J;&rK E9$WKMm{~{~?V,hYc=xDqJvT[m,~~ۯGa3x>mFT[m,Lba,;)-a/whjc~][m,Ib12w./ev650eh.@]գ9Tb12eNnG7?!*)\sq3eNnBm}:C=SI-Smt6V[moݖ},%n>[YB3EW#9$%Œ_ƲC|yĎ_](놳jcY?ۛ>ۋl^}/s6<񖏛6|OG-??|XO>=_~W'~oooY[m^}z{ڗqtK %Y>%Hz@m,kphY#YQ(oj >7/~t/%CBI2SFa$%`X֓b.dﲁ'猍lLɺFKMAͻAeݝrNQO c j9)ǠDjgn8 /%NE~67^^K c1 )I:q3P˺T:>SxprޢPX;f%%AeG`),»jh9~q+64w|)u%M t2[H3 G%la'L6tM67_?#:]0gG,g ْJQ%B(ْJ"n`9㼲jcYќJ0w#~70+%:[?s4$B72E6V[m?!j*inE D hΜ0(s+eA(Z\X =P,mˮ!MTC܈ 5V&E2L ZoGNQ˜6l$IefJh:d-*j =v;Akv\ed?~$+SqB8q>-2Cb*/2:%JG(X* Sqamh \ =[:hnc[As`4WlFm'l 9۬k̻ұ[8{,r|OU@Oc n\MG*lmbrr) =VJYj.ǧ>>RF`91^p kPBڴOBb'L.%t[K =`Z%8|ղ H\_W:T:PcNXr6&aZn퇫p||51经wtϾ~O9tD]6$㜱9XPKMA@m,kEvos b.d>yAGlj˂(swu^ͻT[m,zx>=|5p}>?spX~2Z q߫yje}$~hYx,sR^&uze(E pѲX椸PѲ0,)$~ISm,Tb12w1eqhY"-)\Cp*67b.dt@Ʋ!ѡ"ne$ } BQ9S 9okc1 E܌jcLwX7Pv3Z#I\7w$NIbhYRm,Q\߅0D4F<)>nI"q|e↋ɁKD.1hY\%Ʋ>sa%vbHc,h .kcY !(؉#I#Q&t1Z4F'n8I,B.on7WCow_V8= c4WlF`Z%28Jr( =ǜBamr)$SNFJ, 7Ww,23̹h g։sy4 g5fWI. &++ =pq{CvBq#\- C.%_\.nNU"Rhr)Ė?V#^,Ď^\_h.fK$R&x|^.fGa聗u2\d QXDi.x>㋫+wUzJ_\etgO;B)[Z%z~qݢJ.96#Ub :WмR:#:HI0Wh /م֭C?/^ܿ1Ht֜6֠(QdZ֜0)Z&M%bPNBte4WHQJl 51OG*ĕmM 3[D CL6nJtBrBm':CN+pWef#;Q!uUxn-th YO! 洡ElfJ WRw 'TLgS%ild(qʡatd\JbQ0Cӕmr\/2:Tlhh8RjOv)(LEB\ڦGEIܼsx󰇏߈LD hF)fUIC\_  n-NBve%` K/2:gOǻug+m|q!7Ġ!J(pvqq|i*iVsJn&O%tqT=Z6+ =pUG?JʭDݿ}\ (E4znmlRWr0{؈3Rۻ*92<;ٱjH6z QLٵRDsbg!vi8͖V؛+G|qљmj%f=(vM*Qz D24[u+SAaSH!,zvgEP ߂Vhlmb9RHRYW8( =)BhjcoSD~)KsS." Khn*)4/s08R0ZsGI:TrԁVYz@cH>K9J\hsHa߽x~zs~v =p˫]=7g+pR:s'D!w4Y:v Z"a '*i`k5[A貕oa>"؟\|wcse'Ėm*_CmMV( " =?|9?cEVEaFgT,t|yRGFa聬ZDR_[5(5eKUs.,؈C??P ZnS.0MU]h CZKa0MU~5]hyfZ/م1Z'#Ch sp]7֘Bb!m]h18]9mgK[z r/oV+x jNkT\®CZ2 *@ B)vb聱"̹CY`הd'P$ɥcmy^Jl 9}r7Ke!\\®j,3,z`C$j 61~oS~xzGBpK-9)$B)vbE5v)lE^rZ)Z$:CL s`"S1 |d'x ,h.x*C:?Xëұɉ1l)͏C7/Vb4sеƐ|)hIc聖b SE|R5nB) /"96Qz@(k038Fʸ{sWS.PF,`62ǜ6@H ̹é橂V-t&N!)]vyTV`0YҐos ( =%zv9qN5O! ;Ij)  CL6h7 7[Fh9Nr[bK*vMqͥ0GAːKA9Uz՞mM :C7/../r//./8e9$=rz DA\bMNFqy1 hFұ[e4WhUFgOǻxc NH"XHYJW 5 <~~sg_\e\#`HBpqW%M am1dϮWRJ6& Qȉ錐:C욒Le1!u1VI$8 uBH(9m0 hz%B5W\sAYE؅ WsGI3EVrEFKa')mz䔵m^sڠF͛*|+]S _P.b-2Z'#*f#aR+ =pKNad]hCۡ7oWkEYEFd$'5Ο~:9@H% A_~7_~SE$9m@@H \zW}*$c(L50''De؆u90 \m./م1[$9m^п^{Qx5кLavEM_\_ q聻*P^)ty⋟}8R WWORvu0m5qP,v9 FddU4eOV||kjc`h&OUz`E!uhJaxHU"22iNaa5h.h|qɎ%>s,!at bm '5~ ZsʥP+s.$9uRQzsoes.6Ġd㫫Σl,G،VW9]̗pcj@Tz>J;"RBs.+ =pW3N,tŸ+(s~B(Z&ǐE}EpA9INX"]̗x@8Ïpw|u?~CGwWWп'ұI@m I`E@cH>K9mz6%!' ŦP8,( 42/~W\8_\, hhz}ԟQe1SZX&)X L V)_4QIH`jpswA` 5a-'2V5≘Ҋb/trE &8%FmX*b许j/X3 Ҋ}ȄZZj'DVe*M^'{?k>a.܊û-" ./x~Cۊv4C)\S|cCj{҅[91<'B+ |ҩj`7w[DA\67Cxos'Cfk =YzYGf֛3\<i֠ho =`,6U:CVcNlJ ޢ$GWn Vl[e5- agM9iOHB5W|qga/۬y?Ր6sKfKZBZV`3mp?YV8(x*0@NSitgOǻfkW |)~z`SHмR(.=)BGnrWzWX nE+TGZ[W@ tm)S^˨]BW,^1zҊn) =#OBKE'@ǜ9KESx3[EInX6*rڰ|@ tQƢǰ VǠ)X25y|صؼVdG}I|DXaKr3xl_=܊*9f>!,=8H^3PI$8%R5Vɲ;JDt\ +$pxgs<>#ڂϫxпz͝9~oOv;SMODEM.COM 2 !"#$%&'()*+,-./01234565<789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW=6HrXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~o9%.*: 1nP>ڗWd[OüQ3jÄ%Q+Fw+1?rEKE=~xGacX`)L Ԥq8m%==8h )_4Q x2I3:pör_4Q ~=IucVx> /e{7}a,z q̀6nӂ1h )h?O&$<6%3q)C5+d'$$),efh 65(C*ぐ:rʥveAcU89߮C?/~X{c:U\UFgd(qʡ0{؈)O =g{?JFnu]!Н~[^ G^JH؛}$es}D:d/IaHл7Sm-vc͒Qׯ?rĞ#GsĞ%n 3zد>cϒT}$:K{2~]_<8?T4qAk`1l9I 'n 7>q^^>>hI&IWf=My{3|4p/n>''hv26AHj}dg"MҶ =~;p gpnESr\&*I8N<9M:pÖ1ga۬'2e| [;CZd7E|`dJs~w&OEp-ҷX_" |B'B_ 둾4|²-V"}r7NEf>!|5Ea9WA34:gN1,AZDbR`e,z qp#)%OMJ$g$0594AQq_L~Oި̯joS+ѧ/wC#Cmi+>3N۶q+= ؿO|ڌCm=h|M~ܘ`k,<ۆ}n('Z`D6qm|6sx-ƢǰI^&;kW!IBPס)pö>sTIG@ tQƢǰMxaJL;MJ4ij"pò(F1,ASN!e ǰ,1Q,z qꏃ>^X8Icǰ,1Q,z qꏃ>^X8cǰ,1O9ϫO˷< bh W{3+fWB{z >qp{1,?Zt8%@ADxrHt&] "hfPǡ)X 4 &BAQZDADЫ@'+S!|A6?g<8u MVZ8UM218-|B7Fn =804ᾘ6ZD\u-T"C_bf)O ',z qC&MM}J%pTcXb|>pW|{ĵP }9r:H)>!Mϻ*/1~#%9Ua-u~hصP }y0N 7!\M|B',z q@%I!<#w ',z qHg2IcS"aO'@~ 24ij8r O1,zO2Xs4@`,v\2qxFGGv xё_2 ZN2FNn:нgpcql3 K1,1Q,zÒTHŰ. ~iv3(~WӸ/f>ߚ=O?ǧ[iOߛǧ[ii;=biw! U&?5,1er7x.̇ >zgWnBr7z]~tLɯg$8py>GnO9퓼~O&nVW@ t'/|B],z qzJHj:5i8a[23N]>acXx0t&McXboT=`egFo⾘;v#=bYpcF"0gayOaJҺ0oZ􅣳Ğ#2{ہWH, 0a0&C 8Ĕ`l~۬ת5^nQ+|6|MJ\yT,z,AP_Ak7ǰĚ>z[^>ɻ)˼nO.X^b`ZCASr98- \nǰW%`NPXjLnlpv:ɃPXjLnl&pvg#6:p#SKfAI 0Rvl`vrqp6pơC'6\xёK{p#SKfAI}]z l4.eٸ}{6 َg1XZ:ɰ0ڡRm2w14Y{70l0xml)03YT;,f'{|fǁd;.A}K,|on&5=Ak"a'"C?Ǯ?"eO[/v?âw$hq]3?y$p44pٟ|B OL]9 [LP=45q&ApÖf>!lM`cX3Xڸ 73'[x"v;GZ\ )fY[B%rgY܊`cXI7:_OzƁ( ޘUr9^Mae*g$/""=GR6Љe,z qSk4f}:1OF9OF >!,,s$e=E8h i9 b;05?Ci%x/b}⾘=GR0=85h )di2q8m%TCQۨs$C9~cX_o1?C)XăMM:pÖS=GGr/|K$lϑЗmǰIbNuh ֩8fB6A!̜cز<'Br3XsaNxAaZLaZ/0?VpN_x~ѝDx~;aOυ*W쩩RdȈY,)y{98+ gb/gb}wvO[bv4Ea9 u3^@%I2@6TqeqsB05941)H-`j QSZdX:ݤV(8(J+{oDx3dy Ycq{>*>2ak%MĔf`MA1q7ϫ_ _t GOb(S!/z_!zGD K=zQl3wqPݤăM@AQeAFV\sw*Q}vkk/<jգBbZR=##w4I$;Uy;*mâ7v.N!hԤEr { KR%;Ђ>E&@/RiN A     q\SU?ZQ:2UpǛ,q\S[{4 4jT5UaqM5>ST\ST5xBOGzpMFZi5=FZapMUX\ST£X*pD~] WjB՝j8g%moT_s};p"vio,̏UVypmX%ʩf|,2B,[V)lYd`GWjZ&%|jg"#ՊFJ<>[VT\X6)N_2nnv)w#/rO=?DpODd0?[>ϖu1'+7N/F/Ç?Ba >:Gy5Z]m. t)Ps?ĢB `B>)Լ:|ѢB `B>!ցJaA{ԦORB. zXkE'JP.1T B%@HưP8T -X~ ,Li=,؍|PȹcΣWh/W(` ,(@ |> ,Yc]>m֯[a[}.SK}#Ly`zNtdGr) 5tdw3[\\>6;IPIPsIA(ܰPs 55bNa/9%u_)C=aŰ ˰ ˰ [*A'% 1,ÖJr9Ux$I!C4i5=aaaKb;g"4i?8hA/R 4 tzVq&eX-W[ê<^j$h/PⴐaRtt_`~XKM^}?8-dfn) ŠNzJi4ΰJwKO޿V*͘`J~=D%ȴSgT`~XKPiLɯgvJ [*νxzgPS!/z_!zGD K=zQl3wqPݤăM@AQ@zΉg;wb*~6Z*vSl[O6/??/.F}8Lj55Sy~r?,OP,/PšEPBJ Bybf m6~d}Օ <@uk?4@X]p4^~wt}2'Cv <}Օ |u}+{-G鰑%{{x^v#7]o +j{f>r{j{_.]>e mfٰϽyw޾#:о#Օ }+\XV;O)(+ᾘ]]IG_Z1V1,ASNALh8p}Y;+GT_G+w~/|=ds1$maWk|jCV1l\ >@deIWɳ$P]7 v~/؛d?ݔ24k7&MN7B:-ӝ' qxFGGv xё_2 ZN2lH].<ŏ?.8f'eg)u"0,ǰ(F ,z KRm#~â'C,E͠ _M㾘-x"$ɩGwD:^ ^D:)>'5зGy6'W%x"tDN=8Sx"ɩ,_M/C LT~T6{%AK @'G[pg.y^J|BBQ䱫 W@ :܂>tAfQФ>0}%B%;7IZ-:Me 5[:x`LUƆ(+$/$@s;zSHJdv I)܎1`_R $;cL.R(_ƫ!=fSA}㕧(Qc@6@xB 5 ~CIPsR :Ŀ;=ݢ;D)Qg/C!ّ3Ub_-t?FL=U߹2<\97>5:rN۞wϽ쎍EWbU={}q/^~s;^|3o^>Xtr{t1Qn;:;sf/,cnĶ}4wso]=ێN}ƶ}ݱvGoGsWh,vwwr{D'.涣mw,Ǐ.8;sr\8ձ\}3{Oy`q{3YBQS~af3vSQ.COM 2. !"#$%&'()*+,-.?@ABCDEFGHIo6=>5JKLMNOPQRSTUVWXYZ[\]^_`abcdefghi:JHPjklmnopqrstuvwxyz{|}~%-*")(V%lg+?0/8YJ&daZx%H-av)h~ܪŲ@gީʏO%lg+?6{[`}U5j>j-T~fn;WsppDjM7;uo9j-T]v%l*#sJCӥ:`]^.ߛ-8ٟL&17dϦ?r5QI,ɲsSLS7SFةze1\V*Y+CϵzLj+ϧy6myy֧<Ң|kօ/%lj-Ѽ͏$;bliMeWN=o=UgkIL{=[i䙛w[+C ogT{H&=zBr\i5biZ!+PێPEF*>"UYȫpX U'QEOSoq깡 uϋqMUjE=PTo: bqM5o1Ӹ*kҌkџVT\ST5tzt,sLQqMU\S ?5:ii5UaqM5 k:S V+cMu5\O ដ_VwFElQ~ugYΓ7*c 8V9%Ҧ0?V[=1fcH_+ٲBoZJeB\9b{DFkr-,W+V)lZQrb٤;}a ྲS+ʝˮ|U.JX]\veWٹ*ˮC=aZS#Ir#) }DO؛;9M9-xN_x$.9ŽL/`7L^\'gmB?riCDvnkM9 c VO8/)tpaG@4 UNKE0,(!~{zxqhe_]Q$# sjbZA;31+&}YXWIF|wuld[TR   ,όB16+OA(~ PsI!.C!; t@QgZOGLoIcԙ-IP:K(1N7?|K҂_۷~ 5tb]R $;c7֓@X$P9b$a[B]1BPdo_7ƦKPGO]wOm8]z];"^nÁmQ~E۷6\qw87\qwxUwlS9ѱƎ_O|0B;WCB 5Uڌ1R $?$j.ٍc:YuH(' 5IPs؁Я{Qd(ܟv Be(\6cҥ$a ?'Ym$.%BL˫@ud$P{<$PE]IPs 5D9j3&Mnщ6P ѣxݱN|q\nƭGsm|O6 t@A(ܰl$Pu 57uxMC j.@8jgZ,B#O) 5'PsI% 5'PsäUz?@(ܟv b$B_#wˆOt'.4},SMu΃Px} B 5)K j.iB%ڠ[tQ)vХ j^ *K*PdC!nIݢ'M}(؍}>SM:>Tx$ Ddvag}A@DʏJ w &d3,?l:s{)|F"2{Å=#ݽ{,?{& .5XxLLƫ{c0 d$ /dv!`gCϰf?T?yY d$ Ϟ1{g;3>ddE nguZCO R&_L w K4 g:YAkaLą{oʥMi+j厛2hoi o'F2F,XXK;7eaҪTXW?wSaeVM-ʧnڂw4妭޴ho*ݹ{^m8}؎>u_ˁs}Aw,oGw.(4wsAtbĶ»r;%7XQw,D <ϗg=|(j.Y~Iࠛ 5dVX@_l PsN6/=ACPykm$B}xOAꇢzP9V'?A[%B撽뼡~(B撆@H14¦@8R B%KGPslZ\hmV&(B撥Syd am tiD3UFQhQg@> t $Q6Ʀc :"2+ hD ~ؕ <`&Y B%KƓ4Bn6({vmxd ̀PLnGPs>}1@D] (CDkmO爃]%Kag?tD:4X%K7"Q$ j.YӣSdiM U$P?@ǽ%\J~}CC(ܟv "3X$B `B>Yg[t6PjeӳIKIPs?@W$a}m <`7#Ly`z jO;qjn'.A(ܟv 㞟O6 t@XwB 5dPsJ͓4BC}/\oo4@#e-:^y|x#.:^Xoyd,l_4mxY^2Y*Pdec'n(M`at\&B͍0: 5O)ȏ@y`zJ j.)B撽b V'+P+S-̌w?@PMsHV1& vp) jg>U$P?@=W'_ jO;qςPs 5lveT K!] A(ϴa A(ܟv BͫOPB_@PvΠ=jS ')Ps{AB=ݢ?BPsI)]d BPsI) j$wlg`aMayn BsݾD{Bp,#Ly`zB>.A8R .@(ϴsB_j.PsI} 57l9p< zXkE B%@(ܟv B͍g;R Dkmy A(mJpХuu%\W?>@(ܟv BmKC j.)B}:@(Լ:LO% 5'')B.[TZ-:~AD'S BVƫbw B~UKTPs؁Я{RR jnC{AJ zXkE'n6] 5?~' 4By`gCd?[{g=KC jKƫğ'\NcuupIC j[>vVxueTk _L(\dyc:YٺLLe A(?\팤! 5-` MC{mg(PsIC jd.S&rW.۔ȏ2YZPsIHv1 B0:.y 5Ǩڬ2!jh;*K:BQ$Ãy=ݢ3hG{.L˫γ/XG= j>d<@8*KPsN4BKT8TAB 54B憝/J~}CD۔᠛ 5'gSM%Ps? }@(0¡v6lJpХWg_?E% 5Gv6I)Q_xyoG()Lϲ4X}:'Ylkm ^ci&e}?`MwIk?=]2K%$K5!Y,aC`e%IcK%$K5!Y,ah(Yd>iI ؅/dAynG<0=K)Q/g<۵P 3^u}jjeӳIK, VIQ$;U6, }`WB`zXkEgЎ9ISfi M!F~ӳuAw>iMV _e/ʔu |#,vdnd싅6B#svݿY ^gc]<| gAw<օWHVlfwhβE<ύjeyvdnp&ɺVMɺ6WYL< c'O'ř'OCo0wɓ'a6r'c}V<0=[XTsXa'YqIKxc5?dec'n1@ec'}W;@:YccIPss:YiKzPXTq )nIc6Pjeӳ;v8,:S`J N_IGNa1IbL(\R Dd;5ǔ'"d/'vI)܎1l_fa?ouJ(d;dd7ʦX,V'+aTuZo$BͣNbw"H Aec"ꂤ$Q6& j."B(؍<<\'.\w΁>z>S, Lj`}L1M36*F~ӳuASO${ƪkR .H'Mu=c5=)ydF~Zl.@vΠu$a74XfB(؍2Yd'.@v5Z-:vd;S7On)ȏP+SM%\K IPs`"yw$aAxQgrǃ>_J j.Y,0^$iB%KƋ=lųBynGLy`zDk[tm۔`}MoK)=ݢ3hGv8$ Nk#Ta@8AKX;P@8, V*v*?H)=ݢCi K:*{>A+uASeәjoY6[ W@8R Dkm ڑ΅Lw+@Hβ t;@j{^, !4薉yvۥׇg{hhalOj~}}!vdt+޼w=ZW^47 g%|.(fGv1kAkt.eǬ}Yx8+Yi؛d Ogy^>9'G9{53Tiҩ=v6aKuznFoZA[Cam-: TAGv=njnSA TKu6=ݢ3xB=ݢ3hGCڠ[t= E'YՁJ lz]J3UA)8BZ-: Ts#{؉`}F@vΠ΅G3 zXkE'Dԙj{^ڠ[tڔx}πaA?q$#=ݢ3x- "{؉}Dkm ^Kv_yLlz v#?BLy`z zXkEgЎ$p.L5oy2 N_kBEcX Q${iNVL&6YPo:$Pj~ )1ư}š,Ĩ3URHpХB%A(\憝hB% j>j+|xK@)=ݢ=ݢȝ6<`7oGw.(7^;pɓ0 xޘ9y$ܶ}<ܱGNc:sܣXnHa͊:S;5?d|֬ ~<ë;EɮlšQgyXX|LyNd/SXPs1auZf${.SX|LyCPʦ+JciLaB:SšgScna'S.,? BeaBDK1X(cR ٹcؾr#8v 9y$,~"fNeiJ2޾]giJ 5k^uѻ uPs1g'.K*%$KURdm, &`A ؕN]Pd'c Y_O4X%dix}(j.Y,0=`xR撥Ά=KHd$KURd2`KUSIt uB(؍gYTԙj.S Dkm Q$c&XnG)Lϲ4Xde=w*d2́d7&~2KUBam-:m:Ye`x*)\c$pХLƫeZ-:ve(Y,v%,, VO'Y_veiJ~ n.])ȏ@y`z*I+ePVf$YJҊ1}w`  L: OgS, 'keF5Ҳ*_~rcyFLLt Y\8!vdnp֦?͔k [DuYB+S9uh OgOgZmla`]L:Y=*^!(@*Ǜ\ԡKJrh1~_C/Z, ڡ_̽y[wb$='=D_RR8(`JP9Ԣ[W\—`]Y=Ų`ϲ0SScEg ?ǎYZ#:x>Khad#Igeeҗeeee˜CPʦ+JciLaB:SšgScna'S.,? BeaBDK1X(cR ٹcؾr#8v 9y$,~"fN {o1h_,A]k+,KlGH7Ւ`Ţ0,$Hk"'F[$|7_=WwzcËpEϲW9kq:,{ޘ֓8AQ*>K7]@ϲ.UzcZ8}^p9%$FxXg\7uY. ɔ(u{SAS--B"Ri}YDR9CK6P-^ ~>Eޘo|zcË!\ysxu7s1SaYxsx]XjHAjџ}rywE?2-D8m[75E!\G\$oi]uyEbdJoLkAxՍg!E-(!H',V7R`Kd\ƴjf%p%fceqpWg!Eg1p6y!0,$fsJ75 ?/_ϟyvzHvbHIF p׸Tn{l.U߾!JdT| YgTOޘm>p|֗>Ѵp *o_ƴ~xv{ó_{{~x?ƴ>\v!E R!YzEBA?-̀i 6E*t*0sa a*xmHu7vp@A?-1[d6{%uQˁMCi \4wܶe/KZw}Pl-ޘV*ZGh q\TE:}3$gi5- 6E{i?zzWg!\G7pі-J}Oj8hF7upW|`vU}oLw;FC8Xʲƴ$sQ8آ[`sswޘYPw_poW9$ ޘg4zK ۇ?{cZ{cZ[CbHU"[v>arqx_tA5q^*>Exzg a͐1x75ڠ>I-WpZ"-Oln|Y`r4zcZ;E7nٲ2dp&oSSh'zcZ-R,oAA-œ>݂8zcZU͢}pI!%hum-9N^ 1TX`tCQ\kEJ 0G[k7h)X zéQ\TeT1"1*fϲzǯ~}oL]NaYT*N"*""ޘV-@pXr|.UF- w |Z|:ƴae,ǠDĩT..iuQ`eTp?LGv 5 ƴj^evnA yTٜG3fzcZ |'5f&Hr\"-Ojƴ޾"o_ƴ"lYY-B>9_*ZޘqQ|J"7 'N "lіMQ(<ƴFKgAP%ON%jlVI.DoLas->klYnzW/•7 { =>.,ƴ|ΌQ ovw]ab/r7pu 1"Epvw]Ev78E0ޘV-QK/.UŒFzcZ?,% nlF A*>aJ`ƴl`2΂JPzK/Qf&hzcZg%Q8%8Fޘ֯I:lsP}x.8y-,.S8-! (ux-'Tf8qYzcZҁgatȣ8B!\QzcZg%Q^",| sk%:ZROg,RnTXpG\<:,w s\`Ƃ ?AQ*fzǣPp A9 C AQ*G- ZGaRzcZuyxo_݀\uyI ޘ:lُN%h,O.c-W 8uyJoLka6-"OȣT`YNoLȣOg\%`)pY\{o10-ܾ¥WqM9:ld9a^* LoL@rxZF~$R~*0J. ޘV[ ;wEqM"A\tĀOtfDN{in]I80ϋK0Z!ŏ.1gIJ5cAE$͈ !ϲzW| uQz26"-B!BuzcZ@ѪOgPŵ4J' (fȣOgŢFp.dIg-@,;oZepQH A*GsRކ@oLh6D.w(NPc6Tv BoLmR* A]Fv2l-BoLkpF[$md .N>J5BoLA[oLBu>Keeƴ1(8Ia BGz lYvzcZ$q9eq? Z8dvQSQUEEZE.DOC\ o !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[Lۇ?ݗ}{{{>{zww}w?3]oLkoLnkxȣޘw_> C AQboLoӻ/wwB/0ڲT>h ZR,<\{oLov^G[p>[oL ^ݟ}w|{_~7EoL ol-.q "-K'P7fsQd40ZROgN>חn9`C FA'-Bd}[$:(WƴW{o1wm9[fh薀N CYimY\ '3[:ҁpDb! (g ƴ\qq><U ;-"oܲeA! (i AQ*<~aY__R%Hh!k@Ei}*.cH:< .guyݿ1,K/Ti *Z(aPF>ƴsuӮWwC<•O.{~_^NEbn{I Eӹ7 A     AQ*>K7h*89Y9O ϲó-r7$QuyN6-ݟ~hRElӪE`ehr)tf>KB"Ri}<=p,8y0FĩH pӪE("l.JE:(YQpDoLm-+h薽77?<•}~tawa7sdA"1Fq* )\G>KY *N>gR"ZǠ|čf\ƴVEh)XP}ز;0G[7}zcZGK ،aYHnp:uTqYO;9MoLkoLxx1+/ōƴ|0pD\Thf׿o~KI .i}@Ah|a9J`KEzKޘVI%UQ}n+1vx^U[oƴ~QFʳ_cs-}oL]} nTo = P-(!Z}QQ9ڂ_~aeqBIv+ޘEJ (ئޒ˸TQ\"p[oL_fߢh)X|e0,1/f߂bA-˂ 7oAReeEgh)Xޘm}!H,R,ؠ۠PY6.}ޘC$_w_p0Z A{c9ڂAe,x`Yv([ I"1[D%f/;w|`t9K7ozcZߥ|KO۠T$ؠ۠D>ʨKm7zcZh薝Y%Eآ[(.bt,".>ʨR4zcZ7"*1QE(TɢR-h\tDzcZJIhf[st[oLMSoe6)'R}Q2Z AwNE┃ wzcZ3ff%F"EȣRSYi=. {GrZ-9J,4Req@Ei-h"I1Z` ZE?HQF ZޘR, |ΐE`n! E-9Jƴ4[\zKg!]b,2>+٩ 1Z7ueϙ.!Q$Y䋄ޘ7nٲӯ^+mY\aAyaz9$U[smY$i@ -}{épޘ%WS;!ڠ> Շ-6Eآ[Hn\ƴ^$oqs&ϙa,[oLEanT?q˖P#HhqOũhzcZGKRE -_F[jsP7sZƴ GU* .UlmP\|Il%FoLx-p[oLxx1]~uw :^#µޘֻWo"l~lSo *^$niAAQ(D>ʨRQál]<0,T9IhqƴVK^:x"8y-hآmmPzcZTeTo *Z$! hT͢fe7 Z l88K9 XƴF>ʨئ8E b3Z}ݦC"ƴee[oLxx1]~uw :^#•6ho1f6e8mY$i`tQ!]bVQpYi}FK|KcFf\B(d.pD:,${/xoi_!\yAޘwI`e6IwxHS(l l2cYHn61a5s،Sܶe/5TeToޘV*';E8ƴ- lSo \%E>Z}ز;cG@M*6| buޘg 0-.N-i *.`HC\ђFƴE7. .U*jlհßl}LoL NA b3Zg _~ARf}ޘVT*թ*h8D"1Շ-Խޘ?ـB[|.rZp9c3Z$:\EJ ƴ+\}/%lzؤE,EimY\dScatCavnA"Q\i=?89hEIJv*QEp9[R%zcZ}RnTX ܾ*o_q9E[6.DK8ʦƴn.ETb`"*1ƴh" "~-\pDYO>i\tmA/0ڲT>fHpQn@iuQ 1-PTX"ܶ[oL+l[rEJ (8hfN>&ᾷޘE abT SoEzcZg%EkYP( (7FgInx eLޘWT@2e,.o8,kzW$ >`IX, R}Q%FTo7۝gƴ.EX,(~,KvAF3Z-TiU6PCr쳐"0iwa˙ޘg `3a\XabTݐE>Ei_t"-UJfaO;1w)E޸e?A)n$X%޺ AQ*BpjJqE"8y-a, ƴ&QlO{o1ϠTpl-.gv >O*J7u~qE 7 ;(KlY{W/ypiwaʲ{i=!e\hf'cs-Z jEi-˂ zǂŧ3Q2Tp> .gƴ,_z_ Z->V6"*ϙen.gzcZ}G!\GTR"Rwx6 Ei=٧'K>.> ^9f12,!pmP5"-)6㕏_}i+m[]\(AJEpqM@oLq˖e@Q%"hJ RqX1htZ%o-KI%U2K4f60ڐkD@0["h 7Q'3g8ޘ֣JzWEJTOglFavn @lbiEJ 0I =cv!H꣌*K6.UzcZm[rEJ |o*hq[D%maY1aE-˂B2e8JEa$2 7p1>2> jLA}$肀 ƴ&{i" > jSp9E-s9źՍEJdrzcZgNRx޽{\|-(!H,RSɇ1lzіť׻?|ϙ A"l-JoLэA ~+'3ERԥ ޘrS{iNdYԨ>ʨRNŏϙfzcZ6qPN>g2lsdJ؉ ƴE"gS\tؠx{iQbq[`s IpD )\GA"di}.U6p!W.M"dKR(P- 1';RZE^J?J(NPcTpƴ> $Ql>-q˖F3x7ueq={i+nzW/•,.հ砽ƴ|0!ZіťJA}8 Q\8IzcZt?'8 "xZR,{o1w>KKh!FIJ" . 6M\ƴw[$pOɧ3'[oLoEI6 j.azKq\RAK\vzcZAOg|`|(쳐"Xds.Uޘֱ\*| (Z<`3ZmѶ 5ƴ2[60ڐ+CzcË9? /LazylޘbWlޘBCe_׽ƴ1pD3=l.XF.Up JoLaH:7d$`3BazzcZ(QNEE&HvDmY\ޘ%;\S  -әpD|/uyJoL\(Nb -B>9_Uf7d 7ub/BrDmA`џ}r8(1'AFK,-쳠M(oTzKKgƴj)"Qda^z A],O."ƴ@p!\G>[oLW`Dޒ˰Q\Al9ɧ31z$Z=D"C*A}r-QHoL$> jpDƴ/r?,-oLƴmHʴÖKhFK|B07~;ڐ-d$ n,"Qߎ6$}8Ұ%2G[5ozcZ͠EhCRM%;|BYF-+8@oLuy [ ،!R}%T SoޘEnTX솬5$lTn#.U><{q7 <=1ڲT٢ao> 'g?jzcZg oTbrl h}8y-Ei n<>Ex)ئ~wԈ2ڲ,hzcZMD}p<jhK- &NA*I}=?zcZ=?xM%:AvlfY,Xĥ7ubsn|N(8} ˬE] l-ޘ(Gn|as0[$2\\%܀OcOg1E\r8,1l!-\C ";^MpA{il65(/'jgg>I6*n,ȣT؟},E5pW}`s!H7UK\[P% Y'3Gew%"ƴe*wO> o KhxEv+BoLkpAaYȢ ffآT}@oL\$AP}ز;h9l"1$8␒OgzcZT%Ug?:fT So jѥQr7urrקw_~|ٻ{cZavn (WOٻޘֻ"EQGv§G⢷!Dv<l:,>> aOD>JE l>włzcZGK|iC:ENŏ A(Df%g7UOqKіg;nHW%2,ƴi8pG p* 4t a,ƴ͍jD /lg8̳İßl re1[fƴ!GaYyՇg'\}ٻ _%]GzcZlR>pŒ?AQcT"D ]1. A6 _dn,ƴ)\G0,OERqgSPO?I'če",jnB꣌-m-1ڐ+GaRA F@oLOũ>}pҙׂa%lOg}zcZ[$ܠeθ;nTlF0,K8zcZH-/GbzKExቱ`tiR-66(>0[[I1 ŅFm>i"+.U٧3eH[I1 cqэ*11Do5pWy3ʦRE_R띻"ؠ۠ƴ7fPONr<_]( A*4ׯ.Uh_xmyisoLc9p%\74[oL]O%r9S}ز;l:Av-BvAi Zd -.Ej6E7*1LoLEY7nٲ|L2(8EvzcZO^ E"(!Zm-ޘyTy)?,Qdù|o*$S\ Axi{cZ?GC#/8rµzG^soL~и4^soLc9!\µzc[oLS9ZWk$UQ*h{i}mn{cZ?Gs8r~ޘ/ssTo?{n5w?{o_{cZIh@g -pq8C͢8(leJoL됪Ġ.U8%"،WqgE9ِ+>],_ JoL ,Xآ[rl"Iq-E{o1aX7_Q2[D%>j lQfF*sCoL_n XwprZіťǂ9-ni= It-[D%X%ON%_^ڦRDoL2(Br}нޘ֯o_o{cZyuy\΄ (g XB01JRj6(1Z(aә! (g XB"/ӯ^9W׿wC̞S">d$`3rx \G0,`ޘE[oLzx1>siWp75 hqJiBrf}ao7EimHm-Q\EaEf{o1uy\_}%5\lEi AQ*5s{?.,?.,.\{iT?SJ2(} !\G>KdCƴ5h_ N1,Nŏ\zcZH G"T?%)F%&1 ئRiT@S"|P\ΠEaY 1Z$lQ@i8 >K`Ocޘ(٩T*10t7ów>m^*'_|i"]-Qg PP%J(E%"g7$HE -NIn>>/@aI6 j,'7uY6En[?ƴa6J0[8\}:E}?Kw_}m7U8 -g;78]$H-BoLcP؊ 6EŇ[m|OOӻ/;<`<ϙޘV°h~'67>wg,QpE}.Uxޘ(٩Tf%`_ಥ3'_|}zTEԧ3~JQ'7솬5{a 7׿o~{>1 l䒢FoLk6{SbY}ޘnMSoe6"*1oJ|{".zcZG46(s-h)X|"-KR7UKa>mb !K@ huޘR,`npW>0$9Ogf] 1AQcq A!s-^66(jh|i}E߾{i}H^es-9?|f德ޘ~U}oLޘ~ҥνƴm^*1Z t!ťԽޘևt"^6N%\tD|@8 `YiMn\Xd|.wv>EP}Q--۶h[NޘEvxeΧOXDٲr<>(6r7U0,Scaasfi6OhzcZwΖ5/nȣ0,9<#"chfߒ}͈ :wg]ޘSq3N.).U>>&8,!H \3ɔޘ_J5 K%-(N}:CEt7U(ϳDI <MR5b"P:zcZG[(!xK;wEN-[% \hGw@oL0J&A QJ#AE@C-,{|-pMʆZmW# o=b]l`]bjƾ6ALO'zg %28omxvڊ!3k[yȑ7nlV8+j`.Ww֖{Sr6)ckz.ֻFwռkp96T3oܬy)yEocx瞶ٳ:.=~vǖνK~Kv,`X`X@'ʧ3}(Lú4JӰ.JAWX\@ΰtOS厙> EbQt['OZiE>PD+J2|d6E>PDdO 2x*ecL(Lff({!hX*iXj:NzѰ.U{zܩjƌu3]Yΐ@>0ؕm*:j)`ޞ{n}5oP6Ljjw]Tix2gV3Ozg}8;sh.`0Ɨy/pwyoó7V )Y☵C4qcYQSp2ܛR6xlSеYNC^s5 ^ۆsExfM,-7xIӓFg|ggYTtS.qc˸+vMUSQ.COM 2. !"#$%&'()*+,-./0123?@ABCDEFGHIJKLMNOP6=5>QRSTUVWXYZ[\]^_`abcdefghijklmnopqrst:HJ%uvwxyz{|}~Pm Ąv<΄gKQ%D4'ѱoFkp~CF 30C)MB]Af,|NW׎Ǚ0hћ~y3pnOz?* [Ka9lM޿d iҧGuDpOI%|R5[o&?{/@Y~W{| C'?{Nd;ɪPXGB(uB>b$^x|7> [;o#L:ͬj䗯_H34&U3~d:8il;WkN>"ןƙ0*~_M0_0?io~7ͣX~b̪Yv{$`0QHpt~b7,6 `d 7bg&Zg_jluΛĪ*-7Mr\`^L'VmDiF4/ }kcaOEA?{NB)(~vg]C9+ |pX3&"! xqnljhed_@zutf[ZWUTK;0$ sYRIG81,# yw  qc7n<95bjb:o9Ɗ!OwӰ.Q/N@+iX(旧v4K oS6E !@(O;J`TúXVi @օ#ֽ;J`%6{wui4!mʦ3Duڭ`Ӻw.A! fHiw]YFQ̟>VjƌjqGYݕGQfV{XXGQ'qw]5#(VՌ)q(XkF=#P㎲+*1#%`z󈥏XkF#qǠh% fHi(^nĺwuxXX .F+}dq..Aօ#*PPKNtb1Ӈq'4P!)ĈrZu"rLMdcRƲ+=3x`[MhB)Vu"rLMďDa,|`FOMhB)Vuߥ3}qg4Fz9);e k«;GdK֥wlZ irڀkWwȖ5K5(،;eax۪ hXS㎂͸a] c7JYAѰ.ո`3hX֓|(wX':%UKpw19P6&P$0 뒢60 Rúl &xl`z9q/ 뒢60 Rúm@rcl/om@4Kw4˖5K5BL>m&&{QzxMӰ.iѰ.[ְ.QJs$xl&iX4hX-akXw0ȠI`%;eK%hE>PDA/K^^huI㎆uuI QKs&9ф ;'K[pLrc|a]Ҹa]a]bc`MӰ.iѰ.[ְ.Q~A4Kw4˖)i@V&iX4hX-aBMLrrjhԐW3Mimq<}j߾SЉ$UC6PR*2)ZúTL&qa](Lf>`K4SUPQ̮klJY?$^{%%. ma]R-akXF1lQa,4KJ\) jMVՌ)h fHi-)iXeK%VlZf4KJ\%l 뒒XzaӰ.iܩjƌ6E>0 l [úTlZf4KJ\%l 뒢:0JVj` 6Lú.[ְ.9`B>0 l [ú4T4LA끩j` 6 0 oS6E@IG:0zŮU(Ux#S2`F1JUx фrj.86%.)@9`%%.ph A`KS`Jj̮ӷ4P*e|FQuINW3f4Ԗ5KJbM!<F[ǒ-ȢuqWva,d`Lúhv+E>PDa]5P *ԙ͠w- L& LúqPYW3f4Tؕ;Pt,EuF B޵ %7 댢iXݼ"P *3h4@iXA*ogv1 ""(?"ڊRcQ*?X4YgK43 뒢:Ӱ.9oގ&Lúlcmw(y [&3 1qWPl:jƌM}N6Prð;\Nhlfvq`LúM}|ʷ8&Lú ^«;GՙՙфSvax Ό&/#h]좉|;b"?]=g6a00VՌ)#h]uuf4dؕ=2&uVEuFI ci1댢u@!ָCu넊&Lffs&gry]0/{jƌ9|O/<7{SjƌĀUp5cFJC5T쁍HƲOzAȩ9r dܔո` )q OE!;R;fh%0FB>0 (#+:щrL`4P"P|$T;R;f t }Z߹/?{paa♵-Y:0 뒢 fHi¦ Lú6n%Tp5cFu Lú F1eZ4Kr*1# w02 KمmiXAF1凌_-Eu`%E9`\͘PMQuI mJܩjƌo)Ӱ.)q ^*ܡb(*wXW3f4TC;lbG[R4Qg֥G[&;:Ӱ.Sva,c+J@",J:Ӱ.)YtV4\g"(?"j 3 &[ By(3V%h(:kE>PD>Ӱ.CX­(3V%#[Qg PgXJX,T;Rq'W o҆Ŋ(!qO0Umtg_ Ŋ׳[,`]0xq>gYnyCf)ήZ7yP[ y5Ӕb ]v˼o/(SiJs o҆N0:Datpm)։rL_r~mJم_%Fkg?@ `%%P㎂M"eƲO;kgŅ\OίM%iXLbt~ma,}:X$Fk@E9(wX'z;U;Ktrp-\| óSӰ.)kqa,}VRNCɟ/"916]YkOr!%EQl&xl r4N [ú1ְ.){P%G bCE+cpaajV8 p-Z!ֳO;K`զ|fx+6t|1ӗF+7R) 5(D c鯆8PRjQh4vևeqGú NOمaJYw 2]K0wz۸(v?Fm({;֥urPPKNO;fcԸ`39Q<bpѰ.b~{`ߦh;P w4K [I6E `F(Y@!e&9(xDX}J=0J="XZ 0o8w4Kߞ倒r(hE9#DѰ.)J3nEE9(wyA     ƌQVՌ)^7nՁUp5cFJC5]F 㱊rPPKNP#.%.pڭ`sg0JJ1O>ؔAl[&q'0xBú,JNP#.D=gkcix-ۅK߉kN_5Z|,x Ug&Prð(ŐhE!PRC>0 @IGR b_@ہPR&PJ=Bb 3R2ja,=@ <$а.)) !/Rva,{JJ1O`ܛ½|)q'jMO>\͘؈|`ڭM(JNO;f <gn\L\ 5޶ cxc 28*1ԁո`x"HM ?ABEUp5cFJcc1nz(q *zj)։RrL Up5cFJC5Ըʾ;F1N$.mJa! |%;F(YDa:1*PPKNPC>0 oSva,!фSva\KR;fhBp\. %|v.B>0 Rva\KR;fhBpS. %|!ф]&RD厙>bW_"jƌj4?RR厙>_I )#+1#WXD\+`["".&nqhutq3J\+)q3A^Q)>BqG!.pF |%%.p&H+G U;K4q'4K bW!h95G TúnE%.uIIºq1q'0x"` 6ubܡb1G\~vʞt1(ň װ.)uNbX'ʧ3}qg4F `%%.pAQuI mU+(Lúq3RbW&kZ(Lú6(Ӱ.)q d䔜mTQj)։rL_Y2QXW3f4Tؕw*1#I\`TQj)։rLq'Ը`%Up5cFJc#jƌj,?j]UQj)։.H;f]*ɘh֥|` 6 .]L&Up5cFJC5Ը>;F186TtMt)` qF1ߓ>(Up5cF rG .ph%EؕG˄%"] L&UpCFDGJHI#Gۚ72 |çӷ}Niӛ9ͥ%ᕰNNݠ["܂weѬ&W־.n,wµ㝼eƋnw|*>FelE) n^',kÇ?XPڶi~}y{`lmn7"|kb*MV] G3z,Y׏lPdհ npŲlDX9֫*yLkVY۟Z]+Ç?=kS&9{ݬt.xĞ+kgUFf.}µ'~(Kp?n/nk''~(Kp?teƋn|*~pv#}Çwt .^i5>K;ؓbBi 6>19XcO+1ڷ4nhڄ JTv)GNY'oGVNZGE ^yѓkuGkçx[vm6?yRxɞso鉪Q% 7=BJ[~Kw JŶMˏ &O UB)Fjڳ+z"59v$.m+zToqI|b+ !*eBO gmO}Rg|C(#]ʵs٥sq!YGN#aa,`PXEBH*:qFJ٥3?rSa)<FGIapѓTGBMNJ\X&& !*er<.!bdSBKv];e|T TU$䑰0  &O C83aѓ¤$ThN#a4z$>,Ȧ䑰0s/yR& ǹ5cFJC5Ը틑˄` jƌjqG;F(9Lg_8nf8f_g-7I\kXm/]jƌC\S^ú$nJ`\m8޶#w#F5K80 ])a]Rt%G$l[u{ VՌ)z`\dHi4T RVЕ*0#źfK[`{q/Up51#P5K)$.Q".; c[0 fHilD9`\͘P [AwjÌt% 6Hni^@ `*: L&rQJBWjÌ JG-t' fHilD?3]ٛZh=Xi0';Dž*TRJ3`gރOLl%!Si2]Iaa,}\pR} ɻT-&O cБPE4y,9աa]uv5^D3>ֺҙ[+wz` FBέ<\;[Jo 9C _Drtk֗ X<`zj}sK[Gim}@zW oXEB'!!DW X[>'RL}Vp ؗ.9gd%yo>xB)JN=ry:to)Ӱ.)q ^*ܡb(*wXW3f4TC;lbG  -X,@Iz%WY>^ja_m->,bOXvcw/kg佫O>^jք |Ş`ckg70\t}էtZ&Ç7+ZnbYfX,`#O9eIfX,j7qD :G߶?j=e5bGrc0eX,@D~R\^h#vj뾶N;?R;LJB9Ҥ/6VmrS=']}JS8bcmrէUOGjvV[KkkF,kd#j92"? GlOni@v6+9)1rj'٬GjhM]Æwv6,a]fe u_[IV[)Z(G4I vbc'7Փ}է45#5~ΑNptf5?FkZZ[) c1)(C~'pD{@:CA3 0cY|X8w/ F1ikDN#P<1Q1>P[#,%>pk)@܏CjySdy#b@hGҔfEEQ`^-J1YblocGZVO"y* c>2' juV3Տ7}ׯ:fzYaũq8"La<]|J<9mⓏNŸV'u..E/]%JEHFGI' }'⤳4^fxo,%7`g\2\Kqƽ\mtsrZEUd6^;R5kiK:ڂ) GfM8M P4AԧniS\ʦ wmo^#w+cF@nehMf3IլGZ)[PW!}[@UHx._ ;QL ia]AJZwBZAn (9V4yQ7ԐB`WggP..=ȍQSucH3æOqb󢩳pQ(ZJѠR&RSAOvR5βMKye R.KH番YNzv=Rܦ{R|{ao⽰WgiB`CR5ۡ =KlgCk)nw_Jun&zVAlC:q{o,f1vۙOv6Z۴a^GCb%PiCR5[ث;0:!ؚTͺ8gE-8Çts,mkm&z6'i?9X ԵISM+]\ͣk)nGũ;R|.nߑV0N̢-Hx/86U'+U&M/Z;p˕:mAdג{q{vXMODEM.FORh ! "$#%&(')+*-,/.0213o456798:;=<>@?BACDEGF5b hM?wnV.Çwzaquroir=\TX?dҦI c,(v򫬝Jkk|Ir5a`}ag.s ;KjhM{j-{-X,Gre m{vG3z|Ӟ"ŲvgϒˬWr,9&6,-cg ŲҶ=`*M]Xf\[(?Oo7*>a ExmX|%Gd]Xe$KPAyMm?vӃ{,e9?VǏUL E 5sLC=[(OVcP罧ȪaSf+\rjoMr9?k|Y93y6_>5~~iwjp:cďU35aB1/^Ʋo7ƦG+9X,xi12k|dcJ3G2Ԡ>,032V`,>e3{+hޢ6X1f*eX3A4 *aX"}f+0/ΔE2LeGSjf{þLe /5i{þLe- B5f*eX6_#~<XcHJ1SXޏFH13BPb|~duo^]#^;GZ)zY' ;YOv{ RwR6,Un(H+eCR5fA]wNz"w+cF;I/B힤?Q3=#ꓥj!I 54%HR5ף7H/ɮ>yjք6,Ry Rng٦-Hx/86U'+U&M/Z;p˕:mAdג{q{{o,Jլ 54%\[ĩOے6)Gieo :JG|0p.H낔q]13*s,K(HA%oysnAn9X -H 'i|Ԃ]1HII/ZXroION0$Vu @݂t|5젋c`HHIJKLMNPOQRSTUVWYXZ[]\^_b`acgedf}3Zl[?'r} 45Gd§ēCɂƗ4vycV2Z+;ɹ~̗.S09 lb!_kn-R25gT9{}މxBMTZl[5yo/%-ע ȶCz 71_JZ<RA2>Mc>գ ,l@;:KQŶl1ߘ}N]zJj`~`YMeEE>>pN}BO]BHSs~L|u̗9/dOyM‡(G?ļkL>(#y{0>ŏUNc=9,- Ial] z[}t :ǻJEfg *M]Xf\|6|#~*3Z@ABCDZSAA.x|;HR5 RvNjc`HTT|HR5Xro {5]h>?H}wo-gcɽ'iOD);ck3RnYfHլ )Nq=J+~'番YN[$i+k)n⽔,V7K{^ˑi W;= :nisߑYNSB;=#U&.cM$N}G`ז">i-R|pm)ngj68_ϯݥ}/Np$ւ#1|?0lhkVژLƒ[i;6u"8ךT:l4u(UNj]ƭCb%PRܦ.8_GZSM]p$r!5G6j8 }Fr @]Kq4X.4sŐ yz-moysnA'icɽ9'WRRܦ\eA     Lw1SylTZl[6}_>S6[~:#E8"<~}Q 8"2j&u-~Pg:W\]dS/%Qov[;# ^SSL!ŏ7E>#$v¨9)q[13BnWG)^;昏u2585LAqܫ#NKݭu25H\V*cdv<qj8Ǐo^ޱTӘ)3f}LTSzR9#a|ESSRT1(%*QL 8"2pOKP?1SQ3" );vj򌙢+^`§ēC3-_rŋ,Tm|L2ƥ6T1DD%)GDF)꘏4b TF ;^Udi _Z(s,ԧ^c̤;v~i̔B87{q+%*QLzKi gjwr+J6&߫c&ޱ3e̔!`d cW9FέO>昏,m}͓^qڑb8,3:.PrZ<}9ǽNw@w1 [R :>㎙ҽcg4&ǓRi gjwk"K`þoS{u̔Tlk"K`þoS{u̔c}NSJW73gTza<3g bK(\>w̔.#zc0L)<3-O'yJ<9,-a<9)E>#Q90j)z}屸-`|J<91SzF"Sɡd]>w̗RylT>%Jz=%J֘)j~1|$}Fŋ0G#͓^q8#><h12Bb=1y֎W a,!s[/ HTV r3-A`mc>\%|>Vi?f[SsG9wդgKii w̔DԌ*b̔z=.)cm 03{Ώz?DTR E5߫c]LQ\u̔Tdyc0LNE_*J<9,Z=u5?NE_QKe/Gb'ɆTYG#^3Z}.UxL[џJ6V7昏4%sYyկ<޹ш1IP'=ŬSXA,*wU#rSj(ۧ,@rJ1R^bS5[/Fp+Io)\.U:rŋ܊{}:#S_"0D+^ c&ܕX02jꎙg`:8fJQ ctع񌙢sGW8Tarvޢ6a'pD05c>*]9e¨w~V_AS!?rD|3=a8sLAB^>wD,t sLAB^>w1_*\.U~U1_*Sn61ӽc'g15g̥u+L'ST( c<h12Bb=_Jebg%EН A fԛݖz`kL|)=1x"ފ7[Vr,#ߴa7D.Q:fJu*R5UUսT}q;{u̔)j~1Lu*RUA5߫cg`@hp۵5>{w1pDؕ0~kT13mE*YXߘc>YHT0jE z'bTq,BKSy4O%<5|$SɡdRZٹ@}˧ēC0|>'-@_AGSɡde>;f[)P?9]ṳYZٹ]ܚO'6;?[LzKc5?c>rŋ9~ ;Kg*!NhQ nErVƺ#XRSy%|e`mc̔0 nE15w?ym T&w̔0 WhdíO^%kK T&w̔byKT:Reyƞ[џnN%d Yⱂ.Q:fJK`y7#G#J%w|F>S_1SwxLQ$AxF a_cT^"/ޢ613B%tE玙.ɫdmc]>wD,t ֎V'^>cT^"/[џJ6VF?ym1LO'񌙞OޘQ6`! ^bKcQBʹtvY=KgoE#D/A<1S:©Xλ| XF.v>,}Ѱqxe_ͩc8ߊS:tJ1_Ju*_*k X˾pnNULsTY;Wr0_E\S4ws:fJ-c|d\hDNçE #XR 3y)ޱsIx`TbU6h` Lzͨ ^!;@a}nt%*QLNE_*/R |>Pj]ࠉZGuˊGm%SsH Fmm/5b+}{P:o/ k̗Lyܗy*vl-6٭cyu vZeRTRy7#siz'zcG>#Xo1[z <Ƙ|F`'p g " cun .JPHQsHK0*Ԝx*Q1ȾX1ߘ̥u+^ǘ|F>zc>!(# mn?ݠןwǛb[cRٍ?Mqw[Ing7n,7ݚjl~v~Iloe}jRyl;A-%zQ:؆zyw)\cR%CטeP?,A6g{]tf"Fc`[l\uLiJI,j~1c~bcL`u0ݥJBV_{uL`6K?n!qI̾5dt1Kxj~4B*HTd:%<5(! <`:95Ǜ"˫oEXcS c1X2)A+ 4hIBbGİh DAWR15[01_ZҪc5:Sۍf9;nl:? R߰MjnxQlnnn_[Mmcvxx+a4d_[onSkvne[62m4#% xz9(tP y*-s*?rL`7ɦoU|6oSM6]uL`e֌NJ.aF}1mn?fL``7֘6n:`_uQ~|qŧēCQ{ݲzēCO'u:nYn[5ߊWxm5~^VͿM4&uOej/(syd3pvv*O'"Nx˨mL`fؖsQG1˒djoE=5|ڛvnZ7?zoK|kic7mlo/E6bsZ曬F::ֿ?j([͟?_7Ilsf?5T?M_꘏:~j:&ۿf85 cѠUf+0!ܭ]Œ ]cR~͘6nϻM1mn?h'1uIng7n,7ݭoE]6ݚ? fMqwߦn:Xnnn_%J֘oG~U0o+J35HE+*e}|c>Ғ 2' qE4Br<>f:ƘT{,*箌NŸǢ1+e4r^3qk{P\ۃʘcTZٹ]<<(:f;Ow1_Ju0ݥr%z01_Ju0[K9wtm1-)}Yy1S02m9cw9v|=ʹ+ HY 潪HaXR*1YH*1޲=́ ݹ 1޲=(2*:<t^1޲=dTtxLΥ^;KzKi gjwn^ۃT1_[J`8;ϣ=(AeG}x+.|:;pDd6ZMv>[^潀0joM;Ku0ݥJ{A*"^sG*;l 4Bejo?iJc>]ӘFosY]޶6;旄Z^? 1u|x9)WXO!.)LVw? :-~j:&ۿf+0w[B#D7f*eXDmisWp{0xuטlcݚaTV#~N5f*eX<}fh<2*(uט/mn&{Sl)[}Lbkk&of^վ4: +k>Sm+4bșo~cl~j__O{̴vmm~ڗWm7?mk;_ٍoc>F'S`F,Z=1jo7;;&uY2l: ů)k6ePGwjvuD]V3-bc2[:VͿMטeP2&uY2g77߿,A6g{fY=&uY2_)5ev[Q2+Q@9X1&uY2IoԜK@`pz.Q:棞J`8;ϣtٽ]7wG=pvv*!`FwG,1TZٹ@=zKGus|Si gjwA f A E0&}@_AG%bԌz}|ly>@_AG%bԌz}|l 1u8ܽݭi~.mG=pvv*}xcEp:棞Tl!kN!˒>u-h'ƘeP?܋zK},A6gus/m6cűTxpLdX֩j'ƲN5QU^bp8VFf;~v/?g|ͽ>y3c>J`8;WKSű2d77{9nEɛQ/:u|x۴O??m6&ܲ?cROu0ݥJV綀|T{,*\|uꕲzFV]D/|i[x|!(󷞳-`cE06l\ۘ)\.U@iSVX8UzZҪcR`_F:Xi gjwp*cl^vCYg:}k3Ai S2cAx}zY6 -عBShX1ӶMT{,VzYc&s!Nf+0- ߘU+w=Ȳ1fJ_ٍWvc_lݭ6/6c&_vj7mo~c&;|$Jw=Ȳ1fJ_ٍWvc5onլִ3[vj7mo~c&ִ?fj'56Zmn_4fod gÚ ͊!e>CD#>OD#>MD͋ Auto Renaming Filetype To ".OBJ" !Ae~#6DOBJ#W͋ File open - ready to receive ~K+lc+~Ú !]~ ±͝ [No file name specified] $ ~?ʿ#³͝ [Can't use wild card options] $2  گʲ7Fd덙Ri gjwvbXFd덙RRLRE-}ct'uı\ṳpvv*kG'$9OC\'^3-u*_**F a_{}:f[)E0fJ#^{?f cGxq4"w̔̓G)j~1 V3Et?O^h~76Lu0e?؎ϏV}so#vp|XMODMFOR.DOCS  ! "$#o&%(')*+,-./1023456789:;=<>@?BACEDFU Q؈HəMћ 8FF[ii;u4[]/tgFD9vpKP 5y+$jոG#Yk=ӛ~d{BFDoձ3yBI(ѐ˭ 9¡Ѩ>~5@gz=Q\|}IO{G>vpk%'I߈H7οS?oui*̇s::b~G'i簟!hn>!d:$aPC}䞷%7JʛzZBW|lR]Ѵ%_wloKEB;VG~gmN_iԷOc#"ݜt@ 7)[ʍ&I;Gc]9G>l5Mr0#6'Y[TŇX0L A%[֯Yc 3nAdֵW_j+_* >fn4 klnVM;KW(dc̴i՚|7?nn?p2Z3}g7ڝv_cs0fjnxj{c?6/z F56c:ReB(6zyØfz?8 NæɽZju|3i~^h~76Lu0e?؎ϏV}so#԰1}k3Ai/Ęisf?5T?M_꘏|Fȉ0jN EIyF)fNJ p8֘i[32V`,~ (8Le^:昏 5y<)fNJ bTq,]玙o)f >gG>S_vTb1j>fzF"|c>2 n܃: >>C : <2 ~͋ [Unable to receive block - Aborting] ͂͋ [Incompletely received file delete] ã \<͝ [Can't delete received file] $2 گWگ/z2 ͳ !گw,: Qگ: G: %<£گ +> > :  : / ͳ !~ ,Ly z {  ڠ: <2 ͝ [Can't send sector - Aborting] $r1N Ҧ> ҳ>  ͝ XMODEM PROGRAM CANCELLED $: <2 !|> * #" GHIJKMOLQPRNEDFm|JJ2?6"ҍ 0CMZP;Vb;o`P̷پ o!50}LVϓ~G9L˦YJrG9LH-ڐ0}Igb3Tu/6"ҍj+_0؈H7*+<j,'u*Kذ{[yYvOM)K-9K>D2ǥ(u027ʛnC_QcA#q4j'L֫u0r5ԙNU"Pa֗$:b8ӑ|t4wi\ Xk4 y /.1Rdu*+\;vz0-f1jBZHM?ɳ7b!X:^}1|NKe&X|c:ld}"ru]LQ11Kxjh1O;#W*dy!_c&u*+."NǺh<1ӶAr| <3qXץc-WʎdZ}.UsT6X|tT6Xkce|Ԍ*YXclc1:ce|Ԍ0^9$vA}1:9Ku*_*O'͓c>22r%LS ښ{S:©X}]>H#D/"pDQŨ~NcEp8.ű1_*SRy4O{Gzc8ߊS:{~cTlvbX!b#" =/M3[&OPC=԰A/}Лs0G6mO5NaUnr>԰6-\Q_ۛzXirkU,T[⛜ CGab#" tg{49G6g/N}/f֫c#"XPt4KP؈H7V{mvT uPIVW֗MOpi*G c}W 9?6"ҍ$!b#" t^>X%6aEM_|q[ZSUSlD ~xS#Vg]7:WUn>|A>԰^5[_'}w_%c}±_/4@ gz[q~i*[wWduL4KP*~T&6" $n/>v} YW=\     |{0\<͝ [File Exists - Use a different name] $2h2|\<͝ [ERROR - Can't make file] Directory must be full $>?2h>2 \<͝ [File not found]$\<: o&T: _)))))))" =!oF+++: x2 ~2 2h2|\<;͝ [Open error] $:]K:^{͝ [This file is not for distribution, sorry] $!g~#KM»+~O»+~C»͝ [Can't send a .COM file] $͋ File Open - * ͋͠ (͋ Hex) Sectors (approximately >*QB@3*| KRQB"1%(*?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdehaa_G3ZG"W ha$APH  DCⒺ6KcW tJ-2Ԫw%֡:zqI, Z&͋͠ mins, |o&͋͠ secs to send at 300 baud). [Control-X to cancel.] O)|jg}o^G\l&w\<͝ [Can't close file] $ ک |Ġ{0g |t }t : =2 * ͨ " : 7P \"=1͝ [File read error] $! y7>2 y2 !P " * !ͨ " : <2 : OP \Ÿ! l2 !P " ͖ ͝ [Error writing file] $P7ͼ O h($QzD4ڎ -1I ~%W`\*ImGA$/Y5H3B"^mGA$6/<#H3B"^mGA$NPRIh; 2$1ގǯy?v %+7h ImX;NFQ%& Ii%vگwE{F%{l_ CKL.\j)|M$+#`I#T216/FQ%& U;_MD»"=A1J/1!Ҍ6ڎ -1IQ~mk^&xD4hT*GZ1X9{̈!c#CZq{p'|Y-QH)Ĉ ^u7\72k&BL=R72ڊ#D^טGF6ڎr[a{Iy'?ݹ7ZPH(DAn6Snf#r}.UyaO,*Hxyܝ}NK~3@HId\Mp"J/K10`˟K-wn2j6BxY(7{jw\vlZaq:YBK J~nIW!F{ZhS$+|߆(7c֞)0GW~4Z-aqWlh,0e QyƝO)#IrF %rF z~Yr((I A @T(HАrE 2Z`/7$ *!8!k&wb+-D@@"A 8+'(HPB%!rm\Rߎ #%ҽ+W`CQXj0Zã  x ͼ O2  CO ʣʣ6 2 !l\ͪ 2|2h_}  چ 0g ~ʘ g #Ì ã  *N ~#ª !" O* yO}o|g |g}!o " ͼ ͼ * T]* |>CP A      "Ę\X_h+BH!f>&+ -d=xy)OwnFۃHnگp]& _B4A&(RE --1o Dh+BjaFs%r?twz0m\ }Kb$mӼO+UeZ}Rd3Lzf=4Hn UFHn=5h$r6E/fjG?Sb& ܐ3Z!|Rhb#{FE>*RUF[+BHREK)Gr֊#b-BF +)z1W5S;y2ڪNыfL+pChkIb֎r[q&W(7Â^3ިHREW"hkEEWhH*Ǹ#D8+$ިHxzꍶ#f!FBJ!zjɓ06&+SmUY )*pChk)WߧF[r*6ږJ&NOM$wS:zqq]&9_m$"r30_|P3 .ch$H䊄 h;7S+c:2Z؃TL}U!)W^|z-K?f XKxnH JH ׭/q: EVS$V4A*Ǫ9UZUF.\j+J8K)x1,(gUe洘&HX ܐ3ZX;-pȻD` 8U,(mA*>*pȻD` 8U,(m̳Ƿoߌ U- Iz #bdUe-&ݱ̳tjB͜ŘА$^Bv8+XmGIyQ&G0hL!0*4# ѐ5 ߶E4$.E4$.kh-S!Z4$.khH\R׮Lіܩ BDF R9< `h; 2$ywO CKLӫh; 2$1mGA$/mGA$6/vdhIb̟jZboWF UKdZbF.\j竩vdhI…KT|55ڎ -1IjjZb )j竩F[?"W.ҼTէH'_V֊ 3ޱqoNϒ_G4~,I2h:q ܐ3ڑTq8g>*RUG%bm1^+6ڒ+TiUe- 9Icc!K%Iz-DF[;1nǸ!qI] .$q ꍶ UmGR9-*RUiDOO)$¶sw[IQ\4pC_m)&2Z}wі\J>Q} F>Ѽb+$3ڒ+6ZϥT>ErU%foǩ7ZbD"W*R]H9VAm4ZGAqѐ5ڦ\^L([Vu^L6dZrF[+OMv$cr- RFE>*RUF[+B$K.UUF[+B׊ U-I#5㠸hH\RmSb\Akv}eUe0V )2DIcKԣr3,5㍊ }.Uz)V!I<*R}R惗H2RE*(',;دEbˋr3* 9ޑ֊#̥Tm1^+6ڒ+Ti$ Rhs z]3oKF[Ub2f2^n*pChkGR9-'(R1k/Y٤7ڃTL}U1NPb,^rIo"zhKPbBᴀ8^A4A$}F[Ub&iQrF[{SfO*pChkA*>*x*  }F[kg=}f UmmdeGh IΧW` %% I0#:zq5IW@v%F[+B`*WbBu20hkEWjYUe S}ozߎ"xgYmry+p!(4#K(;'Xygγ,*\+YTQٯhC`챾2mTBxY_B <sC$'SKV0qgQrF[kR1V:zqhH\Ť7Z;7%Wh]cc8ϸC4$.T ̂rA7ڎrіR|j]G/.k$+ CP<m!(Fdbl_P{~WPP"r3HIB%H hy: R9V-͙E" گĝtؼ;B`ՒhaGR9-MA0yV5&b" c*pChk] CPG7䅮"H`R:I$APHF[څ!( O+#Dp<{5ڎ -1IO+(pZjZbXgZb,̟WFQ%&r3vdhIb_-~-V-vdhIBRpFQ%& .Qh; 2$Aj竩vdhIFm\BKREW"*KqzωwioYāgeeR0#K,IxYuDᡯ 9Ic\3\HS$W$=Ҥ7ZbVl%+*lɴ7䌶VH1hb#{lIzTn7*'TէH= 8F[+B$K.UUF[+B׊ Um(&:m+#{cOwc߶xzꍶ#{KaFaq^dی"KlC"#zH*Ǹs[̱%A2Ƙ]"mGR9-c#IwgWwgFEJVAmF-idMZ#$rE"ե#hPATa)m+ovKoMA0d]_HF[f$^\\׮Ifp9g(a~D`*Uk~DMʱj)# Fm)"JhmK"%~)UF[f$ARz)|h+|zRαF[f$ѨY?mo["x "^-H*Ǹ+F[bw\O2ڊ#z]̫h+B`k8:zqq]&Y*Ic]y]4h+ԵV!R-D D1=RDH I+?A9-bbM| rMA0TMhkEWqH2ڒ+ oD!qI] /!0ڪRTu#W?r*5+S7wݨRmm"^֫o|j{YOhkEݨRH$˼>Ee"nԬɫhkEWq!*-DF[[x*֊%u\4$.kH\QxJH䊄 hH\Rm1;ECⒺ6*#{%umECⒺhKPF `/qF"*!Iz$ ."(-qfjG3b,_*  G$ $DCⒺoF[+Ե֊#DB $A !`/\ѐʔ##KQQM@"2%7^B4$.k3Vߧ(x;6ZbU:`/s"2hUe- 90E+S7wݨRm!FtBHQ'eN$WT-UBR"y>ˇZU*nԬ?XM6dj]Y;9m'*lɴ7vǃTL}U1ގ35kryo?btZQ&G0Zt:?^翬vǙgo߾m%Whk)&2Zw=#$ RT@4$.k2=DCⒺhkm櫜HLieQ4$.k!qI]DUe\Qx2O$z2ZXkR1y5VڃTL}~^MDCⒺha=HTtZA4$.kW&Wө \ KysY?2j>Vy|oE>j>^lc%WhaGR9żϒ SN$ / >Qh+OT2JN:-hmSc3bQL 2&R/w`z(U$h IVFgJy5C4A$$ / ԒBI#A)y 2&y[=C0ڊ& mb{rL3yhLQ*UKF[;H·/#gI"J&fՒѶ0h[(L̪ ˎ&/FmNjo ~]eyx>VF[U#Of*|y0WF[kEZ֒+Ti$m̳tj%Wh0$H=RS(KOQ}Ҽb+>Q} F>Ѽb+$3ڒ+6Zhӌ$16!|Gm8|ǗIbI!&mo ^}7sYF[?"W.*\Q9q.񡯌~D}.UxqNK~3"HŒw,}yg $||% / h޿4VF[UyB>V֊#F&Zdeeɗ!gVwm-BF[DTV1X4Am&_VF[+Bu, L|OMV57䌶JN:%WhKPvhK0Z*X!qI]myZr*\J$A y"8)*z$pCXG/.p]&phh^\@kwhk ы5㏕2%Izu +Ue %&o&LG+pChkA*>*Iz` ̂rcD-%&<Q ɣgbuX !\ՉFzBF[kg=h0aJ^\PrF[kR1V:zq5IC1鍶<{|hk4ZSub8Hń5^84#$Mx$GTШH8H41ڃTLt:$tZN$ZUYWy|_tjme^=߇hkg=Goө|c\3R1!`/'XdfhkGR9e eG$3hy:eG$3ڒ+O?mSc3Z9ɗ| 2&y[A9i~D _fḧ! `(oܨcDP *GP% J)ke$q']h I"|² T zIMQ92Z.| U\_TP; 2&y{GDhӌ$"OFgJRĬZ2 ߶޽Do_F>H.Gh[2}1hzӄErXMSkK/s֎r|=r4sT UmG>G>ieUe=i2I$WrF[K>',;mȧhk%q'і\JI{|ySziS5sTէOŽr|=rT|49*GȧO#*r rzӧOŽr|=F>eOY9iĝtF-h`5Z+בі|9$]ϔ hm3%BD"·wx)U/TP4h[ _feRh'e&/Fm۹hW+\4A֫ie֏տ˥4WnqNKt|+цתZGC@$7}:E]z28T.2ThGREGā47o,*Hxyܝ}$tZmfĢ PT ܨc& dB+J 7ʍ:8Hń!ZP%[pChUh !TLʑ?RLQXqhDpF&HP=r{ݬ2Z`Gr*Du, QbI%ZJ)DT#z7BF z?2h`5ZbČXԒhL>VF[U 3өV$! 'x[rF y,p=hkE3bQK 2/+UeMx9$D7䌶֊#Fm5X9¨cYL 2&y[Am)"ȗF `1DdLʱ$e $ / 2Z2T1&!)1| I Ƌo kh+ `Ƌo 2&y[=C0*4#W·wx$o_F^9ΒѶ0h*kegh;|?@bF B"_REB (6J^+ǟF^9 VMUe#rIˢy+ռϒE=W+I{r<+FqjUYrM%J m^byv:F !IxY Ztjw\GF ;-PE$$덶7TLH$ k/Y٤7ZbVlhhH@"^_23A1%#yqqiFP km:zqq]&9_G/.k$2Z·А$$ RTHң]B"^ |Z+ב֒^ 9ObBrD!$ˤ7Zbw\/_2ڙgh@1HJ/<(0fAÌDH1|tuApX^fA9o߾Y+c:2Zb6ڃTL}U!Iz$^b^\}^G/.k$Vbw^}*%WhkrTGr"j.I&H-BFmg챚N6ZeR#*GVl4—0r.fw#(: \!F(F @э !KP W& B(R`R9^ougk!n X,~8[fțhŀn3Էh6㰽=cc: 2&pPI;یٝ&/ؿmaؿmaٝ~k4ov99mFc:/w眳͐'cr6_կ/r-?6h4oUY*pCh$3 U=6z5|Ѓ;I7OE__]hh+GGFF @CٹnT)pP܀ I)-rL3hԬV/B_5kr®LŠ#Q!WhaEݨR+SehaF?lÒݦ>6CTFc?,wUFcvY -6FvX>`j]7nYcnx~i;cqv;y{;n^-=8᷻+,~<<-_ »G `ғ#G$ OFcv= ;M_zowÀp>? ohߎ -1IgV-_f1|f1|8pFcvY `rLseϔB ochH\R-+|zѐѐB bnGN~ޜSޝ>X1N~^\,UFcvY -6-c|r/o;,n<=W-^apan<`Ưx1lFvޜ8v ip6zN7 ~8|y{q3z?~[հ|0a@i0-یaxS+ *K$%HNd4oGA$R3|Yn>[n>[8[,W0V^2OaY;}ysƯNywbvX>,Ǽ;}yrb6i{~c=HT[%UEFcva90^f((+#Iww d4owov:6 9.?/Ozj22%p#}7kЍ !Ee$.2#+?`}e/ѨY Dr&0,HNF r3H4b' BQ )1B !FL I#oX_.1քQH ܨ;V37ʡQKy_@4$.kF aQ$!>xyIKWH:<"8rе%9V)= 1fݯF  $(4# 1RJVnfUiF+V9I4jmcDm^!4jF[f$V׊c^+n6Z؃TL}U\RBh[x*;|ШY?7ZX{ϫtZF͚!W&N֖^YM+]_VF[[x|5X+N%Wq jqh!5d0Iz$H%#5dkŘԔ\CWԫ2UO֮ǹJM5TpEz#t PP!+@SG #בZr"vB\zLJcD?C"Œ2.1$=9$-tML-B+D QH k*$pb4$f!c>*Ҽ0M}BPJ~y+=HT[kh+"IoN:(b4ڊ#F!c=~ɛi:UU䴝x׻Ӈᡪ΋9l46CU*o* S}oz$ܥyϋh[ۃTL}~N[忝2Z`oR1VG]9q.-KPXMS^W}]<*^t6pܼ݃ϿRo^-X.rFc4w?/?lx&hy_}<ϛ0~u&Ӹޝ> U'u^,9g _w!c_͛ak4v*cǯZBTb(D»"/OI2\_l e2Z`H*Ƿ܃\Tq꿭WySe8/wyϋh/|Ѓ\Tq꿭WySe8/wyϋhߪ>/wzUML?/vwݢհ1{XwwɛiW&U2VԔ\G@^UZ+6ZۨY3W)nԬɫOkha=HT[{4j%DjTͰV\obj:VQ&G0hk*fB*pChcf\wQ2a2ZR1VGfMIⵗxϫtZQ&G0ZKP֒+ o%Wh+;錶 6uk;VP*'0Zr*5o!.Vޡ\ ?JJ]d(F͚F %I U5~39? w Wh=HT[) jw |U7Z`oGR9ec5E"]V-F 1^+6Z`\J ]ūacR1V$SnRWzhߒ+Ti1hbBr )Fcv<qaicPa`x6uk;V@N,DdL2gB"]Q`IODP2I^mW&$YXmcZi~DP\Th; 2$ц׬Zr!Zc#IL Ɍ? 0"Xa32ںM6ڪ9Uzݕ%V4A6fRe#rR9*@F {Ϸ =JTjVnm%q'і\axؿ=>#޼یqwWw!oqw[TFc?,w  LH2Qxe|΋>yj]q|\26㰽=㷻ū|< F7va3v9^ <~.ǕF KII$[BD!#I X.~;ο~<>Za0`,qbBJ!FZnŰ_-bNdsZLw?^q *kL6D4A*Ǫ%LN d3L/ 9#2z8Xd$ThkR1VKFAB!,RRVF[ʚR0!)j+pChkA*>*pCP)X*JhkH*Ƿc\3{9r%+7F[kEZ֒+TiA\O,abhHrhkP1,і\J$3ڒ+6O$ц׬Zr!Zc#IL Ɍ? 0"Xa32ںM6This is a document about XMODEM.FOR and associated files for the VAX. By J. James (Jim) Belonis II Physics Hall FM-15 University of Washington ޝ>|w?mW*__m+ 洘΋xy΋2nŻh;lOF?lÒa=mb|w珻ha:KRvwma[/2ڎ_-b[b|4ڎ_-bhnvðݞb|4bBa=m?vh/G88,__C& ~yW?V2.~0hӌ$HJ/mo[BR^ 96h; 2$h; 2$ARFWSmx ׵k%HJ/vdhI?@ABCDEFGHIJKLMNOoPQRSTU5SYk|Ix,aTDzyZ77xO6'5^V >./Yw͌d,a5`ENrjP_5nYm4h5^K,fūiخz@|ysyټT3they must be converted to ordinary VAX text files by FROMXMOD. If you forget which files have been converted by TOXMOD or FORMXMOD, just do a DIRECTORY/FULL to see the file format on the VAX. Similarly XMODEM will only send text files reasonably if they have If anyone hears of XMODEM or MODEM7 available for other MAINFRAMES especially Control Data CYBER or Digital Equipment Company PDP-10, PDP-11, VAX I would like to hear about them. Send mail to me at the above address.  the form received by XMODEM.FOR to a VAX text file. XMODEM.HQP a VAX HELP file about the three programs. CPM.CQM a VAX command procedure file defining XMODEM,TOXMOD,FROMXMOD as foreign commands. :I5}}»8oV fjf;ڜlט8[la6/K,X4,^>-ʹ~g׫W fyn.\L' Sm5/N<%`hynYެqv1dt0G)kl7KZ.ޯ֫/%ify.MϛY?0LOOjr^l]|jt+T}00DŽ/:&1@͏1A9[Oܪ i P Lj„VP 00jτ|{-Z3! ~` jx45NgB1ET]˄x0̮[&!:QL5..y7w~`BRT3k]\LP>FXixu%Z[{Loц(Y9 g6L55T3!h}1*3!~gB#3A -S͔(7?j&85gl Fs3{2uĊ >$;&* Yը مfBhM@H)s@NcuZ ]hj&9ҽ CٔTw3YA~+Ohj dt}ۊfS_ :3q- B ]hj&]#k&8!L8H&0) DŽ|top(&TcB1 Z S̈́"[nLI ^#d$A -PKv-Ԉ>"Y' 뽑T3!R L:ebث+u]Sd!dVcxdJi5jȮ#SySAv=00uwdcd2W&dd&}q ]hj&N L:eb}u%Ȕ+iȮ#SNzuZq`J9o*Ȯ~`J)!6Y50\u]$2L-0)YL _e`J֕:Ȯ00%Jv? L:Mr;0)ط_>jeSsP be6V;&vU}J2LjА]Gke6Vömj>ua[´3Ȯ/ke6Vömj8o<.L5hCzL5Sd$@v=1yu)sȮ|znq3) Ȯ3S OapXhQFA:?2uPz|&WWL5Vc&(# g ZEfB#왐ƀn>0AEL8Sj,5TLPc57 gVcj&FG#PVcɖ i P 4`;_v?0LZjHc@7|ТF&)h5њ ɎHgB gZjLHv&(# g ZEfJ5ḧ́<KLHvD7{&DQDlR gТFΙgJ:&kj-fҢFΡ|(WL8K(T3Ϋs1^3LEC՗Ugw ɎPgZdkT${d2bdZ SS2uG&Hves@d1AUɺfYFP Ug uΛ Z S; i@b:g|gHc@7|ТF&eYm"g3Ec|gG|ӬidtWfn}5m.1?ŻO_bƇ ?WfTO' YontYnfƻfZ ^ lY2f+{,ϯ&SyZm|8Y=i.&]zyjrZlg Fsѽ0՛ .6lXL'i35f57Nk,N˧O ͻ5N6k-Sl.L \l~7NVk.4YbZ`ZnW儗mT_b:iT3>z왌]l Z0L8U%ȮѽѽvPէQUz>Amt/3BFtFO na5.{ E1NUE {&HveZhT:_q مf`Ԡ!/je``D'$BUz7$2L-Fs3%5x PlD2mQDp=ua[cq-2!:eSR8o50:e#$2L-SS̈́x0=Sd;8|/L|/j``[taj&Ӏa3yR1 ѡΙOJ59!f1"J&YkYc#\˧qVzgBtLPUG&k)0Ab \UhCd 8+=v3,U`j&#:(#B&YDŽsTL:McD6Lpc;HqVz-\2մƴ>Rf9l0-7K<2uPzgcD10FtLP>F]LPǗki0LPUńkh5!2:MT3!>;dk0ɈN!#YLs@NcuZ ]hj&N LFt:e#|Hi5vLPU@NQ3A -S̈́b4="P6%]LjШߊAS'.]߶N aj\x"fadZ gFtbc52,+jsτ4#Ec1Bi0Lp֠ g%1xdBVd<(-BL(ƣ22AaD҆xVuLHc|-LY3A_3Ab \U@NC1ew0}qLP>F]L2*LP>FJ|P:Ll3/UL8H0!Uÿ0,U-L5S҆xVuLHc|-LY3Ak&(#Dxu%Z[7P>ɟ 8+=ǖ -X}N1~<2L*҆xVuLHc1A9[gLP>F> J|<h Q>j{]D!:QL8U[&Ӏa|cDopL(Ct(*Gr2!d τb< 8j{EGr2j}̈́dG3!u}T3{+``D'$Ƣ Q(L5SQXѽߐkh9ST E^f*d$&@v=Z6= N uFsCv=Z6hn(wHbZЗgȩ}DN~dkP{T&L|~+0zowHIBe]$ɦ0L!eh},^f:I69hS >P&ڠ}0zd @)`g@v=)`7@v=fS̈́"[*5pjpgJ)+Ȯg7z;k$$Al6D SdAv=w肁0R ZQ$;d]NCv=w}dh)YAv=5``,jhQFaJi5jȮ0c/$CwwL:MwHIƣ0Zdk0 !#Y缩 مfBh1 .و}e l£1T{x{&lJڙՠQ1}DöPZeBtʦqxo@ ^{eD6V4$3L3 !ѺLA9lfdZ >j&(#]%L8KT3i5!B!ڗ6D&(#?6D&(#BaplCJ -XhQF9JϱL5Vc|j, &(#ue|Y-E gVcj&FLj{EΙ|(WLP>FhK"Oahϥ eS#j&"T{x&!Z+T3i5 |3AEL8Sj,5TPkh5;0jτkh50AUb QLL5Vcƀn>0AEL8 ZEfB9EcBt2LY3Z&*@!1LAQWfj,3P>FhK"A     pa;&810,_öwLHcou` uĊ ]hj&h1@oޘ!h1H}1ha-g|0w0!~-Sd*A՗UgB՗ pL2``B#FsW |dBe+ LlDŽVP UgT3 PecB՗X7P>F|| 00*[c Z St.w!ˀ U_8&T}00r2|dBe+ LlDŽVsv`T3XiS3D)*VHvL8Fc !b`Yb+)J"Ii0lDŽ4_|-L5S: Lj+m:(=v>:Gb`,\(, Y'A9f`PWL(0LɎrxExT3%; Ąb)B>OFDŽ|dGaT3i5l:왊(-\=h \=6gv*0o?砣E6m?ѝGshW{6n}n?7}\7z=C6׉k0= N૝ͅCe_T•r"FA@t̂m&@y/AC%9(A@=NhtJ=3WЙfm&@yYCo%0%X0/ *,?Arm.7}o~6NFҟĦ9лz36-of`3*ke};ZV@Vs~hD)_Dr\{sFj6s۬:}k?cZ]"@7,o}y~5hޭρo=q՝Lo3GCԜEnHo8}9Ǚ6ӝЙf^_379n?gj~\=ym_,^ŗ{e:z}=xR1%~|{vtbVFE*xuljgdca^]WTPLKI?8.,+('$# z]94V}ɧC]|ov񻗿ſ?d=׳OeI/eG {)m冈$"@_3@3 / aJQ+qhD!M&R4,U)GQ`vվM0h,7Dn| nVSٳAU{tGGwY d<@py;[OS~" WTۮ'1awv=}|**Ếe*BZ{&LxuW亾z|d 1?Sd!dVcxdJi5jȮ#SySAv=00uwdcd2W&dd&_._KھYԋ/" /eK˄z}d ђ |{ { @wNf‘@^oDTI=o%70_Gwz@[/-J(Ao@D"* HD|]& B"c>wY d<A,Н8s#Z r5ؤHۊL[lF}ȃEd |;{ρ -ρozˁd "vY”#ډ{j};'zMΦGC)ڼܣ9лcoO=3b&w]S#o&~_}9/0.,7)GQh7f%8_=`^}՛` V#Xn SAr.f0j&wbD-"@x:#S]_g :Mގ6KL ceiver $4TranMTS OQJ0ZPRO OQJ2{CONFIG OQJ MACRO LIBZMOD OQJMTS DQC28 !ͺ(2ڤ5O:=vGMTS.OBJ 2 !"#$%&'()*+,-./012<63456789:;<=>?@ABCDEFGHIJKLMNOP 54vKŶlgM6u3{1a+%󱠛K^bx0jK5kK_Y[6kk_fm/5kpϛ1_f0I+ l$ァBs0zw\&L] |7\ |һn0T_һn0TyW&T?7!z:pOzO>wY x "} @pflg uz׻`߶8d{;zWo[hX x "L) NX0,Y)}*n-;MQN”#Z.kޅoB#8$Li*38f Sz*;=v7zz86ޥh0"*;=`-/Z” Xf!khc^/ *,i3 "ABMjگv7` QRSTUVWXYZ[\]^_`abcdefghijklmnopqrs">Gtuvwxyz{|}~`:ZOw=Yq3XAoyH! k@ [-_9sp\;0&   +V.v55Rekɗvrm&oGDd9PDׂ V{;Z,T`yG+V٠,wf ,71#Jm+/7+[KAo)}p9_܈HZO {\-!z$FrqSdܔclhRekFvelp~{7k˾&-qEai2U|WjknVAq$)haO7N272=.k <%q9\nj|!fAq k+ jx%Ɓ^+Aq %?%ԫWbw. "8;1QIgZ.ki E0Ϗh]O) nt-nvpR^z®vrv؂q.ep,;y:& `O KTAfrUws#^!W,hMD$q1icQJ(l8yxpmjgdaLB@'tI+nbC|Y4k ~u}X{v%0>ro@@Ib'co*[O,7ҬՕdzY+M*\^Z>yЭfֶ5REUfoXt!3 pn0x@'4>DǝqZ Y=gֶ'#iҚ0,,Z=KtV+Z' ǺԷ֧+0U%Z&ֺ*d`==-b,BQ&LQTm2)}4 ”$\iP1* *wQ ىs;'fhl~1F-t# NےoR# Nے0QT-%iPaJ>6Z]BFA`ju.ޭw#!YxU9V&_S(f ٩9.Ԋi05Sݥ({_`5""~R oyG+X`Iؿo&x@Ja5fk`YW.MW5˯.s 1 zWo vurʹAQBN.4Wbcn[~'* S -xf&h "xGc׮9KB6Dkgɵ/ڙ3ڗNN3gh䝱IZ;KD?ط ] y]yݱ/ѓW3EU|ڝ5?6yeE~:iܣkDy2BSB2J\†Jyz`E_ z"5Dt//x!|{ _{6@ktltg*u*G׈t_ d҅"Mәd&ӹ N@Dj4ѕ_^AC2@~\ "","",0,0,0,0vZPRO.OBJ 2= !"#$%&'()*+,-./012345675H<89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]6]Ox1 e”~2 MbtgO$ђHh /Ƅ+ * ( *`գlݥw7v;;4[>;wvb#q|9ą$ *wQ,jE4Ef/ίwvB޹"M(OwSԗ˼i$(=<0eecF-I Rs2ɲ1}P@!5W.cS$iFw3iù'Ύ{Ag&S'StfX$Y6z tRAOZ.c餚zRta@%4lj]LU:;<0HӴ* e(=<0(]LU:;<0tJC&5Tsj^Y62ɋjԢT&5cJhR!J^TsԗTIu,y٘O䣧h,KƹZS!}N7(Iu(JSbH S1sRd 'U*Sɋjt2wyY6ΦLiPKyK'LQdT:~PR^6I5G!5G?ST)!ԢTR^6 9J/S(~3B1ޠLͥ6rjNQ^6Φx!˨ry:NǓTLTR^sP^_`abcdefghijklmnopqrstuvwxyz{|}~ o?%:7R>.G*F93)_;[ZV0"z/\- ES e]N&/4#!"§?~~Eĵ2 ?~O(,7 k[ݮNFz/0]n_`_`sFE}(LQT-(*c;'>f`nvneZ8;[hI8P30nr7Aى:׭j+觡w7/9;[٭VpR[~+Y-!r#߭x=SB񔰇Z”䇨G ~PrvbNB{֢Jʩ\)>,+OiLrIO dtP,ʲe0Iԗz(IA      Kې&&3 Z-M(|a2mARiˇEjtWtv[ƖRcą{̜4?GEs98m̑I9~!טT6Z!⾀|6(\=ڤtZ?l({,8`n'yP+mZ' [/ !'zF{r! u": ۖCPYe*7`P_}wCֵIr 9= :ՈոF@v5 m@ J<ܚeJUaT֝Їox<SpP6HP ;ns6 Lxg/ "9 Pg gP+u6T+` ۠lp<@oo@ ـ@ෂ5ćou67 nkx!-iUB3(h.P.$`^=;П +f4l vWorASË{-$3~|+%ǸV˫x A;!~չ#Izinۮ*H ,s|k=,Е 9 R52 L'>5_iwy q@[ȃ , k[}s<%%2Wѽ Id6WV6{lEbf -Θ p- a p fB0<zhW] [tMlT,+)pTӱٲ_9Q޺Id6}ml@(toId6ϖ{w=' [쩓P8,\3厍L h(LD>(Nџ; ~ΟAf@$eǶUX 8`[C/%Eݑ͖d][@ d' N!WO@|wxy9 *"o}ꩌZ.Ū&<m3;ʗrs"/&#/bU:g&֯?h(Dgs:,Ͳ1b *%3~c9< :}KȷRh/rzn?J<=9yff;YġYzY#%ܧMdLtTC/zda:aJ|6}eRI y\2! B)pߤx}?UJ h ylHk Qj*6œL <ʽrԣ⒑oRR&V'[RN8Ճns'Xd"DCՑJ5~HX#c_Wh؃J=>.=<9uW|t)<%0l_rg܃&>-/L÷Ar>p)4J47mԑn+ H.=K@mIGǶb<ᮀ~AoU)ɡTdD+Ao 1>2VpK9ݬn81>wq7Gl6 zNId6^/-8lAωBk=uo*)pT'[sнuId6][sнuId6?HW JR9QfUw#o~kDfJlх^*VpKWJZQuI\O2%UO=Yy>d y6 \QIGd-,pizd%N?,q%R~+ICD2Ejt1LF}UaR}2yZWӃ1G_M1iYOsKciY,SsUBLktc $ ɒH V7 jna!  _tasSb|CMT&Ä&-U'}1t>&`_LV}"PK/4; n[ 9xLV|-PQ5Ek(9*-> a pj!yB4Y@nq wa{Ft(1> "Bo`r{WP%;@OB'L;!H4j!_NO! 'wPaK 6MU. nI*6MBB^LU$Bted| ; U A#=? fBpW&mI< -$pOҤL&U$ܦI&[M|i[S&UcEr˹ '8[w6MwDis'Eܩ?  v ]#NCry. Nmǀߊ&`#b]!OmI- %LfBNۦSAo;(pEݑY| 7ם-92 di(᰷ȑyaWG&թGhE:h/4  Ί(}Vb oSNyMT5MŖj, fB0mpW}+F_r6@yu=Т-O0Z4#8 l΃Z:z M.twa5~v-pT?m (m:eO n*6ч߅kXDݦ0qhzh/~xvU}IY'![e<BgQB^;hEvXѧW\\spU: +$ ך;Xq|_~p>?r,8\YѿM rs[pjzUǤi!I1nZn:1nZ(9q+.VM U◭.?a#'$B2b9"H_E[C뮇 /VP9\4r9.pyQOA.K/Վ/1b#/@%gC#[NyC7]3CsyN>^S@a.zK(SFToCC-Sbep=ܢ|~6w!Ϧ5jU Ԫ̄>|]Ywr;{x~mp ]6}Ϧ|MAMt7Vi>Z.@kE2Ejt x.r Kx+Oq𓸭=| 7I+ ªg m5`W̲D2EjtK\MW? (̕nU~B`!z D6\5XA' U rkK@yAhlE7(h7ܲn&䆓]氶j|!fѺySs0/Kx1{L?qΟыk!dNK9bNtPYI'ً+,t||7+\P8Ѕ9yߪ?VF,DKR` w$PjEc+ E&B <4wX7oj\ZjrA1@D:mJxhSBM ' FQ8rEv[d)ѽb,q+˝\l:gĭ,7\l:gĭ,yuc[Ynp+\p1<ߜ:ٽb,q+˵ͩ+rg;"W.6/7yuH|nfp,`Wĭ,7\j/Y`e7͑y˺{ӣӱ~ Uzk3x6}NKo4-/qta3x6}'@I BB~AouVdDV ۷n'wN2//OoP%~(pv)kX(h|[\>̫1-j-אa!4Z ؖ$ؖD*H{ 0uҥ$.YpuΩNP DUژ")nyVB'  *QX7Xn*XQ7ֺr>F:Z%Å-..@%(apEr0 [r򀹝J-򀹝h)\xlKmI-YD>(P.BZdx@:*,qEtUX֋N@-\oB*^bIYը 1z!)kҴUaRY Ue9bUւ-VNj_[ B UTZU $dym`BLBkkUe&$7hRUAIHEE,'$g2VU粳%ū|ȕSWgS-o[RJ]A0!¤|ŧBM hy 7qX~+o7PYO;L|b9 W=qqiY g'߂u G>,$ؖbp0,êRKIHEETb2\[* \[*^-Oa'U?׎Oah4kO><X@60tJCh@.V U/NDu~+Ã{ aҝ!J98#X"oY1LZv`-![A$Ǹ~(?E(/hwCiP J)* %#oai$FؕDB~Ff@e><-Pg̾ J&dqSPY yNixJ@f`&YmNvD?@pN4|XoҺiJk" v 4 p)M ^4 xMMGwd-j@c.%օ;6keڑr-F*ExD *=ݖ+^NtN- t4G[NkvdpzF"!Yh Yˣh<Db~L3V˧\yM4z%"#},qe]c`,wZ>4SDfGE7=Zw~|pesv;|虈lrΪ]IpcwDS ~I@ȷ.|+VIq«VWGEбm^=UӢ?Vk!izd>mqG[zN-|6_]n]m|=G,Qষ-^nz z&^5IsVBqYWYW2<%0xO\򭒽Ee?GoA'_V"C@ق GG w`['!z)Pz a_Vn/|!%Qgї'!_KO] %YN9^]*~k9ްRwk!iY)SF }SМGsNyaHxhF9{~bˆ]+wE@΁\Kv4G'<=zh',٪#kB: Qo\S ݓK-R)z|}ܿY8ZuF];=hL(SF |ӣOF Կ@ Daz [U(SF [@~IVS$[b>I/N I(SFZlz_ʷ+p_` AT(SFO|~)ߊ-k{ 4U(SFt_ʷKV \o@ A@"57Ps OHʷV[p+$ )R 2(VF=~)ߪp t {<@[= )R  D/[RFe)uiF4VDD/ ۷B'Zyb.[%ļ T< bӢ5]SU`^fN󝜻BJW c F8h ,t6{hx}+D;#\ݽb,x61u^@_*^6{JT#o^[\̹bYo vY+9 oFwi$hQ;Rw*L:3! Wt'j|x a; w NCDR|7PغN>Q`ق盨BFp! wn^b#aB;ˋ}\pv݆яP0 n./,w3cGj>?D'b~t3-|Ωq5[@1lG.y=I`^}S:b;c٘LDM_率!H ü…<ʅ<|d0p$))xtj4l{J!@MCfZ7i.Z3:\J@\.Bv.CU@s\&k-|)q|C.[ QecR ߊ|PX7CYW!eBpft>òn&:}s%}x42үG@7nF(Ѝ͐Pzw A$ŭZShfd2 )t pќU *Uo2dEz?ȷ@NL<$ |u8mbxVjTIL)*/*w}`'6nx47H>CfeA68m3 .܌͚́!t3~(i])(p 0P{3:wxJ͚U&˥ -PЏC]]*Df@RM>Kn Bo[RU=|=?8t"?2ZiVMKIZ==ntnbaep \ Ms?@pPvLGw8e۬ےn=6J[ۺ:ouR҉3e: Vi2mI%^I_ޭWg!򠴬?oX ІE{uh id=G[=z),^90܉̀= [8 ]b\jt@ȏA|\J"?˥FPjtɽ l؋>̿ >.%^̿?/J.[CA     .Yt>f;zZApyh.wVM║ kk}1قC,'+2\R Du~+l6FܳAMhZV3Ԡ*犛4E0l|r h{E[RxYu?ǽ=w#h Bh B ΜނfG3<] pa8i }1>bzЫ9 J9 U9AQka j5dG1i}fS4( EeDwVӠ*銌#l|jaXO` U--+l$ðUa`bz \ )kz N`,iasê/JHj6DX]nP&̨֊&Vg@f?ec1+ JR>߄? u_x .%8c9A65ja! GvͨZX3u⒩fXzaFN d]3۹^nh=6oU:4&%$nopqrstuvwxyz|lecI3{|} 7v{cd9Hsګѝf;:uP1npTG{tNݣ`{9H!MR֬S&$=k#ǙnV ΒϬu3RTvg?%4!MRIk$)'i~;.6T_sCzEXUy7:K#fT%=yI1H&jQnF E3A c6cVS g;Ia E6Rj؈j$TLi5c67H >fs{Q9[[dip٢޲&L#&Jza T%=͊IUI΍z5Rcs߫HZU6E3ڎ 1AO'E64Hta JpgZU%Ýшt2*1bcND^MU#&ȫ!ynFOt@Un &]1^-$6cs{52}nNTe1o pg42˨Te&1Ɇ pg42˨H%ieZ5jT%*/iR38ޠ*r15Q[14f͊zk޾YJUQI5FImF̍ڢf+S$K}5 j$37mtw)65幵U 196h2j4bx+RUCLW -/ZLAF2qPA x7;.(|)Pc([3q9˓/.7lKz-{bN6<]^rqK%N@- vB <%0vB.Y{-(qX]bxP+0+ 1neE]?wMaVRi  j?}<rW,"G><{-\|0;"[wq?8.>Ef!ҋ>|],s;A"|4/+mY57'ȮU Gy+[GP.,#`_ "J`,&eb@oV1e@B~/q>kf[ ~+)r?rKF%YYuvRjH&j5PzhhkLfsk6=4*ˢjpFeY^N*iUm2AVLjl{52JzAJyZIxflɦi`zN߬- Ho^HyFS1)*AN*AyesQR8GU҃7h3*pUI9!^!_:JU:1z%  cf8J0!U)lsJ0af,f(erb8J0!=>#vmVa\X&'IX Qf8J0dз%'>x9`-`IΉŰޜP3z%` X2ۋ}9D%&s( [a9]mf87# `GB=='sKEHS<)6sk!Md{s+{&g{IX QNx,Eɉ`xa]ܼpXa Xsb1l7- ^ F< G_r`ܟΡ+lKrN,t+[A^KV=3=X&'s( [a9]mf8]J5Vf}2`\60XA`I3 bl7- ALv0i1qʯm#ldzPBbQYW#(-U?l$c̚֐YOUEeMFFooIjArfG!U!sIl1*~/1޹ƨ $y${5oDQU!ۉIk}VCjAL7c4/)5lAbx+RUA$]}A]1^-$(-Uqb< v#Ff5ZELԔsɰI٨;*-$]޲QF^LwhSS[+P;1oL;JTU`탪f[<gXk@g}u_vQoc[D=Ov12MXTɶ~u/pvo)pk3}Yf0c?@ABCDO5<EFGHIJKLMNOPQRSTUVWXVr>YZ[\]^_`abcdefghijklmO#75iU%}_4הMVh2j4R8GU҃sA2˨H ~܆I%yI /PR1Ac֬5+j+TE'&]֔-&M6Eʂ`_  iQWZTb }x,3\*C-&ƥHcKW6.xNiRقMqlU_kq?_Stz9b3&G  " >//H,t%*Yb XA &ˀqH`%= |4ޜP30TyW&T?7!z:pOzO>wY x "} @pflg231 0711.<<0 Sys Default g;n^system logoff John Doe Computerville, MD 301-555-1212 system command system command This is a line with no c/r" ^nothing in this one "" <<1 PMS Santee Ca. #1-714-443 8754#6 g;n^logoff command with no comments John Doe Computerville, MD 301-555-1212 general14^download programs general15^upload files/programs %='%:N'%?John Doe'%?ComputervWz3,]W}tg=w>uvRjH&j5PzhhkLfsk6=4*ˢjpFeY^N*iUm2AVLjl{52JzAJyZIxflɦQ |jXJ?7re[P/# wsmlYKD98(&$  zvthgdaZWTLBA;1' :B$_&2ɗI|R5L /B  v{ڽ@RS^x~[D{* ^A!LþmBEEv Uٓhm%N,o_!=DE( SObP@΁R滀` UQhߜ=k|7烵gCߜg滋id tcz123 buzz'%>mailck'\R" "" <<3 Local ABBS #676 4121 ^nothing here ?JOHN ?DOE ?COMPUTERVILLE, MD ?301-555-1212 $$ a|Npd)dvPm yڿO2QL?k*ːF1)iJ >YJ.T PO;F >!t. 2X*zRJ1TI {P]9ZOj؟%ŘS}(b)z^dWm%ŘS2P]-N9ZRtcSPa9.Ni!I4#j,ЫP@4B@ţFhMQc$( IP@6=kn"}Gl GxF49*$v1lz\x"br@~ Il)bٶS|'OsyJ%X'\̶b3;<>w/8ǝ%῜ZUEs7Vl{SmW:k/ g"y Ýtw[r|/y}P@~}vVj/31n6NбO>m aI>K$.ˠRlpD04LLsb"#$%&'()*+,o-./0123456789:;<=>?@ABCDEr_;"FG Zir g7mqz?mOJlqxFG%&F!+1.Pm@=Agl|wh.PSq2L v}h. \[,-3 [B.+\\qfg\g\ !#7l)~al8ѢVݡ@@/6H\ FIP|W⍀*;ZmBj=6tt'zVY`NJ@v(-o2LC< hgV|cbΜ7lg0ÐL`!1d! iVfCznD+zq5MvZMOD.OBJ 2 !"#$%&'()*+,-./012345=<566789:;<=>?@ABCDEFGHIJKLMNOPQRSTyoc.\H*UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{%>:E)]F-!nG|}~LT!x eZ> OPSM\ (8l };<aU 2`Uw%] v`tv:0%=gPaOZ'xOoI׬I feiS?"7$l4zϻV|?`ڴ+$ҧ-މ$$C5%:lӰŅ2QSE` dH#aK49hӘ`Z֋.6І?lIsEITې #ifdef vms #include ssdef #include tt2def #include ttdef #incln, 8/5/81 * . ARPA Net Flag added * . ARPA Net parameter ('a') added to command line * . ARPA Net BIS, BIE, BOS, BOE added * . ARPA Net FFH escape added * -- Version 2.6 Mods by Bennett Marks, 8/21/81 (Bucky @ CCA-UNIX) * . mods for UNIX V7 (Note: for JHU compilation define * the variable JHU during 'cc' * . added 'mungmode' flag to protect from inadvertant * overwrite on file receive * . changed timeout handling prior to issuing checksum * -- Version 2.7 Mods by Ri/ #define CAN_BOMB /* Enable bomb out on receipt of CAN */ /* ARPA Net Constants */ #define IAC 0377 #define DO 0375 #define DONT 0376 #define WILL 0373 #define WONT 0374 #define TRBIN 0 /* JHU UNIX structures */ #ifdef JHU struct sttybuf ttys, ttysnew, ttystemp; /* for stty terminal mode calls */ struct stat statbuf; /* for terminal message on/off control */ #endif /* Version 7 UNIX structures */ #ifdef VER7 struct sgttyb ttys, ttysnew, ttystDEM under VMS. * Support subroutines are in another file, VMODEM.C. Both * this file and VMODEM.C #include a third file, VMODEM.H, * when being compiled under VMS. All of the additions here * are imbedded in "#ifdef vms" statements EXCEPT the addition * of upper case synonyms for some of the command-line * switches, since VMS changes the command line to upper case. * To compile under VMS, no switches to the compiler are needed. * . Fixed bug in the handling of long fiude "vmodem.h" /* #includes for BOTH JHU and VER7 */ #else #include #include /* Ordering for these two */ #include /* lines is important */ /* JHU UNIX tty parameter file */ #ifdef JHU #include #endif /* Version 7 UNIX tty parameter file */ #ifdef VER7 #include #endif #endif #define VERSION 28 /* Version Number */ #define TRUE 1 #define FALSE 0 #define Schard Conn, 8/25/81 (rconn @ BRL) * . correct minor "ifndef" error in which ifndef had no arg * . restructured "ifdef" references so that other versions * of UNIX than Version 7 and JHU can be easily incorporated; * previous ifdef references were for JHU/not JHU; * to compile under Version 7 or JHU UNIX, the following * command lines are recommended: * "cc -7 umodem.c -o umodem -DVER7" for Version 7 * "cc -7 umodem.c -o umodem -DJHU" for JHU * . added 'y' file status disles (i.e., >255 sectors). * This file now falls into this category. * . Included code to cause the program to exit when in send * mode and it receives a CAN instead of an ACK from the * receiver. This program, in receive mode, sends a CAN * when it encounters a fatal error. Comment out the * "#define CAN_BOMB" line to disable this. * . Small patches to get it to work under 4.1 BSD VM/UNIX, * as running in the Harvard Science Center, where there is * tighter checkinA     emp; /* for stty terminal mode calls */ #endif /* VMS structures */ #ifdef vms /* * TT_INFO structures are used for passing information about * the terminal. Used in GTTY and STTY calls. */ struct tt_info ttys, ttysnew, ttystemp; #endif FILE *LOGFP, *fopen(); char buff[BBUFSIZ + 1]; #ifdef JHU int wason; #endif #ifdef VER7 int pagelen; #endif #ifndef vms char *tty, *ttyname(); #endif char XMITTYPE; int ARPA, BIT7, BITMASK, DELFLAG, FTP1, LOGFLAG; int MUNGMODE, PMS XMODEM2 (TERM II FTP 3)"); printf("\n\n"); } if (LOGFLAG) { if (!DELFLAG) LOGFP = fopen(logfile, "a"); /* append to LOG file */ else LOGFP = fopen(logfile, "w"); /* new LOG file */ fprintf(LOGFP,"\n\n++++++++\n"); fprintf(LOGFP,"\nUMODEM Version %d.%d\n", VERSION/10, VERSION%10); printf("\nUMODEM: LOG File '%s' is Open\n", logfile); } if (STATDISP) yfile(argv[2]); /* status of a file */ if (RECVFLAG && SENDFLAG) error("Both Send and- Enable 7-bit transfer mask\n"); #ifndef vms printf("\ta <-- Turn ON ARPA Net Flag\n"); printf("\td <-- Delete umodem.log File before starting\n"); printf("\tm <-- Allow file overwiting on receive\n"); #endif printf("\n"); #ifdef vms exit(SS$_NORMAL); #else exit(-1); #endif } /* * Initializations */ index = 1; /* set index for loop */ delay = 3; /* assume FTP 3 delay */ RECVFLAG = FALSE; /* not receive */ SENDFLAG = FALSE; /* not send either */ XMIe 'm' : MUNGMODE = TRUE; /* allow overwriting of files */ break; case 'P': case 'p' : PMSG = TRUE; /* print all messages */ break; case 'R': case 'r' : RECVFLAG = TRUE; /* receive file */ XMITTYPE = gettype(argv[1][index++]); /* get t/b */ break; case 'S': case 's' : SENDFLAG = TRUE; /* send file */ XMITTYPE = gettype(argv[1][index++]); break; case 'Y': case 'y' : STATDISP = TRUE; /* display file status */ break; default : errG, RECVFLAG, SENDFLAG, STATDISP; int delay; main(argc, argv) int argc; char **argv; { char *logfile; int index; char flag; logfile = "umodem.log"; /* Name of LOG File */ printf("\nUMODEM Version %d.%d", VERSION/10, VERSION%10); printf(" -- UNIX-Based Remote File Transfer Facility\n"); if (argc < 3 || *argv[1] != '-') { printf("\nUsage: \n\tumodem "); #ifndef vms printf("-[rb!rt!sb!st][p][l][1][a][m][d][y][7]"); #else pri Receive Functions Specified", FALSE); if (!RECVFLAG && !SENDFLAG) error("Neither Send nor Receive Functions Specified", FALSE); /* * If receiving a file, first check to see if it exists. * If MUNGMODE is off, then abort with error unless we're running * under VMS, where CREAT() makes a file with a new version number. */ if (RECVFLAG) { #ifndef vms if (open(argv[2], 0) != -1) /* If file exists */ { printf("\nUMODEM: Warning TTYPE = 't'; /* assume text */ FTP1 = FALSE; /* assume FTP 3 (CP/M UG XMODEM2) */ LOGFLAG = TRUE; /* assume log messages */ PMSG = FALSE; /* turn off flags */ STATDISP = FALSE; /* assume not a status display */ BIT7 = FALSE; /* assume 8-bit communication */ ARPA = FALSE; /* assume not on ARPA Net */ DELFLAG = FALSE; /* do NOT delete log file * before starting */ MUNGMODE = FALSE; /* protect files from overwriting */ while ((flag = argv[1][index++]) != '\0') switch or("Invalid Flag", FALSE); } if (BIT7 && (XMITTYPE == 'b')) { printf("\nUMODEM: Fatal Error -- Both 7-Bit Transfer and "); printf("Binary Transfer Selected"); #ifdef vms exit(SS$_NORMAL); #else exit(-1); #endif } if (BIT7) /* set MASK value */ BITMASK = 0177; /* 7 significant bits */ else BITMASK = 0377; /* 8 significant bits */ if (PMSG) { printf("\nSupported File Transfer Protocols:"); printf("\n\tTERM II FTP 1"); printf("\n\tCP/M UGntf("-[rb!rt!sb!st][l][p][y][1][7]"); #endif printf(" filename\n"); printf("\n"); printf("\trb <-- Receive Binary\n"); printf("\trt <-- Receive Text\n"); printf("\tsb <-- Send Binary\n"); printf("\tst <-- Send Text\n"); printf("\tl <-- (ell) Turn OFF LOG File Entries\n"); printf("\tp <-- Turn ON Parameter Display\n"); printf("\ty <-- Display file status (size) information only\n"); printf("\t1 <-- (one) Employ TERM II FTP 1\n"); printf("\t7 <-(flag) { case '1' : FTP1 = TRUE; /* select FTP 1 */ delay = 5; /* FTP 1 delay constant */ printf("\nUMODEM: TERM II FTP 1 Selected\n"); break; case '7' : BIT7 = TRUE; /* transfer only 7 bits */ break; case 'a' : ARPA = TRUE; /* set ARPA Net */ break; case 'd' : DELFLAG = TRUE; /* delete log file first */ break; case 'L': case 'l' : LOGFLAG = FALSE; /* turn off log report */ break; cas  -- Target File Exists\n"); if ( MUNGMODE == FALSE ) error("Fatal - Can't overwrite file\n", FALSE); printf("UMODEM: Overwriting Target File\n"); } #endif rfile(argv[2]); /* Receive file */ } else sfile(argv[2]); /* Send file */ } gettype(ichar) char ichar; { switch (ichar) { case 'b': case 'B': case 't': case 'T': return(ichar); default: error("Invalid Send/Receive Parameter - not t or b", FALSE); } return; } /* se/* turn off tab delays */ ttysnew.sg_flags &= ~CR3; /* turn off CR delays */ ttysnew.sg_flags &= ~FF1; /* turn off FF delays */ ttysnew.sg_flags &= ~BS1; /* turn off BS delays */ ttysnew.sg_flags &= ~TANDEM; /* turn off flow control */ /* make sure page mode is off */ /* ioctl(0,TIOCSSCR,&pagelen); This is [SD]! */ /* set new paramters */ if (ioctl(0,TIOCSETP,&ttysnew) < 0) error("Can't set new TTY Parameters", TRUE); #endif /* Device characteristics for VMS */ #ifdef vm.mode &= ~LCASE; /* set for no upper-to-lower case xlate */ ttysnew.mode |= ANYP; /* set for ANY Parity */ ttysnew.mode &= ~NL3; /* turn off ALL delays - new line */ ttysnew.mode &= ~TAB3; /* turn off tab delays */ ttysnew.mode &= ~CR3; /* turn off CR delays */ ttysnew.mode &= ~FF1; /* turn off FF delays */ ttysnew.mode &= ~BS1; /* turn off BS delays */ /* the following are JHU/UNIX xflags settings; they are [SD] */ ttysnew.xflags &= ~PAGttys.sg_ispeed; /* copy input speed */ ttysnew.sg_ospeed = ttys.sg_ospeed; /* copy output speed */ ttysnew.sg_erase = ttys.sg_erase; /* copy erase flags */ ttysnew.sg_flags = ttys.sg_flags; /* copy flags */ ttysnew.sg_kill = ttys.sg_kill; /* copy std terminal flags */ ttysnew.sg_flags |= RAW; /* set for RAW Mode */ /* This ORs in the RAW mode value, thereby setting RAW mode and leaving the other mode settings unchanged */ ttysnew.sg_flags &= ~ECHO; /* set for no et tty modes for UMODEM transfers */ setmodes() { /* Device characteristics for JHU UNIX */ #ifdef JHU if (gtty(0, &ttys) < 0) /* get current tty params */ error("Can't get TTY Parameters", TRUE); tty = ttyname(0); /* identify current tty */ /* duplicate current modes in ttysnew structure */ ttysnew.ispeed = ttys.ispeed; /* copy input speed */ ttysnew.ospeed = ttys.ospeed; /* copy output speed */ ttysnew.xflags = ttys.xflags; /* copy JHU/UNIX extended flags */ ttysnew.mode =s int *iptr, parameters; /* * Get current terminal parameters. */ if (gtty(&ttys) != SS$_NORMAL) error("SETMODES: error return from GTTY (1)", FALSE); if (gtty(&ttysnew) != SS$_NORMAL) error("SETMODES: error return from GTTY (2)", FALSE); /* * Set new terminal parameters. * Note that there are three bytes of terminal characteristics, * so we should make sure the fourth byte of the integer is unchanged. */ iptr = &(ttysnew.dev_characteristics.bcharacteristics); parameters E; /* turn off paging */ ttysnew.xflags &= ~STALL; /* turn off ^S/^Q recognition */ ttysnew.xflags &= ~TAPE; /* turn off ^S/^Q input control */ ttysnew.xflags &= ~FOLD; /* turn off CR/LF folding at col 72 */ ttysnew.xflags |= NB8; /* turn on 8-bit input/output */ if (stty(0, &ttysnew) < 0) /* set new params */ error("Can't set new TTY Parameters", TRUE); if (stat(tty, &statbuf) < 0) /* get tty status */ error("Can't get your TTY Status", TRUE); if (statbuf.st_mode&011) /* choing */ /* This ANDs in the complement of the ECHO setting (for NO echo), thereby leaving all current parameters unchanged and turning OFF ECHO only */ ttysnew.sg_flags &= ~XTABS; /* set for no tab expansion */ ttysnew.sg_flags &= ~LCASE; /* set for no upper-to-lower case xlate */ ttysnew.sg_flags |= ANYP; /* set for ANY Parity */ ttysnew.sg_flags &= ~NL3; /* turn off ALL delays - new line */ ttysnew.sg_flags &= ~TAB2;  ttys.mode; /* copy standard terminal flags */ ttysnew.mode |= RAW; /* set for RAW Mode */ /* This ORs in the RAW mode value, thereby setting RAW mode and leaving the other mode settings unchanged */ ttysnew.mode &= ~ECHO; /* set for no echoing */ /* This ANDs in the complement of the ECHO setting (for NO echo), thereby leaving all current parameters unchanged and turning OFF ECHO only */ ttysnew.mode &= ~XTABS; /* set for no tab expansion */ ttysnewmessages are on [SD] */ { wason = TRUE; if (chmod(tty, 020600) < 0) /* turn off tty messages [SD] */ error("Can't change TTY Mode", TRUE); } else wason = FALSE; /* messages are already off */ #endif /* Device characteristics for Version 7 UNIX */ #ifdef VER7 if (ioctl(0,TIOCGETP,&ttys)<0) /* get tty params [V7] */ error("Can't get TTY Parameters", TRUE); tty = ttyname(0); /* identify current tty */ /* transfer current modes to new structure */ ttysnew.sg_ispeed = A     = *iptr; parameters &= ~TT$M_ESCAPE; /* ESCAPE OFF */ parameters &= ~TT$M_HOSTSYNC; /* HOSTSYNC OFF */ parameters |= TT$M_NOECHO; /* NOECHO ON */ parameters |= TT$M_PASSALL; /* PASSALL ON */ parameters &= ~TT$M_READSYNC; /* READSYNC OFF */ parameters &= ~TT$M_TTSYNC; /* TTSYNC OFF */ parameters &= ~TT$M_WRAP; /* WRAP OFF */ if (! BIT7) parameters |= TT$M_EIGHTBIT; /* EIGHTBIT ON */ *iptr = parameters; if (stty(&ttysnew) != SS$_NORMAL) e int lowlim, nlflag; #ifdef vms char inbuf[BBUFSIZ + 7]; #endif mode = XMITTYPE; /* set t/b mode */ if ((fd = creat(name, CREATMODE)) < 0) error("Can't create file for receive", FALSE); printf("\r\nUMODEM: File Name: %s", name); if (LOGFLAG) { fprintf(LOGFP, "\n----\nUMODEM Receive Function\n"); fprintf(LOGFP, "File Name: %s\n", name); if (FTP1) fprintf(LOGFP, "TERM II File Transfer Protocol 1 Selected\n"); else fprintf(LOGFP, "TERM II Fil error("RESET - Can't restore normal TTY Params", FALSE); else { printf("UMODEM: "); printf("RESET - Can't restore normal TTY Params\n"); } } #endif /* Device characteristic restoration for Version 7 UNIX */ #ifdef VER7 if (ioctl(0,TIOCSETP,&ttys) < 0) { if (!errcall) error("RESET - Can't restore normal TTY Params", FALSE); else { printf("UMODEM: "); printf("RESET - Can't restore normal TTY Params\n"); } } #endif /* Device cha "UMODEM Fatal Error: %s\n", msg); fclose(LOGFP); } #ifdef vms exit(SS$_NORMAL); #else exit(-1); #endif } /** print status (size) of a file **/ yfile(name) char *name; { printf("UMODEM File Status Display for %s\n", name); if (LOGFLAG) fprintf(LOGFP,"UMODEM File Status Display for %s\n", name); if (open(name,0) < 0) { printf("File %s does not exist\n", name); if (LOGFLAG) fprintf(LOGFP,"File %s does not exist\n", name); #ifdef vms exit(SS$_NORMAL); #else rror("SETMODES: error return from STTY", TRUE); #endif if (PMSG) { printf("\nUMODEM: TTY Device Parameters Altered"); ttyparams(); /* print tty params */ } if (ARPA) /* set 8-bit on ARPA Net */ setarpa(); return; } /* set ARPA Net for 8-bit transfers */ setarpa() { sendbyte(IAC); /* set B O S (Binary Output Start) */ sendbyte(WILL); sendbyte(TRBIN); sendbyte(IAC); /* set B I S (Binary Input Start) */ sendbyte Transfer Protocol 3 (CP/M UG) Selected\n"); if (BIT7) fprintf(LOGFP, "7-Bit Transmission Enabled\n"); else fprintf(LOGFP, "8-Bit Transmission Enabled\n"); } printf("\r\nUMODEM: "); if (BIT7) printf("7-Bit"); else printf("8-Bit"); printf(" Transmission Enabled"); printf("\r\nUMODEM: Ready to RECEIVE File\r\n"); setmodes(); /* setup tty modes for xfer */ recfin = FALSE; sectnum = errors = 0; fatalerror = FALSEracteristic restoration for VMS */ #ifdef vms if (stty(&ttys) != SS$_NORMAL) /* Restore original modes */ { if (!errcall) error("Error restoring original terminal params.", FALSE); else { printf("UMODEM/RESTOREMODES: "); printf("Error restoring original terminal params.\n"); } } #endif if (PMSG) { printf("\nUMODEM: TTY Device Parameters Restored"); ttyparams(); /* print tty params */ } return; } /* reset the ARPA Net */ resetarpa() exit(-1); #endif } prfilestat(name); /* print status */ printf("\n"); if (LOGFLAG) { fprintf(LOGFP,"\n"); fclose(LOGFP); } #ifdef vms exit(SS$_NORMAL); #else exit(0); #endif } /** receive a file **/ rfile(name) char *name; { char mode; int fd, j, firstchar, sectnum, sectcurr, tmode; int sectcomp, errors, errorflag, recfin; register int bufctr, checksum; register int c; int errorchar, fatalerror, startstx, inchecksum, endetx, endenq; long recvsectcnt;e(DO); sendbyte(TRBIN); sleep(3); /* wait for TIP to configure */ return; } /* restore normal tty modes */ restoremodes(errcall) int errcall; { if (ARPA) /* if ARPA Net, reconfigure */ resetarpa(); /* Device characteristic restoration for JHU UNIX */ #ifdef JHU if (wason) /* if messages were on originally */ if (chmod(tty, 020611) < 0) /* [SD] */ error("Can't change TTY Mode", FALSE); if (stty(0, &ttys) < 0) /* restore original tty modes */ { if (!errcall)  { sendbyte(IAC); /* send B O E (Binary Output End) */ sendbyte(WONT); sendbyte(TRBIN); sendbyte(IAC); /* send B I E (Binary Input End) */ sendbyte(DONT); sendbyte(TRBIN); return; } /* print error message and exit; if mode == TRUE, restore normal tty modes */ error(msg, mode) char *msg; int mode; { if (mode) restoremodes(TRUE); /* put back normal tty modes */ printf("UMODEM: %s\n", msg); if (LOGFLAG) { fprintf(LOGFP,  ; /* NO fatal errors */ recvsectcnt = 0; /* number of received sectors */ if (mode == 't' || mode == 'T') tmode = TRUE; else tmode = FALSE; if (FTP1) { while (readbyte(4) != SYN); sendbyte(ACK); /* FTP 1 Sync */ } else sendbyte(NAK); /* FTP 3 Sync */ nlflag = FALSE; do { errorflag = FALSE; do { firstchar = readbyte(6); } while ((firstchar != SOH) && (firstchar != EOT) && (firstchar != TIMEOUT)); sectnum); errorflag = TRUE; } } else { if (sectcurr == (sectnum % 256) & BITMASK) { while(readbyte(3) != TIMEOUT); if (FTP1) sendbyte(ESC); /* FTP 1 requires */ sendbyte(ACK); } else { if (LOGFLAG) { fprintf(LOGFP, "Phase Error--received sector is %d ", sectcurr); fprintf(LOGFP, "while expected sector ischecksum = 0; #ifdef vms if (FTP1) lowlim = 4; else lowlim = 2; #else lowlim = 0; #endif bufctr = 0; for (j = lowlim; j < lowlim + BBUFSIZ; j++) { #ifdef vms buff[bufctr] = c = inbuf[j] & BITMASK; #else buff[bufctr] = c = readbyte(delay); #endif checksum = (checksum+c)&BITMASK; if (!tmode) /* binary mode */ { bufctr++; cont } #ifdef vms if (FTP1) { /* Ending ETX */ endetx = inbuf[lowlim + BBUFSIZ] & BITMASK; /* Checksum */ inchecksum = inbuf[lowlim + BBUFSIZ + 1] & BITMASK; /* ENQ */ endenq = inbuf[lowlim + BBUFSIZ + 2] & BITMASK; } else /* Checksum */ inchecksum = inbuf[lowlim + BBUFSIZ] & BITMASK; #else if (FTP1) endetx = readbyte(delay); /* get ending ETX */ inchecksum = readbyte(delay); /* get checksum */ if (FTP1) endenq = readbyte(delay);  if (firstchar == TIMEOUT) { if (LOGFLAG) fprintf(LOGFP, "Timeout on Sector %d\n", sectnum); errorflag = TRUE; } if (firstchar == SOH) { #ifdef vms /* * Under VMS, read the whole block at once. */ if (FTP1) { raw_read(BBUFSIZ + 7, inbuf, 5 + delay * (BBUFSIZ + 6)); sectcurr = inbuf[1] & BITMASK; sectcomp = inbuf[2] & BITMASK; startstx = inbuf[3] & BITMASK; } else {  %d (%d)\n", ((sectnum + 1) % 256) & BITMASK, sectnum); } errorflag = TRUE; fatalerror = TRUE; if (FTP1) sendbyte(ESC); /* FTP 1 requires */ sendbyte(CAN); } } } else { if (LOGFLAG) fprintf(LOGFP, "Header Sector Number Error on Sector %d\n", sectnum); errorflag = TRUE; } } if (FTP1 && !errorflag) { if (startstx != STX) { errorflag = TRUE; /* FTP 1 STX missing */ inue; } /* * Translate CP/M's CR/LF into UNIX's LF, but don't do it by * simply ignoring a CR from CP/M--it may indicate an * overstruck line! */ if (nlflag) { /* * Last packet ended with a CR. If the first character of this * packet ISN'T a LF, then be sure to send the CR. */ nlflag = FALSE; if (c != LF) { buff[bufctr++] = CR; buff[bufctr] = c; } } if (j == lowlim + BBUFSIZ - 1 && c == CR) { /* * Last character in the/* get ENQ */ #endif if (checksum == inchecksum) /* good checksum */ { errors = 0; recvsectcnt++; sectnum = sectcurr; /* update sector counter */ if (write(fd, buff, bufctr) < 0) error("File Write Error", TRUE); else { if (FTP1) sendbyte(ESC); /* FTP 1 requires */ sendbyte(ACK); } } else { if (LOGFLAG) fprintf(LOGFP, "Checksum Error on Sector %d\n",  raw_read(BBUFSIZ + 3, inbuf, delay * (BBUFSIZ + 3)); sectcurr = inbuf[0] & BITMASK; sectcomp = inbuf[1] & BITMASK; } #else if (FTP1) readbyte(5); /* discard leading zero */ sectcurr = readbyte(delay); sectcomp = readbyte(delay); if (FTP1) startstx = readbyte(delay); /* get leading STX */ #endif if ((sectcurr + sectcomp) == BITMASK) { if (sectcurr == ((sectnum + 1) % 256) & BITMASK) {  packet is a CR. Don't send it, but * turn on NLFLAG to make sure we check the first character in * the next packet to see if it's a LF. */ nlflag = TRUE; continue; } if (c == LF && bufctr && buff[bufctr - 1] == CR) { /* * We have a CR/LF pair. Discard the CR. */ buff[bufctr - 1] = LF; continue; } if (c == CTRLZ) /* skip CP/M EOF char */ { recfin = TRUE; /* flag EOF */ continue; } if (!recfin) bufctr++;A     errorchar = STX; } if (endetx != ETX) { errorflag = TRUE; /* FTP 1 ETX missing */ errorchar = ETX; } if (endenq != ENQ) { errorflag = TRUE; /* FTP 1 ENQ missing */ errorchar = ENQ; } if (errorflag && LOGFLAG) { fprintf(LOGFP, "Invalid Packet-Control Character: "); switch (errorchar) { case STX : fprintf(LOGFP, "STX"); break; case ETX : fprintf(LOGFP, "ETX"); break; case ENQ : fprintf(LOGFP, "ENQ"); break; default : fprin if (bufctr < BBUFSIZ) buff[bufctr++] = LF; /* insert Unix newline */ else nlflag = TRUE; /* insert newline on next sector */ } continue; } buff[bufctr++] = c; /* copy the char without change */ } attempts = 0; do { sendbyte(SOH); /* send start of packet header */ if (FTP1) sendbyte(0); /* FTP 1 Type 0 Packet */ sendbyte(sectnum); /* send current sector number */ ror("Too many errors", TRUE); if (fatalerror) error("Fatal error", TRUE); } } /** send a file **/ sfile(name) char *name; { char mode; int fd, charval, attempts; int nlflag, sendfin, tmode; register int bufctr, checksum, sectnum; char c; int sendresp; /* response char to sent block */ mode = XMITTYPE; /* set t/b mode */ if ((fd = open(name, 0)) < 0) { if (LOGFLAG) fprintf(LOGFP, "Can't Open File\n"); error("Can't open file for send", FALSE); } prbyte(5) != ACK) { if(++attempts > RETRYMAX*6) error("Remote System Not Responding", TRUE); sendbyte(SYN); } } else { while (readbyte(30) != NAK) /* FTP 3 Synchronize with Receiver */ if (++attempts > RETRYMAX) error("Remote System Not Responding", TRUE); } sectnum = 1; /* first sector number */ attempts = 0; do { for (bufctr=0; bufctr < BBUFSIZ;) { if (nlflag) { buff[bufctr++] = LF; /* leftover newline */ nlflag tf(LOGFP, "Error"); break; } fprintf(LOGFP, "\n"); } } if (errorflag == TRUE) { errors++; while (readbyte(3) != TIMEOUT); sendbyte(NAK); } } while ((firstchar != EOT) && (errors != ERRORMAX) && !fatalerror); if ((firstchar == EOT) && (errors < ERRORMAX)) { if (!FTP1) sendbyte(ACK); close(fd); restoremodes(FALSE); /* restore normal tty modes */ if (FTP1) while  sendbyte(-sectnum-1); /* and its complement */ if (FTP1) sendbyte(STX); /* send STX */ checksum = 0; /* init checksum */ for (bufctr=0; bufctr < BBUFSIZ; bufctr++) { sendbyte(buff[bufctr]); /* send the byte */ if (ARPA && (buff[bufctr]==0xff)) /* ARPA Net FFH esc */ sendbyte(buff[bufctr]); /* send 2 FFH's for one */ checksum = (checksum+buff[bufctr])&BITMASK; intf("\r\nUMODEM: File Name: %s", name); if (LOGFLAG) { fprintf(LOGFP, "\n----\nUMODEM Send Function\n"); fprintf(LOGFP, "File Name: %s\n", name); } prfilestat(name); /* print file size statistics */ if (LOGFLAG) { if (FTP1) fprintf(LOGFP, "TERM II File Transfer Protocol 1 Selected\n"); else fprintf(LOGFP, "TERM II File Transfer Protocol 3 (CP/M UG) Selected\n"); if (BIT7) fprintf(LOGFP, "7-Bit Transmission Enabled\n"); else fprintf(LOGFP, "8-Bit Trans= FALSE; } if ((charval = read(fd, &c, 1)) < 0) error("File Read Error", TRUE); if (charval == 0) /* EOF for read */ { sendfin = TRUE; /* this is the last sector */ if (tmode) buff[bufctr++] = CTRLZ; /* Control-Z for CP/M EOF */ else bufctr++; continue; } if (tmode && c == LF) /* text mode & Unix newline? */ { if (c == LF) /* Unix newline? */ { buff[bufctr++] = CR; /* insert carriage return */ (readbyte(3) != TIMEOUT); /* flush EOT's */ sleep(3); /* give other side time to return to terminal mode */ if (LOGFLAG) { fprintf(LOGFP, "\nReceive Complete\n"); fprintf(LOGFP,"Number of Received CP/M Records is %ld\n", recvsectcnt); fclose(LOGFP); } printf("\n"); #ifdef vms exit(SS$_NORMAL); #else exit(0); #endif } else { if (LOGFLAG && FTP1 && fatalerror) fprintf(LOGFP, "Synchronization Error"); if (errors == ERRORMAX) ermission Enabled\n"); } printf("\r\nUMODEM: "); if (BIT7) printf("7-Bit"); else printf("8-Bit"); printf(" Transmission Enabled"); printf("\r\nUMODEM: Ready to SEND File\r\n"); setmodes(); /* setup tty modes for xfer */ if (mode == 't' || mode == 'T') tmode = TRUE; else tmode = FALSE; sendfin = nlflag = FALSE; attempts = 0; if (FTP1) { sendbyte(SYN); /* FTP 1 Synchronize with Receiver */ while (read   } /* while (readbyte(3) != TIMEOUT); flush chars from line */ if (FTP1) sendbyte(ETX); /* send ETX */ sendbyte(checksum); /* send the checksum */ if (FTP1) sendbyte(ENQ); /* send ENQ */ attempts++; if (FTP1) { sendresp = NAK; /* prepare for NAK */ if (readbyte(10) == ESC) sendresp = readbyte(10); } else sendresp = readbyte(10); /* get response */ if ((sendresp != ACK) && LOGFLAG) { fprintf(LOGFP, "Non-ACK Received on Sec data on TTY setting */ ttyparams() { /* For VMS, report that no information is available and return */ #ifdef vms printf("\nUMODEM/TTYPARAMS: "); printf("TT device parameter display not implemented under VMS.\n"); #else /* Obtain TTY parameters for JHU UNIX */ #ifdef JHU gtty(0, &ttystemp); /* get current tty params */ #endif /* Obtain TTY parameters for Version 7 UNIX */ #ifdef VER7 ioctl(0,TIOCGETP,&ttystemp); #endif printf("\r\n\nTTY Device Parameter Display\r\n")le ((readbyte(15) != ACK) && (attempts++ < RETRYMAX)) sendbyte(EOT); if (attempts >= RETRYMAX) error("Remote System Not Responding on Completion", TRUE); } close(fd); restoremodes(FALSE); sleep(5); /* give other side time to return to terminal mode */ if (LOGFLAG) { fprintf(LOGFP, "\nSend Complete\n"); fclose(LOGFP); } printf("\n"); #ifdef vms exit(SS$_NORMAL); #else exit(0); #endif BYTE!!! */ readbyte(seconds) unsigned seconds; { int c; #ifdef vms c = raw_read(1, &c, seconds); if (c == SS$_TIMEOUT) return(TIMEOUT); #else int alarmfunc(); signal(SIGALRM,alarmfunc); /* catch alarms */ alarm(seconds); /* set the alarm clock */ if (read(0, &c, 1) < 0) /* get a char; error means we timed out */ { return(TIMEOUT); } alarm(0); /* turn off the alarm */ #endif return(c & BITMASK); /* return the char */ } /* send a byte ttor %d\n", sectnum); if (sendresp == TIMEOUT) fprintf(LOGFP, "This non-ACK was a TIMEOUT\n"); else if (sendresp == NAK) fprintf(LOGFP, "This non-ACK was a NAK\n"); } if (sendresp == CAN) { if (LOGFLAG) fprintf(LOGFP, "This non-ACK was a CAN\n"); #ifdef CAN_BOMB if (LOGFLAG) fprintf(LOGFP, "Exiting: got a CAN from receiver.\n"); close(fd); restoremodes(TRUE); sleep(5); /* Allow other side to recover */ printf("Exiting; tty = ttyname(0); /* get name of tty */ printf("\tTTY Device Name is %s\r\n\n", tty); printf("\tAny Parity Allowed "); pryn(ANYP); printf("\tEven Parity Allowed"); pryn(EVENP); printf("\tOdd Parity Allowed "); pryn(ODDP); printf("\tLower Case Map "); pryn(LCASE); printf("\tTabs Expanded "); pryn(XTABS); printf("\tCR Mode Enabled "); pryn(CRMOD); printf("\tEcho Enabled "); pryn(ECHO); printf("\tRAW Mode Enabled "); pryn(RAW); /* Print extende } /* print file size status information */ prfilestat(name) char *name; { long bytes, Kbytes, records; #ifdef vms bytes = filestat(name); /* Gets file length */ if (bytes < 0) { printf("PRFILESTAT: error return from FILESTAT\n"); return; } #else struct stat filestatbuf; /* File status info */ stat(name, &filestatbuf); /* Get file status bytes */ bytes = filestatbuf.st_size; #endif Kbytes = (bytes / 1024) + 1; records = (bytes / 128) + 1; o data stream */ sendbyte(data) char data; { char dataout; dataout = data & BITMASK; /* Mask for 7 or 8 bits */ #ifdef vms raw_write(dataout); #else write(1, &dataout, 1); /* write the byte */ #endif return; } #ifndef vms /* function for alarm clock timeouts */ alarmfunc() { return; /* this is basically a dummy function to force error */ /* status return on the "read" call in "readbyte" */ } #endif /* print: got a CAN from receiver.\n\n"); #ifdef vms exit(SS$_NORMAL); #else exit(-1); #endif #endif } } while((sendresp != ACK) && (attempts != RETRYMAX)); sectnum++; /* increment to next sector number */ } while (!sendfin && (attempts != RETRYMAX)); if (attempts == RETRYMAX) error("Remote System Not Responding", TRUE); attempts = 0; if (FTP1) while (attempts++ < 10) sendbyte(EOT); else { sendbyte(EOT); /* send 1st EOT */ whiprintf("\nUMODEM: Estimated File Size %ldK, %ld Records, %ld Bytes", Kbytes, records, bytes); printf("\n Estimated transfer time at 300 baud: "); printf("%ld min, %ld sec.", bytes / (30*60), ((bytes % (30*60)) / 30) + 1); if (LOGFLAG) fprintf(LOGFP, "Estimated File Size %ldK, %ld Records, %ld Bytes\n", Kbytes, records, bytes); return; } /* get a byte from data stream -- timeout if "seconds" elapses */ /* NOTE, however, that this function returns an INT, not aA     d terminal characteristics for JHU UNIX */ #ifdef JHU stat(tty, &statbuf); /* get more tty params */ printf("\tBinary Mode Enabled"); pryn1(NB8); printf("\tCR/LF in Col 72 "); pryn1(FOLD); printf("\tRecognize ^S/^Q "); pryn1(STALL); printf("\tSend ^S/^Q "); pryn1(TAPE); printf("\tTerminal can BS "); pryn1(SCOPE); printf("\r\n"); /* New line to separate topics */ printf("\tTerminal Paging is "); pryn1(PAGE); if (ttystemp.xflags&PAGE) printf("\t Lfer program found on most CP/M Computer Bulletin Board Systems and the SNDRCV programs used with VAXNET. 2 Qualifiers UMODEM reads the command line to find the switches governing its operation and the name of the file to be sent to the CP/M system or created on the VAX. Switches begin with a "-", file names don't. Each switch is one-letter long and multiple switches are permitted (such as "-lrt"). The most important switches are "r" and "s": "Receive" and "Send" a file. 3 R Receivtemp.sg_flags&iflag) #endif printf(": Yes\r\n"); else printf(": No\r\n"); } #endif /* Extended flag test for JHU UNIX only */ #ifdef JHU pryn1(iflag) int iflag; { if (ttystemp.xflags&iflag) printf(": Yes\r\n"); else printf(": No\r\n"); } #endif #ifndef vms prbaud(speed) char speed; { switch (speed) { /* JHU UNIX speed flag cases */ #ifdef JHU case B0050 : printf("50"); break; case B0075 : printf("75"); break; case B0110 : printf("110 : printf("4800"); break; case B9600 : printf("9600"); break; case EXTA : printf("External A"); break; case EXTB : printf("External B"); break; #endif default : printf("Error"); break; } printf(" Baud\r\n"); } #endif 1 UMODEM UMODEM is a program which is used to assist in file transfers between a microcomputer running the CP/M operating system and a mines/Page is %d\r\n", ttystemp.xflags&PAGE); printf("\r\n"); /* New line to separate topics */ printf("\tTTY Input Rate : "); prbaud(ttystemp.ispeed); /* print baud rate */ printf("\tTTY Output Rate : "); prbaud(ttystemp.ospeed); /* print output baud rate */ printf("\r\n"); /* New line to separate topics */ printf("\tMessages Enabled "); if (statbuf.st_mode&011) printf(": Yes\r\n"); else prine a file on the VAX Used in conjunction with the "t" (text) or "b" (binary) commands. Creates a new file on the VAX with the name given by the file name argument. A new version of the file is created under VMS; an error message is sent under UNIX if the file already exists. 3 S Send a file to the VAX Used in conjunction with the "t" (text) or "b" (binary) commands. Sends an existing file named in the file name argument from the VAX to th"); break; case B0134 : printf("134.5"); break; case B0150 : printf("150"); break; case B0200 : printf("200"); break; case B0300 : printf("300"); break; case B0600 : printf("600"); break; case B1200 : printf("1200"); break; case B1800 : printf("1800"); break; case B2400 : printf("2400"); break; case B4800 : printf("4800"); break; case B9600 : printf("9600"); break; case EXT_A : printf("External A"); break; case EXT_B : printf("External B"); break; #endif /* Version 7inicomputer running either VAX/VMS or Version 7 UNIX. It is an implementation of the CP/M User's Group MODEM file transfer protocol. UMODEM supports both text and binary file transmission, error detection by checksums, and automatic error recovery. To transfer files between the microcomputer and the VAX, you must have a compatible program running on the CP/M system, such as the popular MODEM program. MODEM is in the public domain. UMODEM is identical in function to the XMODEM file transtf(": No\r\n"); #endif /* Print extended characteristics for Version 7 UNIX */ #ifdef VER7 printf("\tTTY Input Rate : "); prbaud(ttystemp.sg_ispeed); printf("\tTTY Output Rate : "); prbaud(ttystemp.sg_ospeed); /* print output baud rate */ #endif #endif /* END #ifdef vms...#else... */ } #ifndef vms pryn(iflag) int iflag; { /* JHU UNIX flag test */ #ifdef JHU if (ttystemp.mode&iflag) /* Version 7 UNIX and VMS flag test */ #else if (ttys UNIX speed flag cases */ #ifdef VER7 case B50 : printf("50"); break; case B75 : printf("75"); break; case B110 : printf("110"); break; case B134 : printf("134.5"); break; case B150 : printf("150"); break; case B200 : printf("200"); break; case B300 : printf("300"); break; case B600 : printf("600"); break; case B1200 : printf("1200"); break; case B1800 : printf("1800"); break; case B2400 : printf("2400"); break; case B4800  e CP/M system. 3 T Text file transfer A qualifier to the "r" and "s" commands. Selects "text mode file transfer": converts CP/M CR-LF record delimiters into UNIX LF (or VMS LF stream file) record delimiters. Handles VMS CR-LF pairs properly. This is the normal mode of file transfer. 3 B Binary file transfer A qualifier to the "r" and "s" commands. Selects "binary mode file transfer": no conversions are made between CP/M file format and the VMS or UNIX file formats. 3 L Log file  file ! name argument already exists before attempting to create a new ! file and stops with an error message if such a file does exist. 3 File name The file name is any legal file name. If no directory specification is present, the current default directory is assumed. Under VMS, logical names may be used. 2 Error recovery UMODEM permits up to ten retries when a transmission error is detected. If this limit is exceeded, UMODEM will quit, as interrupts (^C, ^Y) are disabled during file transfer. The cyclic redundancy check (CRC) method of error detection implemented on many CP/M systems is not yet available; the checksum method specified in the original CPMUG standard is the technique used in UMODEM. 2 UNIX-VMS_file_transfers Since UMODEM runs under both VMS and Version 7 UNIX, it is capable of transferring files between such machines when used in conjunction with a virtual terminal program such as VAXNET, which runssuppression This qualifier causes UMODEM to supress the normal action of logging its activity to the file UMODEM.LOG. If this switch is NOT present, UMODEM will create a file called UMODEM.LOG in the current directory and write statistics regarding the file transfer to it. These statistics include the name of the file transferred and its size. If UMODEM.LOG already exists, the new information is appended to the old file. 3 Y Display file information only--no file transfer Displayst with an error message. If UMODEM is invoked with insufficient parameters or encounters an error in opening the file you specify, an error message is sent and the program terminates. In addition, the program times out if it doesn't receive the acknowledgment it expects from the microcomputer within a minute or so. If you inadvertently start up UMODEM, just don't do anything and the program will stop itself eventually. See the subtopic "Operation" for more details. 2 Operation UMOD under VMS. Naturally, the same procedure may be used to initiate file transfers between a VMS machine and a remote CP/M system from the VMS machine. UMODEM/VMS translates the logical name TT to determine which terminal to communicate with. Normally TT corresponds to the terminal you are currently logged in to ("local"). By issuing a "$ DEFINE/USER TT term" command before invoking UMODEM, one may perform transfers over a different terminal line  the size of the existing file specified in the file name argument and an estimate of the time needed to transfer the file at 300 baud. No file transfer will be performed. This information is also displayed when the "s" switch is selected. ! 3 M ! "Mung mode"--permit file overwrite on receive (UNIX only) ! Use of this qualifier to the "r" switch permits the user to ! overwrite an existing file on the UNIX system. Normally, UMODEM ! first checks to see if a file with the name specified in theEM is an implementation of the CP/M User's Group file transfer protocol of Ward Christensen. Files are sent in "packets" of 128 characters each. Control information is prepended and appended to each packet to identify the packet and provide a means of verifying the integrity of the information contained in the packet. UMODEM waits for an acknowledgment from the other computer before beginning a file transfer. If it has to wait too long, it automatically quits. This "timeout" feature is importanA     /* * UMODEM -- Implements the "CP/M User's Group XMODEM" protocol, * the TERM II File Transfer Protocol (FTP) Number 1, * and the TERM II File Transfer Protocol Number 4 for * packetized file up/downloading. * * Note: UNIX System-Dependent values are indicated by the string [SD] * in a comment field on the same line as the values. * * * -- Lauren Weinstein, 6/81 * -- (Version 2.0) Modified for JHU/UNIX by Richard Conn, 8/1/81 * - #include #define VERSION 32 /* Version Number */ #define TRUE 1 #define FALSE 0 /* Compile with "-DPAGEMODE" if Page Mode (TIOCSSCR) is supported on your * UNIX system. If it is supported, make sure that TIOCSSCR is the * correct name for Page Mode engagement. */ /* ASCII Constants */ #define SOH 001 #define STX 002 #define ETX 003 #define EOT 004 #define ENQ 005 #define ACK 006 #define LF 012 /* Uni . changed timeout handling prior to issuing checksum * -- Version 2.7 Mods by Richard Conn, 8/25/81 (rconn @ BRL) * . correct minor "ifndef" error in which ifndef had no arg * . restructured "ifdef" references so that other versions * of UNIX than Version 7 and JHU can be easily incorporated; * previous ifdef references were for JHU/not JHU; * to compile under Version 7 or JHU UNIX, the following * command lines are recommended: * "cc umodem.c -o umodem -DVER7" for Versiodefines (removed PAGEMODE define * line; now should be compiled with "-DPAGEMODE" if * Page Mode is desired) * . included forward declaration of ttyname() to avoid problems * with newer V7 C compilers * -- Version 3.1 Mods by Lauren Weinstein, 4/17/82 * . avoids sending extraneous last sector when file EOF * occurs on an exact sector boundary * -- Version 3.2 Mods by Michael M Rubenstein, 5/26/83 * . fixed bug in readbyte. assumed that int's - Version 2.1 Mods by Richard Conn, 8/2/81 * . File Size Included on Send Option * -- Version 2.2 Mods by Richard Conn, 8/2/81 * . Log File Generation and Option Incorporated * -- Version 2.3 Mods by Richard Conn, 8/3/81 * . TERM II FTP 1 Supported * . Error Log Reports Enhanced * . CAN Function Added to FTP 3 * . 'd' Option Added to Delete umodem.log File before starting * -- Version 2.4 Mods by Richard Conn, 8/4/81 * . 16K-extent sector number check error corrected * x LF/NL */ #define CR 015 #define NAK 025 #define SYN 026 #define CAN 030 #define ESC 033 #define CTRLZ 032 /* CP/M EOF for text (usually!) */ /* UMODEM Constants */ #define TIMEOUT -1 #define ERRORMAX 10 /* maximum errors tolerated */ #define RETRYMAX 10 /* maximum retries to be made */ #define BBUFSIZ 128 /* buffer size -- do not change! */ /* [SD] Mode for Created Files */ #define CREATMODE 0644 /* mode for n 7 * "cc -7 umodem.c -o umodem -DJHU" for JHU * . added 'y' file status display option; this option gives * the user an estimate of the size of the target file to * send from the UNIX system in terms of CP/M records (128 * bytes) and Kbytes (1024 byte units) * . added '7' option which modifies the transmission protocols * for 7 significant bits rather than 8; modifies both FTP 1 * and FTP 3 * -- Version 2.8 Mods by Richard Conn, 8/28/81 * . corrected system-dependare ordered * from low significance to high * . added LOGDEFAULT define to allow default logging to be * off. compile with -DLOGDEFAULT=0 to set default to no * no logging. * */ #include #include #include /* JHU UNIX tty parameter file */ #ifdef JHU #include #endif /* Version 7 UNIX tty parameter file */ #ifdef VER7 #include #endif /* log default define */ #ifndef LOGDEFAULT #define LOGDEFAULT 1 #endif  . Count of number of received sectors added * -- Version 2.5 Mods by Richard Conn, 8/5/81 * . ARPA Net Flag added * . ARPA Net parameter ('a') added to command line * . ARPA Net BIS, BIE, BOS, BOE added * . ARPA Net FFH escape added * -- Version 2.6 Mods by Bennett Marks, 8/21/81 (Bucky @ CCA-UNIX) * . mods for UNIX V7 (Note: for JHU compilation define * the variable JHU during 'cc' * . added 'mungmode' flag to protect from inadvertant * overwrite on file receive * ent reference to TIOCSSCR (for * disabling page mode) and created the PAGEMODE flag which * is to be set to TRUE to enable this * . added -4 option which engages TERM II, FTP 4 (new release) * -- Version 2.9 Mods by Richard Conn, 9/1/81 * . internal documentation on ARPA Net protocols expanded * . possible operator precedence problem with BITMASK corrected * by redundant parentheses * -- Version 3.0 Mods by Lauren Weinstein, 9/14/81 * . fixed bug in PAGEMODE   created files */ /* ARPA Net Constants */ /* The following constants are used to communicate with the ARPA * Net SERVER TELNET and TIP programs. These constants are defined * as follows: * IAC <-- Is A Command; indicates that * a command follows * WILL/WONT <-- Command issued to SERVER TELNET * (Host); WILL issues command * and WONT issues negative of * the command * DO/DONT <-- Command issued to TIP; DO issues * command and DONT issues * nese 'l' : LOGFLAG = ~LOGDEFAULT; /* turn off log report */ break; case 'r' : RECVFLAG = TRUE; /* receive file */ XMITTYPE = gettype(argv[1][index++]); /* get t/b */ break; case 's' : SENDFLAG = TRUE; /* send file */ XMITTYPE = gettype(argv[1][index++]); break; case 'm' : MUNGMODE = TRUE; /* allow overwriting of files */ break; case 'y' : STATDISP = TRUE; /* display file status */ break; case '7' : BIT7 = TRUE; /* transfer only 7 bits */ uff[BBUFSIZ]; #ifdef JHU int wason; #endif #ifdef VER7 int pagelen; char *ttyname(); /* forward declaration for C */ #endif char *tty; char XMITTYPE; int ARPA, RECVFLAG, SENDFLAG, FTP1, PMSG, DELFLAG, LOGFLAG, MUNGMODE; int STATDISP, BIT7, BITMASK; int delay; alarmfunc(); main(argc, argv) int argc; char **argv; { char *logfile; int index; char flag; logfile = "umodem.log"; /* Name of LOG File */ printf("\nUMODEM Version %d.%d", VERSION/10, VERSION%10); printf(" - index = 1; /* set index for loop */ delay = 3; /* assume FTP 3 delay */ PMSG = FALSE; /* turn off flags */ FTP1 = FALSE; /* assume FTP 3 (CP/M UG XMODEM2) */ RECVFLAG = FALSE; /* not receive */ SENDFLAG = FALSE; /* not send either */ XMITTYPE = 't'; /* assume text */ DELFLAG = FALSE; /* do NOT delete log file before starting */ LOGFLAG = LOGDEFAULT; ARPA = FALSE; /* assume not on ARPA Net */ MUNGMODE = FALSE; /* protect files from overwriting */ STATDISP = FALSE; /* assugative of the command * TRBIN <-- Transmit Binary Command * Examples: * IAC WILL TRBIN <-- Host is configured to transmit Binary * IAC WONT TRBIN <-- Host is configured NOT to transmit binary * IAC DO TRBIN <-- TIP is configured to transmit Binary * IAC DONT TRBIN <-- TIP is configured NOT to transmit binary */ #define IAC 0377 /* Is A Command */ #define DO 0375 /* Command to TIP */ #define DONT 0376 /* Negative of Command to TIP */ #define WILL 0373 /* Command  break; case '4' : FTP1 = TRUE; /* select FTP 1 (varient) */ BIT7 = TRUE; /* transfer only 7 bits */ delay = 5; /* FTP 1 delay constant */ printf("\nUMODEM: TERM II FTP 4 Selected\n"); break; default : error("Invalid Flag", FALSE); } if (BIT7 && (XMITTYPE == 'b')) { printf("\nUMODEM: Fatal Error -- Both 7-Bit Transfer and "); printf("Binary Transfer Selected"); exit(-1); /* error exit to UNIX */ } if (BIT7) /* set MASK value */ BIT- UNIX-Based Remote File Transfer Facility\n"); if (argc < 3 || *argv[1] != '-') { printf("\nUsage: \n\tumodem "); printf("-[rb!rt!sb!st][p][l][1][a][m][d][y][7][4]"); printf(" filename\n"); printf("\n"); printf("\n\trb <-- Receive Binary"); printf("\n\trt <-- Receive Text"); printf("\n\tsb <-- Send Binary"); printf("\n\tst <-- Send Text"); printf("\n\tp <-- Turn ON Parameter Display"); #if LOGDEFAULT printf("\n\tl <-- (ell) Turn OFF LOG File Entries"); me not a status display */ BIT7 = FALSE; /* assume 8-bit communication */ while ((flag = argv[1][index++]) != '\0') switch (flag) { case 'a' : ARPA = TRUE; /* set ARPA Net */ break; case 'p' : PMSG = TRUE; /* print all messages */ break; case '1' : FTP1 = TRUE; /* select FTP 1 */ delay = 5; /* FTP 1 delay constant */ printf("\nUMODEM: TERM II FTP 1 Selected\n"); break; case 'd' : DELFLAG = TRUE; /* delete log file first */ break; cato SERVER TELNET (Host) */ #define WONT 0374 /* Negative of Command to SERVER TELNET */ #define TRBIN 0 /* Transmit Binary Command */ /* JHU UNIX structures */ #ifdef JHU struct sttybuf ttys, ttysnew, ttystemp; /* for stty terminal mode calls */ #endif /* Version 7 UNIX structures */ #ifdef VER7 struct sgttyb ttys, ttysnew, ttystemp; /* for stty terminal mode calls */ #endif struct stat statbuf; /* for terminal message on/off control */ FILE *LOGFP, *fopen(); char b #else printf("\n\tl <-- (ell) Turn ON LOG File Entries"); #endif printf("\n\t1 <-- (one) Employ TERM II FTP 1"); printf("\n\ta <-- Turn ON ARPA Net Flag"); printf("\n\tm <-- Allow file overwiting on receive"); printf("\n\td <-- Delete umodem.log File before starting"); printf("\n\ty <-- Display file status (size) information only"); printf("\n\t7 <-- Enable 7-bit transfer mask"); printf("\n\t4 <-- Enable TERM II FTP 4"); printf("\n"); exit(-1); }A     MASK = 0177; /* 7 significant bits */ else BITMASK = 0377; /* 8 significant bits */ if (PMSG) { printf("\nSupported File Transfer Protocols:"); printf("\n\tTERM II FTP 1"); printf("\n\tCP/M UG XMODEM2 (TERM II FTP 3)"); printf("\n\tTERM II FTP 4"); printf("\n\n"); } if (LOGFLAG) { if (!DELFLAG) LOGFP = fopen(logfile, "a"); /* append to LOG file */ else LOGFP = fopen(logfile, "w"); /* new LOG file */ fprintf(LOGFP,"\n\n++++++++rase = ttys.sg_erase; /* copy erase flags */ ttysnew.sg_flags = ttys.sg_flags; /* copy flags */ ttysnew.sg_kill = ttys.sg_kill; /* copy std terminal flags */ ttysnew.sg_flags |= RAW; /* set for RAW Mode */ /* This ORs in the RAW mode value, thereby setting RAW mode and leaving the other mode settings unchanged */ ttysnew.sg_flags &= ~ECHO; /* set for no echoing */ /* This ANDs in the complement of the ECHO setting (for NO echo), thereby leaving all caracteristics for JHU UNIX */ #ifdef JHU if (gtty(0, &ttys) < 0) /* get current tty params */ error("Can't get TTY Parameters", TRUE); tty = ttyname(0); /* identify current tty */ /* duplicate current modes in ttysnew structure */ ttysnew.ispeed = ttys.ispeed; /* copy input speed */ ttysnew.ospeed = ttys.ospeed; /* copy output speed */ ttysnew.xflags = ttys.xflags; /* copy JHU/UNIX extended flags */ ttysnew.mode = ttys.mode; /* copy standard terminal flags */ ttysnew.mode |=  /* turn off ^S/^Q input control */ ttysnew.xflags &= ~FOLD; /* turn off CR/LF folding at col 72 */ ttysnew.xflags |= NB8; /* turn on 8-bit input/output */ if (stty(0, &ttysnew) < 0) /* set new params */ error("Can't set new TTY Parameters", TRUE); if (stat(tty, &statbuf) < 0) /* get tty status */ error("Can't get your TTY Status", TRUE); if (statbuf.st_mode&011) /* messages are on [SD] */ { wason = TRUE; if (chmod(tty, 020600) < 0) /* turn off tty messages [SD] */ erro\n"); fprintf(LOGFP,"\nUMODEM Version %d.%d\n", VERSION/10, VERSION%10); printf("\nUMODEM: LOG File '%s' is Open\n", logfile); } if (STATDISP) yfile(argv[2]); /* status of a file */ if (RECVFLAG && SENDFLAG) error("Both Send and Receive Functions Specified", FALSE); if (!RECVFLAG && !SENDFLAG) error("Neither Send nor Receive Functions Specified", FALSE); if (RECVFLAG) { if(open(argv[2], 0) != -1) /* possible abort if file exists */ { printf("\nUMODEM: Warniurrent parameters unchanged and turning OFF ECHO only */ ttysnew.sg_flags &= ~XTABS; /* set for no tab expansion */ ttysnew.sg_flags &= ~LCASE; /* set for no upper-to-lower case xlate */ ttysnew.sg_flags |= ANYP; /* set for ANY Parity */ ttysnew.sg_flags &= ~NL3; /* turn off ALL delays - new line */ ttysnew.sg_flags &= ~TAB2; /* turn off tab delays */ ttysnew.sg_flags &= ~CR3; /* turn off CR delays */ ttysnew.sg_flags &= ~FF1; /* turn off FF delays */ ttysnew.sg_flags &= ~BS1; RAW; /* set for RAW Mode */ /* This ORs in the RAW mode value, thereby setting RAW mode and leaving the other mode settings unchanged */ ttysnew.mode &= ~ECHO; /* set for no echoing */ /* This ANDs in the complement of the ECHO setting (for NO echo), thereby leaving all current parameters unchanged and turning OFF ECHO only */ ttysnew.mode &= ~XTABS; /* set for no tab expansion */ ttysnew.mode &= ~LCASE; /* set for no upper-to-lower case xlate */ ttysr("Can't change TTY Mode", TRUE); } else wason = FALSE; /* messages are already off */ #endif /* Device characteristics for Version 7 UNIX */ #ifdef VER7 if (ioctl(0,TIOCGETP,&ttys)<0) /* get tty params [V7] */ error("Can't get TTY Parameters", TRUE); tty = ttyname(0); /* identify current tty */ /* transfer current modes to new structure */ ttysnew.sg_ispeed = ttys.sg_ispeed; /* copy input speed */ ttysnew.sg_ospeed = ttys.sg_ospeed; /* copy output speed */ ttysnew.sg_eng -- Target File Exists\n"); if( MUNGMODE == FALSE ) error("Fatal - Can't overwrite file\n",FALSE); printf("UMODEM: Overwriting Target File\n"); } rfile(argv[2]); /* receive file */ } else sfile(argv[2]); /* send file */ } gettype(ichar) char ichar; { if (ichar == 't') return(ichar); if (ichar == 'b') return(ichar); error("Invalid Send/Receive Parameter - not t or b", FALSE); return; } /* set tty modes for UMODEM transfers */ setmodes() { /* Device chnew.mode |= ANYP; /* set for ANY Parity */ ttysnew.mode &= ~NL3; /* turn off ALL delays - new line */ ttysnew.mode &= ~TAB3; /* turn off tab delays */ ttysnew.mode &= ~CR3; /* turn off CR delays */ ttysnew.mode &= ~FF1; /* turn off FF delays */ ttysnew.mode &= ~BS1; /* turn off BS delays */ /* the following are JHU/UNIX xflags settings; they are [SD] */ ttysnew.xflags &= ~PAGE; /* turn off paging */ ttysnew.xflags &= ~STALL; /* turn off ^S/^Q recognition */ ttysnew.xflags &= ~TAPE;   /* turn off BS delays */ ttysnew.sg_flags &= ~TANDEM; /* turn off flow control */ #ifdef PAGEMODE /* make sure page mode is off */ ioctl(0,TIOCSSCR,&pagelen); /* [SD] */ #endif /* set new paramters */ if (ioctl(0,TIOCSETP,&ttysnew) < 0) error("Can't set new TTY Parameters", TRUE); if (stat(tty, &statbuf) < 0) /* get tty status */ error("Can't get your TTY Status", TRUE); #endif if (PMSG) { printf("\nUMODEM: TTY Device Parameters Altered"); ttyparams(); /* prinP, "TERM II File Transfer Protocol 4 Selected\n"); else fprintf(LOGFP, "TERM II File Transfer Protocol 3 (CP/M UG) Selected\n"); if (BIT7) fprintf(LOGFP, "7-Bit Transmission Enabled\n"); else fprintf(LOGFP, "8-Bit Transmission Enabled\n"); } printf("\r\nUMODEM: "); if (BIT7) printf("7-Bit"); else printf("8-Bit"); printf(" Transmission Enabled"); printf("\r\nUMODEM: Ready to RECEIVE File\r\n"); recfin = FALSE; sectnum = errors = 0; fatalerror = Ftf("RESET - Can't restore normal TTY Params\n"); } } #endif /* Device characteristic restoration for Version 7 UNIX */ #ifdef VER7 if (ioctl(0,TIOCSETP,&ttys) < 0) { if (!errcall) error("RESET - Can't restore normal TTY Params", FALSE); else { printf("UMODEM: "); printf("RESET - Can't restore normal TTY Params\n"); } } #endif if (PMSG) { printf("\nUMODEM: TTY Device Parameters Restored"); ttyparams(); /* print tty params */ } return%s does not exist\n", name); exit(-1); /* error exit to UNIX */ } prfilestat(name); /* print status */ printf("\n"); if (LOGFLAG) { fprintf(LOGFP,"\n"); fclose(LOGFP); } exit(0); /* exit to UNIX -- no error */ } /** receive a file **/ rfile(name) char *name; { char mode; int fd, j, firstchar, sectnum, sectcurr, tmode; int sectcomp, errors, errorflag, recfin; register int bufctr, checksum; register int c; int errorchar, fatalerror, startstx, inchecksum, ent tty params */ } if (ARPA) /* set 8-bit on ARPA Net */ setarpa(); return; } /* set ARPA Net for 8-bit transfers */ setarpa() { sendbyte(IAC); /* Is A Command */ sendbyte(WILL); /* Command to SERVER TELNET (Host) */ sendbyte(TRBIN); /* Command is: Transmit Binary */ sendbyte(IAC); /* Is A Command */ sendbyte(DO); /* Command to TIP */ sendbyte(TRBIN); /* Command is: Transmit Binary */ sleep(3); /* wait for TIP to configure */ return; } /* restore normal ttyALSE; /* NO fatal errors */ recvsectcnt = 0; /* number of received sectors */ if (mode == 't') tmode = TRUE; else tmode = FALSE; if (FTP1) { while (readbyte(4) != SYN); sendbyte(ACK); /* FTP 1 Sync */ } else sendbyte(NAK); /* FTP 3 Sync */ do { errorflag = FALSE; do { firstchar = readbyte(6); } while ((firstchar != SOH) && (firstchar != EOT) && (firstchar != TIMEOUT)); if (firstchar =; } /* reset the ARPA Net */ resetarpa() { sendbyte(IAC); /* Is A Command */ sendbyte(WONT); /* Negative Command to SERVER TELNET (Host) */ sendbyte(TRBIN); /* Command is: Don't Transmit Binary */ sendbyte(IAC); /* Is A Command */ sendbyte(DONT); /* Negative Command to TIP */ sendbyte(TRBIN); /* Command is: Don't Transmit Binary */ return; } /* print error message and exit; if mode == TRUE, restore normal tty modes */ error(msg, mode) char *msg; int mode; { if (mode) rdetx, endenq; long recvsectcnt; mode = XMITTYPE; /* set t/b mode */ if ((fd = creat(name, CREATMODE)) < 0) error("Can't create file for receive", FALSE); setmodes(); /* setup tty modes for xfer */ printf("\r\nUMODEM: File Name: %s", name); if (LOGFLAG) { fprintf(LOGFP, "\n----\nUMODEM Receive Function\n"); fprintf(LOGFP, "File Name: %s\n", name); if (FTP1) if (!BIT7) fprintf(LOGFP, "TERM II File Transfer Protocol 1 Selected\n"); else fprintf(LOGF modes */ restoremodes(errcall) int errcall; { if (ARPA) /* if ARPA Net, reconfigure */ resetarpa(); /* Device characteristic restoration for JHU UNIX */ #ifdef JHU if (wason) /* if messages were on originally */ if (chmod(tty, 020611) < 0) /* [SD] */ error("Can't change TTY Mode", FALSE); if (stty(0, &ttys) < 0) /* restore original tty modes */ { if (!errcall) error("RESET - Can't restore normal TTY Params", FALSE); else { printf("UMODEM: "); prinestoremodes(TRUE); /* put back normal tty modes */ printf("UMODEM: %s\n", msg); if (LOGFLAG) { fprintf(LOGFP, "UMODEM Fatal Error: %s\n", msg); fclose(LOGFP); } exit(-1); } /** print status (size) of a file **/ yfile(name) char *name; { printf("UMODEM File Status Display for %s\n", name); if (LOGFLAG) fprintf(LOGFP,"UMODEM File Status Display for %s\n", name); if (open(name,0) < 0) { printf("File %s does not exist\n", name); if (LOGFLAG) fprintf(LOGFP,"File A     = TIMEOUT) { if (LOGFLAG) fprintf(LOGFP, "Timeout on Sector %d\n", sectnum); errorflag = TRUE; } if (firstchar == SOH) { if (FTP1) readbyte(5); /* discard leading zero */ sectcurr = readbyte(delay); sectcomp = readbyte(delay); if (FTP1) startstx = readbyte(delay); /* get leading STX */ if ((sectcurr + sectcomp) == BITMASK) { if (sectcurr == ((sectnum+1)&BITMASK)) { checksumt fd, charval, attempts; int nlflag, sendfin, tmode; register int bufctr, checksum, sectnum; char c; int sendresp; /* response char to sent block */ mode = XMITTYPE; /* set t/b mode */ if ((fd = open(name, 0)) < 0) { if (LOGFLAG) fprintf(LOGFP, "Can't Open File\n"); error("Can't open file for send", FALSE); } setmodes(); /* setup tty modes for xfer */ printf("\r\nUMODEM: File Name: %s", name); if (LOGFLAG) { fprintf(LOGFP, "\n----\nUMODEM Send Function\n"); LOGFLAG) fprintf(LOGFP, "Checksum Error on Sector %d\n", sectnum); errorflag = TRUE; } } else { if (sectcurr == sectnum) { while(readbyte(3) != TIMEOUT); if (FTP1) sendbyte(ESC); /* FTP 1 requires */ sendbyte(ACK); } else { if (LOGFLAG) { fprintf(LOGFP, "Phase Error - Received Sector is "); fprintf(LOGFP,t : fprintf(LOGFP, "Error"); break; } fprintf(LOGFP, "\n"); } } if (errorflag == TRUE) { errors++; while (readbyte(3) != TIMEOUT); sendbyte(NAK); } } while ((firstchar != EOT) && (errors != ERRORMAX) && !fatalerror); if ((firstchar == EOT) && (errors < ERRORMAX)) { if (!FTP1) sendbyte(ACK); close(fd); restoremodes(FALSE); /* restore normal tty modes */ if (FTP1) while (readbyte(3) != TIMEOUT); /* flush EO = 0; for (j = bufctr = 0; j < BBUFSIZ; j++) { buff[bufctr] = c = readbyte(delay); checksum = ((checksum+c)&BITMASK); if (!tmode) /* binary mode */ { bufctr++; continue; } if (c == CR) continue; /* skip CR's */ if (c == CTRLZ) /* skip CP/M EOF char */ { recfin = TRUE; /* flag EOF */ continue; } if (!recfin) bufctr++; } if (FTP1) endetx = readbyte(delay); /* fprintf(LOGFP, "File Name: %s\n", name); } prfilestat(name); /* print file size statistics */ if (LOGFLAG) { if (FTP1) if (!BIT7) fprintf(LOGFP, "TERM II File Transfer Protocol 1 Selected\n"); else fprintf(LOGFP, "TERM II File Transfer Protocol 4 Selected\n"); else fprintf(LOGFP, "TERM II File Transfer Protocol 3 (CP/M UG) Selected\n"); if (BIT7) fprintf(LOGFP, "7-Bit Transmission Enabled\n"); else fprintf(LOGFP, "8-Bit Transmission Enabled\n");  "%d while Expected Sector is %d\n", sectcurr, ((sectnum+1)&BITMASK)); } errorflag = TRUE; fatalerror = TRUE; if (FTP1) sendbyte(ESC); /* FTP 1 requires */ sendbyte(CAN); } } } else { if (LOGFLAG) fprintf(LOGFP, "Header Sector Number Error on Sector %d\n", sectnum); errorflag = TRUE; } } if (FTP1 && !errorflag) { if (startstx != STX) { errorflag = TRUE; /* FTP 1 STX missing *T's */ sleep(3); /* give other side time to return to terminal mode */ if (LOGFLAG) { fprintf(LOGFP, "\nReceive Complete\n"); fprintf(LOGFP,"Number of Received CP/M Records is %ld\n", recvsectcnt); fclose(LOGFP); } printf("\n"); exit(0); } else { if (LOGFLAG && FTP1 && fatalerror) fprintf(LOGFP, "Synchronization Error"); error("TIMEOUT -- Too Many Errors", TRUE); } } /** send a file **/ sfile(name) char *name; { char mode; inget ending ETX */ inchecksum = readbyte(delay); /* get checksum */ if (FTP1) endenq = readbyte(delay); /* get ENQ */ if (checksum == inchecksum) /* good checksum */ { errors = 0; recvsectcnt++; sectnum = sectcurr; /* update sector counter */ if (write(fd, buff, bufctr) < 0) error("File Write Error", TRUE); else { if (FTP1) sendbyte(ESC); /* FTP 1 requires */ sendbyte(ACK); } } else { if (/ errorchar = STX; } if (endetx != ETX) { errorflag = TRUE; /* FTP 1 ETX missing */ errorchar = ETX; } if (endenq != ENQ) { errorflag = TRUE; /* FTP 1 ENQ missing */ errorchar = ENQ; } if (errorflag && LOGFLAG) { fprintf(LOGFP, "Invalid Packet-Control Character: "); switch (errorchar) { case STX : fprintf(LOGFP, "STX"); break; case ETX : fprintf(LOGFP, "ETX"); break; case ENQ : fprintf(LOGFP, "ENQ"); break; defaul   } printf("\r\nUMODEM: "); if (BIT7) printf("7-Bit"); else printf("8-Bit"); printf(" Transmission Enabled"); printf("\r\nUMODEM: Ready to SEND File\r\n"); if (mode == 't') tmode = TRUE; else tmode = FALSE; sendfin = nlflag = FALSE; attempts = 0; if (FTP1) { sendbyte(SYN); /* FTP 1 Synchronize with Receiver */ while (readbyte(5) != ACK) { if(++attempts > RETRYMAX*6) error("Remote System Not Responding", TRUE); sendbyte(SYN); on */ prfilestat(name) char *name; { struct stat filestatbuf; /* file status info */ stat(name, &filestatbuf); /* get file status bytes */ printf("\r\nUMODEM: Estimated File Size %ldK, %ld Records, %ld Bytes", (filestatbuf.st_size/1024)+1, (filestatbuf.st_size/128)+1, filestatbuf.st_size); if (LOGFLAG) fprintf(LOGFP,"Estimated File Size %ldK, %ld Records, %ld Bytes\n", (filestatbuf.st_size/1024)+1, (filestatbuf.st_size/128)+1, filestatbuf.st_size); return; } /* get ) buff[bufctr++] = LF; /* insert Unix newline */ else nlflag = TRUE; /* insert newline on next sector */ } continue; } buff[bufctr++] = c; /* copy the char without change */ } attempts = 0; if (!bufctr) /* if EOF on sector boundary */ break; /* avoid sending empty sector */ do { sendbyte(SOH); /* send start of packet header */ if (FTP1) sendbyte(0); /* FTP 1 Type 0 P { fprintf(LOGFP, "Non-ACK Received on Sector %d\n", sectnum); if (sendresp == TIMEOUT) fprintf(LOGFP, "This Non-ACK was a TIMEOUT\n"); } } while((sendresp != ACK) && (attempts != RETRYMAX)); sectnum++; /* increment to next sector number */ } while (!sendfin && (attempts != RETRYMAX)); if (attempts == RETRYMAX) error("Remote System Not Responding", TRUE); attempts = 0; if (FTP1) while (attempts++ < 10) sendbyte(EOT);  } } else { while (readbyte(30) != NAK) /* FTP 3 Synchronize with Receiver */ if (++attempts > RETRYMAX) error("Remote System Not Responding", TRUE); } sectnum = 1; /* first sector number */ attempts = 0; do { for (bufctr=0; bufctr < BBUFSIZ;) { if (nlflag) { buff[bufctr++] = LF; /* leftover newline */ nlflag = FALSE; } if ((charval = read(fd, &c, 1)) < 0) error("File Read Error", TRUE); if (charval == 0) a byte from data stream -- timeout if "seconds" elapses */ readbyte(seconds) unsigned seconds; { char c; signal(SIGALRM,alarmfunc); /* catch alarms */ alarm(seconds); /* set the alarm clock */ if (read(0, &c, 1) < 0) /* get a char; error means we timed out */ { return(TIMEOUT); } alarm(0); /* turn off the alarm */ return((c&BITMASK)); /* return the char */ } /* send a byte to data stream */ sendbyte(data) char data; { char dataout; dataout = (data&BITMASK); acket */ sendbyte(sectnum); /* send current sector number */ sendbyte(-sectnum-1); /* and its complement */ if (FTP1) sendbyte(STX); /* send STX */ checksum = 0; /* init checksum */ for (bufctr=0; bufctr < BBUFSIZ; bufctr++) { sendbyte(buff[bufctr]); /* send the byte */ if (ARPA && (buff[bufctr]==0xff)) /* ARPA Net FFH esc */ sendbyte(buff[bufctr]); /* send 2 FFH's for one */ checksu else { sendbyte(EOT); /* send 1st EOT */ while ((readbyte(15) != ACK) && (attempts++ < RETRYMAX)) sendbyte(EOT); if (attempts >= RETRYMAX) error("Remote System Not Responding on Completion", TRUE); } close(fd); restoremodes(FALSE); sleep(5); /* give other side time to return to terminal mode */ if (LOGFLAG) { fprintf(LOGFP, "\nSend Complete\n"); fclose(LOGFP); } printf("\n"); exit(0); } /* print file size status informati /* EOF for read */ { sendfin = TRUE; /* this is the last sector */ if (!bufctr) /* if EOF on sector boundary */ break; /* avoid sending extra sector */ if (tmode) buff[bufctr++] = CTRLZ; /* Control-Z for CP/M EOF */ else bufctr++; continue; } if (tmode && c == LF) /* text mode & Unix newline? */ { if (c == LF) /* Unix newline? */ { buff[bufctr++] = CR; /* insert carriage return */ if (bufctr < BBUFSIZm = ((checksum+buff[bufctr])&BITMASK); } /* while (readbyte(3) != TIMEOUT); flush chars from line */ if (FTP1) sendbyte(ETX); /* send ETX */ sendbyte(checksum); /* send the checksum */ if (FTP1) sendbyte(ENQ); /* send ENQ */ attempts++; if (FTP1) { sendresp = NAK; /* prepare for NAK */ if (readbyte(10) == ESC) sendresp = readbyte(10); } else sendresp = readbyte(10); /* get response */ if ((sendresp != ACK) && LOGFLAG) A      /* mask for 7 or 8 bits */ write(1, &dataout, 1); /* write the byte */ return; } /* function for alarm clock timeouts */ alarmfunc() { return; /* this is basically a dummy function to force error */ /* status return on the "read" call in "readbyte" */ } /* print data on TTY setting */ ttyparams() { /* Obtain TTY parameters for JHU UNIX */ #ifdef JHU gtty(0, &ttystemp); /* get current tty params */ #endif /* Obtain TTY parameters for Version 7 UNIX */ #ifdef VER7printf("External A"); break; case EXTB : printf("External B"); break; #endif default : printf("Error"); break; } printf(" Baud\r\n"); } tf("\tTerminal Paging is "); pryn1(PAGE); if (ttystemp.xflags&PAGE) printf("\t Lines/Page is %d\r\n", ttystemp.xflags&PAGE); printf("\r\n"); /* New line to separate topics */ printf("\tTTY Input Rate : "); prbaud(ttystemp.ispeed); /* print baud rate */ printf("\tTTY Output Rate : "); prbaud(ttystemp.ospeed); /* print output baud rate */ printf("\r\n"); /* New line to separate topics */ printf("\tMessages Enabled "); if (statbuf.st_mode&011) f("134.5"); break; case B0150 : printf("150"); break; case B0200 : printf("200"); break; case B0300 : printf("300"); break; case B0600 : printf("600"); break; case B1200 : printf("1200"); break; case B1800 : printf("1800"); break; case B2400 : printf("2400"); break; case B4800 : printf("4800"); break; case B9600 : printf("9600"); break; case EXT_A : printf("External A"); break; case EXT_B : printf("External B"); break; #endif /* Version 7 UNIX speed flag cases */ #ifd ioctl(0,TIOCGETP,&ttystemp); #endif tty = ttyname(0); /* get name of tty */ stat(tty, &statbuf); /* get more tty params */ printf("\r\n\nTTY Device Parameter Display"); printf("\r\n\tTTY Device Name is %s\r\n\n", tty); printf("\tAny Parity Allowed "); pryn(ANYP); printf("\tEven Parity Allowed"); pryn(EVENP); printf("\tOdd Parity Allowed "); pryn(ODDP); printf("\tEcho Enabled "); pryn(ECHO); printf("\tLower Case Map "); pryn(LCASE); printf("\tTabs Expande printf(": Yes\r\n"); else printf(": No\r\n"); #endif /* Print extended characteristics for Version 7 UNIX */ #ifdef VER7 printf("\tTTY Input Rate : "); prbaud(ttystemp.sg_ispeed); printf("\tTTY Output Rate : "); prbaud(ttystemp.sg_ospeed); /* print output baud rate */ #endif } pryn(iflag) int iflag; { /* JHU UNIX flag test */ #ifdef JHU if (ttystemp.mode&iflag) #endif /* Version 7 UNIX flag test */ #ifdef VER7 if (ttystemp.sg_flaef VER7 case B50 : printf("50"); break; case B75 : printf("75"); break; case B110 : printf("110"); break; case B134 : printf("134.5"); break; case B150 : printf("150"); break; case B200 : printf("200"); break; case B300 : printf("300"); break; case B600 : printf("600"); break; case B1200 : printf("1200"); break; case B1800 : printf("1800"); break; case B2400 : printf("2400"); break; case B4800 : printf("4800"); break; case B9600 : printf("9600"); break; case EXTA : d "); pryn(XTABS); printf("\tCR Mode Enabled "); pryn(CRMOD); printf("\tRAW Mode Enabled "); pryn(RAW); /* Print extended terminal characteristics for JHU UNIX */ #ifdef JHU printf("\tBinary Mode Enabled"); pryn1(NB8); printf("\tCR/LF in Col 72 "); pryn1(FOLD); printf("\tRecognize ^S/^Q "); pryn1(STALL); printf("\tSend ^S/^Q "); pryn1(TAPE); printf("\tTerminal can BS "); pryn1(SCOPE); printf("\r\n"); /* New line to separate topics */ prings&iflag) #endif printf(": Yes\r\n"); else printf(": No\r\n"); } /* Extended flag test for JHU UNIX only */ #ifdef JHU pryn1(iflag) int iflag; { if (ttystemp.xflags&iflag) printf(": Yes\r\n"); else printf(": No\r\n"); } #endif prbaud(speed) char speed; { switch (speed) { /* JHU UNIX speed flag cases */ #ifdef JHU case B0050 : printf("50"); break; case B0075 : printf("75"); break; case B0110 : printf("110"); break; case B0134 : print  erminator; short terminator_size; }; /* * Terminator mask for PASSALL reads. * Permits reads of all possible 8-bit characters. */ int t_mask[32] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; struct terminator_mask { short size ; short unused ; int *mask ; } termin_mask = { 32, 0, t_mask }; /* */ assign_channel() { /* * ASSIGN a channel to the logical name T ! not VAXNET % umodem -rt vms.file ! Start UMODEM on the ... ! remote UNIX system UMODEM: Ready to RECEIVE File ^/ Q ! Get out of VAXNET $ define/user tt remote ! Temporarily redefine ! logical name TT $ umodem -st vms.fil ! Sends file from the ... ! rovide FILE STATistics under VMS: * calls RMS to find out the length of * the file specified in the argument. * RAW_READ Reads characters from the terminal * without any echoing or interpretation * and with an optional timeout period. * RAW_WRITE Writes a character to the terminal * without any interpretation. * STTY Sets terminal characteristics, almost * like the UNIX STTY system call. * * Some of the ideas used here were obtained from code written * by Max BeT, which is usually * the terminal. */ int status; $DESCRIPTOR(tt_descriptor, tt_name); if (tt_chan == -1) status = sys$assign(&tt_descriptor, &tt_chan, 0, 0); else status = SS$_NORMAL; if (status != SS$_NORMAL || tt_chan == -1) error("ASSIGN_CHANNEL: error in SYS$ASSIGN\n", FALSE); return; } gtty(tt_characteristics) struct tt_info *tt_characteristics; { /* * Gets terminal information from VMS. */ int status;  VMS system UMODEM: Ready to SEND File $ vaxnet remote ! Back to remote terminal % ! operation. Remember ! to log off! 2 Problems/Questions Contact Wally Reiher: username REIHER, MB9-19, 495-1768. He has a version of MODEM configured for the Heath/Zenith-89 microcomputer system which is in the public domain and free for the asking. nson and Robert Bruccoleri. * * Walter Reiher * Harvard University * Department of Chemistry * 12 Oxford Street * Cambridge, MA 02138 * March 11, 1983 */ #include descrip #include iodef #include rms #include ssdef #include stdio #include "vmodem.h" #define TRUE 1 #define FALSE 0 static char tt_name[] = "TT"; static short tt_chan = -1; /* Terminal channel number */ struct tt_io_iosb /* Terminal I/O IOSB */ { short status; short byte_count; short t(a "remote" line) than the one you are currently using for your interactive session. See the following example. NOTE that UMODEM requires that the remote line be set to EIGHT_BIT operation. This is done automatically when UMODEM is used on the local line, but must be done manually when using UMODEM on a remote line. 3 Example UNIX-VMS file transfer initiated from the VMS system using VAXNET. $ set terminal/eight_bit remote ! Needed for UMODEM, but $ vaxnet remote /* * VMODEM * VMS support for UMODEM program * * Defined herein are some utility routines to make the UNIX * program UMODEM run under VAX/VMS C (Compiler newer than V 1.00) * * ASSIGN_CHANNEL Calls the VMS System Service $ASSIGN * to assign a channel to a device. * The routine currently has the device * "TT" hardwired into it. * GTTY Gets terminal characteristics, almost * like the UNIX GTTY system call. * FILESTAT P A      if (tt_chan == -1) assign_channel(); status = sys$qiow(0, tt_chan, IO$_SENSEMODE, &(tt_characteristics->dev_modes), NULL, 0, &(tt_characteristics->dev_characteristics), 12, 0, 0, 0, 0); if (status != SS$_NORMAL || tt_characteristics->dev_modes.status != SS$_NORMAL) error("GTTY: sense mode QIO error return.\n", FALSE); return(status); } /* * FILESTAT * Provide FILE STATistics under VMS * * Calls RMS (ugh!) to find out something about the file whose * name  = sys$qiow(0, tt_chan, function, &iosb, NULL, 0, charbuf, nchar, 0, &termin_mask, NULL, 0); if (status == SS$_TIMEOUT || iosb.status == SS$_TIMEOUT) return(SS$_TIMEOUT); else if (status != SS$_NORMAL || iosb.status != SS$_NORMAL) error("RAW_READ: read QIO error return.\n", TRUE); return((int)*charbuf); } raw_write(c) char c; { /* * Writes a character to the terminal without echoing or * interpretation. */ int status; struct tt_io_iosb iosb; if (tt_chof "); printf("file %s, status = 0x%X\n", name, status); return(-1); } return(bytes); } int raw_read(nchar, charbuf, seconds) char *charbuf; int nchar; unsigned seconds; { /* * Read NCHAR characters from the terminal without echoing or * interpretation. * If the argument SECONDS is non-zero, use that as the * timeout period in seconds for the read. * * NOTE THAT THIS FUNCTION RETURNS AN INT, NOT A CHAR! * That is becausis pointed to in the argument FILENAME. * Returns the number of bytes in the file, returns -1 on error. */ long filestat(name) char *name; { short lastbyte; long blocks, bytes; int status; struct FAB fab; struct XABFHC xabfhc; fab = cc$rms_fab; xabfhc = cc$rms_xabfhc; fab.fab$l_xab = &xabfhc; fab.fab$l_fna = name; fab.fab$b_fns = strlen(name); status = sys$open(&fab); if (status != RMS$_NORMAL && status != RMS$_KFF) { if (status == RMS$_FNF) printf("FILESan == -1) assign_channel(); status = sys$qiow(0, tt_chan, IO$_WRITEVBLK | IO$M_CANCTRLO | IO$M_NOFORMAT, &iosb, NULL, 0, &c, 1, 0, 0, 0, 0); if (status != SS$_NORMAL || iosb.status != SS$_NORMAL) error("RAW_WRITE: write QIO error return.\n", TRUE); return; } stty(tt_characteristics) struct tt_info *tt_characteristics; { /* * Sets terminal information from VMS. */ short *f_ptr, *p_ptr, *s_ptr; int status; struct tt_mode_iosb iosb; if (tt_chan == -1) e of the possibility of a SS$_TIMEOUT return. */ short function; int status; struct tt_io_iosb iosb; if (tt_chan == -1) assign_channel(); function = IO$_READVBLK | IO$M_NOECHO | IO$M_NOFILTR; if (seconds) status = sys$qiow(0, tt_chan, function | IO$M_TIMED, &iosb, NULL, 0, charbuf, nchar, seconds, &termin_mask, NULL, 0); else statusTAT: File %s not found.\n", name); else { printf("FILESTAT: Error in $OPEN of "); printf("file %s, status = 0x%X\n", name, status); } return(-1); } /* * Pull out the end-of-file block and the first free byte in the * end-of-file block from the XAB. */ blocks = fab.fab$l_xab->xab$l_ebk - 1; lastbyte = fab.fab$l_xab->xab$w_ffb - 1; bytes = blocks * 512 + lastbyte; status = sys$close(&fab); if (status != RMS$_NORMAL) { printf("FILESTAT: Error in $CLOSE !  )I}0v-OO__^;%˞ғX[ IYƧDN}DIm*%gJtꃁD[d-}AuSmqDڂbm8(ZZדN? ~{x-_>>|SDSL G˗9Fm(:vunN=g97 {<잭8^E&c0}-k l L/T%w-+)e4GT`gk_PTΔh1P"SѰd pDpDk2le3%h(܆ gJW)#<Sok_PݰdSo_+ѷ)#ם5pD߾r ŔpTLJ16a/_vJ:"6#٢WJ+j#|_}$[Tϕs%J>W3kg0]0!_՘8{_Re!Nlt(|*ky b Ծa( RSRl|.Wwv%{` q2XcUSqpGJkGprɥ;%J2D02:{J䭥Ĩ}A5-%Neǔ-A {0~YiOY{*%b˶ #g J`ʡKy{Dɼ',Edo=aedL g=].vwߡ$ 4T7 .b0ȄevHmg(i g(1%j B"y}K@Hb-P$l L k(cH8uѷ}`CBtegry&G&!oPSu*;(X}xD_ެ0aKޗm)!L[{$_%,g[cqKF Ծp٥ۈO!@@8@IQPLM@GrD١9\' /p:L.W8ӫ".#^ P(:lDkC\ gl2T^lqD }^ f+%H0ĥ\wz5!./0[)9Wė|_Ɨ|`*!-0]0=j_PJIꃁ/>tJΔ޵[.y8UDNjKó|/>T^͐ m"-s%JR֫b)p{8ήe2ǘ)ц4j͗SrDIulTT3%Y4 L%::N=?%Ӥ*)yrA?O?SS%ZY^ 0 6UD똂m4 LUDi(fSPx)yJpYN!`ʡ:%ZO 'B$7Jͅl({Do:%Zln6of 5U j[flCMUky1?RL1[%sC#Fּ)0c%JpYm1% S 'dl bG bDɵ7ܓAul(њ#?1Jh|EpO\.@1`Bb2%W _"l X)` jτL5v%c#SpƟ"{ G=}``K`%lqOk lGȮal}G#2 ="_{ZcDE70={pOHFǔ0$SrEd&ؘ8{?ٵ+ O3D`}7\^]Ee[$_PѷLKCCEpO5Ne"(.E med<"@C W-d9>#G&Pl` Jk)Y#pO,{"d7g|mLKC .K1%E`0Ȅ(#ER_'>{Bzٵ%lLD}O"}TwJVJ?@ABoCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef{>-(#]doo20EG.:o|D-TGTpl `RF6ua ?2{_uLO?';%J&E$_,%1؃{]h_~ ȥM켅倅/ oٛ7J/:[%m=`/J4L`m˰(`[%8UwJ\e`K 4}A50xk[ a)A]h]p7cJY6 ݳJLgкH#{*,|,~-#PKy ^)QrA |2G&ui( %a =x X2cJӖS dk`y=[dK l H i(ri;o` ,A'ϓy"\`4Lg m7ܟ%do0)#к`$y[8vFLKZ g1!E [iJ,b ё{4x>!A     D멡SSxFփqs# 6UD똂ml1Su9>܆NSCID ?()DqF=CSuJ O:%ʖ(z0rn6v $_op6_.N>WrDjD>o[ri;o#8i*%gJHmYo8vJtLO՟SDYfr;{gfﰩ:%jڵt?-so#ݸ™sj}ڵt?-s)z0rn6 5-mf`=d`CMS!.z<ލ;%\vPƆv-O\Fx7Δh=g97 &Ǜ-lhmKcwN>Wٵ4||)ц4ǝs%J bঠ"X)qQPrR씜).qvhɼ Ǖ qi,ó|RuJiZB]AEJGW8Sh|2qDkmKcM擪Shͳn/UW3>ٛDKlDkmKc1:w]F.y8\&+%ZkC\ gl2T7h&_2F? ݻɗܡRvCsO^pu\>W4d>:%\6ĥ_ֻNɹ%a 7 G܆Nəp|H'M7HdNS}'TfLhMm$)ZY3~8A{13mڙȩ"0S=p:%ZMuΔW/Cds2v&r;%MsLԏ b桪Fa{>ۯSCID߾rv&rG/^elNFRoyH`;%Zs%Z+J`l.d"Rbo:L06UDXݸSrDIcCM 5uJΔ8˹laCMUDd?mlikhwLֆ4x7s%z]K#םmKc{)9Wd5CvmiqGe>!G8u _(ɮyK˕ٴ̝gɗ;%gJE)(rDI#\eo™g2~Qhr]Jzj(Njv&rmnDk xkg"FXNnNf8 =ElDkkg"~4}pDk)q* tC)Z4Ҙ׆B1]pPUчpD߾ZIJ;%UIȜL˼~=|ûwүGΔۯ.YnfiB1]pPUP SLs|w\uJeOI,kSo_+ѷ\nfSzw-5͵3S?2邛?Umt3y/pLͯ9^3SmTJ,fsa/3'o?la=fxŵ3S_uJ -1H2"`}D\;9rrS)b=Ɲ2kg"W™,fsaKpֱ -n&mNֆ4x7s%:Rb[֣N>]KMv L˼zyy™]nNPrɴ[DJl˺n\Lb=ƝϕhMm$)ZGJlNJZOS3ѾS 3%Zk_PݬwSP#j^p/~`Ru`zuD+w-5͵3S?j ba*|a|\ fz>yR^p#{1f+%&0S=phz>y™,fsao<&ݼd ;{twwM)b=Ɲ}DSI/n%׾YNnΗ|_f9:%b=Ɲs%JR#IS)9S]nٵTL9>RsZh=g97 {aFG*6[mh=ϮSϕ+Q!{ ȴa:%IS)9S]nٵTL9ekUDZv-O\uJͅo#R#-6TuJgzr)JΕ 9Yj*%gJiZB.y8\&+%Z;;4gꔜ+Ql|AX%=CS)9S,fsa/x:"T.3%z0rn6/ǡ,qSl=g97 {|GٵdCM7UDY^_q<&[cv-PM)уqs||oǥM)уqsSrD]h_~Jə CH A 1xf+1[)ZfSL,c>hֻkaJz5C}`aU1@ٵJz5MQ"`RiZj޽ߏlZׯ1!tZfH޲-J6ĥH)9WDIOmCdג 5UJR fٵdCM3%z0rn6B{J blCMUDܜ&sҌmn\La 7s%bSrDj3L00Xvև[LӅ!=" c_q >{0%ɜ46T)I}0PSLv)--"%N1[DJ|=tJt, [i/E$[>Nr椱j4ZǻqDkC\xwJtĶGNd3<(ٛ*)ڗ|_&-RL lǰtS:6CX|lDHSi4GJ9y&Rb[xɿ ?PLW5rsLԏFݼR6ĥ\kg"~4ZNn*)Zܼ hT8So_ Y^-`9IԶTlN}eKcwNF™}elNFMD߾J޲%uJJ>W5rsLԏFz|^)ZY^cj%bM:%J~"ѾSiZj b6_ֻJֺS/q)њ]M?;%\^fpOiKCꝥ;VJ/rrSuT7Mk_P,'7UDXݸSrDȚƆ*%3jꔜ)уqs1G.= bJ f+%Jt TG#>0^?tT_pD!9ڙȩhK}Aus^uJ%׾ؖu)ڗ|_#%e]uJ^IJ;%ZgoOzyymF|2-sw>_ߏ*)Zk_PPuJ.YnfiCɩ %>h='zY^h}Dk_} eOI,SP#j(ڙȩ t~_uJvv&rG/^elNF™l `l.Gd$j[*&XT!.z<ލ;%Z+њHpv&rGqDkmKc{)њHpv&rGa{>h,fsa&_2E o۾hr)q*HmY~ Or* uOSLL(ZGJlN:{ӤadNe~J>ݻO}J}r3Y^ڵt?-s5ݸ™}u0rn6Op]T}b=Ɲ}\:-Rh|)\FMĩ4f4ؖu3%Z8˹\1%r@QmFJJcN:-Rh|)\FMĩ4f4\Δh}/n&UDk1k .P{C>X8Fh b1[)ZG2'h qi,v;%Z+њH8S .6am7vSuJֆ4x7h}D+9Wd5SNqLzLeo\d,x1"%N fFDJ lYOɀle2T.Qh]H C#*J07XNnP" %|Zws HQ"  %E uB/~@ )Ѿ9\'$ӫ!X:a 0BJ#|qulq ^ J%r>o'W^p|][#P$lDp9̷_jH ǵ/xw-&<j㸅qlDp9̷Ruz5`- -KVJf+%J8gI)9S qi,~tcx#q Mhɾ𷿡I?ه 4O[uJΕ(=*Rrd5 #}G(2:{j>J %P8C/lDͅ=rpwwwa7UDӉꔜ+Q28<dʢ0R,cNəF2 {DbpO L _<f+%JΕ<%[oGa{>h,fsa&_2E ?e#X^?O+t>u)X^?GKɵ,8~t?k.!-iҞkP,*f m\(6USV _ 𪃴WR~,uL)M+t>_bP4`}cuLBr2)36/-ibL+t>aNd .? %x,[FŴYS -,cYY)X]RbtLGrU'}&XJIr2a:`):#M^a;:tt8`G~nI֬H06 , UNdT R6aG~ ^A7KYɱ,,`):#M^|g-ibܚ F+XlfD|V &xEݺ,ILX.T:ux>y3RR6WX*+KtR,m-N0+m-N0+md)Ԑ{*ʹ"f|Z:@Q7(XQ0>"sCԢEx4D7 ,ZuhInLWT0ޅUSH῿fE'UPzhʂJF֒J8Q-,lN[K % K N+R,C^`#|ZAG0@rٹ1H:4PkXNt@:\ *c`# =S R#Զa8BBA\'vM!xQ*XwB L> WCKB GMcWƒ*.1BQ7@pRU0U.s#,l B+mMh.Ѩ5hCP*)6t<ϧpRiWPDm l1sx9_L&=M!+ R#,lUxDxq.Ȓ_" _ҍV=|5Bm  J[B$ٺ J/uN[ 8[`{g46)M1@u&X ,[FŴ5VС~Jһ`b|L1+˖Q1mCeС~Dxnf#jJRt L1h4e#XʰRV %+X Eh0OO,.`|4R F@>Û@ 8:H&Ԙ vU 3R`NG\N4N9[`@2x4ɶh Pcuh2KIr20&Rn] M@pU R* vKismuh WJRztD݉;F%:XqɣS& ?;~Zg`)uLr9Q%N~u w>1`GңS&_*K)ڎy}p?Kx[ :6-N0+KBh4w $j*Pc)xGlI֬£6ǠOf&Ԙ)M2MF`+X꘢# *P teFQ#XʖQ1mn4'0(i3jJR Gɨ,wQ vЏ`Ir20* & rRN{t>|)xG6mau Pd@6~J Bz@=:_;Xg#XJ!iӦ `?VW`)%ɀ6mҲ>}LPd'})XJ!iӦ `?VW`)%ɀ6m F+?mCׯ{]U `)ix}w0L~&T9ЦMR, UN|ЗwO߀Gy S%X؜W@86t͡ phs|W1Wy9xDT!8th1hR}(ta$xh Zf Kݻw |ka,Hy+#Bm z ,0jTeQwFm|Y`pO/ LCX~|Y`a4G/?t- B?OzHO3Fm!_ ,0ja:^_A\Kyӷ[q |Y`a:9\C_AN6Ky/mUxDP0}{6aLeQ÷=b|Y`f \H`myQ >Q ]F&ۡs3?[)87^,?mCq@p.닇W.ի?@ABCDEFGHoIJKLMNOPQRSTUVWXYZ[\]^_`g{rL),R6xl|>,:jCCF#5VM/lQBm<^&o`}=/+*L+t>gpR6 >38䕫JM #3Pv3f[R6.6,GQ7 7y)Xm=BNO7W7%zp >ܔ勐,JF֒JY)Xisknab2APWFL[sk6Y)XTAHa`)uDP?bhmu2hsDP?b#I٭GS@Ǩ\L2)h : =1 Eʾ\mk[`z4EV w*`m-NRGHڴi>;U*'ڴi|?CV xBf5/ ֶ:\m](@`suUR`yR!Kڴi>;O*d)X\i|? l w*cTJPd`YXG >Y)xW=z6m{18dkx9 "#,U"A     %2;նi:fնi:fնi:f`Ir20&R`Xt2;iu2&U: nyJRFXH7]1+Kْ6*ͭ5=z,63PcV rup]mNh)#XTAHڴi>;U&XJm4!+ |h -"3JF֒Jl\-֒mAikB,luXX C |@U%'i`V:4c!XDT%FKh6b2Ǔ1 ,XQe]\)xG0@r'x;psO{7H"o 9:XC߾Ar]>Xw >ۃ=L0~1w&_>,:jCCF#5VM/lQBm<^&o`}=üT(   ï 0IÂQ4NúF$t0I0I#   `GGGGGX;> ((ABDEKLQRSTVX <<MEX HLPINI.MEXSRTELMABDEKLQRSTVXABDEKLQRSTVX0I++0I un-installed ++ ͯ 0I ++ Dialing overlay ͵ ,R2 y7! J~#fo> IIOH0IVIVV4V/PVXJ5 5W<y ʫG ʂQ ʔIc=Y=P{H͹G H{H<ʪW<ʫGùG!]͋JDM xt!9"\1\mSk*U G)!2Y:6X* "w 1\͋S0I MEX (Modem Execu:X*XP0I ++ Done ++ 0I=++ Illegal file name ++ 7 7͞GB:W0I[ANY KEY]͹G0I : O:X *X###I* Z++!Y͡J!X~#\!Y[~!YN!Y[~<\w~#~\w~P< YP2_X* Z"gX:W2iX!"dX2fX=27X4V'4Vғ:fX4,R#n͟¨͌V͇ͥ͹> J>*J~27X>27X!jX~Vͥ͟!fX~6t0IDialing: :7Xn>b|0I: Try #*dXH H>bo&<)~#foJ0I Connected @2X:O0I :_X: -?:: -?O*dX+|-?0IAny key to enter terminal mode...ͪW-?H t ¯-?0IBUSY Â0INO ANSWER Â0IABORTED ,R0IMODEM ER!8X454< Op#s#r:8X7 MEX* Z IV{B͌V}#͌VMB ?!>X?_!?X:+ *w z!\"w 2, " 226X\V ::*4X#"4X>26X*XiUͷW®DM!\5<"4X);ͪV0IZZzzz...|H+ ͒ͪW: 2XP2YX!\͡JͿKKL:Y_PX!\͡JͿK:] 4P< 0I Erasing: >K:XVn0I Ok? ͳHYn0I NOT v͞GP0IErased 0I Available commands: !I0I Single char commands: T,E,L,R,S Secondary options: A,B,D,E,K,L,Q,R,S,T,V,X :/tive) V1.14 *4X|-0IClone Level H͞G0I(for aid, type HELP or "?") Copyright (C) 1984, 1985 by NightOwl Software, Inc. }wP!F:Z#ʩ~ ʔx29Z{J:4 >2W2W!p " Z!Ä:W0I [TERM file open] 2W͏G1\!HSP2X ͪW!W~65:W1,R0I=READ aborted 29Z!W:9 /V͈I=!AHͿH>>HHX͂QX.  ʅ: o͏G͖ڒ͖ґ:W:; :X*½͌V:W2W* ZI" Z:W2W4V!y s":W2W͘J.í.͖0I=++ Unkno't LOG: ~!*!/AI0I file open ++ TERMREAD:% *XC:& *X44VV#͞GOpU!W~6> pw!XpU: <2YL5! 45ʐ*X !X *X : 0I =** Reply: ** G 4: O<oH͌ }ÂN # 7?q ~4G:( x? :_  2WHC U y=7?͌HI  : G7H> 7ͪW705 5q 0I =+++ SENDOUT aborted +++ 70I =++ SEND failed ++ 7!XpU~# ~}:- * N#!B[pUF{J0IROR 0INO RING 0INO DIALTONE ͏0I Enter choice or phone number (ret key quits): X͂Q:X^:fX4͌VIVډͪV*dX^P*dX#"dX*gX" Z:iX2WÂ> J0IALDS #: 2X4V:Wʏ͇4V͹!< ~6w0I not found7vV͹J4VD͇|!*:7Xw! !jX{Jͭ:jX#V-V!ͼ$!jX {J͇|-F>27X4V/P427X*bX:8 O͚W ˜͞GxžG:W70I[phone library empty] ~ A!< :W x0I Phone Number Librar c:W̺4V*X#~#foڔ4V?U͌V4V40I Help is available for: ~͞G*X###͖Ҕ0I No help available0I for "~ ##HÇ*X"X>!Js#r!P2Xr͑*XGG!b  {JND *X#0I Help file format error! 7F:o # >2WP*XPP!7>2XX!\"X͡JͿK:X` *XP%H ͪW̹G : Kr¥Ñ:XAwn Command ++ $0I=++ Argument error ++ $=0I=++ Syntax Error +++ AI2W2W,R0I =READ parameter error: line #*:XH4V¨" Z7G~#ͶH xʨ~" Z!W~w~#foѷxÚ ȷ*R ͋J"YͷW͋J"YG:T 怰2T ɿAL .BEL*BY6JCOLfCA^CAL^CLLCPSJCLONŇDEU!DIA[DIDSL>EREXISJGLOBA-HELI KEـ"KEYӀ"LOA"LO{PHONPREFI4REAGREΈSAV"#SENDOU\SEG!SLEESSEWSTA$SUFFI=SYSTESJTER>TERM>TYPAWR!OFy x͞G0I| ͟I0I =͟I:W5:< > H~O#+ɯ29X:8 O*bX!+ k sS:9XF+Nwy#xͪIV =?̓V Ž!jX6 #°!jX*bX:8 O >+J 7~͟#~# Hb?# 0I =++ Phone library full ++ 7ɯ!>28X:Wʄ0I=--> Illegal STMT in line *:XH͞GH,R7YVY œ!({JND 0I READ active >2W!T ~w!":X8Z*]X^PZN29Z" Z:W2W>2>X4V?+!>X~4#A     =++ File: *XI0I not found ++ 74! PP: Xw.":Wʞ!0I Delete APPEND file (y/n) ?ͩH͞GYʞ!0INOT deleted ;DErasing: YP2W2W2W2W.":W!0IFile empty; X!;DClosing: :F:W!O"ͳ!YP<7?0I++ TERM file close error ++ 7:W0I=++ No File Open ++ <*X"Xn":WG*X{J"Xͳ!7ͶHF#w"7: 2X4VҔ":Wʺ#̓V2XG͑@·"0IIllegal key name7vV*X|".M*X#pU6x:Xv#ͦ#W#*X#v#͒#N+:Xwi#$U>receive :W16ICRC>C+16IChecksum>6I mode Waiting...<5]12;J:l1E1<Jl1";æ=><: * |…1}ڣ1:L3G*F3}* ?Py!L3>K2 >K2 : ¶1* " ɯ2Yx5*X"Y5!\ Z͡JYN;2:3 1:f1*Y :X;2![~)!#2#~w+F5#2=!ww {J"Yx2\!Y41!Y51*X"Y: R2<>2 0I Multiple errors... :Wʋ20I Aborting 0IType Q to quit, R to retry: ͹G͞GͶHRQI2!\: ªI*D322* 733*D33: : 3!C3~60I s --0I -- Characters --0I -- Values --0ISet to read-onlyU'e'u'&!);%>Â''!,%>Â''!,% >!y”'͞GÙ'>)G'7͚W«'J „'';%(%(%&BUFFE%BUFFER%TER@SWITCU'CHAe'VAu'BAKFILm)BELO)CAPTURŧ+CHECKSUͩ)CI)CRË)DEBUǙ*DECIMAk+ERRI!*EXCLUDŷ*EXTEN+FILTE]*HEM+INITFIL*L1)LIS{*PRECH+QUEUʼn+RU)SILEN*SODELA+SPLI/+TA,WTECH?*XLIN*XO)CANCE:,ESp,SEU,TRIGGE,ALERr-CLOC0-REPLً,RETR,RTIMQ-PAGŴ-SEARCȓ-WCHt delay msWLINE: T-trn lin wt delay d msCLOCK: speed of CPU...... RTIME: rcv file wait timr5 ; secALERT bell count.........:  SEARCH mode..............=  PAGE: lines per screen...  4V.?-.\V!> \c/0IGlobals: ! >  ~H#.! >  {J4V7.].}<4|4%"0 0IAlternate D/U: *0 |AH}H>:H\V*[4VڞG:WG͟Ig.ͩH&VͪV&V!B[4Vڣ.͞Vw# Œ.!B[{J͍/:WCbͿK2W2W:WR!g0.S!/.>A2 ! 6BT>E.2W>L2W>! ]2W>2X͘$#*`XG##2W);*$U!D$>2W=2X*`XG>H$:X;<);:X*Xw#N +"X*X}o|g"X:Xͦ#T] *X "X"X͠#͠#G͠#–#É#~#*X457#N+ ë#*X~#0I ~#H>=H#͞G##F##~##>"H^$ H>^H@HHH!$9$\ND !$9$ ::\V!e`$0IUnknown file type7u$ D$~#fo"`XPHNKEY"PHNKEY#!X" Z2W6Dұ$);7ʬ$ ʤ$ w#:W<2W¤$* "W" !W~6$P*W|" !"W: 2X! >-HH>2C3* #*3: AIH Received # Sending # ͏<7 !]~<͋<33#3>u<0I ++ ERROR sending name ++ xP=l13>2~Y!]͏<>2}Y͏<2}Yґ46IFilename timeout 44ʭ4l1w#}4^42~YyQ<͋<4ʶ4 ʶ4 ʶ4!\G66I++ 2~Y4T42~Y2~Y͙9><A,WECHϬ,WLIN-RUB: bs-to-rub conversn..LF: T-file linefd apnd...BELL: console bell....... BAK: backup file creationCRC error check mode.....CHECKSUM:error check modeCIS: Compuserve protocol.+ , XON: T-file xon/xoff testXLINE: T-file EOL XON wt.ID: MEX ID in error msgs.. WTECHO: wait-for-echo....( FILTER: contrl char trap.LIST: printer device.....DEBUG: T-modem hex disply2 EXCLUDE (ignore SYS fils)3 INITFILE (startup file)..4 SILENT: READ ͶH2W c/: /2 :WDEMLTCS U2W͍/: /0I=Batch-send ready ;1t>2Yb3͞G2 H/>B2 ><æ=:] ʤ:: 2 !}2 "D3+"F3:;$Jx2=͙9r1P;J0>2 ͙9i8͇8:W<ĸ88(0:ͩ10> ><8`0=L0è9);æ=2X> U:2W: ›00I=Batch-receive ready t: ¶02Y)40>B2 æ=:] ʤ:02 HV3G͞G̀G!"D3 :>2X:$JM3: 16IReady to G4VI''͖5%!'>^#V#N#F#͖1%=%44VI% 4mVͲ&^#V#F#N#fig%454'f%/n%/!|%x%!%AION OFFڍ% 4Ͳ&~#foښ%w~H>HH H#I#%͞VG!~xͲ&^#V#F%##o&xSPH͟I:W%*X"X0IBatch filename buffer: :$ !USPH0I names!&"&:XW!XH&*X*) !XH&͞G*&͟I"&0I buffer: Size=N#F#bkePH>G0IUsed: ~#foePH^P>$G0IFree: HCAPKEY͟I H0I -- Misc: --!'I&!'I'!(I'!(I͞G0I -- Switchecmd silencer9 EXTEND: READ cmd extender; SPLIT: phonelib split....< HEX: input radix......... DECIMAL: input radix..... QUEUE: T-mode queued I/O.Q CAPTURE: save-in-memory..WWPRECHO: echo modem to lstWSODELAY: SENDOUT time dly_ TAB: console TAB expandera TRIGGER char for SENDOUT. CANCEL char for SENDOUT.. SEP (cmd line separator). ESC (T-mode escape char). REPLY wait-time, SENDOUT.  secWECHO SENDOUT echo-wait..  secRETRY: SENDOUT retry-cnt.  WCHAR: T-trn chr w$  <4è9*NQ:Q '505i5'5*HK:Q '57?>!WW7:Q >05i5>!W'W*W| 5q5!Y6!XN# 6 A#5~ 5#5~ ʘ5"{Y+#5~ ¨5:Y<2Y#5~ ʺ5è56 *{YZ~ 5# 55> #~ 5"{Y>2 >2Y2}Y͏W6:W>W6>C No ÞE0I --> 0ITerm-File Active 0IPrinter buffer :WE0ION 0IOFF :Wx:F> E> HF:XͰFyFFF!WWF FO":Q 6F*W|6Fx?!FͭF>2W*Xp#"X!W~<wZF*W#"W:G!W'WOGxHE͠FͰF05\F*WͷW*W}|ҁF͠FͭF:W!WxW>!>q54!?͋JDM5FL5 xF7!?͋JDM'5F> xF7>:"} ; OKP7? H7);$J\P<7?0I ++ Close Error ++ 7*H3: _;!s;_;!W5;* yJ" : 7*XPP;! :X’;2W*X" Ps;>2 yñ;: ;*H3!;;* yJ" !W4~!X7?!WNp*X!\)<*WDM!"W*X!Yx5<" PPY<>J x5<0I ++ DISK full: saving partial file ++ ,;7:5 G*] <Ҡ<͙97ʫ<.·Z?:!W~/w͞G͵EÖA!W45£Ä́E2WOEɹAAAABBSend BREAK to remoteDisconnect modemToggle printer on/offMemory-save onTransmit fileMemory-save off@NPSTU: !"B! !\G!lG0I File name? (RET quits): X͂Q:XBX!\͡JPB BB!HC~CͪW7 error : $70I ++ Timeout F8*7=6: :W:W/2W26I++ Trying Checksum mode ++ !>o7!2 "J3>2W͋< 7W͋< 7/ʶ7: =60I ++ Bad sector # in Header :6z2 >2 !"W*J3*H3͋< 7w#z72 :W8Q͋< 7:8: G: @8<¨9͏< 7 8lP7: =60I ++ CRC error :66:6l15R8: Ҩ9: * H0I ++ 2: >w8><: <: /<>2 !"W*H3: ¤8~#<z¤82 *W|<}<>2Y2}Y͏#H> H> H* G:XG: 2X* G* G* G=!W HH> H>:W05 ̈HZH!WO DH:a > DH~HZH_HyTH: ZH* G vH sH54 464~vH H~~H!X~ʥH5¥H: w * GK> ͹GͶHH͹Ga{_)!o& H |H{I|H}HHO 5=4: =: +=: 0=: 0=p>0IAwaiting ready signal ͞G͙9͋<ʨ9C!=w=!=r=P=è9: F#: AI6I requested x2WCRCChecksum: =: =͞G!\ͪI0I Transferred !\GaSq5͍/:Y/Û0>K2 ͙9R>: 6J: L>q2W2W: >/2 2 ! ~6Q:W:WF>: F>: >2W͞G-?ͧ>0I [Transfer Completed]  ʑ> ʑ> ʑ> ږ>Җ>HH>(HH>)H0I =Disconnecting... eɯ2 ͘J>>2X! ~6B4:] :W>OE-?!*X"X![#B C:CH:ēC 5CH4 :¢C:W NC>C:QC: O:WaC YC!:ʀC!:WʀC:WʀC!͋J:ēC{…C5L5̢C5°CL5ͪW¢CBP/D: C͋DCNDC;DCreating: P:;DExtending: >2W#P!!N#F p+q!PG:FDɯ! w! wAI!YͪI0I...+~#<‹DeD6+6#:= xD=~D=ʖD~D/QÁD*0 r+s#/DP7?xD~D:XD:W¸D3:;D:WL^_<2X!w:XD:p;E:W>D2_<2F82 I9 J ++ SEND-FILE CANCELLED ++$: 0I++ xX9H0IH_9*F3#"F3! 4~0INAK0I received not ACK - 0I ++ TIMEOUT - no ACK - F899ʤ9: ͪW1\͏<ҫ9><͏<Ҹ9>B2 2W:WRo60I =++ File Cancelled ++ =: : : : > :>*D3J"D3* #" }\bk #~?ʘ: 6: ):y ʞ::W‘:!9Z:Z‘:: ʑ:P0IFile exists. Erase? (Y/N): ͩHY7͞GÑ:\P 7ͪ:7ͪ:0I++ Null filename ++ KP7?0I++ ERROR: Directory Full ++7#P*}" !Y {Jկ2W: #:͹C!"W>2W:` 2W:X!9"X"E:WOE?ͿW> \Fh?x?I?Ͷ?͕W*XͫG͹GGQ@?5L5G:2 š?:ʒ?xGI@ @*Xp#"XxH H!X4~Զ?:XG>4G??~# ?>.~?H?͞G!X"X2Ẍ́J!W:WrF>  !W:?:@x:&@x:@&@ rF:Ẅ́J>  &@  :+ \`@:`@!X~6: u@7?67ɸ͑@G7xͦ#?#>  7xͶHGEZ??@)B~rA#~wA##~}A#~A#~6B#~A@*X~0I Keystrings: ͺ#0I Terminal $A      I0HI0I: AI͞G ,I0ICTL-@HAI>2WAI~ʁI:WWI: }I~=lI lI:. ĈI|I~H }I }I #DI#2W* #F#͟I$HÔI~#HàI~==!AH+~#)!H>:H#I~ >.H~# HI͞G ~# HI##I H I͚WJ<$J$͔IH͞G$>2W: >è90I =++ Exit to system ++ :Y_1!P:W!h*Y G:*\~#{Jq5x4:T]=‘J* Z!\2X>J##" Z:W2WJx2X ~ J#Jx2X4VJ͌VͶH2XɅo$K!KxOy# xN0IFile open: * H: 4O0I (H0IH)0I records Send time: !O7P^#V* ?Pi`H0I mins, !O7P~SPͷW{O&H0I secs at :O͞G6ICTL-C cancels  0`@J0(   *Y!yg)ҒP>g>!o†Pr$s%# |P*WO*Y ~W$^"WP\YQQ"X/Q"X2X=PgoDQQ:XyQory for MEX! o& )U:W*X8U*XZUO"*XiU"H3"X" " ZUPUx2X2WiU:# G:X}$.#4VګU>"xV fV"ʫUͯU UYString too long.p/U^_V@4a4@_VRUNUTV/O4UVxGG Ux> > > > 0:?0A[?GJ4V44V:W7* Z~ 7?͌V4V:W7* Z~fVV4fVͶH͌V44V4>=GfV4͌VͶH!W~75* Z~#" ZͪV|}ͱV:  ʼV-VVV͌VIVV4IV͌VV_ySPV$V# ͶH`K6# 6 #K6#K4VͪK#&K:5K̓VAHK@͌V:PK͌V:0OxGMKzK.ytK jKzK͢K*ʒK?‰K zKÛK>? ”K͢K›K̓VҫK~., :=ȷ!lZ{J2|2h=!A2SM2{M!]:e K 6?#K2MP!"X: 2YLP\_I\!\~7͂`#\LQ<Q=!<)!*XDQy)Q"X QQgo\Q] Qy!"#$ɯ2YG:9Z2Z2 ZQO*Z"]XXRQ6SQQ: Z!9 HßQXRQ6SQ"Z> y29Z#" Z*:X#":X2W2W:W RR8ZM!9Z~#"Z>9Z2 ZPYPP7:WYP!T ~w2W2W2W!Z8ZNkR"7?:Y/2Y>"ͿRR{7?:W>{RV`OҢRR:`>2WkRR}£R~#2W~#fo"2X2X!WW5NHSͪW7̹G7?ͫGĹG2Wɷ|g}o>2Wɯ2W[MEX] ͞G P}0P_.P!~w+ M M*L:\JM=_P@2SM2{M0IDrive , User :[)!H͞Gk free on drive $&N͹G NMMMNM ڈMG~#4MH5ÈMpxH#ÈM#~ڈM+6 MÈM#FʃMMMM H>H͙GÃMG͙GxʈMHNÈM6 ͞GF#6#w#,N~TNͶHGͶHMN#7N#NN7#P2h:WžN>2W!\ Z N:\2,Z! Z\ NPN!,Z\ NP! Z\ NP<7N2W=Ɓo&-Z N] N2h2|~ R?!9Zq#R ~# R 7?,R*Z:9ZOR ! :Y: aS!>   {J2}Y2~Y2W!   {J*"G"G"G"G"Gɯ2A[29Z>28Z!:Z"ŹW::ʬS2X:6XS*X" S:8 !+SPT"bXxS 6 #S*) "XT"X"X6* "X*6 "WT"W:/ 'T:o !SP'T6#"X!$#"X:% T"X6:& T"X6#6 !T"Y* iU" :$ T"Xz2X!" ~+/1]yJ>.͂`7AI?U>02Xi^!\G!D[" Z:A[==2WJ2[:C[2X:B[D]> !`AIaS̀G :L^:L^2X_^¦]!B[~#͞Dš]Ñ]:XBʳ]>͞D:X]3;L^.͂`R>7UL^> U!8`AIaS:;L^2 >2X>.͂`_.L^!B[D)^w#^x2A[^^x2A[^>!A^^);R>7ͫGĩH!O`AIP>͂`Û_>2 >.͂`2 :X<:x^>02X_ʗ^{^G6R8>/͂`{^C{2X!B[_2X>2 _ʸ^w#ì^2 K_^:XO:X^x2A[:X6R8>/͂`{^L^>.͂`{^!A[2X2 "X:X<: _>02X*XF#>ͬ_:X`ͬ_>2 ~` O_:X~O_G_G_O_>ͬ_~@ͬ_#'_2 >ͬ_{ n_>ͬ_{@ͬ_%_Ž_zv_ s_>ͬ_q_./ʢ_v_*XI?G,9R8 ___ʛ_____z__͂`k`k`_ʛ__`2X`_`zW{_z = Begin CIS Download = Begin CIS Upload = Aborting CIS transfer 5}`L5=C^= 5ʔ`C^È`4%A     &  &A     '  'A