#!/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 archive 1 (of 1)."
# Contents:  handler.c makefile misc.c stub.s xsize.c xsize.doc xsize.h
#   xsize.uu
# Wrapped by tadguy@xanth on Sat Mar  3 15:46:12 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'handler.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'handler.c'\"
else
echo shar: Extracting \"'handler.c'\" \(9038 characters\)
sed "s/^X//" >'handler.c' <<'END_OF_FILE'
X/* Auto: make
X*/
X
Xstruct Screen *WhichScreen();
Xstruct Window *WhichWindow();
X
XIMPORT struct XSizeRsrc *XSizeRsrc;
XIMPORT WORD OF;
X
Xstruct Screen *s;
Xstruct Window *w;
Xstruct RastPort rp;
Xstruct Layer_Info *LockedLayerInfo;
X
XWORD mx, my;
XWORD xl, yt, xr, yb;
XWORD oxl, oyt, oxr, oyb;
XWORD minx, maxx, miny, maxy;
XWORD leftx, rightx, topy, bottomy;
X
XWORD state = waiting;
X
X#define InGadget(w, mx, my) \
X(((w->Height - 10) < my) && (my < (w->Height)) &&   \
X ((w->Width - 17) < mx) && (mx < (w->Width)))
X
X#define KillEvent() ev->ie_Class = IECLASS_NULL
X
X#define GetSMousePos()                                  \
X{                                                       \
X    mx = s->MouseX + s->ViewPort.RasInfo->RxOffset;     \
X    my = s->MouseY + s->ViewPort.RasInfo->RyOffset;     \
X    if (mx < 0)             mx = 0;                     \
X    if (mx >= s->Width)     mx = s->Width - 1;          \
X    if (my < 0)             my = 0;                     \
X    if (my >= s->Height)    my = s->Height - 1;         \
X}
X
X#define GetWMousePos() { mx = w->MouseX; my = w->MouseY; }
X
Xstruct InputEvent *Waiting(ev)
XREGISTER struct InputEvent *ev;
X{
X    if (ev->ie_Class == IECLASS_RAWMOUSE && ev->ie_Code == IECODE_LBUTTON) {
X        if ((s = WhichScreen()) && (w = WhichWindow(s)) &&
X          (w->Flags & WINDOWSIZING)) {  /* Ok, we've got a sizable window */
X            GetWMousePos();
X            if (InGadget(w, mx, my) ||
X              (ev->ie_Qualifier & XSizeRsrc->qual)) {
X                state = startframe;
X                SetUpForFrame();
X                KillEvent();
X            }
X        }
X    }
X    return ev;
X}
X
Xstruct InputEvent *StartFrame(ev)
XREGISTER struct InputEvent *ev;
X{
X    if (ev->ie_Class == IECLASS_RAWMOUSE) {
X        if (ev->ie_Code == IECODE_LBUTTON+IECODE_UP_PREFIX) {
X            KillEvent();
X            EraseFrame();
X            UnlockLayers(LockedLayerInfo);
X            state = waiting;
X        } else if (ev->ie_Code == IECODE_NOBUTTON) {
X              /* Skip consecutive move events */
X            while (ev->ie_NextEvent &&
X              (ev->ie_NextEvent->ie_Class == IECLASS_TIMER ||
X               (ev->ie_NextEvent->ie_Class == IECLASS_RAWMOUSE &&
X                ev->ie_NextEvent->ie_Code == IECODE_NOBUTTON))) {
X                ev = ev->ie_NextEvent;
X            }
X            GetSMousePos();
X            if (mx <= xl) {
X                leftx = 1;
X                state = dragging;
X            } else if (mx >= xr) {
X                rightx = 1;
X                state = dragging;
X            } else if (my <= yt) {
X                topy = 1;
X                state = dragging;
X            } else if (my >= yb) {
X                bottomy = 1;
X                state = dragging;
X            }
X        } else {
X            KillEvent();
X        }
X    } else if (ev->ie_Class == RAWKEY) {
X        KillEvent();
X    }
X    return ev;
X}
X
Xstruct InputEvent *Dragging(ev)
XREGISTER struct InputEvent *ev;
X{
X    if (ev->ie_Class == IECLASS_RAWMOUSE) {
X        if (ev->ie_Code == IECODE_NOBUTTON) {
X              /* Skip consecutive move events */
X            while (ev->ie_NextEvent &&
X              (ev->ie_NextEvent->ie_Class == IECLASS_TIMER ||
X               (ev->ie_NextEvent->ie_Class == IECLASS_RAWMOUSE &&
X                ev->ie_NextEvent->ie_Code == IECODE_NOBUTTON))) {
X                ev = ev->ie_NextEvent;
X            }
X            GetSMousePos();
X            if (!leftx && mx <= xl) {
X                if (rightx) {
X                    xr = w->LeftEdge + w->Width - 1;
X                    rightx = 0;
X                }
X                leftx = 1;
X            }
X            if (!rightx && mx >= xr) {
X                if (leftx) {
X                    xl = w->LeftEdge;
X                    leftx = 0;
X                }
X                rightx = 1;
X            }
X            if (!topy && my <= yt) {
X                if (bottomy) {
X                    yb = w->TopEdge + w->Height - 1;
X                    bottomy = 0;
X                }
X                topy = 1;
X            }
X            if (!bottomy && my >= yb) {
X                if (topy) {
X                    yt = w->TopEdge;
X                    topy = 0;
X                }
X                bottomy = 1;
X            }
X            if (leftx) {
X                xl = mx;
X            } else if (rightx) {
X                xr = mx;
X            }
X            if (topy) {
X                yt = my;
X            } else if (bottomy) {
X                yb = my;
X            }
X            if (xr - xl < minx) {
X                if (leftx) {
X                    xl = xr - minx;
X                } else if (rightx) {
X                    xr = xl + minx;
X                }
X/*                leftx = rightx = 0; */
X            }
X            if (xr - xl > maxx) {
X                if (leftx) {
X                    xl = xr - maxx;
X                } else if (rightx) {
X                    xr = xl + maxx;
X                }
X/*                leftx = rightx = 0; */
X            }
X            if (yb - yt < miny) {
X                if (topy) {
X                    yt = yb - miny;
X                } else if (bottomy) {
X                    yb = yt + miny;
X                }
X/*                topy = bottomy = 0; */
X            }
X            if (yb - yt > maxy) {
X                if (topy) {
X                    yt = yb - maxy;
X                } else if (bottomy) {
X                    yb = yt + maxy;
X                }
X/*                topy = bottomy = 0; */
X            }
X            if (xl != oxl || xr != oxr || yt != oyt || yb != oyb) {
X                BuildFrame(xl, yt, xr, yb);
X                DrawFrame();
X                oxl = xl;
X                oxr = xr;
X                oyt = yt;
X                oyb = yb;
X            }
X        } else if (ev->ie_Code == IECODE_LBUTTON+IECODE_UP_PREFIX) {
X            REGISTER WORD movex, movey;
X            REGISTER WORD sizex, sizey;
X            REGISTER WORD premovex, premovey;
X            KillEvent();
X            EraseFrame();
X            UnlockLayers(LockedLayerInfo);
X            movex = xl - w->LeftEdge;
X            movey = yt - w->TopEdge;
X            sizex = xr - (xl + w->Width - 1);
X            sizey = yb - (yt + w->Height - 1);
X            premovex = 0;
X            premovey = 0;
X            if (movex < 0) {
X                premovex = movex;
X                movex = 0;
X            }
X            if (movey < 0) {
X                premovey = movey;
X                movey = 0;
X            }
X            if (premovex || premovey) {
X                MoveWindow(w, (LONG)premovex, (LONG)premovey);
X            }
X            if (sizex || sizey) {
X                SizeWindow(w, (LONG)sizex, (LONG)sizey);
X            }
X            if (movex || movey) {
X                MoveWindow(w, (LONG)movex, (LONG)movey);
X            }
X            state = waiting;
X        } else if (ev->ie_Code == IECODE_RBUTTON) {
X            KillEvent();
X            leftx = rightx = topy = bottomy = 0;
X            state = changing;
X        } else {
X            KillEvent();
X        }
X    } else if (ev->ie_Class == RAWKEY) {
X        KillEvent();
X    }
X    return ev;
X}
X
Xstruct InputEvent *Changing(ev)
XREGISTER struct InputEvent *ev;
X{
X    if (ev->ie_Class == IECLASS_RAWMOUSE) {
X        if (ev->ie_Code == IECODE_LBUTTON+IECODE_UP_PREFIX) {
X            KillEvent();
X            EraseFrame();
X            UnlockLayers(LockedLayerInfo);
X            state = waiting;
X        } else if (ev->ie_Code == IECODE_RBUTTON+IECODE_UP_PREFIX) {
X            KillEvent();
X            state = dragging;
X        } else if (ev->ie_Code != IECODE_NOBUTTON) {
X            KillEvent();
X        }
X    } else if (ev->ie_Class == RAWKEY) {
X        KillEvent();
X    }
X    return ev;
X}
X
Xstruct InputEvent *CHandler(nm0, nm1, Events)
Xstruct InputEvent *Events;
X{
X    REGISTER struct InputEvent *ev;
X
X    geta4();
X
X    for (ev = Events; ev; ev = ev->ie_NextEvent) {
X        switch(state) {
X            case waiting: {
X                ev = Waiting(ev);
X                break;
X            }
X            case startframe: {
X                ev = StartFrame(ev);
X                break;
X            }
X            case dragging: {
X                ev = Dragging(ev);
X                break;
X            }
X            case changing: {
X                ev = Changing(ev);
X                break;
X            }
X        }
X    }
X    return Events;
X}
X
XSetUpForFrame()
X{
X    xl = w->LeftEdge;
X    xr = xl + w->Width - 1;
X    yt = w->TopEdge;
X    yb = yt + w->Height - 1;
X    minx = (w->MinWidth > 70 ? w->MinWidth : 70);
X    miny = (w->MinHeight > 20 ? w->MinHeight : 20);
X    maxx = (w->MaxWidth < s->Width ? w->MaxWidth : s->Width);
X    maxy = (w->MaxHeight < s->Height ? w->MaxHeight : s->Height);
X    leftx = rightx = topy = bottomy = 0;
X    BuildFrame(xl, yt, xr, yb);
X
X      /* Lock everything - find out what happens */
X    LockedLayerInfo = &s->LayerInfo;
X    LockLayers(LockedLayerInfo);
X
X      /* Get a copy. Don't mess with somebody else's RP. */
X    CopyMem((char *)&s->RastPort, (char *)&rp, (long)sizeof(struct RastPort));
X    SetDrMd(&rp, COMPLEMENT);
X
X    OF = 0;
X    DrawFrame();
X}
END_OF_FILE
if test 9038 -ne `wc -c <'handler.c'`; then
    echo shar: \"'handler.c'\" unpacked with wrong size!
