1 /* $OpenBSD: main.c,v 1.19 2021/01/27 01:57:37 deraadt Exp $ */
2 /* $NetBSD: main.c,v 1.4 1995/04/22 10:59:10 cgd Exp $ */
3
4 /*
5 * Copyright (c) 1980, 1993
6 * The Regents of the University of California. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of the University nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 */
32
33 #include <err.h>
34 #include <setjmp.h>
35 #include <stdio.h>
36 #include <stdlib.h>
37 #include <unistd.h>
38
39 #include "getpar.h"
40 #include "trek.h"
41
42 struct quad Quad[NQUADS][NQUADS];
43 char Sect[NSECTS][NSECTS];
44 struct event Event[MAXEVENTS];
45 struct Ship Ship;
46 struct Game Game;
47 struct Move Move;
48 struct Param Param;
49 struct Now Now;
50 struct Etc Etc;
51
52 /*
53 ** #### ##### # #### ##### #### ##### # #
54 ** # # # # # # # # # # # #
55 ** ### # ##### #### # #### ### ###
56 ** # # # # # # # # # # # #
57 ** #### # # # # # # # # ##### # #
58 **
59 ** C version by Eric P. Allman 5/76 (U.C. Berkeley) with help
60 ** from Jeff Poskanzer and Pete Rubinstein.
61 **
62 ** I also want to thank everyone here at Berkeley who
63 ** where crazy enough to play the undebugged game. I want to
64 ** particularly thank Nick Whyte, who made considerable
65 ** suggestions regarding the content of the game. Why, I'll
66 ** never forget the time he suggested the name for the
67 ** "capture" command.
68 **
69 ** Please send comments, questions, and suggestions about this
70 ** game to:
71 ** Eric P. Allman
72 ** Project INGRES
73 ** Electronics Research Laboratory
74 ** Cory Hall
75 ** University of California
76 ** Berkeley, California 94720
77 **
78 ** If you make ANY changes in the game, I sure would like to
79 ** know about them. It is sort of an ongoing project for me,
80 ** and I very much want to put in any bug fixes and improvements
81 ** that you might come up with.
82 **
83 ** FORTRASH version by Kay R. Fisher (DEC) "and countless others".
84 ** That was adapted from the "original BASIC program" (ha!) by
85 ** Mike Mayfield (Centerline Engineering).
86 **
87 ** Additional inspiration taken from FORTRAN version by
88 ** David Matuszek and Paul Reynolds which runs on the CDC
89 ** 7600 at Lawrence Berkeley Lab, maintained there by
90 ** Andy Davidson. This version is also available at LLL
91 ** and at LMSC. In all fairness, this version was the
92 ** major inspiration for this version of the game (trans-
93 ** lation: I ripped off a whole lot of code).
94 **
95 ** Minor other input from the "Battelle Version 7A" by Joe Miller
96 ** (Graphics Systems Group, Battelle-Columbus Labs) and
97 ** Ross Pavlac (Systems Programmer, Battelle Memorial
98 ** Institute). That version was written in December '74
99 ** and extensively modified June '75. It was adapted
100 ** from the FTN version by Ron Williams of CDC Sunnyvale,
101 ** which was adapted from the Basic version distributed
102 ** by DEC. It also had "neat stuff swiped" from T. T.
103 ** Terry and Jim Korp (University of Texas), Hicks (Penn
104 ** U.), and Rick Maus (Georgia Tech). Unfortunately, it
105 ** was not as readable as it could have been and so the
106 ** translation effort was severely hampered. None the
107 ** less, I got the idea of inhabited starsystems from this
108 ** version.
109 **
110 ** Permission is given for use, copying, and modification of
111 ** all or part of this program and related documentation,
112 ** provided that all reference to the authors are maintained.
113 **
114 **
115 **********************************************************************
116 **
117 ** NOTES TO THE MAINTAINER:
118 **
119 ** There is a compilation option xTRACE which must be set for any
120 ** trace information to be generated (the -t option must also be
121 ** set on the command line). It is no longer defined by default.
122 **
123 ***********************************************************************
124 */
125
126 jmp_buf env;
127
128 int
main(int argc,char ** argv)129 main(int argc, char **argv)
130 {
131 int ac;
132 char **av;
133
134 if (pledge("stdio", NULL) == -1)
135 err(1, "pledge");
136
137 av = argv;
138 ac = argc;
139 av++;
140
141 #ifdef xTRACE
142 Trace = 0;
143 while (ac > 1 && av[0][0] == '-')
144 {
145 switch (av[0][1])
146 {
147 case 't': /* trace */
148 Trace++;
149 break;
150
151 default:
152 printf("Invalid option: %s\n", av[0]);
153
154 }
155 ac--;
156 av++;
157 }
158 #endif
159
160 printf("\n * * * S T A R T R E K * * *\n\nPress return to continue.\n");
161
162 if (setjmp(env))
163 {
164 if ( !getynpar("Another game") )
165 return 0;
166 }
167 do
168 {
169 setup();
170 play();
171 } while (getynpar("Another game"));
172
173 fflush(stdout);
174 return 0;
175 }
176