home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: alt.sources
- Path: sparky!uunet!mcsun!sun4nl!fwi.uva.nl!gene.fwi.uva.nl!bosman
- From: bosman@fwi.uva.nl (Cor Bosman)
- Subject: Bouncing Splines. Module for XLOCK
- Message-ID: <1993Jan25.123937.8069@fwi.uva.nl>
- Sender: news@fwi.uva.nl
- Nntp-Posting-Host: ram.fwi.uva.nl
- Organization: FWI, University of Amsterdam
- Date: Mon, 25 Jan 1993 12:39:37 GMT
- Lines: 561
-
-
- #! /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: README spline.patch spline.c
- # Wrapped by bosman@fwi.uva.nl on Mon Jan 25 13:36:34 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'README' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'README'\"
- else
- echo shar: Extracting \"'README'\" \(349 characters\)
- sed "s/^X//" >'README' <<'END_OF_FILE'
- X Bouncing Splines. Module for XLock, the Xwindow System lockscreen.
- X
- X
- X spline.patch: patchfile with necessary changes to original Xlock.
- X spline.c : bouncing splines code.
- X
- X
- XAdded option to xlock: -points <x> to choose the number of points
- Xthrough which the curve will be drawn.
- X
- XUse -batchcount <x> to set the length of the tail.
- X
- END_OF_FILE
- if test 349 -ne `wc -c <'README'`; then
- echo shar: \"'README'\" unpacked with wrong size!
- fi
- # end of 'README'
- fi
- if test -f 'spline.patch' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spline.patch'\"
- else
- echo shar: Extracting \"'spline.patch'\" \(6993 characters\)
- sed "s/^X//" >'spline.patch' <<'END_OF_FILE'
- X-----------
- Xdiff -c3 xlock/Imakefile spline/Imakefile
- X*** xlock/Imakefile Sat Sep 28 03:10:41 1991
- X--- spline/Imakefile Fri Jan 22 16:30:47 1993
- X***************
- X*** 8,17 ****
- X SYS_LIBRARIES = -lm
- X SRCS = xlock.c hsbramp.c usleep.c resource.c \
- X hopalong.c qix.c life.c image.c blank.c \
- X! swarm.c rotor.c pyro.c flame.c worm.c
- X OBJS = xlock.o hsbramp.o usleep.o resource.o \
- X hopalong.o qix.o life.o image.o blank.o \
- X! swarm.o rotor.o pyro.o flame.o worm.o
- X
- X ComplexProgramTarget(xlock)
- X InstallAppDefaults(XLock)
- X--- 8,17 ----
- X SYS_LIBRARIES = -lm
- X SRCS = xlock.c hsbramp.c usleep.c resource.c \
- X hopalong.c qix.c life.c image.c blank.c \
- X! swarm.c rotor.c pyro.c flame.c worm.c spline.c
- X OBJS = xlock.o hsbramp.o usleep.o resource.o \
- X hopalong.o qix.o life.o image.o blank.o \
- X! swarm.o rotor.o pyro.o flame.o worm.o spline.o
- X
- X ComplexProgramTarget(xlock)
- X InstallAppDefaults(XLock)
- Xdiff -c3 xlock/Makefile spline/Makefile
- X*** xlock/Makefile Sat Sep 28 03:08:58 1991
- X--- spline/Makefile Fri Jan 22 16:31:13 1993
- X***************
- X*** 3,9 ****
- X
- X C_SRCS=xlock.c hsbramp.c usleep.c resource.c \
- X hopalong.c qix.c life.c image.c blank.c \
- X! swarm.c rotor.c pyro.c flame.c worm.c
- X HDRS=xlock.h
- X IMAGES=lifeicon.bit sunlogo.bit
- X SRCS=${C_SRCS} ${HDRS} ${IMAGES} xlock.man XLock.ad
- X--- 3,9 ----
- X
- X C_SRCS=xlock.c hsbramp.c usleep.c resource.c \
- X hopalong.c qix.c life.c image.c blank.c \
- X! swarm.c rotor.c pyro.c flame.c worm.c spline.c
- X HDRS=xlock.h
- X IMAGES=lifeicon.bit sunlogo.bit
- X SRCS=${C_SRCS} ${HDRS} ${IMAGES} xlock.man XLock.ad
- Xdiff -c3 xlock/XLock.ad spline/XLock.ad
- X*** xlock/XLock.ad Sat Sep 28 03:10:01 1991
- X--- spline/XLock.ad Fri Jan 22 16:30:06 1993
- X***************
- X*** 45,50 ****
- X--- 45,54 ----
- X XLock.worm.delay: 10000
- X XLock.worm.batchcount: 20
- X XLock.worm.saturation: 1
- X+ XLock.spline.delay: 0
- X+ XLock.spline.batchcount: 15
- X+ XLock.spline.saturation: 1
- X+ XLock.spline.points: 5
- X XLock.blank.delay: 5000000
- X XLock.blank.batchcount: 1
- X XLock.blank.saturation: 1
- Xdiff -c3 xlock/resource.c spline/resource.c
- X*** xlock/resource.c Sat Sep 28 02:58:54 1991
- X--- spline/resource.c Fri Jan 22 16:35:59 1993
- X***************
- X*** 9,14 ****
- X--- 9,15 ----
- X * See xlock.c for copying information.
- X *
- X * Revision History:
- X+ * 22-Jan-93: Added spline mode and points option.
- X * 25-Sep-91: added worm mode.
- X * 24-Jun-91: changed name to username.
- X * 06-Jun-91: Added flame mode.
- X***************
- X*** 66,71 ****
- X--- 67,75 ----
- X extern void initworm();
- X extern void drawworm();
- X
- X+ extern void initspline();
- X+ extern void drawspline();
- X+
- X typedef struct {
- X char *cmdline_arg;
- X void (*lp_init) ();
- X***************
- X*** 88,93 ****
- X--- 92,98 ----
- X {"pyro", initpyro, drawpyro, 15000, 40, 1.0, "Fireworks"},
- X {"flame", initflame, drawflame, 10000, 20, 1.0, "Cosmic Flame Fractals"},
- X {"worm", initworm, drawworm, 10000, 20, 1.0, "Wiggly Worms"},
- X+ {"spline", initspline, drawspline, 2000, 5, 1.0, "Bouncing Spline"},
- X {"blank", initblank, drawblank, 5000000, 1, 1.0, "Blank screen"},
- X {randomstring, NULL, NULL, 0, 0, 0.0, "Random mode"},
- X };
- X***************
- X*** 103,109 ****
- X #define DEF_FILESEARCHPATH "/usr/lib/X11/%T/%N%S"
- X #endif
- X #define DEF_DISPLAY ":0"
- X! #define DEF_MODE "life"
- X #define DEF_FONT "-b&h-lucida-medium-r-normal-sans-24-*-*-*-*-*-iso8859-1"
- X #define DEF_BG "White"
- X #define DEF_FG "Black"
- X--- 108,114 ----
- X #define DEF_FILESEARCHPATH "/usr/lib/X11/%T/%N%S"
- X #endif
- X #define DEF_DISPLAY ":0"
- X! #define DEF_MODE "spline"
- X #define DEF_FONT "-b&h-lucida-medium-r-normal-sans-24-*-*-*-*-*-iso8859-1"
- X #define DEF_BG "White"
- X #define DEF_FG "Black"
- X***************
- X*** 114,119 ****
- X--- 119,125 ----
- X #define DEF_INVALID "Invalid login."
- X #define DEF_TIMEOUT "30" /* secs till password entry times out */
- X #define DEF_BC "100" /* vectors (or whatever) per batch */
- X+ #define DEF_PT "5" /* number of spline points */
- X #define DEF_DELAY "200000"/* microseconds between batches */
- X #define DEF_NICE "10" /* xlock process nicelevel */
- X #define DEF_SAT "1.0" /* color ramp saturation 0->1 */
- X***************
- X*** 162,167 ****
- X--- 168,174 ----
- X {"-delay", ".delay", XrmoptionSepArg, (caddr_t) NULL},
- X {"-batchcount", ".batchcount", XrmoptionSepArg, (caddr_t) NULL},
- X {"-saturation", ".saturation", XrmoptionSepArg, (caddr_t) NULL},
- X+ {"-points", ".points", XrmoptionSepArg, (caddr_t) NULL},
- X };
- X #define modeEntries (sizeof modeTable / sizeof modeTable[0])
- X
- X***************
- X*** 200,205 ****
- X--- 207,213 ----
- X {"-/+v", "turn on/off verbose mode"},
- X {"-delay usecs", "microsecond delay between screen updates"},
- X {"-batchcount num", "number of things per batch"},
- X+ {"-points num", "number of spline points"},
- X {"-nice level", "nice level for xlock process"},
- X {"-timeout seconds", "number of seconds before password times out"},
- X {"-saturation value", "saturation of color ramp"},
- X***************
- X*** 228,233 ****
- X--- 236,242 ----
- X int nicelevel;
- X int delay;
- X int batchcount;
- X+ int points;
- X int timeout;
- X Bool mono;
- X Bool nolock;
- X***************
- X*** 279,284 ****
- X--- 288,294 ----
- X {(caddr_t *) &delay, "delay", "Delay", DEF_DELAY, t_Int},
- X {(caddr_t *) &batchcount, "batchcount", "BatchCount", DEF_BC, t_Int},
- X {(caddr_t *) &saturation, "saturation", "Saturation", DEF_SAT, t_Float},
- X+ {(caddr_t *) &points, "points", "Points", DEF_PT, t_Int},
- X };
- X #define NMODEARGS (sizeof modevars / sizeof modevars[0])
- X
- XOnly in spline: spline.c
- Xdiff -c3 xlock/xlock.h spline/xlock.h
- X*** xlock/xlock.h Sat Sep 28 03:05:30 1991
- X--- spline/xlock.h Fri Jan 22 16:36:55 1993
- X***************
- X*** 39,44 ****
- X--- 39,45 ----
- X extern int nicelevel;
- X extern int delay;
- X extern int batchcount;
- X+ extern int points;
- X extern int reinittime;
- X extern int timeout;
- X extern Bool usefirst;
- Xdiff -c3 xlock/xlock.man spline/xlock.man
- X*** xlock/xlock.man Sat Sep 28 02:58:22 1991
- X--- spline/xlock.man Fri Jan 22 16:42:32 1993
- X***************
- X*** 52,57 ****
- X--- 52,60 ----
- X .BI \-batchcount " num"
- X ]
- X [
- X+ .BI \-points " num"
- X+ ]
- X+ [
- X .BI \-nice " level"
- X ]
- X [
- X***************
- X*** 163,168 ****
- X--- 166,174 ----
- X .B worm
- X Worm mode shows wiggly worms...
- X .TP 8
- X+ .B spline
- X+ Spline mode shows pretty bouncing splines.
- X+ .TP 8
- X .B blank
- X Blank mode shows nothing but a black screen.
- X .TP 8
- X***************
- X*** 198,204 ****
- X--- 204,216 ----
- X In pyro mode it is the maximum number flying rockets at one time.
- X In flame mode it is the number of levels to recurse (larger = more complex).
- X In worm mode it is the number of worms.
- X+ In spline mode it is the number of splines.
- X In blank mode it means nothing.
- X+ .TP 5
- X+ .B \-points " num"
- X+ The
- X+ .I points
- X+ option sets the number of points used for the spline outline.
- X .TP 5
- X .B \-nice " nicelevel"
- X The
- END_OF_FILE
- if test 6993 -ne `wc -c <'spline.patch'`; then
- echo shar: \"'spline.patch'\" unpacked with wrong size!
- fi
- # end of 'spline.patch'
- fi
- if test -f 'spline.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'spline.c'\"
- else
- echo shar: Extracting \"'spline.c'\" \(7673 characters\)
- sed "s/^X//" >'spline.c' <<'END_OF_FILE'
- X#ifndef lint
- Xstatic char sccsid[] = "@(#)spline.c 93/01/20 XLOCK";
- X#endif
- X
- X/* spline.c - Bouncing Spline for xlock, the X Window System lockscreen
- X *
- X * Copyright (c) 1993 by Cor Bosman. (bosman@fwi.uva.nl)
- X *
- X * See xlock.c for copying information.
- X *
- X * 21-Jan-93: Converted kurvp1 and kurvp2 to C from pascal.
- X * 20-Jan-93: Written.
- X */
- X
- X#include "xlock.h"
- X#include <stdio.h>
- X#include <math.h>
- X
- X#define CURVEPOINTS 200 /* number of points on the curve */
- X#define SIGMA 1.0
- X#define MAXLINES 1000
- X
- Xtypedef struct {
- X XPoint points[CURVEPOINTS+1];
- X} curve;
- X
- Xtypedef struct {
- X int npoints;
- X int nlines;
- X int pix;
- X double *x;
- X double *y;
- X int *dx;
- X int *dy;
- X int head;
- X int tail;
- X int width;
- X int height;
- X long startTime;
- X curve *curves;
- X double *xp;
- X double *yp;
- X} splinestruct;
- X
- Xstatic splinestruct splines[MAXSCREENS];
- X
- Xvoid
- Xinitspline(win)
- XWindow win;
- X{
- X int i;
- X
- X XWindowAttributes xgwa;
- X splinestruct *sp = &splines[screen];
- X
- X sp->startTime = seconds();
- X if(points < 2) points=2;
- X else if(points > 20) points=20;
- X sp->npoints = points;
- X if(batchcount > MAXLINES) batchcount = MAXLINES;
- X sp->nlines = batchcount+1;
- X
- X if(!sp->curves) {
- X sp->x = (double *) malloc(sizeof(double) * sp->npoints);
- X sp->y = (double *) malloc(sizeof(double) * sp->npoints);
- X sp->dx = (int *) malloc(sizeof(int) * sp->npoints);
- X sp->dy = (int *) malloc(sizeof(int) * sp->npoints);
- X sp->xp = (double *) malloc(sizeof(double) * sp->npoints);
- X sp->yp = (double *) malloc(sizeof(double) * sp->npoints);
- X sp->curves = (curve *) malloc(sizeof(curve) * sp->nlines);
- X }
- X memset(sp->curves, 0, sp->nlines * sizeof(curve));
- X
- X XGetWindowAttributes(dsp, win, &xgwa);
- X sp->width = xgwa.width;
- X sp->height = xgwa.height;
- X
- X if(sp->width < 100) sp->nlines = 2;
- X
- X srand(time(NULL));
- X for(i=0; i<sp->npoints; i++) {
- X sp->x[i] = (double)(rand() % sp->width);
- X sp->y[i] = (double)(rand() % sp->height);
- X sp->dx[i] = ((rand()%21)-10);
- X while(sp->dx[i] == 0) sp->dx[i] = ((rand()%21)-10);
- X sp->dy[i] = ((rand()%21)-10);
- X while(sp->dy[i] == 0) sp->dy[i] = ((rand()%21)-10);
- X }
- X sp->head = 0;
- X sp->tail = 1;
- X XSetForeground(dsp, Scr[screen].gc, BlackPixel(dsp,screen));
- X XFillRectangle(dsp, win, Scr[screen].gc, 0, 0, sp->width, sp->height);
- X}
- X
- Xvoid
- Xdrawspline(win)
- XWindow win;
- X{
- X double s;
- X splinestruct *sp = &splines[screen];
- X int i;
- X
- X for(i=0; i<sp->npoints; i++) {
- X sp->x[i] += sp->dx[i];
- X sp->y[i] += sp->dy[i];
- X if((sp->x[i]<0) || (sp->x[i]>sp->width)) sp->dx[i] = -sp->dx[i];
- X if((sp->y[i]<0) || (sp->y[i]>sp->height)) sp->dy[i] = -sp->dy[i];
- X }
- X kurvp1(sp->npoints, sp->x, sp->y, SIGMA, sp->xp, sp->yp, &s);
- X for(i=0; i<CURVEPOINTS; i++) {
- X kurvp2((double)i/CURVEPOINTS,s,SIGMA,sp->npoints,sp->x,sp->y,sp->xp,sp->yp,
- X &(sp->curves[sp->head].points[i].x),&(sp->curves[sp->head].points[i].y));
- X }
- X
- X XSetForeground(dsp, Scr[screen].gc, Scr[screen].pixels[sp->pix]);
- X
- X sp->curves[sp->head].points[CURVEPOINTS].x = sp->curves[sp->head].points[0].x;
- X sp->curves[sp->head].points[CURVEPOINTS].y = sp->curves[sp->head].points[0].y;
- X
- X XDrawLines(dsp, win, Scr[screen].gc, sp->curves[sp->head].points, CURVEPOINTS+1, CoordModeOrigin);
- X
- X sp->head++; if(sp->head >= sp->nlines) sp->head = 0;
- X
- X sp->curves[sp->tail].points[CURVEPOINTS].x = sp->curves[sp->tail].points[0].x;
- X sp->curves[sp->tail].points[CURVEPOINTS].y = sp->curves[sp->tail].points[0].y;
- X
- X XSetForeground(dsp, Scr[screen].gc, BlackPixel(dsp, screen));
- X XDrawLines(dsp,win,Scr[screen].gc,sp->curves[sp->tail].points,CURVEPOINTS+1,CoordModeOrigin);
- X sp->tail++; if(sp->tail >= sp->nlines) sp->tail = 0;
- X
- X if(++sp->pix >= Scr[screen].npixels) sp->pix = 0;
- X}
- X
- X
- X/* kurvp1 and kurvp2 create the kurve through a number of points */
- Xkurvp1(n, x, y, sigma, xp, yp, s)
- Xint n;
- Xdouble *x, *y, sigma, *xp, *yp, *s;
- X/*
- X * Adapted from A.K. Cline, Comm. ACM 4 (1972) 220
- X */
- X{
- X int nm1,np1,i,ip1,ibak;
- X double delx1,delx2,dels1,dx1,dy1,dely1,dely2,dels2,dx2,dy2, sigmap,exps,sinhs,sinhin,diag1,diag2,diagin,spdig1,spdiag,dels;
- X double temp[CURVEPOINTS*2];
- X
- X nm1 = n-2; np1=n;
- X delx1 = x[1]-x[0];
- X dely1 = y[1]-y[0];
- X dels1 = sqrt(pow(delx1, 2.0)+pow(dely1, 2.0));
- X dx1 = delx1/dels1; dy1 = dely1/dels1;
- X xp[0] = dx1; yp[0] = dy1;
- X temp[0] = dels1;
- X *s = dels1;
- X
- X for(i=1; i<n; i++) {
- X if(i == n-1) ip1 = 0;
- X else ip1 = i+1;
- X delx2 = x[ip1]-x[i]; dely2=y[ip1]-y[i];
- X dels2 = sqrt(pow(delx2, 2.0) + pow(dely2, 2.0));
- X dx2 = delx2/dels2;
- X dy2 = dely2/dels2;
- X xp[i] = dx2-dx1; yp[i]=dy2-dy1;
- X temp[i] = dels2;
- X delx1 = delx2; dely1=dely2; dels1=dels2;
- X dx1 = dx2; dy1 = dy2;
- X (*s)=(*s)+dels1;
- X }
- X
- X xp[0] = xp[0]-dx1; yp[0]=yp[0]-dy1;
- X sigmap = fabs(sigma)*(n/(*s));
- X
- X dels = sigmap*temp[n-1]; exps = exp(dels);
- X sinhs = 0.5*(exps-(1.0/exps));
- X sinhin = 1.0/(temp[n-1]*sinhs);
- X diag1 = sinhin*(dels*0.5*(exps+(1.0/exps))-sinhs);
- X diagin = 1.0/diag1;
- X spdig1 = sinhin*(sinhs-dels);
- X spdiag = 0;
- X
- X for(i=0; i<n; i++) {
- X dels = sigmap*temp[i];
- X exps = exp(dels);
- X sinhs = 0.5*(exps-(1.0/exps));
- X sinhin = 1.0/(temp[i]*sinhs);
- X diag2 = sinhin*(dels*(0.5*(exps+(1.0/exps)))-sinhs);
- X
- X if(i == 0) {
- X diagin = 1.0/(diag1+diag2);
- X xp[0] = diagin*xp[0];
- X yp[0] = diagin*yp[0];
- X temp[n] = 0;
- X temp[np1] = -diagin*spdig1;
- X spdiag = sinhin*(sinhs-dels);
- X temp[0] = diagin*spdiag;
- X diag1 = diag2;
- X }
- X if((i<n-1) && (i>0)) {
- X diagin = 1.0/(diag1+diag2-(spdiag*temp[i-1]));
- X xp[i] = diagin*(xp[i]-(spdiag*xp[i-1]));
- X yp[i] = diagin*(yp[i]-(spdiag*yp[i-1]));
- X temp[n+i] = -diagin*temp[nm1+i+1]*spdiag;
- X spdiag = sinhin*(sinhs-dels);
- X temp[i] = diagin*spdiag;
- X diag1 = diag2;
- X }
- X }
- X
- X temp[nm1] = temp[n+nm1]-temp[nm1];
- X
- X if(n!=2) {
- X for(i=2; i<n; i++) {
- X ibak = np1-i-1;
- X xp[ibak] = xp[ibak]-temp[ibak]*xp[ibak+1];
- X yp[ibak] = yp[ibak]-temp[ibak]*yp[ibak+1];
- X temp[ibak] = temp[ibak+n] - temp[ibak]*temp[ibak+1];
- X }
- X }
- X xp[n-1] = (xp[n-1]-(spdig1*xp[0])-(spdiag*xp[nm1]))/
- X (diag1+diag2+(spdig1*temp[0])+(spdiag*temp[nm1]));
- X yp[n-1] = (yp[n-1]-(spdig1*yp[0])-(spdiag*yp[nm1]))/
- X (diag1+diag2+(spdig1*temp[0])+(spdiag*temp[nm1]));
- X
- X for(i=0; i<=nm1; i++) {
- X xp[i] = xp[i] + (temp[i]*xp[n-1]);
- X yp[i] = yp[i] + (temp[i]*yp[n-1]);
- X }
- X}
- X
- Xkurvp2(t, s, sigma, n, x, y, xp, yp, xs, ys)
- Xdouble t, s, sigma;
- Xint n;
- Xdouble *x, *y, *xp, *yp;
- Xshort *xs, *ys;
- X/*
- X * Adapted from A.K. Cline, Comm. ACM 4 (1974) 220
- X */
- X{
- X int flag, i, im1;
- X double sigmap, tn, delx, dely, dels, del1, del2, sum, sumdels, savesum, exps, exps1, sinhs, sinhd1, sinhd2;
- X
- X
- X sigmap=fabs(sigma)*(n/s);
- X tn=fabs(t*s); i=1; sum=0;
- X do {
- X delx=x[i]-x[i-1];
- X dely=y[i]-y[i-1];
- X dels=sqrt((delx*delx)+(dely*dely));
- X sumdels=sum+dels;
- X flag=(sumdels>=tn);
- X savesum=sum;
- X sum=sumdels;
- X i++;
- X } while(!(flag || (i==n)));
- X if(flag) {
- X sum=savesum;
- X i--;
- X im1=i-1;
- X } else {
- X i=0;
- X im1=n-1;
- X dels=s-sum;
- X }
- X del1=tn-sum; del2=dels-del1;
- X exps1=exp(sigmap*del1);
- X sinhd1=0.5*(exps1-1.0/exps1);
- X exps=exp(sigmap*del2);
- X sinhd2=0.5*(exps-1.0/exps);
- X exps=exps1*exps;
- X sinhs=0.5*(exps-1.0/exps);
- X *xs=(short)((xp[i]*sinhd1+xp[im1]*sinhd2)/sinhs +
- X ((x[i]-xp[i])*del1+(x[im1]-xp[im1])*del2)/dels);
- X *ys=(short)((yp[i]*sinhd1+yp[im1]*sinhd2)/sinhs +
- X ((y[i]-yp[i])*del1+(y[im1]-yp[im1])*del2)/dels);
- X}
- X
- END_OF_FILE
- if test 7673 -ne `wc -c <'spline.c'`; then
- echo shar: \"'spline.c'\" unpacked with wrong size!
- fi
- # end of 'spline.c'
- fi
- echo shar: End of shell archive.
- exit 0
- --
- |bosman@fwi.uva.nl_ // | Honest Officer , had I known my health |
- |-----------------\\ //AMIGA | stood in jeopardy I would never had lit one.|
- | PE no.1 \\/ | -MAXIM (of the Hells Angels)- |
- |__________ Quickly Scotty,beam me up.There is no ox..y..ge..._____________|
-