fi
# end of 'handler.c'
fi
if test -f 'makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile'\"
else
echo shar: Extracting \"'makefile'\" \(1029 characters\)
sed "s/^X//" >'makefile' <<'END_OF_FILE'
XOBJS=xsize.o handler.o stub.o misc.o
XEXE=xsize
XSYMS=$(EXE).sym
XSYMSRC=$(EXE).h
XQUICKSYMS=ram:$(SYMS)
X
X# Aztec
XCCFLAGS=-q +I$(QUICKSYMS) +L
XASFLAGS=
XLNFLAGS=
XLNOBJS=detach.o32 -lc32
XSYMFLAGS=+l +h$(SYMS) -o ram:null.o
XCC=cc
XAS=as
XLN=ln
X
X#Lattice
X#CCFLAGS=-v -H$(QUICKSYMS) # -O
X#ASFLAGS=-iLattice:Asm-include/
X#LNFLAGS=NOALVS SC SD ND TO $(EXE) FROM lib:cback.o
X#LNOBJS=LIB lib:lc.lib lib:amiga.lib
X#SYMFLAGS=-ph -o$(SYMS)
X#CC=lc
X#AS=asm
X#LN=blink
X
X.c.o:
X    $(CC) $(CCFLAGS) -o$*.o $*.c
X
X.s.o:
X    $(AS) $(ASFLAGS) $*.s
X
Xall: $(SYMS) $(QUICKSYMS) $(EXE)
X
X# Lattice link
X#$(EXE): $(OBJS) $(EXE).lnk
X#    blink with $(EXE).lnk
X
X#Aztec link
X$(EXE):    $(OBJS)
X    $(LN) $(LNFLAGS) $(OBJS) $(LNOBJS)
X
X$(EXE).lnk:
X    echo >ram:l1 "$(LNFLAGS)"
X    echo >ram:l2 "$(OBJS)"
X    echo >ram:l3 "$(LNOBJS)"
X    join ram:l1 ram:l2 ram:l3 as $(EXE).lnk
X    delete ram:l1 ram:l2 ram:l3
X
X$(SYMS): $(SYMSRC)
X    copy $(SYMSRC) ram:temp.c
X    $(CC) $(SYMFLAGS) ram:temp.c
X    delete ram:temp.c
X
X$(QUICKSYMS): $(SYMS)
X    copy $(SYMS) $(QUICKSYMS)
END_OF_FILE
if test 1029 -ne `wc -c <'makefile'`; then
    echo shar: \"'makefile'\" unpacked with wrong size!
