[net.sources.mac] Slide.shar program source from info-mac,Feb 8

info-mac@uw-beaver (02/11/85)

From: John Mark Agosta <INFO-MAC-REQUEST@SUMEX-AIM.ARPA>

#! /bin/sh
: This is a shar archive.  Extract with sh, not csh.
echo x - slide.doc
cat > slide.doc << '22415!Funky!Stuff!'
At Stanford we use a video projector at our user group meetings
to show new programs and give "Mac slide shows".  Some people have
been using the Magnum Software "Slide Show Magician".

In fact I was using (or trying to use it) in front of our group
recently, and was quite embarrassed when it totally refused to read
the "script" for my show.  The same disks that failed on the demo
machine, worked fine on three different Macs back in my office.
What gives?

Well I discovered this:  as a "feature", the Magnum Software puts
bad sectors on your nice clean disks.  They record special copy
protection sectors on top of your script file whenever you "save" it.
This is bad design, but it usually works.  However if you are using
a different machine for the final demo, and it happens to have
a very slightly out of spec disk drive, you can kiss your presentation
goodbye.  Apple II users will recognize these problems, I'm sure;
the copy protection schemes in use there are in some cases very
disk drive dependent.

At any rate, here's my solution:  the C source and binhex binaries
for a very simple and easy to use "slide projector".  It is called
"slide".

