[comp.sources.amiga] v89i214: watchman - screen hack

page%swap@Sun.COM (Bob Page) (11/13/89)

Submitted-by: zaphod@malmax.maxcimator.se (Jonas Petersson)
Posting-number: Volume 89, Issue 214
Archive-name: fun/watchman.1

[Like like xeyes or eyecon.  uuencoded executable included.  ..bob]

# This is a shell archive.
# Remove anything above and including the cut line.
# Then run the rest of the file through 'sh'.
# Unpacked files will be owned by you and have default permissions.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar: SHell ARchive
# Run the following text through 'sh' to create:
#	Makefile
#	WatchMan.c
#	watchman.uu
# This is archive 1 of a 1-part kit.
# This archive created: Sun Nov 12 20:30:45 1989
echo "extracting Makefile"
sed 's/^X//' << \SHAR_EOF > Makefile
XCFLAGS=+Isys:include/symbols.m
X
Xwatchman: watchman.o
X          ln watchman -lc
SHAR_EOF
echo "extracting WatchMan.c"
sed 's/^X//' << \SHAR_EOF > WatchMan.c
X/****************************************************************
X*	A little hack inspired by "EyeCon" on the Suns.  
X* 
X* 	I use something like this on my workbench: 
X* 	SetRGB4(vp, 0, 6, 6, 4); 
X* 	SetRGB4(vp, 1, 4, 3, 0); 
X* 	SetRGB4(vp, 2, 15, 12, 5); 
X* 	SetRGB4(vp, 3, 10, 8, 3); 
X*	Looks good in interlace and gives Amy a more 'pro' look.  
X* 
X* 	(C) 1989 Jonas Petersson & Sirius Soft
X*
X*	Comments to zaphod@malmax.maxcimator.se or
X*		    zaphod@magrathea.sirius.se
X*/
X
X
X/* Figure out the #includes for yourself - or use the trick... */
X
X#define Lx 29		/* The eyes offset from upper left corner */
X#define Ly 49
X#define Rx 49
X#define Ry 46
X
Xstruct IntuitionBase *IntuitionBase;
Xstruct GfxBase *GfxBase;
X
Xstruct MsgPort *timerport;          /* for timer communications */
Xstruct IOStdReq *timermsg;          /* for timer */
X
XUSHORT 	*Manmap_chip[2]= {NULL,NULL};	/* Chip copy */
X
XUSHORT Manmap[2][528] = {		/* Background head image */
X					/* Probably in fastmem */
X    {	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFF00,
X	0x8000,0x0000,0x0000,0x0000,0x0000,0x0100,
X	0x9555,0x5555,0x7555,0x5555,0x5555,0x5700,
X	0xAAAA,0xAAAF,0xFAAF,0xAAAA,0xAAAA,0xAB00,
X	0x9555,0x557F,0xFD7F,0xD555,0x5555,0x5700,
X	0xAAAA,0xBFFF,0xFDFF,0xFEAA,0xAAAA,0xAB00,
X	0x9555,0xFFFF,0xFE7F,0xFFD5,0x5555,0x5700,
X	0xAAFF,0xFFFF,0xFFBF,0xFFFA,0xAAAA,0xAB00,
X	0x97FF,0xFFFF,0xFFCF,0xFFF5,0x5555,0x5700,
X	0xBFFF,0xFFFF,0xFFF7,0xFFFA,0xAAAA,0xAB00,
X	0xBFFF,0xFFFF,0xFFF9,0xFFF5,0x5555,0x5700,
X	0xBFFF,0xFFFF,0xFFFE,0xFFFA,0xAAAA,0xAB00,
X	0x9FFF,0xFFFF,0xFFFF,0x3FFD,0x5555,0x5700,
X	0xAFFF,0xFFFF,0xFFFF,0xDFFA,0xAAAA,0xAB00,
X	0x97FF,0xFFFF,0xFFFF,0xFFFD,0x5555,0x5700,
X	0xAAFF,0xFFFF,0xFFFF,0xFFFE,0xAAAA,0xAB00,
X	0x957F,0xFFFF,0xFFFF,0xFFFD,0x5555,0x5700,
X	0xAABF,0xFFFF,0xFFFF,0xFFFE,0xAAAA,0xAB00,
X	0x955F,0xFFFF,0xFFFF,0x5FFF,0x5555,0x5700,
X	0xAAAF,0xFFFF,0xFFAA,0xAAFE,0xAAAA,0xAB00,
X	0x9555,0xFFFF,0x807F,0xFD55,0x5555,0x5700,
X	0xAAAA,0xFFF0,0x0FFF,0xFAAA,0xAAAA,0xAB00,
X	0x9555,0x500F,0xFFFF,0xFF55,0x5555,0x5700,
X	0xAAAA,0xA1FF,0xFFFF,0xFDAA,0xAAAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFAD5,0x5555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFD6A,0xAAAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFEB5,0x5555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFF5E,0xAAAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFFAD,0x5555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFFD6,0xAAAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFFAB,0x5555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFFD5,0xAAAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFFEB,0x5555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFFF5,0xAAAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFFEA,0xD555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFFF5,0x6AAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFFFA,0xB555,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFFFD,0x6EAA,0xAB00,
X	0x9555,0x5FFF,0xFFFF,0xFFEA,0xBB55,0x5700,
X	0xAAAA,0xAFFF,0xFFFF,0xFD55,0x56AA,0xAB00,
X	0x9555,0x5FFF,0xFFEA,0xBAAA,0xAB55,0x5700,
X	0xAAAA,0xAFFF,0xFF55,0x7F55,0x56AA,0xAB00,
X	0x9555,0x5FFE,0xAABA,0xFFFA,0xAD75,0x5700,
X	0xAAAA,0xAF7F,0x555F,0xFFFD,0x5ABA,0xAB00,
X	0x9555,0x5AFF,0xAEBF,0xC3FE,0xAD7D,0x5700,
X	0xAAAA,0xADD5,0xFFFE,0x00FD,0x5ABC,0xAB00,
X	0x9555,0x56BF,0xFFFC,0x007E,0xB57B,0x5700,
X	0xAAAA,0xABF0,0x1FF4,0x007F,0x5ABC,0xAB00,
X	0x9555,0x55E0,0x0FFC,0x007E,0xB57B,0x5700,
X	0xAAAA,0xAAC0,0x07F4,0x007F,0x5AB4,0xAB00,
X	0x9555,0x55C0,0x07FA,0x00FE,0xAF6B,0x5700,
X	0xAAAA,0xAAC0,0x07F7,0xC7FF,0x55B6,0xAB00,
X	0x9555,0x5560,0x0FEB,0xFF55,0x5551,0x5700,
X	0xAAAA,0xAAF0,0x1FF7,0xEAAA,0xAAAA,0xAB00,
X	0x9555,0x5578,0x3FAA,0x0005,0x5553,0x5700,
X	0xAAAA,0xAABF,0xED50,0x0002,0xAAA8,0xAB00,
X	0x9555,0x557D,0x5A00,0x0001,0x5555,0x5700,
X	0xAAAA,0xAAAA,0xA000,0x0000,0xAAAA,0xAB00,
X	0x9555,0x5550,0x0000,0x0001,0x5555,0x5700,
X	0xAAAA,0xAA00,0x0000,0x0000,0xAAAA,0xAB00,
X	0x9555,0x5400,0x0000,0x0000,0x5555,0x5700,
X	0xAAAA,0xAA00,0x0000,0x0000,0x2AAA,0xAB00,
X	0x9555,0x5500,0x0000,0x0000,0x5555,0x5700,
X	0xAAAA,0xAA00,0x1E00,0x0000,0x2AAA,0xAB00,
X	0x9555,0x5500,0x3F00,0x0020,0x1555,0x5700,
X	0xAAAA,0xAA80,0xFF01,0x5550,0x0AAA,0xAB00,
X	0x9555,0x5502,0xFF2A,0xAAA0,0x0555,0x5700,
X	0xAAAA,0xAA87,0xFD55,0x5000,0x0FFF,0xFB00,
X	0x9555,0x5545,0x7AA8,0x0000,0x1FFF,0xF700,
X	0xAAAA,0xAA82,0xD540,0x0000,0x1FFF,0xFB00,
X	0x9555,0x5541,0x0000,0x0000,0x3FFF,0xF700,
X	0xAAAA,0xAA80,0x0000,0x0002,0xBFFF,0xFB00,
X	0x9555,0x5540,0x0000,0x0555,0x7FFF,0xF700,
X	0xAAAA,0xAA80,0x0002,0xAAAA,0xBFFF,0xEB00,
X	0x9555,0x5540,0x0555,0x5555,0x7FFF,0xF700,
X	0xAAAA,0xAA82,0xAAAA,0xAAAA,0xBFFF,0xEB00,
X	0x9555,0x5555,0x5555,0x5555,0x5FFF,0xD700,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,0xBFFF,0xAB00,
X	0x9555,0x5555,0x5555,0x5555,0x5FFF,0xD700,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,0xBFFF,0xAB00,
X	0x9555,0x5555,0x5555,0x5555,0x5FEA,0xD700,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,0xD555,0x2B00,
X	0x9555,0x5555,0x5555,0x56AA,0xAA55,0x5700,
X	0xAAAA,0xAAAA,0xAAAB,0x5555,0x56AA,0xAB00,
X	0x9555,0x5555,0x5555,0x5555,0x5555,0x5700,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,0xAAAA,0xAB00,
X	0xBFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFF00,
X	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFF00,
X    },{
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0xA000,0x0000,0x0000,
X	0x0000,0x0000,0x0055,0x5501,0x0000,0x0000,
X	0x0000,0x0000,0x7FFF,0xFAAA,0x8000,0x0000,
X	0x0000,0x000F,0xFFFF,0xF555,0x0000,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFAAA,0x8000,0x0000,
X	0x0000,0x1FFF,0xFFFF,0xFF55,0x4000,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFAA,0xA000,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFD5,0x5000,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFEA,0xA000,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFF5,0x5000,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFFA,0xA800,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFFD,0x5400,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFFE,0xAA00,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFFF,0x5500,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFFE,0xAA00,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFFF,0x5500,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFFF,0xAA80,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFFF,0xD540,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFFF,0xEAA0,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFFF,0xD540,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xFFFF,0xEEA0,0x0000,
X	0x0000,0x07FF,0xFFFF,0xFFFF,0xFD50,0x0000,
X	0x0000,0x0FFF,0xFFFF,0xE7FF,0xFEA8,0x0000,
X	0x0000,0x07FF,0xFFFF,0xC0FF,0xFD54,0x0000,
X	0x0000,0x0FE3,0xFFE7,0x0FFF,0xFAAA,0x0000,
X	0x0000,0x07C0,0xFFE0,0x3FFF,0xF554,0x0000,
X	0x0000,0x0F80,0x71F8,0x03FF,0xFAB8,0x0000,
X	0x0000,0x067E,0x0FFE,0x00FF,0xF55E,0x0000,
X	0x0000,0x03FF,0xBFFC,0x007F,0xEABE,0x0000,
X	0x0000,0x01F0,0x1FFC,0x007F,0xF55E,0x0000,
X	0x0000,0x00E0,0x0FFC,0x007F,0xEABE,0x0000,
X	0x0000,0x0040,0x07FC,0x007F,0xF55E,0x0000,
X	0x0000,0x00C0,0x07FE,0x00FF,0xFABE,0x0000,
X	0x0000,0x0040,0x07FF,0xC7FF,0xFF5C,0x0000,
X	0x0000,0x0020,0x0FFF,0xFEAA,0xAAAC,0x0000,
X	0x0000,0x0070,0x1FFF,0xD555,0x5556,0x0000,
X	0x0000,0x0038,0x3FFF,0xFFFA,0xAAAE,0x0000,
X	0x0000,0x001F,0xD7FF,0xFFFD,0x5557,0x0000,
X	0x0000,0x003A,0xAFFF,0xFFFE,0xAAAA,0x0000,
X	0x0000,0x0055,0x5FFF,0xFFFF,0x5555,0x0000,
X	0x0000,0x00AF,0xFFFF,0xFFFE,0xAAAA,0x8000,
X	0x0000,0x01FF,0xFFFF,0xFFFF,0x5555,0x4000,
X	0x0000,0x03FF,0xFFE0,0x7FFF,0xAAAA,0x8000,
X	0x0000,0x01FF,0xFF00,0x01FF,0xD555,0x4000,
X	0x0000,0x00FF,0xF800,0x000F,0xAAAA,0xA000,
X	0x0000,0x01FF,0xE000,0x000F,0xD555,0x4000,
X	0x0000,0x00FF,0xC000,0x007F,0xEAAA,0xA000,
X	0x0000,0x007F,0x0003,0xFFFF,0xF555,0x5000,
X	0x0000,0x00FC,0x003F,0xFFFF,0xFAAA,0xA800,
X	0x0000,0x0078,0x03FF,0xFFFF,0xF000,0x0000,
X	0x0000,0x0038,0x0FFF,0xFFFF,0xE000,0x0000,
X	0x0000,0x007C,0x3FFF,0xFFFF,0xE000,0x0000,
X	0x0000,0x003E,0xFFFF,0xFFFF,0xC000,0x0000,
X	0x0000,0x007F,0xFFFF,0xFFFD,0x4000,0x0000,
X	0x0000,0x003F,0xFFFF,0xFAAA,0x8000,0x0000,
X	0x0000,0x007F,0xFFFD,0x5555,0x4000,0x0000,
X	0x0000,0x003F,0xFAAA,0xAAAA,0x8000,0x0000,
X	0x0000,0x007D,0x5555,0x5555,0x4000,0x0000,
X	0x0000,0x00AA,0xAAAA,0xAAAA,0xA000,0x0000,
X	0x0000,0x0055,0x5555,0x5555,0x4000,0x0000,
X	0x0000,0x002A,0xAAAA,0xAAAA,0xA000,0x0000,
X	0x0000,0x0015,0x5555,0x5555,0x4000,0x0000,
X	0x0000,0x000A,0xAAAA,0xAAAA,0xA03F,0x8000,
X	0x0000,0x0005,0x5555,0x5555,0x7FFF,0x8000,
X	0x0000,0x0002,0xAAAA,0xABFF,0xFF00,0x0000,
X	0x0000,0x0001,0x5555,0xFFFF,0xFC00,0x0000,
X	0x0000,0x0000,0xAAAA,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X   }
X};
X
X
XUSHORT (*Eyemap_chip);         		/* Eye */
XUSHORT Eyemap [4] = {
X        0x6000,
X        0xf000,
X        0xf000,
X        0x6000
X};
X
Xstatic struct Gadget gadget =		/* Used to move and quit */
X{ NULL,
X  0, 0, 0, 0,
X  GADGHNONE|GRELWIDTH|GRELHEIGHT,
X  GADGIMMEDIATE|RELVERIFY,
X  WDRAGGING,
X  NULL,
X  NULL,
X  NULL,
X  NULL,
X  NULL,
X  0, 0
X};
X
Xstatic struct NewWindow IconNW =	/* The window */
X{ 351, 11,
X  88, 88,
X  -1, -1,
X  GADGETDOWN,
X  RMBTRAP|BORDERLESS|SMART_REFRESH|NOCAREREFRESH,
X  &gadget,
X  NULL,
X  NULL,
X  NULL,
X  NULL,
X  0, 0, 0, 0,
X  WBENCHSCREEN
X};
X
Xstruct Window *win, *OpenWindow();
X
XOpenStuff () {
X        int i,j;
X        extern USHORT *Eyemap_chip;
X        extern USHORT *Manmap_chip[];
X        PLANEPTR pl;
X
X        if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 0L)))
X                CloseStuff (1);
X        if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0L)))
X                CloseStuff (1);
X        if (!(win = OpenWindow (&IconNW)))
X                CloseStuff (1);
X        if ((Eyemap_chip = AllocMem((LONG)sizeof(Eyemap),MEMF_CHIP))== 0) 
X        	CloseStuff (1);   /* allocate chip memory for images */
X        for (i=0 ; i < 4 ;i++) {
X                Eyemap_chip[i] = Eyemap[i];
X        }
X        if ((Manmap_chip[0] = AllocMem((LONG)sizeof(Manmap[0]),MEMF_CHIP)) == NULL)
X             CloseStuff (1);
X        if ((Manmap_chip[1] = AllocMem((LONG)sizeof(Manmap[1]),MEMF_CHIP)) == NULL)
X             CloseStuff (1);
X
X        for (i=0 ; i < 528 ;i++) {
X                Manmap_chip[0][i] = Manmap[0][i];
X                Manmap_chip[1][i] = Manmap[1][i];
X        }
X        SetAPen(win->RPort, 1L);
X        SetDrMd(win->RPort, JAM1);
X        BltTemplate(Manmap_chip[0], 0L, 12L, win->RPort, 0L, 0L, 88L, 88L);
X        SetAPen(win->RPort, 2L);
X	SetWrMsk(win->RPort, 2L);       /* Braindead COMPLEMENT */
X        BltTemplate(Manmap_chip[1], 0L, 12L, win->RPort, 0L, 0L, 88L, 88L);
X        SetWrMsk(win->RPort, 255L);     /* Braindead COMPLEMENT */
X        if (!(timerport = CreatePort(NULL, 0L))
X            || !(timermsg = CreateStdIO(timerport))
X            || OpenDevice(TIMERNAME,UNIT_VBLANK, timermsg, 0L))
X                CloseStuff(1);
X}
X
XCloseStuff (exitcode)
Xint exitcode; 
X{
X        if (timermsg)       {
X                CloseDevice(timermsg);
X                DeleteStdIO(timermsg);
X        }
X        if (timerport)          DeletePort(timerport);
X        if (win)                CloseWindow(win);
X        if (IntuitionBase)      CloseLibrary(IntuitionBase);
X        if (GfxBase)            CloseLibrary(GfxBase);
X        if (Eyemap_chip)        FreeMem(Eyemap_chip, (LONG)sizeof(Eyemap));
X        if (Manmap_chip[0])     FreeMem(Manmap_chip[0], (LONG)sizeof(Manmap[0]));
X        if (Manmap_chip[1])     FreeMem(Manmap_chip[1], (LONG)sizeof(Manmap[1]));
X        exit (exitcode);
X}
X
X/* Hmm, this seems to work - a bit strange, but it works... */
X#define ABS(x) (x<0 ? -x : x)
X#define index(x,y)   (((y<0)<<2) + ((x<0)<<1) + (ABS(x)>ABS(y)))
X
X/****************************************************************
X*	Draw the eye at OffX, OffY but with an extra offset
X*	given by idx in a direct[]-table.
X*	col is used to erase/draw.
X*/
X
Xvoid DrawEye(idx, OffX, OffY, col)
Xint idx, OffX, OffY, col;
X{
X        static int direct[2][8] = {
X                { 1, 2,-1,-2, 1, 2,-1,-2},
X                { 2, 1, 2, 1,-2,-1,-2,-1}};
X
X        SetAPen(win->RPort, (LONG)col);
X        BltTemplate(Eyemap_chip, 0L, 2L, win->RPort,
X                (LONG)(OffX + direct[0][idx&7]), 
X                (LONG)(OffY + direct[1][idx&7]), 4L, 4L);
X}
X
X/****************************************************************
X*	Get mouse position relative to windows upper left corner.
X*	(A lot easier than I thought...) A very nice programmer
X*	probably would get the mouse coords in another way, but
X*	I'm not very paranoid...
X*/
X
Xvoid GetRelMp(x,y)
Xint *x,*y;
X{
X        *x = win->WScreen->MouseX - win->LeftEdge;
X        *y = win->WScreen->MouseY - win->TopEdge;
X}
X
X/****************************************************************
X*	The main loop. Ok, I COULD do the timer and intuimsgs
X*	in a nicer way, but it wouldn't make much of a difference
X*	so why bother?
X*/
X
X_main ()
X{
X    ULONG msgclass;  		/* Message class from Intuition message */
X    struct IntuiMessage *msg;	/* The msg we got */
X    int Mx, My,			/* Mouse's current relative offset */ 
X    	LastL, LastR, 		/* Last index for left&right Eye */
X    	NewL, NewR;		/* New index    --   ""   --     */
X    ULONG PrevSecs, PrevMics;	/* Time of last click */
X
X    /* Init */
X    OpenStuff ();
X    DrawEye(LastL, Lx, Ly, 1);
X    DrawEye(LastR, Rx, Ry, 1);
X
X    for(;;) {
X        timermsg->io_Command = TR_ADDREQUEST;   /* add a new timer request */
X        timermsg->io_Actual = 0;                /* seconds */
X        timermsg->io_Length = 100000;           /* microseconds */
X        DoIO(timermsg);                         /* Wait for a while... */
X        while(msg = (struct IntuiMessage *)GetMsg(win->UserPort)) {    
X            /* User action */
X            msgclass = msg->Class;
X            ReplyMsg (msg);
X            switch (msgclass) {
X            case GADGETDOWN:
X                if (DoubleClick(PrevSecs, PrevMics, msg->Seconds, msg->Micros))
X                    CloseStuff(0);
X                else {
X                    PrevSecs = msg->Seconds;
X                    PrevMics = msg->Micros;
X                }
X            }
X        }
X        GetRelMp(&Mx, &My);                      /* Action ! */
X        if (LastL != (NewL = index(Mx - Lx, My - Ly))) {
X            DrawEye(LastL, Lx, Ly, 0);
X            DrawEye(LastL=NewL, Lx, Ly, 1);
X        }
X        if (LastR != (NewR = index(Mx - Rx, My - Ry))) {
X            DrawEye(LastR, Rx, Ry, 0);
X            DrawEye(LastR=NewR, Rx, Ry, 1);
X        }
X    }
X}
SHAR_EOF
echo "extracting watchman.uu"
sed 's/^X//' << \SHAR_EOF > watchman.uu
X
Xbegin 644 watchman
XM```#\P`````````#``````````(```*[```"3@````$```/I```"NT[Z!?!.]
XM5?_X0J=(>@($3KH*1%!/*4"(VF8*/SP``4ZZ`B!43T*G2'H!^DZZ"BA03RE`>
XMB-YF"C\\``%.N@($5$](;(A^3KH*FEA/*4"([F8*/SP``4ZZ`>I43TAX``)([
XM>``(3KH)6%!/*4"(ZF8*/SP``4ZZ`<Q43T)M__XP+?_^2,#C@$'LB$HR+?_^3
XM2,'C@2)LB.HSL`@`&`!2;?_^#&T`!/_^;=9(>``"2'@$($ZZ"0Q03RE`@`)F<
XM"C\\``%.N@&`5$](>``"2'@$($ZZ".Y03RE`@`9F"C\\``%.N@%B5$]";?_^*
XM,"W__DC`XX!![(`*,BW__DC!XX$B;(`",[`(`!@`,"W__DC`XX!![(0J,BW_6
XM_DC!XX$B;(`&,[`(`!@`4FW__@QM`A#__FVX2'@``2!LB.XO*``R3KH):E!/1
XM0J<@;(CN+R@`,DZZ"6I03TAX`%A(>`!80J="IR!LB.XO*``R2'@`#$*G+RR`K
XM`DZZ"11/[P`@2'@``B!LB.XO*``R3KH)(E!/(&R([B)H`#(3?``"`!A(>`!8C
XM2'@`6$*G0J<@;(CN+R@`,DAX``Q"IR\L@`9.N@C.3^\`("!LB.XB:``R$WP`4
XM_P`80J="ITZZ!EI03RE`B.)G*B\LB.).N@<T6$\I0(CF9QI"IR\LB.9(>``!.
XM2'H`/4ZZ"$1/[P`02H!G"#\\``%A-E1/3EU.=6EN='5I=&EO;BYL:6)R87)Y$
XM`&=R87!H:6-S+FQI8G)A<GD`=&EM97(N9&5V:6-E`$Y5``!*K(CF9Q0O+(CF^
XM3KH%OEA/+RR(YDZZ!M!83TJLB.)G"B\LB.).N@9,6$]*K(CN9PHO+(CN3KH(5
XM3%A/2JR(VF<*+RR(VDZZ!9!83TJLB-YG"B\LB-Y.N@6`6$]*K(CJ9PY(>``(D
XM+RR(ZDZZ!TY03TJL@`)G#DAX!"`O+(`"3KH'.E!/2JR`!F<.2'@$("\L@`9.C
XMN@<F4$\_+0`(3KH#C%1/3EU.=4Y5```P+0`.2,`O`"!LB.XO*``R3KH'J%!/(
XM2'@`!$AX``0P+0`(P'P`!TC`XX!![(B^,C`(`-)M``Q(P2\!,"T`",!\``=(L
XMP..`0>R(KC(P"`#2;0`*2,$O`2!LB.XO*``R2'@``D*G+RR(ZDZZ!RY/[P`@0
XM3EU.=4Y5```@;0`((FR([BQI`"XB;(CN,"X`$I!I``0P@"!M``PB;(CN+&D``
XM+B)LB.XP+@`0D&D`!C"`3EU.=4Y5_^1.NOQB/SP``3\\`#$_/``=/RW_\DZZ.
XM_S)03S\\``$_/``N/SP`,3\M__!.NO\<4$\@;(CF,7P`"0`<(&R(YD*H`"`@N
XM;(CF(7P``8:@`"0O+(CF3KH%VEA/(&R([B\H`%9.N@8:6$\K0/_X9V@@;?_X,
XM*V@`%/_\+RW_^$ZZ!EA83R`M__Q@1"!M__@O*``H(&W_^"\H`"0O+?_D+RW_*
XMZ$ZZ!I)/[P`02D!G"D)G3KK]\E1/8!0@;?_X*V@`)/_H(&W_^"MH`"C_Y&`(T
XMD+P````@9[1@A$AM__1(;?_V3KK^XE!/,"W_]I!\`!U*0&P,,"W_]D1`D'P`C
XM'6`(,"W_]I!\`!T_`#`M__20?``Q2D!L##`M__1$0)!\`#%@"#`M__20?``Q4
XM,A^R0&\$<`%@`G``,BW_]))\`#%*06P$<@%@`G(`Y4'003(M__:2?``=2D%LY
XM!'(!8`)R`.-!T$$[0/_NL&W_\F<P0F<_/``Q/SP`'3\M__).NOW24$\_/``!)
XM/SP`,3\\`!T[;?_N__(_+?_N3KK]ME!/,"W_]I!\`#%*0&P,,"W_]D1`D'P`P
XM,6`(,"W_]I!\`#$_`#`M__20?``N2D!L##`M__1$0)!\`"Y@"#`M__20?``NS
XM,A^R0&\$<`%@`G``,BW_]))\`"Y*06P$<@%@`G(`Y4'003(M__:2?``Q2D%L*
XM!'(!8`)R`.-!T$$[0/_LL&W_\&<P0F<_/``N/SP`,3\M__!.NOT>4$\_/``!@
XM/SP`+C\\`#$[;?_L__`_+?_L3KK]`E!/8`#]Y$Y=3G5A<$/LB-I%[(C:M<EF<
XM#C(\`!=K"'0`(L)1R?_\*4^(\BQX``0I3HCV2.>`@`@N``0!*6<02_H`"$ZN5
XM_^)@!D*G\U].<T/Z`"!.KOYH*4"(^F8,+CP``X`'3J[_E&`$3KK]2E!/3G5D;
XM;W,N;&EB<F%R>0!)^0``?_Y.=4Y5``!*K(C^9P8@;(C^3I`_+0`(3KH`"%1/J
XM3EU.=4Y5__PO!#`M``A(P"M`__Q*K(D&9RAX`&`*/P1.N@#^5$]21+ALB,YMQ
XM\#`LB,[!_``&+P`O+(D&3KH#/%!/2JR)`F<&(&R)`DZ02JR(U&<*+RR(U$ZZ)
XM`1Y83TJLB0IG""!LB0H@K(D.2JR)$F<*+RR)$DZZ`2!83TJLB19G"B\LB19.6
XMN@$06$]*K(D:9PHO+(D:3KH!`%A/2JR)'F<*+RR)'DZZ`/!83RQX``0(+@`$[
XM`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR)(F8P2JR))F<H,"R)*DC`+P`O8
XM+(DF3KH"E#`LB2Q20$C`Y8`O`"\LB2Y.N@*`3^\`$&`.3KH":B\LB2).N@+FZ
XM6$\@+?_\+FR(\DYU*!].74YU3E4``$CG#B`X+0`(,`3!_``&)$#5[(D&2D1M.
XM"KALB,YL!$J29A`Y?``"B3)P_TS?!'!.74YU""H`!P`$9@@O$DZZ``I83T*2M
XM<`!@XB(O``0L;(CZ3N[_W$[Z``(B+P`$+&R(^D[N_Z8B;P`$+&R(]D[N_CY.#
XM^@`"(F\`!"QLB/9.[OYB3E4``$CG""!(>/__3KH`T"@`L+S_____6$]F"G``J
XM3-\$$$Y=3G5(>0`!``%(>``B3KH!8"1`2H!03V8,+P1.N@&F<`!83V#6)6T`[
XM"``*%6T`#P`)%7P`!``(0BH`#A5$``]"ITZZ`50E0``02JT`"%A/9PHO"DZZ^
XM`%I83V`*2&H`%$ZZ`7Y83R`*8)).50``+PHD;0`(2JH`"F<(+PI.N@&>6$\5Y
XM?`#_``@E?/____\`%'``$"H`#R\`3KH!*DAX`"(O"DZZ`0Q/[P`,)%].74YUZ
XM(F\`!"QLB/9.[OZ>("\`!"QLB/9.[OZV3E4``$AX`#`O+0`(3KH`&E!/3EU.-
XM=4Y5```O+0`(3KH`3%A/3EU.=4Y5```O"DJM``AF"'``)%].74YU2'D``0`!2
XM+RT`#$ZZ`&`D0$J`4$]F!'``8.`5?``%``@U;0`.`!(E;0`(``X@"F#*3E4`V
XM`"\*)&T`""`*9@8D7TY=3G45?`#_``@E?/____\`%"5\_____P`8<``P*@`2S
XM+P`O"DZZ`$903V#23OH``DSO``,`!"QLB/9.[O\Z2.<#`")O``PL;(CV3J[^]
XM.$S?`,!.=4[Z``(B;P`$+&R(]D[N_MHL;(CV3N[_?$[Z``(B;P`$("\`""QL*
XMB/9.[O\N("\`!"QLB/9.[OZP3OH``B!O``0L;(CV3N[^C"!O``0@B%B00J@``
XM!"%(``A.=2!O``1,[P(!``@B+P`0+&R(]D[N_D1.^@`"+&R(]B)O``0@+P`(2
XM3N[]V")O``0L;(CV3N[^F$[Z``(B;P`$+&R(]D[N_H9(YPP`(&\`#$SO`@,`9
XM$$SO`#P`'"QLB-Y.KO_<3-\`,$YU(F\`!"`O``@L;(C>3N[^JB)O``0@+P`(0
XM+&R(WD[N_IX@;P`$+&R(VD[N_[A,[P`/``0L;(C:3N[_FB!O``0L;(C:3N[_[
XM-````^P````!`````0``!F8````````#\@```^H```(V``````````#_____G
XM_________P"``````````````0"55555=55555555P"JJJJO^J^JJJJJJP"5!
XM555__7_555555P"JJK___?_^JJJJJP"55?___G__U5555P"J_____[__^JJJQ
XMJP"7_____\__]5555P"_______?_^JJJJP"_______G_]5555P"_______[_-
XM^JJJJP"?______\__5555P"O_______?^JJJJP"7_________5555P"J____(
XM_____JJJJP"5?________5555P"JO________JJJJP"57_____]?_U555P"JA
XMK____ZJJ_JJJJP"55?__@'_]55555P"JJO_P#__ZJJJJJP"555`/____5555P
XM5P"JJJ'____]JJJJJP"555_____ZU5555P"JJJ_____]:JJJJP"555_____^O
XMM5555P"JJJ______7JJJJP"555______K5555P"JJJ______UJJJJP"555__A
XM____JU555P"JJJ______U:JJJP"555______ZU555P"JJJ______]:JJJP"5U
XM55______ZM555P"JJJ______]6JJJP"555______^K555P"JJJ_______6ZJ"
XMJP"555______ZKM55P"JJJ_____]55:JJP"555___^JZJJM55P"JJJ___U5__
XM55:JJP"555_^JKK_^JUU5P"JJJ]_55___5JZJP"555K_KK_#_JU]5P"JJJW56
XM__X`_5J\JP"555:___P`?K5[5P"JJJOP'_0`?UJ\JP"5557@#_P`?K5[5P"J5
XMJJK`!_0`?UJTJP"5557`!_H`_J]K5P"JJJK`!_?'_U6VJP"5555@#^O_5551!
XM5P"JJJKP'_?JJJJJJP"5555X/ZH`!5535P"JJJJ_[5```JJHJP"5555]6@``A
XM`5555P"JJJJJH````*JJJP"55550`````5555P"JJJH``````*JJJP"5550`5
XM`````%555P"JJJH``````"JJJP"5554``````%555P"JJJH`'@```"JJJP"5N
XM554`/P``(!555P"JJJJ`_P%54`JJJP"5554"_RJJH`555P"JJJJ'_550``__F
XM^P"5555%>J@``!__]P"JJJJ"U4```!__^P"5555!`````#__]P"JJJJ`````7
XM`K__^P"5555````%57__]P"JJJJ```*JJK__ZP"5555`!55557__]P"JJJJ"^
XMJJJJJK__ZP"55555555555__UP"JJJJJJJJJJK__JP"55555555555__UP"JN
XMJJJJJJJJJK__JP"55555555555_JUP"JJJJJJJJJJM55*P"555555556JJI5Y
XM5P"JJJJJJJM555:JJP"55555555555555P"JJJJJJJJJJJJJJP"_________:
XM_____P#______________P``````````````````````````````````````Q
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM`````````````````````````````````````````````````````````````
XM``````````````````"@`````````````%55`0``````````?__ZJH``````M
XM```/___U50````````_____ZJH```````!______54````````______JJ``,
XM``````?_____U5````````______ZJ````````?_____]5````````______0
XM^J@```````?______50```````_______JH```````?______U4```````__.
XM_____JH```````?______U4```````_______ZJ```````?______]5`````'
XM``_______^J@``````?______]5```````_______^Z@``````?_______U02
XM``````_____G__ZH``````?____`__U4``````_C_^</__JJ``````?`_^`_;
XM__54``````^`<?@#__JX``````9^#_X`__5>``````/_O_P`?^J^``````'PL
XM'_P`?_5>``````#@#_P`?^J^``````!`!_P`?_5>``````#`!_X`__J^````0
XM``!`!__'__]<```````@#__^JJJL``````!P'__55556```````X/___^JJN]
XM```````?U____557```````ZK____JJJ``````!57____U55``````"O____=
XM_JJJ@`````'______U550`````/__^!__ZJJ@`````'__P`!_]550`````#_3
XM^```#ZJJH`````'_X```#]550`````#_P```?^JJH`````!_``/___554```@
XM``#\`#____JJJ`````!X`_____`````````X#____^````````!\/____^``I
XM```````^_____\````````!______4`````````____ZJH````````!___U5D
XM54`````````_^JJJJH````````!]555554````````"JJJJJJJ````````!5D
XM555554`````````JJJJJJJ`````````5555554`````````*JJJJJJ`_@````
XM```%555557__@``````"JJJK__\````````!557___P`````````JJH`````/
XM``````````````````````````````````````````````````!@`/``\`!@@
XM``````````````````!C``,`(```````````````````````````````````&
XM`5\`"P!8`%C__P```"```P@````(4```````````````````````````````<
XM```!``$``O____X``0`"_____@`"``$``@`!__[____^__\`%```````````-
XF``````/L`````0````$```B.`````````_(```/K`````0```_(`@
X``
Xend
Xsize 5168
SHAR_EOF
echo "End of archive 1 (of 1)"
# if you want to concatenate archives, remove anything after this line
exit