fi
# end of 'makefile'
fi
if test -f 'misc.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'misc.c'\"
else
echo shar: Extracting \"'misc.c'\" \(2166 characters\)
sed "s/^X//" >'misc.c' <<'END_OF_FILE'
X/* Auto: make
X*/
X
X#define SCREENTOP\
X   (screen->TopEdge << ((screen->ViewPort.Modes & LACE)? 0: 1))
X
X#define Line(pair, xl, yt, xr, yb) \
X{ pair->xs = xl; pair->ys = yt; pair->xe = xr; pair->ye = yb; ++pair; }
X
X#define HLine(pair, xl, xr, y) Line(pair, xl, y, xr, y)
X#define VLine(pair, yt, yb, x) Line(pair, x, yt, x, yb)
X
XIMPORT struct IntuitionBase *IntuitionBase;
X
XIMPORT struct RastPort rp;
X
XWORD OF;
X
Xtypedef struct {
X    WORD xs, ys;
X    WORD xe, ye;
X} Pair;
X
XPair OldFrame[8];
XPair NewFrame[8];
X
Xstruct Screen *WhichScreen()
X{
X    REGISTER struct Screen *screen;
X    Forbid();
X    screen = IntuitionBase->FirstScreen;
X    while (screen && IntuitionBase->MouseY < SCREENTOP) {
X        screen = screen->NextScreen;
X    }
X    if (screen == NULL) {     /* Shouldn't happen */
X        screen = IntuitionBase->ActiveScreen;
X    }
X    Permit();
X    return screen;
X}
X
Xstruct Window *WhichWindow(screen)
Xstruct Screen *screen;
X{
X    struct Layer *layer;
X    layer = (struct Layer *)WhichLayer(&screen->LayerInfo,
X      (LONG)screen->MouseX, (LONG)screen->MouseY);
X    if (layer) {
X        return (struct Window *)layer->Window;
X    } else {
X        return NULL;
X    }
X}
X
XSTATIC VOID MultiDraw(rp, pairs)
Xstruct RastPort *rp;
XPair *pairs;
X{
X    REGISTER LONG i = 8;
X    REGISTER Pair *coord = pairs;
X
X    while (i--) {
X        Move(rp, (LONG)coord->xs, (LONG)coord->ys);
X        Draw(rp, (LONG)coord->xe, (LONG)coord->ye);
X        coord++;
X    }
X}
X
XVOID BuildFrame(xl, yt, xr, yb)
XWORD xl, yt, xr, yb;
X{
X    REGISTER LONG tx  = (xr - xl) / 3;
X    REGISTER LONG ty  = (yb - yt) / 3;
X    REGISTER Pair *pair = &NewFrame[0];
X
X    HLine(pair, xl, xr, yt);
X    HLine(pair, xl, xr, yt + ty);
X    HLine(pair, xl, xr, yb - ty);
X    HLine(pair, xl, xr, yb);
X    VLine(pair, yt, yb, xl);
X    VLine(pair, yt, yb, xl + tx);
X    VLine(pair, yt, yb, xr - tx);
X    VLine(pair, yt, yb, xr);
X}
X
XVOID EraseFrame()
X{
X    if (OF) {
X        MultiDraw(&rp, &OldFrame[0]);
X        OF = 0;
X    }
X}
X
XVOID DrawFrame()
X{
X    REGISTER LONG i;
X
X    WaitTOF();
X    EraseFrame();
X    MultiDraw(&rp, &NewFrame[0]);
X    i = 8;
X    while (i--) {
X        OldFrame[i] = NewFrame[i];
X    }
X    OF = 1;
X}
END_OF_FILE
if test 2166 -ne `wc -c <'misc.c'`; then
    echo shar: \"'misc.c'\" unpacked with wrong size!
fi
# end of 'misc.c'
fi
if test -f 'stub.s' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'stub.s'\"
else
echo shar: Extracting \"'stub.s'\" \(180 characters\)
sed "s/^X//" >'stub.s' <<'END_OF_FILE'
X        XREF    _CHandler
X        XDEF    _handler
X
X_handler:
X        movem.l D2/D3/A0/A1/A4/A6,-(sp)
X        jsr     _CHandler
X        movem.l (sp)+,D2/D3/A0/A1/A4/A6
X        rts
END_OF_FILE
if test 180 -ne `wc -c <'stub.s'`; then
    echo shar: \"'stub.s'\" unpacked with wrong size!
fi
# end of 'stub.s'
fi
if test -f 'xsize.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xsize.c'\"
else
echo shar: Extracting \"'xsize.c'\" \(5463 characters\)
sed "s/^X//" >'xsize.c' <<'END_OF_FILE'
X/*******************************************************************\
X*                                                                   *
X*                XSize - XWindows style window sizing               *
X*                                                                   *
X\*******************************************************************/
X/* Auto: make
X*/
X
X#define ARGVAL() (*++(*argv) || (--argc && *++argv))
X#define WriteStdOut(str) Write(StdOut, str, (LONG)strlen(str))
X#define isdigit(c) (c >= '0' && c <= '9')
X
Xstruct XSizeRsrc *XSizeRsrc = NULL;
Xstruct InputEvent *handler();
X
X/* input device */
Xstruct MsgPort *inputDevPort = NULL;
Xstruct Interrupt handlerStuff;
Xstruct IOStdReq *inputRequestBlock = NULL;
X
X/* libraries */
Xstruct IntuitionBase *IntuitionBase = NULL;
Xstruct GfxBase       *GfxBase = NULL;
Xstruct LayersBase    *LayersBase = NULL;
X
X/* detaching */
XULONG _BackGroundIO = 0;
XULONG _stack = 4096L;
XULONG _priority = 4L;
Xchar *_procname = "XSize";
X#ifdef LATTICE
Xextern BPTR _Backstdout;
X#endif LATTICE
X
XLONG hextoint(str)
XREGISTER char *str;
X{
X    REGISTER long val = 0;
X    REGISTER char c;
X    while (c = *str) {
X        val <<= 4;
X        val |= (c & 15) + (isdigit(c) ? 0 : 9);
X        str++;
X    }
X    return(val);
X}
X
XVOID CloseStuff()
X{
X    if (inputRequestBlock) {
X        if (inputRequestBlock->io_Device) {
X            inputRequestBlock->io_Command = IND_REMHANDLER;  /* Remove handler */
X            inputRequestBlock->io_Data    = (APTR)&handlerStuff;
X            DoIO(inputRequestBlock);
X            CloseDevice(inputRequestBlock);
X        }
X        DeleteExtIO(inputRequestBlock);
X    }
X    if (inputDevPort)       DeletePort(inputDevPort);
X    if (XSizeRsrc) {
X        RemResource(XSizeRsrc);
X        Kill(XSizeRsrc);
X    }
X    if (IntuitionBase)      CloseLibrary((struct Library *)IntuitionBase);
X    if (GfxBase)            CloseLibrary((struct Library *)GfxBase);
X    if (LayersBase)         CloseLibrary((struct Library *)LayersBase);
X}
X
XWORD OpenStuff()
X{
X    inputRequestBlock = NULL;
X
X    /* libraries */
X
X    if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0L)))
X        return 0;
X    if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 0L)))
X        return 0;
X    if (!(LayersBase = (struct LayersBase *)OpenLibrary("layers.library", 0L)))
X        return 0;
X
X    /* input devive */
X
X    if (!(inputDevPort = CreatePort(0L, 0L)))
X        return 0;
X    if (!(inputRequestBlock = (struct IOStdReq *)CreateExtIO(inputDevPort, (LONG)sizeof(struct IOStdReq))))
X        return 0;
X    if (OpenDevice("input.device", 0L, inputRequestBlock, 0L))
X        return 0;
X
X    /* input handler */
X
X    handlerStuff.is_Data = 0;
X    handlerStuff.is_Code = (VOID (*)())handler;
X    handlerStuff.is_Node.ln_Pri = 53;        /* Ahead of intuition, please */
X    handlerStuff.is_Node.ln_Name = "XSize Input Handler";
X
X    inputRequestBlock->io_Command = IND_ADDHANDLER;
X    inputRequestBlock->io_Data    = (APTR)&handlerStuff;
X
X    DoIO(inputRequestBlock);  /* Add me. */
X
X    return 1;
X}
X
XVOID main(argc, argv)
Xint argc;
Xchar **argv;
X{
X    BPTR StdOut = (BPTR)Open("*", MODE_OLDFILE);
X    WORD create = 0;
X    WORD usage = 0;
X
X#ifdef AZTEC_C
X    Enable_Abort = 0;
X#endif AZTEC_C
X
X    if (!(XSizeRsrc = (struct XSizeRsrc *)OpenResource(XSIZERSRC))) {
X        create = 1;
X        XSizeRsrc = Create(XSizeRsrc);
X        XSizeRsrc->node.ln_Type = NT_RESOURCE;
X        XSizeRsrc->node.ln_Name = XSIZERSRC;
X        XSizeRsrc->Task = FindTask(NULL);
X        XSizeRsrc->qual = IEQUALIFIER_CONTROL;
X        AddResource(XSizeRsrc);
X    }
X
X    if (!argc) {    /* WB Startup */
X        if (!create) {     /* Second time from WB -- Remove */
X            Signal(XSizeRsrc->Task, SIGBREAKF_CTRL_C);
X            goto exitpoint;
X        } else {
X            goto skipargs;
X        }
X    }
X
X    if (create && StdOut) {
X        WriteStdOut("XSize 1.0 (c) 1990 Mikael Karlsson\n");
X    }
X
X    for (argc--, argv++; argc > 0; argc--, argv++) {
X        if (**argv == '-') { /* Argument coming up */
X            switch(*++(*argv)) {
X                case 'x': {
X                    if (ARGVAL()) {
X                        XSizeRsrc->qual = hextoint(*argv);
X                    } else {
X                        usage = 1;
X                    }
X                    break;
X                }
X                case 'Q': quit: {
X                    Close(StdOut);
X                    if (create) {
X                        goto close;
X                    } else {
X                        Signal(XSizeRsrc->Task, SIGBREAKF_CTRL_C);
X                        goto exitpoint;
X                    }
X                }
X                case '?': {
X                    usage = 1;
X                    break;
X                }
X                default: {
X                    if (StdOut) {
X                        WriteStdOut("Bad option: -");
X                        Write(StdOut, *argv, 1L);
X                        WriteStdOut(".\n");
X                    }
X                    usage = 1;
X                    break;
X                }
X            }
X        } else {
X            usage = 1;
X        }
X    }
X
X    if (usage && StdOut) {
X        WriteStdOut("Usage:\n");
X        WriteStdOut(" XSize -xXX -Q\n");
X    }
X
Xskipargs:
X    if (StdOut) {
X        Close(StdOut);
X    }
X
X    if (create) {
X        if (OpenStuff()) {
X            Wait(SIGBREAKF_CTRL_C);
X        }
Xclose:
X        CloseStuff();  /* Guess what */
X    }
X
Xexitpoint: ;
X}
END_OF_FILE
if test 5463 -ne `wc -c <'xsize.c'`; then
    echo shar: \"'xsize.c'\" unpacked with wrong size!
