Path: utzoo!utgpu!watmath!uunet!labrea!rutgers!noao!arizona!naucse!jdc From: jdc@naucse.UUCP (John Campbell) Newsgroups: unix-pc.sources Subject: ``picture'' pictures and source (part 2 of 2) Keywords: toy, 7 grey levels, pictures Message-ID: <1085@naucse.UUCP> Date: 23 Dec 88 05:00:40 GMT Organization: Northern Arizona University, Flagstaff, AZ Lines: 760 A lot of people responded to my offer for ``picture'', a 3b1 program that displays 7 grey level 240x150 pictures. Lenny suggested I post the program (and pictures) to unix-pc.source, which I am doing. The posting is in two pieces. This is the second of the pieces. #! /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: # picture.c # picture.l # pig.uue # shuttle.uue # skull.uue # This archive created: Thu Dec 22 21:40:31 1988 # By: John Campbell () export PATH; PATH=/bin:/usr/bin:$PATH echo shar: "extracting 'picture.c'" '(8169 characters)' if test -f 'picture.c' then echo shar: "will not over-write existing file 'picture.c'" else sed 's/^X//' << \SHAR_EOF > 'picture.c' X#include X#include X#include X#include X X#define DEFAULT_PICTURE_LIBRARY "/usr/local/lib" X X#define XSIZE 720 /* 45 *16 = 720 resolution */ X#define YSIZE 300 /* 348 hah!, best is 300 due to 4 "special" lines*/ X Xunsigned short g_display[YSIZE][XSIZE/16]; Xunsigned char A[YSIZE/2][XSIZE/3]; Xunsigned short ur_pat[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; Xstatic struct urdata uPC_ur = {0, XSIZE/8, 0, XSIZE/8, X 0, 0, 0, 0, XSIZE, YSIZE, SRCSRC, DSTSRC, ur_pat}; X Xextern errno, sys_nerr; Xextern char *sys_errlist[]; Xextern char *getenv(); X X#define IfErrOut(e1,e2,s1,s2) if (e1 e2) {\ Xfprintf(stderr, "%s:: %s %s\n", sys_errlist[errno], s1, s2);\ Xfixwind(0);\ Xexit(1);} X X#define display(src,dst,srcop,dstop,pat) \ X {uPC_ur.ur_srcbase = (unsigned short *)src;\ X uPC_ur.ur_dstbase = (unsigned short *)dst;\ X uPC_ur.ur_srcop = srcop;\ X uPC_ur.ur_dstop = dstop;\ X uPC_ur.ur_pattern = pat;\ X IfErrOut (ioctl(0, WIOCRASTOP, &uPC_ur), <0, \ X "ioctl failed on", "WIOCRASTOP");} X X Xmain (argc, argv) Xint argc; Xchar *argv[]; X/*- X Program to show pictures on the 3b1. In order to create a grey scale, X the 720x300 screen was viewed as 2x3 pels--allowing all pixels in the X pel to be off (0) or on (6) for a total of 7 grey levels. This reduces X the addressable screen (in pels) to 240x300. X X The images are coded as '0', '1', '2', '3', '4', '5', '6' (and '7' is X allowed although it is treated the same as '6') pixel intensities. The X image is viewed as 150 rows with 240 ('0'-'6') characters terminated X by a newline. Thus each line (or row) is 241 characters long (counting X the newline). This format allows editing in vi. X X Pictures may be compressed (saves 70-90% of the space) and ``picture'' X will show each (possibly compressed) argument until the argument list X is empty. X X Every attempt is made to restore your screen to normallacy in all exit X paths prior to leaving this program. (All of the screen except the X bottom 48 scan lines are used for pictures.) X X Extensions to this routine could be easily made to have a number of X bitmaps (instead of just g_display) and toggle (with ioctl) between X a number of these pictures relatively quickly... It might also be X fun to see what /dev/kmem ``looks'' like as a bitmap. X-*/ X{ X short i, j, x, y, zflag, iarg; X struct uwdata uw; X char cmd[120], fpath[120]; X char *picdir=getenv("PICTURES"); X int fixwind(),c, len; X FILE *fd; X X if (argc == 1 || argv[1][1] == '?') { X fprintf (stderr,"usage: picture file_name [ file_name ]\n"); X exit(-1); X } X X for (i=1; i<=16; i++) X signal (i, fixwind); X X/* Increase the screen size */ X uw.uw_x = 0; X uw.uw_y = 0; /* Leave room for top status line. */ X uw.uw_width = XSIZE; /* 720 */ X uw.uw_height = YSIZE; /* 288 normal--we clobber 12 (top row)*/ X uw.uw_uflags = 1; /* Creates with no border */ X X IfErrOut (ioctl (0, WIOCSETD, &uw), <0, "ioctl failed on", "WIOCSETD"); X X/* Turn off the cursor */ X printf ("\033[=1C"); X for (iarg=1; iarg < argc; iarg++) { X /* Position the cursor to prevent scrolling. */ X printf ("\033[10;1H"); X /* X Try to find the file as name, $PICTURES/name, /usr/local/lib/name and X determine if the file is compressed (zflag == 1) X */ X zflag = must_find (fpath, argv[iarg], picdir); X X if (zflag) X sprintf (cmd, "zcat %s", fpath); X else X sprintf (cmd, "cat %s", fpath); X X if ((fd = popen (cmd, "r")) == NULL) { X fprintf (stderr, "can't execute zcat %s", fpath); X fixwind (0); X exit(1); X } X X /* Ok- build the A array from the picture. */ X x = 0; y = 0; X while ((c = fgetc(fd)) != EOF) { X if (c == '\n') X continue; X if (x < 240 && y < 150) X A[y][x] = c - '0'; X if (++x >= 240) { X ++y; X x = 0; X } X } X pclose (fd); X X bit_fill (A); X display (g_display, 0, SRCSRC, DSTSRC, 0); X center_bottom (fpath); X getchar (); X/* Clear the display buffer. */ X display (g_display, g_display, SRCAND, DSTSRC, ur_pat); X } X/* Clear the display. */ X display (0, 0, SRCAND, DSTSRC, ur_pat); X X/* Fix the window (reset scrolling to "normal" */ X fixwind (0); X exit(0); X} X Xbit_fill (A) Xchar A[YSIZE/2][XSIZE/3]; X{ X#define PLOT(a,b) (*(a)|=(b)) X#define SBIT(addr,y,x) (g_display[y][x>>4] |= lookup[x & 0x0f]) X int x,y; X static unsigned short lookup[] = { X 0x0001, 0x0002, 0x0004, 0x0008, X 0x0010, 0x0020, 0x0040, 0x0080, X 0x0100, 0x0200, 0x0400, 0x0800, X 0x1000, 0x2000, 0x4000, 0x8000, X }; X/* X a = &g_display[(YSIZE - 1) - y1][x1 >> 4]; X mask = lookup[x1 & 0x0f]; X*/ X/* X pel made out of 6 pixels. X X ------------- X | 4 | 1 | 5 | X +---+---+---+ X | 6 | 2 | 3 | X ------------- X*/ X X for (y=0; y 'picture.l' X.TH PICTURE l X.SH NAME Xpicture - show pictures on a 3b1 (240 x 150, 7 grey levels). X.SH SYNOPSIS Xpicture pic_file [pic_file] X.SH DESCRIPTION X.LP XPicture is a facility for displaying specially constructed ``images'' on the X3b1 bitmapped display. These images are coded as 150 rows of 240 bytes each X(terminated by a newline) containing '0', '1', '2', '3', '4', '5', or '6'. XThe result is mapped onto a 720 x 300 screen with a pel (pixel element) formed Xout of two rows and three columns (720/3 = 240, 300/2 = 150). XThe resulting bit map has 0, 1, 2, etc. pixels turned on in each 2x3 pel Xdepending upon the indicated grey level. XImages are stored in ascii and may be edited with an editor. X.LP XImages are typically 85-95% smaller if compressed. For this reason ``picture'' Xaccepts compressed files. If a file name is given without the trailing ".Z", X``picture'' will first try to open a normal image and then search Xfor a compressed image. X.LP X``Picture'' looks for an image first in the current directory, next Xin a directory pointed to by the environment variable PICTURES, and last Xin /usr/local/lib. Together with the possibility of trying Xto open a compressed file there can be a total of six access Xattempts for each file before ``picture'' gives up. X.LP X``Picture'' has no options, it simply displays each argument in its Xargument list as though it were a well formed image. After displaying Xeach image ``picture'' waits for a carriage return before going on to Xthe next image. If there is an error, or signal, a trap is invoked Xthat restores the cursor and resets the screen to Xa ``normal'' state. X.SH AUTHOR X.nf X.na XJohn Campbell (CAMPBELL@NAUVAX.bitnet) XRt. 4, Box 952A XFlagstaff, AZ 86001 X602-774-5375 X.fi X.ad X.LP X.SH BUGS X``Picture'' does not know about tam. If called from ua or other tam window Xenvironment the screen is not set back to normal. Also, "grey" scales Xare shown in various intensities of green. SHAR_EOF if test 1938 -ne "`wc -c < 'picture.l'`" then echo shar: "error transmitting 'picture.l'" '(should have been 1938 characters)' fi fi echo shar: "extracting 'pig.uue'" '(12576 characters)' if test -f 'pig.uue' then echo shar: "will not over-write existing file 'pig.uue'" else sed 's/^X//' << \SHAR_EOF > 'pig.uue' Xbegin 644 pig.pic.Z XM'YV0,F3,$!BP8(P8!1,B3&AP(<*#$!_&@$$QHD6+,@[".)B1XD:-$RN&](@1 XM8L 9 R^J/#@PX\F "&:!!V:%#@P XM)U&?! D58]ZF>YEF?_*B6H]6(8]E2KGS7 XMLN2K3R]7#DA#KEV86U.[5!RUJL2G'/NV1CDX)N"6@-5R!JH :NZ3?F&CE0V9 XM[5#.:\]R1KU4)?*E1)L./;Q5)G.PHVOZ!!Q4X-'2R)FCC7J[/$/'-MM:G8H> XMM735"KL&_LKW[$;C13WB]_I\+UJ>+_54U4VK/024;DCEQ%U;!95FW71;.>=4 XM4X"!EQ=T%,H WD&)M:=57O$-%UM1:AEWEE?ZC;A?A%]9Y=]XU\GE(50@9N0@ XM4Y=-J"%#T$5V5$H#T8!2D#?EAJ%@TB'$GEZHU93;@L2ME=]^4TY'95&XM>7C XM<:H9*!B/\%U(V()_>:?04U@12-Z.0.&FVV]X(?9D;7KI^!R)(+&8W$9BJ;3B XM0U0H>2'KY5Y)V0D?@K2 XMB1.-6*ISLC$J%&RK9M5FDK=%$EWP[UNKDD&".29"0N@J4V(5^M3>< XMJ'#YF1F>7XW&7YS9+9=4;,L)Z): $-ZE6W>T$2@:5-3&(.20-]8*9Y.*6<@M XM2J4I -11)?VF+7T=_;FG1E>:RA6RW7&*8';?>I>M6^$-S)AOV$V+(8W=*J9C XMHHSBQ:U@-/3V8F!B@BLEJGY.%NJ=PD'G9).WUE929-?>&J]=7D9+U+5480KM XMS VG%*=C&;:+YLNLL9:?HK*W%5SV9D XMS&S>1IK# R*EE7J$(3:UK=K"V>FGF_%[JIZ6OY75D#/:IFMPA"7K:MU$H]IY XMHJ>E_C#%#K^7^%(RSS!LS[1N&*Y_^"5]ZJC!,S:ZANCA/#7OV_(<<;79Y]UY XMR6W_M/55M(&>M$YZ"?D\I#6Z2#9FQPG5EW$-4?;YZ1/SGK;&QR^J"6PZGTE/ XM@.3EM+@E;%8)PYW50D>Z2J$$;'];&]D,A:O@X<<_!&.>2QI&++A(C#_%\D]A XM.&>Z\9D0._UZE*-LT[Z78,USY,'=_*HFPQ!!;FD_4QN43/*D&MX/-$GJH%\, XMIK;4P&L[,)$@;1#FK\F9ZSSMD]FX;K3#Q'T(9LB27>.:.$0'ZF]+9_K4O\+C XM+"=RKE/L4QY3: "L 7DO9J*K%4[R2!I>?:V'H9G9$8&&O^SQ[HS- J'"0(.K XM[$2N:RSHD1>_0!(MP0R#A) XM+I&-3RSEP7X8JE)VSY*8I*,1NY8W=B&O59*#&(&F DB,P8V#ABP),L'7GT0Z XMDY$%8AJ,6GG*XW )3D+"9 VV60,V&0])?L31)J]8,^,-6Q% XMCP-@N+04R7GNK(F/N^?T8E.#&6A32#=ZF'FP1IN^U:Q;?@QH0D;9PF/:BE% XMS-XY'JL[#54Z*AY*?CTIMW+/0E]?G*@FM*7Y-8&L66JC-SG"&5 XM$IN9,K'ECY8)2V ;NRJN2F;3DI6LC%^UN4L-3>Q#PJR30&6V1I>P5(YB8IW& XMGO*1^WQ,5,1J)OLR]QH@UK*:&!DL-[E) QN,U@:E)>UH+SF@TI U8GZS4Z/ XM0Z;XL)5@/FRD9#$3J(M%CD"IC.I,U=95#6W3M*:M07*7JUSD*I>TR[UD8.<8 XMV)W ,(=F+1/CN%/0EO3&@8HC'^125LC+YG1>J>+7&4$;/('PL[2I?:YS;4#? XM^3;WN:OMIM4&RKK4M>92&6ILNI#T749BU)DXQ>A+%;E"VL5RFGPET25/"U_D XM(C>U]&VN?>6KVCJBM8'DA&" R_I-@A3X8,_"K3OEV2R<#!!XG"7:XKHJ)-0F XM][C*Q?!QX3O:'L^WOJO=)$C%0\61J0^M1L2B30J\6WW]MH0H"^//XVCC'%@;SA'N,8PMGF)LVH6-'R4K##(Z8J&7=Y('ZZ>1 XM#IG04P>)PBD7T,&L3%:$9<#E'7^9PQON,FK)O,T*WW?16>1>1ZN[+M(M[Z0 XMS95!%- W7;H6*6&58ON,ZC"*9OE8I]XHT!P9X4HZEYNO+O.$8YUC1G^4N5W& XMY)!^6DF_5C(HW;LNH%CCNB+;E@4FP:%&\^#XJF XM".MZ0. ET[VT1O1QSPQK^=KWS!7VEHQOFL=I,*)PX#0&4<@!:F0 XM>SWM2>,[L)\&.$JW^*M_$VEOL\U505_;)+*BAX@.XR>NS5S?BI_YQ_+%\+GQ XMF^M\Y[+7N1RR&R$.NM$@_*P9X72EQ%G=7N<[VM--]I"!12']EZ:;.-Y0;A]]&WR MM[CIJW&+XQ?1%PYSK#.L:, BW:.6;+?>U(0I XM!FVM;RPO7#CU#7#NY;OL0A_=S*<;=*3RN[LZ)Y? /5IPP :VF_K&T:^ +LY. XM_U7JL-:XHZG^:(M7W-P<5CJB[>[R2TZ8[G@?R)IS^&E#F?3CNF/1CR0;WQXJ2?Z XMM(@'ZE_SR]I)9[/E+J\NX%IN=5ZY5GZ?GGGT;XYTF+>$\Z?OV^2S3W#.IY[7 XM!._CV]?,[Y .IMH 'S.7;_]EBD,]\8J'.N$+#V8,%VH".$?4YW; @C6.]X'R!X(:-G%4IW'XE6Y4-P.' XMMG[M%W5CEEPM^'K-EWD#!W18UW^I5TD%6'MO)X1DUX!ZUX*5-'FZU$=RF$M XM)7?^=Q($]U71-F1#YX/\5']/9WA49X@K"(4E.'B/QF-5-X@[!HD?MW>Z9'P- XMTGC3UH2@5W;-YBY-2',#F( "^()F1X><:%T*J&8?YX2H%VU!07:2QCTW6'GL XM4FZ IW2*.(6(6()3&(5BMEJ+]H49AVM:QX<@)XL!=WIM"(%KXB#(YDOXMHEM XMEVRAZ(,]QV]FAQ#_]U5G>"-_U3!IUWW]-X,D16;A9HL>J(N[MWOI2'A3%W5E XMQFC1%8S1Q7I^&'FRUW?8EX.:N$D%>'/>A'V?)G3)IG;+6(U\F'HNZ$O=5(0% XM50,Y%WUWQW=X2&:#=V'C]H%6:&8$.J XM9U@)6$Y,88--86WEL7_8)TYUUX8^1Y.KIW_\)X/O%G1S))1DEX+Q^'30-6M< XM:&Y8&(^\6(*)J'N%J(XH&(PJB))JAI6HEXS+UQHO5R[>N(8^5R%^979>:5#; XMYWPW&"1MQVO&IX,E)7D@]U$?I8K$N&%9I9%W+5IX2A5B&?!W#] XMJQ6P4Z&.DI7ZF^5[-EG:+]FHI.(23=XF[:93M)J&Y69<3RG>^ XM&8K3AU3%N9QF^)4!*7-I.'178X08:IU_V9U(J8Z)YWZ[&)**&%^&]H0W:EKQ XMU6[127<*0GI@57S4&:%X.&99F3-L$FI]QW>:5Y\#2"27^:'D H&]9HRL:(2A XM29@'VGL@>8*&.&[M:* BR*5,QZ"#F7'W)YTM67?2R(EMV7A$ZG@X6*5Q!TZ9 XM6'Z>6'9/ZH8Y&'-P699ZBH'6Z%%.N:4NJIM0::#O)Z:'B8*WR:572(2AUU;& XMZ7(&B)5"2)<'.*?EIX3I-W?09Y:@^'_Y=HW(PX "N*%Z*%KPEY&#F6A]N73L XM.'^\MZ6M6IV/^J+\5YJ9?VJ(D&9Z,9J$/6FL=IJGZ-U[B)U34J(-9R7H* XM.)3"^GHQR!XSJ(PO"8OB>(W'REK46*%/>9%-.9O968@>F9$#NZ#A"HGH:9(1 XM"J"$51HP(0U>*5DZ7_)QX-R27H)^"NJR(5>MJWS XM:*.X!ZG?:H('RW%9VK 6JJ&)*:$5>K-J-'+#N9DS"U9X2$%D^*D0J&_TNI79 XM9Z\\^(F_B7UX)VG8R;)\*74\!GQ:&H),R9H;MTT72[,5VFA?NYLH";0@]6VC XMDZ;M.K.PN+27"GNZI')Y9T$2>:Q,^I@(Z(.[NB-*]X3JMH6+-Y*OBK4K*[ V XMZI.Z1E@]J6L."+8^B4N[.B[L9(?4V9B.9ZEU.K<-N80U@&QA]6_0)I#MN9[6 XMYVM/6Y'PJ)$F":93=U\9J6.R"I[/E6X6"7XJNFM8Z;.X2K-:Z2 K83W3 :4' XMB7ES&WH$%WEQ26?P&8C3:**8BX8.XH(J:6NTEKKQ)YNSVHB*:H)Q.H2C6'[] XMUJF1!YUHNZO3*6T;VVT8LH'TR12NY[G):KP@=6^9R7<"R7-+2)1;=("$:IZ XM:6NGR:AD>K4O2GQ%:G?S69^$<\ 'S&X/6WW.-W87GT'IWI2P8^ XTTS68&Y4K+;^%7J-X*Z69%)F8O< XMZKKC:9-@/!LME&HR!J])JK?1^)YE9R9N0Z%)18V2&YG.HY LUWURV(,4(JW/ XM!YLW>IM0C*MDQF2Z$J'(9186V ^+3!2D&5RE_+2XFX XM,;QL@KQY1ZIR=Y\\Z)9S>+'R6%IC"[;D2WQS6+@P"UU:2*C!_':[@T\RYJ/< XMZ&X=!EBG;+M,P9E]NH Q",'@@AZ89%Q:_(*^1GMQJ9E.BL!0FH9A XM"9K;3(-3NIDXHJFPZ86V!L6/W,[H'*&IN\GY%9WS&4+WQ*S35W!!6LX@4I:5 XMJY.!R*YZVZQ$:\,GVKE2,=(/Z:D#68IQ.HA@>,(2^KBIFIXX.I+42X&56(=X XMUE4+)Y1 +#K?.*'_PHUP^(:,[,BVJYE4&GHHT;X;^"N;%\Y.NGR/F::E:9X\ XMS9MN.<_ZIUH!FL*9S'C*1TOEXZGTRW(?RRO4HHP06;S+B;%$PI\M6= #C5TA XM.UTO ;< "<@K#7(6FM;F%IBYRZ.6[,YO3'SZ6L_*P\=>(<;\:(93FF0,QL/A XM^)!L%X3)9XV"*F>)K6E99Y9\F*?0:(>>JXJ3?9M(F=%%F$VT;:0XRYF;$R;> XMEE['&H?"RGWZVDS/EZH_-Y$@&\D/+&?D4;^0_(JZALB!I7()/5AP:IHG',(W XM!J"V?;($'(: :#?RT5EZ98=2'<-]ND4/2[IOXGJU2WJ2YJ?=\I[)^K%S6R% XM^!/+&E8.")J17;.S*]X4:Z3F2KN#C%D1%A9%A:5 O+SIYVGB#:QDB=W-S9:D XM5XW/.[I/FIS[&$4#C8V]9MA%*]'A>G8*.8:4F], "LJ MN#Y0[]]+>()S7-^ XM%X:8J%3KJHRUV'F1"3CPC<8Q")^P#-;+EZ<.*-L,NL)N85V@$WWDG.+""=?? XM1A\K!WFGK)+*#'OTF;1%V7AT+5XLAM]Y7UNBXPH&51#/+28^*[[B*79-T>F*&H9Z'WJ6FW> XMI)"UVTVNK:)!]IMP;>=.]!CA4SOE,Q,[7"!N9".-B8U6XXWB%XMG1WZ? XM^W:K3:(:2]=PN.;JV\-908LM/<4:(K\J2H&+L1O?A\ZY(B(P?A"H/-="%ND4 XM3#'*]WH#=34YY^$_Z=[W=\"(GN,&G,U&#NE4/,0?#GACDIZ+RE#::_)Z=0-DH0%E9#9I[A8RL'*#*=I.M@3&;KZ5KI-+VW)>(',R.,R XM;K+LZFE]#QS'KEI[\4GWE[N*K0>='+ XMJ+<>]ZAMM'KT[C,229H^+65>'[1@3-&T6@Q830 XM[EWRBG_+K6]D,#16[T"&,3)[6JSLW0[X5L,^U/2Y:GX*G^$0$_CT EF2"E3? XMS/]\L'#"IWH.*'),S6\:P$VGD.'[37R553,$F$C*9\ODS O)Z6_&ET_4VC9K?80+X.4$\J%O-MU XMR.M+[*])M!R($MX:@Y()K9!!5%0SB%=G@V":9OJ-'FJ7]&3<%J-N5I!D:3-! XMI?%H"SYZ9EIO&]$<)Q2-\@A"$SUO[@%EI9O'WQQ:Z+)/E4H+_J%4]VQ&U)W* XM:@H"P[DG9-5VZI!<@WINYR7@G0 $_YQ6("Q#!,_+=:JJAL^H6X!9.S3($\DU XM?Z)4HIR\DDC?C%GI&C\F<&S(EOM4_2PXD3,QYIML8*=R3Z@*L!&5P+8*D=N& XM WGK:VT-,=+&^190D-MQZPT2WC1Y 3]\GBI[@SZ./%V-XH>T1 Y#JH0H34GE XM#*32"Y<;?TH=W:N^51XHQUI08+Q*/59P:&T^N'-Y_EB;TX)U#T55#%P6'SR> XM0E1Y#BS]D385!:^ 82#S4XZN&>E;A05)32(CY XM8+/QA['N5E2315 M8\VP$3?2$H(&,U92#O0P+?R'F5@AJ2%(E\O6X2 /(^\$ XM&@.RA.E-I5DCD2?_?-SSDY9M\/6U XMS2,8JZ+IP4FA$)2\OF>G%E]>0")S"4[XA069B-K8T'I"D &A&G*YPS8:F=1I XM*Y V!U@!)/9XI\!?_B(K)*4KZ4-5Z#QD6G\J)YJ(8[XG'Z) XMB$J3+_ $_LB@"!QY6,!31@"R!Y&ZI)6N;&2?8CEM,4PVLOKVAP;>^YIF1.FA XM8<& 2/5D4?5+B!DN1S;)-S XM4;2-1P\S%<><.XQV*8WYA,"?-U8:HR3K@=RLRP'*2+80G^!BH99)95PJP5;G XM%3N)L]259._ZU##XD1,S)ECBBZ7Y$0M!%5?2B>IA XMLP?YC,@\LBZ@Y YBEJ@GJCG+HWB!N&6;@GGM@UM@C2 I':2@2.0Y!"E,IA1+ XMM!RWXQ;TCH$M[K@>.\CH= [_LY$\K.WY$:AIF9OH[QOS:B4([,2_ 0 1YF,9@DOXS2!B3(;A$?-4*EZ*F26-S[[2] XMQ21Y!G7A=ATY2IP;+DP+#Z&Z3M>W;^#2^>NW5E!G5B]?M,3(H5 XM/BOQAR#]')TB=[<#.'"$'1;<\!RJDSV\:_&E&:WF__90"-0T_ TX?D$W1K2L XMHWO!)7ORH-5,1A@NP=Z,.X!CI0(6S:"Y,MF<^J(C].HXB9"+^4VN( =\"-9/ XM"7U'?IG_NF=:P(6 L.3M( N&M\#:9SJ81NP'1;]%.)GT(RW:-9U2IH$_MU.0 XM2D^'6&;VF.ZFF8$ XML/<-QW@YXVQC\4.*HN=9ZDKTQ^&J8[C+'THS"!G0^L>L1DB<\3[;STN^P^P8 XM0T&>L31\>,Q\J4Z$=SCE(6RK9;6R>'(QZ3(95=Y@3(EE\#B!4=*H.HQE8'B" XM1[$,G6QI'.>F, <1A XMACCAY;BLBK?SKY7.@W9![MP.&PK<;-:AR!1I&YW<;PAU+/ $^B%HBIPN9T Q XM>Q.J_A4_B/3CA.0U1)-U:CL.H42W3.T=7Z-0M-3/><]%-AF+($N0GD&%CS31 XM4?E#OR."?%KHDT.B(3PRR>2IJXQ;, >/L2IXO,9QW4=QY$>U<4\]M6 XM-)%ADXQVB)HH[,XH*,QR%0[(61?#98CL&*.Y] XMG?B727W>$46:JO(_;:+!B0P'E6!K6ASJ)_2&DA=%[DK0=$DV9%W4LY:AZMPA XM(/N E&=S*I9CE#W/YT+*EDGG&*DY\]5WI%%[7)XI$S[.NJG:SZ93G,EU^DJ_ XML0>0*&A^Q&NDF^+B.3FP2D,S2:A7$WZB4"@*O?H%[GI20U-_4'$>RDM"NJF4 XM%Z0T>']PX&W(N)6$-.?1*71S9.&)#I8Q-^ZBG?MJSC$SCM3]\INH'O^Q=WJO XM?!F4+R&'CHSV6:,>L5!&(*[)%8&2M#*:=!59D;%F^B6[J"=RD&@QM!C-HA/$ XMNA(9?#:5-9/(S"'1Y]C7F,A?P8VA2BY0] "+7S.-J9"O5"%!#AB7)M':>IZ/'X9&]+A1'2"BDX=@Q[ON,KTV_OR?N/,YNX(@.L"8 XM!$KL&3+M?VD2"L*/2);E*FM!W9X"4GG( XM.Z^HI+2W0>9A[B0G32FT,9^90>)B;2%: 4\5HK>$-#LGS0QZ0Z5Z8&O5'/RK)FCO^Y"J=P^6;A XM?L&'^/ .WCL6Y@(ET-PCB5,D[H2<_:@@)I/(BZX)"8 QM+[B%C.2;DN#DW XM(B0=MR[V=2[9%'J!E$)6BPF.\D>51S,8G/9@%0R?'0Z@%HA^)9&V0Z:IGU!N XMN_[*V]$K*QYLQ(Y6\K+*,OP&FJ3A:HU669,TR*>0N4Y81G("3CO!8K)9CZ.BVI$% W33@T/\>06/[]XG@!LLW,QIN U[))2,NE>A^NC% XMI@L>'8+%OHO[8%G:",!8*,!E@Q@8 CEX7B8 R(X<5Y,C@))P>S8!%@ XM0!J,0T%#/WR0H]%BEL8%-B%\P:;@%&%G9_:"S6@EK):#S+F783N^:*F9"UX" XM7%(-EE!5U*[*()GP)#RDT#4U$J1PR8@/6N-P"!8KLE%]0\O8KV1X(6S/GN'9 XM;.?*.Z NS(W^5>_K3>!O0<6BKM3E=LNV0% )"HBC5V ,7]1@/L%Z+\1&U0X, XM4]/9NTKS3*O,[0"FL:5KH$70Q]DJ592-0Q 5M4'3J'W;*$P\;D=.D5LJI1[F\>6;_85;+9! 0 @ X Xend SHAR_EOF if test 12576 -ne "`wc -c < 'pig.uue'`" then echo shar: "error transmitting 'pig.uue'" '(should have been 12576 characters)' fi fi echo shar: "extracting 'shuttle.uue'" '(3450 characters)' if test -f 'shuttle.uue' then echo shar: "will not over-write existing file 'shuttle.uue'" else sed 's/^X//' << \SHAR_EOF > 'shuttle.uue' Xbegin 644 shuttle.pic.Z XM'YV0, (*'$BPH,&#"!,J7,BPH<.'$!G&F"AC1@T;&#'>V,BQH\>/(#EF'$FR XMI$F3"B*J7,FRI,3ZF*'4NV8=&L2+FJ#?FU:=BR<..2M3I# XMZ]J[(-ON?"NWKU^@5HVFQ4OXH]Z2?/\J7OPP,%H;A2.S/6PC,>/+F DZ'BRY XM\T;*E3.+'AUPLT;/J#\?MDRZ-5S3D%/+OJ&7M>O;5*T^GLV[K6W6JWTK._M!J#>&SKUO=J'S\]\%'PZ%4C)L]> XM(O<8N].#=]J^_L'WW:O+EPT9I?W_ N&'U6G[I=<3@ B^YUV!\AV(8'T"GL=@ XM@QE!]R!P^,4W(7HC67CA;>\)]MV&!H;VX7CX+4BB@;1Y>&)F^%UUU(@KAF?B XMB\K%2!.!-<[G(HZ*Q2BC73VB]R.0?@F(U8PT%FGFA)H8HZJE34C;0FF*M/G=HP;%:P6OG82=2I[\(;K[SN$?NIM^H*RRZXQ<;\MVFJR6 XM26#6BJ3'^[9<;\@'(RSS72792X/-+\XT<,]UZARMQ6+^W%70!,] ](79JIFO XMONT:>_75$CJ]5-!5"KOMU !6;0,-!D^L=+=;K]NUUY.!'?6V,I -X9 8H:WN XMUDJW_;+",NLDM-C;3F0W>QX?'37?6ON=+^ F&\HVX3+(=+AV1M-I,-KX,N[X XMUDW#31O-40];N%671U=U#:975'A%G[>]][J0]TNZWJV?COJHV8*9.]V5ISM[ XM[,(.'[K3N_-X7B2Z2JWH#7SGSA@]*+YV<+Z\D XM]OOL'MVWXT_/&3GYGJQSKO!9!NZ_/; XM]7;DM?]%[WL!E D,YG>9Q&GN=Q&\"OK2EZ_UU2Y3 RN>]R"808%0,$CP^=0# XM,TB1_"EP<_V;50@-R,*)&.2$?ENU2%*^'I80(3B4TIR* XM*+T:%@5]L:N3N$@2MB8Z,08*2>)Z+6%R(%G-3 XMD7TQT8A?_*';CO;!"4'-=&B4($/6&!4=5M&*>03C]6@70@:6D7S=@V,-(<)' XMX7BGBS1T8E6PJ*3JD81P&LJ2YLP7R#0^I)',RD]&WBC)6X4(=E1$%P+K.)^\ XMZ:Z3GF0D>>KW1D7&:)(%H>0I(]:MWV72CB/A'"QMV!)0ML2"]ANA)&.IF>$$ XM;TZ^$QMS-A1,/ X3)L94"2UYN,Q<"LA9;53AO5X),586AGO6S"-4LCDO-WJQ XME*;4I=&HI*9BM4Y( N-0W@@'2ZFPTRPI5-,[68@0Y@GL;'^,G[K,^;5]1O** XM8_GG0N C ZMQ\HC,;&:*ZL7/ RZ4H88A'S>_"!>))B0&!1SH$0LJI$?YCISX XM"R)(1V>U6L(T?GTQ*4*PHDQX=BQ&VT(+E:091YD"[HX&&];>.@J^JBA&I[<: XMH2UO.5&@5FE D)PJ_O!U*;"!+)KY(\XX;\J=RT!U(!J\: 0?9M"CW&NH9,V@ XMND:X/\ZEKW78P\C]J(J9LTX2D#[UIE6K2=1 [HV$/0T6\ I6L,Y=Y%YI?4]K XMSMI"K3;U5I,4$"_OB482%A9\PWHBOJXW(,A&EIB3%4T+(S?:^)N#$I& ,K6,V^-IT27&MI*-)9R[;1M+B]C6ZK$E?\N$='9HQK9B\[ XMW>*"#W:071YP=$M?7M>RTR-<:#,Z&E R(0U_Y8 XMG7N"L??HJ4(J0XQ@09U1%9WLE\M5MK^M!2ATJ=CDX7JYP:&$<0+%;%HY>2MX XMET*;C>5RN+2B>:()#M&5PO;>E689395-WZO2.5WJW9;+Z-QS6>SFY\H-!:@J XM'F>AJ3Q>5CU1D$A[Z>D^[.? &)7 ?RYIE@THG"E%%X(HEFQISK3;HF"/9YPE XM=:53C#"!ICJBP%+FH6%#IS%SNJQE)95!];L 4Y$<1.44W"^-+FM XMZ$+625PE@KIXCXE=T^;:T,"O07G*P8A8>M+@XQ')D\A'KL-1?C:-R);P7'2> XM)&WK^>$K87"U-SP?)_E695#XO XM- U:X 2/9=,A'G4W#WU36Y=WH,_R*:H/G+QAC_/9XUEV+J6]X%UG.R++=_"L XM9UOM#TO9!(><\*KJ/2/\13(Q%^]WLG-=\&HD_-,/ZDHD.W769I_[VC,.^8-L XM2?,*WW8RF^Y)P#_]X)V/?$S^?:ZP=9N2'T;XWPV=>B1B7)2$)2&*GPUZFDOV XM\;4G" XI0D1C2QKVTYW]6L<>?!/.9=M9):]YAXWEY@N?5&S&^WT"U.H@7[WY XM(W8=E59L>.I7W_H%&3%%"ML8C4?<].@?B/HY&?C+]Y&U\;=];DY;^)7G'/[Y XM=WVT]GN8$7< &( "V$>6IUIOQGP(Z'E3,6IUIW2]]X#.IX 5:('MD3J_EDL: XM:!]FEH$?R!YF-H)V9X((Z%(0YI80 'skull.uue' Xbegin 644 skull.pic.Z XM'YV0. (*'$BPH,&#"!,J7,BPH<.'$"-*G$@1H8**&#-JW,BQH\>/!2^"'$FR XMI,F3*'&(3,FRIO8!5Z#4NVK$JS:-,*' L3AMNW<./*G4NW XMKMV[>//JW4NW*-N7? //C6&CL.'#-6H<+IRXL>/'D"'3F$R9\HS+E!,O9CSY XMLHS/,F*('CU:AM^@I&/0L'&C=>O-L&/+GKU8L8W&MW%'WMTX,V[8KH,SKE&Y XM.(W+R$\#)2W#-NWGT&/SGDZ=N'$:CF4+'WZ]N_*?I%='OST^>O7SUKM7?CS[ XM!N+TZBE_[UG:.6W%MC67WXS^?'SCD$&76&?(S7!<@9/-Q]-HV.V7W7Z&]>?? XM?\5%]MR !Q:HH8$*[B1:1R-L++:HX8LWQ="E^?CC[ZGYKJA XMH3-=BMB(Z(W(YG"<>DKA;J%F6&BE0$7ZWHTKZIFDJRCNR)FH/]+ZDZVL=LEC XML;ORVBNH$5K6H@PS0$LJ3%?J*J&-UC*J['68^:8EAK(B!]IGT[YT):>:H?OF XMMLYVZ^UON56VX;@SE.L2?^IFJRV[[2*WGI&=ACLNN<+VA*^Z" ?,[X;_/ACP XMO./:V]+!"5?L)[LMOJL;N.%&&W'!/%%LL;XW*FM@QPTKV:^XH$G,DL@6)^PJ XMF?XVNIN\&@[L+8,T:]U9@U2TGK=.I6U?L*=@U1\V;K&1;#136+Y>8MKK8 =W= XMR5(K/';<.Z/4\]U]=OTTI'_V&[?D^."V]UYEWE[JC#.Q7U-]>*!GZ3ZZLFZSC'4?/M8>ME7!P4Y XM[IY7SC&9P(XK9.;! W4[\<4O^3#-OH/V(?-S"X\L]/Y=_.7N9(+V[&>I8=^X XM\-R;^"C11?L[MI#CI[9\U;6;1'+Z?X:^+/C."BQ^SJ&1W_QTICF;W ]_N]M? XMZ^2ULME!ZV\"O-[1ZE>2 R+P>]Z+3_7H1;4(2O!CS?N)!2_8JX;%SD#CL][1 XM/,@< H;08#=#8.)$UYGVT6Q@I;$>"S]H.J=HKSCML(0BS XMY[QX]2V(">36TXHXNR3NT(5,%&&\H'@S"DV1BLJSH@>Q>+Y:;9&+Z]+@Y8H8 XM1C%&<(EE'-:ONDA"%*V1>FUTH_S@>+J@I.N)G<*?%P_'.P"23X\"Y*,/@=(@ XM<+%O:)U;CW$89AFH/;"#B$QD#W>"NI,@ZC8ZBE/Z%M@O*;+,8T;,Y!XWJ9-. XMFF1(3GQ5ZP)IK.J0LG^3-.+_R*9*"5*0)*J9H7HR.$M1ILJ67_K;[ZJ62>!E XMD3Y6$F:@)*F_:W'I;?JK9+N6B<->SN^7(XF1-"MTL?2\#I(!*EXV#T2V:'EL XMA4)2I3/C2)\JI5&2)EPG(-G3M!-R,V[R9.5-7%D2!HVS0J #W3G1R;7V_?.! XM>73C//NXG ])C9SZQ*@H]UFX$SI0>:4+J$!M0E!@EH:C432>GW[F48#J<(!' XM%.,$"UB3\G&47QA26TL!.L:86G&F+UR03;.ST/4I])']48\NN^G-\@'UF4*U XM*2#Y=53V(3.70?MH1)L*TY'6I*3A3*2![LFK?;$-8CSE:@[)2%'P>'"L!W45 XMZQH(I<6]<:U7I!]-:7+%BW;-F$FUH;A2:%>\OO2->@VJA_I:5#5&#:5"="@' XM_5E8"NB*0?V6$+!V,@*%]Z.K5"0G41-0[^8HLJT+,/4PVEC/ XMH!6DND6:8F'D3?%1U90G*^)L]7G#TZY6NIL5*7K3B[&L(@]2_PG?;D^\X(HV XME;2>':Z#4U1([)8RQS$F(GA+5]Z/J+6K(9[PY&@&XN1:-W;_++)'CMS5TOEX XMD&/;+K F1]EE2KDC5.ZME;7YV)F]_8[%F)?>:6%*&U7$_#UXOJA3*I-QRD4^OVTTEV XMIZB/4S41P\W/HIKD[]B\$5NCNG<.%'6E'3W@=MFQT\7Q\'O:T XMJ03O95(ZWWV>,Y8-W&R S]K=M1[W[RCWM3$+#5"R,XYMR;OOEL![@$.FI"'M XMVUV!+WF[AEXVL35R<0["%XQ,[;C'GQTT8>,YW#55>*M1SM3Y>1K+NUXVQ6'. XM5YFK7,#U/21TZXW=J*WM5'GI&2:WVIS$QPP,%^.'K3KN(LN3@/Q9MVM6M[W;YCN,X/KO2$ XMF_WLY>9L/(^-]J\7/NF(QK3/?TZGKC?SD@O?^-CAGA*YRUOC2^6J^"+_]"A3 XM'B5RARD;:]YASE=]YU>/^=]_+GFHE_[NIT=]W['>;\-OW?6O[W7L99_XI=>> XM]4^W]>X?2G:,A'[NAQ>Z\(>O;Y[K.?2VU_GOF<][%"L^ZX9'>FI/O7GJ^[;& XMP,5^]N%&^L5[W^JS5SW3T?UH0Q\_WKLO?D7,#_C,OW^ ?.9[[_V^_J\[NOSW XMEV&(9WV^MWRD170 &("7!7_1!7[3U7_UYWX*R%DOEWH]1W\'%E(3V%,#Z(") XMYF9KUWG*MX%>IW\$R']A=G>RDU8D.'1OYWRFQGTJZ#[!UX(N^((6^'R9-H,N XMIE4V6((XF'X7F()P-ECGEH *2'R?=Q(@R'FZUGHC2()*"(/4=F2+AD=U)X53 XMF(,QJ'EP=G)8Z'@;.'E4R&^YQWZ4!H6'I86>5X86=X;,5D/?Y7:X!WW/%0/R XM1Q%G^'##M$TLF(1WF(=J,8@O 5:$>(BMA(B*>!6&N(B.V!*-^(B2:!*1.(F6 X*^!&5>(F:J!$* (1W X Xend SHAR_EOF if test 3580 -ne "`wc -c < 'skull.uue'`" then echo shar: "error transmitting 'skull.uue'" '(should have been 3580 characters)' fi fi exit 0 # End of shell archive -- John Campbell ...!arizona!naucse!jdc CAMPBELL@NAUVAX.bitnet unix? Sure send me a dozen, all different colors.