|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 2157 (0x86d)
Types: TextFile
Names: »main.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Corewars/main.c«
/* main program for MARS interpreter
As usual, this does not do anything important.
Just calls all the proper subroutines in the right order and
opens files.
-- 12/16/88 --- NCP */
#include "interp.h"
#include <ctype.h>
#include <stdio.h>
#include <memory.h>
#include <curses.h>
long atol();
/* memory array -- called "a" for easy typing */
cell a[SIZE];
/* next execution for each player */
stream *exe[MAXPLAY];
/* returns which player won */
int play();
usage()
{
printf("usage: interp cycles file1 file2\n");
printf("--- main\n");
}
/* checks that every element in string is a digit */
int number(str)
char *str;
{
int i = 1;
while (*str && i)
{
if (!isdigit(*str))
i = 0;
str++;
}
return i;
}
initialize()
{
int counter; /* general-purpose counter */
counter = (int) time(0);
#ifndef DEBUG
initscr(); /* for "curses" library */
scrollok(stdscr, 0);
nl();
clear();
refresh();
#endif
#ifdef SUN
xcore_init();
#endif
srand(counter);
for (counter = 0; counter++; counter < SIZE)
memset(a[counter],0,sizeof(cell));
}
main(argc, argv)
int argc;
char *argv[];
{
FILE *f;
int errcode, result;
initialize(); /* initialize all global variables */
if (argc != 4) /* too many or too few */
{
usage();
exit(1);
}
if (!(number(argv[1])))
{
usage();
exit(1);
}
if ((f = fopen(argv[2], "r")) == NULL)
{
printf("%s cannot be opened\n", argv[2]);
exit(1);
}
errcode = load(f, 1);
fclose(f);
if (errcode == 1) {
printf("main: Sorry, but %s is too large to load\n",argv[2]);
exit(1);
}
if ((f = fopen(argv[3], "r")) == NULL)
{
printf("%s cannot be opened\n", argv[3]);
exit(1);
}
errcode = load(f,2);
fclose(f);
if (errcode == 1) {
printf("main: Sorry, but %s is too large to load\n",argv[3]);
exit(1);
}
#ifndef DEBUG
clear();
#endif
result = play(atol(argv[1]));
#ifndef DEBUG
#ifndef SUN
output(0);
#endif
move(21, 0);
if (!result)
printw("nobody won!");
else
printw("%s won!", argv[result + 1]);
move(22, 0);
printw("Hit any key to continue...");
refresh();
getch(errcode);
endwin();
#endif
#ifdef SUN
xcore_done();
#endif
}