fi
# end of 'xsize.c'
fi
if test -f 'xsize.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xsize.doc'\"
else
echo shar: Extracting \"'xsize.doc'\" \(3697 characters\)
sed "s/^X//" >'xsize.doc' <<'END_OF_FILE'
X                        XSize 1.0
X                        =========
X                  (c) Mikael Karlsson 1990
X
XDescription
X
X    XSize is a small utility that gives you X-Windows style
X    window sizing.
X
X
XLegal schmuck
X
X    XSize is NOT Public Domain. XSize is 'Freely Distributable
X    Copyrighted Software with a Shareware Option' (FDCSSO).
X
X    "Permission is hereby granted to copy XSize provided that
X     the copyright notice and this document is left intact.
X     Copies may not be made for profit."
X
X    Short and simple: Copy XSize but don't make a business
X    of it. It is of course free to include XSize on Public
X    Domain disks or putting it on a BBS. The cost of obtaining
X    XSize should not be higher than the cost of obtaining
X    it from Fred Fish.
X    If you find XSize useful, please feel free to send a
X    donation.
X    If you wish to include XSize with a commercial product,
X    please contact me first. A registred copy of the product
X    will be expected.
X
X
XStarting and stopping
X
X    Install XSize by executing 'XSize' in a CLI or double clicking
X    on the icon in Workbench. A second invocation from Workbench
X    removes XSize. To remove XSize from CLI you have to execute
X    'XSize -Q'.
X    The qualifier used to initiate the sizing routine can be set
X    using 'XSize -xXX' where XX is the hex value of the qualifier.
X    Default qualifier is 0008 (the control key).
X
XQUALIFIERS (always entered in HEX)  (This list borrowed from Matt Dillon)
X
X    0001    Left Shift
X    0002    Right Shift
X    0004    Caps Lock
X    0008    Control
X    0010    Left Alt
X    0020    Right Alt
X    0040    Left Amiga Key
X    0080    Right Amiga Key
X    0100    Numeric Key Pad Key (not useful)
X    0200    Repeat              (not useful)
X    0400    Interrupt           (not useful)
X    0800    Multibroadcast      (not useful)
X    1000    Middle Mouse Button (not normally implemented by intuition)
X    2000    Right Mouse Button
X    4000    Left Mouse Button
X
X    Note: Combinations are allowed, in which case any one of the
X          elected qualifiers along with the left, right mouse button
X          will cause the appropriate action to occur.
X
X
XUsage
X
X    XSize provides an enhanced way of resizing windows.
X    It works as follows:
X
X    There are two ways of initiating the window sizing:
X    1. Press and hold the left mouse button over the sizing
X       gadget in a window.
X    2. Press and hold the specified qualifier and press and
X       hold the left mouse button anywhere in the window.
X    A sizing frame is drawn over the window. It looks like this:
X
X    +---+---+---+
X    |   |   |   |
X    +---+---+---+
X    |   |   |   |
X    +---+---+---+
X    |   |   |   |
X    +---+---+---+
X
X    You can now move the mouse around (while still holding down
X    the left mouse button, it's ok to release the qualifier if
X    you used that way of initiating XSize) freely inside the frame.
X    Nothing happens until you reach an (outer) edge of the frame.
X    When you do, that edge starts to follow the mouse. Now only one
X    edge follows the mouse. If you move the mouse to a corner the
X    second edge that forms the corner also starts to follow the mouse.
X    To change the active edge hold down the right mouse button,
X    move to another edge and release the right mouse button.
X
X
XBugs
X
X    None that I know of, but we're walking the edge of what is
X    allowed here. I haven't had any problems though.
X
X
Xs-mail: Mikael Karlsson
X        L?vs?ttersv?gen 10
X        S-585 98  LINK?PING
X        SWEDEN
X
Xe-mail: micke@slaka.sirius.se
X        micke@slaka.UUCP
X        {mcvax|munnari|seismo}!sunic!liuida!slaka!micke
X
XPhone:  +46-13 50479
X        +46-431 50623 (in the summer)
X
END_OF_FILE
if test 3697 -ne `wc -c <'xsize.doc'`; then
    echo shar: \"'xsize.doc'\" unpacked with wrong size!
