🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.micro.atari16
Article #947

GEM-Kermit (Part 1 of 6)

#947
From: axel
Date: Fri, 20 Jun 1986 03:02
1118 lines
46349 bytes
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	README.first
#	README
#	kermrsc.uuc
#	ibmtty.uuc
#	ibmtty
# This archive created: Fri Jun 20 03:39:26 1986
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'README.first'
then
	echo shar: "will not over-write existing file 'README.first'"
else
cat << \SHAR_EOF > 'README.first'
		    GEM-Kermit for ATARI ST

This is the first distribution of GEM-Kermit, an implementation
of the well known kermit file-transfer protocol, with a user-interface,
which uses the capabilities of GEM. This Program was developed on
and for the Atari ST. 

GEM-Kermit was implemented by Bernhard Nebel of Technical University
Berlin, W-Germany (nebel@db0tui11.bitnet).

The main difference to the kermit program supplied with the
Atari development kit, is the support of IBM-communication and
a *much* nicer user-interface.

The GEM Kermit distribution consists of 6 Parts. Five of them
are shell-archives, one (Part 2) is the uuencoded kermit-program
itself. Gemkermit requires the kermit.rsc (resource) to be
present, when invoked. The uuencoded kermit.rsc is contained
in Part 1.

The filename-extension "uuc" marks uuencoded files. All the
resource and .def -files, that come with kermit are uuencoded.

The easiest way to put kermit to work is, to bring kermit.uuc, kermrsc.uuc
and - if you're going to talk to IBMs - ibmtty.uuc on your Atari
and uudecode them there. How to do the download without kermit
already running on the ST ? If you don't want to type in the whole
stuff by hand, you better find somebody who is already able to download
files from a host to the atari.

The remaining files are the sources for GemKermit - in case you
like to fiddle around with them.

To unpack everything, create a directory "kermit", cd to it, and
off you go. After "un-shar"-ing, there should be two subdirectories
(rsc and ibmtty) - besides a couple of ordinary files, of course.

I hope this information will enable you to find your way to 
GEM-Kermit.

			...and now enjoy installing the stuff.

				ciao, axel@coma
SHAR_EOF
fi
if test -f 'README'
then
	echo shar: "will not over-write existing file 'README'"
else
cat << \SHAR_EOF > 'README'
Known problems with GEM-Kermit:

   - during transfer, it happens sometimes, that the ST thinks some
     button is depressed and starts an awful klicking (provided,
     keyklick is enabled). After depressing any key the noise
     disappears.
   - in the RS232 configuration, character size has to be 8. If
     cs is 7, all opening braces ('{') get lost (nobody knows why - yet).

When communicating with IBM mainframes, make sure the following 
conditions are met:

   - binary transfer requires both kermits to be in binary mode.
   - select character size 8 bits/char (see above).
   - turn XON/XOFF-processing off. This is necessary, because XON is
     the handshake-character for half-duplex comm.-lines.
   - run your accoustic-coupler in full-duplex mode if it tends
     to echo in half-duplex mode.

NOTE: some of the distributed files come multiple times !

   \SRC\STKOBJ.H   = \RSC\STKOBJ.H
   \RSC\STKOBJ.H   = \RSC\STKOBE.H (is neccessary !)
   \PRG\KERMIT.RSC = \RSC\STKOBE.RSC
   \PRG\DKERMIT.RSC= \RSC\STKOBJ.RSC (this is the german version of
				      the resource, you can ignore it)


Send your bugreports, cheers, complaints, suggestions, hate-mail .....
to:
	nebel@db0tui11.bitnet 

Aw rite - enjoy !
	
SHAR_EOF
fi
if test -f 'kermrsc.uuc'
then
	echo shar: "will not over-write existing file 'kermrsc.uuc'"
