games@tekred.TEK.COM (06/01/88)
Submitted by: udenva!koala!dir (Dan Rosenblatt)
Comp.sources.games: Volume 4, Issue 26
Archive-name: spacewar/Part06
#! /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 6 (of 6)."
# Contents: aln.h bfuncs.c copyright dbm.h fixdir.c globals.c lckmsg.c
# login.h mlbx.h obj.h plyr.h psw.sh rpt.c rsw.c sys.h tget.c torp.h
# tstsz.c ucmd.h uio.h uio2.h universe.h vmsdelmbx.c who.c
# Wrapped by billr@saab on Tue May 31 09:54:56 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f aln.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"aln.h\"
else
echo shar: Extracting \"aln.h\" \(680 characters\)
sed "s/^X//" >aln.h <<'END_OF_aln.h'
X/*
X * Spacewar - include file that defines an alien
X * (requires prior inclusion of sys.h and universe.h)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct aln {
X double al_pstn[3]; /* alien position */
X double al_vel[3]; /* alien velocity */
X double al_thr[3]; /* alien thrust */
X short al_dly; /* alien delay counter */
X char al_htyp; /* alien hull type */
X idxptr al_lhit; /* alien last hit by */
X idxptr al_atck; /* alien currently attacking */
X short al_aeval; /* alien attack evaluation */
X idxptr al_univ; /* alien universe location */
X struct sys al_sys[MSYS];/* alien systems */
X};
X
X#define MAXALN 30
X
Xextern struct aln alnlst[];
END_OF_aln.h
if test 680 -ne `wc -c <aln.h`; then
echo shar: \"aln.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f bfuncs.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"bfuncs.c\"
else
echo shar: Extracting \"bfuncs.c\" \(739 characters\)
sed "s/^X//" >bfuncs.c <<'END_OF_bfuncs.c'
X/*
X * Spacewar - byte functions
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X
XVOID bcopy(dst,src,len)
Xregister char *dst,*src;
Xregister int len;
X{
X while (len-- > 0)
X *dst++ = *src++;
X}
X
XVOID binit(dst,len)
Xregister char *dst;
Xregister int len;
X{
X while (len-- > 0)
X *dst++ = 0;
X}
X
XVOID vcopy(dst,src)
Xregister double *dst,*src;
X{
X register int i;
X
X for (i=0;i++<3;)
X *dst++ = *src++;
X}
X
XVOID mcopy(dst,src)
Xregister double *dst,*src;
X{
X register int i;
X
X for (i=0;i++<9;)
X *dst++ = *src++;
X}
X
XVOID vinit(dst)
Xregister double *dst;
X{
X register int i;
X
X for (i=0;i++<3;)
X *dst++ = 0.;
X}
X
XVOID minit(dst)
Xregister double *dst;
X{
X register int i;
X
X for (i=0;i++<9;)
X *dst++ = 0.;
X}
END_OF_bfuncs.c
if test 739 -ne `wc -c <bfuncs.c`; then
echo shar: \"bfuncs.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f copyright -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"copyright\"
else
echo shar: Extracting \"copyright\" \(93 characters\)
sed "s/^X//" >copyright <<'END_OF_copyright'
X/*
X * Spacewar -
X *
X * Copyright 1985 obo Systems, Inc.
X * Copyright 1985 Dan Rosenblatt
X */
END_OF_copyright
if test 93 -ne `wc -c <copyright`; then
echo shar: \"copyright\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f dbm.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"dbm.h\"
else
echo shar: Extracting \"dbm.h\" \(128 characters\)
sed "s/^X//" >dbm.h <<'END_OF_dbm.h'
X/*
X * NOTE: VMS only
X */
X
Xtypedef struct
X{
X char *dptr;
X int dsize;
X} datum;
X
Xdatum fetch();
Xdatum firstkey();
Xdatum nextkey();
END_OF_dbm.h
if test 128 -ne `wc -c <dbm.h`; then
echo shar: \"dbm.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f fixdir.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"fixdir.c\"
else
echo shar: Extracting \"fixdir.c\" \(788 characters\)
sed "s/^X//" >fixdir.c <<'END_OF_fixdir.c'
X/*
X * Spacewar - normalize direction vector and recompute rotation matrix
X *
X * Copyright 1985 obo Systems, Inc.
X * Copyright 1985 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#ifndef VMS
X#include <sys/types.h>
X#else /* BSD SYSIII SYSV */
X#include <types.h>
X#endif /* VMS */
X#include "universe.h"
X#include "sys.h"
X#include "crft.h"
X#include "flds.h"
X
XVOID fixdir(pcrft)
Xregister struct crft *pcrft;
X{
X double tmp;
X
X unity(pcrft->cr_rmat);
X tmp = FMOD(ADD(pcrft->cr_dir[1],TWOPI),TWOPI);
X if (tmp != pcrft->cr_dir[1])
X biton(pcrft->cr_chng,BIT_DIR1);
X pcrft->cr_dir[1] = tmp;
X zrot(pcrft->cr_rmat,SUB(DIV(PI,2.),tmp));
X tmp = FMOD(ADD(pcrft->cr_dir[2],TWOPI),TWOPI);
X if (tmp != pcrft->cr_dir[2])
X biton(pcrft->cr_chng,BIT_DIR2);
X pcrft->cr_dir[2] = tmp;
X xrot(pcrft->cr_rmat,tmp);
X}
END_OF_fixdir.c
if test 788 -ne `wc -c <fixdir.c`; then
echo shar: \"fixdir.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f globals.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"globals.c\"
else
echo shar: Extracting \"globals.c\" \(565 characters\)
sed "s/^X//" >globals.c <<'END_OF_globals.c'
X/*
X * Spacewar - file that declares all global lists
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#ifndef VMS
X#include <sys/types.h>
X#else /* BSD SYSIII SYSV */
X#include <types.h>
X#endif /* VMS */
X#include "universe.h"
X#include "torp.h"
X#include "sys.h"
X#include "obj.h"
X#include "login.h"
X#include "crft.h"
X#include "aln.h"
X
Xstruct aln alnlst[MAXALN];
Xstruct crft crftlst[MAXCRFT];
Xstruct login loginlst[MAXLOGIN];
Xstruct obj objlst[MAXOBJ];
Xstruct torp torplst[MAXTORP];
Xstruct universe univlst[MAXUNIVERSE];
END_OF_globals.c
if test 565 -ne `wc -c <globals.c`; then
echo shar: \"globals.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lckmsg.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"lckmsg.c\"
else
echo shar: Extracting \"lckmsg.c\" \(1135 characters\)
sed "s/^X//" >lckmsg.c <<'END_OF_lckmsg.c'
X/*
X * Spacewar - return a lock message if the system is locked (no play allowed)
X *
X * Copyright 1985 obo Systems, Inc.
X * Copyright 1985 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#ifndef VMS
X#include <sys/types.h>
X#else /* BSD SYSIII SYSV */
X#include <types.h>
X#endif /* VMS */
X#include <time.h>
X
Xstatic char *msg; /* NULL if normal locking applies */
X /* ptr to NULL str if unlocked by SWMASTER */
X /* ptr to text if locked by SWMASTER */
X
Xchar *lckmsg()
X{
X time_t clock;
X struct tm *curtm,*localtime();
X
X#ifdef DEBUG
X DBG("lckmsg()\n");
X#endif
X
X /* controlled by SWMASTER */
X if (msg)
X return((*msg) ? msg : NULL);
X
X /* get current date&time */
X time(&clock);
X curtm = localtime(&clock);
X
X /* OK if Sat or Sun */
X if (curtm->tm_wday == 0 || curtm->tm_wday == 6)
X return(NULL);
X
X /* OK if before 8AM or after 5PM */
X if (curtm->tm_hour < 8 || curtm->tm_hour >= 17)
X return(NULL);
X
X /* OK if during lunch: 1130PM to 1PM */
X if (curtm->tm_hour < 13 && curtm->tm_hour*100 + curtm->tm_min >= 1130)
X return(NULL);
X
X return("A lockout exists from 0800-1130,1300-1700 Mon-Fri");
X}
X
XVOID prvlck(s)
Xchar *s;
X{
X msg = s;
X}
END_OF_lckmsg.c
if test 1135 -ne `wc -c <lckmsg.c`; then
echo shar: \"lckmsg.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f login.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"login.h\"
else
echo shar: Extracting \"login.h\" \(1014 characters\)
sed "s/^X//" >login.h <<'END_OF_login.h'
X/*
X * Spacewar - include file that defines a player's login
X * (requires prior inclusion of universe.h)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct login {
X short ln_tty; /* login terminal I/O channel */
X#ifdef VMS
X int ln_pid;
X#else /* BSD SYSIII SYSV */
X short ln_playpid; /* login play process pid */
X short ln_readpid; /* login read process pid */
X#endif /* VMS BSD SYSIII SYSV */
X char ln_name[8+1]; /* login name */
X char *ln_term; /* login terminal name */
X /* login trm. characteristics */
X char *ln_tcm,*ln_tcl,*ln_tce,*ln_tso,*ln_tse;
X char ln_rvslh; /* login reverse low/high screen display */
X char ln_iomode; /* login I/O mode */
X char ln_crft[12+1]; /* login craft name */
X idxptr ln_play; /* login is playing */
X char ln_stat; /* login status (major command) */
X char *ln_substat; /* login substatus (command dependent) */
X char ln_input[79+1]; /* login input buffer */
X};
X
X#define MAXLOGIN 30 /* same as MAXCRFT */
X
Xextern struct login loginlst[];
END_OF_login.h
if test 1014 -ne `wc -c <login.h`; then
echo shar: \"login.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f mlbx.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"mlbx.h\"
else
echo shar: Extracting \"mlbx.h\" \(339 characters\)
sed "s/^X//" >mlbx.h <<'END_OF_mlbx.h'
X/*
X * Spacewar - include file that defines a player's mailbox
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#define MLBX 'M' /* prefix for dbm(3) key */
X
Xstruct mlbxkey {
X char mb_mlbxkey; /* prefix for dbm(3) key */
X char mb_plyr[8+1]; /* player(recipient) name */
X short mb_mlbx; /* mailbox sequence */
X};
END_OF_mlbx.h
if test 339 -ne `wc -c <mlbx.h`; then
echo shar: \"mlbx.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f obj.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"obj.h\"
else
echo shar: Extracting \"obj.h\" \(1014 characters\)
sed "s/^X//" >obj.h <<'END_OF_obj.h'
X/*
X * Spacewar - include file that defines a universe object
X * (requires prior inclusion of universe.h)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct obj {
X long oj_mass; /* object mass (for gravity) */
X short oj_rad; /* object radius */
X char oj_rep; /* object representation (screen character) */
X idxptr oj_octr; /* object orbital center (a previous obj) */
X short oj_oprd; /* object orbital period */
X long oj_orad; /* object orbital center radius */
X double oj_ocrpt; /* object orbital center relative plane theta */
X double oj_optx; /* object orbital plane tilt x (in degrees) */
X double oj_opty; /* object orbital plane tilt y (in degrees) */
X double oj_optz; /* object orbital plane tilt z (in degrees) */
X
X/* in-core only */
X idxptr oj_univ; /* object universe pointer */
X double oj_pstn[3]; /* object position */
X double oj_vel[3]; /* object velocity */
X double oj_rmat[3][3]; /* object rotation matrix */
X};
X
X#define MAXOBJ 42
X
Xextern struct obj objlst[];
END_OF_obj.h
if test 1014 -ne `wc -c <obj.h`; then
echo shar: \"obj.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f plyr.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"plyr.h\"
else
echo shar: Extracting \"plyr.h\" \(804 characters\)
sed "s/^X//" >plyr.h <<'END_OF_plyr.h'
X/*
X * Spacewar - include file that defines a player structure
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#define PLYR 'P' /* prefix for dbm(3) key */
X
Xstruct plyrkey {
X char pl_plyrkey; /* prefix for dbm(3) key */
X char pl_name[8+1]; /* player name */
X};
X
Xstruct plyr {
X char pl_passwd[8+1]; /* player password */
X short pl_numlgn; /* player number of logins */
X time_t pl_lstlgn; /* player last login */
X short pl_frstml; /* player first mail sequence# */
X short pl_seenml; /* player seen mail sequence# (old/new) */
X short pl_lstml; /* player last mail sequence# */
X short pl_slst; /* player number of ships lost */
X short pl_klst; /* player number of kills lost */
X long pl_plst; /* player number of points lost */
X time_t pl_tlst; /* player playing time lost */
X};
END_OF_plyr.h
if test 804 -ne `wc -c <plyr.h`; then
echo shar: \"plyr.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f psw.sh -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"psw.sh\"
else
echo shar: Extracting \"psw.sh\" \(72 characters\)
sed "s/^X//" >psw.sh <<'END_OF_psw.sh'
Xchmod go+rw `tty`
Xtrap 'wait' 1 2 3 15
X/usr/dir/sw/psw
Xchmod go-r `tty`
END_OF_psw.sh
if test 72 -ne `wc -c <psw.sh`; then
echo shar: \"psw.sh\" unpacked with wrong size!
fi
chmod +x psw.sh
# end of overwriting check
fi
if test -f rpt.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"rpt.c\"
else
echo shar: Extracting \"rpt.c\" \(849 characters\)
sed "s/^X//" >rpt.c <<'END_OF_rpt.c'
X/*
X * Spacewar - routines to report to a playing screen
X *
X * Copyright 1985 obo Systems, Inc.
X * Copyright 1985 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#ifndef VMS
X#include <sys/types.h>
X#else /* BSD SYSIII SYSV */
X#include <types.h>
X#endif /* VMS */
X#include "universe.h"
X#include "login.h"
X#include "sys.h"
X#include "crft.h"
X#include "flds.h"
X
Xstatic char nxtrpt;
X
XVOID rpt(pcrft,msg)
Xstruct crft *pcrft;
Xchar *msg;
X{
X if (nxtrpt >= flds[FLD_REPORT].f_maxg)
X return;
X output(pcrft->cr_lgn,'H',(nxtrpt<<8)|FLD_REPORT,msg);
X ++nxtrpt;
X}
X
X/*ARGSUSED*/
XVOID setrpt(pcrft)
Xstruct crft *pcrft;
X{
X nxtrpt = 0;
X}
X
XVOID fnshrpt(pcrft,flsh)
Xregister struct crft *pcrft;
Xint flsh;
X{
X int i;
X
X for (i=nxtrpt;i <= pcrft->cr_lrpt;++i)
X output(pcrft->cr_lgn,'H',(i<<8)|FLD_REPORT,"");
X pcrft->cr_lrpt = nxtrpt - 1;
X if (flsh) output(pcrft->cr_lgn,0,0,0);
X}
END_OF_rpt.c
if test 849 -ne `wc -c <rpt.c`; then
echo shar: \"rpt.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f rsw.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"rsw.c\"
else
echo shar: Extracting \"rsw.c\" \(802 characters\)
sed "s/^X//" >rsw.c <<'END_OF_rsw.c'
X/*
X * Spacewar - program that reads a user's terminal and passes
X * it back to the spacewar game through a pipe in
X * order to present spacewar with only one file to
X * read for user input eliminating polling
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#include "universe.h"
X#include "login.h"
X#include "uio.h"
X
Xmain(argc,argv)
Xint argc;
Xchar *argv[];
X{
X struct uio ttyuio;
X register int i;
X
X /* get, save, and clear player's login pointer */
X if (argc != 2) exit(1);
X ttyuio.uio_lgn = (struct login *) atoi(argv[1]);
X argv[1] = (char *) 0;
X
X /* read tty and forward it on */
X for(;;) {
X if ((i=read(0,ttyuio.uio_chrs,sizeof(ttyuio.uio_chrs)-1)) > 0) {
X ttyuio.uio_chrs[i] = '\0';
X write(1,&ttyuio,sizeof(ttyuio));
X }
X }
X}
END_OF_rsw.c
if test 802 -ne `wc -c <rsw.c`; then
echo shar: \"rsw.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f sys.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"sys.h\"
else
echo shar: Extracting \"sys.h\" \(637 characters\)
sed "s/^X//" >sys.h <<'END_OF_sys.h'
X/*
X * Spacewar - include file that defines a craft's systems
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#define SUBSYS 'S' /* prefix for dbm(3) key */
X
Xstruct syskey {
X char s_syskey; /* prefix for dbm(3) key */
X char s_plyr[8+1]; /* player(owner) name */
X char s_crft[12+1]; /* craft name */
X char s_type; /* system type */
X};
X
Xstruct sys {
X char s_pct; /* system percent */
X char s_edmg; /* system ease of damage */
X char s_dmg; /* system current damage */
X short s_lvl; /* system current level */
X short s_cap; /* system capacity */
X};
X
X#define MSYS 16 /* maximum possible number of systems */
END_OF_sys.h
if test 637 -ne `wc -c <sys.h`; then
echo shar: \"sys.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f tget.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"tget.c\"
else
echo shar: Extracting \"tget.c\" \(1042 characters\)
sed "s/^X//" >tget.c <<'END_OF_tget.c'
X/*
X * spacewar - simple simulation of termcap routines/database
X */
X
Xstatic struct {
X char *tnam;
X char *tcm,*tcl,*tce,*tso,*tse,*tus,*tue;
X} *tptr,ttbl[] = {
X {"vt100","\001\033[%02d;%02dH",
X "\033[;H\033[2J","\033[K","\033[7m","\033[m","\033[4m","\033[m"},
X {"tvi925","\040\033=%c%c",
X "\032","\033T","\033G0","\033G<","\033)","\033("},
X {"h19","\040\033Y%c%c",
X "\033E","\033K","\033p","\033q"},
X {0}
X};
X
Xtgetent(p1,termname)
Xchar *p1,*termname;
X{
X for (tptr=ttbl;tptr->tnam && strcmp(termname,tptr->tnam);++tptr) ;
X return((tptr->tnam) ? 1 : 0);
X}
X
Xchar *tgetstr(cap,p2)
Xchar *cap;
X{
X if (!strcmp(cap,"cm"))
X return(tptr->tcm);
X if (!strcmp(cap,"cl"))
X return(tptr->tcl);
X if (!strcmp(cap,"ce"))
X return(tptr->tce);
X if (!strcmp(cap,"so"))
X return(tptr->tso);
X if (!strcmp(cap,"se"))
X return(tptr->tse);
X if (!strcmp(cap,"us"))
X return(tptr->tus);
X if (!strcmp(cap,"ue"))
X return(tptr->tue);
X return(0);
X}
X
Xchar *tgoto(cm,x,y)
Xchar *cm;
Xint x,y;
X{
X static char buf[32];
X
X sprintf(buf,cm+1,y+*cm,x+*cm);
X return(buf);
X}
END_OF_tget.c
if test 1042 -ne `wc -c <tget.c`; then
echo shar: \"tget.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f torp.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"torp.h\"
else
echo shar: Extracting \"torp.h\" \(705 characters\)
sed "s/^X//" >torp.h <<'END_OF_torp.h'
X/*
X * Spacewar - include file that defines a torpedo
X * (requires prior inclusion of universe.h)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct torp {
X double tp_pstn[3]; /* torpedo position */
X double tp_vel[3]; /* torpedo velocity */
X double tp_thr[3]; /* torpedo thrust */
X idxptr tp_aim; /* torpedo aimed at */
X idxptr tp_fby; /* torpedo fired by */
X long tp_dist; /* torpedo quarry distance */
X char tp_dmg; /* torpedo hull damage */
X idxptr tp_lhit; /* torpedo last hit by */
X idxptr tp_univ; /* torpedo universe pointer */
X};
X
X#define MAXTORP 90 /* 3*MAXCRFT */
X
Xextern struct torp torplst[];
X
X#define MAXTTHR 50 /* maximum torp thrust from rockets */
END_OF_torp.h
if test 705 -ne `wc -c <torp.h`; then
echo shar: \"torp.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f tstsz.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"tstsz.c\"
else
echo shar: Extracting \"tstsz.c\" \(659 characters\)
sed "s/^X//" >tstsz.c <<'END_OF_tstsz.c'
X/*
X * Spacewar - test size of uio and alternate
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#include "uio.h"
X#include "uio2.h"
X
Xmain()
X{
X#ifdef BSD
X printf("only one uio, nothing to worry about\n");
X#else /* VMS SYSIII SYSV */
X#ifdef VMS
X printf("only one uio, nothing to worry about\n");
X#else /* SYSIII SYSV */
X printf("since there are two uios, they must match in size\n");
X printf("sizeof(uio)(%d) %c= sizeof(uio2)(%d)\n", sizeof(struct uio),
X (sizeof(struct uio) == sizeof(struct uio2)) ? '=' : '!',
X sizeof(struct uio2));
X#endif /* VMS SYSIII SYSV */
X#endif /* BSD VMS SYSIII SYSV */
X return(0);
X}
END_OF_tstsz.c
if test 659 -ne `wc -c <tstsz.c`; then
echo shar: \"tstsz.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f ucmd.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"ucmd.h\"
else
echo shar: Extracting \"ucmd.h\" \(400 characters\)
sed "s/^X//" >ucmd.h <<'END_OF_ucmd.h'
X/*
X * Spacewar - include file that defines a player's-defined commands
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
X#define UCMD 'U' /* prefix for dbm(3) key */
X
Xstruct ucmdkey {
X char uc_ucmdkey; /* prefix for dbm(3) key */
X char uc_plyr[8+1]; /* player(definer/user) name */
X char uc_name[8+1]; /* user-command name */
X short uc_ucmd; /* user-command sequence */
X};
END_OF_ucmd.h
if test 400 -ne `wc -c <ucmd.h`; then
echo shar: \"ucmd.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f uio.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"uio.h\"
else
echo shar: Extracting \"uio.h\" \(507 characters\)
sed "s/^X//" >uio.h <<'END_OF_uio.h'
X/*
X * Spacewar - include file that defines structure containing user input
X * (requires prior inclusion of login.h)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct uio {
X struct login *uio_lgn; /* user i/o pointer to login struct */
X char uio_chrs[16]; /* user i/o characters */
X};
X
X/*
X * bastardization for named pipe communication from psw:
X * uio_lgn is signal# or 0 for new login
X * uio_chrs[0:1] is process id
X * uio_chrs[2:n] is ttyname for new login
X */
END_OF_uio.h
if test 507 -ne `wc -c <uio.h`; then
echo shar: \"uio.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f uio2.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"uio2.h\"
else
echo shar: Extracting \"uio2.h\" \(335 characters\)
sed "s/^X//" >uio2.h <<'END_OF_uio2.h'
X/*
X * Spacewar - login and signal communication structure
X * (alternate uio for SYSIII SYSV)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct uio2 {
X int uio2sig; /* signal, 0 for logon */
X short uio2pid; /* process-id of playsw */
X char uio2tty[14]; /* ttyname for logon (signal 0 only) */
X};
END_OF_uio2.h
if test 335 -ne `wc -c <uio2.h`; then
echo shar: \"uio2.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f universe.h -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"universe.h\"
else
echo shar: Extracting \"universe.h\" \(819 characters\)
sed "s/^X//" >universe.h <<'END_OF_universe.h'
X/*
X * Spacewar - include file that defines objects/parameters of the universe
X *
X * ordering: objects, aliens, crafts&torpedoes (because they can come and go)
X *
X * Copyright 1984 obo Systems, Inc.
X * Copyright 1984 Dan Rosenblatt
X */
X
Xstruct universe {
X char uv_type; /* universe type of object: NULL 'A|P|O|T' */
X char uv_pctr; /* universe screen character of object */
X double *uv_pstn; /* universe position of object */
X long uv_mass; /* universe mass/hull damage of object */
X short uv_rad; /* universe radius of object */
X union {
X struct aln *uv_aln;
X struct crft *uv_crft;
X struct obj *uv_obj;
X struct torp *uv_torp;
X } uv_ptr;
X dsplcmnt *uv_dspl;
X};
X
X#define MAXUNIVERSE MAXALN+MAXCRFT+MAXOBJ+MAXTORP
X
Xextern struct universe univlst[];
X
Xtypedef union {
X struct universe *ip_ptr;
X int ip_ofst;
X} idxptr;
END_OF_universe.h
if test 819 -ne `wc -c <universe.h`; then
echo shar: \"universe.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f vmsdelmbx.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"vmsdelmbx.c\"
else
echo shar: Extracting \"vmsdelmbx.c\" \(789 characters\)
sed "s/^X//" >vmsdelmbx.c <<'END_OF_vmsdelmbx.c'
X/*
X * Spacewar - for deleting mailboxes left around if the game dies - VMS ONLY!
X *
X * Copyright 1985 obo Systems, Inc.
X * Copyright 1985 Dan Rosenblatt
X */
X
X#include <stdio.h>
X
X#include <descrip.h>
X#include <ssdef.h>
X#include <psldef.h>
X
Xmain()
X{
X char buf[128];
X struct dsc$descriptor_d mlbx;
X short chan;
X int e;
X
X printf("mailbox name>");
X scanf("%s",buf);
X
X mlbx.dsc$w_length = strlen(buf);
X mlbx.dsc$b_dtype = DSC$K_DTYPE_T;
X mlbx.dsc$b_class = DSC$K_CLASS_S;
X mlbx.dsc$a_pointer = buf;
X
X if ((e=sys$assign(&mlbx,&chan,PSL$C_USER,0)) != SS$_NORMAL) {
X printf("assign()=%d ",e);
X perror(buf);
X exit(SS$_ABORT);
X }
X if ((e=sys$delmbx(chan)) != SS$_NORMAL) {
X printf("delmbx()=%d ",e);
X perror(buf);
X exit(SS$_ABORT);
X }
X
X printf("mailbox %s deleted\n",buf);
X exit(SS$_NORMAL);
X}
END_OF_vmsdelmbx.c
if test 789 -ne `wc -c <vmsdelmbx.c`; then
echo shar: \"vmsdelmbx.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f who.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"who.c\"
else
echo shar: Extracting \"who.c\" \(1121 characters\)
sed "s/^X//" >who.c <<'END_OF_who.c'
X/*
X * Spacewar - display who is logged in and what craft they are playing
X *
X * Copyright 1985 obo Systems, Inc.
X * Copyright 1985 Dan Rosenblatt
X */
X
X#include "spacewar.h"
X#include "universe.h"
X#include "login.h"
X
XVOID who(plogin)
Xregister struct login *plogin;
X{
X register struct login *plgn=loginlst+MAXLOGIN;
X char buf[40+1];
X
X#ifdef DEBUG
X DBG("who(#%d/%s)\n",plogin-loginlst,plogin->ln_name);
X#endif
X
X strcpy(buf,"\n");
X while (--plgn >= loginlst) {
X if (!plgn->ln_tty) continue; /* no one there */
X if (plgn == plogin) continue; /* not the current player */
X
X if (strlen(buf) + strlen(plgn->ln_name) + 1 +
X ((plgn->ln_stat == 'P') ? strlen(plgn->ln_crft)+1 : 0)) {
X output(plogin,'C',0,buf);
X strcpy(buf,"\n");
X }
X strcat(buf,plgn->ln_name);
X if (plgn->ln_stat == 'P') {
X strcat(buf,"/");
X strcat(buf,plgn->ln_crft);
X }
X strcat(buf," ");
X }
X if (strlen(buf) > 1) {
X output(plogin,'C',0,buf);
X output(plogin,'C',0,"\n");
X } else
X output(plogin,'C',0,"\nNo one else\n");
X
X plogin->ln_stat = NULL;
X output(plogin,'C',0,PROMPT);
X output(plogin,0,0,0);
X#ifdef DEBUG
X VDBG("who return\n");
X#endif
X}
END_OF_who.c
if test 1121 -ne `wc -c <who.c`; then
echo shar: \"who.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 6 \(of 6\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 6 archives.
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