fi
# end of 'xsize.doc'
fi
if test -f 'xsize.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xsize.h'\"
else
echo shar: Extracting \"'xsize.h'\" \(973 characters\)
sed "s/^X//" >'xsize.h' <<'END_OF_FILE'
X#include <intuition/intuitionbase.h>
X#ifdef AZTEC_C
X#include <functions.h>
Xstruct IORequest *CreateExtIO(); /* This is a kludge that is necessary    */
X                                 /* since this definition is missing from */
X                                 /* manx's <functions.h> include file.    */
X#endif AZTEC_C
X#include <devices/input.h>
X#include <devices/keymap.h>
X#include <devices/console.h>
X#include <devices/clipboard.h>
X#include <exec/memory.h>
X#include <exec/interrupts.h>
X#include <graphics/gfxmacros.h>
X#include <libraries/dos.h>
X
X#define Create(_Obj)     AllocMem((LONG)sizeof(struct _Obj), MEMF_PUBLIC|MEMF_CLEAR)
X#define Kill(_Obj)       FreeMem(_Obj, (LONG)sizeof(*_Obj))
X#define Delete(_Obj)     if (_Obj) FreeMem(_Obj, (LONG)sizeof(*_Obj))
X
X#define XSIZERSRC "XSize.resource"
X
Xstruct XSizeRsrc {
X    struct Node node;
X    struct Task *Task;
X    WORD qual;
X};
X
X#define waiting     0
X#define startframe  1
X#define dragging    2
X#define changing    3
END_OF_FILE
if test 973 -ne `wc -c <'xsize.h'`; then
    echo shar: \"'xsize.h'\" unpacked with wrong size!
