Time warp forward 34 years so that it compiles (but not work)

This commit is contained in:
christos 2020-11-10 22:42:19 +00:00
parent b60730135e
commit e7d77274fb
34 changed files with 709 additions and 974 deletions

View File

@ -26,17 +26,15 @@
#include "bang.h"
void
bang_init()
bang_init(void)
{
;
}
void
make_plink(y,x)
Reg1 int x;
Reg2 int y;
make_plink(int x, int y)
{
Reg3 OBJECT *obj;
OBJECT *obj;
move(y+1,x*2,0);
beg_qwrite();
@ -57,11 +55,7 @@ Reg2 int y;
}
void
make_blast(y,x,mass,size)
Reg1 int x;
Reg2 int y;
int size;
long mass;
make_blast(int x, int y, int size, long mass)
{
bangy[nxtbang] = y;
bangx[nxtbang] = x;
@ -77,7 +71,7 @@ long mass;
return;
}
else if (mass >= 0) {
Reg3 OBJECT *obj;
OBJECT *obj;
move(y+1,x*2,0);
beg_qwrite();
@ -107,15 +101,15 @@ long mass;
}
void
do_bangs()
do_bangs(void)
{
Reg1 int x;
Reg2 int y;
Reg3 int i;
Reg4 int j;
Reg7 int k;
Reg5 int lastxy;
Reg6 OBJECT *obj;
int x;
int y;
int i;
int j;
int k;
int lastxy;
OBJECT *obj;
/* read blast list and update blast array */
assert(nxtbang >= 0 && nxtbang <= XSIZE * YSIZE);
@ -131,7 +125,7 @@ do_bangs()
yblasted[yy[j] = (y+YSIZE00) % YSIZE] |= 1;
xblasted[xx[j] = (x+XSIZE00) % XSIZE] |= 1;
}
blasted = TRUE;
blasted = true;
for (y=lastxy;y>=0;--y) {
for (x=lastxy;x>=0;--x) {
if (lastxy > 2) {

View File

@ -24,7 +24,7 @@ EXT int yy[MAXBDIST];
EXT int nxtbang;
EXT bool banging;
void make_plink();
void make_blast();
void do_bangs();
void bang_init();
void bang_init(void);
void make_plink(int, int);
void make_blast(int, int, int, long);
void do_bangs(void);

View File

@ -67,15 +67,15 @@
/* How many register declarations are paid attention to? */
#define Reg1 register /**/
#define Reg2 register /**/
#define Reg3 register /**/
#define Reg4 register /**/
#define Reg5 register /**/
#define Reg6 register /**/
#define Reg7 /**/
#define Reg8 /**/
#define Reg9 /**/
#define register /**/
#define register /**/
#define register /**/
#define register /**/
#define register /**/
#define register /**/
#define /**/
#define /**/
#define /**/
#define Reg10 /**/
#define Reg11 /**/
#define Reg12 /**/

View File

@ -3,7 +3,7 @@
* to find out if there is input pending on an IO channel. Generally
* the routine is used only if FIONREAD and O_NDELAY aren't available.
*/
#/*undef RDCHK /**/
#undef RDCHK /**/
/* SCOREFULL:
* This symbol, if defined, indicates that any scoreboard kept by the
@ -11,7 +11,7 @@
* to the user's login name. If the user can change his full name he
* can enter multiple scores if this is defined.
*/
#/*undef SCOREFULL /**/
#undef SCOREFULL /**/
/* SIGNEDCHAR:
* This symbol, if defined, indicates that characters are a signed type.
@ -25,7 +25,7 @@
* termio.h rather than sgtty.h. There are also differences in the
* ioctl() calls that depend on the value of this symbol.
*/
#/*undef TERMIO /**/
#undef TERMIO /**/
/* USENDIR:
* This symbol, if defined, indicates that the program should compile
@ -35,15 +35,15 @@
* This symbol, if defined, indicates that the program should include the
* system's version of ndir.h, rather than the one with this package.
*/
#/*undef USENDIR /**/
#/*undef LIBNDIR /**/
#undef USENDIR /**/
#undef LIBNDIR /**/
#define LIBNDIR
/* WHOAMI:
* This symbol, if defined, indicates that the program may include
* whoami.h.
*/
#/*undef WHOAMI /**/
#undef WHOAMI /**/
/* HOSTNAME:
* This symbol contains name of the host the program is going to run on.
@ -77,7 +77,7 @@
*/
#define PASSNAMES /* (undef to take name from ~/.fullname) */
#define BERKNAMES /* (that is, ":name,stuff:") */
#/*undef USGNAMES /* (that is, ":stuff-name(stuff):") */
#undef USGNAMES /* (that is, ":stuff-name(stuff):") */
/* PREFSHELL:
* This symbol contains the full name of the preferred user shell on this
@ -91,32 +91,6 @@
*/
#define RANDBITS 15 /**/
/* Reg1:
* This symbol, along with Reg2, Reg3, etc. is either the word "register"
* or null, depending on whether the C compiler pays attention to this
* many register declarations. The intent is that you don't have to
* order your register declarations in the order of importance, so you
* can freely declare register variables in sub-blocks of code and as
* function parameters. Do not use Reg<n> more than once per routine.
*/
#define Reg1 register /**/
#define Reg2 register /**/
#define Reg3 register /**/
#define Reg4 /**/
#define Reg5 /**/
#define Reg6 /**/
#define Reg7 /**/
#define Reg8 /**/
#define Reg9 /**/
#define Reg10 /**/
#define Reg11 /**/
#define Reg12 /**/
#define Reg13 /**/
#define Reg14 /**/
#define Reg15 /**/
#define Reg16 /**/
/* ROOTID:
* This symbol contains the uid of root, normally 0.
*/

View File

@ -38,9 +38,9 @@ cat <<!GROK!THIS! >config.h
#$d_eunice VMS /**/
/* CHARSPRINTF:
* This symbol is defined if this system declares "char *sprintf()" in
* stdio.h. The trend seems to be to declare it as "int sprintf()". It
* is up to the package author to declare sprintf correctly based on the
* This symbol is defined if this system declares "char *snprintf()" in
* stdio.h. The trend seems to be to declare it as "int snprintf()". It
* is up to the package author to declare snprintf correctly based on the
* symbol.
*/
#$d_charsprf CHARSPRINTF /**/
@ -219,15 +219,15 @@ cat <<!GROK!THIS! >config.h
* function parameters. Do not use Reg<n> more than once per routine.
*/
#define Reg1 $reg1 /**/
#define Reg2 $reg2 /**/
#define Reg3 $reg3 /**/
#define Reg4 $reg4 /**/
#define Reg5 $reg5 /**/
#define Reg6 $reg6 /**/
#define Reg7 $reg7 /**/
#define Reg8 $reg8 /**/
#define Reg9 $reg9 /**/
#define $reg1 /**/
#define $reg2 /**/
#define $reg3 /**/
#define $reg4 /**/
#define $reg5 /**/
#define $reg6 /**/
#define $reg7 /**/
#define $reg8 /**/
#define $reg9 /**/
#define Reg10 $reg10 /**/
#define Reg11 $reg11 /**/
#define Reg12 $reg12 /**/

View File

@ -34,33 +34,33 @@
#include "init.h"
void
initialize()
initialize(void)
{
Reg1 int i;
Reg2 int x;
Reg3 int y;
Reg4 int dist;
Reg5 int ydist;
Reg6 int xdist;
int i;
int x;
int y;
int dist;
int ydist = 0;
int xdist = 0;
long e;
int yoff, xoff, ypred, xpred;
Reg7 OBJECT *obj;
int yoff = 0, xoff = 0, ypred, xpred;
OBJECT *obj = NULL;
char ch;
FILE *mapfp = NULL;
bool tmptholspec;
int inhabjackpot;
long inhenergy;
int walksplit = 200;
static char *distname[] =
static const char *distname[] =
{" #"," -"," \\"," /",
" |"," *"," `"," '"};
cloaking = madgorns = FALSE;
cloaking = madgorns = false;
deados = madfriends = 0;
curscore = possiblescore = 0L;
yamblast = xamblast = ambsize = 0;
if (smarts > 90)
massacre = TRUE;
massacre = true;
scandist = (massacre?20:15);
antibase = (smarts>60?1:(smarts>40?2:(smarts>25?4:100)));
sm35 = (smarts>35?35:smarts);
@ -100,14 +100,15 @@ initialize()
yblasted[y] = 0;
for (x=0; x<XSIZE; x++)
xblasted[x] = 0;
blasted = FALSE;
if (!starspec)
blasted = false;
if (!starspec) {
if (smarts < 15)
inumstars = 50 + rand_mod(50);
else if (smarts < 50 || smarts > 85)
inumstars = exdis(800) + rand_mod(100) + 1;
else /* too few stars makes 50..85 too hard */
inumstars = exdis(700) + rand_mod(150-super*2) + 50+super*2;
}
tmptholspec = (smarts > 15 && inumstars < 450 && ! rand_mod(90-sm80));
if (!klingspec) {
inumenemies = rand_mod((smarts+1)/2) + 1;
@ -203,7 +204,7 @@ stars_again:
if (debugging)
printf(" P\r\n");
dist = 0;
Sprintf(spbuf,"smap.%d",
snprintf(spbuf, sizeof(spbuf), "smap.%d",
(prescene>=0?prescene:rand_mod(MAPS)) );
if ((mapfp = fopen(spbuf,"r")) != NULL &&
fgets(spbuf,10,mapfp) != NULL ) {
@ -216,7 +217,7 @@ stars_again:
xoff = rand_mod(XSIZE); /* how much to shift x */
}
else {
prespec = FALSE;
prespec = false;
prescene = -1;
if (rand_mod(2))
goto scenario_again;
@ -356,7 +357,7 @@ stars_again:
}
}
if (mapfp != NULL)
Fclose(mapfp);
fclose(mapfp);
if (numcrushes) {
do {
x = rand_mod(XSIZE);
@ -515,7 +516,7 @@ stars_again:
mvaddch(base->posy+1, base->posx*2, base->image);
sleep(2);
{
Reg7 OBJECT *curobj;
OBJECT *curobj;
for (curobj = root.next; curobj != &root; curobj = curobj->next) {
mvaddch(curobj->posy+1, curobj->posx*2, curobj->image);
@ -528,7 +529,7 @@ stars_again:
whenok = 0;
timer = 0;
finish = 0;
bombed_out = FALSE;
bombed_out = false;
if (ent)
entmode = status = 0;
else
@ -537,7 +538,7 @@ stars_again:
else
status = 3;
Sprintf(spbuf,
snprintf(spbuf, sizeof(spbuf),
"%-4s E: %4d %2d B: %5d %3d Enemies: %-3d Stars: %-3d Stardate%5d.%1d %9ld",
" ", 0, 0, 0, 0, 0, 0, smarts * 100, 0, 0L);
mvaddstr(0,0,spbuf);

View File

@ -6,4 +6,4 @@
*
*/
void initialize();
void initialize(void);

View File

@ -23,30 +23,26 @@
char *hostname;
#ifdef TILDENAME
static char *tildename = Nullch;
static char *tildedir = Nullch;
static char *tildename = NULL;
static char *tildedir = NULL;
#endif
char *dointerp();
char *getrealname();
static char *getrealname(uid_t);
#ifdef CONDSUB
char *skipinterp();
static char *skipinterp(const char *, const char *);
#endif
static void abort_interp();
static void abort_interp(void);
void
intrp_init(tcbuf)
char *tcbuf;
intrp_init(char *tcbuf)
{
char *getlogin();
/* get environmental stuff */
/* get home directory */
homedir = getenv("HOME");
if (homedir == Nullch)
if (homedir == NULL)
homedir = getenv("LOGDIR");
dotdir = getval("DOTDIR",homedir);
@ -54,10 +50,10 @@ char *tcbuf;
/* get login name */
logname = getenv("USER");
if (logname == Nullch)
if (logname == NULL)
logname = getenv("LOGNAME");
#ifdef GETLOGIN
if (logname == Nullch)
if (logname == NULL)
logname = savestr(getlogin());
#endif
@ -84,7 +80,7 @@ char *tcbuf;
if (scorespec) /* that getwd below takes ~1/3 sec. */
return; /* and we do not need it for -s */
(void) getwd(tcbuf); /* find working directory name */
(void) getcwd(tcbuf, sizeof(tcbuf));/* find working directory name */
origdir = savestr(tcbuf); /* and remember it */
}
@ -93,12 +89,11 @@ char *tcbuf;
/* Note that there is a 1-deep cache of ~name interpretation */
char *
filexp(s)
Reg1 char *s;
filexp(const char *s)
{
static char filename[CBUFLEN];
char scrbuf[CBUFLEN];
Reg2 char *d;
char *d;
#ifdef DEBUGGING
if (debug & DEB_FILEXP)
@ -112,7 +107,7 @@ Reg1 char *s;
s = filename;
if (*s == '~') { /* does destination start with ~? */
if (!*(++s) || *s == '/') {
Sprintf(scrbuf,"%s%s",homedir,s);
snprintf(scrbuf, sizeof(scrbuf), "%s%s",homedir,s);
/* swap $HOME for it */
#ifdef DEBUGGING
if (debug & DEB_FILEXP)
@ -122,7 +117,7 @@ Reg1 char *s;
}
else {
#ifdef TILDENAME
for (d=scrbuf; isalnum(*s); s++,d++)
for (d=scrbuf; isalnum((unsigned char)*s); s++,d++)
*d = *s;
*d = '\0';
if (tildedir && strEQ(tildename,scrbuf)) {
@ -139,13 +134,12 @@ Reg1 char *s;
free(tildename);
free(tildedir);
}
tildedir = Nullch;
tildedir = NULL;
tildename = savestr(scrbuf);
{
struct passwd *getpwnam();
struct passwd *pwd = getpwnam(tildename);
Sprintf(scrbuf,"%s%s",pwd->pw_dir,s);
snprintf(scrbuf, sizeof(scrbuf), "%s%s",pwd->pw_dir,s);
tildedir = savestr(pwd->pw_dir);
strcpy(filename,scrbuf);
endpwent();
@ -170,7 +164,7 @@ Reg1 char *s;
strcpy(d,s+2);
else {
*d++ = '{';
for (s++; isalnum(*s); s++) *d++ = *s;
for (s++; isalnum((unsigned char)*s); s++) *d++ = *s;
/* skip over token */
*d++ = '}';
strcpy(d,s);
@ -193,10 +187,8 @@ Reg1 char *s;
#ifdef CONDSUB
/* skip interpolations */
char *
skipinterp(pattern,stoppers)
Reg1 char *pattern;
char *stoppers;
static char *
skipinterp(const char *pattern, const char *stoppers)
{
while (*pattern && (!stoppers || !index(stoppers,*pattern))) {
@ -253,7 +245,7 @@ char *stoppers;
}
}
getout:
return pattern; /* where we left off */
return __UNCONST(pattern); /* where we left off */
}
#endif
@ -275,17 +267,13 @@ static char *mygets(char *str, size_t n)
/* interpret interpolations */
char *
dointerp(dest,destsize,pattern,stoppers)
Reg1 char *dest;
Reg2 int destsize;
Reg3 char *pattern;
char *stoppers;
dointerp(char *dest, size_t destsize, const char *pattern, const char *stoppers)
{
Reg4 char *s;
Reg5 int i;
char *s;
int i;
char scrbuf[512];
bool upper = FALSE;
bool lastcomp = FALSE;
bool upper = false;
bool lastcomp = false;
int metabit = 0;
while (*pattern && (!stoppers || !index(stoppers,*pattern))) {
@ -294,19 +282,19 @@ char *stoppers;
printf("dointerp till %s at %s\r\n",stoppers?stoppers:"",pattern);
#endif
if (*pattern == '%' && pattern[1]) {
upper = FALSE;
lastcomp = FALSE;
for (s=Nullch; !s; ) {
upper = false;
lastcomp = false;
for (s=NULL; !s; ) {
switch (*++pattern) {
case '^':
upper = TRUE;
upper = true;
break;
case '_':
lastcomp = TRUE;
lastcomp = true;
break;
case '{':
pattern = cpytill(scrbuf,pattern+1,'}');
if (s = index(scrbuf,'-'))
if ((s = index(scrbuf,'-')) != NULL)
*s++ = '\0';
else
s = nullstr;
@ -331,7 +319,7 @@ char *stoppers;
matched = strEQ(scrbuf+1,dest);
}
else
matched = instr(dest,scrbuf) != Nullch;
matched = instr(dest,scrbuf) != NULL;
if (matched==(rch == '=')) {
pattern = dointerp(dest,destsize,pattern+1,":)");
if (*pattern == ':')
@ -349,11 +337,11 @@ char *stoppers;
#endif
#ifdef BACKTICK
case '`': {
FILE *pipefp, *popen();
FILE *pipefp;
pattern = dointerp(scrbuf,(sizeof scrbuf),pattern+1,"`");
pipefp = popen(scrbuf,"r");
if (pipefp != Nullfp) {
if (pipefp != NULL) {
int len;
len = fread(scrbuf,sizeof(char),(sizeof scrbuf)-1,
@ -398,7 +386,7 @@ char *stoppers;
break;
case '$':
s = scrbuf;
Sprintf(s,"%d",getpid());
snprintf(scrbuf, sizeof(scrbuf), "%d",getpid());
break;
case 'H': /* host name */
s = hostname;
@ -433,15 +421,15 @@ char *stoppers;
char *t;
if (s != scrbuf) {
Safecpy(scrbuf,s,(sizeof scrbuf));
safecpy(scrbuf,s,(sizeof scrbuf));
s = scrbuf;
}
if (upper || !(t=rindex(s,'/')))
t = s;
while (*t && !isalpha(*t))
while (*t && !isalpha((unsigned char)*t)) {
t++;
if (islower(*t))
*t = toupper(*t);
*t = toupper((unsigned char)*t);
}
}
i = metabit; /* maybe get into register */
if (s == dest) {
@ -476,7 +464,7 @@ char *stoppers;
destsize++;
}
else
*dest++ = i & 037 | metabit;
*dest++ = (i & 037) | metabit;
pattern++;
}
else if (*pattern == '\\' && pattern[1]) {
@ -491,7 +479,7 @@ char *stoppers;
i <<= 3;
i += *pattern++ - '0';
}
*dest++ = i & 0377 | metabit;
*dest++ = (i & 0377) | metabit;
--pattern;
}
else if (i == 'b')
@ -514,16 +502,13 @@ char *stoppers;
}
*dest = '\0';
getout:
return pattern; /* where we left off */
return __UNCONST(pattern); /* where we left off */
}
void
interp(dest,destsize,pattern)
char *dest;
int destsize;
char *pattern;
interp(char *dest, size_t destsize, const char *pattern)
{
(void) dointerp(dest,destsize,pattern,Nullch);
(void) dointerp(dest,destsize,pattern,NULL);
#ifdef DEBUGGING
if (debug & DEB_FILEXP)
fputs(dest,stdout);
@ -533,9 +518,8 @@ char *pattern;
/* get the person's real name from /etc/passwd */
/* (string is overwritten, so it must be copied) */
char *
getrealname(uid)
int uid;
static char *
getrealname(uid_t uid)
{
char *s, *c;
@ -547,36 +531,36 @@ int uid;
#ifdef BERKJUNK
while (*s && !isalnum(*s) && *s != '&') s++;
#endif
if ((c = index(s, ',')) != Nullch)
if ((c = index(s, ',')) != NULL)
*c = '\0';
if ((c = index(s, ';')) != Nullch)
if ((c = index(s, ';')) != NULL)
*c = '\0';
s = cpytill(buf,s,'&');
if (*s == '&') { /* whoever thought this one up was */
c = buf + strlen(buf); /* in the middle of the night */
strcat(c,logname); /* before the morning after */
strcat(c,s+1);
if (islower(*c))
*c = toupper(*c); /* gack and double gack */
if (islower((unsigned char)*c))
*c = toupper((unsigned char)*c); /* gack and double gack */
}
#else
if ((c = index(s, '(')) != Nullch)
if ((c = index(s, '(')) != NULL)
*c = '\0';
if ((c = index(s, '-')) != Nullch)
if ((c = index(s, '-')) != NULL)
s = c;
strcpy(buf,tmpbuf);
#endif
endpwent();
return buf; /* return something static */
#else
if ((tmpfp=fopen(filexp(FULLNAMEFILE),"r")) != Nullfp) {
Fgets(buf,sizeof buf,tmpfp);
Fclose(tmpfp);
if ((tmpfp=fopen(filexp(FULLNAMEFILE),"r")) != NULL) {
fgets(buf,sizeof buf,tmpfp);
fclose(tmpfp);
}
else {
resetty();
printf("What is your name? ");
Fgets(buf,(sizeof buf),stdin);
fgets(buf,(sizeof buf),stdin);
crmode();
raw();
noecho();
@ -588,7 +572,7 @@ int uid;
if ((tmpfp = fopen(filexp(FULLNAMEFILE),"w")) == NULL)
exit(1);
fprintf(tmpfp, "%s\n", buf);
Fclose(tmpfp);
fclose(tmpfp);
exit(0);
}
}
@ -598,7 +582,7 @@ int uid;
}
static void
abort_interp()
abort_interp(void)
{
fputs("\r\n% interp buffer overflow!\r\n",stdout);
sig_catcher(0);

View File

@ -9,15 +9,14 @@
*
*/
EXT char *origdir INIT(Nullch); /* cwd when warp invoked */
EXT char *homedir INIT(Nullch); /* login directory */
EXT char *dotdir INIT(Nullch); /* where . files go */
EXT char *logname INIT(Nullch); /* login id */
EXT char *origdir INIT(NULL); /* cwd when warp invoked */
EXT char *homedir INIT(NULL); /* login directory */
EXT char *dotdir INIT(NULL); /* where . files go */
EXT char *logname INIT(NULL); /* login id */
EXT char *hostname; /* host name */
EXT char *realname INIT(Nullch); /* real name from /etc/passwd */
EXT char *realname INIT(NULL); /* real name from /etc/passwd */
void intrp_init();
char *filexp();
char *dointerp();
void interp();
char *getrealname();
void intrp_init(char *);
char *filexp(const char *);
void interp(char *, size_t, const char *);
char *dointerp(char *, size_t, const char *, const char *);

View File

@ -28,18 +28,17 @@
#include "move.h"
void
move_init()
move_init(void)
{
;
}
void
bounce(obj)
Reg4 OBJECT *obj;
bounce(OBJECT *obj)
{
Reg1 int x;
Reg2 int y;
Reg3 int count=0;
int x;
int y;
int count=0;
y = (obj->posy - sgn(obj->vely) + YSIZE00) % YSIZE;
x = (obj->posx - sgn(obj->velx) + XSIZE00) % XSIZE;
@ -66,12 +65,12 @@ Reg4 OBJECT *obj;
}
void
move_universe()
move_universe(void)
{
Reg1 OBJECT *curobj;
Reg2 int x;
Reg3 int y;
Reg4 OBJECT *temp;
OBJECT *curobj;
int x;
int y;
OBJECT *temp;
OBJECT *thenext;
for (curobj = movers; curobj != &root; curobj = curobj->next) {
@ -128,7 +127,7 @@ move_universe()
movers->prev = curobj;
}
}
if (temp = occupant[y][x]) { /* already occupied? */
if ((temp = occupant[y][x]) != NULL) { /* already occupied? */
if (!temp->contend) {
if (temp->type == Torp) {
if (temp->image == '+')
@ -141,7 +140,7 @@ move_universe()
}
yblasted[y] |= 1;
xblasted[x] |= 1;
blasted = TRUE;
blasted = true;
curobj->contend = temp;
occupant[y][x] = curobj;
switch (curobj->type) {
@ -199,14 +198,14 @@ move_universe()
blast[y][x] += 100000;
yblasted[y] |= 1;
xblasted[x] |= 1;
blasted = TRUE;
blasted = true;
}
}
}
if (blasted) {
Reg7 int minxblast = -1;
Reg8 int maxxblast = -2;
Reg5 long tmpblast;
int minxblast = -1;
int maxxblast = -2;
long tmpblast;
blasted = numamoebas;
for (x=0; x<XSIZE; x++) {
@ -223,7 +222,7 @@ move_universe()
for (x=minxblast; x<=maxxblast; x++) {
tmpblast = blast[y][x];
if (numamoebas && amb[y][x] == '~') {
if (temp = occupant[y][x]) {
if ((temp = occupant[y][x]) != NULL) {
if (temp->image == '&')
tmpblast >>= 1;
else if (temp->type == Web)
@ -237,7 +236,7 @@ move_universe()
yblasted[y] = 2;
}
if (tmpblast) {
Reg6 OBJECT *biggie = 0;
OBJECT *biggie = 0;
blast[y][x] = 0;
temp = occupant[y][x];
@ -457,13 +456,13 @@ move_universe()
numinhab--;
/* FALL THROUGH */
case '*':
banging = TRUE;
banging = true;
numstars--;
break;
case '|': case '-': case '/': case '\\':
tmpblast = 100000;
make_blast(y,x,curobj->mass,1);
banging = TRUE;
banging = true;
deados = 0;
break;
case 'x':
@ -547,7 +546,7 @@ move_universe()
do_bangs();
if (numcrushes && movers->type == Crusher)
movers->vely = 0;
if (curobj = base) {
if ((curobj = base) != NULL) {
char ch;
curobj->velx = 0;
@ -563,7 +562,7 @@ move_universe()
setimage(curobj, ch);
}
}
if (curobj = ent) {
if ((curobj = ent) != NULL) {
char ch;
if (entmode == 0) {
@ -606,15 +605,12 @@ move_universe()
}
int
lookaround(y, x, what)
Reg1 int y;
Reg2 int x;
Reg4 char what;
lookaround(int y, int x, char what)
{
Reg3 OBJECT *obj;
Reg5 int count=0;
Reg6 int xp;
Reg7 int xm;
OBJECT *obj;
int count=0;
int xp;
int xm;
if ((obj=occupant[y][xp=(x+XSIZE01)%XSIZE])&&obj->type == what) /* 0, 1 */
count++;
@ -636,45 +632,39 @@ Reg4 char what;
}
int
lookfor(y, x, what)
Reg1 int y;
Reg2 int x;
Reg4 char what;
lookfor(int y, int x, char what)
{
Reg3 OBJECT *obj;
Reg5 int xp;
Reg6 int xm;
OBJECT *obj;
int xp;
int xm;
if ((obj=occupant[y][xp=(x+XSIZE01)%XSIZE])&&obj->type == what ||/* 0, 1 */
(obj=occupant[y][xm=(x+XSIZE99)%XSIZE])&&obj->type == what ||/* 0, -1 */
(obj=occupant[y=(y+YSIZE99)%YSIZE][xp])&&obj->type == what ||/* -1, 1 */
(obj=occupant[y][x])&&obj->type == what ||/* -1, 0 */
(obj=occupant[y][xm])&&obj->type == what ||/* -1,-1 */
(obj=occupant[y=(y+2)%YSIZE][xp])&&obj->type == what ||/* 1, 1 */
(obj=occupant[y][x])&&obj->type == what ||/* 1, 0 */
(obj=occupant[y][xm])&&obj->type == what) /* 1, -1 */
if (((obj=occupant[y][xp=(x+XSIZE01)%XSIZE])&&obj->type == what)||/* 0, 1 */
((obj=occupant[y][xm=(x+XSIZE99)%XSIZE])&&obj->type == what)||/* 0, -1 */
((obj=occupant[y=(y+YSIZE99)%YSIZE][xp])&&obj->type == what)||/* -1, 1 */
((obj=occupant[y][x])&&obj->type == what) ||/* -1, 0 */
((obj=occupant[y][xm])&&obj->type == what) ||/* -1,-1 */
((obj=occupant[y=(y+2)%YSIZE][xp])&&obj->type == what) ||/* 1, 1 */
((obj=occupant[y][x])&&obj->type == what) ||/* 1, 0 */
((obj=occupant[y][xm])&&obj->type == what)) /* 1, -1 */
return(1);
return (0);
}
OBJECT*
lookimg(y, x, what)
Reg1 int y;
Reg2 int x;
Reg4 char what;
lookimg(int y, int x, char what)
{
Reg3 OBJECT *obj;
Reg5 int xp;
Reg6 int xm;
OBJECT *obj;
int xp;
int xm;
if ((obj=occupant[y][xp=(x+XSIZE01)%XSIZE])&&obj->image==what ||/* 0, 1 */
(obj=occupant[y][xm=(x+XSIZE99)%XSIZE])&&obj->image==what ||/* 0, -1 */
(obj=occupant[y=(y+YSIZE99)%YSIZE][xp])&&obj->image==what ||/* -1, 1 */
(obj=occupant[y][x])&&obj->image==what ||/* -1, 0 */
(obj=occupant[y][xm])&&obj->image==what ||/* -1,-1 */
(obj=occupant[y=(y+2)%YSIZE][xp])&&obj->image==what ||/* 1, 1 */
(obj=occupant[y][x])&&obj->image==what ||/* 1, 0 */
(obj=occupant[y][xm])&&obj->image==what) /* 1, -1 */
if (((obj=occupant[y][xp=(x+XSIZE01)%XSIZE])&&obj->image==what)||/* 0, 1 */
((obj=occupant[y][xm=(x+XSIZE99)%XSIZE])&&obj->image==what)||/* 0, -1 */
((obj=occupant[y=(y+YSIZE99)%YSIZE][xp])&&obj->image==what)||/* -1, 1 */
((obj=occupant[y][x])&&obj->image==what) ||/* -1, 0 */
((obj=occupant[y][xm])&&obj->image==what) ||/* -1,-1 */
((obj=occupant[y=(y+2)%YSIZE][xp])&&obj->image==what) ||/* 1, 1 */
((obj=occupant[y][x])&&obj->image==what) ||/* 1, 0 */
((obj=occupant[y][xm])&&obj->image==what)) /* 1, -1 */
return obj;
return Null(OBJECT*);
return NULL;
}

View File

@ -6,9 +6,10 @@
*
*/
void bounce();
void move_universe();
int lookaround();
int lookfor();
OBJECT *lookimg();
void move_init();
void move_init(void);
void bounce(OBJECT *);
void move_universe(void);
int lookaround(int, int, char);
int lookfor(int, int, char);
OBJECT *lookimg(int, int, char);

View File

@ -12,20 +12,16 @@
#include "object.h"
void
object_init()
object_init(void)
{
;
}
OBJECT *
make_object(typ, img, py, px, vy, vx, energ, mas, where)
char typ;
char img;
int px, py, vx, vy;
long energ, mas;
OBJECT *where;
make_object(char typ, char img, int px, int py, int vx, int vy, long energ,
long mas, OBJECT *where)
{
Reg1 OBJECT *obj;
OBJECT *obj;
if (free_root.next == &free_root)
#ifndef lint
@ -60,8 +56,7 @@ OBJECT *where;
}
void
unmake_object(curobj)
Reg1 OBJECT *curobj;
unmake_object(OBJECT *curobj)
{
curobj->prev->next = curobj->next;
curobj->next->prev = curobj->prev;
@ -72,8 +67,7 @@ Reg1 OBJECT *curobj;
}
void
free_object(curobj)
Reg1 OBJECT *curobj;
free_object(OBJECT *curobj)
{
curobj->next = free_root.next;
curobj->prev = &free_root;

View File

@ -22,12 +22,8 @@
#define Crusher 7
typedef struct object {
char posx, posy;
#ifdef SIGNEDCHAR
char velx, vely;
#else
short posx, posy;
short velx, vely;
#endif
struct object *next, *prev, *contend;
long energy;
long mass;
@ -64,8 +60,7 @@ EXT OBJECT *nuke;
EXT OBJECT *occupant[YSIZE][XSIZE];
OBJECT *make_object();
void unmake_object();
void free_object();
void object_init();
void object_init(void);
OBJECT *make_object(char, char, int, int, int, int, long, long, OBJECT *);
void unmake_object(OBJECT *);
void free_object(OBJECT *);

View File

@ -24,20 +24,20 @@
#include "play.h"
void
play_init()
play_init(void)
{
;
}
void
play()
play(void)
{
bool done = FALSE;
Reg1 OBJECT *curobj;
Reg2 OBJECT *to;
Reg3 int i;
Reg4 int x;
Reg5 int y;
bool done = false;
OBJECT *curobj;
OBJECT *to;
int i;
int x;
int y;
display_status();
#ifdef TIOCOUTQ
@ -48,7 +48,7 @@ play()
do {
timer++;
nxtbang = 0;
banging = FALSE;
banging = false;
display_status();
#ifdef TIOCOUTQ
while (output_pending() > charsperhalfsec)
@ -69,7 +69,7 @@ play()
ent->energy -= ent->energy/40;
}
else
cloaking = FALSE;
cloaking = false;
cloaked = cloaking;
}
if (base) {
@ -138,6 +138,8 @@ play()
possiblescore += 5000;
}
if (apolloflag & 2) {
/*###141 [cc] warning: array subscript has type 'char' [-Wchar-subscripts]%%%*/
/*###141 [cc] warning: array subscript has type 'char' [-Wchar-subscripts]%%%*/
if (blast[realapollo->posy][realapollo->posx] <= 32000)
bvely = bvelx = 0;
realapollo->energy = 32000;
@ -152,7 +154,7 @@ play()
if (aretorps) {
aretorps = 0;
for (i=0;i<2;i++) for (y=0;y<3;y++) for (x=0;x<3;x++) {
if (curobj = isatorp[i][y][x]) {
if ((curobj = isatorp[i][y][x]) != NULL) {
to = occupant[(curobj->posy+curobj->vely+YSIZE00)%YSIZE]
[(curobj->posx+curobj->velx+XSIZE00)%XSIZE];
if (to && !to->vely && !to->velx) {
@ -170,7 +172,7 @@ play()
if (finish) {
finish--;
if (!finish && (!(numenemies || numos) || (!ent && !base))) {
done = TRUE;
done = true;
timer -= 5;
}
}

View File

@ -9,5 +9,5 @@
EXT int finish INIT(0);
EXT int timer;
void play();
void play_init();
void play_init(void);
void play(void);

View File

@ -29,10 +29,10 @@
#include "score.h"
void
score_init()
score_init(void)
{
Reg1 char *s;
Reg2 int i;
char *s;
int i;
FILE *savfil;
#if 0
@ -65,7 +65,7 @@ score_init()
if (scorespec)
wscore();
Sprintf(savefilename, "save.%s", logname);
snprintf(savefilename, sizeof(savefilename), "save.%s", logname);
savfil = experimenting ? NULL : fopen(savefilename,"r");
if (savfil != NULL && fgets(spbuf,100,savfil) != NULL) {
@ -89,7 +89,7 @@ That process does not seem to exist anymore, so you'll have to start the\r\n");
"last wave over.\r\n\n");
printf(
" [type anything to continue]");
Fflush(stdout);
fflush(stdout);
eat_typeahead();
getcmd(tmpbuf);
if (*tmpbuf == INTRCH)
@ -109,7 +109,7 @@ That process does not seem to exist anymore, so you'll have to start the\r\n");
}
printf(" 2) Let me terminate the other game\r\n\n");
printf("What do you want to do? ");
Fflush(stdout);
fflush(stdout);
eat_typeahead();
getcmd(tmpbuf);
printf("\r\n");
@ -122,7 +122,7 @@ That process does not seem to exist anymore, so you'll have to start the\r\n");
}
printf(
"Ok, hang on a few moments \r\n");
Fclose(savfil);
fclose(savfil);
if (kill(processnum, SIGQUIT)) {
printf("Unable to kill process #%d!\r\n",processnum);
roundsleep(2);
@ -138,11 +138,11 @@ That process does not seem to exist anymore, so you'll have to start the\r\n");
/* (warp ignores SIGINT) */
break;
}
didkill++;
didkill = true;
}
savfil = fopen(savefilename,"r");
if (savfil != NULL) {
Fgets(spbuf,100,savfil);
fgets(spbuf,100,savfil);
}
}
}
@ -170,35 +170,35 @@ That process does not seem to exist anymore, so you'll have to start the\r\n");
tholspec = (spbuf[46] == 't');
lowspeed = (spbuf[47] == 'l') || lowspeed;
amoebaspec = (spbuf[48] == '&');
Fclose(savfil);
fclose(savfil);
}
if (!ismarts) {
ismarts = 1;
clear();
page(NEWSFILE,FALSE);
page(NEWSFILE,false);
if (smarts) {
printf("\r\nSaved game: SCORE DIFF CUMDIFF ENTERPRISES BASES WAVE");
printf("\r\n %7ld %2d %4d %1d %1d %3d",
totalscore,smarts,cumsmarts,numents,numbases,wave);
}
printf("\r\nWould you like instructions? ");
Fflush(stdout);
fflush(stdout);
eat_typeahead();
getcmd(buf);
printf("\r\n");
if (*buf == INTRCH)
finalize(0);
if (*buf == 'Y' || *buf == 'y') {
page(HELPFILE,FALSE);
page(HELPFILE,false);
printf("\r\nWould you like to play easy games for a while? ");
Fflush(stdout);
fflush(stdout);
eat_typeahead();
getcmd(buf);
printf("\r\n");
if (*buf == 'Y' || *buf == 'y') {
beginner = TRUE;
lowspeed = TRUE;
beginner = true;
lowspeed = true;
}
}
}
@ -207,32 +207,32 @@ That process does not seem to exist anymore, so you'll have to start the\r\n");
}
void
wscore()
wscore(void)
{
clear();
printf(" TOP WARPISTS\r\n\n");
printf("RANK WHO AKA SCORE DIFF CUMDIFF WHEN\r\n");
page(SCOREBOARD,TRUE);
page(SCOREBOARD,true);
printf(" [Type anything to continue]");
Fflush(stdout);
fflush(stdout);
getcmd(spbuf);
if (*spbuf == INTRCH)
finalize(0);
clear();
printf(" TOP LOW-SPEED WARPISTS\r\n\n");
printf("RANK WHO AKA SCORE DIFF CUMDIFF WHEN\r\n");
page(LSCOREBOARD,TRUE);
page(LSCOREBOARD,true);
printf(" [Type anything to continue]");
Fflush(stdout);
fflush(stdout);
getcmd(spbuf);
if (*spbuf == INTRCH)
finalize(0);
clear();
printf(" TOP FUNNY WARPISTS\r\n\n");
printf("RANK WHO AKA SCORE DIFF CUMDIFF WHEN\r\n");
page(FSCOREBOARD,TRUE);
page(FSCOREBOARD,true);
printf(" [Type anything to continue]");
Fflush(stdout);
fflush(stdout);
getcmd(spbuf);
if (*spbuf == INTRCH)
finalize(0);
@ -240,33 +240,33 @@ wscore()
printf(" GAMES SAVED OR IN PROGRESS\r\n\n");
printf("WHO SCORE DF CDF E B WV FLAGS\r\n");
resetty();
Sprintf(spbuf,"/bin/cat %ssave.*",SAVEDIR);
snprintf(spbuf, sizeof(spbuf), "/bin/cat %ssave.*",SAVEDIR);
#ifndef lint
execl("/bin/sh", "sh", "-c", spbuf, 0);
execl("/bin/sh", "sh", "-c", spbuf, NULL);
#endif
finalize(1);
}
void
display_status()
display_status(void)
{
Reg1 int tmp;
static char *status_names[] = {"Impl", "Warp", "Base", "****" };
int tmp;
static const char *status_names[] = {"Impl", "Warp", "Base", "****" };
if (oldstatus != status) {
Sprintf(spbuf,"%-4s",status_names[status]);
snprintf(spbuf, sizeof(spbuf), "%-4s",status_names[status]);
mvaddstr(0,0, spbuf);
oldstatus = status;
}
if (ent) {
if (ent->energy != oldeenergy) {
oldeenergy = ent->energy;
Sprintf(spbuf,"%4ld",oldeenergy);
snprintf(spbuf, sizeof(spbuf), "%4ld",oldeenergy);
mvaddstr(0,8, spbuf);
}
if (etorp != oldetorp) {
Sprintf(spbuf,"%2d",etorp);
snprintf(spbuf, sizeof(spbuf), "%2d",etorp);
mvaddstr(0,13, spbuf);
oldetorp = etorp;
}
@ -281,11 +281,11 @@ display_status()
if (base) {
if (base->energy != oldbenergy) {
oldbenergy = base->energy;
Sprintf(spbuf,"%5ld",oldbenergy);
snprintf(spbuf, sizeof(spbuf), "%5ld",oldbenergy);
mvaddstr(0,19, spbuf);
}
if (btorp != oldbtorp) {
Sprintf(spbuf,"%3d",btorp);
snprintf(spbuf, sizeof(spbuf), "%3d",btorp);
mvaddstr(0,25, spbuf);
oldbtorp = btorp;
}
@ -308,7 +308,7 @@ display_status()
if (!--damflag[dam]) {
olddamage = damage;
damage--;
Sprintf(spbuf,"%s OK *** ",dammess[dam]);
snprintf(spbuf, sizeof(spbuf), "%s OK *** ",dammess[dam]);
spbuf[15] = '\0';
mvaddstr(0,46,spbuf);
}
@ -317,13 +317,13 @@ display_status()
tmp = (34 - damflag[dam]) * 3 - rand_mod(3);
if (tmp < 0)
tmp = 0;
Sprintf(spbuf,"%d%% %s *** ",tmp,dammess[dam]);
snprintf(spbuf, sizeof(spbuf), "%d%% %s *** ",tmp,dammess[dam]);
spbuf[15] = '\0';
mvaddstr(0,46,spbuf);
}
else if (dam != lastdam || !olddamage) {
olddamage = damage;
Sprintf(spbuf,"NO %s *** ",dammess[dam]);
snprintf(spbuf, sizeof(spbuf), "NO %s *** ",dammess[dam]);
spbuf[15] = '\0';
mvaddstr(0,46,spbuf);
}
@ -334,56 +334,52 @@ display_status()
status = entmode = 0;
}
tmp = damflag[dam] * damage;
Sprintf(spbuf,"%3d.%1d ETR",tmp/10,tmp%10);
snprintf(spbuf, sizeof(spbuf), "%3d.%1d ETR",tmp/10,tmp%10);
mvaddstr(0,69,spbuf);
lastdam = dam;
}
else {
if (olddamage) {
Sprintf(spbuf,"Stars: %-3d Stardate",numstars);
snprintf(spbuf, sizeof(spbuf), "Stars: %-3d Stardate",numstars);
mvaddstr(0,42,spbuf);
lastdam = -1;
olddamage = 0;
oldcurscore = -1;
}
else if (numstars != oldstrs) {
Sprintf(spbuf,"%-3d",numstars);
snprintf(spbuf, sizeof(spbuf), "%-3d",numstars);
mvaddstr(0,49, spbuf);
}
oldstrs = numstars;
}
if (numenemies != oldenemies) {
Sprintf(spbuf,"%-3d",numenemies);
snprintf(spbuf, sizeof(spbuf), "%-3d",numenemies);
mvaddstr(0,38, spbuf);
oldenemies = numenemies;
}
if (tmp = timer%10) {
Sprintf(spbuf,"%1d",tmp);
if ((tmp = timer%10) != 0) {
snprintf(spbuf, sizeof(spbuf), "%1d",tmp);
mvaddstr(0,67, spbuf);
}
else {
Sprintf(spbuf,"%5d.%1d",timer/10+smarts*100,tmp);
snprintf(spbuf, sizeof(spbuf), "%5d.%1d",timer/10+smarts*100,tmp);
mvaddstr(0,61, spbuf);
}
if ((!damage || !damflag[dam]) && curscore != oldcurscore) {
Sprintf(spbuf,"%9ld",curscore);
snprintf(spbuf, sizeof(spbuf), "%9ld",curscore);
mvaddstr(0,69, spbuf);
oldcurscore = curscore;
}
}
void
wavescore()
wavescore(void)
{
double power, effectscore, starscore, pi_over_2;
long bonuses;
long tmp;
FILE *mapfp;
int row;
double pow();
#ifndef lint
double atan2();
#endif
clear();
if (curscore > possiblescore)
@ -402,99 +398,95 @@ wavescore()
power += (350.0 - (double)inumstars) * ((double)inumenemies - 5.0);
if (inumstars > 850 && inumenemies > 2)
power += ((double)inumstars - 850.0) * ((double)inumenemies - 2.0);
#ifndef lint
effectscore = ((double)curscore / possiblescore) *
atan2(power, (double) timer + 1.0) / pi_over_2;
#else
effectscore = pi_over_2;
#endif
if (inumstars)
starscore = (double) numstars / (double) inumstars;
else
starscore = 1.0;
wave++;
Sprintf(spbuf,"Wave = %d, Difficulty = %d, cumulative difficulty = %d",
snprintf(spbuf, sizeof(spbuf), "Wave = %d, Difficulty = %d, cumulative difficulty = %d",
wave, smarts, cumsmarts);
mvaddstr(1, 13+(smarts<10), spbuf);
mvaddstr( 4, 68, " BONUS");
Sprintf(spbuf,"Efficiency rating: %1.8f (diff=%0.2f,time=%d)",
snprintf(spbuf, sizeof(spbuf), "Efficiency rating: %1.8f (diff=%0.2f,time=%d)",
effectscore, power, timer + 1);
mvaddstr( 5,5, spbuf);
if (effectscore < 0.8)
bonuses = tmp = 0;
else
bonuses = tmp = (long) ((effectscore-0.8) * smarts * 1000);
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr( 5, 68, spbuf);
Sprintf(spbuf,"Star save ratio: %1.8f (%d/%d)",
snprintf(spbuf, sizeof(spbuf), "Star save ratio: %1.8f (%d/%d)",
starscore, numstars, inumstars);
mvaddstr( 6,5, spbuf);
#ifndef lint
bonuses += tmp = (long) (((double)curscore / possiblescore) *
(starscore*starscore) * smarts * 20);
#endif
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr( 6, 68, spbuf);
row = 7;
if (inuminhab != numinhab) {
Sprintf(spbuf, "Inhabited stars depopulated: %5d", inuminhab-numinhab);
snprintf(spbuf, sizeof(spbuf), "Inhabited stars depopulated: %5d", inuminhab-numinhab);
mvaddstr(row,5, spbuf);
bonuses += tmp = (long) (inuminhab-numinhab) * -500;
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr(row, 68, spbuf);
row++;
}
if (inumfriends != numfriends) {
Sprintf(spbuf, "Friendly craft destroyed: %5d",
snprintf(spbuf, sizeof(spbuf), "Friendly craft destroyed: %5d",
inumfriends-numfriends);
mvaddstr(row,5, spbuf);
bonuses += tmp = (long) (inumfriends-numfriends) * -250;
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr(row, 68, spbuf);
row++;
}
if (deadmudds) {
mvaddstr(row,5,"For destroying Harry Mudd:");
bonuses += tmp = (long) rand_mod(deadmudds * 20 + 1) - deadmudds*10;
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr(row, 68, spbuf);
row++;
}
if (bombed_out) {
mvaddstr(row,5, "For running away from reality:");
bonuses += tmp = (long) -possiblescore/2;
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr(row, 68, spbuf);
row++;
}
if (row < 9)
row++;
Sprintf(spbuf, "Enterprise: %-9s%5d remaining",
snprintf(spbuf, sizeof(spbuf), "Enterprise: %-9s%5d remaining",
!ient?"":ent?"saved":"destroyed", numents);
mvaddstr(row,5, spbuf);
bonuses += tmp = ent && !bombed_out ? (smarts+1)*15 : 0;
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr(row, 68, spbuf);
row++;
Sprintf(spbuf, "Base: %-9s %5d remaining",
snprintf(spbuf, sizeof(spbuf), "Base: %-9s %5d remaining",
!ibase?"":base?"saved":"destroyed", numbases);
mvaddstr(row,5, spbuf);
bonuses += tmp = base && !bombed_out ? (smarts+1)*10 : 0;
Sprintf(spbuf, "%6ld", tmp);
snprintf(spbuf, sizeof(spbuf), "%6ld", tmp);
mvaddstr(row, 68, spbuf);
if (beginner) {
mvaddstr(13+(row>11),19, "(Special games count only a tenth as much)");
curscore /= 10;
bonuses /= 10;
}
Sprintf(spbuf, "Previous point total:%10ld",lastscore);
snprintf(spbuf, sizeof(spbuf), "Previous point total:%10ld",lastscore);
mvaddstr(15,24, spbuf);
Sprintf(spbuf, "Points this round: %10ld",curscore);
snprintf(spbuf, sizeof(spbuf), "Points this round: %10ld",curscore);
mvaddstr(16,24, spbuf);
Sprintf(spbuf, "Bonuses: %10ld",bonuses);
snprintf(spbuf, sizeof(spbuf), "Bonuses: %10ld",bonuses);
mvaddstr(17,24, spbuf);
totalscore = lastscore + curscore + bonuses;
Sprintf(spbuf, "New point total: %10ld",totalscore);
snprintf(spbuf, sizeof(spbuf), "New point total: %10ld",totalscore);
mvaddstr(18,24, spbuf);
if (lastscore / ENTBOUNDARY < totalscore / ENTBOUNDARY) {
mvaddstr(row-1,42,"+ 1 new");
@ -515,9 +507,9 @@ wavescore()
numbases--;
}
if (starscore < 0.8 && inumstars > 200 && numstars > 50) {
Sprintf(spbuf, "smap.%d",rand_mod(MAPS-PERMMAPS)+PERMMAPS);
if ((mapfp = fopen(spbuf,"w")) != NULL) {
Reg1 OBJECT *obj;
snprintf(spbuf, sizeof(spbuf), "smap.%d",rand_mod(MAPS-PERMMAPS)+PERMMAPS);
if ((mapfp = fopen(spbuf, "w")) != NULL) {
OBJECT *obj;
fprintf(mapfp,"%d\n",numstars);
for (obj = root.next; obj != &root; obj = obj->next) {
@ -525,20 +517,20 @@ wavescore()
fprintf(mapfp,"%d %d\n",obj->posy,obj->posx);
}
}
Fclose(mapfp);
fclose(mapfp);
}
}
}
void
score()
score(void)
{
char tmp, *retval, cdate[30];
Reg1 FILE *logfd;
Reg2 FILE *outfd;
Reg3 int i;
FILE *logfd;
FILE *outfd;
int i;
time_t nowtime;
char *scoreboard;
const char *scoreboard;
for (i=0; link(LOGFILE, LOCKFILE) == -1 && i<10; i++)
sleep(1);
@ -548,7 +540,7 @@ score()
fprintf(logfd,
"%-24s%-9s%7ld%c%2d %4d %s",
realname, logname, totalscore, c,smarts, cumsmarts, cdate);
Fclose(logfd);
fclose(logfd);
}
strcpy(cdate+11,cdate+20);
if (beginner)
@ -559,7 +551,7 @@ score()
scoreboard = SCOREBOARD;
if (eaccess(scoreboard,0)) {
if ((logfd = fopen(scoreboard,"w")) != NULL)
Fclose(logfd);
fclose(logfd);
}
if ((logfd = fopen(scoreboard,"r")) != NULL &&
(outfd = fopen(TMPSCOREBOARD,"w")) != NULL) {
@ -576,14 +568,14 @@ score()
}
if (i == 100) {
mvaddstr(20,21, "You did not better your previous score");
Fclose(outfd);
fclose(outfd);
unlink(TMPSCOREBOARD);
}
else if (i < 20) {
fprintf(outfd, "%-24s%-8s%8ld%c %2d %4d %s",
realname, logname, totalscore, c,smarts, cumsmarts, cdate);
i++;
Sprintf(spbuf, " Congratulations--you've placed %d%s",
snprintf(spbuf, sizeof(spbuf), " Congratulations--you've placed %d%s",
i, i==1?"st":(i==2?"nd":(i==3?"rd":"th")));
if (retval != NULL) {
if (strnNE(buf+COMPOFF,COMPNAME,COMPLEN)) {
@ -591,7 +583,7 @@ score()
i++;
}
else
strcpy(spbuf,"Congratulations--you've bettered your score");
strcpy(spbuf, "Congratulations--you've bettered your score");
while (i<20) {
if (fgets(buf, 100, logfd) == NULL)
break;
@ -602,8 +594,8 @@ score()
}
}
mvaddstr(20,19, spbuf);
Fclose(logfd);
Fclose(outfd);
fclose(logfd);
fclose(outfd);
while (unlink(scoreboard) == 0)
;
link(TMPSCOREBOARD,scoreboard);
@ -612,11 +604,11 @@ score()
}
else {
mvaddstr(20,22,"You did not place within the top 20");
Fclose(outfd);
fclose(outfd);
}
}
else {
Sprintf(spbuf,"(Cannot access %s file, error %d)",
snprintf(spbuf, sizeof(spbuf), "(Cannot access %s file, error %d)",
(logfd==NULL?"log":"tmp"),errno);
mvaddstr(20,22,spbuf);
}
@ -625,7 +617,7 @@ score()
mvaddstr(23,11,
"[Hit space for scoreboard, 'r' for new game, 'q' to quit]");
unlink(LOCKFILE);
Fflush(stdout);
fflush(stdout);
eat_typeahead();
do {
getcmd(&tmp);
@ -633,7 +625,7 @@ score()
if (index("qQr",tmp)) {
justonemoretime = (tmp == 'r');
if (logfd != NULL)
Fclose(logfd);
fclose(logfd);
}
else {
clear();
@ -650,10 +642,10 @@ score()
if (fgets(buf, 100, logfd) == NULL)
break;
buf[strlen(buf)-1] = '\0';
Sprintf(spbuf, " %2d %s", i, buf);
snprintf(spbuf, sizeof(spbuf), " %2d %s", i, buf);
mvaddstr(i+2,0, spbuf);
}
Fclose(logfd);
fclose(logfd);
}
roundsleep(1);
mvaddstr(23,25,"Would you like to play again?");
@ -662,24 +654,24 @@ score()
getcmd(&tmp);
} while (tmp != INTRCH && tmp != BREAKCH && !index("nNyY \n\r",tmp));
if (tmp == 'n' || tmp == 'N' || tmp == INTRCH || tmp == BREAKCH)
justonemoretime = FALSE;
justonemoretime = false;
}
smarts = ismarts;
totalscore = cumsmarts = wave = 0;
numents = 5;
numbases = 3;
apolspec = FALSE;
beginner = FALSE;
crushspec = FALSE;
gornspec = FALSE;
apolspec = false;
beginner = false;
crushspec = false;
gornspec = false;
massacre = (ismarts >= 40);
romspec = FALSE;
tholspec = FALSE;
romspec = false;
tholspec = false;
}
void
save_game()
save_game(void)
{
FILE *savfil;
@ -690,7 +682,7 @@ save_game()
printf("Cannot save game\r\n");
finalize(1);
}
fprintf(savfil, "%-8s %10ld, %2d,%5d,%2d,%2d,%3d %c%c%c%c%c%c%c%c\n",
fprintf(savfil, "%-8s %10ld, %2d,%5d,%2d,%2d,%3d %c%c%c%c%c%c%c%c%c\n",
logname, totalscore, smarts, cumsmarts, numents, numbases, wave,
apolspec ? 'a' : ' ',
beginner ? 'b' : ' ',
@ -702,7 +694,7 @@ save_game()
lowspeed ? 'l' : ' ',
amoebaspec ? '&' : ' '
);
Fclose(savfil);
fclose(savfil);
resetty();
if (panic)
finalize(0);

View File

@ -41,9 +41,9 @@ EXT char longlognam[128];
EXT char c INIT(' ');
void score_init();
void wscore();
void display_status();
void wavescore();
void score();
void save_game();
void score_init(void);
void wscore(void);
void display_status(void);
void wavescore(void);
void score(void);
void save_game(void);

View File

@ -23,7 +23,7 @@
#include "sig.h"
void
sig_init()
sig_init(void)
{
#ifdef lint
;
@ -72,7 +72,7 @@ cont_catcher(int x)
#endif
void
mytstp()
mytstp(void)
{
resetty();
#ifdef SIGTSTP
@ -94,8 +94,7 @@ mytstp()
}
void /* very much void */
finalize(status)
int status;
finalize(int status)
{
if (bizarre)
resetty();
@ -113,7 +112,7 @@ void
sig_catcher(int signo)
{
#ifdef VERBOSE
static char *signame[] = {
static const char *signame[] = {
"",
"HUP",
"INT",
@ -180,7 +179,7 @@ sig_catcher(int signo)
totalscore -= possiblescore / 2;
}
save_game();
if (signo != SIGHUP && signo != SIGQUIT)
if (signo != SIGHUP && signo != SIGQUIT) {
#ifdef VERBOSE
IF(verbose)
printf("\r\nCaught %s%s--%s\r\n",
@ -189,8 +188,9 @@ sig_catcher(int signo)
ELSE
#endif
#ifdef TERSE
printf("\r\nSignal %d--bye bye\r\n",signo);
printf("\r\nsignal %d--bye bye\r\n",signo);
#endif
}
switch (signo) {
case SIGBUS:
case SIGILL:

View File

@ -6,11 +6,12 @@
*
*/
void sig_catcher(int);
void sig_init(void);
void mytstp(void);
void finalize(int status);
void sig_catcher(int signo);
#ifdef SIGTSTP
void cont_catcher(int);
void stop_catcher(int);
void cont_catcher(int x);
void stop_catcher(int sig);
#endif
void mytstp();
void sig_init();
void finalize();
void sig_catcher(int);

View File

@ -12,11 +12,11 @@
#include "config.h"
int
main()
main(void)
{
char screen[23][90], buf[10];
Reg1 int y;
Reg2 int x;
int y;
int x;
int tmpy, tmpx;
for (x=0; x<79; x++)
@ -45,7 +45,7 @@ main()
}
}
else {
Reg3 int numstars = 0;
int numstars = 0;
for (y=1; y<23; y++) {
for (x=0; x<79; x++)

View File

@ -26,11 +26,11 @@
#include "INTERN.h"
#include "term.h"
int typeahead = FALSE;
int typeahead = false;
char tcarea[TCSIZE]; /* area for "compiled" termcap strings */
/* guarantee capability pointer != Nullch */
/* guarantee capability pointer != NULL */
/* (I believe terminfo will ignore the &tmpaddr argument.) */
#define Tgetstr(key) ((tstr = tgetstr(key,&tmpaddr)) ? tstr : nullstr)
@ -55,17 +55,17 @@ struct keymap {
typedef struct keymap KEYMAP;
KEYMAP *topmap INIT(Null(KEYMAP*));
KEYMAP *topmap INIT(NULL);
void mac_init();
KEYMAP *newkeymap();
void pushstring();
void mac_init(char *);
static KEYMAP *newkeymap(void);
void pushstring(char *);
#endif
/* terminal initialization */
void
term_init()
term_init(void)
{
savetty(); /* remember current tty state */
@ -112,12 +112,10 @@ term_init()
/* set terminal characteristics */
void
term_set(tcbuf)
char *tcbuf; /* temp area for "uncompiled" termcap entry */
term_set(char *tcbuf) /* temp area for "uncompiled" termcap entry */
{
char *tmpaddr; /* must not be register */
Reg1 char *tstr;
char *tgetstr();
char *tstr;
char *s;
int retval;
@ -155,7 +153,7 @@ char *tcbuf; /* temp area for "uncompiled" termcap entry */
if (BC == nullstr) /* terminfo grok's 'bs' but not 'bc' */
BC = Tgetstr("le");
} else
BC = "\b"; /* make a backspace handy */
BC = __UNCONST("\b"); /* make a backspace handy */
UP = Tgetstr("up"); /* move up a line */
ND = Tgetstr("nd"); /* non-destructive move cursor right */
DO = Tgetstr("do"); /* move cursor down */
@ -189,15 +187,16 @@ char *tcbuf; /* temp area for "uncompiled" termcap entry */
XN = tgetflag("xn"); /* then eats next newline? */
VB = Tgetstr("vb");
if (!*VB)
VB = "\007";
VB = __UNCONST("\007");
CR = Tgetstr("cr");
if (!*CR) {
if (tgetflag("nc") && *UP) {
CR = safemalloc((MEM_SIZE)strlen(UP)+2);
Sprintf(CR,"%s\r",UP);
size_t l = strlen(UP) + 2;
CR = safemalloc(l);
snprintf(CR, l, "%s\r",UP);
}
else
CR = "\r";
CR = __UNCONST("\r");
}
if (LINES <= 0)
LINES = 24;
@ -240,7 +239,7 @@ char *tcbuf; /* temp area for "uncompiled" termcap entry */
}
if (!*DO) { /* not defined? */
myDO = DO = "\n"; /* assume a newline */
myDO = DO = __UNCONST("\n"); /* assume a newline */
DOsize = 1;
}
else {
@ -257,7 +256,7 @@ char *tcbuf; /* temp area for "uncompiled" termcap entry */
}
}
if (debugging)
Fgets(cmbuffer,(sizeof cmbuffer),stdin);
fgets(cmbuffer,(sizeof cmbuffer),stdin);
CMsize = comp_tc(cmbuffer,tgoto(CM,20,20),0);
if (PC != '\0') {
@ -273,13 +272,13 @@ char *tcbuf; /* temp area for "uncompiled" termcap entry */
ospeed == B600 ? 30 :
/* speed is 300 (?) */ 15;
gfillen = ospeed >= B9600 ? (sizeof filler) :
gfillen = ospeed >= B9600 ? (int /*XXX: speed_t*/)(sizeof filler) :
ospeed == B4800 ? 13 :
ospeed == B2400 ? 7 :
ospeed == B1200 ? 4 :
1+BCsize;
(1+BCsize);
if (ospeed < B2400)
lowspeed = TRUE;
lowspeed = true;
strcpy(term,ttyname(2));
@ -300,34 +299,30 @@ char *tcbuf; /* temp area for "uncompiled" termcap entry */
#ifdef PUSHBACK
void
mac_init(tcbuf)
char *tcbuf;
mac_init(char *tcbuf)
{
char tmpbuf[1024];
tmpfp = fopen(filexp(getval("WARPMACRO",WARPMACRO)),"r");
if (tmpfp != Nullfp) {
while (fgets(tcbuf,1024,tmpfp) != Nullch) {
if (tmpfp != NULL) {
while (fgets(tcbuf,1024,tmpfp) != NULL) {
mac_line(tcbuf,tmpbuf,(sizeof tmpbuf));
}
Fclose(tmpfp);
fclose(tmpfp);
}
}
void
mac_line(line,tmpbuf,tbsize)
char *line;
char *tmpbuf;
int tbsize;
mac_line(char *line, char *tmpbuf, size_t tbsize)
{
Reg1 char *s;
Reg2 char *m;
Reg3 KEYMAP *curmap;
Reg4 int ch;
Reg5 int garbage = 0;
static char override[] = "\r\nkeymap overrides string\r\n";
char *s;
char *m;
KEYMAP *curmap;
int ch;
int garbage = 0;
static const char override[] = "\r\nkeymap overrides string\r\n";
if (topmap == Null(KEYMAP*))
if (topmap == NULL)
topmap = newkeymap();
if (*line == '#' || *line == '\n')
return;
@ -339,7 +334,7 @@ int tbsize;
while (*m == ' ' || *m == '\t') m++;
for (s=tmpbuf,curmap=topmap; *s; s++) {
ch = *s & 0177;
if (s[1] == '+' && isdigit(s[2])) {
if (s[1] == '+' && isdigit((unsigned char)s[2])) {
s += 2;
garbage = (*s & KM_GMASK) << KM_GSHIFT;
}
@ -349,10 +344,10 @@ int tbsize;
if ((curmap->km_type[ch] & KM_TMASK) == KM_STRING) {
puts(override);
free(curmap->km_ptr[ch].km_str);
curmap->km_ptr[ch].km_str = Nullch;
curmap->km_ptr[ch].km_str = NULL;
}
curmap->km_type[ch] = KM_KEYMAP + garbage;
if (curmap->km_ptr[ch].km_km == Null(KEYMAP*))
if (curmap->km_ptr[ch].km_km == NULL)
curmap->km_ptr[ch].km_km = newkeymap();
curmap = curmap->km_ptr[ch].km_km;
}
@ -367,11 +362,11 @@ int tbsize;
}
}
KEYMAP*
newkeymap()
static KEYMAP*
newkeymap(void)
{
Reg1 int i;
Reg2 KEYMAP *map;
int i;
KEYMAP *map;
#ifndef lint
map = (KEYMAP*)safemalloc(sizeof(KEYMAP));
@ -379,7 +374,7 @@ newkeymap()
map = Null(KEYMAP*);
#endif /* lint */
for (i=127; i>=0; --i) {
map->km_ptr[i].km_km = Null(KEYMAP*);
map->km_ptr[i].km_km = NULL;
map->km_type[i] = KM_NOTHIN;
}
return map;
@ -390,9 +385,7 @@ newkeymap()
/* print out a file, stopping at form feeds */
void
page(filename,num)
char *filename;
bool num;
page(const char *filename, size_t num)
{
int linenum = 1;
@ -401,7 +394,7 @@ bool num;
while (fgets(spbuf,(sizeof spbuf),tmpfp) != NULL) {
if (*spbuf == '\f') {
printf("[Type anything to continue] ");
Fflush(stdout);
fflush(stdout);
getcmd(spbuf);
printf("\r\n");
if (*spbuf == INTRCH)
@ -416,19 +409,17 @@ bool num;
printf("%s\r",spbuf);
}
}
Fclose(tmpfp);
fclose(tmpfp);
}
}
void
move(y, x, chadd)
int y, x;
int chadd;
move(int y, int x, int chadd)
{
Reg1 int ydist;
Reg2 int xdist;
Reg3 int i;
Reg4 char *s;
int ydist;
int xdist;
int i;
char *s;
ydist = y - real_y;
xdist = x - real_x;
@ -466,9 +457,7 @@ int chadd;
}
void
do_tc(s,l)
char *s;
int l;
do_tc(const char *s, int l)
{
beg_qwrite();
tputs(s,l,cmstore);
@ -476,10 +465,7 @@ int l;
}
int
comp_tc(dest,s,l)
char *dest;
char *s;
int l;
comp_tc(char *dest, const char *s, int l)
{
maxcmstring = dest;
tputs(s,l,cmstore);
@ -487,7 +473,7 @@ int l;
}
void
helper()
helper(void)
{
clear();
mvaddstr(0,4,"h or 4 left");
@ -514,7 +500,7 @@ helper()
mvaddstr(21,4,"Q exit this game.");
mvaddstr(22,4,"");
mvaddstr(23,4," [Hit space to continue]");
Fflush(stdout);
fflush(stdout);
do {
getcmd(spbuf);
} while (*spbuf != ' ');
@ -523,25 +509,25 @@ helper()
}
void
rewrite()
rewrite(void)
{
Reg1 int x;
Reg2 int y;
Reg3 OBJECT *obj;
int x;
int y;
OBJECT *obj;
clear();
for (y=0; y<YSIZE; y++) {
for (x=0; x<XSIZE; x++) {
if (numamoebas && amb[y][x] != ' ')
mvaddc(y+1,x*2,amb[y][x]);
if (obj=occupant[y][x]) {
if ((obj = occupant[y][x]) != NULL) {
if (obj->image != ' ')
mvaddc(y+1,x*2,obj->image);
}
}
}
Sprintf(spbuf,
"%-4s E: %4d %2d B: %5d %3d Enemies: %-3d Stars: %-3d Stardate%5d.%1d %9ld",
snprintf(spbuf, sizeof(spbuf),
"%-4s E: %4d %2d B: %5d %3d Enemies: %-3d Stars: %-3d Stardate%5d.%1d %9ld",
" ", 0, 0, 0, 0, 0, 0, timer/10+smarts*100, timer%10, 0L);
mvaddstr(0,0,spbuf);
oldeenergy = oldbenergy = oldcurscore =
@ -557,16 +543,16 @@ rewrite()
}
int
cmstore(ch)
Reg1 int ch;
cmstore(int ch)
{
*maxcmstring++ = ch;
return 0;
}
/* discard any characters typed ahead */
void
eat_typeahead()
eat_typeahead(void)
{
#ifdef PUSHBACK
if (!typeahead && nextin==nextout) /* cancel only keyboard stuff */
@ -576,7 +562,7 @@ eat_typeahead()
{
#ifdef PENDING
while (input_pending())
Read_tty(buf,sizeof(buf));
read_tty(buf,sizeof(buf));
#else /* this is probably v7, with no rdchk() */
ioctl(_tty_ch,TIOCSETP,&_tty);
#endif
@ -584,10 +570,10 @@ eat_typeahead()
}
void
settle_down()
settle_down(void)
{
dingaling();
Fflush(stdout);
fflush(stdout);
sleep(1);
#ifdef PUSHBACK
nextout = nextin; /* empty circlebuf */
@ -599,13 +585,8 @@ settle_down()
/* read a character from the terminal, with multi-character pushback */
int
read_tty(addr,size)
char *addr;
int size; /* ignored for now */
read_tty(char *addr, ssize_t size) /* ignored for now */
{
#ifdef lint
size = size;
#endif
if (nextout != nextin) {
*addr = circlebuf[nextout++];
nextout %= PUSHSIZE;
@ -633,8 +614,8 @@ int size; /* ignored for now */
int
circfill()
{
Reg1 int howmany;
Reg2 int i;
int howmany;
int i;
assert (nextin == nextout);
howmany = read(devtty,circlebuf+nextin,metakey?1:PUSHSIZE-nextin);
@ -658,8 +639,7 @@ circfill()
#endif /* PENDING */
void
pushchar(ch)
char ch;
pushchar(int ch)
{
nextout--;
if (nextout < 0)
@ -682,7 +662,7 @@ int size;
{
if (is_input) {
*addr = pending_ch;
is_input = FALSE;
is_input = false;
return 1;
}
else {
@ -692,7 +672,7 @@ int size;
if (metakey) {
if (*addr & 0200) {
pending_ch = *addr & 0177;
is_input = TRUE;
is_input = true;
*addr = '\001';
}
}
@ -705,9 +685,7 @@ int size;
#endif /* PUSHBACK */
int
read_nd(buff, siz)
char *buff;
int siz;
read_nd(char *buff, size_t siz)
{
if (!input_pending())
return 0;
@ -719,24 +697,24 @@ int siz;
/* get a character into a buffer */
void
getcmd(whatbuf)
Reg3 char *whatbuf;
getcmd(char *wbuf)
{
#ifdef PUSHBACK
Reg1 KEYMAP *curmap;
Reg2 int i;
KEYMAP *curmap;
int i;
bool no_macros;
int times = 0; /* loop detector */
char scrchar;
unsigned char *whatbuf = (void *)wbuf;
tryagain:
curmap = topmap;
/* no_macros = (whatbuf != buf && nextin == nextout); */
no_macros = FALSE;
no_macros = false;
#endif
for (;;) {
errno = 0;
if (read_tty(whatbuf,1) < 0 && !errno)
if (read_tty(wbuf,1) < 0 && !errno)
errno = EINTR;
#ifdef read_tty
if (metakey) {
@ -756,10 +734,10 @@ tryagain:
*whatbuf &= 0177;
goto got_canonical;
}
if (curmap == Null(KEYMAP*))
if (curmap == NULL)
goto got_canonical;
for (i = (curmap->km_type[*whatbuf] >> KM_GSHIFT) & KM_GMASK; i; --i){
Read_tty(&scrchar,1);
read_tty(&scrchar,1);
}
switch (curmap->km_type[*whatbuf] & KM_TMASK) {
case KM_NOTHIN: /* no entry? */
@ -769,7 +747,7 @@ tryagain:
goto tryagain;
case KM_KEYMAP: /* another keymap? */
curmap = curmap->km_ptr[*whatbuf].km_km;
assert(curmap != Null(KEYMAP*));
assert(curmap != NULL);
break;
case KM_STRING: /* a string? */
pushstring(curmap->km_ptr[*whatbuf].km_str);
@ -777,7 +755,7 @@ tryagain:
fputs("\r\nmacro loop?\r\n",stdout);
settle_down();
}
no_macros = FALSE;
no_macros = false;
goto tryagain;
}
#else
@ -791,20 +769,19 @@ got_canonical:
if (*whatbuf == '\r')
*whatbuf = '\n';
#endif
if (whatbuf == buf)
if (wbuf == buf)
whatbuf[1] = FINISHCMD; /* tell finish_command to work */
}
#ifdef PUSHBACK
void
pushstring(str)
char *str;
pushstring(char *str)
{
Reg1 int i;
int i;
char tmpbuf[PUSHSIZE];
Reg2 char *s = tmpbuf;
char *s = tmpbuf;
assert(str != Nullch);
assert(str != NULL);
interp(s,PUSHSIZE,str);
for (i = strlen(s)-1; i >= 0; --i) {
s[i] ^= 0200;

View File

@ -42,8 +42,8 @@
#define mvaddstr(y,x,s) (move((y),(x),0), tmpstr = (s), \
tmplen = strlen(tmpstr), write(1, tmpstr, tmplen), real_x += tmplen)
EXT int tmplen;
EXT char *tmpstr;
EXT size_t tmplen;
EXT const char *tmpstr;
/* EXT char tmpchr; */
/* The following macros are like the pseudo-curses macros above, but do
@ -131,7 +131,7 @@ EXT char INTRCH INIT('\03');
# endif /* RDCHK */
# endif /* FIONREAD */
# else /* PENDING */
??? warp will not work without PENDING
# ??? warp will not work without PENDING
# ifndef lint
# define input_pending() (nextin!=nextout)
# else
@ -162,7 +162,7 @@ EXT char INTRCH INIT('\03');
??? PENDING is not defined correctly in warp.h
# endif
EXT int devtty INIT(0);
EXT bool is_input INIT(FALSE);
EXT bool is_input INIT(false);
EXT char pending_ch INIT(0);
# ifndef lint
# define input_pending() (is_input || \
@ -175,7 +175,7 @@ EXT char INTRCH INIT('\03');
# else /* PENDING */
??? warp will not work without PENDING
# define read_tty(addr,size) read(0,addr,size)
# define input_pending() (FALSE)
# define input_pending() (false)
# endif /* PENDING */
#endif /* PUSHBACK */
@ -189,7 +189,7 @@ EXT int _res_flg INIT(0);
#endif
EXT int _tty_ch INIT(2);
EXT bool bizarre INIT(FALSE); /* do we need to restore terminal? */
EXT bool bizarre INIT(false); /* do we need to restore terminal? */
/* terminal mode diddling routines */
@ -245,29 +245,29 @@ EXT bool bizarre INIT(FALSE); /* do we need to restore terminal? */
*/
#ifdef HAVETERMLIB
EXT char *BC INIT(Nullch); /* backspace character */
EXT char *UP INIT(Nullch); /* move cursor up one line */
EXT char *BC INIT(NULL); /* backspace character */
EXT char *UP INIT(NULL); /* move cursor up one line */
EXT char *myUP;
EXT char *ND INIT(Nullch); /* non-destructive cursor right */
EXT char *ND INIT(NULL); /* non-destructive cursor right */
EXT char *myND;
EXT char *DO INIT(Nullch); /* move cursor down one line */
EXT char *DO INIT(NULL); /* move cursor down one line */
EXT char *myDO;
EXT char *CR INIT(Nullch); /* get to left margin, somehow */
EXT char *VB INIT(Nullch); /* visible bell */
EXT char *CL INIT(Nullch); /* home and clear screen */
EXT char *CE INIT(Nullch); /* clear to end of line */
EXT char *CM INIT(Nullch); /* cursor motion -- PWP */
EXT char *HO INIT(Nullch); /* home cursor -- PWP */
EXT char *CD INIT(Nullch); /* clear to end of display -- PWP */
EXT char *SO INIT(Nullch); /* begin standout mode */
EXT char *SE INIT(Nullch); /* end standout mode */
EXT char *CR INIT(NULL); /* get to left margin, somehow */
EXT char *VB INIT(NULL); /* visible bell */
EXT char *CL INIT(NULL); /* home and clear screen */
EXT char *CE INIT(NULL); /* clear to end of line */
EXT char *CM INIT(NULL); /* cursor motion -- PWP */
EXT char *HO INIT(NULL); /* home cursor -- PWP */
EXT char *CD INIT(NULL); /* clear to end of display -- PWP */
EXT char *SO INIT(NULL); /* begin standout mode */
EXT char *SE INIT(NULL); /* end standout mode */
EXT int SG INIT(0); /* blanks left by SO and SE */
EXT char *US INIT(Nullch); /* start underline mode */
EXT char *UE INIT(Nullch); /* end underline mode */
EXT char *UC INIT(Nullch); /* underline a character, if that's how it's done */
EXT char *US INIT(NULL); /* start underline mode */
EXT char *UE INIT(NULL); /* end underline mode */
EXT char *UC INIT(NULL); /* underline a character, if that's how it's done */
EXT int UG INIT(0); /* blanks left by US and UE */
EXT bool AM INIT(FALSE); /* does terminal have automatic margins? */
EXT bool XN INIT(FALSE); /* does it eat 1st newline after automatic wrap? */
EXT bool AM INIT(false); /* does terminal have automatic margins? */
EXT bool XN INIT(false); /* does it eat 1st newline after automatic wrap? */
EXT char PC INIT(0); /* pad character for use by tputs() */
EXT short ospeed INIT(0); /* terminal output speed, for use by tputs() */
EXT int LINES INIT(0), COLS INIT(0); /* size of screen */
@ -293,27 +293,27 @@ EXT char KILLCH; /* line delete character */
???????? /* up to you */
#endif
void term_init();
void term_set();
void term_init(void);
void term_set(char *);
#ifdef PUSHBACK
void pushchar();
void mac_init();
void mac_line();
void pushchar(int);
void mac_init(char *);
void mac_line(char *, char *, size_t);
#endif
void eat_typeahead();
void settle_down();
#ifndef read_tty
int read_tty();
#endif
void getcmd();
int read_nd();
void page();
void move();
void do_tc();
int comp_tc();
void helper();
void rewrite();
void page(const char *filename, size_t);
void move(int, int, int);
void do_tc(const char *, int);
int comp_tc(char *, const char *, int);
void helper(void);
void rewrite(void);
int cmstore(int);
void eat_typeahead(void);
void settle_down(void);
#ifndef read_tty
int read_tty(char *, ssize_t);
#endif
int read_nd(char *, size_t);
void getcmd(char *);
void pushstring(char *);
#endif

View File

@ -35,20 +35,20 @@
#include "them.h"
void
them_init()
them_init(void)
{
;
}
void
their_smarts()
their_smarts(void)
{
Reg1 OBJECT *curkl;
Reg2 OBJECT *obj;
Reg3 int prob;
Reg4 int count;
Reg5 int y;
Reg6 int x;
OBJECT *curkl;
OBJECT *obj = NULL;
int prob;
int count;
int y = 0;
int x = 0;
if (numcrushes && (obj=movers)->type == Crusher) {
if (numamoebas) {
@ -303,7 +303,7 @@ their_smarts()
fire_torp(curkl,yyy,xxx);
}
else if (curkl->image == 'T' && (curkl->velx || curkl->vely)) {
Make_object(Web,
make_object(Web,
curkl->vely?
(curkl->velx?
(curkl->velx==curkl->vely?
@ -319,7 +319,7 @@ their_smarts()
curkl->posy,curkl->posx,0,0,32767L,32767L,&root);
if (obj && obj->type == Web) {
unmake_object(obj);
occupant[y][x] = Null(OBJECT*);
occupant[y][x] = NULL;
}
}
}
@ -332,16 +332,11 @@ their_smarts()
}
void
modify_amoeba(y,x,where,ch,quant)
Reg1 int y;
Reg2 int x;
int where;
Reg6 int ch;
Reg7 int quant;
modify_amoeba(int y, int x, int where, int ch, int quant)
{
Reg3 int dy;
Reg4 int dx;
Reg5 int count = 15;
int dy;
int dx;
int count = 15;
if (!numamoebas)
return;
@ -393,7 +388,7 @@ Reg7 int quant;
ambsize++;
yblasted[y] |= 2;
xblasted[x] |= 2;
blasted = TRUE;
blasted = true;
}
else
ambsize--;

View File

@ -6,6 +6,6 @@
*
*/
void their_smarts();
void modify_amoeba();
void them_init();
void them_init(void);
void their_smarts(void);
void modify_amoeba(int, int, int, int, int);

View File

@ -28,23 +28,22 @@
#include "us.h"
void
us_init()
us_init(void)
{
;
}
void
do_direction(dy,dx)
int dy, dx;
do_direction(int dy, int dx)
{
Reg1 int decr;
Reg2 OBJECT *obj;
int decr;
OBJECT *obj;
if (status < 2) {
if (cloaking) {
char ch;
cloaked = FALSE;
cloaked = false;
ch = (ent->energy >= 500?'E':'e');
if (ch != ent->image) {
setimage(ent, ch);
@ -107,14 +106,13 @@ int dy, dx;
}
void
ctrl_direction(dy,dx)
int dy, dx;
ctrl_direction(int dy, int dx)
{
if (status < 2) {
if (cloaking) {
char ch;
cloaked = FALSE;
cloaked = false;
ch = (ent->energy >= 500?'E':'e');
if (ch != ent->image) {
setimage(ent, ch);
@ -133,14 +131,13 @@ int dy, dx;
}
void
shift_direction(dy,dx)
int dy, dx;
shift_direction(int dy, int dx)
{
if (status < 2) {
if (cloaking) {
char ch;
cloaked = FALSE;
cloaked = false;
ch = (ent->energy >= 500?'E':'e');
if (ch != ent->image) {
setimage(ent, ch);
@ -159,22 +156,21 @@ int dy, dx;
}
void
get_commands(done)
bool *done;
get_commands(bool *done)
{
static char ch[80];
Reg1 int i;
Reg2 int count;
Reg3 bool ctrla = FALSE;
int i;
int count;
bool ctrla = false;
char numdestructs = 0, numzaps = 0;
top:
while (count = read_nd(ch,(sizeof ch))) {
while ((count = read_nd(ch,(sizeof ch)))) {
for (i=0; i<count; i++) {
if (ch[i] == 'Q') {
bombed_out = TRUE;
*done = TRUE;
keepgoing = FALSE;
bombed_out = true;
*done = true;
keepgoing = false;
return;
}
if (ch[i] == 'q' || ch[i] == BREAKCH || ch[i] == INTRCH) {
@ -187,8 +183,8 @@ top:
getcmd(&ch[i]);
} while (ch[i] != 'y' && ch[i] != 'n');
if (ch[i] == 'y') {
bombed_out = TRUE;
*done = TRUE;
bombed_out = true;
*done = true;
return;
}
else {
@ -242,7 +238,7 @@ top:
case 'r':
rewrite();
roundsleep(3);
ctrla = FALSE;
ctrla = false;
goto top;
case 'w':
clear();
@ -250,20 +246,20 @@ top:
sleep(1);
rewrite();
roundsleep(3);
ctrla = FALSE;
ctrla = false;
goto top;
#ifdef SIGTSTP
case 'z':
clear();
mytstp();
sleep(4);
ctrla = FALSE;
ctrla = false;
goto top;
#endif
default:
break;
}
ctrla = FALSE;
ctrla = false;
}
else {
switch (ch[i]) {
@ -303,14 +299,14 @@ top:
if (ent) {
status = entmode;
}
cloaking=FALSE;
cloaked=FALSE;
cloaking=false;
cloaked=false;
break;
case 'c':
if (ent) {
status = entmode;
if (ent->energy >= 250)
cloaking = TRUE;
cloaking = true;
}
break;
case 'z':
@ -347,7 +343,7 @@ top:
break;
case 'd':
if ((!damage || !damflag[NODESTRUCT]) && (base||ent)) {
Reg4 OBJECT *obj;
OBJECT *obj;
int x, y;
if (ent && !rand_mod(200)) {
@ -363,7 +359,7 @@ top:
+= 1;
yblasted[y] |= 1;
xblasted[x] |= 1;
blasted = TRUE;
blasted = true;
obj->mass = (massacre?3000:4000);
}
}
@ -371,7 +367,7 @@ top:
break;
case 's':
if ((!damage || !damflag[NODESTRUCT]) && (base||ent)) {
Reg4 OBJECT *obj;
OBJECT *obj;
if (ent && !rand_mod(200)) {
damage++;
damflag[NODESTRUCT] = rand_mod(smarts+10)+2;
@ -386,7 +382,7 @@ top:
}
break;
case '\001':
ctrla = TRUE;
ctrla = true;
break;
case '\002':
case '\003':
@ -415,7 +411,7 @@ top:
case '\032':
ch[i] += 96;
i--;
ctrla = TRUE;
ctrla = true;
break;
case '\033':
tractor = 0;

View File

@ -37,7 +37,7 @@ EXT int damage INIT(0);
EXT int olddamage INIT(-1);
#ifdef DOINIT
char *dammess[MAXDAMAGE] = {
const char *dammess[MAXDAMAGE] = {
"WARP",
"IMPULSE",
"PHASERS",
@ -54,8 +54,8 @@ extern char *dammess[];
extern char damflag[];
#endif
void do_direction();
void ctrl_direction();
void shift_direction();
void get_commands();
void us_init();
void us_init(void);
void do_direction(int, int);
void ctrl_direction(int, int);
void shift_direction(int, int);
void get_commands(bool *);

View File

@ -22,23 +22,18 @@
#include "util.h"
void
util_init()
util_init(void)
{
;
}
void
movc3(len,src,dest)
movc3(int len, char *src, char *dest)
#ifdef vax
char *dest, *src;
int len;
{
asm("movc3 4(ap),*8(ap),*12(ap)");
}
#else
Reg1 char *dest;
Reg2 char *src;
Reg3 int len;
{
if (dest <= src) {
for (; len; len--) {
@ -56,20 +51,16 @@ Reg3 int len;
#endif
void
no_can_do(what)
char *what;
no_can_do(const char *what)
{
fprintf(stderr,"Sorry, your terminal is too %s to play warp.\r\n",what);
finalize(1);
}
int
exdis(maxnum)
int maxnum;
exdis(int maxnum)
{
double temp, temp2;
double exp();
double log();
temp = (double) maxnum;
#ifndef lint
@ -92,34 +83,32 @@ static char nomem[] = "warp: out of memory!\r\n";
/* paranoid version of malloc */
char *
safemalloc(size)
MEM_SIZE size;
void *
safemalloc(size_t size)
{
char *ptr;
ptr = malloc(size?size:1); /* malloc(0) is NASTY on our system */
if (ptr != Nullch)
if (ptr != NULL)
return ptr;
else {
fputs(nomem,stdout);
sig_catcher(0);
}
/*NOTREACHED*/
return NULL;
}
/* safe version of string copy */
char *
safecpy(to,from,len)
char *to;
Reg2 char *from;
Reg1 int len;
safecpy(char *to, const char *from, size_t len)
{
Reg3 char *dest = to;
char *dest = to;
if (from != Nullch)
for (len--; len && (*dest++ = *from++); len--) ;
if (from != NULL)
for (len--; len && (*dest++ = *from++); len--)
continue;
*dest = '\0';
return to;
}
@ -127,10 +116,7 @@ Reg1 int len;
/* copy a string up to some (non-backslashed) delimiter, if any */
char *
cpytill(to,from,delim)
Reg2 char *to;
Reg1 char *from;
Reg3 int delim;
cpytill(char *to, const char *from, int delim)
{
for (; *from; from++,to++) {
if (*from == '\\' && from[1] == delim)
@ -140,42 +126,40 @@ Reg3 int delim;
*to = *from;
}
*to = '\0';
return from;
return __UNCONST(from);
}
/* return ptr to little string in big string, NULL if not found */
char *
instr(big, little)
char *big, *little;
instr(const char *big, const char *little)
{
Reg3 char *t;
Reg1 char *s;
Reg2 char *x;
const char *t;
const char *s;
const char *x;
for (t = big; *t; t++) {
for (x=t,s=little; *s; x++,s++) {
if (!*x)
return Nullch;
return NULL;
if (*s != *x)
break;
}
if (!*s)
return t;
return __UNCONST(t);
}
return Nullch;
return NULL;
}
/* effective access */
#ifdef SETUIDGID
int
eaccess(filename, mod)
char *filename;
int mod;
eaccess(const char *filename, mode_t mod)
{
int protection, euid;
mode_t protection;
uid_t euid;
mod &= 7; /* remove extraneous garbage */
if (stat(filename, &filestat) < 0)
@ -194,132 +178,30 @@ int mod;
}
#endif
/*
* Get working directory
*/
#ifdef GETWD
#define dot "."
#define dotdot ".."
static char *name;
static DIR *dirp;
static int off;
static struct stat d, dd;
static struct direct *dir;
char *
getwd(np)
char *np;
{
long rdev, rino;
*np++ = '/';
*np = 0;
name = np;
off = -1;
stat("/", &d);
rdev = d.st_dev;
rino = d.st_ino;
for (;;) {
stat(dot, &d);
if (d.st_ino==rino && d.st_dev==rdev)
goto done;
if ((dirp = opendir(dotdot)) == Null(DIR *))
prexit("getwd: cannot open ..\r\n");
stat(dotdot, &dd);
chdir(dotdot);
if(d.st_dev == dd.st_dev) {
if(d.st_ino == dd.st_ino)
goto done;
do
if ((dir = readdir(dirp)) == Null(struct direct *))
prexit("getwd: read error in ..\r\n");
while (dir->d_ino != d.st_ino);
}
else do {
if ((dir = readdir(dirp)) == Null(struct direct *))
prexit("getwd: read error in ..\r\n");
stat(dir->d_name, &dd);
} while(dd.st_ino != d.st_ino || dd.st_dev != d.st_dev);
cat();
closedir(dirp);
}
done:
name--;
if (chdir(name) < 0) {
printf("getwd: can't cd back to %s\r\n",name);
sig_catcher(0);
}
return (name);
}
void
cat()
{
Reg1 int i;
Reg2 int j;
i = -1;
while (dir->d_name[++i] != 0);
if ((off+i+2) > 1024-1)
return;
for(j=off+1; j>=0; --j)
name[j+i+1] = name[j];
if (off >= 0)
name[i] = '/';
off=i+off+1;
name[off] = 0;
for(--i; i>=0; --i)
name[i] = dir->d_name[i];
}
void
prexit(cp)
char *cp;
prexit(const char *cp)
{
write(2, cp, strlen(cp));
sig_catcher(0);
}
#else
char *
getwd(np) /* shorter but slower */
char *np;
{
FILE *popen();
FILE *pipefp = popen("/bin/pwd","r");
if (pipefp == Nullfp) {
printf("Can't run /bin/pwd\r\n");
finalize(1);
}
Fgets(np,512,pipefp);
np[strlen(np)-1] = '\0'; /* wipe out newline */
pclose(pipefp);
return np;
}
#endif
/* copy a string to a safe spot */
char *
savestr(str)
char *str;
savestr(const char *str)
{
Reg1 char *newaddr = safemalloc((MEM_SIZE)(strlen(str)+1));
char *newaddr = safemalloc((size_t)(strlen(str)+1));
strcpy(newaddr,str);
strcpy(newaddr, str);
return newaddr;
}
char *
getval(nam,def)
char *nam,*def;
getval(const char *nam, const char *def)
{
char *val;
const char *val;
if ((val = getenv(nam)) == Nullch || !*val)
if ((val = getenv(nam)) == NULL || !*val)
val = def;
return val;
return __UNCONST(val);
}

View File

@ -15,7 +15,7 @@
#if RANDBITS == 15 /* 15 bits of rand()? */
#define RANDRAND 268435456.0 /* that's 2**28 */
#define HALFRAND 0x4000 /* that's 2**14 */
int rand();
int rand(void);
#define myrand() (rand()&32767)
#define rand_mod(m) ((int)((double)myrand() / 32768.0 * ((double)(m))))
/* pick number in 0..m-1 */
@ -50,10 +50,6 @@ long rand();
EXT struct timeb timebuf;
#define roundsleep(x) (ftime(&timebuf),sleep(timebuf.millitm > 500?x+1:x))
void movc3();
void no_can_do();
int exdis();
#define waiting 0
#ifdef NOTDEF
@ -69,16 +65,17 @@ EXT int len_last_line_got INIT(0);
#define MD_FILE 1
#endif
void util_init();
char *safemalloc();
char *safecpy();
char *cpytill();
char *instr();
void util_init(void);
void movc3(int, char *, char *);
void no_can_do(const char *);
int exdis(int);
void *safemalloc(size_t size);
char *safecpy(char *, const char *, size_t);
char *cpytill(char *, const char *, int);
char *instr(const char *, const char *);
#ifdef SETUIDGID
int eaccess();
int eaccess(const char *, mode_t);
#endif
char *getwd();
void cat();
void prexit();
char *savestr();
char *getval();
void prexit(const char *);
char *savestr(const char *);
char *getval(const char *, const char *);

View File

@ -15,7 +15,7 @@
/* Print out the version number. */
void
version()
version(void)
{
extern char rcsid[];

View File

@ -6,4 +6,4 @@
*
*/
void version();
void version(void);

View File

@ -133,14 +133,10 @@ char rcsid[] = "@(#)Header: warp.c,v 7.0.1.3 86/12/12 17:07:44 lwall Exp";
#include "weapon.h"
int
main(argc,argv)
int argc;
char *argv[];
main(int argc, char *argv[])
{
char tmp, *s, *tcbuf;
int i;
FILE *savfil;
#if RANDBITS > 16
@ -159,7 +155,6 @@ char *argv[];
exit(1);
#endif
#endif
rand_ok:
#ifdef lint /* to suppress "defined but never used" */
# ifdef SIGTSTP
@ -174,22 +169,22 @@ rand_ok:
for (s = argv[0]+1; *s != '\0'; s++)
switch (*s) {
case '&':
amoebaspec = TRUE;
beginner = TRUE;
amoebaspec = true;
beginner = true;
break;
case 'A':
apolspec = TRUE;
beginner = TRUE;
apolspec = true;
beginner = true;
break;
case 'b':
beginner = TRUE;
beginner = true;
break;
case 'C':
crushspec = TRUE;
beginner = TRUE;
crushspec = true;
beginner = true;
break;
case 'D':
debugging = TRUE;
debugging = true;
#ifdef DEBUGGING
debug = atoi(++s);
#endif
@ -204,49 +199,49 @@ rand_ok:
if (ismarts > 99)
ismarts = 99;
if (ismarts > 40)
beginner = TRUE;
beginner = true;
s += strlen(s)-1;
break;
case 'E':
klingspec = TRUE;
beginner = TRUE;
klingspec = true;
beginner = true;
s++;
if (*s == '=') s++;
inumenemies = atoi(s);
s += strlen(s)-1;
break;
case 'F':
friendspec = TRUE;
beginner = TRUE;
friendspec = true;
beginner = true;
s++;
if (*s == '=') s++;
inumfriends = atoi(s);
s += strlen(s)-1;
break;
case 'G':
gornspec = TRUE;
beginner = TRUE;
gornspec = true;
beginner = true;
break;
case 'l':
lowspeed = TRUE;
lowspeed = true;
break;
case 'm':
metakey = TRUE;
metakey = true;
break;
case 'M':
massacre = TRUE;
massacre = true;
break;
case 'P':
piratespec = TRUE;
beginner = TRUE;
piratespec = true;
beginner = true;
s++;
if (*s == '=') s++;
inumpirates = atoi(s);
s += strlen(s)-1;
break;
case 'S':
prespec = TRUE;
beginner = TRUE;
prespec = true;
beginner = true;
s++;
if (*s == '=') s++;
if (*s)
@ -256,26 +251,26 @@ rand_ok:
s += strlen(s)-1;
break;
case 'R':
romspec = TRUE;
beginner = TRUE;
romspec = true;
beginner = true;
break;
case '*':
starspec = TRUE;
beginner = TRUE;
starspec = true;
beginner = true;
s++;
if (*s == '=') s++;
inumstars = atoi(s);
s += strlen(s)-1;
break;
case 's':
scorespec = TRUE;
scorespec = true;
break;
case 'T':
tholspec = TRUE;
beginner = TRUE;
tholspec = true;
beginner = true;
break;
case 'x':
experimenting = TRUE;
experimenting = true;
break;
case 'v':
version();
@ -303,7 +298,7 @@ rand_ok:
intrp_init(tcbuf);
if (chdir(warplib) < 0)
fprintf(stderr,nocd,warplib);
fprintf(stderr,NOCD,warplib);
term_init();
@ -326,7 +321,7 @@ rand_ok:
srand(getpid());
do {
for (keepgoing = TRUE;;) {
for (keepgoing = true;;) {
if (!experimenting) {
if ((savfil = fopen(savefilename,"w")) == NULL) {
resetty();
@ -349,7 +344,7 @@ rand_ok:
);
fprintf(savfil," running on %s, process #%d\n",
term+5,getpid());
Fclose(savfil);
fclose(savfil);
}
lastscore = totalscore;
@ -358,7 +353,7 @@ rand_ok:
cumsmarts += smarts;
wavescore();
if (numents<=0 && numbases<=0)
keepgoing = FALSE;
keepgoing = false;
if (!keepgoing) break;
do {
if (experimenting) {
@ -370,7 +365,7 @@ rand_ok:
"[Hit space to continue, 's' to save, 'q' to quit]");
}
sleep(1);
Fflush(stdout);
fflush(stdout);
eat_typeahead();
getcmd(&tmp);
if (tmp == BREAKCH || tmp == INTRCH) {

View File

@ -15,17 +15,21 @@
#ifndef WARP_H
#define WARP_H
extern int errno;
#include "config.h" /* generated by Configure script */
#include <term.h>
#include <stdio.h>
#include <signal.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <sys/ioctl.h>
#include <term.h>
#include <math.h>
#include <stdio.h>
#include <signal.h>
#include <fcntl.h>
#include <ctype.h>
#include <errno.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@ -136,13 +140,6 @@ EXT char amb[YSIZE][XSIZE];
/* some handy defs */
#define bool char
#define TRUE (1)
#define FALSE (0)
#define Null(t) ((t)0)
#define Nullch Null(char *)
#define Nullfp Null(FILE *)
#define Ctl(ch) (ch & 037)
#define strNE(s1,s2) (strcmp(s1,s2))
@ -201,8 +198,8 @@ EXT char amb[YSIZE][XSIZE];
# define ROOTID 0 /* uid of superuser */
#endif
# define sigset Signal
# define sigignore(sig) Signal(sig,SIG_IGN)
# define sigset signal
# define sigignore(sig) signal(sig,SIG_IGN)
#ifndef LOGDIRFIELD
# define LOGDIRFIELD 6 /* Which field (origin 1) is the */
@ -299,8 +296,6 @@ EXT char amb[YSIZE][XSIZE];
/* typedefs */
typedef unsigned int MEM_SIZE; /* for passing to malloc */
/* *** end of the machine dependent stuff *** */
/* GLOBAL THINGS */
@ -311,15 +306,9 @@ EXT struct stat filestat;
/* various things of type char */
char *index();
char *rindex();
char *getenv();
char *strcat();
char *strcpy();
EXT char buf[LBUFLEN+1]; /* general purpose line buffer */
EXT char *cwd INIT(Nullch); /* current working directory */
EXT char *cwd INIT(NULL); /* current working directory */
/* switches */
@ -330,13 +319,13 @@ EXT char *cwd INIT(Nullch); /* current working directory */
#ifdef VERBOSE
# ifdef TERSE
EXT bool verbose INIT(TRUE); /* +t */
EXT bool verbose INIT(true); /* +t */
# endif
#endif
/* miscellania */
EXT FILE *tmpfp INIT(Nullfp); /* scratch fp */
EXT FILE *tmpfp INIT(NULL); /* scratch fp */
#define NOMARKING 0
#define STANDOUT 1
@ -349,38 +338,36 @@ EXT char readerr[] INIT("warp read error");
EXT char cantopen[] INIT("Can't open %s\r\n");
#ifdef VERBOSE
EXT char nocd[] INIT("Can't chdir to directory %s\r\n");
#define NOCD "Can't chdir to directory %s\r\n"
#else
EXT char nocd[] INIT("Can't find %s\r\n");
#define NOCD "Can't find %s\r\n"
#endif
extern int errno;
EXT bool justonemoretime INIT(true);
EXT bool keepgoing INIT(true);
EXT bool justonemoretime INIT(TRUE);
EXT bool keepgoing INIT(TRUE);
EXT bool friendspec INIT(FALSE);
EXT bool piratespec INIT(FALSE);
EXT bool amoebaspec INIT(FALSE);
EXT bool starspec INIT(FALSE);
EXT bool klingspec INIT(FALSE);
EXT bool apolspec INIT(FALSE);
EXT bool crushspec INIT(FALSE);
EXT bool romspec INIT(FALSE);
EXT bool prespec INIT(FALSE);
EXT bool tholspec INIT(FALSE);
EXT bool gornspec INIT(FALSE);
EXT bool beginner INIT(FALSE);
EXT bool massacre INIT(FALSE);
EXT bool lowspeed INIT(FALSE);
EXT bool debugging INIT(FALSE);
EXT bool didkill INIT(FALSE);
EXT bool experimenting INIT(FALSE);
EXT bool scorespec INIT(FALSE);
EXT bool metakey INIT(FALSE);
EXT bool friendspec INIT(false);
EXT bool piratespec INIT(false);
EXT bool amoebaspec INIT(false);
EXT bool starspec INIT(false);
EXT bool klingspec INIT(false);
EXT bool apolspec INIT(false);
EXT bool crushspec INIT(false);
EXT bool romspec INIT(false);
EXT bool prespec INIT(false);
EXT bool tholspec INIT(false);
EXT bool gornspec INIT(false);
EXT bool beginner INIT(false);
EXT bool massacre INIT(false);
EXT bool lowspeed INIT(false);
EXT bool debugging INIT(false);
EXT bool didkill INIT(false);
EXT bool experimenting INIT(false);
EXT bool scorespec INIT(false);
EXT bool metakey INIT(false);
EXT bool bombed_out;
EXT bool panic INIT(FALSE);
EXT int panic INIT(0);
EXT bool madgorns;
EXT int madfriends;
@ -436,17 +423,6 @@ EXT int yamblast;
EXT int xamblast;
EXT int ambsize;
EXT char spbuf[512];
#define Fclose (void)fclose
#define Fflush (void)fflush
#define Fgets (void)fgets
#define Sprintf (void)sprintf
#define Signal (void)signal
#define Safecpy (void)safecpy
#define Cpytill (void)cpytill
#define Tract (void)tract
#define Make_object (void)make_object
#define Read_tty (void)read_tty
EXT char spbuf[1024];
#endif

View File

@ -27,18 +27,15 @@
#include "weapon.h"
void
weapon_init()
weapon_init(void)
{
;
}
void
fire_torp(from, ydir, xdir)
Reg1 OBJECT *from;
Reg3 int ydir;
Reg4 int xdir;
fire_torp(OBJECT *from, int ydir, int xdir)
{
Reg2 OBJECT *to;
OBJECT *to;
if (from->type == Enemy ||
(from == ent && etorp > 0) ||
@ -101,18 +98,17 @@ Reg4 int xdir;
}
void
attack(attackee)
Reg7 OBJECT *attackee;
attack(OBJECT *attackee)
{
Reg1 int dx;
Reg2 int dy;
Reg3 int curx;
Reg4 int cury;
Reg5 int prob;
Reg6 OBJECT *obj;
Reg8 bool torps;
Reg9 bool webnear = FALSE;
Reg10 bool thru_stars;
int dx;
int dy;
int curx;
int cury;
int prob;
OBJECT *obj;
bool torps;
bool webnear = false;
bool thru_stars;
int nukey;
int nukex;
int nukedist;
@ -129,22 +125,22 @@ Reg7 OBJECT *attackee;
if (dx||dy) {
cury = attackee->posy;
curx = attackee->posx;
torps = thru_stars = FALSE;
torps = thru_stars = false;
if (massacre || madgorns || !rand_mod(53-super) )
webnear += rand_mod(2);
else
webnear = FALSE;
webnear = false;
for (prob = scandist;prob;prob--) {
cury = (cury + dy + YSIZE00) % YSIZE;
curx = (curx + dx + XSIZE00) % XSIZE;
if (obj = occupant[cury][curx]) {
if ((obj = occupant[cury][curx]) != NULL) {
switch (obj->image) {
case 'P': case 'K': case 'R': case ' ':
pot_shot:
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/40+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
if (rand_mod(51 - sm50) <= prob) {
switch (obj->strategy||thru_stars?0:
@ -213,7 +209,7 @@ Reg7 OBJECT *attackee;
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/40+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
goto bombout;
}
if (obj->strategy) {
@ -223,7 +219,7 @@ Reg7 OBJECT *attackee;
}
obj->strategy += (!torps && deados > 10);
if (obj->strategy > 4)
madgorns = TRUE;
madgorns = true;
if (!torps && obj->strategy > 5) {
do {
fire_phaser(obj, -dy, -dx);
@ -249,7 +245,7 @@ Reg7 OBJECT *attackee;
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/40+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
if (thru_stars)
goto bombout;
@ -273,7 +269,7 @@ Reg7 OBJECT *attackee;
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/40+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
if (rand_mod(2))
goto pot_shot;
}
@ -290,45 +286,45 @@ Reg7 OBJECT *attackee;
== attackee->posx &&
(obj->posy + obj->vely + YSIZE00)%YSIZE
== attackee->posy ) {
Tract(nuke,dy,dx,-1);
tract(nuke,dy,dx,-1);
}
else
while (!rand_mod(82-sm80))
Tract(nuke,dy,dx,-1);
tract(nuke,dy,dx,-1);
}
else if (smarts > 60 ||
rand_mod(2+scandist-prob) <
rand_mod(smarts/20+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
torps = FALSE;
thru_stars = FALSE;
torps = false;
thru_stars = false;
break;
case '|': case '-': case '/': case '\\':
if (thru_stars)
goto bombout;
webnear = (scandist-prob < 3);
torps = FALSE;
torps = false;
break;
case 'x':
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/20+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
if (thru_stars)
goto bombout;
torps = TRUE;
torps = true;
break;
case 'o': case 'O': case '0':
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/20+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
if (thru_stars)
goto bombout;
torps = TRUE;
torps = true;
if (rand_mod(99+3*scandist) < smarts+3*prob) {
obj->vely = -dy + attackee->vely;
obj->velx = -dx + attackee->velx;
@ -344,14 +340,14 @@ Reg7 OBJECT *attackee;
}
if (obj->image != '0')
break;
/* DROP THROUGH! */
/*FALLTHROUGH*/
case 'X':
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/20+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
torps = TRUE;
torps = true;
if (thru_stars)
goto bombout;
if (prob == scandist) {
@ -362,13 +358,13 @@ Reg7 OBJECT *attackee;
+= (obj->image == '0' ? 2000 : 200);
yblasted[y] |= 1;
xblasted[x] |= 1;
blasted = TRUE;
blasted = true;
}
break;
case 'A':
if (attackee != nuke) {
if (scandist-prob>1 && !rand_mod(51-super))
Tract(obj,-dy,-dx,1);
tract(obj,-dy,-dx,1);
}
/* FALL THROUGH */
case '*': case '@':
@ -382,19 +378,20 @@ Reg7 OBJECT *attackee;
if (smarts > 55 && scandist-prob > 8) {
if (rand_mod(30+scandist-prob) <
rand_mod(smarts/20+1))
Tract(nuke,dy,dx,1);
tract(nuke,dy,dx,1);
}
}
else if (obj->vely || obj->velx) {
Tract(nuke,dy,dx,1); /* for looks */
tract(nuke,dy,dx,1); /* for looks */
obj->vely = obj->velx = 0;
}
}
if (!thru_stars)
if (!thru_stars) {
if (rand_mod(97-sm95))
goto bombout;
else
thru_stars = TRUE;
thru_stars = true;
}
break;
case '<': case '>':
if (attackee == nuke) {
@ -402,7 +399,7 @@ Reg7 OBJECT *attackee;
rand_mod(2+scandist-prob) <
rand_mod(smarts/20+1) ) {
nuke->mass += 10000;
Tract(nuke,dy,dx,-1);
tract(nuke,dy,dx,-1);
nuke->mass -= 10000;
}
}
@ -411,7 +408,7 @@ Reg7 OBJECT *attackee;
if (attackee == nuke) {
if (rand_mod(2+scandist-prob) <
rand_mod(smarts/40+1))
Tract(nuke,dy,dx,rand_mod(3)?1:-1);
tract(nuke,dy,dx,rand_mod(3)?1:-1);
}
goto bombout;
default:
@ -438,15 +435,12 @@ bombout: ; /* end of loop */
}
void
fire_phaser(obj, dy, dx)
Reg7 OBJECT *obj;
Reg5 int dy;
Reg6 int dx;
fire_phaser(OBJECT *obj, int dy, int dx)
{
Reg1 int y;
Reg2 int x;
Reg3 int skipping;
Reg4 int size=5000;
int y;
int x;
int skipping;
int size=5000;
int decr = 50, oldy, oldx;
static char curchar[] = "@* ";
@ -595,24 +589,20 @@ Reg6 int dx;
blast[y][x] += size*smarts/25;
yblasted[y] |= 1;
xblasted[x] |= 1;
blasted = TRUE;
blasted = true;
}
}
}
}
int
tract(obj, dy, dx, to_or_fro)
Reg7 OBJECT *obj;
Reg4 int dy;
Reg5 int dx;
int to_or_fro;
tract(OBJECT *obj, int dy, int dx, int to_or_fro)
{
Reg1 int y;
Reg2 int x;
Reg3 int size=10;
int y;
int x;
int size=10;
static char ch;
Reg6 OBJECT *tractee;
OBJECT *tractee;
if (!dy)
ch = '|';

View File

@ -15,8 +15,8 @@ EXT OBJECT *isatorp[2][3][3];
EXT int aretorps;
void fire_torp();
void attack();
void fire_phaser();
int tract();
void weapon_init();
void weapon_init(void);
void fire_torp(OBJECT *, int, int);
void attack(OBJECT *);
void fire_phaser(OBJECT *, int, int);
int tract(OBJECT *, int, int, int);