|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted provided ! 6: * that: (1) source distributions retain this entire copyright notice and ! 7: * comment, and (2) distributions including binaries display the following ! 8: * acknowledgement: ``This product includes software developed by the ! 9: * University of California, Berkeley and its contributors'' in the ! 10: * documentation or other materials provided with the distribution and in ! 11: * all advertising materials mentioning features or use of this software. ! 12: * Neither the name of the University nor the names of its contributors may ! 13: * be used to endorse or promote products derived from this software without ! 14: * specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: char copyright[] = ! 22: "@(#) Copyright (c) 1980 Regents of the University of California.\n\ ! 23: All rights reserved.\n"; ! 24: #endif /* not lint */ ! 25: ! 26: #ifndef lint ! 27: static char sccsid[] = "@(#)main.c 5.6 (Berkeley) 6/26/90"; ! 28: #endif /* not lint */ ! 29: ! 30: # include "trek.h" ! 31: # include <stdio.h> ! 32: # include <sgtty.h> ! 33: # include <setjmp.h> ! 34: ! 35: # define PRIO 00 /* default priority */ ! 36: ! 37: int Mother = 51 + (51 << 8); ! 38: ! 39: /* ! 40: ** #### ##### # #### ##### #### ##### # # ! 41: ** # # # # # # # # # # # # ! 42: ** ### # ##### #### # #### ### ### ! 43: ** # # # # # # # # # # # # ! 44: ** #### # # # # # # # # ##### # # ! 45: ** ! 46: ** C version by Eric P. Allman 5/76 (U.C. Berkeley) with help ! 47: ** from Jeff Poskanzer and Pete Rubinstein. ! 48: ** ! 49: ** I also want to thank everyone here at Berkeley who ! 50: ** where crazy enough to play the undebugged game. I want to ! 51: ** particularly thank Nick Whyte, who made considerable ! 52: ** suggestions regarding the content of the game. Why, I'll ! 53: ** never forget the time he suggested the name for the ! 54: ** "capture" command. ! 55: ** ! 56: ** Please send comments, questions, and suggestions about this ! 57: ** game to: ! 58: ** Eric P. Allman ! 59: ** Project INGRES ! 60: ** Electronics Research Laboratory ! 61: ** Cory Hall ! 62: ** University of California ! 63: ** Berkeley, California 94720 ! 64: ** ! 65: ** If you make ANY changes in the game, I sure would like to ! 66: ** know about them. It is sort of an ongoing project for me, ! 67: ** and I very much want to put in any bug fixes and improvements ! 68: ** that you might come up with. ! 69: ** ! 70: ** FORTRASH version by Kay R. Fisher (DEC) "and countless others". ! 71: ** That was adapted from the "original BASIC program" (ha!) by ! 72: ** Mike Mayfield (Centerline Engineering). ! 73: ** ! 74: ** Additional inspiration taken from FORTRAN version by ! 75: ** David Matuszek and Paul Reynolds which runs on the CDC ! 76: ** 7600 at Lawrence Berkeley Lab, maintained there by ! 77: ** Andy Davidson. This version is also available at LLL ! 78: ** and at LMSC. In all fairness, this version was the ! 79: ** major inspiration for this version of the game (trans- ! 80: ** lation: I ripped off a whole lot of code). ! 81: ** ! 82: ** Minor other input from the "Battelle Version 7A" by Joe Miller ! 83: ** (Graphics Systems Group, Battelle-Columbus Labs) and ! 84: ** Ross Pavlac (Systems Programmer, Battelle Memorial ! 85: ** Institute). That version was written in December '74 ! 86: ** and extensively modified June '75. It was adapted ! 87: ** from the FTN version by Ron Williams of CDC Sunnyvale, ! 88: ** which was adapted from the Basic version distributed ! 89: ** by DEC. It also had "neat stuff swiped" from T. T. ! 90: ** Terry and Jim Korp (University of Texas), Hicks (Penn ! 91: ** U.), and Rick Maus (Georgia Tech). Unfortunately, it ! 92: ** was not as readable as it could have been and so the ! 93: ** translation effort was severely hampered. None the ! 94: ** less, I got the idea of inhabited starsystems from this ! 95: ** version. ! 96: ** ! 97: ** Permission is given for use, copying, and modification of ! 98: ** all or part of this program and related documentation, ! 99: ** provided that all reference to the authors are maintained. ! 100: ** ! 101: ** ! 102: ********************************************************************** ! 103: ** ! 104: ** NOTES TO THE MAINTAINER: ! 105: ** ! 106: ** There is a compilation option xTRACE which must be set for any ! 107: ** trace information to be generated. It is probably defined in ! 108: ** the version that you get. It can be removed, however, if you ! 109: ** have trouble finding room in core. ! 110: ** ! 111: ** Many things in trek are not as clear as they might be, but are ! 112: ** done to reduce space. I compile with the -f and -O flags. I ! 113: ** am constrained to running with non-seperated I/D space, since ! 114: ** we don't have doubleing point hardware here; even if we did, I ! 115: ** would like trek to be available to the large number of people ! 116: ** who either have an 11/40 or do not have FP hardware. I also ! 117: ** found it desirable to make the code run reentrant, so this ! 118: ** added even more space constraints. ! 119: ** ! 120: ** I use the portable C library to do my I/O. This is done be- ! 121: ** cause I wanted the game easily transportable to other C ! 122: ** implementations, and because I was too lazy to do the doubleing ! 123: ** point input myself. Little did I know. The portable C library ! 124: ** released by Bell Labs has more bugs than you would believe, so ! 125: ** I ended up rewriting the whole blessed thing. Trek excercises ! 126: ** many of the bugs in it, as well as bugs in some of the section ! 127: ** III UNIX routines. We have fixed them here. One main problem ! 128: ** was a bug in alloc() that caused it to always ask for a large ! 129: ** hunk of memory, which worked fine unless you were almost out, ! 130: ** which I inevitably was. If you want the code for all of this ! 131: ** stuff, it is also available through me. ! 132: ** ! 133: *********************************************************************** ! 134: */ ! 135: ! 136: jmp_buf env; ! 137: ! 138: main(argc, argv) ! 139: int argc; ! 140: char **argv; ! 141: { ! 142: long vect; ! 143: /* extern FILE *f_log; */ ! 144: register char opencode; ! 145: int prio; ! 146: register int ac; ! 147: register char **av; ! 148: struct sgttyb argp; ! 149: ! 150: av = argv; ! 151: ac = argc; ! 152: av++; ! 153: time(&vect); ! 154: srand(vect); ! 155: opencode = 'w'; ! 156: prio = PRIO; ! 157: if (gtty(1, &argp) == 0) ! 158: { ! 159: if ((argp.sg_ispeed ) < B1200) ! 160: Etc.fast++; ! 161: } ! 162: while (ac > 1 && av[0][0] == '-') ! 163: { ! 164: switch (av[0][1]) ! 165: { ! 166: case 'a': /* append to log file */ ! 167: opencode = 'a'; ! 168: break; ! 169: ! 170: case 'f': /* set fast mode */ ! 171: Etc.fast++; ! 172: break; ! 173: ! 174: case 's': /* set slow mode */ ! 175: Etc.fast = 0; ! 176: break; ! 177: ! 178: # ifdef xTRACE ! 179: case 't': /* trace */ ! 180: if (getuid() != Mother) ! 181: goto badflag; ! 182: Trace++; ! 183: break; ! 184: # endif ! 185: ! 186: case 'p': /* set priority */ ! 187: if (getuid() != Mother) ! 188: goto badflag; ! 189: if (scanf(-1, &av[0][2], "%d", &prio) > 0) ! 190: break; ! 191: ! 192: default: ! 193: badflag: ! 194: printf("Invalid option: %s\n", av[0]); ! 195: ! 196: } ! 197: ac--; ! 198: av++; ! 199: } ! 200: if (ac > 2) ! 201: syserr(0, "arg count"); ! 202: /* ! 203: if (ac > 1) ! 204: f_log = fopen(av[0], opencode); ! 205: */ ! 206: ! 207: printf("\n * * * S T A R T R E K * * *\n\nPress return to continue.\n"); ! 208: ! 209: if (setjmp(env)) ! 210: { ! 211: if ( !getynpar("Another game") ) ! 212: exit(0); ! 213: } ! 214: do ! 215: { ! 216: setup(); ! 217: play(); ! 218: } while (getynpar("Another game")); ! 219: ! 220: fflush(stdout); ! 221: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.