mugc@utecfa.UUCP (ModemUserGroupChairman) (11/26/85)
Here is a version of uuencode that will run on the ST when compiled with the DRI-C compiler. This version was hacked out of the uuencode.c that appeared on net.sources a while ago. Uudecode.c, if I remember correctly, worked right away so I did not bother to archive it. You should be able to get it off net.sources. The only portion that had to be modified was the part of the code used to open a file. The original file used efopen() which then called fopen(). I had to modify it to fopenb() to open binary files. The source follows. Link it with osbind. Enjoy. -------------------------------- /* * * Uuencode -- encode a file so that it's printable ascii, short lines * * Slightly modified from a version posted to net.sources a while back, * and suitable for compilation on the IBM PC * */ /* * Modified for the Atari 520ST (October 27, 1985) */ #include <stdio.h> #include <osbind.h> char *progname = "UUENCODE"; #define USAGE "Usage: UUENCODE file [>outfile]\n" /* ENC is the basic 1 character encoding function to make a char printing */ #define ENC(c) (((c) & 077) + ' ') main(argc, argv) int argc; char *argv[]; { FILE *in, *out, *efopen(), *efopenb(); if (argc < 2) { fprintf(stderr, USAGE); exit(2); } in = efopenb(argv[1], "r"); if (argc == 3) { out = efopen(argv[2], "w"); } else out = stdout; fprintf(out, "begin %o %s\n", 0777, argv[1]); encode(in, out); fprintf(out, "end\n"); } /* * copy from in to out, encoding as you go along. */ encode(in, out) FILE *in, *out; { char buf[80]; int i, n; for (;;) { n = fr(in, buf, 45); putc(ENC(n), out); for (i=0; i<n; i += 3) outdec(&buf[i], out); putc('\n', out); if (n <= 0) break; } } /* * output one group of 3 bytes, pointed at by p, on file f. */ outdec(p, f) char *p; FILE *f; { int c1, c2, c3, c4; c1 = *p >> 2; c2 = (*p << 4) & 060 | (p[1] >> 4) & 017; c3 = (p[1] << 2) & 074 | (p[2] >> 6) & 03; c4 = p[2] & 077; putc(ENC(c1), f); putc(ENC(c2), f); putc(ENC(c3), f); putc(ENC(c4), f); } /* fr: like read but stdio */ int fr(fd, buf, cnt) FILE *fd; char *buf; int cnt; { int c, i; for (i = 0; i < cnt; i++) { c = getc(fd); if (c == EOF) return(i); buf[i] = c; } return (cnt); } FILE * efopen(fn, mode) char *fn, *mode; { FILE *unit; if ((unit = fopen(fn, mode)) == NULL) error("Cannot open file %s", fn); else return unit; } extern char *progname; error(s1, s2) char *s1, *s2; { fprintf(stderr, "%s: ", progname); fprintf(stderr, s1, s2); exit(1); } /* * efopenb is a slightly modified efopen() * All it does is use the ST fopenb() call to open * a binary file. * Note that this is uuencode so only the input file * needs to be opened with this function. */ FILE * efopenb(fn, mode) char *fn, *mode; { FILE *unit; if ((unit = fopenb(fn, mode)) == NULL) error("Cannot open file %s", fn); else return unit; }
turner@imagen.UUCP (D'arc Angel) (12/03/85)
> > Here is a version of uuencode that will run on the ST when > compiled with the DRI-C compiler. ~~~~~~~~~~~~~easy lineater, good lineater~~~~~~~~~~~~~~~ for the alcyon C compiler a further hack was necessary, fopen and fopenb must be declared as FILE *. Here is both uuencode.c and uudecode.c plus the encoded version of jim's bouncing ball demo. ~~~~~~~~~~~~~~~~~~~~~~~UUENCODE.C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* * The only portion that had to be modified was the part of the * code used to open a file. The original file used efopen() which then * called fopen(). I had to modify it to fopenb() to open binary files. * The source follows. Link it with osbind. */ /* * * Uuencode -- encode a file so that it's printable ascii, short lines * * Slightly modified from a version posted to net.sources a while back, * and suitable for compilation on the IBM PC * */ /* * Modified for the Atari 520ST (October 27, 1985) */ #include <stdio.h> #include <osbind.h> char *progname = "UUENCODE"; #define USAGE "Usage: UUENCODE file [>outfile]\n" /* ENC is the basic 1 character encoding function to make a char printing */ #define ENC(c) (((c) & 077) + ' ') FILE *in, *out, *efopen(), *efopenb(), *fopen(), *fopenb(); main(argc, argv) int argc; char *argv[]; { if (argc < 2) { fprintf(stderr, USAGE); exit(2); } in = efopenb(argv[1], "r"); if (argc == 3) { out = efopen(argv[2], "w"); } else out = stdout; fprintf(out, "begin %o %s\n", 0777, argv[1]); encode(in, out); fprintf(out, "end\n"); } /* * copy from in to out, encoding as you go along. */ encode(in, out) FILE *in, *out; { char buf[80]; int i, n; for (;;) { n = fr(in, buf, 45); putc(ENC(n), out); for (i=0; i<n; i += 3) outdec(&buf[i], out); putc('\n', out); if (n <= 0) break; } } /* * output one group of 3 bytes, pointed at by p, on file f. */ outdec(p, f) char *p; FILE *f; { int c1, c2, c3, c4; c1 = *p >> 2; c2 = (*p << 4) & 060 | (p[1] >> 4) & 017; c3 = (p[1] << 2) & 074 | (p[2] >> 6) & 03; c4 = p[2] & 077; putc(ENC(c1), f); putc(ENC(c2), f); putc(ENC(c3), f); putc(ENC(c4), f); } /* fr: like read but stdio */ int fr(fd, buf, cnt) FILE *fd; char *buf; int cnt; { int c, i; for (i = 0; i < cnt; i++) { c = getc(fd); if (c == EOF) return(i); buf[i] = c; } return (cnt); } FILE * efopen(fn, mode) char *fn, *mode; { FILE *unit; if ((unit = fopen(fn, mode)) == NULL) error("Cannot open file %s", fn); else return unit; } extern char *progname; error(s1, s2) char *s1, *s2; { fprintf(stderr, "%s: ", progname); fprintf(stderr, s1, s2); exit(1); } /* * efopenb is a slightly modified efopen() * All it does is use the ST fopenb() call to open * a binary file. * Note that this is uuencode so only the input file * needs to be opened with this function. */ FILE * efopenb(fn, mode) char *fn, *mode; { FILE *unit; if ((unit = fopenb(fn, mode)) == NULL) error("Cannot open file %s", fn); else return unit; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~UUDECODE.C~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /* * Uudecode -- decode a uuencoded file back to binary form. * * Slightly modified from a version posted to net.sources once; * suitable for compilation on an IBM PC. * */ #include <stdio.h> #include <osbind.h> char *Progname = "UUDECODE"; #define USAGE "Usage: UUDECODE [file]\n" /* single character decode */ #define DEC(c) (((c) - ' ') & 077) FILE *in, *out, *efopen(), *efopenb(), *fopen(), *fopenb(); main(argc, argv) int argc; char *argv[]; { int mode; char dest[128]; char buf[80]; /* optional input arg */ if (argc > 1) { in = efopen(argv[1], "r"); argv++; argc--; } else in = stdin; if (argc != 1) { fprintf(stderr, USAGE); exit(2); } /* search for header line */ for (;;) { if (fgets(buf, sizeof buf, in) == NULL) { fprintf(stderr, "No begin line\n"); exit(3); } if (strncmp(buf, "begin ", 6) == 0) break; } sscanf(buf, "begin %o %s", &mode, dest); out = efopenb(dest, "w"); /* create output file */ decode(in, out); fclose(out); if (fgets(buf, sizeof buf, in) == NULL || strcmp(buf, "end\n")) { fprintf(stderr, "No end line\n"); exit(5); } } /* * copy from in to out, decoding as you go along. */ decode(in, out) FILE *in, *out; { char buf[80]; char *bp; int n; for (;;) { if (fgets(buf, sizeof buf, in) == NULL) { fprintf(stderr, "Short file\n"); break; } n = DEC(buf[0]); if (n <= 0) break; bp = &buf[1]; while (n > 0) { outdec(bp, out, n); bp += 4; n -= 3; } } } /* * output a group of 3 bytes (4 input characters). * the input chars are pointed to by p, they are to * be output to file f. n is used to tell us not to * output all of them at the end of the file. */ outdec(p, f, n) char *p; FILE *f; int n; { int c1, c2, c3; c1 = DEC(*p) << 2 | DEC(p[1]) >> 4; c2 = DEC(p[1]) << 4 | DEC(p[2]) >> 2; c3 = DEC(p[2]) << 6 | DEC(p[3]); if (n >= 1) putc(c1, f); if (n >= 2) putc(c2, f); if (n >= 3) putc(c3, f); } /* fr: like read but stdio */ int fr(fd, buf, cnt) FILE *fd; char *buf; int cnt; { int c, i; for (i = 0; i < cnt; i++) { c = getc(fd); if (c == EOF) return(i); buf[i] = c; } return (cnt); } /* If your library already has this function, use it and nuke the code below */ #ifdef noindex /* * Return the ptr in sp at which the character c appears; * NULL if not found */ char *index(sp, c) register char *sp, c; { do { if (*sp == c) return(sp); } while (*sp++); return(NULL); } #endif /* Open a file, aborting on failure */ /* Written by Bernie Roehl, June 1985 */ FILE * efopen(fn, mode) char *fn, *mode; { FILE *unit; if ((unit = fopen(fn, mode)) == NULL) error("Cannot open file %s", fn); else return unit; } extern char *Progname; error(s1, s2) char *s1, *s2; { fprintf(stderr, "%s: ", Progname); fprintf(stderr, s1, s2); exit(1); } /* * efopenb is a slightly modified efopen() * All it does is use the ST fopenb() call to open * a binary file. * Note that this is uuencode so only the input file * needs to be opened with this function. */ FILE * efopenb(fn, mode) char *fn, *mode; { FILE *unit; if ((unit = fopenb(fn, mode)) == NULL) error("Cannot open file %s", fn); else return unit; } ~~~~~~~~~~~~~~~~BOINK.UUE use uudecode on it~~~~~~~~~~~~~~~~~~~~~~~~ begin 777 C:BOINK.PRG M8!H CJ 8K "8(P K& $*G/SP ($Y!(\ "&X7(\_ M/ 2/SP !#\\ -.35R//SP !$Y.5(\SP (;RP? "9P "HB \ (%(D( M(\ "'N/SP DY.6(\CP (?(CP (;Y"04/Y APDCG0$ _//__/P$_ M/ '3DY<CTS? @(RP%)!LGP $&W@</]"9R\ +P _/ %3D[>_ ,80 &]"/\ M #9 (>(S_ AYC/\ ( "'H,_S__P (>Q">0 (>I!^0#_@D P M_ $B,/P =C#\ 2(P_ !$4?D "&R(_D !P AM"/\ "^@ '!A 3> M(_P % AEB/\ @ (9HC_ 5 "&>(_P " AHB/\ $ M (:8C_ "&J(_P " AKC\\ (_/ !3DU83TJ 9@ !6C Y M AEM!\ !PR.0 (9I0030\ %]A 0B,#D "&6,CD "&:-#P 7V$ Z(@ M.0 (9XB.0 (:+0N0 (::PO !L.' 1+D "&F1'D "'H0?D -D M-"@ #8H HQ0P ,4, &#%" HQ0@ B2.? &$ !Q9,WP #L+P R@ ;SP@ M/ #* !$N0 (:9$>0 (>A!^0 V0T* -B@ "C%# Q0P 8,4( "C%" M ")(Y\ 80 &TDS? ,D.0 (:[5N0 (:K2N0 (:JRO $ !L#"(\ 0 M $2Y AJK*\ %\ &\@DKP 7P 1('2O !? !$N0 (:I(Y\ 80 &?$S? M ,C^0 (9X "&6(_D "&B AFB/ AGB/! AHDA T'P '$A!4$%A M 3(,#D "&>,CD "&B80 $>&$ B)@ /Z8(_D "&T <#\Y AO"\Y M AOB\Y AOC\\ 5.3M[\ Q(>0 (<(_/ &3DY<CTAY #7#\\ 8_ M/ 93DY0CR\Y AN#\\ "!.05R/0F=.04CG__XP.0 (>S1>0 (>ID/B!Y M AXC Y AYC(Y AZ-# 0_D _X)((M@BV"+8(M@BV"+8T$%L!C \ !9@ M"+!\ !9O D) ,\ "'F4/D "&R3-]__R\Y AM$YU" L! 1 ' '9@=W M!W<'=P=W!W<' < !P ' < !P '9@=W!W<'=P=W!W<' < !P ' < !P!' M^0 YHV&FM:T,/2PR(:PY$D&(69PY$D&(69-!I.^R "(M@BV"+8(M@BV"+8 M(M@BV"+8(M@BV"+8(M@BV"+8(M@BV"+8(M@BV"+8(M@BV"+8(AK#D208A9G# MD208A9G2P$[33G5^_T?Y $ C8::_+3PR(:1D-")-!I.^R ",H=0B3*' M4(DRAU"),H=0B3*'4(DRAU"),H=0B3*'4(DRAU"),H=0B3*'4(DRAU")(AI& M08-10_$ "$[33G'2P$[3.$@F2#X;CEN.6XY;9_91BR8+EHPTPT9'-,<TQ]# M*$@^)(YDCF2.9&?V* Q0C)B+Y$PT^T 6M\QG!D9'-,<TQU')_\ T_/__3G4 M/@ P "P * D " ' 8 !0 $ , @ ! 2.?__C\\__\O.0 (>XO.0 M(?(_/ %3D[>_ ,< !1^0 (;)2@$HY ALF?VL+D C.8P8CP ",X@ M.0 (>XC^0 (?( "'N(\ "'R3-]__TYU-CP H,/#-@#B2,!\__C002)Y M A[M+ 0?D >3BY$#0P# \ !8R/ !8=@ RV"+#,L,RV"+#,L,RV"+#,L,R MV"+#,L,RV"+#,L,RV"+#,L,RV"+#,L,RV"+#,L,RV"+#,L/0P-+!4<K_Q$YU M-CP H,/#-@#B2,!\__C002)Y A[D/Q (R/ !@=@ R@U"),H-0B3*#4(DR M@U"),H-0B3*#4(DR@U"),H-0B3*#TL%1RO_:3G4P/ ?/0?D >3B0IA1R/_\ M,#P *#(\ !8T/ !-CP FS@#/#P $#X\ 9A #\T$8Z/ -80 MM!&.CP M&V$ *S01E'/_^IA #>T$8P/ H,CP %C0\ /$V/ !. (\/ ./CP !&$ M +[21CH\ !]A/-)&.CP #V$TTD91S__N80 I-)&0_D B@(WD "'N "!A M &\80#^5$/Y (H"-Y A[@ @8 !IDCG_ V/ !F$5M(C0%86C0130\ M !U60%=$;@170%9$F'P '6T(85#0? =8.C8? =- 1A0DS? #].=4CG_ T M/ !F$5M(C8%82S2138\ !E605=$;@17059$F'P &6T(8132? 98.C8? 9 M-@1A!DS? #].=4/Y (<C- !PS00 >,T( #-# )@ $4POP H#0 XDC M?/_XT$$B>0 (>[2P,1\ _E2D'Y B0B!P( !%^0 (H(D<B ,#P 8+1\ M "1O E% 8 #\1L+\ * T .)(P'S_^-!!(GD "'N0_$ L1\ _E2D7Y B M@B1R( P/ !@M'P )&\"44!@ /QT1_D ")"2?D "*"0?D CJ1?D 9S" M,#P 0#(\ %\FR"C*86;4_ 2"0_D A$0?D "+",T )CP\ $^/ ()L@H MRC-& !PC2 @84IA.E)&T/P8 -3\!()1S__D,#P 2#- "8^/ %)L@HRC-& M !PC2 @82!A$%)&T/P; -3\!()1S__D3G5(Y__^80#\/DS??_].=4CG__XP M/ !+3?D "'V'-E1R/_\3?D "'VH =,WW__3G4 =@!@ 0 P,# P M CJ @ 0 " (L( " ! ( ! \/#P\ M 'DX@ " "@ >3B ( * % ,@ ! ! $ # M !Y.( @ H > ( * @ +SP "$J8 8O M/ (6 _/ @3DY<3TYU _ ?L$./P M'^_^ ' <#^ M '0 < !P ^%YX/L?_/_[@#R >G_^__@ M !]\'SP? #\;W ?#____P.]"WSC_ M^3\' #WQ M// \#P/_SW,_#____P"Y$X#QA_!X#P P # ( M #KG@>!X'___WO.^#[__O@!<B4.XP'@_Q\P $ M\ #0 # ( 0 #KF-B'_W_X__? M.<#X__C !\Q-/#,#\/__^ "L 'P Y M #@ ) < #]F/Q____\!_?.,#X/_@ !^8S7@]!_[__9 MP!] /, M !T $P / !\R/0X$_@<!_/./#X#_@ !_ M,9GP> ____BIP%H _L Y@ !V $X M/P!^Y&,<'_P __.'CX!_@ !_W.9\'@/___XI?!D@.>P'& M !V0&X '\!^)C'>#_X ?_G'F,!WP \__C,^#P'___ M\"4TXTC@W!^X [<"< '_ _ CC^!_ MX ?_SCS!@_^ /__QC/!\#____ BO>&"X'<?_@ M [,#<,#_P_ QQ[ _L !/_]QYP_?_\#__XYS@?!____P(I7AC.!_ M'_U ( P " ]N3.'#_\_@(X\@?R W__X\\? MQ__X_\<<8P/@____X"+=X<3@/Q_\H "P ) < M]F;.'C_^_@$X^0?X ?__\>./X'___^ /.,#X/___^ R2O'&\#\/_M 6 #( M #@ 0 ! =S,/#S__/P#<>,/X ?__^''G\!____ 'C' M]\#__P_ ,VWPX_ ?#_]8 0 S \ , 0 # "SF'!X__CP M!^/''\ /___#SS_ ____P!QQO'!\?\/P#-E\./P'P__; J .8 '@ M # $ P 9F,!X!_@X!_'CS^ '___QYX_@?___X \<;P(? ?#^ Q M=O#Q\ \/_[0 E@#R (X !P # < $S'/\ #P/P_#Q[_ 0#_ M__\\</P/___\ ..&X'W@ Q_\,3+P\? /#_]: ,L ^0#' X M!@ . ')CC@!!X#__QX\_@,!____>/'X#___^ #CCN!^X $?_S&[<'CP!X__ M50#-@/R PX = 0 ' #F9QX<P?P__\\>/P' _____'A\!__ M__ QPS _, #/_\QN0AX^ ?__RF Y,#\0./ &P ( !@ !S,< M\/P/___\>?#X#P?____AP^ ____@ ,<<P/S S__<9T/?/\#__^NP&(@_F#A MX #L & X =F/.'\'____/'A$!_O_Q__X\?@/___X "/'(#\ M@ -__V&<'YS_X_^?E6!S$/\P\/ !V !$ < /9CCA^!____CC MPQX___\!_\>'P'___\ #AP!_ #__]AG!^"____@=JP.8C_F/AX M ; C & '\QQP_ ____PXX<?O_^_ '^/#X#___^ !XX ?@ !___89P? M@____X#+6/C4_\PX/ ,T 0P# #^8\8?P?___\,>//X?_AP!_ M#@X!_O_^ $<. /X ?__^.<'X/___^ S5C$S,?$/#P '9 $<! MP _F..'X'___^#/#C\!_P _QX> ?[__@ !/'@#^ '___CG!^#____@,VL MPV+ YC\> !LP"/ 8 ?S''#\#____ CQY_ ?\ /\\'//\#_SP M SQX _@ !___XYP?@____X#-ML.!P',__P R8!'@,! /]QQP_ M____P!X<_@/^ '_/#S\_ /\_P-X< ?P ___\.</X/___^ S+?#C,!_/_T M ( @ " 9D AP& P'_XX\?@/___X <//P#_ #_W@X^#@'^/_'>/$'\ / M___#G#^#____@,35P\W /S_\ @ .S (\#@,!_\../X'___^ /'C\ M!_P _]X>/@$!_S___#Q#_ #___PQP_ ____P#&V\'&P#\__H @ " $ M#9D$> P' __''#\#____ #AX^ ?X ?_\'#P#P_____Q\8_P@ ___\,</P/_ M__\ QMO!QL _/_Z ( @ ! !FS"' 8#P?_CAQ^ ____@!X\/@/^ '__#Q M\ \/____\>'WX/@?]__#'#\#____ ,;;P<; /S_^@ " ( 0 ;,Q3P# \? M_PXX_@?___X </'P#_ #__@X> ?'____^'CX.#_'^#_AQQ_ ____P#FRN'& MX#\?_@ @ " $ &V<78 ^?'W\<>/P'___\ /'A\!_P __X>/@'Q_____C MX^ ___@'X<<?P/___\ YDSAPN _'_[ $ P @ MF!QD?_Q\'&''X#___ M^ #AX^ ?X ?_\'#P#\_____P\/ /O__P &'''\#____ .9MX>/@'Q__P ! M , ( R9BX>'_X^ 3CA^!____@ P\/ /\ /__#P\ _/____\?'P#___\ MAQR_ [__?P#F;>'CX!\?_X 0 # " -L8N/A_^/@$PXQ ?'__P ,?'P#_ M #__PX? ?S____^'AX!___^ <<!P,'__\ YFWAX^ ?'_]@ " X 0 #;, M+CP?_#X#<<,,/P/__ "'AX!_@ !__X>'@']_____AX^ ?___@ /' # /__ M .-EX./@'Q__8 @ . $ VS"X\'_P^ V'''_\ /__ CX^ ?X ?_^'AX!_ M?____P^/ '___P #AP!XP ?_^#C9N#AX!\?_\ H #@ ) %LP./#_\/@-C MAQ^' '__^ \/ /\ /__#P\ ______\/#@#^__X 0X\ ?T __^XR;@X> ? M'__ * X "0 !7,##P__#P#8X\?@ !___\?'X#_@ #__P\/ /______#QX M_O_^ $>. 'X ?__^,V(/'@#]__L "0 / B !EG%Q\/_Q\ ^..'X$ ?___ M'A[Q_O !__\>'@'^_____A\> /[__@ !'#@#^ '___C,ASQ_ ___Z D #P M (@ ;9A<>#_X? ?#CC^! '___SX^__[^ ?__'AX!_O____X>' '\__P SQY M _@ !___QS,_</^/_W\@ ) \ "( "V8''A_^'P'QQX_ 0#___\\//P\_\/\ M/SP< _S____\/CP!_/_\ ,\<0/P ___\8S/@#___X/8 #0 / R IF!AX M?_AX!\<</P, ____/#S\ /___ ,\/ /\_____#P\ _S__ #.'$'\ /___& M,SX.___^ 5 R #X ,0 *QD8^'_X> ?''#\# /___WQ\_ /___P >#B'^/__ M?_@\> /X__@ !WCS!_ #___QF,^'____@!0 @ . #$ "LQ&/!_\'@/ASQ_ M P#___]X>/@'___X 'AX]_C__P_X?'@#^/_X =XXP?@ !___XYG?A____X M4 T P _ #+,;CP?_#X#XXX?@<!____>'CX!___^ #X</CP^/\'\'AX!_C_ M^ '<.,/X ?__^,9GP>__[\ = - , /P VS&X\'_P^ ^..'X' ?____#P M\ ____ \'#P$/ ?#_#X\ ?P__ #_'C#^ '___C&9\'O_^_ '8 #0 # #\ M %<S,/#_\/ /#CC^!P'____P\? /___P /#P\ SP P_\\/ /\/_P _QYP_@ M !___XQF?![__OP!H !H !@ ^ !6<S'P__#P#QYX_@<!____\/'P#___\ #@ MX. ?X ?__'QC_!_\( /X<<?P ___\<QOP^__[\ : : 8 /@ 5F/1X-_@ M,!\<</P/ ____^'AX!___^ X>'@'^ '__QX?_@#^#P'^/''\ /___&,SX M//_\^ .@ &@ & #X #9C;>!CX!P?'''\#P/____AX^ ?___@ .'!X#_@ !__ MX>'@X!_@_Q_CSQ_ #___QC-^#S__/@#H !H !@ ^ F9FXA8> ?WQSQ_ \# M____X>/@'___X ##P\ _P __^/CX! ?\/__PXX_@0!___\8S?@\__SX [ M: 8 /@ *F9F&6'X'_\\X?P? ____\/#P#___\ P\/ /\ /__#P\ \/_S_ M_\>./X$ ?___.8WX?/_\^ .P &@ & #X &LF)QY@_Q_^../X'P?____#Q\ _ M___ ,>'P'_ #__Q\? /S____^'CO^!@'___S&=\'S__/ #0 #0 # \ ; M-C<.,/\/_CGC&!_G_Q__@X> ?___@ "'AX!_@ !__X>'@']_____CQZ/ ?#_ MC_\QF_!X__CP!T T P / &S8W#C#_#_XYPP8___\!_X>/@'___X CX^ M?X ?_^/CX!_?____X\<@ /__X#_,9OP>/_X\ =@ - , #P #4V$PXP_P_^ M.<<'____ #^'CX!___^ \/ /\ /__#P\ ______\./ 'C__\ 'W&;\'C_ M^/ '8 #0 # \ 5LQ./$'\/_SG'!\?_QP _!P\ ____ ?#P#_ #__Q\? M /______'C@!^?_Y =C&^#X__C@!V T P / #;,;CQA_!_\YQP? _\ M/P\? /___P 'AX!_@ !__\>'@'^_____AQX _C_^ 'XS,@\#_PX ]@ - M, #P !V3"X\8?P?_.<<'P/_ #\.'O'^#_[P 3X> ?X ?__'CP!_/____P\ M< /P__ #\,V./$'\/@/@ "@ & X 9FPN'&'\'_SG'!\#_P _#C[__@'^ M_@$\/ /\ /__SP\ _S____\>/$'\/_P _&-CYQ ?#_C\ H !@ . "IL) MAPA_!_\YQP? _\ /QX\_CP!_/_#?#P#_ #__\\> /X____^''C#^#_X ? MAF9^$0'P___ * 8 #@ [;!<<,/P/_&<<'P/_ #\<//P _S__WAX!_@ M!___>'@'^/____CQPP_ _\ /XQL?!T#_O_]P "@ & X .VP7'##\#_QG& M!\'_P _''S\ P/___]X>(?X@ ?__WCP!_#____PX\<?P/_ #\8S?@\!___ M_( @ " $ #ML%QPP_ _\9Q@?!_\ /QQX_ <#____>/#_\/@/___P\0_P M____\,../X'_@ !_&9GX> ?___B ( @ ! 5)!,<$/P/_&<8'P?_ #\< M>/P' _____#P\/#_#_#_\>$/X/___^#'CC^!_X ?S$S\/$/___P M@ ';0+C!A\!_YG.A\'_P( _&'#X#P?____QX? ___P'^'#'\#____ AQQ_ M _\ /]C)N#B'_[_X0 VT"XP(? ?^9SH?!_\" /SCQ^ \'____ MX<'@./__X ?CQQ_ ____P(\<?P/_ #_9FSAY!_\_^( &M *,! MWP&_F<Z'P?_ @#\X\?@/!____^/#X#___^ PX>_@/__?X >./X'_@ !_\3, MP\0__/_" U0!+ /\ QYG.A\'_P( _..'X'P?____#@\!____ M (>.AX&'_W^ '''\#_P __,F,.(/_C_A %8 #@!^ $&9SH?! M_\" /S#C\!\/____QX? ?___P "/#H !@/]_ #QS_ _\ /_F;"'D'_P_X@ M !J "8 ?@!AV<PGPQ_ X#\QP_ _#____X</@/___X 'AP!XP ? M_^ XX_@?^ '_S-P#S#_\/\( -0 3 #\ ,$G,.<,'P/X_<<?P M/P____^/'H#^__Z 3PX _D !__^><?X/_@ !_\V8 X@_^#^$ M !L "0 ? !BMS)P#@\!__W''\#\/____'AP!_/_\ ,X< ?P ____'.,#[P M <__9L >0/_ _B , 4 #P ,I,R<.X/X?_]AA^!_'____QP\ M _S__ #>.$'X ?___CC!A\^ /__\W /,#_P/P@ !0 < M!%;DSAS!_S_\8XY@?I__?_X\> /X__@ !_'##\ /___QQP_?/^#_W^;@'F M_X#X0 ( # +B9&X<X?\?_&,.$/[__P_^.'$'\/_P _C MAQ^ '___YYY?@C_]_X/DP!Q /\ \( ! 0 !:V8G'N#_ M'_YC'![\__\!_'CS!_#_\ /QP\_ #___\\Y_P>___\ 38 \@#^ /$ M )4V,P[P_X_^8QP?//\_ /QQYP_@_^ 'X8^?@$!____ M<<SP//_\\ /N "8 /@#A #5LE..\'_/_F<<'P#_ M P#\\\</P/_ #\,>/P' ____^>9X'C_^. 'N !@ !@ _@ M 6I()CGA_1_YF.1X'_@ !_^./GX!_@(!_&//X#P?____.=L'Q__# M#_ S \ /P "S:!<8\/R/^)CD>!_X ?_'GL>! M/X#X?S'G\!\/____G,V#P__ @#_ # \ #P 5 M2@3&'#\3_B9S'@_^ '_CSR W\ __]CSN ^'____G.W#X[_@0!_ # , MP "FD.YPH?!?\F<QX/_@ !_QYX >?_X/__QYS M?#____SF7AXY_@<!_P ,E N,#GP'_ M)F8>'OX! ?\YXP?A__[_X8]Y@/A____XG;A\=OP. _X M U0"# /\ 3RSN'03$%.15]#5, !$9'7T-/3 P &0D=? M0T], # A/4%]404( , "E-?6$U)3@ P .4U]934E. M # !!37T9/4DT , $E-?3EA71 P 64U].6$Q. # M !A37TY84$P , &D1?6$U)3@ P <1%]934E. # M !Y$7T9/4DT , ($1?3EA71 P D1%].6$Q. # "9$ M7TY84$P , *%!?041$4@ P J4%].6$Q. # "Y07TY8 M4$P , ,%!?34%32P P R4%]"3$]#2U_ $Q+1U]"3%0 M , "@!U9"3$%.2P P !P4D5: # #_@F!6241?2$D , M /^" 59)1%],3P P _X(#0DE/4P # U"0T].4U1!5, M 4)#3TY/550 P #0T]. # )+0D0 , !$58 M0DE/4P P .4$A94T)!4T7 )'151215H , !%-%5%-# M4D5%P %4T544$%,153 93151#3TQ/4L !T-54E-#3TY& MP 524M"1%=3 # !E&3U)-7TA4 , 8$187U-(041/P M <1%E?4TA!1$_ A8, , !0 %DP P " M5E@P # ! !663 , $%9, P " 6%]- M24X # !87TU!6 , ,H %E?34E. P ! 65]-05@ M # !? !#3TQ/4E])3L #__W9?8G5F7V%DH0 "'N=E]S=V%P "A M (;)V7V)A<U]A9*$ A\E]M86EN @@ <W!?<V%V90"! M(;AS879E7W-T88( ('-?<F5Z @0 "&\9V]?:&]M90"" M9S M7W9I9 ($ AOG-?;'5T @0 "'"<V%V95]L=72" &!B86QL M7V-O;(( #9&-O;%]L:7-T@0 "'B8V]L7VEN9'B! (>9C;VQ?:6YC M<H$ AZ'1I;5]I;F-R@0 "'L8V]L7W1I;66! (>IV8E]S879E ($ M AM&YM.'( @@ +Z>%]V8G5F "! (99Y7W9B=68 ($ A MFGA?=F)A<P @0 "&>>5]V8F%S "! (:)V> ($ AIG9Y M @0 "&J87D "! (:YD<F%W7VET (( !.')E<W1? M<W1A@@ *B>%]N;W0R<VV" <IX7VYO=#)B:8( "#GE?;F]T,G-M M@@ (T>5]N;W0R8FF" EQK8F1?8FQO8X( #7&YM.')?96YD@@ M -*;F]T,FQO "" SQN;W0R:&D (( #1&)I9V)A;&P I CJ M;6%S:U]M86NB !%AB;VEN:U]B;*( #E'-H861O=U]BH@ /Z8F]I M;FM?;&^" YIQ=6ET7V)L=(( #^&)L=%]T;W=E@@ .V<VAA9&]W M7VR" ! )S:&%D;W=?=(( $%FYE>'1?;&EN@@ 1:9C%?;&]O< "" M !%QF<FEN9V5?,8( $:&-T7VQO;W @@ 1X8FQT7W1A8@"" M!*)O;F5?9G)I;H( $F$)?5T0 P 0E](5 # )0 M3$%.15]#5, !$9'7T-/3 P &0D=?0T], # A/4%]4 M04( , "E-?6$U)3@ P .4U]934E. # !!37T9/4DT M , $E-?3EA71 P 64U].6$Q. # !A37TY84$P , M &D1?6$U)3@ P <1%]934E. # !Y$7T9/4DT , M($1?3EA71 P D1%].6$Q. # "9$7TY84$P , *%!? M041$4@ P J4%].6$Q. # "Y07TY84$P , ,%!?34%3 M2P P R4%]"3$]#2U_ $Q+1U]"3%0 , "@!U9"3$%.2P MP !P4D5: # #_@F!6241?2$D , /^" 59)1%],3P P M_X(#15A"24]3 # Y315130U)%1< !4)!3$Q?2%0 P !@ M0D%,3%\X5P# & !"04Q,7SE7 , ; $U!4TM?3$5.P 2"5E]" M549?5T3 *!314=?5T0 , 5-%1U](5 P !4T5'7U94 M # !E314=?2%H , '4=!4%]65 P #1T%07TA: # M -415A455)% , &)A;&Q?;6%KH@ >(9F]R;5]I;F2A M(D)M87-K7VEN9*$ B@F)A;&Q?9')AH@ <0<VAA9&]W7V2B !U!G M<FED7VUA:Z( %SF)A;&Q?<F5PH@ 48<W=A<%]N7W.B !+YS:&%D M;W=?9:( %A'9?8G5F7V%RH0 @4B<WEN8S)V:62" !.1M87A?8V]U M;H( (SG-W87!?<V-R@@ 3\8F%C:U]A<F6! !Y.)R7VQO;W (( M %1&5?;&]O< @@ 6D8VQR,E]L;V^" !=AB;&%C:U]B;X( & M]G8R7VQO;W @@ 7^=E]W96%V97*" !KIH,E]L;V]P (( &/&A? M=V5A=F5R@@ 9^8F%C:U]B;&^" "*!D;U]B;'0 (( ((FA?=V5V M7VQA@@ :L:%]W979?;&^" !I1H7W=E=E\P (( &GFA?=V5V7W%U M@@ :T=E]W979?;&&" !NAV7W=E=E]L;X( &T'9?=V5V7S @@ M ;:=E]W979?<76" !O!L:6YE7V)L;X( (<F)L=%]B86QL@@ =, M8FQT7W-H862" !X1M87-K7V%R98$ &<PF1O7VUA<VL @@ @48F%L M;%]B;&^" "$1F;W)M7V%R98$ BPF)A;&PX7VQO@@ ?*8F%L;#E? M;&^" !_1B;'1?8FQO8X$ A]FQO861?;&]O@@ @P1$]33U5.1 # M "!%0DE/4P , #F)N8V9L<@ H@ C28FYC=V%L "B M"-IF;&]O<@ (0 A*F)N8P @@ C@=V%L; "$ (6 M *( X(#@8(/ 0(" @&' H&$@H*"@H*"A@*$ 8.!@80!@8X!@8J!@84'!($ M!@0&!A0&$@H&!A .$A8&" 8&+ 8*0&C*!A((" @&!@0&' AD/H0&$ :$* X* 2*! :!@8&& 9R#!X.( X@(@@ end -- god bless Lily St. Cyr -Rocky Horror Picture Show Name: James Turner Mail: Imagen Corp. 2650 San Tomas Expressway, P.O. Box 58101 Santa Clara, CA 95052-9400 AT&T: (408) 986-9400 UUCP: ...{decvax,ucbvax}!decwrl!imagen!turner