else
cat << \SHAR_EOF > 'kermrsc.uuc'
begin 777 kermit.rsc
M   9P!(T$C02-!'< "01VP  +@  V  4 $4      !8  "Y0($1E<VL@ "!&
M:6QE(  @5')A;G-F97(@ "!/<'1I;VYS(  @($M%4DU)5"U);F9O "TM+2TM
M+2TM+2TM+2TM+2TM+2TM " @1&5S:R!!8V-E<W-O<GD@,2 @ " @1&5S:R!!
M8V-E<W-O<GD@,B @ " @1&5S:R!!8V-E<W-O<GD@,R @ " @1&5S:R!!8V-E
M<W-O<GD@-" @ " @1&5S:R!!8V-E<W-O<GD@-2 @ " @1&5S:R!!8V-E<W-O
M<GD@-B @ " @1&5L971E+BXN " @4F5N86UE+BXN " @475I=  M+2TM+2TM
M+2TM+2TM+2TM+2T ("!4>7!E+BXN " @1G)E92!3<&%C92XN+@ @(%-E;F0N
M+BX ("!296-E:79E+BXN " @4'5T*%-E<G9E<BDN+BX +2TM+2TM+2TM+2TM
M+2TM+2TM+0 @($=E="A397)V97(I+BXN " @475I="A397)V97(I " @3&]G
M;W5T*%-E<G9E<BD +2TM+2TM+2TM+2TM+2TM+2TM+0 @($)I;F%R>2!4<F%N
M<V9E<@ @(%-E<W-I;VX@3&]G+BXN "TM+2TM+2TM+2TM+2TM+2TM+2TM+2T 
M("!$96)U9R!,;V<N+BX ("!3879E(%-T871E+BXN "TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2T ("!&:6QE($YA;64@5V%R;FEN9P @(%!A9&1I;F< ("!)0DT@
M36]D90 @($-H86YG92!087)A;65T97)S+BXN " @3&]A9"!3=&%T92XN+@ @
M(%1I;65O=70 1&5L971E("XN+@!296YA;64@+BXN $YE=R!.86UE("XN+@!+
M15)-250@0V]M;75N:6-A=&EO;B!087)A;65T97)S    4V5N9    %)E8V5I
M=F4   !086-K970@3&5N9W1H    7U\ 7U\ .3D 7U\ 7U\ .3D 5&EM96]U
M="AS96,N*0   %]? %]? #DY %]? %]? #DY %)E=')I97,H8V]U;G0I    
M7U\ 7U\ .3D 14],*&AE>&-O9&4I    7U\ 7U\ 3DX 7U\ 7U\ 3DX 4&%D
M9&EN9RAH97AC;V1E*0   %]? %]? $Y. %!A9&1I;F<H;&5N9W1H*0   %]?
M %]? #DY %!A8VME="!3=&%R="AH97AC;V1E*0   %]? %]? $Y. %]? %]?
M $Y. $AA;F1S:&%K92AH97AC;V1E*0   %]? %]? $Y. %%U;W1E*&-H87)A
M8W1E<BD   !? %\ 6 !? %\ 6 !/2P!!0D]25 !396YD    4F5C96EV90  
M %]?7U]?7U]?7U]?7U]?7U]?7U]?7U\ 7U]?7U]?7U]?7U]?7U]?7U]?7U]?
M7P!86%A86%A86%A86%A86%A86%A86%A8 $9I;&4Z    7U]?7U]?7U]?7U]?
M7U]?7U]?7U]?7P!?7U]?7U]?7U]?7U]?7U]?7U]?7U]? %A86%A86%A86%A8
M6%A86%A86%A86%@ 3&]G+B!N86UE.@   %]?7U]?7U\ 7U]?7U]?7P!86%A8
M6%A8 $9I;&5S(" @=')A;G-F97)R960Z    7U]?7U\ 7U]?7U\ 6%A86%@ 
M0GET97,O<V5C+CH   !?7U]?7P!?7U]?7P!86%A86 !%<G)O<G,Z    7U]?
M7U\ 7U]?7U\ 6%A86%@ 5&EM96]U=',Z    7U]?7U]?7P!?7U]?7U]? %A8
M6%A86%@ 0GET97,@("!T<F%N<V9E<G)E9#H   !?7P!?7P!86 !086-K970@
M:60Z    04)/4E0 7U]?7U]?7P!?7U]?7U]? %A86%A86%@ 4&%C:V5T<R!T
M<F%N<V9E<G)E9#H   !'970H4V5R=F5R*0   %!U="A397)V97(I    5$E-
M14]55 !214%$60!1=6ET*%-E<G9E<BD   !,;V=O=70H4V5R=F5R*0      
M $]+ $Y%0D5,0$1",%1523$Q+D))5$Y%5    $)E<FYH87)D($YE8F5L    
M#@\@1T5-+4M%4DU)5    'AX>'@ 5F5R<VEO;E]?+E]? #DY.3D >'AX>'AX
M %]?+5]?+5]? #DY.3DY.0!4:&ES('!R;V=R86T@:7,@<'5B;&EC(&1O;6%I
M;@   '-O9G1W87)E(&%N9"!I<R!D:7-T<FEB=71E9"!F<F5E;'DN    5&AE
M($M%4DU)5"!P<F]T;V-O;"!W87,@9&5V96QO<&5D    870@0V]L=6UB:6$@
M56YI=F5R<VET>2P@3F5W(%EO<FLN    5&AE(')E;6]T92!H;W-T('-T;W!P
M960@=')A;G-F97)R:6YG    86YD('-E;G0@=&AE(&9O;&QO=VEN9R!M97-S
M86=E.@       %]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?
M7U]?7U\ 7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?
M7P!86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A8 $]+
M %1Y<&4@+BXN "TM+2!-3U)%("TM+0 M+2T@14]&("TM+0!3=&%R="!S96YD
M:6YG+B!0871H/2<E<R<L1FEL93TG)7,G %-E;F1I;F<@<W5C8V5S<V9U;&QY
M(&-O;7!L971E9"X *BHJ3F\@<W5C:"!&:6QE+@ J*BI%<G)O<B!M97-S86=E
M(&9R;VT@<F5M;W1E(&AO<W0Z("5S+@!396YD:6YG(&%B;W)T960N %-004-+
M.B!T>7!E/25C+"!L96X])3)D+"!N=6T])3 R> !34$%#2SH@9&%T83U\)7-\
M "HJ*D-H96-K<W5M(&5R<F]R.B!R96,N/24P,G@@97AP+CTE,#)X "HJ*E5S
M97(@86)O<G1E9"X 5&EM96]U="!W:&EL92!R96-E:79I;F<N %-7251#2#H@
M<W1A=&4])6,@;G5M/24P,G@ *BHJ4F5M;W1E(&AO<W0@9&]E<R!N;W0@<F5S
M<&]N9"X *BHJ1F%T86P@<W1A=&4@97)R;W(N $9I;&4@)R5S)R!O<&5N960@
M9F]R('-E;F1I;F<N "HJ*D9I;&4@8V%N;F]T(&)E(&]P96YE9"X 1FEL92 G
M)7,G('=I;&P@8F4@<V5N="!A<R G)7,G+@!&:6QE("<E<R<@8V]M<&QE=&5L
M>2!T<F%N<V9E<G)E9"X 4E!!0TLZ('1Y<&4])6,L(&QE;CTE,F0L(&YU;3TE
M,#)X %)004-+.B!D871A/7PE<WP 3&]O:VEN9R!F;W(@;F5X="!F:6QE("XN
M+@!.97AT(&9I;&4@=VEL;"!B92 G)7,G+@ J*BI&871A;"!P<F]T;V-O;"!E
M<G)O<BX *BHJ1FEL92 G)7,G(&-A;FYO="!B92!C<F5A=&5D+@!&:6QE("<E
M<R<@97AS:7-T<RX@3F5W(&YA;64Z("<E<R<N %)E8V5I=FEN9R!S=6-C97-S
M9G5L;'D@8V]M<&QE=&5D+@ J*BI&871A;"!F:6QE($DO3R!E<G)O<BX 1FEL
M92 G)7,G('=I;&P@8F4@<F5C96EV960@87,@)R5S)RX (" M/B!S96YT.B \
M,'@E,#)X/B!\)6-\ $YO(&AA;F1S:&%K92!C:&%R86-T97(@<F5C96EV960N
M " @+3X@9FQU<VAE9#H@/#!X)3 R>#X@?"5C? !3=&%R="!R96-E:79I;F<N
M(%!A=&@])R5S)RP@1FEL93TG)7,G+@!296-E:79I;F<@86)O<G1E9"X (" M
M/B!A9G1E<B E9"!S96,N(')E8W8N.B \,'@E,#)X/B!\)6-\ " @+3X@<&%D
M9&EN9SH@)60@*B \,'@E,#)X/@ @("T^('=A:71I;F<@9F]R(&AA;F1S:&%K
M92 \,'@E,#)X/B!\)6-\ " @+3X@2&%N9'-H86ME(&-H87)A8W1E<B!R96-E
M:79E9"X ($9I;&4@)7,@<F5Q=65S=&5D("A0871H/25S+"!&:6QE/25S*2X 
M1V5T=&EN9R!S=6-C97-S9G5L;'D@8V]M<&QE=&5D+@!1=6ET=&EN9RA397)V
M97(I(')E<75E<W1E9"X 1V5T=&EN9R!A8F]R=&5D+@!35%))3D< 475I='1I
M;F<H4V5R=F5R*2!A8F]R=&5D+@!,;V=O=70H4V5R=F5R*2!R97%U97-T960N
M %%U:71T:6YG*%-E<G9E<BD@<W5C8V5S<V9U;&QY(&-O;7!L971E9"X 3&]G
M;W5T*%-E<G9E<BD@<W5C8V5S<V9U;&QY(&-O;7!L971E9"X 3&]G;W5T*%-E
M<G9E<BD@86)O<G1E9"X 4V%V92!S=&%T92 N+BX 3&]A9"!S=&%T92 N+BX 
M4V5N9" N+BX 4F5C96EV92 N+BX 4'5T("XN+@!'970@+BXN $]P96X@9&5B
M=6<@;&]G("XN+@!/<&5N('-E<W-I;VX@;&]G("XN+@!! $9R964@9&ES:R!S
M<&%C92!O;B!?.@!& %]?7U]?7U]? %]?7U]?7U]?($)Y=&5S #DY.3DY.3DY
M $]+ $=E="!F<F]M(')E;6]T92!H;W-T    7U]?7U]?7U]?7U]?7U]?7U]?
M7U]?7U]?7U]?7U]?7U]?7U]?7U]?7P!?7U]?7U]?7U]?7U]?7U]?7U]?7U]?
M7U]?7U]?7U]?7U]?7U]?7U]? %A86%A86%A86%A86%A86%A86%A86%A86%A8
M6%A86%A86%A86%A86%@ 1V5T(&9O;&QO=VEN9R!F:6QE(&9R;VT@<F5M;W1E
M(&AO<W0Z    3TL 04)/4E0 6S-=6T5R<F]R(&]N('=R:71I;F=\=&\@<W1A
M=&4@9FEL92Y=6T%"3U)470!;,UU;5&AI<R!F:6QE(&%L<F5A9'D@97AI<W1S
M+EU;04)/4E1= %LS75M4:&ES(&9I;&4@9&]E<R!N;W0@97AI<W0N75M!0D]2
M5%T 6S-=6TYO="!Y970@:6UP;&5M96YT960N75M33U)265T 6S!=6T9I;&4@
M<F5N86UE9"Y=6T]+70!;,%U;1FEL92!D96QE=&5D+EU;3TM= %LS75M%<G)O
M<B!W:&EL92!D96QE=&EN9R!F:6QE+EU;04)/4E1= %LS75M%<G)O<B!W:&EL
M92!R96YA;6EN9RY=6T%"3U)470!;,UU;4F5M;W1E(&AO<W0@9&]E<R!N;W0@
M<F5S<&]N9"Y=6T%"3U)470!;,%U;1&5B=6<@;&]G(&-L;W-E9"Y=6T]+70!;
M,%U;4V5S<VEO;B!L;V<@8VQO<V5D+EU;3TM= %LS75M%<G)O<B!W:&EL92!O
M<&5N:6YG(&9I;&4N75M!0D]25%T 6S!=6U-T871E('-A=F5D+EU;3TM= %LR
M75M296%L;'D@86)O<G0@=')A;G-F97(_75M#3TY424Y517Q!0D]25%T 6S!=
M6U-T871E(&QO861E9"Y=6T]+70!;,%U;1&5B=6<@;&]G('-T87)T960N?$QE
M=F5L(&]F(&QO9V=I;F<Z75M086-K971S?$-H87)A8W1E<G-= %LP75M397-S
M:6]N(&QO9R!S=&%R=&5D+EU;3TM= %LS75M&871A;"!E<G)O<B!I;B!P<F]T
M;V-O;"Y=6T%"3U)470!;,UU;1FEL92!C86YN;W0@8F4@8W)E871E9"Y=6T%"
M3U)470!;,UU;1F%T86P@97)R;W(@=VAI;&5\9&]I;F<@9FEL92!)+T\N75M!
M0D]25%T 6S-=6U%U:71T:6YG(&]F(%-E<G9E<B!A8F]R=&5D(" @(" @('QB
M96-A=7-E(&]F('1R86YS;6ES<VEO;B!E<G)O<G,N75M!0D]25%T 6S-=6TQO
M9V]U="!O9B!397)V97(@86)O<G1E9" @(" @(" @?&)E8V%U<V4@;V8@=')A
M;G-M:7-S:6]N(&5R<F]R<RY=6T%"3U)470     .?   #J@   [.   .]   
M#Q4   \L   /0P  #VH   ^,   /M@  #]$   _N   0%   $"H  !!6   0
M;0  $*L  !#)   0[@  $1(  !%    1C@   J(   +"   "PP #  8  A& 
M  #__@ @  $   +$   "R0   LH  P &  (1@   __\ !0 !   "RP   M, 
M  +4  , !@ "$8   /__  @  0   M4   +C   "Y  #  8  !&   #__P .
M  $   +E   "Z    NL  P &   1@        P #   "[@   O$   +T  , 
M!@  $8        ,  P   O<   ,%   #!@ #  8  !&   #__P .  $   ,'
M   #"@   PT  P &   1@        P #   #$    Q,   ,6  , !@  $8  
M      ,  P   QD   ,H   #*0 #  8  !&   #__P /  $   ,J   #+0  
M S   P &   1@        P #   #,P   T    -!  , !@  $8   /__  T 
M 0   T(   -%   #2  #  8  !&        #  ,   -+   #3@   U$  P &
M   1@        P #   #5    V4   -F  , !@  $8   /__ !$  0   V< 
M  -J   #;0 #  8  !&        #  ,   -P   #@    X$  P &   1@   
M__\ $  !   #@@   X4   .(  , !@  $8        ,  P   XL   .A   #
MH@ #  8  !&   #__P 6  $   .C   #I@   ZD  P &   1@        P #
M   #K    Z\   .R  , !@  $8        ,  P   [4   /(   #R0 #  8 
M !&   #__P 3  $   /*   #S0   ]   P &   1@        P #   #TP  
M ^0   /E  , !@  $8   /__ !$  0   ^8   /H   #Z@ #  8  !&     
M   "  (   /L   #[@   _   P &   1@        @ "   #^P  !     0!
M  , !@ "$8   /_^  4  0  ! (   0*   $"P #  8  A&   #__@ (  $ 
M  0,   $(P  !#H  P &  $1@   __\ %P 7   $40  !%<   18  , !@  
M$8   /__  8  0  !%D   1P   $AP #  8  1&   #__P 7 !<   2>   $
MJ0  !*H  P &   1@   __\ "P !   $JP  !+,   2[  , !@ !$8   /__
M  @ "   !,,   38   $V0 #  8  !&   #__P 5  $   3:   $X   !.8 
M P &  $1@   __\ !@ &   $[   !/@   3Y  , !@  $8   /__  P  0  
M!/H   4    %!@ #  8  1&   #__P &  8   4,   %%   !14  P &   1
M@   __\ "  !   %%@  !1P   4B  , !@ !$8   /__  8 !@  !2@   4R
M   %,P #  8  !&   #__P *  $   4T   %/   !40  P &  $1@   __\ 
M"  (   %3   !6$   5B  , !@  $8   /__ !4  0  !6,   5F   %:0 #
M  8  !&   #__P #  ,   5L   %=P  !7@  P &   1@   __\ "P !   %
M?P  !8<   6/  , !@ !$8   /__  @ "   !9<   6L   %K0 #  8  !& 
M  #__P 5  $   6N   %N@  !;L  P &  (1@   __X #  !   %O   !<@ 
M  7)  , !@ "$8   /_^  P  0  !=@   7E   %Y@ #  8  A&   #__@ -
M  $   7G   %]@  !?<  P &  (1@   __X #P !   %^   !?D   7Z  , 
M!@  $8   /__  $  0  !?X   84   &%0 %  8  A&   #__P 6  $   86
M   &)0  !B8 !0 &  (1@   __\ #P !   &)P  !C4   8V  , !@ "$'  
M /__  X  0  !C<   8\   &20 #  8  A&   #__P %  T   9.   &50  
M!EX  P &  (1@   __\ !P )   &90  !H,   :$  4 !@  $8   /__ !X 
M 0  !H4   :I   &J@ %  8  !&   #__P D  $   :K   &S0  !LX !0 &
M   1@   __\ (@ !   &SP  !O$   ;R  4 !@  $8   /__ "(  0  !O, 
M  <8   '&0 #  8  !&   #__P E  $   <:   '.@  !SL  P &   1@   
M__\ (  !   '/   !ST   <^  , !@  $8   /__  $  0  !S\   =H   '
MD0 #  8  1&   #__P I "D   U\   -?@  #90  P &   1@   __\  @ 6
M   -E@  #9\   VN  , !@ !$8   /__  D #P  #;H   W/   -T  #  8 
M A&   #__@ 5  $   W1   -^@  #B,  P &   1@   __\ *0 I   .3   
M#G$   YR  , !@ "$8   /__ "4  ?__  $ !P 9                 %  
M&0 '  (  @ 4        $0       % " 0 !  , !@ 9             @  
M !\# 0 $_____P @         "0       8# 0 %_____P @         "L 
M!@    8# 0 &_____P @         #( #     H# 0 "_____P @        
M #T %@    D# 0    @ (0 9              ,! %  $P 1  D $  4    
M  #_$0   @   !0 "  *_____P <         $<      !0  0 +_____P <
M    "    %4    ! !0  0 ,_____P <         &H    " !0  0 -____
M_P <         '\    # !0  0 ._____P <         )0    $ !0  0 /
M_____P <         *D    % !0  0 0_____P <         +X    & !0 
M 0 (_____P <         -,    ' !0  0 8 !( %P 4      #_$0  "   
M !( !@ 3_____P <         .@      !(  0 4_____P <         /0 
M   ! !(  0 5_____P <         0     % !(  0 6_____P <    "   
M 0<    $ !(  0 7_____P <         1H    " !(  0 1_____P <    
M     20    # !(  0 A !D (  4      #_$0  #@   !, "  :_____P <
M         30      !,  0 ;_____P <         3X    ! !,  0 <____
M_P <         4L    # !,  0 =_____P <    "    5P    " !,  0 >
M_____P <         7     $ !,  0 ?_____P <         8$    & !, 
M 0 @_____P <         9     ' !,  0 8_____P <    "    :$    %
M !,  0 ' "( +0 4      #_$0  &    !8 #  C_____P <         ;4 
M     !8  0 D_____P <         <<    & !8  0 E_____P <    "   
M =@    ( !8  0 F_____P <         >\    ' !8  0 G_____P <    
M     ?X    * !8  0 H_____P <    "    @X    % !8  0 I_____P <
M         B4    ! !8  0 J_____P <         CD    # !8  0 K____
M_P <         D,    " !8  0 L_____P <         DX    ) !8  0 M
M_____P <         F4    + !8  0 A_____P < "       G4    $ !8 
M ?__  $  0 4    $  "$0      !PH% 0  _____P < "       G\$  , 
M  H  ?__  $  0 4    $  "$0       @L' 0  _____P < "       HH#
M  4   H  ?__  $  0 4    $  "$0      ! T' 0  _____P < "      
M I4%  0   P  ?__  $ '  4    $  "$0       "X $0 "_____P 6    
M(   $C0 !P ! !\  0 #_____P 6        $E  &  #  <  0 $_____P 6
M        $FP 'P #  D  0 '  4 !@ 6        $H@ !@ $ "(  0 &____
M_P >  @     $J0 %P    (  0 $_____P >  @     $L  (     (  0 *
M  @ "0 6        $MP !@ % "(  0 )_____P >  @     $O@ %P    ( 
M 0 '_____P >  @     $Q0 (     (  0 ,  L "P 6        $S  !@ &
M "(  0 *_____P >  @     $TP (     (  0 /  T #@ 6        $V@ 
M!@ ' "(  0 ._____P >  @     $X0 %P    (  0 ,_____P >  @     
M$Z  (     (  0 1 !  $  6        $[P !@ ( "(  0 /_____P >  @ 
M    $]@ %P    (  0 3 !( $@ 6        $_0 !@ ) "(  0 1_____P >
M  @     %!  %P    (  0 6 !0 %0 6        %"P !@ * "(  0 5____
M_P >  @     %$@ %P    (  0 3_____P >  @     %&0 (     (  0 8
M !< %P 6        %(  !@ + "(  0 6_____P >  @     %)P (     ( 
M 0 ; !D &@ 6        %+@ !@ , "(  0 :_____P >  @     %-0 &   
M  $  0 8_____P >  @     %/  (0    $  0 <_____P :  <      _( 
M!@ .  @  0  _____P : "4      _4 (  .  @  ?__  $ )  4    $  "
M$0       "8 $@ "_____P 6 (  (   %0P !P ! !<  0 #_____P 6 (  
M(   %2@ !P ! !<  0 &  0 !0 4      #_$0   P # "   0 %_____P =
M  @     %40 "@   !8  0 #_____P 5        %6        4  0 )  < 
M"  4      #_$0   P $ "   0 (_____P =  @     %7P "@   !8  0 &
M_____P 5        %9@       H  0 ,  H "P 4      #_$0   P & "  
M 0 +_____P =  @     %;0 &0    <  0 )_____P 5        %=      
M !0  0 /  T #@ 4      #_$0   P * "   0 ._____P =  @     %>P 
M&P    4  0 ,_____P 5        %@@       L  0 2 !  $0 4      #_
M$0   P + "   0 1_____P =  @     %B0 &P    4  0 /_____P 5    
M    %D        <  0 5 !, %  4      #_$0   P , "   0 4_____P =
M  @     %EP &P    4  0 2_____P 5        %G@       D  0 8 !8 
M%P 4      #_$0   P ( "   0 7_____P =  @     %I0 &0    <  0 5
M_____P 5        %K       !0  0 ; !D &@ 4      #_$0   P - "  
M 0 :_____P =  @     %LP '@    (  0 8_____P 5        %N@     
M  H  0 <_____P :  $     !7D &@ /  D  0 ? !T '@ 4      #_$0  
M P ' "   0 >_____P =  @     %P0 &0    <  0 <_____P 5        
M%R       !0  0 @_____P 6 (  (   %SP !P ! !<  0 A_____P 6 (  
M(   %U@ !P ! !<  0 B_____P :  $     !<H #P /  D  0 C_____P :
M  < "   !=(  P /  D  0 D_____P 6 (  (   %W0 !P ! !<  0  ____
M_P 6 *  (   %Y  !P ! !<  ?__  $ #0 4    $  "$0      !"$+#@ "
M_____P =  @     %ZP "@ #  L  0 #_____P :  <     !?L$# L,  @ 
M 0 $_____P 5        %\@    ( "$  0 %_____P 5        %^0    '
M "$  0 '  8 !@ 4    $  #$?$ !P ! !,  @ %_____P 5        &   
M P@   T  0 (_____P =        &!P"  8$!" " 0 )_____P =        
M&#@#  D% R " 0 *_____P 9    $  "$0 $! P# 1@&!0 +_____P 5    
M    &%0!! H)!A4&   ,_____P 5        &' !! 0* AH&   -_____P 5
M        &(P!! T*!A@&    _____P 5 "      &*@!! 8+!A@& /__  $ 
M!0 4    $  "$0       #( "@ "_____P 5        &,0 !P ! "0  0 #
M_____P 5        &.  "@ " !\  0 $_____P =  @     &/P "@ #  L 
M 0 %_____P >  @     &1@ !0 % "@  0  _____P : "<     ![H %  (
M  @  ?__  $  0 4    $  "$0       @D' 0  _____P < "      ![T%
M  0   @  ?__  $ *P 4       "$0       $X %0 "_____P <        
M!\8       P  0 #_____P <        !],    !  L  0 $_____P <    
M    !]\    " "(  0 %_____P <        " (    $ !\  0 &_____P <
M        ""(    # !   0 '_____P <        "#,    & "8  0 (____
M_P <        "%H    % !   0 )_____P <        "&L    ' "$  0 *
M_____P <        "(T    ( !   0 +_____P <        ")X    + "8 
M 0 ,_____P <        ",4    , !   0 -_____P <        "-8    -
M !@  0 ._____P <        ".\    . !D  0 /_____P <        "0D 
M   / "   0 0_____P <        "2H    0 !4  0 1_____P <        
M"4     1 !T  0 2_____P <        "5X    2 !D  0 3_____P <    
M    "7@    3 !\  0 4_____P <        "9@    4 "$  0 5_____P <
M        ";H    ) "$  0 6_____P <        "=P    * !   0 7____
M_P <        ">T *0 $ !D  0 8_____P <        "@< *0 # !<  0 9
M_____P <        "A\ *0 " !@  0 :_____P <        "C@ )0   !\ 
M 0 ;_____P <        "E@ )0 ! "(  0 <_____P <        "GL *0 %
M "$  0 =_____P <        "IT *0 & !@  0 >_____P <        "K8 
M*0 ' ",  0 ?_____P <        "MH *0 + !@  0 @_____P <        
M"O, *0 * "   0 A_____P <        "Q0 *0 , !L  0 B_____P <    
M    "S  (P ( "8  0 C_____P <        "U< *0 ) !(  0 D_____P <
M        "VH (P - "<  0 E_____P <        "Y( *0 . !L  0 F____
M_P <        "ZX (@ / "@  0 G_____P <        "]< *0 0 "(  0 H
M_____P <        "_H (P 1 "8  0 I_____P <        #"$ )0 2 !\ 
M 0 J_____P <        #$$ *0 4 !L  0 K_____P <        #%T )@ 3
M !   0   "P ,0 4      #_$0       $X %0 M_____P <        #&X 
M   %  8  0 N_____P <        #'4    ! !D  0 O_____P <        
M#(\    " !D  0 P_____P <        #*D      "@  0 Q_____P <    
M    #-(    # "8  0 K_____P < "      #/D    $ !<  ?__  $  0 4
M    $  "$0      !P\& 0  _____P < "      #1$%  ,   X  ?__  $ 
M 0 4    $  "$0      !P\& 0  _____P < "      #2   0,   X  ?__
M  $  0 4    $  "$0        H& 0  _____P < "      #2\" 0,   @ 
M ?__  $  0 4    $  "$0      ! P& 0  _____P < "      #3@&  ( 
M  L  ?__  $  0 4    $  "$0      ! D' 0  _____P < "      #40"
M 0,   <  ?__  $  0 4    $  "$0      !0@' 0  _____P < "      
M#4P&  ,   <  ?__  $  0 4    $  "$0      !Q,( 0  _____P < "  
M    #50'  ,  !(  ?__  $  0 4    $  "$0      !14' 0  _____P <
M "      #6<'  0  !0  ?__  $  P 4    $  "$0       !L "0 "____
M_P =  @     &30  P ! !4  0 #_____P =        &5  !@ #  X  0  
M_____P : "<     #;< "0 &  @  ?__  $ !0 4    $  "$0       #$ 
M#  "_____P 6    (   &6P #0 ! !8  0 #_____P =  @     &8@ !  &
M "@  0 $_____P 5        &:0 !@ $ "0  0 %_____P :  <     #G, 
M!P )  @  0  _____P : "4     #G8 (  )  @  0  &<   !X0   >0   
M'G   !Z@   A6   )-   "8@   FL   )N   "N0   KP   *_   "P@   L
54   +(   "RP   LX   +1   "UP
 
end
SHAR_EOF
fi
if test -f 'ibmtty.uuc'
then
	echo shar: "will not over-write existing file 'ibmtty.uuc'"
else
cat << \SHAR_EOF > 'ibmtty.uuc'
begin 777 ibmtty.acc
M8!H  !4,   #N   %\X   8@             "Y\   <R$ZY   -%BZ\    
M $Y!(B\ !# \ ,A.0DYU3E;_^BZ\   >"B\\   G?"\\   GZB\\   HADZY
M   30M_\    ##/    HB#U\  '__F 4,&[__M'(T?P  ">>,+P  5)N__X,
M;@ *__YMY#/\  (  ">R+KP  "?L+SP  "B(+SP  ">>3KD   \84(\NO   
M*&(O/   *(PO/   *, O/   *+X_/  $0F=.N0  %'#?_    !!.7DYU3E;_
M_$*7/SP! $ZY   3A%2/80  P$I 9@9"0&   +(^N0  *&(_.0  *(P_.0  
M*, _.0  *+Y"9TZY   3R%"/,\   "B*/KD  "AB/SD  "B,/SD  "C /SD 
M "B^/SD  !X*/SD  "=\/SD  "C /SD  "B^3KD  !*>W_P    ./KD  "AB
M/SD  "B,/SD  "C /SD  "B^/SD  "B*3KD  !0"4(\^N0  *(A.N0  #K0^
MN0  *(A.N0  #50^N0  *(A.N0  #H)P 4Y>3G5.5O_\+KP  "?L0F<_.0  
M*(A.N0  $"18CS Y   G[%) ,\   !SJ,_D  "C    <[# Y   <ZNA ,\  
M !SN0GD  !SP+KP  "?L/SP  3\Y   HB$ZY   0)%B/,_D  "?T   <\C Y
M   <ZN9 P?D  !SLP?D  !SR(\   "BV(#P  "C"(\   !SF(\   !9H0KD 
M "5H2KD  !9H9A8NO   %K0_/  !3KD  !)\5(]"0&!N0D SP   '0(SP   
M'/I"0#/    =!#/    <_# Y   <ZE- ,\   !T&,\   !S^,#D  "C 4T S
MP   '0@SP   '0 NO   '.8O/   )6@O/   '/H_/  #/SD  "B(3KD  !"8
MW_P    ,< %.7DYU3E;__#ZY   HB$ZY   -*DY>3G5.5O_\/KD  "B(3KD 
M  [F85@^N0  *(I.N0  %#P^N0  *(I.N0  %%8^N0  *&(_.0  *(P_.0  
M*, _.0  *+X_.0  '@H_.0  )WP_.0  *, _.0  *+Y.N0  $O#?_     Y.
M7DYU3E;__"Z\   E:"\\   <YB\\   <^C\\  ,_.0  *(A.N0  $)C?_   
M  Q"ES\\ 0%.N0  $X14CTY>3G5.5O_\/JX "#\\  9.N0  %/Q4CTY>3G5.
M5O_\+JX "#\Y   HB$ZY   -ZE2//KP #6',/KP "F'&3EY.=4Y6__P^N0  
M*(A.N0  #50^N0  *(A.N0  #H(NO   %N1AMBZ\   6^V&N+KP  !<28:8N
MO   %REAGBZ\   7*F&6+KP  !=888XNO   %XAAABZ\   7JV$ _WXNO   
M%\UA /]T+KP  !?W80#_:BZ\   8*6$ _V NO   &%YA /]6+KP  !B+80#_
M3"Z\   8M&$ _T).7DYU3E;__& */KP  TZY   4_#Z\ !).N0  %/Q*@&;H
M3EY.=4Y6__P^O #_/SP !DZY   4_%2/2H!F[$Y>3G5.5O_X(&X "$(0/KP 
M_S\\  9.N0  %/Q4CRU __QG(" N__S O    /\B;@ ,$H @+O_\<A#BH")N
M  @2@&!,/KP $DZY   4_$J 9SX^O  #3KD  !3\+4#__" N__S O    '\B
M;@ ,$H @;@ ,#!  ?FX6(&X #! 02( ^@&$ _F0S_  !   E9B!N  A*$&< 
M_W!.7DYU3E;_^CZ\__\_//__/SS__S\\__\_//__/SS__S\\  ].N0  %-S?
M_     QR$.*@P+P   #_'4#__CZ\__\0+O_^2( _  !7  @_//__/SS__S\\
M__\_//__/SP #TZY   4W-_\    #$)7/SP"[DZY   26E2//KS__Q N__Y(
M@#\ /SS__S\\__\_//__/SS__S\\  ].N0  %-S?_     Q.7DYU3E;__#Z\
M  =A /V:3EY.=4Y6__8NCEV7+PY9ES\Y   HB$ZY   /WER//6X "/_^8!@P
M;O_^(FX #! PF !(@#Z 80#]8%)N__XP+O_^L&X "F_>/KD  "B(3KD   Y0
M/J[_^C\N__P_.0  *(A.N0  $/18CTY>3G5.5O_\/KD  "B(3KD   VX3EY.
M=4Y6__@NCEF7+PY5ES\Y   HB$ZY   /F%R/,"[__+!N  AM##ZY   HB$ZY
M   -ADY>3G5.5O_Z/6X "O_^8!P@;@ ,,F[__M')(FX ##1N__[3RA%1  %3
M;O_^,"[__K!N  ALVDY>3G5.5O_Z/6X "/_^8!P@;@ ,,F[__M')(FX ##1N
M__[3RA"I  %2;O_^,"[__K!N  IOVDY>3G5.5O_Z0F[__F :(&X ##)N__[1
MR2)N  @T;O_^T\H0D5)N__X,;@!0__YMWDY>3G5.5O_\(&X "%-0; H@;@ (
M<!,P@& &(&X "# 03EY.=4Y6__P@;@ (4E P$+!\ !1M"B!N  AP #" 8 8@
M;@ (,!!.7DYU3E;_\D)Y   E9D)N__X@;@ (0E NCEF7+PY=ES\Y   HB$ZY
M   /WER/8  $ BZ.49<O#@:7____]F$ _-Y8CTIY   E9F=,+HY9ER\.79<_
M.0  *(A.N0  #]Y<CRZN  P@;@ (/Q!35T)G80#]_EB//J[__# N__[15S\N
M__H_.0  *(A.N0  $/18CT)Y   E9DHN__AG  %*#"X (/_X;0  = PN '[_
M^&YJ(&X " Q0 %!M!F$ _:)@5BZN  P@;@ (/Q!35S\N__YA /Y.6(\@;@ ,
M,F[__M')$*[_^"ZN  P@;@ (/Q _+O_^80#]>EB/(&X "# 0(FX "%)14F[_
M_CZN__PP+O_^T5=A /W$8   RA N__A(@&   *@^O  -80#ZV' !8  #!$IN
M__YF!F$ _21@0#ZN__PP+O_^T5=A /VB+JX #"!N  A34# 0/P!3;O_^/R[_
M_F$ _?)8CRZN  P@;@ (/Q!35S\N__YA /ST6(]@8B!N  @P$+!N__YF!F$ 
M_-!@+BZN  P@;@ (4U P$#\ /R[__F$ _;!8CRZN  P@;@ (/Q!35S\N__YA
M /RR6(]@(&$ _)I@&F 8L'P "&< _V*P?  -9P#_3+!\ ']GH&#@8  "3! N
M__9(@&   BQ"0&   D!*;O_^9@9A /Q@8!(^KO_^,"[__-%780#\WE-N__Y@
M  (:(&X "# 0L&[__F8&80#\.& 2/J[__C N__S15V$ _*)2;O_^8  !\B\N
M  @O/   'R1A /UP6(\P0-'((GP  "B.,#"8 "!?,( ]0/_^+JX ## Y   ?
M),'\ %#0O   'R8O &$ _0Y8CSZN__P_+O_Z/SD  "B(3KD  !#T6(\NK@ ,
M(&X "#\04U="9V$ ^\98CSZN__PP+O_^T5<_+O_Z/SD  "B(3KD  !#T6(]@
M  %F+RX ""\\   ?)&$ _018CS! T<@B?   *(XP,)@ (%\P@#U __XNK@ ,
M,#D  !\DP?P 4-"\   ?)B\ 80#\@EB//J[__#\N__H_.0  *(A.N0  $/18
MCRZN  P@;@ (/Q!35T)G80#[.EB//J[__# N__[15S\N__H_.0  *(A.N0  
M$/18CV   -IA /CF+HY9ER\.79<_.0  *(A.N0  #]Y<CRZN  P@;@ (/Q!3
M5T)G80#Z[%B//J[__# N__[15S\N__H_.0  *(A.N0  $/18CV   (P^KO_\
M/R[_^C\Y   HB$ZY   0]%B//KD  "B(3KD   Y0(&X "'  ,( ]0/_^80#Y
MX#/\  $  "5F8$X^KO_\/R[_^C\Y   HB$ZY   0]%B//KD  "B(3KD   Y0
M(&X "'  ,( ]0/_^8!YA /I*8!A@%DC ('P  !9L<@BPF%?)__P@:  @3M!@
M /O^3EY.=4Y6__I";O_^8" P;O_^(FX "A PF !(@#Z /SP !$ZY   4_%2/
M4F[__C N__ZP;@ (;=8^O  -/SP !$ZY   4_%2/3EY.=4Y6_ZH^O  ;80#W
M>#Z\ '=A /=P80#WJF$ ^$1A /AB8   >BZ.!I?___^P+PX&E____ZYA /M,
M6(]*0&=@+HX&E____[ _+O^N80#_;%2/2F[_KF<\,'D  "=^T<C1_   *(XP
MKO^N,#D  "=^P?P 4-"\   ?)BZ +PX&E____[!A /J(6(\NO   )WYA /K,
M,_D  "=^   ?)&"&3EY.=4Y6__PNO   &+4_.0  *&1.N0  $Z94CS/    <
MY$Y>3G5.5O_H8$PNC@:7____[$ZY   20 QN "C_[&8V,"[_]+!Y   <Y&8J
M/KP  4ZY   4PF$ \RYA //,2D!G"&$ _OQA /7280#UND)73KD  !3"8+).
M7DYU3E;__$ZY   1S&$ _WIAF$Y>3G5.5O_\,_P 90  *&9">0  *&A">0  
M*&PS[@ (   H<DZY   13$Y>3G5.5O_\,_P !0  *&9">0  *&A">0  *&PS
M_  (   H<#/N  @  "AR3KD  !%,3EY.=4Y6__PS_  %   H9D)Y   H:$)Y
M   H;#/\  <  "AP,^X "   *').N0  $4Q.7DYU3E;__#/\  4  "AF0GD 
M "AH0GD  "AL,_P !@  *' S[@ (   H<DZY   13$Y>3G5.5O_X+7P  !T*
M__P@;@ *$!!(@")N__PR@%*N  I4KO_\2D!FYC/\  4  "AF0GD  "AH("[_
M_)"\   ="H'\  )(P%- ,\   "AL,_P #   *' S[@ (   H<DZY   13$Y>
M3G5.5O_\,_P !0  *&9">0  *&A">0  *&PS_  *   H<#/N  @  "AR3KD 
M !%,3EY.=4Y6__PS_  %   H9D)Y   H:$)Y   H;#/\  D  "AP,^X "   
M*').N0  $4Q.7DYU3E;__#/\  4  "AF0GD  "AH0GD  "AL,_P  P  *' S
M[@ (   H<DZY   13$Y>3G5.5O_\,_P !0  *&9">0  *&A">0  *&PS_  "
M   H<#/N  @  "AR3KD  !%,3EY.=4Y6__PC[@ (   <T"/N !   !S8("X 
M$-"\    6B/    <W#/\ &0  "AF0GD  "AH,_P "P  *&P@;@ ,,]   "AR
M3KD  !%,(&X ##"Y   H<B/\   ="@  '- C_   '@P  !S8(_P  "9\   <
MW"/\   E?   '-1.7DYU3E;__#/\  4  "AF0GD  "AH0GD  "AL,_P  0  
M*' S[@ (   H<DZY   13"!N  HPN0  '@P@;@ .,+D  !X.3EY.=4Y6__PS
M_  %   H9D)Y   H:$)Y   H;#/\  \  "AP,^X "   *').N0  $4P@;@ *
M,+D  !X,(&X #C"Y   >#DY>3G5.5O_\(_P  !T*   <T"/\   E?   '-0C
M[@ ,   <V" N  S0O    %HCP   '-PS[@ *   ="C/\ &8  "AF0GD  "AH
M,_P  0  *&PS[@ (   H<DZY   13"/\   >#   '-@C_   )GP  !S<3EY.
M=4Y6__PS[@ *   ="BZN !!.N0  $3@NK@ 43KD  !%"(^X #   '-0S_ !M
M   H9C/\  0  "AH,_P  0  *&PS[@ (   H<DZY   13"/\   E?   '-1.
M7DYU3E;__#/N  H  !T*,^X #   '0PS_  %   H9D)Y   H:#/\  (  "AL
M,_P "P  *' S[@ (   H<DZY   13$Y>3G4C[P $   H=$YU(^\ !   *'A.
M=2/\   H9@  ',PB/   ',QP<TY"3G5.5O_V,^X "   )[0P+@ (T'S_]L'\
M  -(P-"\   5#"U __H]?  !__Y@'B!N__H0$$B ,F[__M/)T_P  ">T,H!2
MKO_Z4F[__@QN  3__FW:+KD  "A>3KD    40D P.0  )]Q.7DYU3E;_^B/\
M   GM   'PPC_   )X   !\0(_P  ">\   ?%"/\   GW   'Q@C_   *'X 
M !\<(_P  "BZ   ?("/\   ?#   *%X^O  *80#_1C/Y   GW   *&1P 4Y>
M3G5.5O_\/KP $V$ _RIP 4Y>3G5.5O_\(^X "   *'X^O  73KD  !%B3EY.
M=4Y6__PS[@ (   GO#/N  H  ">^/KP &$ZY   18DY>3G5.5O_\,^X "   
M)[PC[@ *   H?CZ\ #1.N0  $6).7DYU3E;__#/N  @  ">\,^X "@  )[XS
M[@ ,   GP#/N  X  "?",^X $   )\0S[@ 2   GQC/N !0  "?(,^X %@  
M)\H^O !)3KD  !%B3EY.=4Y6__PS[@ (   GO#/N  H  ">^,^X #   )\ S
M[@ .   GPC/N !   "?$,^X $@  )\8S[@ 4   GR#/N !8  "?*/KP 2DZY
M   18DY>3G5.5O_\/KP 34ZY   18B!N  @PN0  )]X@;@ ,,+D  "?@(&X 
M$#"Y   GXB!N !0PN0  )^1"0# Y   GW$Y>3G5.5O_\,^X "   )[PC[@ *
M   H?CZ\ $Y.N0  $6).7DYU3E;__#/N  @  ">\(^X "@  *'X^O  C3KD 
M !%B3EY.=4Y6__PS[@ (   GO#/N  H  ">^,^X #   )\ S[@ .   GPC/N
M !   "?$/KP 9$ZY   18DY>3G5.5O_\,^X "   )[PS[@ *   GOC/N  P 
M "? ,^X #@  )\(S[@ 0   GQ#Z\ &5.N0  $6).7DYU3E;__#/N  @  ">\
M/KP 9DZY   18DY>3G5.5O_\,^X "   )[P^O !G3KD  !%B3EY.=4Y6__PS
M[@ (   GO#/N  H  ">^/KP :$ZY   18B!N  PPN0  )]X@;@ 0,+D  "?@
M(&X %#"Y   GXB!N !@PN0  )^1"0# Y   GW$Y>3G5.5O_\,^X "   )[P^
MO !K3KD  !%B3EY.=2/?   <X$Y.+SD  !S@3G4CWP  '.!.32\Y   <X$YU
M(]\  !S@3D$O.0  '.!.=0 !  (! 0(! 0 ! 0(! 0$! 0             !
M   !  ,%  4%   ! 0(! ! ' 0(!              $! 0(! 0(! 0(! 0$!
M @$! 0                (! 0$! 08! 00! 0$# 0(! 00" 0@! 0      
M  $! 0D! 0$! 0$!   % 0                                      
M                      0#  @#  8!  @!  @!  0! 0,! 0 %  $! 0 %
M   ! 0 ! 0                                 " @              
M                      4!  4!  $!  $!  (%  8!  (!  $!  8%    
M   ! 0 !  (!  (! 0$! 0                     ! @,! @$! 0$! 0 !
M 0 ! @        !'    2    $L   !-    4    %(   !A    8@      
M  L@   )N@  "7    F2   *1@  "UP   EJ   *T@  "XQ;,5U;3FEC:'0@
M9V5N=6<@4W!E:6-H97)P;&%T>B!V;W)H86YD96Y=6T%B;W)T70 J*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ "H@24)-($)L;V-K(%1E<FUI;F%L("H *BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*@  0D%#2U-004-%(" @(" @(" @(" M(&QE='IT
M97,@6F5I8VAE;B!LE'-C:&5N $1%3$5412 @(" @(" @(" @(" @+2!A:W1U
M96QL97,@6F5I8VAE;B!LE'-C:&5N $E.4T525" @(" @(" @(" @(" @+2!L
ME'-C:&4@6F5I;&4 4D5455).('5N9"!%3E1%4B @(" M('-E;F1E(%IE:6QE
M $-,4B!(3TU%(" @(" @(" @(" @+2!S96YD92!"4D5!2R!397%U96YZ %!F
M96EL92!L:6YK<R]R96-H=',@+2!#=7)S;W(@:6X@9&5R(%IE:6QE(&)E=V5G
M96X 4&9E:6QE(&]B96XO=6YT96X@(" M(&QE='IT92]NA&-H<W1E(%IE:6QE
M(&5D:71I97)E;@!(14Q0(" @(" @(" @(" @(" @("T@075S9V%B92!D:65S
M97(@365L9'5N9P!53D1/(" @(" @(" @(" @(" @("T@>G5R@6-K('IU;2!$
M97-K=&]P   @($E"32!497)M:6YA; !?8W)Y<W1A;*(     %%]C=')L7V-N
MI    !4,7V)U9F9?;&^D    %FA?;W!E;E]V9*(     (%]I;FET7W1EH@  
M  #"7W-A=F5?;66B     99?8VQO<V5?=J(    "P%]E>&ET7W1EH@    +4
M7W)E<W1O<F6B     SY?=F1I7V-H *(    #?%]V9&E?;&ENH@    .47VAE
M;'    "B     [I?9FQU<VA?<J(    $6%]F;'5S:%]TH@    1Z7W=A:71?
M9F^B    !)9?<V5N9%]B<J(    %,%]R:6YG7V)EH@    787W)E9&ES<&RB
M    !>A?;6]V95]R::(    &4E]M;W9E7VQEH@    9F7W-H:69T7W*B    
M!II?<VAI9G1?;*(    &T%]C;W!Y7V)UH@    <&7V1E8U]E;G2B    !S9?
M:6YC7V5N=*(    '5E]G971?;&ENH@    =\7W-E;F1?;&FB    "[)?=&5R
M;6EN8:(    +^E]I;FET7V%CH@    R<7VAA;F1L95^B    #+Y?;6%I;@  
M *(    -%E]V7V-L<W9WH@    TJ7W9?8W5R:&^B    #51?=E]C=7)L9:( 
M   -AE]V7V-U<G)IH@    VX7W9?8W5R=&6B    #>I?=E]E96]L *(    .
M4%]V7V5E;W, H@    Z"7W9?96YT97*B    #K1?=E]E>&ET7Z(    .YE]V
M7V]P;G9WH@    \87W9Q7V-H8V6B    #YA?=G%?8W5R8:(    /WE]V<5]E
M>'1NH@   ! D7W9R;U]C<'FB    $)A?=G-?8W5R8:(    0]%]I7W!T<@  
MH@   !$X7VE?<'1R,@"B    $4)?9W-X,0   *(    13%]G<W@R    H@  
M !%,7VEI;V9F  "A    '-!?:6]O9F8  *$    <V%]P:6]F9@  H0   !S4
M7W!O;V9F  "A    '-Q?=F1I     *(    13%]C<GES7VEFH@   !%B7V%P
M<&Q?:6ZB    $<Q?87!P;%]E>*(    2+E]E=FYT7VUEH@   !) 7V5V;G1?
M=&FB    $EI?9F]R;5]A;*(    2?%]G<F%F7V=RH@   !*>7V=R869?<VBB
M    $O!?9W)A9E]H8:(    30E]G<F%F7VUOH@   !.$7VUE;G5?<F6B    
M$Z9?=VEN9%]C<J(    3R%]W:6YD7V]PH@   !0"7W=I;F1?8VRB    %#Q?
M=VEN9%]D9:(    45E]W:6YD7V=EH@   !1P7W=I;F1?=7"B    %,)?9V5M
M9&]S *(    4_%]B:6]S    H@   !3L7WAB:6]S  "B    %-Q?;65N=5]I
M9*$    <Y%]S879E7VUFH0   !SF7W!X>0    "A    '/I?:6YT:6X  *$ 
M   ="E]G;%]H8F]XH0   !X*7VEN=&]U= "A    '@Q?8P       *$    ?
M#%]L87-T7V5NH0   !\D7W)I;F=?8G6A    'R9?875X7W)E8Z$    E9E]S
M8W)N7VUFH0   "5H7W!T<VEN  "A    )7Q?<'1S;W5T *$    F?%]G;%]W
M8F]XH0   "=\7VYE>'1?96ZA    )WY?9VQO8F%L *$    G@%]W;W)K7VEN
MH0   ">>7V-O;G1R;VRA    )[1?:6YT7VEN *$    GO%]I;G1?;W5TH0  
M "?<7V=L7VAC:&&A    )^I?=V]R:U]O=:$    G[%]A9%]C    H0   "A>
M7VAD97-K  "A    *&)?9VQ?87!I9*$    H9%]C;VYT<FP H0   "AF7V%D
M9')?:6ZA    *'Y?9VQ?=V-H8:$    HAE]V9&E?:&%NH0   "B(7W=I7VAA
M;F2A    *(I?=V1E<VL  *$    HC%]R:6YG7V9IH0   "B.7V)U9F9?<VFA
M    *+9?861D<E]O=:$    HNE]X9&5S:P  H0   "B^7WED97-K  "A    
M*,!?;65N8F)U9J$    HP@    (&'@8&!@8,%!@&!@8&" 8&!@P:%@8&!@@(
M!@8&!@8&!@8&# 8&!@8&" 8&!@8&$ @&" @&! 8(!@8*!@@$!@@&!@8&!@8&
M" H.!@@&!@@&!@@&!@8&"@86!@X&" 8&!@8&!@8&!@8&!A0&!@H&$A@4!AP&
M!@8&" @(" @(" H*"@H*"A@*&B(R#C0T/A(H+ 8R!@X&$ 86!A(&\!@&'A &
M*@8( ;80%@H6!BH&$! 6"A8&*@88!BH&% 8(!A@0!@@&'CH>8@@*"A8*!! &
M!@@8$@P@$!8&!@@&$ 8&" @&$ 8&" @&$ 8&" @&#B0&"@X(" 80!@8(" 80
M!@8(" 80!@8(" 80!@8(" 80"! (!@@*!@H&! 8$!@0&!! &!@@(!@H*$ 8&
M" @&"@H.! 8$"! (" 8(" 8&! 8$$ H*" @(" @&!@00" @&" @(!@P*" 0&
M$A0@& 8(#@0&! 8$!@0&! 8$!@0.!"0*$ @*$ @*$ @(" @(" @*$ @(" @(
M" @*$@H*"@H($ @*$ @*$ @(" @*$ @(" @*$ H0"A ("@H*"@H($ H*" @(
-" @!C 0$! 0$! 0$  @*
 
end
SHAR_EOF
fi
if test ! -d 'ibmtty'
then
	mkdir 'ibmtty'
fi
cd 'ibmtty'
if test -f 'ascii.h'
then
	echo shar: "will not over-write existing file 'ascii.h'"
else
cat << \SHAR_EOF > 'ascii.h'

/********************/
/* some ASCII codes */
/********************/

#define NUL 0x00 /* ^@ */
#define SOH 0x01 /* ^A */
#define ETX 0x03 /* ^C */
#define BEL 0x07 /* ^G */
#define BS  0x08 /* ^H */
#define HT  0x08 /* ^I */
#define LF  0x0A /* ^J */
#define VT  0x0B /* ^K */
#define FF  0x0C /* ^L */
#define CR  0x0D /* ^M */
#define DC1 0x11 /* ^S */
#define DC3 0x13 /* ^Q */
#define SUB 0x1A /* ^Z */
#define ESC 0x1B /* ^[ */
#define DEL 0x7F 


/*******************/
/* Some Scan Codes */
/*******************/

#define CLR_HOME_KEY     0x47
#define UP_KEY           0x48
#define LEFT_KEY         0x4B
#define RIGHT_KEY        0x4D
#define DOWN_KEY         0x50
#define INSERT_KEY       0x52
#define UNDO_KEY         0x61
#define HELP_KEY         0x62


SHAR_EOF
fi
if test -f 'ibmtty.c'
then
	echo shar: "will not over-write existing file 'ibmtty.c'"
else
cat << \SHAR_EOF > 'ibmtty.c'

/*********************************/
/* IBM Block Terminal Emulation  */
/* written by B. Nebel, March 86 */
/* Version 1.2 of 5/10/86        */
/*********************************/

/* include files */
/*****************/

#include "define.h"      /* common C defintions */
#include "osbind.h"      /* binding of TOS */
#include "gemdefs.h"     /* GEM defintions */
#include "ascii.h"       /* ASCII codes and keyboard scan codes */


/* global constant parameters */
/******************************/

#define ACCESSORY YES
#define MENU_NAME "  IBM Terminal" /* name of menu entry */
#define MAX_LL 80  /* line length */
#define MAX_BUF 20 /* ring buffers */

/* external functions */
/**********************/

/* GEMDOS (osbind.h) */
/* Crawio, Cauxin, Cauxout, Cauxis, Malloc, Mfree */

/* XBIOS (osbind.h) */
/* Rsconf */

/* VDI */
extern int v_opnvwk();
extern int v_clsvwk();
extern int v_enter_cur();
extern int v_exit_cur();
extern int v_curright();
extern int v_curleft();
extern int v_curhome();
extern int v_eeos();
extern int v_eeol();
extern int vs_curaddress();
extern int vq_curaddress();
extern int v_curtext();
extern int vq_chcells();
extern int vro_copyfm();

/* AES */
extern int appl_init();
extern int appl_exit();
extern int graf_handle();
extern int graf_mouse();
extern int graf_growbox();
extern int menu_register();
extern int evnt_mesag();
extern int evnt_timer();
extern int wind_create();
extern int wind_open();
extern int wind_close();
extern int wind_delete();
extern int wind_get();
extern int wind_update();

extern int form_alert();

extern int gl_apid;

/* Global Variables */
/********************/


int menu_id, vdi_handle, wi_handle;          /* some handles */
int gl_hchar, gl_wchar, gl_wbox, gl_hbox;    /* sizes given back by VDI */
int xdesk, ydesk, hdesk, wdesk;              /* desktop size and loc. */
int last_entry, next_entry;                  /* ptr to ring buffer */
char ring_buffer [MAX_BUF] [MAX_LL];         /* the ring buffer */
int ring_filled[MAX_BUF];                    /* fill counter for ring buf */
int aux_received;                            /* if <> 0 someth. rec. by aux */
FDB scrn_mfdb;                               /* mfdbs for saving menu bar */
FDB save_mfdb;
int work_in[11];                             /* params for vdi_opnvwk */
int work_out[57];
int pxy[8];                                  /* param for raster copy */
long int buff_loc = NIL;                     /* save buffer for menu bar */
long buff_size;                              /* buffer size */
int menbbuf[1000];                           /* buffer for menu bar */
                                             /* static allocation because
                                                Malloc allocates too much */

int contrl[12];                              /* VDI/AES glob. params */
int intin[128];
int ptsin[128];
int intout[128];
int ptsout[128];

/**********************************/
/* Initializations & Terminations */
/**********************************/

open_vdi()
/* open virtual work station */
{
 int i;

   vdi_handle = graf_handle(&gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox);
   for (i = 1; i < 10; i++)
     { work_in[i] = 1; }
   work_in[10] = 2;
   v_opnvwk(work_in, &vdi_handle, work_out);
   wind_get(0,WF_WORKXYWH,&xdesk,&ydesk,&wdesk,&hdesk);
}

int init_terminal()
/* init virtual workstation as a terminal */
{
 graf_mouse(M_OFF,NIL);
 if (!(save_menu_bar())) return FALSE;
 wi_handle = wind_create(0,xdesk,ydesk,wdesk,hdesk);
 graf_growbox(xdesk,ydesk,gl_wbox,gl_hbox,xdesk,ydesk,wdesk,hdesk);
 wind_open(wi_handle,xdesk,ydesk,wdesk,hdesk);
 v_enter_cur(vdi_handle);
 v_curhome(vdi_handle);
 v_eeos(vdi_handle);
 return TRUE;
}

int save_menu_bar()
/* save menu bar in a area to be allocated */
{
 vq_extnd(vdi_handle, 0, work_out);
 save_mfdb.fd_w       = work_out[0] + 1;
 save_mfdb.fd_h       = ydesk;
 save_mfdb.fd_wdwidth = save_mfdb.fd_w >> 4;
 save_mfdb.fd_stand   = 0;
 vq_extnd(vdi_handle, 1, work_out);
 save_mfdb.fd_nplanes = work_out[4];
 buff_size = (save_mfdb.fd_w >> 3) * save_mfdb.fd_h * save_mfdb.fd_nplanes;
 buff_loc  = save_mfdb.fd_addr = 
 /*   ((buff_loc == NIL) ? (Malloc(buff_size)) : buff_loc);
  * I use static allocation because Malloc stole me 50 K!
  */
 &menbbuf[0];   
 scrn_mfdb.fd_addr   = 0;
 if (buff_loc == NIL)
  {form_alert(1,"[1][Nicht genug Speicherplatz vorhanden][Abort]");
   return FALSE;};
 pxy[0] = pxy[4] = 0;
 pxy[1] = pxy[5] = 0;
 pxy[2] = pxy[6] = save_mfdb.fd_w - 1;
 pxy[3] = pxy[7] = ydesk - 1;
 vro_cpyfm(vdi_handle,3,pxy,&scrn_mfdb,&save_mfdb);
 return TRUE;
}


close_vdi()
/* close virtual workstation */
{ v_clsvwk(vdi_handle);}

exit_terminal()
/* exit terminal mode */
{
 v_exit_cur(vdi_handle);
 restore_menu_bar();
 wind_close(wi_handle);
 wind_delete(wi_handle);
 graf_shrinkbox(xdesk,ydesk,gl_wbox,gl_hbox,xdesk,ydesk,wdesk,hdesk);
#if !ACCESSORY
 graf_mouse(M_ON,NIL);
#endif
}

restore_menu_bar()
{
 vro_cpyfm(vdi_handle,3,pxy,&save_mfdb,&scrn_mfdb);
 /* Mfree(buff_loc); Do not free because it doesn't work right! */ 
 graf_mouse(M_ON,NIL);
}

/*****************/
/* VDI Functions */
/*****************/

vdi_ch(ch)
int ch;
{Crawio(ch);}

vdi_line(string)
char string[];
{
 v_curtext(vdi_handle,string);
 vdi_ch(CR);
 vdi_ch(LF);
}

/**********************/
/* Terminal Functions */
/**********************/
 
help()
{
 v_curhome(vdi_handle);
 v_eeos(vdi_handle);
 vdi_line("**********************");
 vdi_line("* IBM Block Terminal *");
 vdi_line("**********************");
 vdi_line("");
 vdi_line("BACKSPACE           - letztes Zeichen lschen");
 vdi_line("DELETE              - aktuelles Zeichen lschen");
 vdi_line("INSERT              - lsche Zeile");
 vdi_line("RETURN und ENTER    - sende Zeile");
 vdi_line("CLR HOME            - sende BREAK Sequenz");
 vdi_line("Pfeile links/rechts - Cursor in der Zeile bewegen");
 vdi_line("Pfeile oben/unten   - letzte/nchste Zeile editieren");
 vdi_line("HELP                - Ausgabe dieser Meldung");
 vdi_line("UNDO                - zurck zum Desktop");
 vdi_line("");
}

flush_rs232_buffer()
{while (Cauxis() != 0) Cauxin();}

flush_terminal_buffer()
{while (Crawio(0xFF) != 0);}

wait_for_char(scan_code,ch)
char *scan_code,*ch;
{
long result;
 do {*scan_code = NUL;
         if ((result = Crawio(0xFF)) != 0)
            {
             *ch = result & 0xFF;
             *scan_code = result >> 16 ;
            }
         else
            {if (Cauxis() != 0)
                {result = Cauxin();
                 *ch = result & 0x7F;
                 if (*ch <= '~')
                     {
                      vdi_ch(*ch);
                      aux_received = YES;
                     };
                };
            };
    }
 while (*scan_code == NUL);
}

send_break()
{char tsr;
 tsr = (Rsconf(-1,-1,-1,-1,-1,-1) >> 16) & 0xFF;
 Rsconf(-1,-1,-1,-1,(tsr | 0x08),-1);
 evnt_timer(750,0);
 Rsconf(-1,-1,-1,-1,tsr,-1);
}

ring_bell()
{vdi_ch(BEL);}

redisplay(from,to,line)
int from, to;
char line[];
{
int i,r,c;
 vq_curaddress(vdi_handle,&r,&c);
 for (i = from; i <= to; i++) vdi_ch(line[i]);
 v_eeol(vdi_handle);
 vs_curaddress(vdi_handle,r,c);
}

move_right(dummy)
int dummy;
{v_curright(vdi_handle);}

move_left(vcol)
int vcol;
{
 int r,c;
 vq_chcells(vdi_handle,&r,&c);
 if (c >= vcol) v_curleft(vdi_handle);
}

shift_right(from, to, line)
int from, to;
char line[];
{
 int i;
 for (i = to ; i >= from ; i--) line[i+1] = line[i];
}

shift_left(from, to, line)
int from, to;
char line[];
{
 int i;
 for (i = from; i <= to; i++) line[i] = line[i+1];
}

copy_buf_entry(src,dst)
char src[];
char dst[];
{
 int i;
 for (i = 0; i < MAX_LL; i++) dst[i] = src[i];
}

int dec_entry(e)
int *e;
{return ((--(*e) < 0) ? (*e = MAX_BUF - 1) : (*e));}

int inc_entry(e)
int *e;
{return ((++(*e) >= MAX_BUF) ? (*e = 0) : (*e));}

int get_line(filled, line)
int *filled;
char line[];
{
int pos, scol, srow;
char ch, scan_code;
 aux_received = NO;
 pos = 0;
 *filled = 0;
 vq_curaddress(vdi_handle,&srow,&scol);
 while (TRUE) 
 {
  wait_for_char(&scan_code,&ch);
  if (aux_received)
   {vq_curaddress(vdi_handle,&srow,&scol);
    redisplay(0,*filled-1,line);
    vs_curaddress(vdi_handle,srow,scol+pos);
    aux_received = NO;
   };
  if (ch != NUL)
   {if ((ch >= ' ') && (ch <= '~'))
     {if (*filled >= MAX_LL) 
       ring_bell();
      else
       {shift_right(pos, (*filled)-1, line);
        line[pos] = ch;
        redisplay(pos,*filled,line);
        (*filled)++;
        pos++;
        move_right(scol+pos);
       };
     }
     else
      switch (ch)
       {case CR: vdi_ch(CR); return TRUE; 
        case BS: if (pos == 0) 
                  ring_bell(); 
                  else 
                   {move_left(scol+pos);
                    shift_left(--pos,--(*filled),line);
                    redisplay(pos,(*filled)-1,line);
                   };
                  break;
        case DEL: if (pos == *filled)
                   ring_bell();
                   else
                    {shift_left(pos,--(*filled),line);
                     redisplay(pos,(*filled)-1,line);
                    };
                   break;
        default: ring_bell(); break;
       };
   }
  else 
   switch (scan_code)
    {case UNDO_KEY: 
          return FALSE;
     case LEFT_KEY: 
          if (pos == 0) ring_bell(); else move_left(scol+pos--);
          break;
     case RIGHT_KEY: 
          if (pos == *filled) ring_bell(); else move_right(scol+pos++);
          break;
     case UP_KEY:   
          pos = *filled = ring_filled[dec_entry(&last_entry)];
          copy_buf_entry(ring_buffer[last_entry],line);
          vs_curaddress(vdi_handle,srow,scol);
          redisplay(0,(*filled)-1,line);
          vs_curaddress(vdi_handle,srow,scol+pos);
          break;
     case DOWN_KEY:
          pos = *filled = ring_filled[inc_entry(&last_entry)];
          copy_buf_entry(ring_buffer[last_entry],line);
          vs_curaddress(vdi_handle,srow,scol);
          redisplay(0,(*filled)-1,line);
          vs_curaddress(vdi_handle,srow,scol+pos);
          break;
     case HELP_KEY:
          help();
          vq_curaddress(vdi_handle,&srow,&scol);
          redisplay(0,*filled-1,line);
          vs_curaddress(vdi_handle,srow,scol+pos);
          break;
     case CLR_HOME_KEY:
          vs_curaddress(vdi_handle,srow,scol);
          v_eeol(vdi_handle);
          pos = *filled = 0;
          send_break();
          aux_received = TRUE;
          break;
     case INSERT_KEY:
          vs_curaddress(vdi_handle,srow,scol);
          v_eeol(vdi_handle);
          pos = *filled = 0;
          break;
     default: ring_bell(); break;
    };
 };
}

send_line(filled,line)
int filled;
char line[];
{
int i;
 for (i = 0; i < filled; i++) Cauxout(line[i]);
 Cauxout(CR);
}

terminal()
{
char this_line[MAX_LL];
int this_fill;
 vdi_ch(ESC);
 vdi_ch('w');
 help();
 flush_rs232_buffer();
 flush_terminal_buffer();
 while (TRUE)
  {if (!get_line(&this_fill,this_line)) break;
   send_line(this_fill,this_line);
   if (this_fill != 0)
    {ring_filled[next_entry] = this_fill;
     copy_buf_entry(this_line,ring_buffer[next_entry]);
     inc_entry(&next_entry);
    };
   last_entry = next_entry;
  };
}

init_accessory()
{menu_id = menu_register(gl_apid,MENU_NAME);}

handle_events()
{
int mbuf[10];
 while (TRUE)
  {evnt_mesag(mbuf);
   {if ((mbuf[0] == AC_OPEN) && (mbuf[4] == menu_id))
     {wind_update(BEG_UPDATE);
      open_vdi();
      if (init_terminal())
          {terminal ();
           exit_terminal();
          };
      close_vdi();
      wind_update(END_UPDATE);
     };
   };
  };
}

main()
{appl_init();
#if ACCESSORY
 init_accessory();
 handle_events();
#else
 open_vdi();
 if (init_terminal())
      {terminal();
       exit_terminal();};
 close_vdi();
 appl_exit();
#endif
}

SHAR_EOF
fi
cd ..
exit 0
#	End of shell archive
Technical Details
Message-ID: <600010@coma.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!burl!ulysses!allegra!princeton!caip!ut-sally!seismo!mcvax!unido!coma!axel

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!watmath!clyde!burl!ulysses!allegra!princeton!caip!ut-sally!seismo!mcvax!unido!coma!axel
From: axel@coma.UUCP
Newsgroups: net.micro.atari16
Subject: GEM-Kermit (Part 1 of 6)
Message-ID: <600010@coma.UUCP>
Date: Thu, 19-Jun-86 23:02:00 EDT
Article-I.D.: coma.600010
Posted: Thu Jun 19 23:02:00 1986
Date-Received: Sat, 28-Jun-86 01:05:37 EDT
Sender: notes@unido.UUCP
Lines: 1119
Nf-ID: #N:coma:600010:000:45680
Nf-From: coma!axel    Jun 20 04:02:00 1986