Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

v23i004: dice - a simple dice rolling utility, Part01/01

2 views
Skip to first unread message

Alex Crain

unread,
Mar 13, 1995, 3:59:38 PM3/13/95
to
Submitted-by: al...@cs.umbc.edu (Alex Crain)
Posting-number: Volume 23, Issue 4
Archive-name: dice/part01
Environment: X11

Dice is a simple dice rolling utility, for days when making a decision
just isn't worth it. It's also good for backgammon.

Dice draws a little window filled with green felt and two six sided die.
Clicking the mouse inspires the dice to tumble and land on a random value.
The values are derived from random(3c) and the series is initialized by the
system clock when the program starts, so the values should be well
distributed.

'Q' quits the application.

This has been tested on an SGI Indigo, and I think that it worked right
on my SPARC, but I don't remember if I tested the latest version before
the SPARC was relegated to a corner. In any case, it's pretty simple and
should work most places. Bugs to al...@cs.umbc.edu.

The work is copyright, but freely distributable. If you can make money on
it, by all means do so, but leave my name on the code.

#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: dice dice/Dice.ad dice/Imakefile dice/README dice/dice.c
# dice/dice.man dice/dice_bg.xbm_gz_UU dice/dice_fg.xbm_gz_UU
# dice/patchlevel.h
# Wrapped by al...@retriever.cs.umbc.edu on Fri Aug 19 13:59:38 1994
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test ! -d 'dice' ; then
echo shar: Creating directory \"'dice'\"
mkdir 'dice'
fi
if test -f 'dice/Dice.ad' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/Dice.ad'\"
else
echo shar: Extracting \"'dice/Dice.ad'\" \(164 characters\)
sed "s/^X//" >'dice/Dice.ad' <<'END_OF_FILE'
X*dice.matColor: forest green
X*dice.diceColor: antique white
X*dice.dotColor: saddle brown
X*dice.minTurns: 20
X*dice.maxTurns: 70
X*dice.delay: 40000
X*dice.sync: true
X
END_OF_FILE
if test 164 -ne `wc -c <'dice/Dice.ad'`; then
echo shar: \"'dice/Dice.ad'\" unpacked with wrong size!
fi
# end of 'dice/Dice.ad'
fi
if test -f 'dice/Imakefile' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/Imakefile'\"
else
echo shar: Extracting \"'dice/Imakefile'\" \(559 characters\)
sed "s/^X//" >'dice/Imakefile' <<'END_OF_FILE'
X#
X# Imakefile for the dice program.
X#
X# Writen by Alex Crain
X#
X# Free for the taking
X#
XSingleProgramTarget(dice,dice.o,-lXaw -lXmu -lXt -lXext -lX11,-lm)
XInstallProgram(dice,$(BINDIR))
XInstallAppDefaults(Dice)
XInstallManPage(dice,$(MANDIR))
X
X.SUFFIXES: .xbm .xbm_gz_UU .xbm
X
X.xbm_gz_UU.xbm:
X uudecode $*.xbm_gz_UU
X gunzip $*.xbm.gz
X
X.xbm.xbm_gz_UU:
X gzip $*.xbm
X uuencode $*.xbm.gz < $*.xbm.gz > $*.xbm_gz_UU
X
Xdice.c: patchlevel.h dice_bg.xbm dice_fg.xbm
X
Xdist: dice_bg.xbm_gz_UU dice_fg.xbm_gz_UU
X rm -f dice dice.o dice_bg.xbm dice_fg.xbm *~ Makefile *.bak
END_OF_FILE
if test 559 -ne `wc -c <'dice/Imakefile'`; then
echo shar: \"'dice/Imakefile'\" unpacked with wrong size!
fi
# end of 'dice/Imakefile'
fi
if test -f 'dice/README' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/README'\"
else
echo shar: Extracting \"'dice/README'\" \(858 characters\)
sed "s/^X//" >'dice/README' <<'END_OF_FILE'
X
XDice is a simple dice rolling utility, for days when making a decision
Xjust isn't worth it. It's also good for backgammon.
X
XDice draws a little window filled with green felt and two six sided die.
XClicking the mouse inspires the dice to tumble and land on a random value.
XThe values are derived from random(3c) and the series is initialized by the
Xsystem clock when the program starts, so the values should be well
Xdistributed.
X
X'Q' quits the application.
X
XThis has been tested on an SGI Indigo, and I think that it worked right
Xon my SPARC, but I don't remember if I tested the latest version before
Xthe SPARC was relegated to a corner. In any case, it's pretty simple and
Xshould work most places. Bugs to al...@cs.umbc.edu.
X
XThe work is copyright, but freely distributable. If you can make money on
Xit, by all means do so, but leave my name on the code.
END_OF_FILE
if test 858 -ne `wc -c <'dice/README'`; then
echo shar: \"'dice/README'\" unpacked with wrong size!
fi
# end of 'dice/README'
fi
if test -f 'dice/dice.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/dice.c'\"
else
echo shar: Extracting \"'dice/dice.c'\" \(7572 characters\)
sed "s/^X//" >'dice/dice.c' <<'END_OF_FILE'
X/***
X *** dice.c - a simple dice program.
X ***
X *** Copyright 1994 Alex Crain
X *** This code may be duplicated or modified without permission
X *** for any reason, as long this copyright remains in the source
X ***/
X#include <X11/IntrinsicP.h>
X#include <X11/StringDefs.h>
X#include <X11/keysym.h>
X#include <X11/Xaw/Box.h>
X
X#include <stdio.h>
X#include <stdlib.h>
X
X#include "dice_bg.xbm"
X#include "dice_fg.xbm"
X
X#include "patchlevel.h"
X
X/***
X *** DATA
X ***/
X
Xstatic String fallback_resources[] = {
X NULL,
X};
X
Xtypedef struct {
X int min_turns;
X int max_turns;
X int delay;
X Pixel mat_color;
X Pixel dice_color;
X Pixel dot_color;
X Boolean sync;
X} OptionsRec;
X
Xstatic OptionsRec options;
X
X#define Offset(field) XtOffsetOf(OptionsRec,field)
Xstatic XtResource resources[] = {
X {"maxTurns", "MaxTurns", XtRInt, sizeof (int),
X Offset(max_turns), XtRString, (XtPointer) "200"},
X {"minTurns", "MinTurns", XtRInt, sizeof (int),
X Offset(min_turns), XtRString, (XtPointer) "50"},
X {"delay", "Delay", XtRInt, sizeof (int),
X Offset(delay), XtRString, (XtPointer) "3000"},
X {"matColor", "Foreground", XtRPixel, sizeof (Pixel),
X Offset (mat_color), XtRString, (XtPointer) "white"},
X {"diceColor", "Background", XtRPixel, sizeof (Pixel),
X Offset (dice_color), XtRString, (XtPointer) "white"},
X {"dotColor", "Foreground", XtRPixel, sizeof (Pixel),
X Offset (dot_color), XtRString, (XtPointer) "black"},
X {"sync", "Sync", XtRBoolean, sizeof (Boolean),
X Offset (sync), XtRString, (XtPointer) "true"},
X};
X#undef Offset
X
Xstatic XrmOptionDescRec optionDesc[] = {
X {"-min", "*minTurns", XrmoptionSepArg, NULL},
X {"-max", "*maxTurns", XrmoptionSepArg, NULL},
X {"-delay", "*delay", XrmoptionSepArg, NULL},
X {"-mat_color", "*matColor", XrmoptionSepArg, NULL},
X {"-dice_color", "*diceColor", XrmoptionSepArg, NULL},
X {"-dot_color", "*dotColor", XrmoptionSepArg, NULL},
X {"-sync", "*sync", XrmoptionSepArg, NULL},
X};
X
XGC gc;
XPixmap pixmap;
XXtAppContext app_con;
Xunsigned long pixels[4];
X
X/***
X *** PRIVATE
X ***/
X
Xstatic void InitColors (dpy)
X Display * dpy;
X{
X int scn = DefaultScreen (dpy);
X XColor color;
X Colormap colormap;
X unsigned long plane_masks[2];
X
X if (DisplayPlanes (dpy, scn) == 1)
X {
X no_map:
X pixels[0] == pixels[1] == pixels[3] == WhitePixel (dpy, scn);
X pixels[2] == BlackPixel (dpy, scn);
X }
X else
X {
X colormap = DefaultColormap (dpy, scn);
X if (! XAllocColorCells (dpy, colormap, 1, plane_masks, 2, pixels, 1))
X goto no_map;
X
X pixels[1] = pixels[0] | plane_masks[0];
X pixels[2] = pixels[0] | plane_masks[1];
X pixels[3] = pixels[0] | plane_masks[0] | plane_masks[1];
X
X /* mat color */
X color.pixel = options.mat_color;
X XQueryColor (dpy, colormap, &color);
X color.pixel = pixels[0];
X XStoreColor (dpy, colormap, &color);
X
X /* dice color */
X color.pixel = options.dice_color;
X XQueryColor (dpy, colormap, &color);
X color.pixel = pixels[1];
X XStoreColor (dpy, colormap, &color);
X
X /* dot color */
X color.pixel = options.dot_color;
X XQueryColor (dpy, colormap, &color);
X color.pixel = pixels[2];
X XStoreColor (dpy, colormap, &color);
X
X /* extra color */
X color.pixel = options.mat_color;
X XQueryColor (dpy, colormap, &color);
X color.pixel = pixels[3];
X XStoreColor (dpy, colormap, &color);
X }
X}
X
Xstatic int delay (delay)
X int delay;
X{
X int i;
X static int _i;
X for (i = 0; i < delay; i++)
X _i += i;
X return _i;
X}
X
Xstatic void DiceEventHandler (w, data, e, cont)
X Widget w;
X XtPointer data;
X XEvent * e;
X Boolean * cont;
X{
X int x, y;
X int rl, rr;
X unsigned long r;
X static int yr, yl = -1;
X
X if (gc == (GC) 0)
X {
X XGCValues vals;
X Display * dpy = XtDisplay (w);
X int scn = DefaultScreen (dpy);
X Arg args[2];
X int n;
X GC tgc;
X Pixmap tpixmap;
X
X vals.plane_mask = pixels[1];
X tgc = XtGetGC (w, (GCPlaneMask), &vals);
X pixmap = XCreatePixmapFromBitmapData (XtDisplay (w),
X XtWindow (w),
X dice_fg_bits,
X dice_fg_width,
X dice_fg_height,
X pixels[2],
X pixels[0],
X 0x08);
X
X tpixmap = XCreatePixmapFromBitmapData (XtDisplay (w),
X XtWindow (w),
X dice_bg_bits,
X dice_bg_width,
X dice_bg_height,
X pixels[1],
X pixels[0],
X 0x08);
X
X XCopyArea (XtDisplay (w), tpixmap, pixmap, tgc, 0, 0,
X dice_bg_width, dice_bg_height, 0, 0);
X XFreePixmap (dpy, tpixmap);
X XFreeGC (dpy, tgc);
X
X gc = DefaultGC (dpy, scn);
X }
X
X if (e->type == ButtonPress)
X {
X r = random ();
X rl = ((r & 0xffff) % (options.max_turns - options.min_turns)) +
X options.min_turns;
X rr = ((r >> 16) % options.max_turns - options.min_turns) +
X options.min_turns;
X for (; rl >= 0 || rr >= 0; rl--,rr--)
X {
X delay ((options.delay / 2) + (random () % options.delay));
X r = random ();
X
X if (rl > 0)
X {
X x = ((r & 0xffff) % 5) * 52;
X y = ((r & 0xffff) % 6) * 52;
X XCopyArea (XtDisplay (w), pixmap, XtWindow (w), gc, x, y,
X 52, 52, 0, 0);
X }
X else if (rl == 0)
X XCopyArea (XtDisplay (w), pixmap, XtWindow (w), gc, 0, yl,
X 52, 52, 0, 0);
X
X delay ((options.delay / 2) + (random () % options.delay));
X if (rr > 0)
X {
X r >> 16;
X x = (r % 5) * 52;
X y = (r % 6) * 52;
X
X XCopyArea (XtDisplay (w), pixmap, XtWindow (w), gc, x, y,
X 52, 52, 52, 0);
X }
X else if (rr == 0)
X XCopyArea (XtDisplay (w), pixmap, XtWindow (w), gc, 0, yr,
X 52, 52, 52, 0);
X
X }
X
X yl = (random () % 6) * 52;
X yr = (random () % 6) * 52;
X }
X else
X {
X if (yl == -1)
X {
X yl = (random () % 6) * 52;
X yr = (random () % 6) * 52;
X }
X XCopyArea (XtDisplay (w), pixmap, XtWindow (w), gc, 0, yl,
X 52, 52, 0, 0);
X XCopyArea (XtDisplay (w), pixmap, XtWindow (w), gc, 0, yr,
X 52, 52, 52, 0);
X }
X}
X
Xstatic void QuitEventHandler (w, data, e, cont)
X Widget w;
X XtPointer data;
X XEvent * e;
X Boolean * cont;
X{
X XKeyEvent * ke = (XKeyEvent *) e;
X int keysym;
X keysym = XKeycodeToKeysym (XtDisplay(w), ke->keycode, 0);
X if (keysym == XK_Q || keysym == XK_q)
X exit (0);
X}
X
X/***
X *** PUBLIC
X ***/
X
Xvoid
Xmain(argc, argv)
X unsigned int argc;
X char **argv;
X{
X Arg args[20];
X int n;
X int screen;
X int count;
X long t;
X Widget toplevel, main_w;
X
X time (&t);
X srandom (t);
X
X n = 0;
X toplevel = XtAppInitialize(&app_con, "Dice",
X optionDesc, XtNumber (optionDesc),
X &argc, argv,
X fallback_resources,
X args, n);
X
X XtGetApplicationResources (toplevel, (XtPointer) &options,
X resources, XtNumber (resources),
X (Arg *) NULL, 0);
X
X InitColors (XtDisplay (toplevel));
X
X if (options.sync)
X XSynchronize (XtDisplay (toplevel), True);
X
X n = 0;
X XtSetArg (args[n], XtNwidth, 104); n++;
X XtSetArg (args[n], XtNheight, 52); n++;
X XtSetArg (args[n], XtNbackground, pixels[0]); n++;
X XtSetArg (args[n], XtNforeground, pixels[3]); n++;
X main_w = XtCreateManagedWidget ("main", boxWidgetClass, toplevel,
X args, n);
X XtAddEventHandler (main_w, ButtonPressMask | ExposureMask,
X FALSE, DiceEventHandler, NULL);
X XtAddEventHandler (main_w, KeyPressMask,
X FALSE, QuitEventHandler, NULL);
X
X XtRealizeWidget(toplevel);
X XtAppMainLoop(app_con);
X}
END_OF_FILE
if test 7572 -ne `wc -c <'dice/dice.c'`; then
echo shar: \"'dice/dice.c'\" unpacked with wrong size!
fi
# end of 'dice/dice.c'
fi
if test -f 'dice/dice.man' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/dice.man'\"
else
echo shar: Extracting \"'dice/dice.man'\" \(1462 characters\)
sed "s/^X//" >'dice/dice.man' <<'END_OF_FILE'
X.TH DICE
X.SH NAME
Xdice - dice roll utility for The X11 Windows System.
X.SH SYNOPSIS
X.B dice
X[-\fIoptions\fP] [-\fItoolkitoption\fP ...]
X.SH DESCRIPTION
X.B dice
Xopens a window a displays two 6 sided dice. clicking a mouse button
Xin the window "rolls" the dice, using the unix random () function to
Xcalculate the resulting values. The 'q' key exits the application.
X
XThe following resources are defined, with their associated command line
Xoptions:
X.TP 5
X\fBminTurns, maxTurns\fP
X\fB(-min\fI n\fB, -max\fI n\fB)\fR
XSet a boundry on the number of tumbles that the dice are allowed to take.
XThe default is 50 to 200.
X.TP 5
X\fBdelay\fR
X\fB(-delay\fI n\fB)\fR
XSet the delay factor. This is an asthetic value and varies with the speed
Xof the hardware, the default is 3000, which looks good on a 100Mhz R4000.
X.TP 5
X\fBmatColor, diceColor, dotColor\fP
X\fB(-mat_color\fI color, \fB-dice_color\fI color, \fB-dot_color\fI color\fB)\fR
Xset the color for the background, the dice and the spots, respectively.
X.TP 5
X\fBsync\fP
X\fB(-sync\fI bool\fB)\fR
XSynchronize the X display. This is on by default, and keeps the events from
Xgetting batched for transmission, resulting in a more natural spin.
X
X.SH AUTHOR
XAlex Crain
X
XASH Engineering Inc
X
XThis program is Copyright 1994 Alex Crain, and may be redistributed without
Xpermission for any purpose, as long as this copyright remains in the
Xdocumentation.
X
X.SH FILES
X/usr/lib/X11/app-defaults/Dice - specifies required resources
END_OF_FILE
if test 1462 -ne `wc -c <'dice/dice.man'`; then
echo shar: \"'dice/dice.man'\" unpacked with wrong size!
fi
# end of 'dice/dice.man'
fi
if test -f 'dice/dice_bg.xbm_gz_UU' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/dice_bg.xbm_gz_UU'\"
else
echo shar: Extracting \"'dice/dice_bg.xbm_gz_UU'\" \(8721 characters\)
sed "s/^X//" >'dice/dice_bg.xbm_gz_UU' <<'END_OF_FILE'
Xbegin 644 dice_bg.xbm.gz
XM'XL(`(+D5"X``^U=3:_K2&[=]Z\P,-M9Z,//DA'DEP3!X%I7GGZ;+#(-)$"0
XM_YYILU0ZK$.62K+NLR[BC=#]K$O5J2)9+/*(^LOG>/_Y'^/I\^<P_NWV][_]
XMU\_//WX_-9?JM[\DO_P^_OS[[W^<VKKY[1]_?/SQ<S@-OW_\9_SY]O./?_S;
XMOY_^]?0_OYU.I^J_J^JOSU]?+NI^R%%M%F7">?FHUHEJ5L,Y(,!>_KM56)X9
XM51!8+XPJN6TO@*/\=[>;X8PT/Z:H@9[K7=M^!<`P^/MNAG/O4X&>;=;W!5$!
XMSEBZCO=A$K4>C@?P/JJA9B!W_CTB2A2RE=O&`CCW]-&;#:<'@=W2M`MDN=F;
XM]A&PU./"J`8?3KE>>0+O2].N;G.L[([S,RR,"F]N]S"<GN'0.`W(M;^"`]R<
XMU[%)K(C:`">YUKV:]D&`T!J)</DU*(;EM7@%PZ@<M435[7S#$8-58AUM;X=Y
XM/OLVK+CA11\W#/6L$BUI$:_RO9U$>7!XA+0T$8NA[216=#NXZ#:=I3B'N..(
XMP;;DKT8+SI^_ZAT*1:V"4Z+MLMQC/>L8`E<3+DO0!<B&*'KN:,&)HN*=..WR
XMW$(XWK3+(-7-G3WA`CRS@GASL,0SW9P=X6;#"?^N[Q11HE&&*/S#K!4,<07)
XM::#8@3SJ!L-!+1+31N^:8$$OBK>)0,\*>KE'8PFC@C]!Q1"5V&`XAA>J4K'C
XMT@H:]G4/BO?/ZU7^\)HNS=@8H]H`A['PCN/Y`?S5O$>M(,!I2<.'+A6B9FR]
XMX;"!I_[J(:0FU\>^`@VG!FV,FU?+`0;;_JC@,):\X3`<&4DM8A^.J)%=*<8,
XM-$L,IP*+$]?7P=[4QV`;I[%-Q[#!<.X$1YZ.Q]L!@A,,16;#P5UO3.$$L1^I
XMAE_1]75JVE?!82S&-E&G<'HR&5R(&/\HWXYS!6Y-!+8H"HRH732<RH'C0+[7
XMAK_J^3:820SG$C>.*FK`&5.!K;,TT9S'+!Q#['6^,RH&KF`'`U9P"@2.T[1W
XMZ^$P%K6"UF0F,UE!J)ELM<;!Q%]NA)-,2*+M7CQ@PDFPU'=C=\[#03-/#EG&
XM&8<L43UH2.^,][#A+,#Q71!'R#]`)=#,DW-6,K:H[>@GU6U7=?,I;G"9'<>#
XM4[!!A'-0C)#'%`[&GR5;V)BL(,&I!A=.NHZ)X5C;]\G<NX?TGKL^AB\&&*<I
XMNA@PMID\?QB5[,7C"C@GBI]QVKW(JA_FF4Q,&,5Z9QR\#>&,^*O&4AZJ+0:]
XM;#C7BN"4B-4`9<!A"Q,XL'6&([`?17NAVJHCR>EAFT$419[HBTH.3?&,(W`&
XM4,4[^8H-AJ,4PX>#>LYSM7BD/>FMMH?'S=H^K(8SWS,:H_+.\A).\QDG21&@
XM#7K9AJ"ZH-M7&N&&,TXFS<*&,Z(O<B;<3`1Q3@:W[ROZ"HJ*GSSCF$FP$VP3
XM`\\/W;R8ID.]$OOJ)!:M%N`PEH7D0#N/0>TXU:SGB>$4)E'3%830J)D`8B5K
XM8U8M6<$J!X=-&^^)TUYCBLG+;P.<D#O5%<.-635.[%MYT9[@\(2;*QY$T?S(
XMLUIG9C:GHSFLY1'&:5=/=^`L%H8P@*P+X&2NGK^*1;',GW<]0+9<'Z^.5UZ4
XMAU[UCK,!#C]:G;SR<$`YS5J&TO9L114=BUDV>H8YD)22\]-NU@'3\4S%;D^4
X...@N.8U:)>N7#\0C^+J@O@9*@(>(@;'!+"T2@W>0:(_-ITKJCO2+FI_0+WRXE`
XM6T1EZ_7'F?8G11W-<)X4]1T-)[,T!QS59E%OPSDRP+?AQ.MK29Z[&\YK29X<
XM^QV4Y.G/3YR<;MC?<%Y"\O0.3<^2/#LU3G<%)6/F',Q1:24_7UO3S@H9C[3Y
XMI2D!.,`8S+.\6D',I&6#Q@!JB>398L7AO@"G!&`/H.[.>=#XU2=YROET0&_`
XME10P_[LFMSQC.)'DJ0HN3B(%$V49DJ>,*MAX]F!;4VW:-)RU),_Q/-^3(7G*
XM#7)L]$B>"LMM0=L_&8Y/(RS)JF'VV,L=)13!/,D3B\B=J&6C[A119]%AAK.5
XMJZ8\%=2;K@`\.#VHNI:2/`5@?L>92@]YRDW(YC%YJ8SD&0SG\N?U0H932O*\
XMSE;FINNY,'0S#"=X\JH`#HP_3DY(D@\@RN/PD*BD9L>D*>58F)A$AA.QY`W'
XMJU=B+C?F;%4ZNICD::8T%9^!X`@#Y-X:<!C+0AT'I_U)DB?8H%&)ZV=M3`PG
XMB*J+X#`6+H#BS1M(G@S'*$L-"@YCP6DO\0-?1/+$ZTSR)`KN%2IQN#4,%`R\
XMEN29P#EI5F0T'*$DC42(&M?P\%7,0&/HKO-RH^'()%S+2)Y*H%SU!OK/ZUG*
XM\5:Y_[*)'6V2/&5F>B9YUK,J*H&(93"4`=V+VD!QZZ?5W(4Y("._QA5$.-<9
XM("LGAW/)"@X,!S967%./%;EH.!R>A3V:29ZM`HA/9Y*GL>]H@2+JZL#9SHYV
XM7$KA3!H'$^>Y5U9=O=;Y4*U(TRR^Z$@>LD3/DX,)/W>M)6YYK>"2_MI)2-D8
XM$7+BA>+U0B?ZQ*=A]F/13R(<QK(0JO%4RP:J-XC38W<04=X&@5L84EG,+4Q$
XMN5O\YC..XU(*]V[V5R/-$I,\S>B"$REK29Z5)6I;9!5CZ:!7X,FWQ7X;2)X5
XMQ5TQZ'6/EEDXAE@K?Y6)S!$.8^&-'H\D_!['(LO".Y(@R;."EU[-0U,0Y;P%
XM4/+*9'RM1IUQ>*?SX3"6,"K.?`*A2WD#_SRK5M`/I!E.O.?3BOJVG>63"+E_
XM./]GL@V+AL-P7)*GG_@M(7G*1I;XJ\)<4'YIU+03'#[CF$FPTR,#%ARRDP3#
XMFQ?3=%B;P#G!-%U>TZ(3R"<'$LU)KI_F&:<LB9K<DV100]0WE,+A8"">&7$%
XMMV6/DVF73/4S^>U=2)XQL>\5%&J\V8(3[QST7!56'_)+4Y*.QEDRRRXX[5[9
XMA<>9*0RI:4?K:VTXF2M/NR)Y9CEU244L7\*^DZ?B:ZS9L0U^+Y(G:I&1V=Z%
XMY+FXXX`3S@M<)'GB$A@9T3*]RFM1H8KN0O+$^?':7VPPG,W7O*@2!DB\YTVY
XM^48`WURU(P-\&\YA`;X-YXM&U6P6=<A.GN/*/SQR)\_DS;Z24>W>R5/2*9P6
XM2$0)3T8R,"Z</AW;XJC"X)U<QP:]"I%G_HSSN,:PTQ,E</+'`77_UW7RS-]<
XM1O*40U#^L*;@4$;K69*G)#JN:E1\,Y9=W!Z#.AF;']4WZ.2)D"WS\<K]!^WD
XMN02'L1BUU$V&DW3R'/.=/"%_6]C)T\M6,?#=.WD.BYT\X2WUDDZ>)MN0/0#K
XM^2XD3\YRQSD,&[U0N"E[[,$9K(=BJ9'K7!DX)=H^0&Z_)^!JA%`?O[26*((C
XM-[N=/+7A>&6I<I)G?YF*+RL[>5Y(U)!Q?;2.LE^S<+,`6D[RY(I8G*M\)T_F
XM?JBQW8+P,*HLG)'@;R9YAGJEN)<AF$F"I=->5&R-HU`U>_BK#NV"*)B3?"?/
XM521/K":WX,%0TX*GA8T^)GX9#K)W1$A#6]BE49#SS(%RDF??*E'G=EX1]`.R
XM4@-T$QWJ5&`[;5X(1QQ+QU;6I0_J(!^>&$XYR7-@#L8T*J1AU$3RY,[#LJ6*
XMTHKPSTE%.R**!"K+YVPLP>?[C<CRAA.?&']=1_*\I7`JV+R43X#((=/)LX(P
XM8Q^2YV04R4P6=O)$.*HOUJ#@G)Q.GAO@,!9>P4`M>YB)'#E[KV<78IDVK^`;
XML2L7=,_P.GG6Z(@RH5KEP'$@=V8!E"JY?#"IT<]/82>>!PTX7'!W#&==)T\,
XM?9GD:7)KJ9-GV+:8@`H[8Z:3)_8C,N$P%K6"#H>'2U1<E38[>89G,0'U/JON
XM!^Q*"3/SYL0#3W;RO#(<"'>]3IYI'T@1A7`>?O**SN<K.WEVDXMFPPE;&+6^
XM5">(<SJV^#Y.!W!JA+-W)\^:IIJ[*B4$,XY(P\U,6P+E%$UK=*;(Z.2Y><=!
XM.-C)D]O$E77R;&@CDVZ0+=`VQ.<']J_9R;-9`>=4TLG3:TR:[>1IMI24$*BK
XM4SC<R?/<@;JN)WFJ7P%+;7;R[`D.B16=5_2\5FF[BGBIDV<X`TYP&(O*R1#)
XMD\$^V<FS@8-`^%4B9"T00S7LY"FDD1)-,TF>/*HG.WF.<((051QE-2G)$[I$
XMWL+]Z&1*.GD:K$B+Y"EG'*X%2"D!SSC*$24[#AR4A(!G4.]$M]M9)<9.8<D;
XMS@+)\S&'EXD5R883C/<R3RR':LAK'37]VR#5R)&\3O^DD!V=)WF.^-ZEE;\-
XMJ3"Q+SK+JQ@5_EV^?Y%@0;UJ0*_0OIXD>8;_OKEP3M/A+B'P&[D@*$O=I<[%
XM2_.X1UZ0[Z)>%</A8*":@A/,0/(*JJP(O62D4,0(^?&_&%3_LDZ>V+W!='T>
XM',[?XCK&F%]M])4:\"DY->Q'\@S).NI+G$Q[@_E8FG`$+@$`-Q69#0?\.;<E
XM?);D*1MZGDXL&?@EDB>Z0=Q$^*&U%4"N@L,S&4Y>$/7E1SB6D3Q["(?X9M7Z
XMDN9P'Y)G&7.@A.393#KON3YL$<QS>#229[\T*HP_^<^/0[E1HW)4]YMV\KSX
XM?O+TW3IY7A9%O3MY?D.`QS2<;==C&LYF46_#^:)1?1N29[9U513U74B>WGYG
XM*,F!29XQV&Z<R`JO[7J29\BG.6^`;M"K/,DS1(D6G\%802EJ%WS9/#PZDCR=
XM-T`W&$Z7)7F><?:6:+H29N=?)E57R6AI+-L,)T3OD@/W29[A<S_R1*(!J"M^
XM4*:,Y(E5Z2<-IZ239Z.G?:$%KA0U_#NYW(^%Z2<-I\<U@E2YTNUJMH5AB1U=
XMC0MP&$LXT2^MSN*UL)-G2)1!LC<S5UA&+R%Y!I*5]FG;LFJEG3PA12E962-S
XM"^LKXRPD>=YPA+0T3W;R9/.)*8L&OA"W``<K*2\B>:K\/]7E)1,NM?+&FO9?
XM1O+$LH*:3XODB;TU$`[6*2J"_"M)GE[:W&Q[HAPR&"Q6D9AU;(RMC.1I$B$8
XM2[Z.XS:EH1?2HS+$&E^\V=`?MM,EDJ?ZDP)6I-WE!N#<80LS^FQC[?7Q+]>8
XMS*2^!SRV/,DS-9PU<%(L)LD3;D9/A9T/L3(>'\J&$YB6'LD3A"^3/(&KP'[`
XM)7GJFM<9X4"?MZI+X=1`RTE*V&<F>9)S5BS?]3M."<GS/#F!H.WM_(<5%Q><
XMS6LP29Z\UT#\N0_)$SMYRLZ"0<AUQI+T8LW#Z<\*SBFA>&F^Z(XD3]7)4RK+
XM^-SK_(?(Q8KQ,]:=T1SZ9G[Z@+-$BK%,\O3@..R"3[V""@XUBT.?EB%Y#@R'
XM.+UYDN>BX7B=/,]0%PLDQILQ[3>"XY$\D;`QDSR]_H%K/M.L5M#IY'FA+=Y\
XM=/`,8WHS3WCX]@22/&]J`"(J3_)<T#2KDZ?`N:$O+5",B$6)>ERON)LP*])1
XMW0V&XW7RK#7EIL1L@Q^`@U+X"G,AR9,<RP;#\3IYUGJ#.#T\JB'JGMZ,),_0
XM4A4/H1;),W'[LY#UAE/2R3.D#JS-+@3;``=)GL'J+P`'6)$!B_8,SY`\$R+0
XM'?2<3_3Y4"0Z<R1LB/Q`\F0XV6!I`\E3M=P$+&9/IWR@B'O3`._IW'58RX=N
XM+Y0UCY^\T><[>?9@$4D,C]/.83^Z:%FO8)7X&M0D4+D^?="8]1^>SMTRG^SD
XM:1ZOF.F$KXDIDB<)#(\S29[DUDK..&8GS]%A$N8/O^:TKR5Y9EZ=+H'#),],
XM)\]\:D+N.8/8#21/3)YL2`XPR?/3Z>1YKWS#8?*;M)Y^+$HAR3.FMDQ-RZ2A
XM.#D0/$`%<*KT:B;TO&2FVBP*2)Y]9=C@+B3/"XV-C9?3K>FT5_.TE\#AA/`N
XM),_&<GULO)P,QZNL\GFZAZ<]/+>:17&Z?A>29[-$\E1E%Z>(%ASU8X0AS/:S
XM:DDQQ823N?*TEY,\DQ)2O@H@DQ^RIN18&OS5XHO^`I*G5^`SYTK2-;)&'ARO
XM!/EK2)X5PLER(V6TK4_RS!>(?R7),YA#%HZ8S\T799;OUVK:\Y2;2%HH(@(=
XMGN3)E)*,J..3/)GPXUV_$\DSZP"?5(;C<-5V$?4F>1X6X)OD^46C^C8DSS)1
XMWX7D^?^PD^?Q29[AGL=UL9/G\4F>X2I-,/QQ(KGE]23/7HW*F'8Y_#H'\W`]
XM/,DSBE(I:"_R/#S)4WTPQ4K0J>L!2)Y2."CIY#GX69$P*LD4O9KDV2]V\GS\
XM>?YS[7?`\EJ29[78R1/U_)MT\G0_T27_<H!.GIM)GMX'U%[;R7,SR=/[7/M"
XM)\_I`ZQA5%DX`\'?A>3965\>/%70=@S<[PL[>6XF>1ZSD^>3)$]11=7)DP3:
XMG3P+2)X;.GFN('GNU\GS7D;R_%Z=/!=)GE_5R1-)GL0`6?Q<N]?),T_R_+I.
XMGJ%$#B3/T,FSG551"40L?B?/!9+GUW3R-$F>84JA-]&=E+,"X_HBDN>J3IX>
XMR3,H1B3C(1^LN)/G+B3/59T\L4AM%-PO\WCB'HI'`!4/,,D3RI&!Y-FJ=111
XMNW?R9))GN$)7Y,).GKN3//-PA..G.GE:)$^YGJ7[$'7RQ,^U9TB>+</!UI<0
XM16SNY-EW*1RI4/_@S[5_3#8XI'#P<^U'('FB+Y+G-C]2.!_G])ZXI6(X[9(\
XMG4Z>NY,\[4Z>WM?GJ9,GBLJ1/.L4SC"=^TXZ1MV'Y(F=/'W#X4Z>*$K2L`/0
XM@18[>2+)4_8@CJ(WDSS%$3'#87X-BO^D!KV""$>1/'62)X1J4V`3YV&!Y(GA
XMT#2'ZHQ#:Q=2$ZQIU5\92P"HWYH\Z5?\`LF3<E8!2T+R!&[)GB1/ZYO@I\KX
XMOKGYN?;@>!]C&(3D^9D*E*=?(<%RALUK%Y+G97(^7EXTW\E3(%_/LV)'?^62
XM/,4/B'<]+RQ-/CG`),\?_M($A_P!1B$CI!33638LR6Z5D3PE>&Y`PW<A>0Y9
XMJL8`&\=\QJ&3<@/S5L**C'/E%4"_B.2)\6>FDZ=$>HWL@Y<<'`D_/AH0;AG.
XM-I)G9[D^E1B!CU-[G3Q%@<^2Q2HC>=ZNL]C,TI2DHY'DV2YV\L1R!DTX`C\^
XMR7-5)T\QF3S)4T*FYD4DSU6=/!7)TV%%OI;DN;:3Y]R_W8%S=M;N5Y(\RSMY
XM'I_DN4K4\4F>JT0=G^19?OU.),\O5=%#CFJSJ&,:SK;K,0UGLZBWX7S1J-XD
XMSS__^TWR=*YODJ<GZDWR/%5ODJ<K4"SQYISWHZCP!=("DN=U%<ESF#7Y2<-!
XMDF=UM\<YX"/*2)Y5`<FSFPPMG.CW)GF&Y"07"ZI9?PI)G@**R9.LNBW9XRXD
XMSU#L[HUIK^%[>24D3]&W;EC0=IF]&_XA+<T&DB>VE6.O%7-]2&/+DSRQ`)HA
XM>6(!=!$.8^&YDOR_L!SE#V]4CQ/SEYF4[,0BR5-,)J0RO$\7:;U*B)'S9&XF
XM>:(W())G!:*8Y)DP!VIT*0XK,@C'KR):S(&-),\Z#`/W021Y]E!DSY,\NVEL
XM851Y.'<##F/)UW'X<^V%),^BS[6CG1ZFD^<&DB>/[<6=//OY9O=S[23PRSMY
XMOH+DB6RHST62YR<H!BK`^AU';/`3GKZ*Y!D*TV@4+^WDV='-W,FS`HVZ:N"&
XMOWI=)\_6VB:XDR=^KMVH2F.$<U&^'<TA3_+LX(QCDCQ+#*=V?$5M%D"10$**
XM@6$DNKY"DF<'HICD6;CC()P-)$^&$X(W>)&MD.2)Y%LF>1;N."WHN8+#AM/`
XMTDP#"/N@[GZ9P"DA>491-XA/UNXX]PD+K^`'P_F1:EJ-?E7;((;0@>0ID($5
XM&8@NLH(02V\.U4(G3_#YW63^;#C!&X!;DV";29X5!-OG9`4!3@TDSQ:,G4F>
XMBURU8-K@HP*!4.APO#23OQJ),<LD3XZ?6RC:SE\,@;.G/#&LX',D3V6)\@@^
XM.PSSXQ(F>9[DV5QFL<B*#`]JM(KNU\E31$F^A4_*+6DXLR)-DF?C=/*4?Y'X
XM<W>2I\+BOP&:A_-#8C"KD^<([@*_H6QT\ORQVG"8Y"E/#RP+>'222,&FZ\&]
XM`,GS`R(<)'E>]&DZC$I<'Y,\2=,VD#S#NUVC"^<4MXE);!@5'31:2/((R?-,
XM9YSPIHPF>5Z=[/H&DF>-H3[[@6J>22.63J;]<[Y-2)Y\9!.&(9(\?]P5EK4[
XM#L?/F4Z>>,ZZTCD"=R71\Y3DR4<V>%G[_#6=/.M%DF</1H'A-)JM_#EV\K1Z
XML8ZP:K)IXN?>=B%Y7O,D3XA(,R1/M5D(M%MZSP@DSU=U\BPD>=YQ,_4<"[S.
XMTW]-)\_:<GVXCA6<=/*?:S\+`[^,Y#E0W+6=Y-G/1K38R3/<`&\%>G!$NUJK
XM_!'..#*!XZQX'IS,E:?]BTB>;0')4WYM+E;X40:'52AL]'N3//MRDB?-X4%)
XMGHN=/-\DSTT`=Q'U)GF>GC:<+P+X)GD>V7`VBSJFX6R[WJO__9??_@]<X;P$
X$L_L``-\D
X`
Xend
END_OF_FILE
if test 8721 -ne `wc -c <'dice/dice_bg.xbm_gz_UU'`; then
echo shar: \"'dice/dice_bg.xbm_gz_UU'\" unpacked with wrong size!
fi
# end of 'dice/dice_bg.xbm_gz_UU'
fi
if test -f 'dice/dice_fg.xbm_gz_UU' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/dice_fg.xbm_gz_UU'\"
else
echo shar: Extracting \"'dice/dice_fg.xbm_gz_UU'\" \(9299 characters\)
sed "s/^X//" >'dice/dice_fg.xbm_gz_UU' <<'END_OF_FILE'
Xbegin 644 dice_fg.xbm.gz
XM'XL(`(+D5"X``^V=WX[KN`V'[_<I`NQM+^(X8SLH^B1%L9CXSYYSTXON`5J@
XMZ+MW&]+RCR(IR1YGQK.=&V.02611HBB*_$S_/(S3][^/I^%[/_XR_?K+/[\/
XM/[Z=+LWYIY^C_WP;O__Z[<>IKBX__?;C]<?W_M1_>_U'^/?]^X_?_OJWTU].
XM__[I=#J=_W4^_^GMUX]IJCUDK]8WU='?TVZ]ZNGO*O5SOFE=)&!=W*LI-#7L
XM-E:3[&I*9'\,4<"I+^U#^[A6O=O4VFM+38V9INB^]9AO<)IXKDMZ53T:K+K=
XMM+UZW+WVQY.:HB],R?N20O:TJ*VE;?1J6J><B:98?]IE\-V?/\9PG'72&ROZ
XM0E\MP^XU&#6U09Q8)8*`%;2OK$$'(B=,$#75=LLHM4G#,L'?S5:],I:,[+-N
XM2HOI+1^:#I)EK,18Z2^C;H_K]2K=(*JQ/8/I'ZJ?=S7KDMLK^'+OS2"MUBF^
XMFMK>JD'6_=2?_/XK=PW62C1E^2-UI::\76\:'7&4D1D;T2NV6LZ`HU"-:LJ<
XM0>YPH^ZK>M[)3T13ZN?>YSTH`RVB/C15QP->PZ+HU8"WVG3W<U-*`8P1TS,K
XM^VR,%8C3H6ZWBXJB!0MCR%9T6CXD(XS#:QADFDTI)FY>ACAZD_*G!@7$R:6>
XMX(C1)V+`I^633MKVSND)>2S&1B]-34:O"C2ME\.N]80^T0-.GZ`7&LV@-B#5
XMO6`*Z&KZ5P7BH(6/U)B:&KW[3G&OO%50![V"1O0\"C=`:V#9PL']5UO72!9A
XM1>NX0<\M84]5RL*]@C%!Q3#4LFSA&(Z9N@5JFCF#I!M&4]4R8JW2\`J.,Y/<
XMO%:)HV71.PY_85RN^K^HYXULJE?B]&,L3MT)<;36K5TX>A`B>T4:,O9+WPR;
XM`$ZF4-%YMV(!E4N&RLGB5,XLERV<2@TUW6BDGC\,T4`"!E]4V81:B3/!BN--
XM#7:E)CC;.(R]^$*YI@D!E3AT]W9:A*7>XNA%"Z=&,U+%XG"S+_'@-W)`L%>&
XM.UWBV_2B5V+`Q^4+M1J]R`@OG]32MBM+S@X2BD]7T/G^;/4*NSTYXG@B!R/3
XM+,/HG4P;*<Y)F7&AHJU23N4S&Y\WK#;45.6)TZ9^CK(T9\LI0D^@N,%JUJMN
XMO3A:%C&#UF!&(SDJ90[?%P8Y-]V+..C<6@$Z(W[EBQ/),EJ[,^IYK\3!92YD
XMZ2TKJE:B,#[J"#"9RSDI3M8$:0_Y%:8>E[D89,M(LD$&.RF^I@XIC0ZA1#N.
XM)XX::KU!G.=/C/`.-EM#;^&'>@NK.M=>T=UK_\BF/]?:'FW?)[EWG_$6N-!:
XM8PTF'(S3[%V0B6;?1NH5Q1YK'>1)[CB1_XS#KCTK[E4=*[#VI=M<>(>\/A0'
XM9Y-DJ=8'![).K^Y5,RIQE-4RW7+AMW=PERZ>33<HG7/5RH\DK(U^R"(8-#WI
XMT0P&:X\'WAI4D5>B?V33GXLTA[:EOCCZ1CK6ESC2AO_V.&Z1MCNV,:UI441+
XMGW'T69[<:7W&P:-QM`:]:`.;8M#MQNIY^<))AUG.G:&B%=HB;1(Q>B,#0>)H
XMJ8(D#=J*T>Y5Z1FG+`A&LGBY"9R"DC#=6>H5*5[W4-3>"?:6!@>L$*6INC5<
XMHX6CQ\0,HL;]!-=HF$U?[\6F"LXXD^P5+N?S-?[AQ5G:9JQOA+NX\6UP2WIK
XMH:T-#KB!_8NAHE<ECO%SFO'1Z)41),%9(WWVTL1E"\<87BOM<L*0!7SHVOE<
XM8HA[]?B:/B+I!A.)#\->R:28/3ZT6N&PT%JFCV?'2MO%-P7'(++MACA^6BJ^
XM=2>&W?#Z4)Q^:<1,U(K=.9E1)6M?^[.\+0%JII+=8:<=$(RP_DZ4['8/<7#5
XMIPGS6B)@-M&/3;&[5=L#+G3)1Q$PJL8[\GK8)BU@P#"R@D]3IBFQ?!Q/E98,
XMN4SF<MY\96TO)F3J0N3FO*PR3R'''$:R32ASHW=_4B!XE//RON#%'G<7\-E-
XM&7&8`_1JV\]-<N##>_76IGPT[@\BX%=3ZE\?"'DF`K^;!?Q`R-/<PMXBX+,@
XM3Y\VQ/&9R@QUN8`?!7F6^WZ%`CX7\DSJ6SV[Y5ZR>.WUV9#GYD/3MH730NBI
XM$/*LDLN'S[,CJU!FX<@C[5J],J:[7Q;.V1GV*-8W.?%/_#DUV%O1!CSP(K_G
XM11LV0)YH)].0)S6>@#SI?$H-\N!?X@:ON/P3>!+=<3WD*3KL##B*EH`\><E0
XM2M$Q;IA],V^T-JIVAKG&<'H"\J0OT+'1@SR%+%<K:PDC=E'B&"&4K9"GMF`F
XM(IB&//'PPE9+/IE"3=T=HV=8@ZV0)WW>0-^X\2:^71[RQ'RT,S4A]6`@-T@:
XM-[:Z%D*>=*_V]K_K;8S[4PIY-LLJT]MH[26&KMQS;*IO[#$I@3Q#4H]LCN&E
XM;(`\]1><K,19C5Z0);UPO'PEQG)#S-:UHLF,:B)CXB99QOCSQ-2(/$[2%+\5
XM\H01<VDZRUX1`8+AN!)->Q[DJ<4QGN:HX_X(62)[56`'G@1YBNTL;*FJVXUR
XM>YC]T%F`#X4\(W%.@8J4,TA(4J5V81XQ2QPMBQ!06\AFF>X*N`MREIHRR%,T
XM2-=A^2]]<J<LH97NOW4KQ-&RZ&QXJR%/_<2$ME>)(P#H3P\F19]D\Y"G)X[Z
XM#BEM$SSDQUY&F5R"SW7X0D.>T4UY!L'O)7UF5Q]6922.[F<F`:K<,[IIK2'/
XM.5*D[UZ2P8P:I*8:1YQ5.+$0T#$IA2.I,[S>?1FF\N<:>[4*]M:RB(4S;=3S
XMTSD5Z]NP$LL7#C]V<8O_VY%+.1@><F2%PE68H"SDF;.3)]--RBT<3@GIH:;]
XMY27^_'7VD-,;1-7'_3&W,,[C."=3#2D50IZ>22G<NX6]`L@31TE#GJ9W(;1]
XMY?,XM-`FJZG-GM4)C@"8!]SF^ZU:.*T4)Y*E2=AV3YS1:=:"/!.>.8JC9=$;
XM/1Y)="[5/)*<T%XECR0XZ8E#4SJ04O+(9"V=;3XOJVXGQ-&RX!D'(<])`5T8
XM0C?/LT(9"AYHK4'#J?&+Y?5M/LN?X`A`486W1!NR"P?%R4">UC$\BK1$PXY[
XM$VUDD;TJC`6%IK(+!\412PF'V@J"G1X1,#;(R2!889@.=V<<$QVF\Z8F&`%M
XM9`S-*8M/\I;J0)Y1$#5HD1E!Y7W0RU=NA3PW1X^QJ1'B::XISL6WUYYQ]"B%
XMP+Y>.%%LW_PY[I(A]:!#]RC"&<R@+DR16#BNF!B.RT*>!6F7;&)(9,.IJ61B
XM:#ODF4ZUKX(\9=K.5-V0L^,9=&;G^)!G-J.Z+0%JII*]ID(VV1QPL:!RD"=?
XM9;X[W=L2`3\*\L15ED81-@CHJ:(>]ET@3_X.263E4C=?14RFX">[0)Y"+?=&
XM;MX?\A36(+=DWB[@5U-?31V\J79S4X>LY)G=/G131Z[D&1X6*!4_-'7(2I[L
XM(Q6+<^A*GA3%S7E]>-V]DN>-/"M_KIF3(<]*A>7%E>*0?M^,7M'=]UC.'((F
XMOS>M:3,<2#KICA4^T9QL\.F5/)V'C/C!HC+(DT3P#FO1W</?^U?RG'D#W10-
XM(Z9=]/+1?E>5\Y"/7,E31_G,Y2.:PM"$-X/K(<]T/]=5\@1QO,WT?2IY5MZ3
XMSF1VH&\:\NQ](Z.MP3M4\JQ[V2M=R1.>=];Q29U67FA#"W"U>[A?)<]6Q8XB
XM1+""T(2.'GN9%!-*9^W5P_ZV2IXUQ/:Q/T8E3_CDU@O;CIT7ZTNE1,7R+X.'
XMRR'/]C8G7U96\KPI;*FVPH8<F]45NAY],YXQM/RK<LA39\1"4^E*GK4R+,+7
XMNG+C[-:J]8[B5-BXLI^K($_.5U8PU!BKG!T`M**TUC`Q;?1D6AI'UVYI"L8D
XM7<ES%>2)V62L_H&:QO$TT*LVC-48BX/T#NTX`]`"U-1M$"*GR8%RR+.5G,P=
XMCB>8Z.=ZE>!FLV\CR5(&-D`<NDLWQN+4<*R;(`%:6SM..>2)>V(K&4C$,$8%
XM>>K*PV.[*"VMB,O<*^X/D.%L`"^\OL(/#4]^#>1Y@?^N@SRO\6A,L'D)>P49
XMDT0E3[)%VLW8#GG.BR+T9RJKY-DI<<2"PCT:3%!DVR>8XD)QM"RN+_I8)G?\
XM1#4H9+D)ITBDI:KE[EXESQ$-46)+G1QQ')&[4>@5W<5[AP(21R/:^?ESX3.,
XMBW)JGYG%T5F5F79@_\H31]=[1).(D*=Y=H9%C:6$7`!UMAMH^@RT3/,#`&]L
XMJ.2)*2J1ASJ+[XLM%>_E`*A4+_H%ZU_)`!V7.=)'2%\</;8L('RMT94\-7(`
XM,QMNI&<0USO9R::/^X#?W[&29S?K/VH[GQW:Y2=>)<])%9<+,%X'XHAZ(^J0
XM\L9*GJ,::@UO1("9X9&2.!I;0N5\:%H@4M#0H3BZ?F`AY"G$`;WJ=9FX.OZ.
XM6<EST.`663`XG9'-9_I7ZA7C$#I060!YFE:43:Z.=0#DZ57R-$M*<OW>,19'
XM5_*\=XLVIG8<)4ZZDF=C5O)LE#AX'9<5(8(\O=3V>KF+KN1)9T#C-0UED*<6
XM]HV5/,FOF]0!'"N8C=)5PTJ>5);02'^409Z>K[*YDF>E5F)%LPE;?`^FN[X*
XM`5E[5?W`$LC3C%_1&4<C^C=GA6*0)X!`9S@HD>;T^B>DV_VB$JQU5Z-7JR'/
XMQ^>WF8K4"X<7[VT96&$2'WVC\P7#73.Q)N(,*`X=<L?X)_H1^`V09^55WIXU
XM$(\`FK1'T?B03LM\B,4_2[T:X&%D7%]I3<M"GARXN+KBA,&/`'X<$\R/L#48
XM%@%%#Q_?X?/@/(/3FRMY1@\[Z!D\P[(U'C*R`#,NF@K^L/=8RNZ5/+%Z`\N2
XMJ.0)XO3J1'-65G<)_#H%7<6I83_(DX-U=[N'P6?`/<6S\R)6`P^VQ,/>+VL-
XMPSBZP2V0)VWHR03?"$G2!.1)`WY'^$VMQ`I.T$M4;<=*GI[7AX::;&D.\N2`
XM20O*H#-?6,DS5Z>H_+I[)4^Z#O,>RDTYYP52UZH,YR@1\$F09XLE.BTHO=5?
XM6SD1"0%WK^3)5F*P-?S35?(DV6]W>Y0^5R5/NMXFUUY]QDJ>YHR+Z,?6)?,A
XM`JXB!SYPV`N;,A[KQJO/%[V'@`48\_$A3_/]@VNU*]&K=X8\S37K-75\R+/0
XMHO(1X/"09W:_6ZZ'ASQ#UK)$B_KUD">=6-,/:A4V50)YLI=(X:G<-D%9$IUQ
XM,[Y)MPZ09]FC'XEK6(-=$O*D,!2A)@D?GIUM@CQSGODIU``A!:B-IC8N&8J!
XM^Y`GO^['27"PPE#?,.%>!GFZ6>GU"Z>DDF=(OM"P\Y[B8;JW1<<*(<\H,1W/
XMX'K(LU4/_XK%!6A'/0^^MP8G6#(EKEH(1_>0R!/B[%W)L\.HD</SQ"]J@5AZ
XM&O+D@)C,2J^-JIUGDW)*5O+$'PX0E=5:))S,.7EJP"UJQ*[XP_T@3_'-5OR-
XM.TX+^(JVY&)5/JX?!7FB&H@^0"2<TL>#-8/O!GEBB@W7K`EY8FT-+T_!J@)Y
XMBO>$/'78/%'V1.R#L!`PBZ230=K7*H0\A3AED*<6QRU*`[1#5(,NY/@6'6M3
XM/2F$//$G)51DE`#%99N&/#$[5L]IE].#8Q'Y04^<`L@STJM5XL2RF)#GM"P3
XM-+PWB$_JS'AOY>@YY.M!GM##/.0I'XV)Q'$ASUE%*4E]1W'Z962F+A9GM'9S
XM:NJN(4^]]U$?G@EYWF<CP-H.?IU&2B9G\ZI-R%.)LS_D2:<M2%0-X&22`E<S
XM!X4S:$">J&_WY7.&/*TXP^Z0IZCD^1AV@\4"K*N!OV/($Y9#.RP_ITUV4-:L
XM%/+TQ''H@DL$>6I2#I/"X)$F($]62(`\!\7TIB'/[,+Q*GG>`19BB/%J#/M5
XMB>-!GFQU(\BSM[_L09[YA:-4@L2YP0F">F+>FBT#.<S`J^L!)Q1'0)Y7T0%J
XM*@UY9C3->J";Q+G"-EJB&$$6T12M+!@K@XIT5'?5PDE7\AQE)<_"97N2D&<[
XMIVM%FL.#/)5A6;7CI"MYHI$,%M7PD)5%G=0@UW@(M2#/R.R?W@!YEE3R#&\)
XMU[)04[C?(>0Y`2>&Q_"P(Y]@.^8=YPV09V$ESW)79)0,)+5?(=J-XCRN"6>I
XM?.&D*WE&-9T*'<6P(D2)I-ZPHN6N++HH4:2HI)(GOG8<9;D-8MCQ)^+U\83B
XM8#Q-U8$<(RLJ#QHT`K$:J-/TYDJ>'=BNVO*O4)P6E%-`GKA8\'8FY*F?8DZ>
XM<1*5//EYKEZ)4W#XC1]^7PEYVN\-+Q#'@SP3E3RSH8G?KZ\HQ7K(4P=/(EG2
XMP0$->5YF9C7N\^0N'!T\.3]*3]-F6@AYAM#6HF^6'8A[GH,\+W":%@O*"NCI
XM8"8&F2<@M].09RMW',\4IS\W(4_T.?763W\GPJTX@P-,M`=Y)@+":\\X&O(<
XM?,@S&PR/9OP^?T>;/I['@G!]U.?,&0<4@\_.#N09D0,C6`9#'!*??$(RU-+%
XMQ3A#E$PQQ7D2Y!FED-(0`NV)#.DIPT(Z%I)<'C3%XCP'\LPF^/`(P(\J-REQ
XM$BG(;0G059!G(OT:][9G;>2F5(<+$\1K!=P`>=)R2&?&R1I<LY"G3-^OO;K#
XM7@!YGF%%U+DZD)\%\DP@)3KG=7S(TP1^S.NG@#R%%B5_>'S(,_AC)4U]&LBS
XM[%F`0T.>!=?C0YZKFCH^Y"EN:@5^\7I\R%.(G'NLX/B0)][W_ZJ2Y_$A3_YF
XM627/XT.>HI*G]>PGCM51(,^Y`UYP8(3,CE?)\_B09^'KVC\+Y"F8R3D=[ZW!
XM(T">+02BTY4\2<<2E3P/`GFVO>B54<GS(8CWNO:C09Y3MI(GZODGJ>3IOJ+K
XM,)4\-T.>W@O4/K:2YV;(TWM=>Z:29\.-LUN;A#S%G.X'>798K8L6\HR9(9'"
XMNXEJ\-TJ>6Z&/(]9R7,SY$E7?O??H!K,5O(L@#PW5/)<`7GN5\DS]"H->7ZN
XM2IY9R/-9E3P1\H3])?NZ]G0ESS3D^;Q*GIPBUY4\^T4TO=UG*WEF($^@RG>L
XMY&E#GM2?N19T])/"2IYOASQ75?+T($\N'#<C-X('@T7]#I#GJDJ>F*3&A/LX
XM:]'I')<>PB-`NI)G!2EUACQ[,8_4U.Z5/#7DR5LG5$4NK.2Y.^29KN1)&7!1
XMR=."/*F1.UDD5<D37]>>@#Q[+0Z6OEP%>3KBM%TL#F6H7_7KVE_F-5C'XN#K
XMVH\`>:(MHL^'U_B'+_?X.XO/`&KI0IYP.L-*GKM#GG8E3_7S!C1<T%F(P"4@
XM3Z>2Y[,@3ZSD:18D;)0X9Q"'7,=^&=L8\H09Q$J>"'D.3E!Z,^3)E?IT7;7P
XM6('^"50R="'/;"7/$LC3/^-D($^M:;UQ(W'&@8,DAGH8\H1P60^WCB%/5>,W
XM*\ZI!/+4[P17)PA6`WA=^Q(7A2-)39`GL(X=W+V!`,L=K.MY37`@4\G3"F;R
XM8"8K>1+DV=P7Q:ZRD"<D?4:R`/M!GJ\.Y+F\KOT%%L4Y_IOZ?"?(\[;,<A;R
XM).=Y@&.=:0?BGN<@S]J!//DT3;Y-KI+G`":Z!/*\AQW'2XKM#7EJ_S-1R9,\
XMO8'Z]OB)6\GS(<X+B6S1AN7B:/^Y\R%/=G&K11RODB<9ZOO\"!7/8!+RO%*O
XM//QF*^399RMY0CHC7<GS^)#GJDJ>_,1E$O(DERFN*J_%>0[DN:J2IX`\U9?O
XM!X`\UU;R7-Y>YT">=QJ93U+)\\B0YU<ES^-#GE^5/'53!X$\5S7U:2#/LJ:^
XM(,]#"?@%>7)37Y"GV>`7Y.G-X!?D22?Z+\C37#)_1,B3$;@$Y$FYM@+(LUD%
XM>5)*96_($Z-G6F3,:&0ASZD`\N2G1&=EV!WR'%%;L)_P\T+(DX3"]Z=[JMOC
XM>MP/\@SV#4.L?+:"7I5`GJ1O75`&!_(DH:ZH8WM`GIAJX5&"5'N(]2'PD(8\
XM,0&:@#PQ`<I?V`/R9,KQT119`P%Y7A;1F);,09ZT9.C+'N39SZAG6J^V0YY@
XM#33D.4%3&O*L9-@0J4L/\KSI6)_E%&V$/$?^'/=!C%"U,+!IR+.;&V>WUH$\
XM;]HL[P)Y5LLBRD*>1:]K1^MZF$J>&R!/(<X1*GF27@'D:;RNW8<\Q>Z\8R7/
XMCX`\T<J%U[6[D">D.]]8R9.RMQ>X^RK(DQ+3-2R*CZWDV:ECKZ[DB:]K;Z3@
XM/(,`37U@)<^(WD&%]%[7+AX]@$1,!'GB&[=+($]^/;3TI=<NG-&Q%:,)>1+J
XM@,],@6*@54?35PAY=C`I&O(LW'%X3I$36P-YHF(@GXD/LA5"G@C?&J1HV8[3
XM@YX+<33D.<#4S!W@?1"4C=<:B%,">8:FK@"YK=UQ0DTV/8,O&O)\C6^$Y&T$
XM>:(+S9`G'#W(YC?0!_2E3<@S+8ZHY(ELS\@3@1XR0YZ/GZ,#2<ZVACS1:[W+
XM&41Q1F"?2,?(C]*09Y95TY4\&2`D'$X'!V9[52EB5D.>PJ'%0ZB$//'L27=D
XM).-MD*=8B70+%9.A/;J3"PWA%@_R'&Y+LTA%\HT&J:+[5?*<@$S0)^5>:7CP
XM/T.S)N0YP`-'*`ZG1X=E%>P(>:(L5],INB3%`3;,K.19P:IG"_!PC8Q*GHK^
XMW0!YXN9NP$MSK[#H.IL7@#Q?',@3;<7"0)+L&O)4FK8!\N1X6N6*<PK;1.1^
XMP&)I<2,#R/.NSCC\I(R$/!N(L93O.";DR3M=#_.(=@!/$,J7CB'/R_(A09X#
XMJ`%O3T08`N2)E3-7[3@:\B3E3%3RY+FC]:7.$0AY=G,@^H20IZ(-:WA8^XX!
XMBOT@SS$+>;:P*-2VQ2$X<H2PDJ>5/JM@UBA#,<#Z,NU`W/,<Y-FD(<]'LUG(
XMTZCD>8T;K`#R?/]*GJL@3^;J(264?EU[^YQ*GF,6\H233OIU[7<B\,L@3[;S
XM7EYU%>0)#VQZE3P7R)-\2W@J4-^=WX[]T"YV.*UA[S"$TJ:FX`B09U\`>=)_
XMA_"LY8$AS[8<\K3&<%L"]+F09[:2YQ?D62#@%^29'JLOR'.;7NVHHNGK%^3Y
X5(<->V-16R/,_?_[IOSFJ/_^S^P``
X`
Xend
END_OF_FILE
if test 9299 -ne `wc -c <'dice/dice_fg.xbm_gz_UU'`; then
echo shar: \"'dice/dice_fg.xbm_gz_UU'\" unpacked with wrong size!
fi
# end of 'dice/dice_fg.xbm_gz_UU'
fi
if test -f 'dice/patchlevel.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'dice/patchlevel.h'\"
else
echo shar: Extracting \"'dice/patchlevel.h'\" \(93 characters\)
sed "s/^X//" >'dice/patchlevel.h' <<'END_OF_FILE'
X/***
X *** patchleve.h - identify the version and patchlevel.
X ***/
X#define DICE_RELEASE 1.0
END_OF_FILE
if test 93 -ne `wc -c <'dice/patchlevel.h'`; then
echo shar: \"'dice/patchlevel.h'\" unpacked with wrong size!
fi
# end of 'dice/patchlevel.h'
fi
echo shar: End of shell archive.
exit 0
Alex Crain
Wearer of many hats
University of Maryland, Baltimore County
al...@cs.umbc.edu [410] 435-7899


exit 0 # Just in case...
--
// ch...@Sterling.COM | Send comp.sources.x submissions to:
\X/ Amiga: The only way to fly! | sour...@sterling.com
GCS d++(--) h++ s++:+ g+++(?) p? au(*)(0) a w+ v-(*) C++ US+++ P+ L+ 3 N++ K
!W M V-- -po+ Y+ t+ 5++ j- r+ G+ v b+++ D- b-- e+ u+ h- f+ r+++ !n y+++

0 new messages