It uses the same "slide format" as the Magnum program:  just simple
MacPaint documents.  There is a template provided called "slideblank"
that you should use as a guide in positioning your material.  Basically
your pictures must be in the upper left corner of the MacPaint
"physical page".  "slideblank" has the four rounded screen corners, and
two off screen lines to show you the limits of this area.  Be careful
not to move these bits on the physical page (you can move the viewing
window, but don't move the actual page dots in "show page" mode).
"slideblank" also has a single dot positioned where I usually start
the first line of my text or graphics.  I found the grid lock mode
very handy for lining up the blocks of text.

The slide order is determined by the MacPaint file names.  Only one slide
show can be stored per disk.  The file names have the form "NumberName",
for example "1title", "2overview", "3goals", etc.  Only the number
part of the file name determines the slide order.  You can use numbers
as large as you like (16000 max);  I suppose basic fans might number
their slides 10, 20, 30, etc.  You can also use fractions to "insert" slides,
e.g.: "1.2credits".  You could set the numbers at the time of creation
with MacPaint, or go back latter with the Finder and touch up the
slide ordering.

The mouse can be used to sketch on the screen.  Spacebar advances
to the next slide.  Backspace reverses.

	--Bill Croft, SUMEX project, Stanford Univ.
	
[Stored on <info-mac> as slide.shar (C source), slide.hcx (program)
and slideblank.hcx (blank slide)]
22415!Funky!Stuff!
echo x - slide.c
cat > slide.c << '22415!Funky!Stuff!'
/*	slide.c	1.1	2/5/85	*/

/*
 * Simple slide showing program.
 *
 * Copyright (C) 1985, Stanford Univ. SUMEX project.
 * May be used but not sold without permission.
 */

/*
 * history
 * 02/05/85	croft	created.
 */


/*
 *
 * The slides that are used are MacPaint files.  Your drawing must be
 * positioned in the upper left corner of the physical page image.
 * The accompanying MacPaint file 'slide.blank' is a blank slide with
 * tiny guide marks at the corners to show you this area.  It also
 * contains a guide dot that you can use to align your first line of
 * text.
 *
 * The slide order is determined by the file names.  Only one slide show
 * can be stored per disk.  The file names have the form "NumberName",
 * for example "1title", "2overview", "3goals", etc.  Only the number
 * part of the file name determines the slide order.  You can use numbers
 * as large as you like;  you can also use fractions to "insert" slides,
 * e.g.: "1.2credits".
 *
 * The mouse can be used to sketch on the screen.  Spacebar advances
 * to the next slide.  Backspace reverses.
 */

#include "mac/quickdraw.h"
#include "mac/osintf.h"
#include "mac/toolintf.h"

int	pensz	= 	2;
GrafPort *myPort;
int	wasevent,mouse;
Point	p,pold;
EventRecord er;

#define	NIL	0

#define	NFILES	64		/* number of files */
#define	LFILES	32		/* length of file names */

char	*files;			/* pointer to array, files[NFILES][LFILES] */
int	filescount;
int	filesindex;
VolumeParam	vp;
FileParam	fp;
char	fpname[LFILES];		/* output of PBGetFInfo */

main()
{
	struct QDVar QDVar;
	GrafPort gp;

	QD = &QDVar;
	InitGraf(&thePort);
	InitCursor();
	InitFonts();
	InitWindows();
	InitMenus();
	TEInit();
	InitDialogs((ProcPtr)NIL);
	myPort = &gp;
	OpenPort(myPort);
	PenSize(pensz,pensz);
	MoveTo(256,256);
	files = NewPtr(NFILES*LFILES);
	sortfiles();
	showfile(0);

	for (;;) {
		SystemTask();
		wasevent = GetNextEvent(everyEvent, &er);
		event();
	}
}


event()		/* look for events */
{
	if (!wasevent)
		goto out;
	switch (er.what) {
	case keyDown:
	case autoKey:
		switch (er.message & 0xff) {
		case 'q':
			ExitToShell();

		case ' ':
			if (++filesindex >= filescount)
				ExitToShell();
			showfile(filesindex);
			break;

		case '\b':
			if (--filesindex < 0)
				filesindex = 0;
			showfile(filesindex);
			break;
				
		case 'f': pensz += 1;  goto setpen;
		case 't': pensz -= 1;  goto setpen;
		case 'F': pensz += 16;  goto setpen;
		case 'T': pensz -= 16;  goto setpen;

		setpen:
			PenSize(pensz,pensz);
			break;

		case 'b':
			PenPat(&QD->black);
			break;

		case 'w':
			PenPat(&QD->white);
			break;

		case 'g':
			PenPat(&QD->gray);
			break;

		}
		break;

	case mouseDown:
		mouse = 1;
		break;

	case mouseUp:
		mouse = 0;
		break;
	}
out:
	GetMouse(&p);
	if (!EqualPt(&p, &pold)) {
		pold = p;
		if (mouse)
			LineTo(p.h,p.v);
		else
			MoveTo(p.h,p.v);
	}
}


sortfiles()
{
	register i;
	int compare();

	if (PBGetVInfo(&vp, 0) != noErr)
		abort("no volinfo?");
	fp.ioNamePtr = fpname;
	for (i = 1 ; i <= vp.ioVNmFls ; i++) {
		fp.ioFDirIndex = i;
		if (PBGetFInfo(&fp, 0) != noErr)
			abort("getfinfo error");
		if (strncmp((char *)&fp.ioFlFndrInfo.fdType, "PNTG", 4) !=0 )
			continue;
		if (fpname[0] <= 0 || fpname[1] < '0' || fpname[1] > '9')
			continue;
		fpname[fpname[0]+1] = 0;
		BlockMove(fpname, &files[LFILES*(filescount++)], LFILES);
	}
	if (filescount <= 0)
		abort("can't find any numbered MacPaint files");
	qsort(files, filescount, LFILES, compare);
}


convert(s)
	char *s;
{
	register char *cp;
	register i, w, sawfrac;

	i = w = sawfrac = 0;
	for (cp = s + 1 ; *cp ; cp++) {
		if (*cp == '.') {
			w = i;
			i = 0;
			sawfrac++;
			continue;
		}
		if (*cp < '0' || *cp > '9')
			break;
		i = (i * 10) + (*cp - '0');
	}
	if (sawfrac)
		return ((w<<16) | i);
	else
		return (i<<16);
}


compare(a,b)
	char *a,*b;
{
	int an,bn;

	an = convert(a);
	bn = convert(b);
	if (an == bn)
		return (0);
	if (an > bn)
		return (1);
	else
		return (-1);
}


#define	srcBlocks	2
#define	srcSize		512*srcBlocks

#define	SCREEN	0x7A700
#define	SWIDE	512
#define	SHI	342
#define	PWIDE	576		/* MacPaint width */

showfile(i)
{
	char srcBuf[srcSize];
	char lineBuf[PWIDE/8];
	char *srcPtr,*dstPtr,*linePtr;
	int rn, count;

	if (FSOpen(&files[i*LFILES+1], 0, &rn) != noErr)
		abort("fsopen");
	count = 512;
	FSRead(rn, &count, srcBuf);	/* skip header */
	count = srcSize;
	FSRead(rn, &count, srcBuf);	/* prime buffer */
	srcPtr = srcBuf;
	HideCursor();
	dstPtr = (char *)SCREEN;
	for (i = 0 ; i < SHI-1 ; i++) {	/* read 341 lines */
		linePtr = lineBuf;
		UnPackBits(&srcPtr, &linePtr, PWIDE/8);
		BlockMove(lineBuf, dstPtr, SWIDE/8);
		dstPtr += (SWIDE/8);
		if (srcPtr > (srcBuf + srcSize - 512)) {
			BlockMove(&srcBuf[srcSize-512], &srcBuf[0], 512);
			count = srcSize-512;
			FSRead(rn, &count, &srcBuf[512]);
			srcPtr = srcPtr - srcSize + 512;
		}
	}
	FSClose(rn);
	ShowCursor();
}


abort(s)
	char *s;
{
	ParamText(s, "", "", "");
	StopAlert(257, (ProcPtr)NIL);
	ExitToShell();
}
22415!Funky!Stuff!
echo x - slide.rc
cat > slide.rc << '22415!Funky!Stuff!'
* input for resource compiler
*

slide.rsrc

Type CCOM = STR
  ,0
Slide Version 1.0 -- Feb 85

Type ICN# = HEXA
  ,128(32)
* little picture of the C
00000e00 00001000 00001000 00001000 00000e00 00e00000 1fbe001e f003f0e0
80001f80 00000000 00000000 00008000 0300803e 3cf0c3c0 c01ce000 0000f000
0000f800 00008000 0003fc00 0001f800 3fc0000e e0780078 000fffc0 00000000
00000000 00000000 1fc0007e 303c03c0 e007fe00 00000000 00000000 00000000
* mask
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff

Type FREF = HEXA
  ,128(32)
* APPL uses loc icon 0, no tagalongs
4150504c
0000
00

Type BNDL = HEXA
  ,128(32)
* owner CCOM 0
43434F4D0000
* 2 types
0001
* ICN#, 1 entry, loc 0 to glob 128
49434e230000

Type ALRT
  ,257
  60 81 180 431
  258
  5555

* DITL for the ALRT
* First the ID (DITL,258), then the number of items which follow.  

Type DITL
 ,258
  2
* These buttons are 20 hi by 70 wide
    BtnItem Enabled
    90 13 110 83
Abort

    StatText Disabled
    10 60 70 350
^0^1^2^3

Type CODE
  b.out,0
22415!Funky!Stuff!
echo x - Makefile
cat > Makefile << '22415!Funky!Stuff!'
.SUFFIXES: .rsrc .b

.c.b:
	cc68 -z -c $<

.s.b:
	cc68 -c $<

.b.rsrc:
	cc68 -z -m $<
	rmaker $*.rc
#	tohex <$*.rsrc >$*.dl

all:	slide.rsrc

slide.rsrc: slide.b slide.rc

clean:
	rm *.b *.rsrc b.out *.dl

22415!Funky!Stuff!
echo x - slide.hcx
cat > slide.hcx << '22415!Funky!Stuff!'
(This file must be converted with BinHex.Hex)
#APPLCCOM$0000
***COMPRESSED
***RESOURCE FORK
(    0   !<    6     +8                     
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(    !P;4VQI9&4@5F5R<VEO;B Q+C @+2T@1F5B(#@U
(    0    X    0    $    !     .  #@   ?O@ >
(/ #\."  !^              (   P" /CSPP\# '.  
(   \    /@   "    #_    ?@ /\  #N!X '@ #__ 
(                !_  'XP/ / X ?^            
(     #_____________________________________
(/__________________________________________
(/__________________________________________
(/__________________________________________
(/____\    (05!03          .0T-/30    %)0TXC
(       #  \ %$ M &O 0)550   "P  0      6@ -
( !N %,$!D%B;W)T        "@ \ $8!7H@(7C!>,5XR
(%XS    &    "@   (     "    "   #\\  &I\   
(!/0     6 L    @   #RX                     
(                           0_K_TB()58$D6=7!
(!X2 H<   #_0A+3D@R'    _V<  !A*AV8   HD6=7!
(&  _][CG]7'8 #_UD)GJ71*'V<  ! _/  !J<AP 4J 
(&8 __PCS0,  "I.N0,  )0J>0P  "JM]   3E;^Q$CN
(   _L1![O\R(\@# !/((#D' !/(!H    #*+P!.N00 
( >T6(].N0, !]1.N0, ".1.N0, "11.N0, "71.N08 
( DD+SP     3KD&  DT6(]![O[&(\@# !-T+SD# !-T
($ZY!  'Q%B/+SD# !*(+SD# !*(3KD*  @$4(\O/   
( $ +SP   $ 3KD'  @D4(\O/   " !.N00 "%18CR/ 
( L $OQA  * +SP     80 $MEB/3KD#  ED+SP& !+L
("\\_____TZY!  (]%"/(\ / !.$80Q@ /_<8    DY>
($YU3E8  $CN     $JY!P 3A&8   9@  &N,#D& !+L
($C 8  !?B Y"  2[@*     _V   .I.N0, "'12N0, 
(!-P(#D# !-PL+D% !+H;0  "$ZY P (="\Y"  3<&$ 
( 0F6(]@  $@4[D% !-P;   "$*Y P 3<"\Y"  3<&$ 
( 0&6(]@  $ 4KD% !*(8   *%.Y!P 2B&   !X&N0  
(  0!P 2B&   ! $N0   ! % !*(8    B\Y P 2B"\Y
( , $HA.N08 " 10CV   +@@.0< $\@&@    +HO $ZY
( 8 "!18CV   )X@.0< $\@&@    ,(O $ZY!@ (%%B/
(&   (0@.0< $\@&@    +(O $ZY/@ (%%B/8   :@R 
(    &)G /^J;@  *@R     "&< _S0,@    "!G /[^
( R     1F< _U0,@    %1G /]8#(    !F9P#_+ R 
(    &=G /^>#(    !Q9P#^Q@R     =&< _Q@,@   
( !W9P#_9F   #XC_     $% !-X8   ,$*Y%P 3>&  
(  F!(     !#(     $8@  %M! ,#L !D[[  +_SO_<
(/YJ  K^:B\\ P 3@$ZY!  )!%B/+SP# !-\+SP# !. 
($ZY!P (1%"/2H!F  !2(_D" !.  P 3?$JY!0 3>&< 
(  B,#D% !. 2, O # Y!0 3@DC +P!.N08 "#10CV  
(  >,#D% !. 2, O # Y!0 3@DC +P!.N1  ""10CV  
(  "3EY.=4Y6__Q([@" __PO/      O/ , $XA.N0< 
( B$4(]*@&<   XO/ 8 $HQA  -X6(\C_ ( $P $ !,R
('X!,#D' !.P2,"^@&X  ,0SQP8 $SPO/      O/ , 
(!,@3KD'  B44(]*@&<   XO/ D $IAA  ,R6(\O/   
(  $+SP# !*G+SP# !- 3KD+ !%,W_P    ,2H!G   &
(&   &I*.08 $P!O   :##D , 8 $P%M   .##D .0< 
(!,!;P  !F   $00.04 $P!(@$C !H ( !,!($!"$"\\
(    " @.0, $NA2N00 $NCK@-"Y!  2_"\ +SP# !, 
($ZY"0 (9-_\    #%*'8 #_,DJY!0 2Z&X   XO/ 8 
(!*L80 "AEB/+SP&  6H+SP    @+SD# !+H+SD# !+\
($ZY,P /(-_\    $&    ),[@" __Q.7DYU3E;_\$CN
("#@__!"A2P%+@8@+@ (4H J0$H59P  3@P5 "YF   ,
("P'0H=2A6   #8,%0 P;0  "@P5 #EO   &8   *"\\
(     HO!TZY70 1E%"/$A5(@4C!!($    PT($N %*-
(&  _[!*A6<   X@!G(0XZ" AV   ! @!W(0XZ!@   &
(&    ),[B#@__!.7DYU3E;_^$CN  #_^"\N  AA /]<
(%B/+4#__"\N  QA /].6(\M0/_X("[__+"N__AF   (
($* 8   'B N__RPKO_X;P  "' !8   #'#_8   !F  
(  "3EY.=4Y6^Z1([@  ^Z1(;ONH+SP     ("X ".N 
(-"Y!0 2_%* +P!.N0D "*3?_     Q*@&<   XO/!  
(!+380 !)EB/+7P   ( ^Z1(;OP 2&[[I"\N^ZA.N1  
( C$W_P    ,+7P   0 ^Z1(;OP 2&[[I"\N^ZA.N0H 
( C$W_P    ,0>[\ "U(^[1.N1H !^0M?  'IP#[L$*N
(  (#*X   %5  AL  "D0>[[N"U(^ZPO/    $A(;ONL
($AN^[1.N0T "-3?_     PO/    $ O+ONP2&[[N$ZY
(!@ "&3?_     P&K@   $#[L$'N_@ @+ONTL(AC  !*
("\\   " $AN_ !(;OX 3KD0  ADW_P    ,+7P   ( 
(/ND2&[^ $AN^Z0O+ONH3KD3  C$W_P    ,("[[M 2 
(    @ M0/NT4JX "&  _U0O+ONH3KD$  BT6(].N0P 
( ?T8    DY>3G5.5@  2.X     +SP# !+<+SP# !+;
("\\!0 2VB\N  A.N0P "53?_    ! O/      O/   
( $!3KD$  E$4(].N0@ "'1@   "3EY.=0  3KD(  F$
(    !"H;DYQ  !.N0@ "80    0J&].<0  3KD(  F$
(     "H4$YQ  !.N0@ "80     J%).<0  3KD(  F$
(     "H4TYQ  !.N0@ "80   !(J)M.<0  3KD(  F$
(    !"HG4YQ  !.N0@ "80   !(J)-.<0  3KD(  F$
(    $BHD4YQ  !.N0@ "80   $EJ(%.<0  3KD$  F$
(    !($  NN  !.N00 "80   20!  ,A@  3KD(  F$
(     "I]$YQ  !.N00 "80   %1!  .'@  3KD$  F$
(    5$$  Z"  !.N00 "80   Q9!  -2   3KD$  F$
(     D$  TL  !.N00 "80   2)!  -A   3KD(  F$
(    I"HT$YQ  !.N0@ "80     J/Y.<0  3KD(  F$
(    (VI<$YQ  !.N0@ "80    0J7).<0  3KD(  F$
(     "I$DYQ  !.N0@ "80     J<Q.<0  3KD(  F$
(    !"I>TYQ  !.N0@ "80   ")J89.<0  3KD(  F$
(   -MBIBTYQ  !.N0@ "80     J;1.<0  3KD2  F$
(     "I,$YQ  !.5O\ 2.X@!/_X0B[_ #U\3OG_"BU\
(%4 "DS_#$ON_Q!![@ ,(FX !" 9/7Q.<?\$+5'_!FT&
(#U\3KG_!"( YH@"00 '/4'_ EF/,@#FB )!  ?203([
(! &3OL0 @!B !  &@ X !X ,@ 6 !8B&#\!8-A2+O\ 
("\88- B6!(9X8D2&>&)$AGAB1(9+P%@O"(8'P%@MB(8
( B! !AG!"\!8*HB04*"(@U2C1K99PI2@@Q" .9M]%&-
(")!$H(O 6",*GD;   J3N[_!$HN_P!G   Z2^X #")N
(  $)!GFBEF-6(TR N:* D$ !V<># $ !FWN9PPO%4ZY
(   #.Q8CV#@(E4P$4C (H!@UC(N_P+203([$ 9.^Q "
(  > !  %@ > !X &@ > !XP'TC 8 @@'V $0H 0'TSN
(" $__A.7EB/3G4B7R!?H"U@  !2H"Q@  !.(E\@3Z 9
(-[\  Y@   ^H1HO2  $8   -B)?(%^@&V   "HO>0  
( *J  1@   H+WD   *F  1@   <(E\@'Z!,+H!@   $
(   <  O"3/     5DYU< !@ /_T(E\@'Z!-8 #_Z* <
("]   1@ /_H(E\@'Z! 8 #_U")?H1TB""!?(($N@&  
(/_"+WD   $(  1@ /_"(E\@7Z!+8 #_KB)?(%^@+6  
(/^D('D   $P0_D   $4( B0D70,L()E&B)1(\@   $4
("* 0A$B>0   JHBB"""T:D #$YU(E\@'Z$>+HA@ /]F
(")?(%^@'V  _UPB7R!?H"$N@&H   A"EV  _TI@ /]$
(")?(!\@7Z @8 #_.B)?(%^A2"Z(8 #_+B)?(!^A(BZ(
(&  _R(B7R!?H"-@ /\8(E\@7Z E+H!J   (0I=@ /\&
(&  _P B7R ?(%^@)&  _O8B7R!?H28NB&  _NHB7R!?
(*$H+HA@ /[<(E\@7Z K8 #^U")?(!\@7Z G8 #^R")?
("!?H"E@ /Z^(E\@7Z J8 #^M")?(%^@26  _JHB7R!?
(*!*8 #^H* V8 #^G"(?(!\B7R!?H"XB06  _HH_>0  
( !6  1.=2]Y   #*  $3G4B7T)7(#D   ,P9P  #+"Y
(    RAF   &/KP! $[1(&\ !#)\   0&$H 9PH2$!# 
(! !4HE@\B )(&\ !!" ( A.=2!O  0B2$* $!A3@&T*
(!+89@)3B5'(__A"$2 O  1.=2!O  1"@! 0T<!2B$(0
(" O  12@$YU("\ ! C  !A.=4Y6_\Y![O_.,6X "  8
(* !/4  "DY>(%]4CT[03E;_SD'N_\XA;@ . !(Q;@ ,
(  60B@ &D(H !M"J  <H  B;@ (,J@ &#U  !).7B!?
(-_\    "D[0  !"@6    1R 4Y6_\Y![O_.(6X "  @
(#%N !  &")N  PA40 D0F@ +$*H "Y* 68   B@ F  
(  $H ,]0  2(FX #"*H "A.7B)?W_P    *3M$  "(\
(*  3G5@  $0(CR@ 4YU8  !!B(\H ).=6   /PB/* #
($YU8   \B(\H 1.=6   .@B/* %3G5@  #>(CR@!DYU
(&   -0B/* '3G5@  #*(CR@%$YU8   P"(\H!5.=6  
( "V(CR@%TYU8   K"(\H#5.=6   *(B/* 33G5@  "8
("(\H A.=6   (XB/* )3G5@  "$(CR@"DYU8   >B(\
(* +3G5@  !P(CR@#$YU8   9B(\H U.=6   %PB/*!!
($YU8   4B(\H$).=6   $@B/*!#3G5@   ^(CR@$$YU
(&   #0B/* 13G5@   J(CR@$DYU8   ("(\H!A.=6  
(  6(CR@1$YU8   #"(\H$5.=6    (B7Q ?(%]G   (
( "!!    "\!3I=8CSZ 3M$B7R!?H \^@$[1(E\@7Z .
(#Z 3M$  $Y6  !([@     C[@ 4!  2X"/N ! ' !+D
("\N ! O+@ ,3KD2 !)84(_0K@ (+P O+@ (8090CTY>
($YU3E;_X$CN,(#_X"XY$0 2Y" N  R0K@ (+4#_[+"'
(&,  50@!^. +P O+O_L3KD& !'D4(\O "\'3KDB !&4
(%"/+4#_[-"N  @M0/_X+4#_]"IN  @@+@ ,D(<H0& 0
()^N__@O+O_X2%5A  $44(^[[O_X9   B"\N__A(52!Y
("( $N!.D%"/+4#_\&?22J[_\&U<8&B[[O_X9DA(5-^N
(/_T+R[_]$A580 !!M_\    #-^N__@J;O_X8$)(5"\N
(/_T('ED !+@3I!0CRU __!F)$A4WZ[_]"\N__1A  "B
(%"/8!I(5$A580  EE"/F<?;QV  _WQ*KO_P;IJ9Q[GN
(/_T8KB[[O_X9DP@+O_XD*X ""(N  R2KO_TL(%M'"\N
(  ,("[_]-"'+P!A /[64(\M;O_X  Q@ /[:+R[_^"\N
(  (80#^OE"/("[_]-"'+4  "&  _KY(59^N__@O+O_X
($A484S?_     R?KO_T*&[_]&  _OQ,[C" _^!.7DYU
($Y6__!([C" __ M>1@ $N3__"IN  @H;@ ,'A4:U!C'
(%.N__QF]$SN,(#_\$Y>3G5.5O_L2.XX /_L+7F5 !+D
(/_X*FX ""AN  PF;@ 0$!5(@$C +4#__!K3%M08[O__
(%.N__AFZ$SN. #_[$Y>3G4  $Y6__1([C" __0J;@ (
("AN  PN+@ 08 Y"@& B$!6P'&8(2AUG\E.';/)*AVWJ
(! 52(!(P%.,$A1(@4C!D(%,[C" __1.7DYU3E8  $CG
(#@ *#P    !)"X "&P   9$@D2$)BX #&P   9$@T2$
($* , + PS("2$+$PTA#PL/2@DA!0D'0@4J$;   !$2 
($S? !Q.7DYU  !.5@  2.<X " N  @F "(N  PH 0R!
(  !  !L&$A  H   /__@,$T # #@,%(0# "2$!@-N* 
(.*! H!_____ H%_____#($  0  ;.B P0*   #__R0 
("\ +P1.N?\ $EA0C[: ; )3@B "3-\ '$Y>3G4  $Y6
(   2.<P "0N  @F+@ ,0H P L##,@)(0L3#2$/"P]*"
($A!0D'0@4S?  Q.7DYU     FYO('9O;&EN9F\_ &=E
('1F:6YF;R!E<G)O<@!03E1' &-A;B=T(&9I;F0@86YY
("!N=6UB97)E9"!-86-086EN="!F:6QE<P!F<V]P96X 
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
(                                  < +8 !D-#
($]-    .DE#3B,   !&1E)%1@   %)"3D1,    7D%,
(%)4    :D1)5$P   !V0T]$10 ! ((  /__        
(    (#__R   "       (#__R   20      (#__R  
( $P      $!__\   %"      $"__\   %2        
%O__(  !@@       ?__-  !G@     
***END OF DATA
***CRC:570E
22415!Funky!Stuff!
echo x - slideblank.hcx
cat > slideblank.hcx << '22415!Funky!Stuff!'
(This file must be converted with BinHex.Hex)
#PNTGMPNT$0000
***COMPRESSED
***DATA FORK
(     +__________]W_=__=_W?_W7?==]UWW7>J5:I5
(*I5JE55_U7_5?]5_ZJJJJJJJJJJ[MV[=^[=NW>(B(B(
((B(B(BQ, ,;V, ,C8 0 B !"$ $_XB(B/^(B(C_@(" 
(/\(" B          (! (  "! @ @D0Y1((! 0'X=")'
((\7(G%5H$! 50H$!!0B290IDD0HOP"_O["PL+      
(     "   @ @  ( (@ (@"( "( B"*((H@BB"*J *H 
(*H J@#_ /\ _P#_ !$B1(@1(D2(_P   /\    ! @0(
(! @0("J (  B "  /^ @(" @(" "!PBP8 ! @2(%")!
((@ J@! H   ! H   .$2# , @$!@(!!/@@(%.,0(%2J
(/\"! AWB8^/=YCX^  (%"I5*A0(                
(                                           
(                                           
(                                           
(                                           
(                                           
(                                           
( #@PP ! X#Z  # PP ! 8#Z  " P@  @/H N0#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z /H 
( " R0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H N0  @,(  (#Z  # PP ! 8#Z
(   X,,  0. ^@  #\/_ /CY +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y +D N0"Y +D N0"Y +D N0"Y +D N0"Y +D 
(+D N0"Y  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
(,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$  $#Z ,$ 
( ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! ^@#!  ! 
(/H P0  0/H P0  0/H P0  0/H P0  0/H P0  0/H 
***END OF DATA
***CRC:9297
22415!Funky!Stuff!
-------

info-mac@uw-beaver (02/11/85)

From: "Charlotte D. Mooers" <postmaster@CSNET-SH.ARPA>

Did you really mean to send this to me?

---Charlotte


      Date: Sun 10 Feb 85 14:34:09-PST
      To:   post-net-sources-mac@UW-BEAVER.ARPA, postmaster@CSNET-SH.ARPA
      From: John Mark Agosta <INFO-MAC-REQUEST@SUMEX-AIM.ARPA>
      Subject: Slide.shar program source from info-mac,Feb 8

      #! /bin/sh
      : This is a shar archive.  Extract with sh, not csh.
      echo x - slide.doc
      cat > slide.doc << '22415!Funky!Stuff!'
      At Stanford we use a video projector at our user group meetings ...