fi
# end of 'xsize.h'
fi
if test -f 'xsize.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xsize.uu'\"
else
echo shar: Extracting \"'xsize.uu'\" \(11317 characters\)
sed "s/^X//" >'xsize.uu' <<'END_OF_FILE'
Xbegin 664 xsize
XM```#\P`````````#``````````(```>S````<`````$```/I```'LT[Z%1185
XM4VEZ90!.50``2.<,("1M``AX`!H29RCIA+H\`#!M"KH\`#EN!'``8`)P"1(%R
XM2(%(P<*\````#]"!B(!2BF#4(`1,WP0P3EU.=4Y5``!*K(`*9SX@;(`*2J@`)
XM%&<J(&R`"C%\``H`'$'L@$(B;(`*(T@`*"\L@`I.NAR>6$\O+(`*3KH:ZEA/.
XM+RR`"DZZ'#Q83TJL@`9G"B\L@`9.NAN*6$]*K(`"9Q@O+(`"3KH=*%A/2'@`6
XM%"\L@`).NAR.4$]*K(`.9PHO+(`.3KH:KEA/2JR`$F<*+RR`$DZZ&IY83TJL:
XM@!9G"B\L@!9.NAJ.6$].74YU3E4``$*L@`I"ITAZ`,A.NAR:4$\I0(`29@9P_
XM`$Y=3G5"ITAZ`,%.NAR"4$\I0(`.9@1P`&#F0J=(>@"]3KH<;%!/*4"`%F8$V
XM<`!@T$*G0J=.NAI64$\I0(`&9@1P`&"\2'@`,"\L@`9.NALH4$\I0(`*9@1PV
XM`&"D0J<O+(`*0J=(>@"$3KH<#D_O`!!*@&<$<`!@B$*L@%!!^@R@*4B`5!E\-
XM`#6`2T'Z`&LI2(!,(&R`"C%\``D`'$'L@$(B;(`*(T@`*"\L@`I.NAM:6$]P>
XM`6``_TIG<F%P:&EC<RYL:6)R87)Y`&EN='5I=&EO;BYL:6)R87)Y`&QA>65R!
XM<RYL:6)R87)Y`&EN<'5T+F1E=FEC90!84VEZ92!);G!U="!(86YD;&5R``!.S
XM5?_X2'@#[4AZ`FQ.NAC64$\K0/_\0FW_^D)M__A"K(!82'H"5$ZZ&VY83RE`T
XM@`)F5#M\``'_^DAY``$``4AX`!1.NAJF4$\I0(`"(&R``A%\``@`""!L@`)#2
XM^@(K(4D`"D*G3KH:K%A/(&R``B%```X@;(`",7P`"``2+RR``DZZ&)Y83TJM$
XM``AF($IM__IF%DAX$``@;(`"+R@`#DZZ&S)03V```<Q@``&<2FW_^F<B2JW_*
XM_&<<2'H!_DZZ$>Q83R\`2'H!T"\M__Q.NAA`3^\`#%.M``A8K0`,8``!'"!M2
XM``PB4`P1`"UF``$`(&T`#%*0(E`0$4B`2,!@``#.(&T`#%*0(E!*$6824ZT`[
XM"&<B6*T`#")M``Q*D6<6(&T`#"\03KK\Q%A/(&R``C%``!)@!CM\``'_^&``B
XM`*XO+?_\3KH76%A/2FW_^F<$8``!'DAX$``@;(`"+R@`#DZZ&G)03V```0P[;
XM?``!__A@>DJM__QG3DAZ`7!.NA$N6$\O`$AZ`58O+?_\3KH7@D_O``Q(>``!A
XM(&T`#"\0+RW__$ZZ%VQ/[P`,2'H!3TZZ$/Q83R\`2'H!0"\M__Q.NA=03^\`'
XM##M\``'_^&`>D+P````_9Y20O````!)G`/]BD+P````G9P#_&F"&8`8[?``!<
XM__A3K0`(6*T`#$JM``AN`/[@2FW_^&<^2JW__&<X2'H`]$ZZ$)983R\`2'H`[
XMX"\M__Q.NA;J3^\`#$AZ`/!.NA!Z6$\O`$AZ`-0O+?_\3KH6SD_O``Q*K?_\X
XM9PHO+?_\3KH62EA/2FW_^F<63KK\>DI`9PI(>!``3KH9>%A/3KK[ODY=3G4JF
XM`%A3:7IE+G)E<V]U<F-E`%A3:7IE+G)E<V]U<F-E`%A3:7IE(#$N,""I(#$Y'
XM.3`@36EK865L($MA<FQS<V]N"@!84VEZ92`Q+C`@J2`Q.3DP($UI:V%E;"!+/
XM87)L<W-O;@H`0F%D(&]P=&EO;CH@+0!"860@;W!T:6]N.B`M`"X*`"X*`%5S2
XM86=E.@H`57-A9V4Z"@`@6%-I>F4@+7A86"`M40H`(%A3:7IE("UX6%@@+5$**
XM`$Y5```O"B1M``@,*@`"``1F``"^#&H`:``&9@``M$ZZ"-0I0(!<9P``J"\LF
XM@%Q.N@D>6$\I0(!@9P``EB!L@&`(*````!MG``"((&R`8#EH``Z`S"!L@&`YJ
XM:``,@,X@;(!@,"@`"DC`D+P````*,BR`SDC!L(%L-B!L@&`P+(#.L&@`"FPH"
XM(&R`8#`H``A(P)"\````$3(L@,Q(P;"!;`X@;(!@,"R`S+!H``AM%'``,"H`.
XM""!L@`(R*``22,'`@6<..7P``8`J3KH&LD(J``0@"B1?3EU.=4Y5```O"B1M9
XM``@,*@`"``1F``$V#&H`Z``&9AI"*@`$3KH*)"\L@,A.NAA>6$]";(`J8``!L
XM$@QJ`/\`!F8``01*DF<B(%(,*``&``1G%"!2#"@``@`$9@X@4@QH`/\`!F8$]
XM)%)@VB!L@%PB;(!<+&D`4#`H`!+0;@`(.4"`S"!L@%PB;(!<+&D`4#`H`!#0+
XM;@`*.4"`SDIL@,QL!$)L@,P@;(!<,"R`S+!H``QM#B!L@%PP*``,4T`Y0(#,^
XM2FR`SFP$0FR`SB!L@%PP+(#.L&@`#FT.(&R`7#`H``Y30#E`@,XP+(#,L&R`/
XMT&X..7P``8#H.7P``H`J8$8P+(#,L&R`U&T..7P``8#J.7P``H`J8"XP+(#.]
XML&R`TFX..7P``8#L.7P``H`J8!8P+(#.L&R`UFT,.7P``8#N.7P``H`J8`1"C
XM*@`$8!)P`!`J``2PO```!`!F!$(J``0@"B1?3EU.=4Y5__Y(YP\P)&T`"`PJ0
XM``(`!&8`!#(,:@#_``9F``,,2I)G(B!2#"@`!@`$9Q0@4@PH``(`!&8.(%(,`
XM:`#_``9F!"128-H@;(!<(FR`7"QI`%`P*``2T&X`"#E`@,P@;(!<(FR`7"QI:
XM`%`P*``0T&X`"CE`@,Y*;(#,;`1";(#,(&R`7#`L@,RP:``,;0X@;(!<,"@`B
XM#%-`.4"`S$IL@,YL!$)L@,X@;(!<,"R`SK!H``YM#B!L@%PP*``.4T`Y0(#.O
XM2FR`Z&8V,"R`S+!L@-!N+$IL@.IG("!L@&`P*``$2,`@;(!@,B@`"$C!T(%3:
XM@#E`@-1";(#J.7P``8#H2FR`ZF8D,"R`S+!L@-1M&DIL@.AG#B!L@&`Y:``$P
XM@-!";(#H.7P``8#J2FR`[&8V,"R`SK!L@-)N+$IL@.YG("!L@&`P*``&2,`@3
XM;(!@,B@`"DC!T(%3@#E`@-9";(#N.7P``8#L2FR`[F8D,"R`SK!L@-9M&DILQ
XM@.QG#B!L@&`Y:``&@-)";(#L.7P``8#N2FR`Z&<(.6R`S(#08`Q*;(#J9P8Y$
XM;(#,@-1*;(#L9P@Y;(#.@-)@#$IL@.YG!CEL@,Z`UC`L@-1(P#(L@-!(P9"!H
XM,BR`X$C!L(%L)DIL@.AG#C`L@-20;(#@.4"`T&`22FR`ZF<,,"R`T-!L@.`YX
XM0(#4,"R`U$C`,BR`T$C!D($R+(#B2,&P@6\F2FR`Z&<.,"R`U)!L@.(Y0(#0-
XM8!)*;(#J9PPP+(#0T&R`XCE`@-0P+(#62,`R+(#22,&0@3(L@.1(P;"!;"9*X
XM;(#L9PXP+(#6D&R`Y#E`@-)@$DIL@.YG##`L@-+0;(#D.4"`UC`L@-9(P#(LH
XM@-)(P9"!,BR`YDC!L(%O)DIL@.QG#C`L@-:0;(#F.4"`TF`22FR`[F<,,"R`:
XMTM!L@.8Y0(#6,"R`T+!L@-AF'C`L@-2P;(#<9A0P+(#2L&R`VF8*,"R`UK!LK
XM@-YG1#`L@-9(P"\`,"R`U$C`+P`P+(#22,`O`#`L@-!(P"\`3KH$KD_O`!!.W
XMN@7X.6R`T(#8.6R`U(#<.6R`TH#:.6R`UH#>8``!'`QJ`.@`!F8``.I"*@`$D
XM3KH%JB\L@,A.NA/D6$\@;(!@."R`T)AH``0@;(!@.BR`TIIH``8P+(#42,`RZ
XM+(#02,$@;(!@-"@`"$C"TH)3@9"!/``P+(#62,`R+(#22,$@;(!@-"@`"DC"C
XMTH)3@9"!/@"7RT)M__Y*1&P$-D1X`$I%;`8[1?_^>@`P"V8&2FW__F<:,"W_E
XM_DC`+P`P"TC`+P`O+(!@3KH3)D_O``Q*1F8$2D=G&#`'2,`O`#`&2,`O`"\LM
XM@&!.NA,83^\`#$I$9@1*16<8,`5(P"\`,`1(P"\`+RR`8$ZZ$N9/[P`,0FR`M
XM*F`H#&H`:0`&9AQ"*@`$0FR`[D)L@.Q";(#J0FR`Z#E\``.`*F`$0BH`!&`25
XM<``0*@`$L+P```0`9@1"*@`$(`I,WPSP3EU.=4Y5```O"B1M``@,*@`"``1F.
XM0@QJ`.@`!F880BH`!$ZZ!&(O+(#(3KH2G%A/0FR`*F`@#&H`Z0`&9@Q"*@`$A
XM.7P``H`J8`P,:@#_``9G!$(J``1@$G``$"H`!+"\```$`&8$0BH`!"`*)%].(
XM74YU3E4``"\*3KH)*B1M`!!@5#`L@"I(P&`X+PI.NOC:6$\D0&`^+PI.NOFF.
XM6$\D0&`R+PI.NOK\6$\D0&`F+PI.NO]26$\D0&`:_[C_Q/_0_]RPO`````1DT
XM"N.`,#L`[$[[```D4B`*9J@@+0`0)%].74YU3E4``"!L@&`Y:``$@-`P+(#0Y
XM2,`@;(!@,B@`"$C!T(%3@#E`@-0@;(!@.6@`!H#2,"R`TDC`(&R`8#(H``I(#
XMP="!4X`Y0(#6(&R`8`QH`$8`$&\,(&R`8#`H`!!(P&`"<$8Y0(#@(&R`8`QH2
XM`!0`$F\,(&R`8#`H`!)(P&`"<!0Y0(#D(&R`8'``,"@`%"!L@%PR*``,2,&P1
XM@60,(&R`8'``,"@`%&`*(&R`7#`H``Q(P#E`@.(@;(!@<``P*``6(&R`7#(H>
XM``Y(P;"!9`P@;(!@<``P*``68`H@;(!<,"@`#DC`.4"`YD)L@.Y";(#L0FR`%
XMZD)L@.@P+(#62,`O`#`L@-1(P"\`,"R`TDC`+P`P+(#02,`O`$ZZ`59/[P`0%
XM(&R`7-'\````X"E(@,@O+(#(3KH0I%A/2'@`9$AL@&0@;(!<2&@`5$ZZ#7Q/<
XM[P`,2'@``DAL@&1.NA`<4$]";(#P3KH"7DY=3G5(YS#*3KK^'DS?4PQ.=4Y59
XM```O"DZZ#OH@;(`.)&@`/"`*9RP@;(`.,"@`1$C`,BH`"DC!+P`(*@`"`$UGL
XM!'``8`)P`>&A(!^P@6P$)%)@T"`*9@@@;(`.)&@`.$ZZ#S8@"B1?3EU.=4Y50
XM__P@;0`(,"@`$$C`+P`@;0`(,"@`$DC`+P`@;0`(2&@`X$ZZ#_A/[P`,*T#_-
XM_$JM__QG#"!M__P@*``H3EU.=7``8/A.50``2.<(('@()&T`#"`$4X1*@&<Z,
XM,"H``DC`+P`P$DC`+P`O+0`(3KH/(D_O``PP*@`&2,`O`#`J``1(P"\`+RT`[
XM"$ZZ#O1/[P`,4(I@ODS?!!!.74YU3E4``$CG#"`P+0`22,`R+0`*2,&0@7(#N
XM3KH)%"@`,"T`%DC`,BT`#DC!D(%R`TZZ"/XJ`$'L@3(D2#2M``HU;0`.``(U:
XM;0`2``0U;0`.``90BC2M``HP+0`.2,#0A35```(U;0`2``0P+0`.2,#0A35`R
XM``90BC2M``HP+0`62,"0A35```(U;0`2``0P+0`62,"0A35```90BC2M``HU/
XM;0`6``(U;0`2``0U;0`6``90BC2M``HU;0`.``(U;0`*``0U;0`6``90BC`M7
XM``I(P-"$-(`U;0`.``(P+0`*2,#0A#5```0U;0`6``90BC`M`!)(P)"$-(`U4
XM;0`.``(P+0`22,"0A#5```0U;0`6``90BC2M`!(U;0`.``(U;0`2``0U;0`6N
XM``90BDS?!#!.74YU3E4``$IL@/!G$DAL@/)(;(!D3KK^8E!/0FR`\$Y=3G5..
XM50``+P1.N@V\8=1(;($R2&R`9$ZZ_D!03W@((`13A$J`9QX@!.>`($!#[(#R(
XMT<D@!.>`(D!-[($RT\X@V2#98-HY?``!@/`H'TY=3G5.50``+PI(;0`,2&T`M
XM"$ZZ`29(>0`!```P+(`XP?P`!B\`3KH,$BE`@7)/[P`09A1"ITAY``$``$ZZ\
XM"DA03RYL@79.=2!L@7)":``$(&R!<C%\``$`$"!L@7(Q?``!``H@;(%V("R!V
XM=I"H``10@"E`@7H@;(%Z(+Q-04Y80J=.N@O>)$!*K0`(6$]G'"\M``PO+0`(P
XM+PI.N@0@*7P````!@%A/[P`,8$)(:@!<3KH,B$AJ`%Q.N@O@*4"!?B!L@7Y*W
XMJ``D4$]G$"!L@7XB:``D+Q%.N@DX6$\O+(%^+PI.N@7Z*6R!?H&"4$].N@DXD
XM(&R!<B"`3KH)2"!L@7(A0``&9Q9(>`/M2'H`+$ZZ"20@;(%R(4``#%!/+RR!5
XM@B\L@89.NO`F0J=.N@<.3^\`#"1?3EU.=2H`3E7_]$CG#C!"ITZZ"QPD0$JJ@
XM`*Q83V<``4A"ITZZ"+183RE`@#XO`$ZZ"*@O+(`^3KH(L"E`@#X@*@"LY8`JJ
XM`"!%+"@`/$AX`"%(>@)B3KH+2"M`__Q/[P`09C@@;(%V(F@`""!I``0B:/_T(
XM(&G_]-'\```!K"M(__@@12)M__@@*``\L)%G"DAX`&1.N@9R6$]@#B\M__Q.?
XMN@C:0JW_^%A/2JW_^&<&(&W_^$*02JR`'F8,($4@*``TY8`I0(`>2JR`&F<2V
XM2'@#[4AZ`>Y.N@@J*4"`+%!/(&T`""E0@#!"IR\L@#!.N@H8*4"`-"\L@#`O"
XM+(`T(&T`#"\03KH!T"!%("@`$.6`)D!"IQ`32(!(P%*`+P!.N@GD*4"`.A`3Q
XM2(!(P%*`+P`O+(`Z+PM.N@&>3^\`*"\L@78O+(`>+P8O+(`B+RR`)DZZ!W0@.
XM14*H`#Q/[P`0+E]P`$YU8``!2"!J``HB;(`F$!BP&68$2@!F]I`A2(!(P&8`2
XM`2P@*@"`Y8`K0/_X(&W_^"`H``SE@"M`__@K;?_X__QX`DJM__AG$"!M__@@J
XM$.6`*T#_^%)$8.I"IW``,`13@.>`($!(:``83KH)/"M`__0K;?_\__@@;?_T;
XM,40`#G@`4$]*K?_X9SQP`#`$YX`@0-'M__0B;?_X68DA20`0(&W_^'``,`3GX
XM@")`T^W_]"-H__P`%"!M__@@$.6`*T#_^%)$8+YP`#`$YX`@0-'M__0A;(`T[
XM`!`P!%)$<@`R`.>!($'1[?_T(6R`,``4<``P!.>`($#1[?_T(6R`.@`0,`12"
XM1'(`,@#G@2!!T>W_]")L@#H0$4B`2,!2@"%``!0O+?_T2&H`2DZZ!KPO+(`^0
XM3KH&2"5L@"P`H"!M``@@K(`P(&T`#""L@#1/[P`,3-\,<$Y=3G5D;W,N;&EBG
XM<F%R>0`J`"!O``0@"$H89OR1P"`(4X!.=4SO`P``!'``("\`#+/(9@).=6,8D
XMT,#2P&`"$R!1R/_\D+P``0``:O).=1+84<C__)"\``$``&KR3G5A<$/L@$)%H
XM[(!"M<EF#C(\`%]K"'0`(L)1R?_\*4^!=BQX``0I3H&*2.>`@`@N``0!*6<0P
XM2_H`"$ZN_^)@!D*G\U].<T/Z`"!.KOYH*4"!CF8,+CP``X`'3J[_E&`$3KK[?
XM8E!/3G5D;W,N;&EB<F%R>0!)^0``?_Y.=4Y5``!(YPPP)&T`$"!M``A*J`"L1
XM9Q@@;0`(("@`K.6`*``@1"`H`!#E@"9`8`0F;(`Z$!-(@$C`T*T`#%2`*4"!&
XMDD*G+RR!DDZZ!S0I0(&64$]F"$S?##!.74YU$!-(@$C`*@`O!2!+4H@O""\LV
XM@99.N@&.(&R!EM'%0_H!6!#99OPO+0`,+PHO+(&63KH!3B!L@99",%@`*7P`$
XM```!@88@;(&6T<4F2%*+)$M/[P`8$!-(@$C`*@"PO````"!G(+J\````"6<8_
XMNKP````,9Q"ZO`````UG"+J\````"F8$4HM@S`P3`"!M``",#!,`(F8R4HL@L
XM2U*+$!!(@$C`*@!G("!*4HH0A;J\````(F80#!,`(F8$4HM@!D(J__]@`F#2>
XM8$0@2U*+$!!(@$C`*@!G,+J\````(&<HNKP````)9R"ZO`````QG&+J\````_
XM#6<0NKP````*9P@@2E**$(5@PB!*4HI"$$J%9@)3BU*L@89@`/\\0A)"IR`L&
XM@892@.6`+P!.N@7X*4"!@E!/9@A"K(&&8`#^OGH`)FR!EF`>(`7E@"!L@8(A7
XMBP@`($L@"$H89OR1P%.(4HC7R%*%NJR!AFW<(`7E@"!L@8)"L`@`8`#^@B``O
XM,#Q__V`$,"\`#B!O``1*&&;\4T@B;P`(4T`0V5?(__QG`D(0("\`!$YU3.\#K
XM```$(`@B+P`,8`(0V5?)__QG!E)!8`)"&%')__Q.=4Y5``!(YPXP)&T`"$*G5
XM2'H`CDZZ!>`I0(&:4$]F"$S?#'!.74YU(&T`#")H`"0O*0`$3KH&BB@`6$]G4
XM4DAZ`&T@1"\H`#9.N@9<)D!*@%!/9S1(>`/M+PM.N@+\+`!03V<D(`;E@"H`!
XM($4E:``(`*0E1@"<2'@#[4AZ`#A.N@+8)4``H%!/+P1.N@8H6$\O+(&:3KH#F
XM.$*L@9I83V"`:6-O;BYL:6)R87)Y`%=)3D1/5P`J`$CG2`!"A$J`:@1$@%)$E
XM2H%J!D2!"D0``6$^2D1G`D2`3-\`$DJ`3G5(YT@`0H1*@&H$1(!21$J!:@)$]
XM@6$:(`%@V"\!81(@`2(?2H!.=2\!808B'TJ`3G5(YS``2$%*068@2$$V`30`Y
XM0D!(0(##(@!(0#("@L,P`4)!2$%,WP`,3G5(028!(@!"04A!2$!"0'0/T(#3U
XM@;:!8@22@U)`4<K_\DS?``Q.=4Y5``!*K(&>9P8@;(&>3I`O+0`(3KH`"%A/4
XM3EU.=4Y5__PO!"MM``C__$JL@7)G+'@`8`HO!$ZZ`/Q83U*$,"R`.$C`N(!MM
XM[#`L@#C!_``&+P`O+(%R3KH#[%!/2JR!HF<&(&R!HDZ02JR`/F<*+RR`/DZZO
XM`9Q83TJL@:9G""!L@:8@K(&J2JR!KF<*+RR!KDZZ`>)83TJL@;)G"B\L@;).B
XMN@'26$]*K(&V9PHO+(&V3KH!PEA/2JR!NF<*+RR!NDZZ`;)83RQX``0(+@`$2
XM`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR!?F8J2JR!EF<B+RR!DB\L@99.!
XMN@-(("R!AE*`Y8`O`"\L@8).N@,V3^\`$&`.3KH#("\L@7Y.N@.X6$\@+?_\0
XM+FR!=DYU*!].74YU3E4``$CG#B`H+0`(<@8@!$ZZ`$0D0-7L@7)*A&T.,"R`+
XM.$C`N(!L!$J29A(I?`````*!OG#_3-\$<$Y=3G4P*@`$P'R``&8(+Q).N@`RA
XM6$]"DG``8.!(YW``-`'$P"8!2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.3G5.1
XM^@`"(B\`!"QL@8Y.[O_<+P1,[P`>``@L;(&.3J[_=B@?3G5.^@`"(B\`!"QL\
XM@8Y.[O^"(B\`!"QL@8Y.[O^@+&R!CD[N_\I.^@`"3.\`!@`$+&R!CD[N_^(L.
XM;(&.3N[_Q$[Z``(B+P`$+&R!CD[N_Z9.^@`"3.\`#@`$+&R!CD[N_]`B;P`$_
XM+&R!BD[N_AI,[P,```0L;(&*3N[_"DCG`01,[R"```PL;(&*3J[_E$S?((!.'
XM=2)O``0L;(&*3N[^/D[Z``(B;P`$+&R!BD[N_F),[P,```0@+P`,+&R!BD[N_
XM_9!.50``2.<(($AX__].N@#0*`"PO/____]83V8*<`!,WP003EU.=4AY``$`C
XM`4AX`").N@$X)$!*@%!/9@PO!$ZZ`8)P`%A/8-8E;0`(``H5;0`/``D5?``$!
XM``A"*@`.%40`#T*G3KH!+"5``!!*K0`(6$]G"B\*3KH`6EA/8`I(:@`43KH!/
XM5EA/(`I@DDY5```O"B1M``A*J@`*9P@O"DZZ`8Y83Q5\`/\`""5\_____P`4[
XM<``0*@`/+P!.N@$&2'@`(B\*3KH`Z$_O``PD7TY=3G4B;P`$+&R!BD[N_IX@M
XM+P`$+&R!BD[N_K9.50``+PI*K0`(9@AP`"1?3EU.=4AY``$``2\M``Q.N@!@#
XM)$!*@%!/9@1P`&#@%7P`!0`(-6T`#@`2)6T`"``.(`I@RDY5```O"B1M``@@8
XM"F8&)%].74YU%7P`_P`()7S_____`!0E?/____\`&'``,"H`$B\`+PI.N@!*[
XM4$]@TD[Z``),[P`#``0L;(&*3N[_.DCG`P`B;P`,+&R!BDZN_CA,WP#`3G5.5
XM^@`"(F\`!"QL@8I.[O[:3OH``BQL@8I.[O]\3OH``B)O``0@+P`(+&R!BD[N!
XM_RX@+P`$+&R!BD[N_K`@;P`$+&R!BD[N_HP@;P`$((A8D$*H``0A2``(3G4@N
XM;P`$3.\"`0`((B\`$"QL@8I.[OY$3OH``BQL@8HB;P`$("\`"$[N_=@B;P`$Z
XM("\`""QL@8I.[OX.+&R!BD[N_W8B;P`$+&R!BD[N_I@B;P`$+&R!BD[N_A0B(
XM;P`$+&R!BD[N_H8B;P`$("\`""QL@8I.[OZ\("\`!"QL@8I.[O["(&\`!"QLX
XM@8I.[OZ`(F\`!$SO``,`""QL@!).[O\*(F\`!$SO``,`""QL@!).[O\0(F\`P
XM!"`O``@L;(`23N[^GBQL@!).[O[R3.\#```$+&R!FD[N_Z`@;P`$+&R!FD[N%
XM_Z8@;P`$+&R!FD[N_[(@;P`$3.\``P`(+&R`#D[N_U@@;P`$3.\``P`(+&R`;
XM#D[N_N`@;P`$+&R`%D[N_Y0@;P`$+&R`%D[N_XX@;P`$3.\``P`(+&R`%D[N%
XM_WP``````^P````!`````0``%8H````````#\@```^H````0````````````]
XM````````````````````````````$``````$````!```````````````````8
XM`!0``````````````^P````!`````````"0````````#\@```^L````!```#/
X!\A0`&
X``
Xend
Xsize 8056
END_OF_FILE
if test 11317 -ne `wc -c <'xsize.uu'`; then
    echo shar: \"'xsize.uu'\" unpacked with wrong size!
fi
# end of 'xsize.uu'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
Mail comments to the moderator at <amiga-request@cs.odu.edu>.
Post requests for sources, and general discussion to comp.sys.amiga.
