wht@n4hgf.uucp (Warren Tucker) (01/06/91)
Submitted-by: wht@n4hgf.uucp (Warren Tucker) Posting-number: Volume 16, Issue 55 Archive-name: ecu3/part31 ---- Cut Here and feed the following to sh ---- #!/bin/sh # This is part 31 of ecu3 if touch 2>&1 | fgrep 'amc' > /dev/null then TOUCH=touch else TOUCH=true fi # ============= ckermit/ckermit.03 ============== if test ! -d 'ckermit'; then echo 'x - creating directory ckermit' mkdir 'ckermit' fi echo 'x - extracting ckermit/ckermit.03 (Text)' sed 's/^X//' << 'SHAR_EOF' > 'ckermit/ckermit.03' && X#!/bin/sh X# this is ckermit.03 (part 3 of ckermit-4E-X286) X# do not concatenate these parts, unpack them in order with /bin/sh X# file ckermit continued X# Xif test ! -r _shar_seq_.tmp; then X echo 'Please unpack part 1 first!' X exit 1 Xfi X(read Scheck X if test "$Scheck" != 3; then X echo Please unpack part "$Scheck" next! X exit 1 X else X exit 0 X fi X) < _shar_seq_.tmp || exit 1 Xif test ! -f _shar_wnt_.tmp; then X echo 'x - still skipping ckermit' Xelse Xecho 'x - continuing file ckermit' Xsed 's/^X//' << 'SHAR_EOF' >> '_shar_tmp_.tmp' && XXMFS/FB7%\+=DL@4G[G"R?]5K#0=OM8=)*PUO\6CR_W27>U=&E1FP,EBP=8B]M XXM<-'$C0*\I=STVZOK^1<VK=WMP1\:YQ`00=_Y==.Y2YB>7#Y.4`1I7+Y]W!ZK XXMZBA#!-]G(-\L"SDN"SD9ZP2NY*<+1Q&I31$_ZZ<2#9,["=R0,Z4BTLEKF],, XXMOJX9G0<($09X,#ICD#;9S+:O#0!,0+_L(M4D'1E6_2$+H2]:;;WHW16]^<CW XXM;<C"RRXJ!.-TH!;G:V/86Q/%,R-=0HT+X1^Y+`=LT$X@4`=U,`9<(P),X`+S XXM)`+L&RYI,!&0'`3L=KP*\>++DA!U:CRQ_&'E"<]N/<5<UY@H^ZI;H.<=VUA= XXM``)6.^@SOAQ:,:M^3@>]%N>272'[LQ6[8BDH:C^-M!%S\$+E=<HI2F-5K39` XXM(:,`@-:!L>C#$=@5KDI5LHO\^EICT-MLU+AN8-=48,BO&C.$FJFU"Y]J\9D0 XXM"@)%\`1>#*U6=A'A@A0M0`9(N16#41A+X.JO6F]B<!-K8-=,\%HAE#-J4>NZ XXMW$BL^QAX4$YB`!)^(.P7WL0`DL?7+NO3A,3*5`:-Z@=)B\X/!+@@X`>>/>]` XXMX0>S>P(_<`+YKC-"FQ7KZP=;H:*.F^]U9KI+#@!A0!E6-M7]>?`?7>]OL`45 XXM_P9P^C!;,3-W`A%+66_HKA5V'03#H:\*X2&1H19<[N7_3&/\JD:#61]^:DOQ XXMW(R4(^Y;`2*U5>K3!!)69O)^,`;[#`#CF>7FJ<X),1HAOUQA/1/OF.B0'1E$ XXM.4T'TQYJWBW?8DKZ:2(LH!936[7U#@/$#)O5J09BEA'+8RT309=+2]\M#%^7 XXMD8VYK,_M8=B/G>AJD:<C_1=S[M7^<09HD!"X:*)>\>DE;Q>SM?)P0)<%46U# XXMY&XM]$(?)H^V7KN-R5A_41,W;LBZC><)@*K'TP*)#J:-)?I;3P=;@#!P6NA) XXM?2_Q0_5R+OF5$O7GJ2"2-AQAH2_Q@]Y$>YM:[Y@7(C$8;02H?44GL+U1M@5S XXMO3Y=4-?M05]*D\-C*]6$;YD>8IX'DM0*P-UKM!P_.UL]^T2-9#E>H3/U)NJ\ XXM9N"%G1LP:JD%`2#+7V<;H1;D#Q@S;,@H8*$4P<Y&Y"&[.R7G6!4Z'FDUP3M8 XXMHO>MM"M("9]R4!=_H0!*<XY5H>.15A.\@R6FOBL:@2#5?_AW05#$7QL=`=>Y XXM"ADQ``+*#QDRT/QV+9$Q0)(@0>Q.H3/GND)`)M[7;M`JT&N6H0#\[OP@8-BQ XXM=*[)>/]@_3HR0)(@T4CX"JU-;`::WDJ[<D@QD-@*`/.\HQ4[H!&Y\3HRD-A< XXML=CK^SHQD-C&DQ&\@R5V<2D>34H)DVTKB["5&6[F"<R:3`=&_Q=0\9@@_2XC XXMG_5'#9];4<2^>(Y5,<>4"];L8FJZ[1C^W/[PN17<'^33W08),^NS^C9K;8F: XXM/QSX:C\BP3P;,5N[F3:^S[,^"[238]20H1:@O2OI7N2S"E]WL-:66!-%5+OX XXMNKP;4<J:#@*[.3$3D29J@=:*;MU=LBOIWAY(P,N)+2&[^12BR<)./UL',2+N XXM8RX``MJ[$D([D/<%?0(0G6O]+NSFJDV*[J>[^10.B=$IK)0;<]TGP5[/!5Z4 XXM'AGXJO&>UB$=)\<B"Q0Q`!0RD.P@,`.0G,*1$0.)?2B!D:Z?OG`V:5SLB,B> XXMUB'+)>LC.APR,/$SH&MC0),@`1<RH19I<P:6X?ONA2[`\<N(7)Y!#/AGDF/3 XXM1!-V/:&8"A'<'^33O=[9/AF5$?<T/!PR,/$S@-&YMD.M%.D$K1Y`<0?*A!%G XXMT-,;4<KZ/.,GT-F]UNX%@MKY;-`7D6,GXN]T$<3ON"M!-+:=3?L7D6,GDO?- XXM<0(\.SFZW6OF`N`@/@?^8=,[8-`L$T(/T6N[$D1;CL2<7>%JP3(AE"`@$:M_ XXML6-5\5H+`M8L4[D[SJI#WQ<C2NH%@MKY;-!LZ^]A[?WO>!$YUM^)76;D>258 XXMZ4,Z,XAJL4I":^$U,01K;`371I[9PC()C5\[8-!@JTQYT&N[$D3+VQRQ=!$Y XXMUM^0;%FS"K;*E`=%O16&ELIW(CS2W27K3<Q@JTQNVQ%A,/0G<`?*A!%G0.H& XXM71"]!LTGL"5FX.\%@MKYG"9F8-=`#-9;8@9`@;[^KR\=21>GJ!9=H16H2XVG XXMI.'ZTI%U3NOP2DIV#<1@K;D%4@:LU-ET<8K51?_SIC/%@[[^KR\=21?,@<2= XXM3?LPRA&[4D%:_[KZ0MC0>`*X;,JD7B"HG<\&71#^SDFV]O]SW+M8(MV83^GW XXMLA&EG`=1H1:3HVY;D>0^I#.&KC/L8G`):]=HG1"XK,M;8@:DON5_L6-,81EJ XXM(3-UH2_.`^(:@U_V(]F-4DZ;#W"?Q1(6.?3[8<C'S^D2L=:6J/G#@:_D7A/. XXMPSHH^F8!(CY=7F*E7BIJ<=D@P/U]K>Z'KA#315Z8NA,@T4CUQOTV`2(881]( XXMKA46^Q*5&6[8#Y];867OZ<W!C!!&_Q=0\9@@_2ZR7M#'S^G4V._/D^T^U,)( XXM]O&[^12B>=D&?M'W7=`G`-&7C;D-'6>OI19'#9]*K=NI/3G!@R;U-D.^Y2W* XXME.,&;M!X4-<$,P2XA8A7`#'H,D#>1&12RZ>[J2E1W1QJ>P)CD/YL#<?<W,*; XXM329&C8\`,$``DHNICB6VABX):QM+>ROR"Q46@TRE3*A)YDU$5IZ;C8\`@$RE XXMK.EL],+LC\J66!.^;,@AY!_ZW?6RNF,0P2[#3-CCYKH;XL\PROU!/MV$:S@9 XXM@RXE"6WT>]'[@=>6S>E[[:5]#:T;G1#D31>(CR;"B]L#)1#JPZUCN6_2`P7* XXMY$HA!`!)8"DOU,+#7#PPJK9JG_6K.N]LM*F2IK)8<@(A<`)!@TRE#!+`K,D) XXML9L3,Q'EB=:*;MU=LBO7O@,^LE&/]W6OG"!&X;,H*(-U=8ALYUM^Y7?S8 XXMR,)./UOO:<C0[:6'#&%H#@#(5,INNQ$18VN3SB[`K,D)D2WNTR@]K61#!DX` XXM@$RE#!(8SA8:/@8<CB9D3:R+[#P@KC$I3064&QG<;^"/XL^F[J&'9-?<;^`F XXM:>L*`)_K34U>,1S$[A0ZTQ>46P9K;8E&O.765"H,Z48.(3S98B&SM90!H^&; XXMDC`3*B&[^12BF0>XRXV`A@)/D`(BH`*MH`*NH`+;H`)%L`*?L`)-P`)%T`+N XXMT`+OT`(%X`)*X`*%X`*QX`+48+4OD`8O$`LO0`\O8`,PX`<P<`PP\``Q4`4Q XXMP`DQP`LQ\`TQ8`(R<`(RL`NQ,0,Y,`,30`.70`/=0`,C4`-H4`.44`.54`/= XXM4`,G8`-S8`.+8`.,L%,V\`\V0`0W\`8W0`LWP`\W,`,XT`<X4`PXH``Y<`4Y XXMP`DY0`TY4`TYT`$Z@`8Z,`LZH`\Z8`,[X`2I?B:Y\1?45NIFYA0GH5:6H>,G XXMI"_ZGQ"F%@8JBR7HO]:6>#``0`2ZJR\G<+(F<@)PO6/?TFN[$D0Y?F6(;$IF XXML_9"_1!FT&N[$D2WA9;2W25%H2X3H1'!+Q8ZLS[,41\)`\=C\!8`$@3)G`1) XXM``*[.3'QN17+V?")1L]Z_-_H<@(G:R+^7B"HG<^A@0,*@`).7>QLT`)<L*Y4 XXMF<)*F1M@(18MAA`=`A'%TTCX:M=#P!Q%._.SFKEN\`*9BQ6]%F\G8"`!4]<` XXM8""UD2`@D;EN\`*9BQ4)`\=C\!8`$@3)G`1)``*[.3'QN15+;S^RJO&1V[FY XXM.V.-P;B3J4P6"0"X54?:A%QV[3NUD2!Z&[FEHTWT@;S*N)`>-[4``,?NX]6D XXM5)X\Z[-`.SF,VQRR:M>^4QL)`A*B",EV3VNY!J.,JTOPB5FXQ9Z-#0+<KQ;G XXM6!61P2XG$&V]EK`[8-"YIM9T<8ILE&O<;S^7?<C9`LF&#:-/JTU^>LC90K@3 XXM3Y/FF;!M<.Q.C"5HF6O%(V1K=):C:(DU(22R6O).(;,:W\(%E#98DBT2T;'5 XXM2[56.SGUIDUY,!&.?,C9T@8ID#"SCI9%5+OX:C]WX!2UH]2*1L0)<M'[T1RR XXM:IX)^Z+-(;\>+Q=`H?]5EA`)VP;'[L184KU4ZP*NKDUY,!&/")\KDFM"JTI` XXM;NDO9)[R^\26B.P3#[$)`A(G:R()D\)*F1L):QLL++\Y:Q^7W6)/O4Z2:M=. XXML&OE5#P',2(V*?65:1M%!`"-5,3E5#SR"Q'ZBB8G4$!I@R79(A$F@L/^G+!M XXM8-=-4))W3`=9_A)[<14D1C$UD;#KO>5(?`+:E`<3T6N2O6!((>L%C=8)D;"V XXMT>_";J[:5!$T?"FYD;#K3?N73AF6`6?A?EMH*=U=T@8)`P7*E+?V(ZO_C2XA XXMY!_ZW6)/O4[8&&_.`^(:HQ6#HBWVSQ76"12TO`9N@^_$;"`!8]>^4QL)`A(& XXM$C`)HVF.'O/Z4ME!/!S2W26$6R"HG<\&#=U>Z@-U[2MB09*MXQ:1;C^1J3DG XXM76\SY%O>HDS6C5TGH5:6$1GDCRZ3D1<NYK-`.SE/*Y/EQ,+6JQ7Z'10@\;0R XXM.08T>>::KS-D3:R"&NJYIM;J;_6M4^>H[&*=L[0\$=HSK1H_<;4Q\!-76P,_ XXM`0(SH+5`80-:"Q18J[5`$0,XH+5`(0,TH+69@0-:"Q0Y8`-:FS!3T,1F`!*@ XXMO2O7KO$!TN$+Y]V#DFUDT`)/8`8M``77G1`H$`3)G`1)``*[.3%E\(A0<-UT XXMT`+5OBDO@P(QH+5B#\T[;V$```4T@4&PBDFVLT8Y@#70O/./"`4TT0)#0,]Z XXM#*M!D,Q)D`0@L)L34P86EM%W<ADM\`1FT`)0<-T)@0)!D,Q)D`0@L)L34P:/ XXM&&]4$%!H@@(Y@#5_06V74G".8F$,G_4R.08T>>8UL?O9,@9O`2"ZB%\),P5- XXM;`8@`=J[<NT:+](=OG#>/2C91@8M\`1FT`)0<-T)@0)!D,Q)D`0@L)L34P:/ XXM"`7730<M4.V;\C(HD+5:2\P[;V$```4T@4&PBDFVLT8Y@#70O/./"`4TT0)# XXM0,]Z#*M!D,Q)D`0@L)L34P86EM%W<ADM\`1FT`)0<-T)@0)!D,Q)D`0@L)L3 XXM4P:/&&]4$%!H@@(Y@#5_06V74G".8F$,G_4R.08T>>8UL?O9,@9O`2"ZB%\) XXM,Z$2LIM/(9IY@+O<2)4D'S&7#0+<W]?FA%N(:!<E#S$HI&1#!DX)0_(1<]D@ XXMP/U]O;R$W,T3Z4HUX:VLFC`D'S&7#0+<W]?V(]GN`VY"QDXN++-U;LB"?4C? XXMFC`D'S&7#0+<W]?V(Q%9_]C+`1PX5K08DA"2[3[9<M$9_?`&;C^6S>E4OF() XXMQRYV<2D>3=%>4@<HJ@!W(2Z`G]><OM=>VM<)0_("9\B7#0+<W]?V(Q%9_]C! XXMLR[!GT(1HS)BEC`D+W"&?-D@P/U];3\T;)Z"?4C?&FX@H&Y;D>0^%.L`0/(" XXM9\B7#0+<W]?V@V1GAFMK_B6:[]_07#SUG]O%/T0*$#QH`J,R.08T>>8U(:MR XXMD#"ZDY7TH2]Y@+O<2)4^S>``0.&[4IZQC2ZM_6CO+;P`0.&[4I[=2[]2QM\+ XXM+KP`0.&[4I[\';3T*V4@OCD,#@`4OBMUGM-!2[]2MI@D`_SE%-+9LA`-T1'0 XXM[(KSDCDM2[XU?D;'9-O-"P(U;A_B@9@L((I`D1<NYK-`^S1?J4RN=.V*P@3O XXM$B&BZ#;J$141\B9`D;`1`@#11AN<+A%'><C9T@;'[L1:$2&'"0)"8!<S[28! XXML=/*E+<1`@#:4C</%A"T[$<J(V8`8"`?%Q_/R9E'F;LSUN*ZP;EF`!0`L&/? XXM`A0``!9B$2$`D+EN\`*9BQ4`8"`?AS*;*[G:A%P1XGCS8B`!HQ;X[1_Z;4H] XXMF\LE%B'W.2T7`HV:MF"=!@7*Y$K7'B'M<4&FJC[%6DK4^T&7VQ7\,N1!0\54 XXM$%`]$B'"6@(Q$`-D4`(Y$!`JD!9?21,8%"'"6@(Q$`-D4`(YL);+*@3L%3%# XXM`%X14@(V$)Y0\(]#0,]ZK`,E$`,Q0`8ED`-KN:QP//<1,JPE8`/A"077G1!3 XXM<">7$2$E$`,Q0`8ED`-KN:Q-P.(@H#YF/A$14@(V$)Y0<-T)D6V%TQXE$`,Q XXM0`8ED`-KN:PX<!<M(`1*DV!JY1IP70)C<`)I\977G1#5OBEWH0,E$`,Q$!`J XXMH!J.AP-KB0(Y0`-!(ZSLJC[J`1P)IE:N$2$&70)C<`)I`0+5OBDOPP1O(3IN XXM$@,Q0`8ED`/SPL]D`MJ[<NTT+9$@0.&1'B'M01)ND&,GXG@M@+5[PC(AE&PE XXMT`)8RSWM`<>WC2XU?D:F*I4`8"`?1\42&:(C&B&/"@!@JTQ%5@(M@+5[PK:. XXMUP)8RSWM`077G1`U?D;+"@`&\G%4+)$@0%^.*RBZ\48ET`)8NR=;DITET`)8 XXMRSWMH37U7>-G-*P`8"`?1\42*4`;4<JN"4=8X7@M@+5[\D8ET`)8RSWWG=/8 XXM6.-GU!X`8"`?]]H2"0)"D`?4.`5IH`?N[B8!`10NJ6AE&1D2*4`;41D+46(1 XXM`@#(M37&04#I"BH(?3I'"0(N&?U+Q)9IX6!VK,@9`>)"-#FCNIX=&2$E0%[K XXM>2L=/[9+G]T14@+DM9X\Z[-`.SE/RRX@$"$E0%[KR;,^"[23\[1H$B$E0%[K XXM24T-G_ENL2NT&R'W^1=CL)YJE15-$V4HP;0V$=JF&B$E0%[KJ58U>>9&!!*T XXM'2$E0%YN4@+KV;VD.;T$&R'WF>"!\8CWN5B*/&]RVUW/!5Z.O.69WQX1\HJ+ XXM0Y:8CXVT&R$`D`<3`0);4`)C$*<`8"#KB0,O,RT)T>VN@2["&B$`D`<3`0); XXM4`)C$*<`8"`S3C#L6Q-+Z64/2T7TK,?9/:SL47$^"[23\[3LXAP:ZV(^"[23 XXM\[1H,FX+]YXY/40V@H_L<2L=/[9+G]W.47$^"[23\[3LTAZFZ6(^"[23\[1H XXMXARFE,MPD/ENL2NP^A?4AJW.84I8L4[/BA),:Q.A+:SLH58U>>9&!!+NK15F XXM30>MVA[BH3+*-)P=$0;LH3(+H0?.X1;^@1#L(2#_Z!S6C8RSQ1Y_T6G.83AT XXMP`:SZQRF)`:SVQ[L8=MQ8)<[:B+!RAXR1`>SZQPV82%VR1[ZV/!UD"EPX,QU XXMP!YS<`?.7`?L<0<+H0>OI#+*-)P=$0;L(4,+H0?.81-L`1?.`3-<1A.*`S-< XXM1A-W9$J=UAZF20=L,+O.H1"S^ZCL8=NSVQ[L8=MQ8)<[:B+!RAXR1`>SZQPV XXM82%V:9H-O_L[:A?9S1[ZV/!UD"EPX,QUP!YS<`?.7`?L<0<+H0>OI!HRM!!Z XXM4+TE<SS9"P`Q``"]HEL[]BT`P+G9B<NF#`"=;10C"@!WH$P849BAOR5T>]T5 XXMP5N=2IJ=`C)DL##TK,>[01,8-#UW<ADML"5T>]T5P1:[TB,`8"`?E[EN\`*9 XXMBQ4`<"7?,A`6LYP`T+D`8"`?E[E8`0"9NR(7D6,G`@`L$T+)!K;*5&1L"P#: XXM4C>T[$<&\G$/%A`J(V9PA!5PM"(IM$(`@%Q;`P#A+A$+H0=@@C"6-:NYUEB] XXM!LUH7=;.ZA6+#CD201.0G,(US,O&4V6C3LPG`-&YAOQE4-20;AF1<=J0G$(K XXM1&E=/9&NE-&PIK<>1B30QFRY]K0`$`,"40,`X`2I?B:Y\1?4-AQ7\K$Z?B>7 XXM@2ZXFE@`@`590`16'`014F0[]BW'-),U$\W)G`1)\)_QN17+V?")1L]Z+!`2 XXM:=U=LBLA1!)ND&,G`@#,P4K@'3+-`QF=;136:Q0%O93^DQK.$^Y4G@9Z$!DH XXM,!K0C`-!\Y.HS!Q%._.1,1KQA@-J\0,@DNCEY#R@O2LAI!:9ZP8OD+E8(1`& XXM\G'&H60F8A0%O90)2[A)YDTP,Q,2;B`?9R`?5V#<[P,`H&G3W0:X9N!![N@` XXM$`,P``!-P.)O426OGC83`9#6C5T5$>X2L1!Z`"8`D!KA+A$+H0?QB5E)H]\M XXM]M3K-$3SB,K,4;0S'QFC$6\XH!90H$RNM+(L?!`=OG#>#0!0H$RNM+(LW",= XXMOG#>+1`QH%MP/`9O`2!!D,Q)D`3_&9];86HAY!_TBBLY``,`T`0L_A954B:[ XXM6)Y+[]SUQEOC5C+'$Q6=2IHOX]UL%,L(-R\Q``!P/`9O`2!!D,Q)D`3_&9]; XXMP5NH>B=QO_0```.^(A8DV3K6;9WSK$SU_"C0?!`=OG#>#0`P``!P/`9O`2!! XXMD,Q)D`3_&9]*W>$+!S(UL?0`4`,`X)(A9&ILL2OKHFV[F10*,`7J<6/63L1V XXMZ@9&WT@>Q](*I_7S"B!"JQ990&OAGQ!H#5OOTFM7\K&18>EU@"YG.1Q%K!9" XXML+0\$=H:CY-ALAB73AF6`6=/*Y,8.B^B&"'WB1),JQ83RLBUC"YY@+O<"`#" XXM(`5))Q#$(`5+)Q#&(`5')Q#((`7CT0Q2D'0"(0U2<'0"H0U2,![@(`5))Q#E XXM(`5+)Q!"UPY20'0"L0]2P(`"D0!3,(0"<0%3$(0"\0%3\(,"\0)30'<"$1XW XXM,`7CP0-3D'0"L73(#'0"H013X(`"T013<'<"$053<*54,`7G<'0`D`53,(0" XXMX053\(,"`71B,`5))Q!L,`7C00=3D'0"L0=3,!Z`H#7B40A34!0"H0A3,!Z/ XXM\&KB,0E34%H`0'29,`7CT0E3D'0"`0I3,!ZH,`5))Q"M,`7C\48I\UIZ1(RO XXM)D)ZZR::S_-2S^)O424(.:%A'03)G`1)T&((T2$0\3B(Z(J=J3[<>B]*-F1B XXM2TH`@`5:,`170`018A24VY1D<CS#P;KM2#%&SR['S^G4.`:]<0(^.@>]X1C^ XXM?">5FT!0$#]S`*$1$B9?&3]ST.M+>=E)YDU$1L50$#]S`*$1PAX@8RD0*AX4 XXMOBOE>=F']*W+2\A@0MK<>B]*-F1B:]1D(I-C0),_F]IO5!Z5N&\+Q\*7W?)% XXM0=K<VI37"AK%,VPF$6XYCMXFD=)YT:(=FNPYGF3>1&2ME$GBH3[<VI1D(I-C XXM0),_F]IO1-K<&AFRNA7V2LP%E#:3;O"*`P"ZDY7TH2]Y@+O<F)!CU,0UF=J3 XXMLZ=UH&3S(@=2DA[DT0,^X!Q`,05IH`?N[B;HR!Y;\`1+H"2JL04IY$QDH"2J XXML04FP2\D%!5*DM%EA"X`X$%M+A.`L9E"@D3YBOA*BR)W(IG#X4%2&2$E@([E XXM(8H14@+HZ$%M+A.`L9E"@D3YBOA*6Q-O(`9J@+(>-!XIO#;_!JNB"*XO;?/A XXM/BB?;`3FU$G4=$A`X<EJS,928#^2M7#`K,D)P5MYH<9L+`3FU$G4I+0?B<9J XXMS,9JSL(8+IG#(1.5<1D1HAH641"%0A9JGC5W(IG#(1.5<1F*XCPT'"$``+;* XXM5&1LBT>YD^HI#63B?>U>V5W/!5Z+0Y:8/T2J@0-W`:K=+1/>_CY>(`3PF#^> XXMA"Y"H(^S119&`(_YXTGH(I&ZX052`(_JTUCHHAI;D`0-81E1$>@`0`1%(`15 XXM<`0Q[^.JPVZ;,J-N.09JT0.O"`!$4`1"4`5'$/,^KCKLMBEJL06B&*>45@1" XXM4`5'$/,^KCKLMBEJL06BJ".O"`!$4`1"4`5'$/,^KCKLMBDSV@.O"`!$4`1" XXM4`5'$/,^KCKLMBDSN@6B&*<`0`1%(`15<`0Q[^.JPVZ;,J-;((HZ\HK$^)V] XXMJ?'MJ/'(W;R;Z8KS(I(M4./V(3[H(ESLMBDSZB;D!9%N0EYJ(9(M4./V(3[H XXM(ESLMBEJL06B&*<"(9(M4./V(3[H(ESLMBEJL06B&.@E0%YJ(9(M4./V(3[H XXM(ESLMBDS&B$E0%YJ(9(M4./V(3[H(ESLMBDS"I$BV0(U;A_B@R["Q6Z;,J/Q XXM&"$E0%X(^9V]J?'MJ/$1(;R;Z8KDI1@=YI(AU!1>+6%3DP./*`,Y0!JF06`" XXM@0=C:@<"$>$*XZD+!ZILM*D,XJYT@?AH@JK_ZJ_$7*T``"(BHF2/Z8S/9:=N XXM8/2-A*]A;7`)*Q`B\`46T:(LTS2Z+[*CV*(LTS2Z+[*E91$MRC)-H_LB.XHM XXMRC)-H_LB.XHMRC)-H_LBNR?Q\9R0?0:!FA%6$1@Y:Q]AH+)8@JH*\Q*6_O^` XXM`:\LC*H*,]//4X^M8ZM[$A_/"3.NT;A*F1N<7>$33ZN+KC.H.CTGI"^Z&D+^ XXMH=\%LI`RTXP6T:(LTS2Z+[)[$A_/"=EG$*@9816!D;/V$08JBR75^A*6_O^` XXM`:\L7*T`$!_/"=EG$*@9816!D;/V$08JBR7N^A*6CBZD%-;N"@#Q\9R0?0:! XXMFA%6$1@Y:Q]AH+)8TJDDL6@^"[23\[39XCY>34HP8^GO@RW:\@);+1#1!@#Q XXM\9R0?0:!FA%6$1@Y6YC^<8WZ@A),"P`@<NF481EPAA),:Q.A#0#Q\9R0?0:! XXMFA%6$1@Y6YC^<8TQ39J=LAB73AF6`6?=2YJ=XM,,#@#Q\9R0?0:!FA%6$1@Y XXM6YC^<8WZ@K<?`0#Q\9S6/8U%%A_/"=EG$*@(0=#,<M!\O=!%O14VC!C\W!$/ XXM$2%&.3\=/RB)D9'<6`2?QHL`L'LZ%^Z(-*0K31)/O4X#T1O&X<3&H61#!DX` XXML#[,`0"G!&RA8RUV\UH`8,,`(+P`P*<583'(7S&<+A'3,SUN;B'3DU@<-SVO XXM)5YCH3)B-CUWPA8:/@9[<B?(!0`HP;0`T%UKL##@91S49,K&,1F@"P"AOR5T XXM>]T5L9P-7P8+0\]Z#`#^`Q9BL3`%4>Q)@5MUI$W(!0#HN\UR#`!"^Q*5V0;' XXM[L0IS5N=2IJ=`C)DL##TK,>[01,8M!O*E+?--MFTH<CS1ANO!4[3DU@RR2`8 XXM?ADML"5T>]T5$4+^H=]&$5`],A"]81R$#"9"QDX`8,,`P!P444-B9A0C"@!G XXM9ARVW;RRO1O7?2'3H^!O!.)"]#2[H4RN=.T`D&/]O2?0[:4^$"V@@M"GPR*A XXMLR&/Y@((?3HL$CH;\F@`$$NALR&/!@"K(`:2)Q"M(`8J`'RO(`;C,0MB('BU XXM(`9+)Q"[(`9')Q##(`9$)Q#'(`8H(![,(`85*!#6(`97N@UB,($"`0YB`($" XXM<0YBX(`"L0YBP(`"`0]B\(,"00]BX(0"D0]B<())MP]B<((",0!CD(<"H0!C XXMH'=)QP!C0%E".`9Z)Q`8,`9T)Q`?,`:;"``C4&?B@0)CL'L"X0)CT'P"D0-C XXMP'X"H7<^,`9WEW1#,`9))Q!/,`9')Q!5,`9")Q!<,`9$EW1J,`;A(1![,`9` XXM)Q"`,`9A(Q"-,`97>@EC,($"(0ICT&H"<0ICL(D`0`MCP(!))PQC,(1)!PUC XXM$(1)APUC<(0"\0UCH(0"80YU)A[N,`9Y*!#T,`:2)Q#Y,`9W)Q#_,`8_F'0/ XXM0`:[)Q`80`9TEW1.F$Y))Q`D0`9+)Q`K0`9')Q`U0`9")Q`Z0`9$)Q`_0`:M XXM)A!%0`8_*!!*0`9!*!`5Z`0N(1!80`9))Q!@0`9+)Q!H0`9')Q!"Q[3C`0AD XXMD'0"(8HLH)(I'!DK#,TV3#`AY!_Z[;XB1$+]1C!T$-#4E!>6".6JPV[ZPL(F XXMH17Z33E2FM)Y88E2D1Z=JBW49#C3V9H`P/T&[FD=HM1*JQ(L`;F&ELH]QOT& XXM[FD=(@>A6;G.$T+^0:^/3&FVW;P@4./V,031Y!*9T[+D6^/V,031%!!O(V>( XXMH1990&O:%&7%@]:P]2XX3"(4<:4"$9C[DQL\N\K,1N&[4IX&)V3LE.PEFC:3 XXM;O"*`\3?O^;F%$UAD@6T%OY1C=?>_X[/&R9P?-OH$M)W$#\_QC]J\0-0<-VP XXM1;]T$3\_QC]J\0-:4]\A?0?Q\V/\HQ8BF=-!2[]T$3\_QC\(F9_`7TXAG2T+ XXMT1`=`<VN2%X$XP2ICB7%TTCR^TD),T#>1&0O$)--7).I_489^99-$-II`R#% XXMTTCKPQP,HA990&O:%&7%@]:P]2XX3"(4<:5ID06TIDU15CQH#5OO@L,D0A$$ XXM0^&[4IZ7?4C?FNPEFC:3;O`K<B>5ZSS',QRLVXX48_3L$M>O=0)&0;EE4*VX XXM*P,+)[1&0;E-22;',QRLVXX48_3L$M>O=0*JH3[<VI1D(I-C0),_F]H%$2$" XXM0>&[4IZ7?4C?"CYZJ5A%Y$G9NYXU+B0004K0&FD:D1"\HQ41(A`U+B1,D3NN XXMI%A%Y$G9JQ8V7&#<;^`"`<3`43S"&R990&OA[Q=-;`8@L1S`@9;%TTC"^R6= XXM&9C[DQM'KC-)_N;B0>&[LN78NQ7>_XZX&FE)#!G)[LE2`)=;4B?Y,::]H@!9 XXM0&O:%&7%@]:P]2XX3"(403#JPZV1P?U];>!AD@6T%OY^T<1F0*@&KO%YS>E4 XXMKA46^TO7"AJXFE@_H.8QV<0UF=J3@Y9[6@=*UID7%"'G*A`4OBODKOD)H:\9 XXM?4+I"3\S+1!0H$RN%$)AD@6T%OY^T<1F0*C6W26[LK*X^EH$H[9JG_7#7#R& XXMELH2$2U@6RUXT0*?LC"[H4RN=.T"H0#WM5R22M,J"9$0>9`0&8\:;Y3QJ/%& XXM"9$'>9#0.*%![./0PQQW@#!J(9*4VY0[&3`(!^6JDXU;D^4$`]U>:N!2]@-J XXM'I--7).I/3EHN:=UH&3S4HS'F(P%LI`R8_/L,LQYY$IJ83'`5#]1;B03*B&[ XXM^12BR8U.#=6>;(DUP<*#"!16(&$P$`.?<;58HS5<@P->\WIM\&HBI+<@\-CA XXMGQ!H#5OO@L,D0A%J\6HBI+<@\-CAGQ!H[1?J$14X3"(4H1990'"F]&]`)MXK XXMBY:Z$P3)G`1)P)EJ\6HBI+<>1B2;1)5.#=7H<A<CQ)Y06Q-OX@*)L1^&O)P- XXMGVCTK,>)'8^P^B8IX`*)L1\%#:/+V?")1L]Z7/MB`>X@H<S%HZT!QP*)`4<Z XXM]M(V'^X@@(FXZD-<`9\;;ZA/XP*)H5A:4]_"^R50WARBZ`(ID!@9#6MZZV%$ XXM0FUV@8T7X493$D+^H=]J\6HBI+>>?&G49A?8R+,^"[23([1J,6TW08V?*='I XXMJO%^M`5"$-S`4>-"`A%3L&(T%J>(H0!D]JI+#P!;(`3!#1PU+B00,04K1F-Q XXMBA@*4(F+YK-`^S1)ID(%`=6ZD1ADIJU+CQ@*H,S#-&B_7!!0S=MD.RB)T1YB XXMCP)ZH!5O`!JX^O!4\BV(0=Q"0.XU46_+;AB(0=Q(8#^X=0:3,?'$A,0G*[*( XXM0=Q3H/&'(IE[DACML<+0;,.(0<7+V?")1L]Z'!%UX=6X"MB&O)P-GVCTK,<N XXMD!B)43262`8^(!!?\`:`\`:<\`:R\`;7\`;H\`;W\`8S``>?7`(,<P(E,`8G XXMH!:)@1AJD1A.#=7E=!<CI!MNHQ[EA#)`<9_3<B%'J1O:4C</%A`J(V8OH4Q^ XXM9-W36&1`(;RX73S'Y,2>;(G(GH@RX`(PT%\Y`!HR@#622&!"(`90``=4,!>K XXMD04.(`4.*!X.D&\G((HGX(`>$P!+)QY4Z3%))QZBR'T]<`4`L'3B(8J[IW,- XXMX(#L1P0.."A4((H.R`(`$`14X(#B$014($#QZ("(X8`^``!KX("#(HH.N`1^ XXM5``.J`(`0`0.^`-2Z8#D(8H.R`(`$`14,`4RX!,QX(!/L`0.*!!!0`540`2B XXMZ(`ZUP`-X(#L)Q`\L`2BV``^<)2(X8!#0`13``(^(!X\D&]-((H-X`/E(8H. XXM."$W,`-:.Q#](<=^=!$$H97'T1GNRC#'$0-:"_II`SO'D;4P`/II`SM"5A%R XXMMCQWPK,`H$UY`#L/DC:HE1(/L9LCPC`@(FIBL2*VEMX'LN$M(`-8&P8`4/X2 XXMD12A-FHK0@4!U2,`X)(A-$(6`@`.EBU%X9)VX<1IH`=@@@MP<(3:T*/A``?( XXM``#I``?J``?K``?L``?(``!W5P]PT&KWT*/Z``?[``?\``?]T*.;&`>M)@!Q XXM(!`$$`<%$`<&$`<'$`<"T7@+$`>MY@!Q(!`0$`<1$`<2$`<3$`?LL81Q<'09 XXM$`?T$``<$`<>$`<A$`<C$`<"P7VPO'0J$`<"X0)Q\`)Q``-Q$`-Q(!"]H@-Q XXM(!`[$`<L$``^$`=`$`=#$`=%$`<"P7U)$`=$QP1QT"M/$`=1$`=4$`=6$`<" XXMT7A:$`<"L05Q(!!<$`==$`=>$`=?$`<"T7AC$`=+UT("X09V%0=S$`=T$`<" XXM<81\$`=$I^\L$`""$`>$$`>%$`>&$`<"P7V-$`=+]PAQ<(22$`>8$`>9$`>: XXM$`<"T7BC$`<"00IQ(!"E$`>F$`>G$`>H$`<"X04B)`>&(`>:(`>N(`?"(`?6 XXM(`?J(`?^(`<2,`<F,--SX`1SP`IQX(`"00MQD'0"T0MQ`($"40QQL'0"T0QQ XXM<'0"H0UQ('0"<0YQ,![N$`=$)Q#Z$`?A$4-`)Q`'(`<5*!`2(`=A(Q`:(`=7 XXMJ@)R,($"P8`Q(`<Y(`=!(`=+(`=10$.O)D)Z"P*/'?X)@=8)D;!M@,,D0A%J XXM\6HBI+<@\-CAGQ!H#5OO@L,D0A%J\6HBI+<@\-CAGQ!H[1?J$14X3"(4H1:O XXM)D)ZZV%$LDE4.4"\Z>-H,$+L";4U\2:HOD?QZ`*)L1^&S!:[@B8LK&AEB2Z_ XXMG"")[28H4MJEXP*)L1\%#:,FP2\D!&3BO;+#U$G49)[RF[-5FQ@9#6MZZ\F7 XXMAEOV,1E!`1)"JQ:O)D)ZZ\F71FUV@8T\Z[-`.SE".Z,24S_>/R6X108YFT'T XXM(Q,ND!@`H(XG2[XQ`V[ZNOGT9C/7#.4!Y0*)`0`#Q)O(JVTC9"&/G!CC!!DU XXM@0+-)P(IX`*)X6.Z$SILP9MZ(/65V08ND!@`H(Y.#=5#!``.$`0`X`!5<+4. XXM:,UW8EP!$:7O!`#-5!!0S2!%\&GC4RJ0LR#CTQSR"Q&W\G%3H!Y1,2CE`P), XXMD`0##@#D$^!.,.!IG!<"3N!4``#DX\E!(`52D`1%(`5$?QA"4`53D`4`0#X@ XXM(`5)X`1'0/1.``),D`0#'CM!D`1,4`3Y-@1!P`1,0/1.P`1),."[)P15,`59 XXM``!$4!CY!@6_,N``D`1.D`14D`1!0`5)X`1'``!"4`53D`5Y$01,P`0@8`1! XXMD`1,4`25IA=9KVAE^<@'D!@1Y.;97(G[%AA`H8@N``/]]1D@,`/1W+P;!@"V XXM8`>MENCHPO>R#R9VLY!*@P)8O]^1#QB-$C3(?V.1#QB-$B&=%?$881\F?P8' XXMT@)*0Q#9,CTGQ&V1#QA>/6[`#@![\.M4T`<`L.R&`0![L.R&T0<1!&MZ"P*/ XXM'?X)@=:P]2XX3"(4H1:O)D)Z"P*/'?X)@=9^H1Y1@<,D0A%J\6HBI+<>1B2; XXM1)5%\.VI++-MKN2W-4+L";4U\28ND!@9[>;9+#Z"$H^)D=%NGLWB(RBZ\6HB XXMI+>>?&G49A?8R+,^"[23([1J,05NGLV7_BJ6LF-LX`*)$4%NGLV7_BJ6LF-L XXMD#"O)D)ZV^9*+DN)$4%NGLW!1A8EP#`E<$=3<"?>]00Y!A9B<:6(2[TH@`(H XXM@`+V;:I(``$0``$0``$0``$0``$0``$0``$0``&$0`B$0`B$0`B$0`B$0`@0 XXM``$0``$0``$0$`B!$`B!$`B!$``!$``!$``!$``!$``!$``!$``!$``!$``! XXM$``!``$0``$0``$0(`B"(`B"(`B"(``"(``"(``"(``"(``"(``"(``"(``" XXM(``"(``"``$0``$0X!R!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$S@`0`NM XXM8`JS4!Y)5QX"$`#.$`L"X0RQ8`!+%SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB! XXM$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB! XXM$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB!$SB"L`?C80VQ$#B!$SB!$SB! XXM$SB!$SB!$SB!$SB!$SB!4Q[8HBTOL-4"(7EZ)WF-)WF-)WF2UWB2UWB2%S@` XXM<`1-0`6!\ZB!<P1-0`7L"@`JP`<TP`>!$SB!`P##<``/T&MZ!P!@(!X@H'?1 XXMDG0`@`L'(`P'``)Z!P!CP1YZ%RU)!P"W<`"W<``@H'<`P$&JH7?1DG0`8`L' XXM8`L'``)Z!P!$%W(@H'<`T`1)!P"O<`"U<``@H'<`,!;LH7?1DG0`0`2Z[&`Z XXMH[4@H+4ZH+4ZH+57FP-:JQ93`"(.Y@94\$)7$!6S7@?]G`93T!$``&!&8-M- XXMH$Q!,&Q-8,I*`")*X"U!T+Q:`P=/8"*^8P=PC#J!%CCD83&\`6-N(&IBH3-L XXM8S$1LB2!$SB!$SB!$SCBL3#2%2U@6RW7DBW;$CBJ(1"&M0*J`0`P@+4S0`,Z XXM=0,XD`-&-01$4`1&```P@+4S0`,Z=0,XD`/!,P;$"0`PP)4P\&<H@/5L0%GV XXM/:P"H;5:J[5:J[5:J[5:J[5:VUG1PNHO`#*6TAOD83%!,`54``!!0`14,&Y3 XXM0`7C1@14D!=30`5Y0014``!-,`54``!-0`14``!0,`54``!00`14``!*,`54 XXM``!'T`14```KH#``<`1-0`5N*2DE``,RX!+P```"X`<&X`<L$``*X`<.X`=H XXM$``2X`<6X`>D$``:X`<>X`?@$``BX`<FX`?DT`\JX`?CX0)^(!`A-QX+(UW1 XXM`K;5@A=%\&E;`0,`,*%<06HIK8Z7_H[.`\U"QDX`H(Z7_HZ272E[XI(A-$(6 XXM<F,KEG!"\BT`D`0O\`2>UB'C`SU=/EO9XCY>#<TT00:8#P!!<*8N'-6JPVZ; XXM,F[?7F>Z#1QL8S%"\(]YE.HIK8YS<HR:#`#J"!>1W2&50M\`,*'L&Q>`WV+0 XXM`@76V-_96)`!(03_2!-D@/D`(`3L%3'9XCY>O:=UH&0!`<?NX]56\4ZX,R6G XXM1!%[,@0=8BG'WM71>Q!^I(Z7_H[9XCZ-`@`3VL)"QDX`D`1^FF3>Q&3?V9N0 XXM?0:!BA"X,R5W(CQ=\14*LA^J0Y*M@VD="0`3VL)+GXWNTRC[`>3.8Q7OA#M3 XXM(ERT-:9@HHXJ(V:CJ;+AEHWNTR@`D`1(E(K[[4-^Y(]DT`(%8?0QN6(TMA^J XXM0Y*M<VUNL`9[(@0=@EREMBQ@$@1G&J@9(5RT-:9@HCZ7;BO/TQQ7_B49'2Y= XXMWK@3N6O#@3$S@1&%>07QE8TTP5Y^-*$M3$I2-J$2LIM/X9``D`1^VDJ[(F7J XXMPZV1D08O4",N:1=.G`9ZD-IOI#[<.K3NTR@`H(Z1SA&(N)39LA`BXL@`D`0$ XXMR1;A7/"<[A7(PVZ_)2&[^10."0""X`>*X`>4X`>NX`>^X`?6X`?@X`?ZX`<, XXM\`<>\`<N\`<Z\`=,\`=<\`=N\`=Z\`>0\`><\`>H\`>Z\`?)\`?9\`?H\`?Y XXM\`<-``@A``@X``A'``A6``AN``A[``B1``B@``BL``B_``C0``CI``CX``@( XX9$`@6$`@E$`@P$`@_$`A-$`AH$`A[$`@)`PB@ XX` XXend XSHAR_EOF Xecho 'File ckermit is complete' && Xecho 'uudecoding file ckermit' && Xuudecode < _shar_tmp_.tmp && rm -f _shar_tmp_.tmp && Xecho 'uncompressing file ckermit' && Xcompress -d < _shar_cmp_.tmp > 'ckermit' && rm -f _shar_cmp_.tmp && Xchmod 0755 ckermit || Xecho 'restore of ckermit failed' XWc_c="`wc -c < 'ckermit'`" Xtest 91761 -eq "$Wc_c" || X echo 'ckermit: original size 91761, current size' "$Wc_c" Xrm -f _shar_wnt_.tmp Xfi Xrm -f _shar_seq_.tmp Xecho You have unpacked the last part Xexit 0 SHAR_EOF $TOUCH -am 1222012790 'ckermit/ckermit.03' && chmod 0644 ckermit/ckermit.03 || echo 'restore of ckermit/ckermit.03 failed' Wc_c="`wc -c < 'ckermit/ckermit.03'`" test 19216 -eq "$Wc_c" || echo 'ckermit/ckermit.03: original size 19216, current size' "$Wc_c" # ============= doc/_basic.txt ============== if test ! -d 'doc'; then echo 'x - creating directory doc' mkdir 'doc' fi echo 'x - extracting doc/_basic.txt (Text)' sed 's/^X//' << 'SHAR_EOF' > 'doc/_basic.txt' && X.*s 1 "Basic Organization" X XECU forks to run as two separate Xprocesses, a transmitter (XMTR) and a receiver (RCVR). XThe two processes Xcommunicate via signals and a System V shared memory segment. XXMTR controls RCVR and terminates it under certain circumstances, Xcalled here auxiliary operations. After an auxiliary operation Xcompletes, XMTR forks again to recreate RCVR. X X.*s 2 "Transmitter Process (XMTR)" X XXMTR Xaccepts user input from the computer keyboard; input is recognized Xas belonging to one of two types: 1) transmit data and 2) XECU commands. Keyboard input Xis passed to the serial line driver until an ECU command Xis detected. Commands are prefixed with a X.B HOME Xkey which causes ECU to accept keyboard data up to the next ENTER Xkey as command text. After a command has been processed, Xkeyed data is again routed to the serial line. X X.*s 3 "Keyboard Interface" X XThe keyboard driver is set into the raw mode. XXMTR reads characters one at a time from the driver. XNormally, characters read from the keyboard are passed directly to Xthe serial line driver. The XASCII ESC ("escape") character is handled as a special case. XWhen a function key is pressed, the keyboard generates Xto XMTR an ESC character, Xfollowed by more characters describing which function key has Xbeen pressed. XPressing the ESC key also causes XMTR to see an ESC character, Xbut with no subsequent function key "suffix". X XWhen an ESC character is read, XMTR delays transmission of the Xcharacter to the line for a short period to determine whether Xthe ESC key has been pressed or a function key has been pressed. XIf no "suffix" is detected, the ESC is passed to the line, having Xsuffered an insignificant delay given human typing speeds. X XIf a function key "suffix" is detected, the function key type Xis decoded. The X.B HOME Xkey indicates an ECU command follows. Any Xother function key is passed to the function key mapping feature X(described later). X X.*s 3 "ECU Command Assembly" X XAfter X.B HOME Xhas been pressed, XMTR presents a reverse video prompt on the Xdisplay, indicating its readiness to accept a command. During Xinput, the command may be edited using the same control keys Xspecified with stty(C). Additonal editing Xusing the left and right arrow keys and the XIns(ert) key are usually available. XCommand input may be aborted by pressing ESC. XWhen a command string has been assembled, it is passed to the Xcommand processor, which breaks the command arguments into a token Xarray similar to the argc/argv array. When the command handler Xreturns, XMTR returns to its normal mode of copying keyboard data to Xthe serial line. X XFurther information on XMTR command line processing may be found in Xlater sections titled Line Editing and Interactive Command History. X X.*s 3 "Function Key Mapping" X XWhile in tty-to-line mode, function keys other than X.B HOME Xare available to be mapped Xto transmit short keystroke sequences on a connection by Xconnection basis. Under control of the dialing command ("Dial" Xdescribed below) or the function key control command ("FK"), Xpredefined function key maps may be loaded. X XFunction keys which may be mapped are X.B F1 Xthrough X.B F12 , X.B PgUp , X.B PgDn , X.B End , X.B Ins , X.B Del , Xand Xthe cursor control keys. X XThe unshifted keypad '5' key is permanently mapped to Xproduce a screen snapshot when it is pressed and XMTR is Xreading from the keyboard. X XThhe BackTab (shift Tab) key is mpermanently mapped to a screen Xredisplay feature. X X.*s 3 "Auxiliary Operation Control" X XCertain commands cause ECU to perform what is called an Xauxiliary operation, requiring temporary termination of the XRCVR process. Such operations are not as useful Xwith X.B cu(C) , Xbecause cu does NOT kill its receiver process at any time. XAs a result, it impossible to run a modern file transfer Xprotocol since the cu receiver process eats some of the Xcharacters sent by the remote protocol program. X XThere are two types of auxiliary operations: X1) internal interactive command or procedure Xexecution and 2) external program execution. XCertain X.B internal X.B commands Xrequire tight control over the serial line. XFor instance, the X.B dial Xcommand requires transmitting modem command Xstrings and receiving modem response codes. Such functions Xare best accomplished by single-process control of the line. X.B External X.B program Xexecution is of two kinds, file transfer invocation Xand local shell/command execution. X XThe RCVR process is terminated in any of these cases either to Xavoid the RCVR swallowing characters intended for other Xtargets (the modem handler in XMTR or the file transfer protocol) Xor to avoid having remote data interspersed with the output of Xlocal programs. X X.*s 2 "Receiver Process (RCVR)" X XThe receiver process reads the incoming serial data stream and Xpasses it to the user terminal driver through a filter which Xscans for events such as the occurrence of ASCII BEL (bell) Xcharacters or terminal control sequences. RCVR also handles Xthe session logging and ANSI filter functions. X X.*s 3 "ANSI Filter" X XSince the term "ANSI" is used to describe X.B many Xvariations on the ANSI X3.64 recommendations for terminal control (read X"IBM pseudo-ANSI"), the ECU receiver process has an "ANSI filter" which Xattempts to translate incompatible (read "MSDOS") ANSI-like control Xsequences to sequences acceptable to the UNIX/XENIX display driver. XThis includes support for the MS-DOS "save cursor" and "restore cursor" Xsequences. XMore information may be found later in "Terminal Model." X X.*s 3 "Session Logging" X XWhen directed by the user, the RCVR process logs incoming serial Xdata to a file named on the log command line. The default operation Xis to filter unprintable characters (other than TAB and NL) from the Xlog, but raw logging is available with a command option. In a like Xmanner, the default is for appending to an existing file, but a Xcommand option may specify scratching any previous contents. X XLog files receive header lines each time the file is Xopened, stating the logical system name, the telephone number Xand the date/time. X SHAR_EOF $TOUCH -am 1221210990 'doc/_basic.txt' && chmod 0644 doc/_basic.txt || echo 'restore of doc/_basic.txt failed' Wc_c="`wc -c < 'doc/_basic.txt'`" test 6049 -eq "$Wc_c" || echo 'doc/_basic.txt: original size 6049, current size' "$Wc_c" # ============= doc/_end.txt ============== echo 'x - extracting doc/_end.txt (Text)' sed 's/^X//' << 'SHAR_EOF' > 'doc/_end.txt' && X X.br X.nr si 0n X.af % i X.ls 1 X.TC 1 1 3 SHAR_EOF $TOUCH -am 0711174289 'doc/_end.txt' && chmod 0644 doc/_end.txt || echo 'restore of doc/_end.txt failed' Wc_c="`wc -c < 'doc/_end.txt'`" test 39 -eq "$Wc_c" || echo 'doc/_end.txt: original size 39, current size' "$Wc_c" # ============= doc/_exit.txt ============== echo 'x - extracting doc/_exit.txt (Text)' sed 's/^X//' << 'SHAR_EOF' > 'doc/_exit.txt' && X.*s 1 "Exit Codes" X XWhen ECU exits (terminates execution), Xit uses a code from the following table: X.DS L XOK 0 no error XSIG1 1 SIGHUP (signal 1) XSIGN 64 signal 64 - see below XLINE_READ_ERROR 129 could not read from attached line XXMTR_WRITE_ERROR 130 could not write to attached line XXMTR_LOGIC_ERROR 131 software logic error XBSD4_IOCTL 132 not currently used XSHM_ABL 133 not currently used XSHM_RTL 134 not currently used XNO_FORK_FOR_RCVR 135 could not fork receiver process XTTYIN_READ_ERROR 136 could not read from console XLINE_OPEN_ERROR 137 could not attach (open) requested line XPWENT_ERROR 138 error in /etc/passwd processing XUSAGE 139 command line syntax error XCONFIG_ERROR 140 missing or erroroenous configuration file XINIT_PROC_ERROR 192 initial procedure terminated in error XUSER1 193 'exit' procedure command called with 1 XUSERN 223 'exit' procedure command called with 31 X.DE X XThe logical names 'SIG1' and 'SIGN' refer to a range of error codes Xsignifying ecu termination due to a signal. A larger range (64) is Xreserved than is necessary to handle reasonable expansion of XSIG values in the OS. Not all signals will be reported Xin this manner. ECU will never report status 10 (signal 9, SIGKILL), Xfor instance. X XThe logical names 'USER1' and 'USERN' refer to a range of error Xexits codes reserved for use by the 'exit' procedure command. XSee the description of this command for more information. X XFor ecu friend code, Xformal C #define identifiers for exit codes may be found in Xecuhangup.h and consist of the above logical names prefixed with 'HANGUP_'. SHAR_EOF $TOUCH -am 1203150290 'doc/_exit.txt' && chmod 0644 doc/_exit.txt || echo 'restore of doc/_exit.txt failed' Wc_c="`wc -c < 'doc/_exit.txt'`" test 1767 -eq "$Wc_c" || echo 'doc/_exit.txt: original size 1767, current size' "$Wc_c" # ============= doc/_features.txt ============== echo 'x - extracting doc/_features.txt (Text)' sed 's/^X//' << 'SHAR_EOF' > 'doc/_features.txt' && X.*s 2 "Supported Terminals" X XECU does not attempt to support terminal emulation in the classic Xsense of the word. It presents to the remote host an "ANSI-like" Xterminal type as described earlier in the introduction and in Xthe section titled "ANSI Filter." XHowever, it does support, with limitations, any LOCAL terminal X(console) for which a valid termcap description exists. You MAY Xbe able to use ECU with a remote terminal (calling into UNIX/XENIX Xover a network or modem), but you may get unfavorable results with Xfunction key usage if your modem is a "packetizing" type, such as Xa Telebit or if ethernet or other networking chops up your keystroke Xsequences. ECU allows approximately 60 milliseconds after receiving Xan ASCII ESC character for later characters of a function key sequence Xto arrive. If at least one character of the sequence has not been Xreceived in that time, ECU treats the key as an ESCape, not a function key. XThis typical problem of detecting ESC vs. function key is unfortunate, but Xwe must live with it until paradigms change (say, in about 2010?). X XThe termcap entry for a console XMUST contain a valid entry for the following database entries: X X.DS L Xcl clear screen Xkl cursor left Xkr cursor right Xdc delete character Xdl delete line Xcd clear to end of display Xce clear to end of line Xic insert character Xal insert line ("add" a "line") Xcm cursor motion Xso stand out (terminal specific attention getter) Xse stand end X.DE X XThe above sequences MUST be present, valid and reasonably efficient. XECU does not use curses during most of it's operation, and unlike Xcurses, makes no attempt to emulate missing terminal functionality. XFailure to provide valid entries will result in Xstrange behavior with no warning. X XNote that the formal termcap description of "kl" and "kr" Xstate these are sequences generated by the terminal X.B keyboard , Xbut ECU expects that these sequences also causes the desired Xeffect when X.B sent Xto the X.B screen . X XAdditionally, the following, optional, sequences will be used if Xthey are detected. X X.DS L Xmb bold on ("XENIX" extension) Xme bold off ("XENIX" extension) Xus underscrore on Xue underscrore off Xvb visual bell X.DE X XA future version of ECU may use terminfo instead of termcap. XProblems with terminfo prevent its use at the present time. XIn addition, early versions of XENIX do not support terminfo. X X.*s 2 "Function Key Recognition" X XECU recognizes 23 function keys as having special significance Xto its operation. They are (with their AT/"ANSI" character sequences): X.DS I XInternal Description AT/"ANSI" Char- XName or Key Label acter Sequence X-------- ------------ --------------- XF1 F1 ESC [ M XF2 F2 ESC [ N XF3 F3 ESC [ O XF4 F4 ESC [ P XF5 F5 ESC [ Q XF6 F6 ESC [ R XF7 F7 ESC [ S XF8 F8 ESC [ T XF9 F9 ESC [ U XF10 F10 ESC [ V XF11 F11 ESC [ W XF12 F12 ESC [ X XHome Home ESC [ H XEnd End ESC [ F XPgUp Page up ESC [ I XPgDn Page down ESC [ G XCUU Up arrow ESC [ A XCUD Down arrow ESC [ B XCUL Left arrow ESC [ D XCUR Right arrow ESC [ C XCU5 "Cursor 5" ESC [ E XIns Insert ESC [ L XBkTab Back Tab ESC [ Z X.DE X XECU recognizes function keys entered by the user in Xone of two ways, depending upon whether the terminal is Xrecognized as an "ANSI" or "non-ANSI" terminal (see "Supported Terminals" Xabove). X XIf an AT/"ANSI" terminal is in use, ECU expects the standard AT/"ANSI" sequences Xto be generated by the keyboard according to the above table. XThis means that no use of the setkey(C) program (or similar functionality) Xmay be active. X XIf an "non-ANSI" terminal is in use, ECU matches a function key sequence Xto an internal function key representation Xby testing all keystroke sequences again an internal table loaded Xat the beginning of execution from the file ~/.ecu/nonansikeys. XNOTE that supported terminals MUST employ function keys which generate Xsequences beginning with an ASCII ESC (escape, 0x1B, decimal 27, octal 33). X XThe format of an file entry is shown below in the 'ansilike' example (used Xto test ECU from the console by defining an 'ansi' terminal type Xnevertheless equivalent to 'ansi'). X XLines beginning with '#' are comments. X X.DS I X#+------------------------------ X# ECU 3.0 nonansikeys X#------------------------------- Xansilike Xansi Xmsdos Xdos Xdosansi Xtest X F1:F1: esc [ M X F2:F2: esc [ N X F3:F3: esc [ O X F4:F4: esc [ P X F5:F5: esc [ Q X F6:F6: esc [ R X F7:F7: esc [ S X F8:F8: esc [ T X F9:F9: esc [ U X F10:F10: esc [ V X F11:F11: esc [ W X F12:F12: esc [ X X Home:Home: esc [ H X End:End: esc [ F X PgUp:PgUp: esc [ I X PgDn:PgDn: esc [ G X CUU:CUU: esc [ A X CUL:CUL: esc [ D X CU5:CU5: esc [ E X CUR:CUR: esc [ C X CUD:CUD: esc [ B X Ins:Ins: esc [ L X BkTab:BackTab: esc [ Z X.DE X XThe first line(s) in a terminal keyboard description begin in Xcolumn 1 and contain the terminal types (a la $TERM) for which Xthe keyboard description are valid. The example entry contains Xseveral references to terminal types containing the substring X'ansi'. These are included only as an example of one keyboard Xdescription servicing multiple terminal types. X XECU determines whether a terminal meets the ansi vs. ANSI Xdistinction by searching for 'ansi' in the $TERM environment Xvariable (without regard to case: 'AnSi' will match as well as X'ansi'). If your keyboard matches the ANSI specification even Xthough your $TERM environment variable does not contain 'ansi' X(such as 'sun'), then you may add the terminal type to the 'ansilike' Xentry rather than create a separate entry. X XFollowing the "first lines" are key definition entries, each Xpreceded by at least one tab or space. Each entry is composed of Xthree fields delimited by commas. The first field of an entry is Xthe internal ECU function key name and must be chosen from the Xfollowing strings (with no regard to case): "F1", "F2", "F3", X"F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "Home", X"End", "PgUp", "PgDn", "CUU" (cursor up), "CUL" (cursor left), X"CU5" (unshifted cursor pad 5), "CUR" (cursor right) and "CUD" X(cursor down). The Xsecond field contains the name of the key as it appears on the Xnon-ANSI keyboard (such as "F16" for End on the Wyse 60). The Xthird field is a description of the character sequence generated Xby the non-ANSI keyboard when the chosen key is pressed; it is a Xstring of one or more tokens separated by spaces or tabs. X XNote that while ECU requires a function key sequence to begin with Xan ASCII ESC (escape), each table entry must contain Xan 'esc' as it's first sequence token. This seemingly Xsuperfluous requirement ensures compatibility Xwith possible future support for function keys which do not Xbegin with ESC. X XIn addition, function key sequences may not contain the NUL (0) Xcharacter, nor may they exceed 10 characters, including the leading ESC. X XThe tokens are described in full in the following sections titled X"Function Key Recognition" and "Function Key Mapping." X XPLEASE NOTE: ECU does not have a reasonable way for you to terminate Xit if there are no Home and End keys defined, so it refuses to proceed Xif no definitions are found. Even so, if you have incorrect definitions, Xyou may not be able to get out of ECU without a kill -1 <pid> from Xanother terminal or hanging up your connection with UNIX/XENIX Xif using ECU from remote. X X.*s 2 "Function Key Mapping" X XECU recognizes function keys in a manner described in the above Xsection titled "Function Key Recognition." XThis section deals with how ECU behaves Xonce a function key has been recognized as having been entered Xat the keyboard. X XAll function keys with the exception of the X.B Home , X.B BkTab X(shift TAB), Xand keypad unshifted 5 key can be programmed to emit selected strings. XFor instance, when communicating with a Stratus computer, Xdoing your best to emulate a VT100, a function key Xmap might be constructed as follows: X.DS L X F1 F1 F2 F2 Home ecu cmd PgUp dispform X F3 F3 F4 F4 End enter PgDn cancel X F5 F5 F6 F6 Ins local shell CUR5 Screen dump X F7 status F8 no status BkTab restore receiver display X F9 F10 redisp CUR^ ^ CUR> > X F11 F12 CUR< < CURv v X.DE X XFunction key mapping is placed in ~/.ecu/keys. The Stratus example: X.DS L Xstratus X F1:F1:esc O q X F2:F2:esc O r X F3:F3:esc O s X F4:F4:esc O t X F5:F5:esc O u X F6:F6:esc O v X F7:F7:esc O w X F8:status:dc4 X F9:no status:nl X F10:redisp:esc O y X F11:redisp:syn X PGDN:cancel:esc O Q X END:enter:esc O M X PGUP:dispform:esc O R X CUU:^:dle X CUD:v:so X CUL:<:stx X CUR:>:ack X.DE X XIf you have installed the mapkey file (as described in the release directory Xin mapkeys/README), then ALT-a through ALT-z causes the "silent" Xexecution of procedures 'alt_a.ep' for ALT-a, 'alt_b.ep' for ALT-b, etc. XThe models subdirectory contains an example alt_h.ep which will home Xthe cursor when ALT-h is pressed. This facility allows the execution Xof 26 procedures without ECU itself changing the video display at all. XAny changes to the display (short of procedure errors) will result Xsolely from the action of the invoked procedure. XIf the procedure matching the ALT-[a-z] key pressed cannot be found, Xa short error message is printed and the terminal bell is rung. X(Using back tab may be used to refresh the display in this event.) X XThe strings used to represent "non-printable" characters are identical Xto the formal ASCII names given them (without regard to case), viz: X.DS I X0x00 nul NUL may not appear in a non-ANSI X0x01 soh function key definition X0x02 stx X0x03 etx X0x04 eot X0x05 enq X0x06 ack X0x07 bel X0x08 bs X0x09 ht X0x0A nl X0x0B vt X0x0C np X0x0D cr X0x0E so X0x0F si X0x10 dle X0x11 dc1 X0x12 dc2 X0x13 dc3 X0x14 dc4 X0x15 nak X0x16 syn X0x17 etb X0x18 can X0x19 em X0x1A sub X0x1B esc X0x1C fs X0x1D gs X0x1E rs X0x1F us X0x20 sp X0x7F del X.DE X X.*s 2 "Host Video Control Sequences" X X.*s 3 "All Local Terminals" X XThe following sequences are recieved over the line Xby ECU and properly interpreted for all local terminal types X(multiscreen, rlogin/xterm pseudotty, serial). X X.DS L XSequence | Description X----------+------------------------------- XESC [ @ | ICH XESC [ A | CUU XESC [ B | CUD XESC [ C | CUF XESC [ D | CUB XESC [ E | CNL See ANSI X3.64, XESC [ F | CPL screen(HW) and/or XESC [ H | CUP MS-DOS Technical XESC [ J | ED Reference Manual XESC [ K | EL XESC [ L | IL XESC [ M | DL XESC [ P | DCH XESC [ S | SU XESC [ T | SD XESC [ X | ECH XESC [ ` | HPA XESC [ a | HPR XESC [ d | VPA XESC [ e | VPR XESC [ f | HVP XESC [ ? m | SGR XESC [ n | DSR (see below) XESC [ s | save cursor MS-DOSism XESC [ u | restore cursor MS-DOSism X.DE X.DS L XSGR Sequences for ALL TERMINALS XSequence | Description | Maps to termcap X----------+---------------+------------------------------- XESC [ 0 m | normal | "se"+"me"+"ue" XESC [ 1 m | bold | "so" XESC [ 4 m | underscore | "us" XESC [ 5 m | blink | "mb" (XENIX extension) XESC [ 7 m | reverse video | "so" X.DE X X.*s 3 "Multiscreen Local Terminals" X XIn addition to the above, if you are operating from a color Xmultiscreen, additional (SCO and MS-DOS/ANSI.SYS) sequences Xare supported (see screen(HW)): X X.DS L XAdditional Multiscreen SGR Sequences XSequence | Description (no termcap mapping) X------------+----------------------------------------------- XESC [ 8 m | non-display XESC [ 1 0 m | select primary font XESC [ 1 1 m | select first alternate font (0x00-0x1F) XESC [ 1 2 m | select second alternate font (0x80-0xFF) XESC [ 3 0 m | black foreground XESC [ 3 1 m | red foreground XESC [ 3 2 m | green foreground XESC [ 3 3 m | brown foreground XESC [ 3 4 m | blue foreground XESC [ 3 5 m | magenta foreground XESC [ 3 6 m | cyan foreground XESC [ 3 7 m | white foreground XESC [ 3 8 m | enables underline option XESC [ 3 9 m | disables underline option XESC [ 4 0 m | black background XESC [ 4 1 m | red background XESC [ 4 2 m | green background XESC [ 4 3 m | brown background XESC [ 4 4 m | blue background XESC [ 4 5 m | magenta background XESC [ 4 6 m | cyan background XESC [ 4 7 m | white background X.DE X X.s 3 "MS-DOS 'SGR Gaggles'" X XECU also does it's best to interpret MS-DOS "SGR gaggles" such as X.DS I XESC [ 5 ; 3 4 ; 4 7 m X.DE Xwhich means "set the terminal to white background with Xblue blinking foreground." X X.*s 3 "Character Mapping" X XThe MS-DOS ROM signal ruling Xcharacters from the following table are mapped after the fashion of: X X.DS L X .-----+--------. X | | | X | +--------+ X | | | X +-----+ | X | | | X `-----+--------' X.DE X.DS L XMapped Characters (see pc_scr.h): XHex | Description X-----+--------------------------- X0xDA | top left single rule X0xBF | top right single rule X0xC0 | bottom left single rule X0xD9 | bottom right single rule X0xC3 | left hand T X0xB4 | right hand T X0xB3 | vertical rule X0xC4 | horizontal rule X.DE X X(Due to momentary laziness on the part of the author, double Xruling characters will appear as random druk, unless your terminal Xis smart enough to have joined the Church of the True-Blue ROM. XOne day an X version of this program will appear and you can choose Xto no longer accomplish real work, but may spend your days editing X42Kb resource files which will give you TAC, Total Anal Control, Xover all this.) X X.*s 2 "Line Editing" X XWhen you are entering a line of text for an ecu command or in Xa field on a screen, you may edit it in a number of ways at any Xtime prior to pressing Enter. Cursor Left moves the cursofr left Xby one character position, nondestructively. Cursor Right moves Xto the right. Insert toggles insert mode. Backspace (your Xerase key as specified to stty in commands, the actual backspace key Xin screens) deletes the character to the left of the cursor. XYour line kill key (as specified to stty) in command mode or Xthe ^U character in screen mode erases the entire line. Esc Xin command mode cancels the command. Esc in screen mode usually Xcancels the screen or subfunction in a screen. ^L or ^R in Xinteractive command mode shows the current state of Insert mode and Xredisplays the edited string. X X.*s 2 "Screen Dump" X XWhen the "cursor 5" key is pressed, the screen contents are Xdumped to a file. By default, this file is named '~/.ecu/screen.dump'. XThe X.B sdname Xinteractive command either displays or changes the current screen Xdump file name, depending upon whether or not a argument Xis supplied. XThe X.B scrdump Xprocedure command can initiate a dump. X X.*s 3 "Multiscreen and Non-Multiscreen" XNote that from multiscreens, screen dump produces a dump of the Xactual screen contents, including ECU-generated output. When Xusing a non-multiscreen terminal, screen dump dumps only the Xshared memory virtual screen as received from the host. XIf standard input is not a serial line (xterm o or /dev/null), Xscreen dumps will be of the non-multiscreen type. X XIf, at a multiscreen, you wish a screen dump free of ECU output X"pollution," use Shift-Tab (BkTab) to redraw the screen, then Xperform the screen dump. X X.*s 3 "Multiscreen Bug" XThere has been a bug in the multiscreen driver for some time Xwherein a MEDIA COPY (screen dump) sequence ("ESC [ 2 i") leaves Xthe "ESC [ 2" part "active". When a screen dump (Cursor 5) Xcommand is given, I do the sacreen dump, then send a "l" to the Xscreen to work around the bug ("ESC 2 [ l" unlocks the keyboard, Xessentially a no-op). If and when it gets fixed, you'll see an X"l" show up on your screen after a screen dump sequence. To fix Xthis, comment out the X.DS I X#define MULTISCREEN_DUMP_BUG X.DE Xat the top of ecuscrdump.c. X X.*s 2 "Interactive Command History" X XAfter pressing the Home key, pressing it again invokes the Xinteractive command history function. After the second XHome key is pressed, the last interactive command is Xredisplayed. Line editing may be performed on the command as described Xin the previous section. X XAdditionally, using the Cursor Up key accesses less recent commands. XThe Cursor Down key accesses more recent commands. Pressing Enter causes Xthe command to be executed. Pressing Esc aborts command entry. X X.*s 2 "Dialing Directory" X XECU provides an on-line editable dialing directory. Remote Xsystems are defined as records using alphanumeric identifiers Xas keys. Other record fields include telephone number, baud Xrate, parity and textual description. X XOther features include changing to alternate dialing directory Xand a multi-number redial cycle function. Refer below to the description Xof the interactive X.B dial Xcommand. X X.*s 2 "Online Command Dictionary" X XThe ECU help command presents a display of interactive commands. The user Xis then prompted to enter a command name for further, Unix-style X"usage" information. X X.*s 2 "Multiscreen Event Alarm" X XBy using the X.B BN X(bell notify) interactive command, an audible alert is sent to all Xmultiscreens when an ASCII BEL (bell) is received or when a file Xtransfer completes. An additional option causes an alert when ANY Xdata is received from the line. This makes it simple to do work on Xother multiscreen consoles and be alerted when attention to the Xcommunications session is required. X XFor instance, the Berkeley 4.x Unix utility "talk" rings the bell when Xanother user wishes an interactive chat mode. BSD "biff" rings the bell Xwhen incoming mail is received. Scripts or commands at remote sites can Xbe configured to ring the bell as in: X.DS I Xmake foo bar; bell; make more_stuff; bell; X.DE Xto call attention to the ECU user when work is being done Xon other multiscreen consoles. X XThis feature is only available when you are running ECU from a multiscreen. X X.*s 2 "Built-in Modem Dialer" X XThe built-in ECU dialer supports modems which use the X.B XHayes-style AT command set or most variants X.R X.B thereof . XIt is used when HoneyDanBer UUCP is not installed or when there is no Xentry in the /usr/lib/uucp/Devices file for the selected outgoing line. X(For more information, see the later section titled "HoneyDanBer UUCP XInterface".) X XThe built-in dialer uses files in the /usr/lib/ecu directory which Xcontains modem initialization information. Modem initialization Xfilenames are made from concatenating the tty name with ".mi". For Xinstance, tty1a's initialization file is named "tty1a.mi". X XCommands for initializing the modem and for dialing may be specified in Xa very flexible manner. Separate init and dial strings for each legal Xbaud rate, a single pair of strings for all baud rates or a combination Xmay be specified. X.DF L X.hl X.ce 1 XSample Modem Initialization Files X X#+----------------------------------------------------------- X# tty1a.mi - Microcom AX/9624c X#------------------------------------------------------------ Xinit_>2400:ATS11=47X4S0=0S7=30\Q1\X1\N3 # baud rates > 2400 Xinit_default:ATS11=47X4S0=0S7=30\Q0\X0\N0 # other baud rates Xdial_default:ATDT X X X#+----------------------------------------------------------- X# tty2d.mi - USR Courier 2400 X#------------------------------------------------------------ Xinit_default:ATS11=47 X4 S0=0 S7=32 Xdial_default:ATDT X X.DE X X.*s 2 "File Transfer" X XECU supports numerous file transfer protocols: as of this writing, XXMODEM, XMODEM/CRC, XMODEM-1K, YMODEM/CRC Batch, ZMODEM/CRC-16, XZMODEM/CRC-32, and Kermit are supported. Although a seamless interface X(there's some yuppie marketing newspeak) is provided to the user, Xtransfer is facilitated by executing external programs. X XAs of this writing SEAlink is not in the best of health (no one Xhas complained :-). X XKermit support required you to obtain and patch C-Kermit 4E. XThe patch information is available in the ckermit subdirectory Xof the release. As soon as C-Kermit 5 is stable and released by XColumbia, a suitable patch will be developed for it. It Xis quite possible no patching will be necessary. X XXMODEM, YMODEM and ZMODEM transfers (thanks to modified public domain Xprograms by Chuck Forsberg) present dynamic status displays similar to Xthe following: X.DS L X .-[ ecusz 2.37 ]-- /tmp -----------------------------------. X | ZMODEM/CRC32 Data xfer rate ~= 896 chars/sec | X | File 1 of 1: ckermit-5a-130 | X | File position: 34053 length: 34053 -rw-r--r-- | X | Sending 34053 bytes total time ~= 0:40 | X | tx: hdr ZFIN 0 rx: hdr ZFIN 0 | X | Comm I/O: rx 175 tx 34393 bytes | X | Baud rate: 9600 BINARY blklen: 1024 comm mode: NORMAL | X | Time: started: 17:31:50 this file: 17:31:51 | X | 17:32:29 elapsed: 00:00:39 00:00:38 | X | Errors: this file: 0 total: 0 files skipped: 0 | X | Total file bytes transferred: 34053 | X | End of file | X | Remote: CRC32 y duplex y continuous stream y | X `- Connected to ki4xo - procedure put_ck5a ----------------' X.DE X X.*s 2 "Procedures (Scripts)" X XA powerful, language-style procedure language is incorporated Xinto ECU. The language is described in later sections. X X.*s 2 "Initial (Startup) Procedure" X XAn X.B Xinitial procedure X.R Xmay be be specified to ECU either to initialize an interactive Xsession or to execute an entirely unattended or "batch" Xcommunication session. X X X.*s 2 "Home Directory Files" X XECU control files reside in the .ecu subdirectory of Xeach user's home directory. For example, in home directory /usr/wht: X.DS I X/usr/wht/.ecu/dir CD interactive command history file X/usr/wht/.ecu/keys function key mapping X/usr/wht/.ecu/nonansikeys function key mapping X/usr/wht/.ecu/log connect, file transfer history X/usr/wht/.ecu/phone default dialing directory X/usr/wht/.ecu/colors colors used by ECU X.DE X XThe .ecu directory is also searched for ECU procedure files X(having the '.ep' extension) in the procedure cannot be found in Xthe current working directory. X X.*s 2 "Lock Files" X XECU maintains lock files in /usr/spool/uucp in accordance with the XHoneyDanBer UUCP conventions (ASCII pids as 10-character strings Xfollowed by a newline). Lock files are created for the lower-case Xdevice names of Xa line and checked for in both cases. XFor example, both LCK..tty1a is created when X/dev/tty1a OR /dev/tty1A is selected and neither LCK..tty1a nor XLCK..tty1A are active. See the later section titled X"HoneyDanBer UUCP Interface". X X.*s 2 "Dial-In/Dial-Out Line Support" X XECU works with the SCO getty to support dialing out on a line Xenabled for login. After use of the line is complete, XECU signals the system to restore incoming call status to Xthe line. XSee the later section titled "HoneyDanBer UUCP Interface". X X.*s 2 "Tools" X XCommands are provided for conversion of hexadecimal or decimal numbers Xto and from ASCII equivalents. For example, 26(10) == 0x1a == ^Z == SUB. XFor details, refer to the description of the X.B XA Xand X.B AX Xinteractive commands. X X.*s 2 "Shared Memory 'Friend' Interface" X XECU maintains a copy of the received screen image (80 x 43 Xmaximum) and other Xinformation in its shared memory segment. Normally, this Xinformation is used only by the transmitter and receiver Xprocess. However, ECU supports the concept of a X.B friend Xprocess which may access the shared memory segment, perform Xarbitrary auxiliary operations, read from and write to the Xattached communications line and communicate resulting information Xor status to an ECU procedure via a 1024-byte "friend" Xdata area in the shared memory segment. X XThe procedure language supports the friend Xprocess concept through commands and functions which allow X.BL X.LI Xpassing the ECU shared memory segment id (%shmid) to a called Xprogram, X.LI Xreading a single character or string of characters from Xscreen memory, X.LI Xreading cursor position information and X.LI Xreading and writing of characters, short or long integers and Xstrings in the 1024-byte "friend" shared memory data area. X.LE X XThe algorithm for obtaining the shared memory segment key is X.DS L X0xEC000000L + transmitter process id X.DE XThus a "friend" process may either use a %shmid X.B Xshared memory key X.R Xpassed as an argument or obtain the X.B Xshared memory key X.R Xby using: X.DS L Xkey_t shmkey = 0xEC000000L | getppid(); X.DE X XThis facility allows batch and interactive applications Xto be developed with C programs which would be Xtedious or impractical to implement with procedure language alone. X XFor more information, refer to the shared memory header file X.B ecushm.h , Xthe X.B ecufriend Xsubdirectory of the software release Xand to the description of the X.B %shmid , X.B %cury Xand X.B %curx Xprocedure functions Xand the X.B getf Xand X.B putf Xprocedure commands. SHAR_EOF $TOUCH -am 1221234090 'doc/_features.txt' && chmod 0644 doc/_features.txt || echo 'restore of doc/_features.txt failed' Wc_c="`wc -c < 'doc/_features.txt'`" test 25444 -eq "$Wc_c" || echo 'doc/_features.txt: original size 25444, current size' "$Wc_c" true || echo 'restore of doc/_hdb.txt failed' echo End of part 31, continue with part 32 exit 0 -------------------------------------------------------------------- Warren Tucker, TuckerWare emory!n4hgf!wht or wht@n4hgf.Mt-Park.GA.US Hacker Extraordinaire d' async PADs, pods, proteins and protocols exit 0 # Just in case... -- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM Sterling Software, IMD UUCP: uunet!sparky!kent Phone: (402) 291-8300 FAX: (402) 291-4362 Please send comp.sources.misc-related mail to kent@uunet.uu.net.