home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / startrek / part07 < prev    next >
Encoding:
Internet Message Format  |  1993-04-06  |  14.5 KB

  1. Path: uunet!haven.umd.edu!darwin.sura.net!zaphod.mps.ohio-state.edu!usc!elroy.jpl.nasa.gov!decwrl!concert!lester.appstate.edu!pembvax1.pembroke.edu!rennie
  2. From: rennie@pembvax1.pembroke.edu
  3. Newsgroups: vmsnet.sources.games
  4. Subject: Star Trek - Part [07/18]
  5. Date: 7 Apr 93 10:51:10 EDT
  6. Organization: Pembroke State University
  7. Lines: 469
  8. Message-ID: <1993Apr7.105110.1@pembvax1.pembroke.edu>
  9. NNTP-Posting-Host: papa.pembroke.edu
  10. Xref: uunet vmsnet.sources.games:649
  11.  
  12. -+-+-+-+-+-+-+-+ START OF PART 7 -+-+-+-+-+-+-+-+
  13. XC`09CRAMSPI CRAMS THE INTEGER NUMBER 'NUM', FOLLOWED BY THE ASCII STRING
  14. XC`09'STRING', FOLLOWED BY THE STRING 'SEND' IF NUM .EQ. 1, OR THE
  15. XC`09STRING 'PEND' IF NUM .NE. 1.
  16. XC
  17. X`09CALL CRAMI(NUM,0)
  18. X`09CALL CRAM(' ')
  19. X`09CALL CRAM(STRING)
  20. X`09IF(NUM.EQ.1)CALL CRAM(SEND)
  21. X`09IF(NUM.NE.1)CALL CRAM(PEND)
  22. X`09RETURN
  23. X`09END
  24. $ CALL UNPACK TRCRAMSP.FOR;1 375922015
  25. $ create 'f'
  26. X      SUBROUTINE CRMSENA(II,JJ,KK,LL)`20
  27. X`09LOGICAL*1 II
  28. X      CALL CRAM3AS
  29. XC*`20
  30. X      ENTRY CRMENA`20
  31. XC*`20
  32. X      CALL CRAMEN(II)`20
  33. X      CALL CRAM(3H AT)
  34. X      CALL CRAMLOC(JJ,KK,LL)
  35. X      RETURN
  36. X      END`20
  37. $ CALL UNPACK TRCRMSENA.FOR;1 2082150202
  38. $ create 'f'
  39. X`09INTEGER FUNCTION CROP(ITEM,COMMAND)
  40. X`09BYTE ITEM(8),COMMAND(8),IT
  41. X`09CROP = .FALSE.
  42. X`09IF (ITEM(1).NE.COMMAND(1)) RETURN
  43. X`09DO 1 I=2,8
  44. X`09IT=ITEM(I)
  45. X`09IF (IT.EQ.' '.OR.IT.EQ.0) GO TO 2
  46. X`09IF (IT.NE.COMMAND(I)) RETURN
  47. X1`09CONTINUE
  48. X2`09CROP = .TRUE.
  49. X`09RETURN
  50. X`09END
  51. $ CALL UNPACK TRCROP.FOR;1 91554704
  52. $ create 'f'
  53. X      SUBROUTINE DEADKL(IX,IY,TYPE,IXX,IYY)`20
  54. X`09INCLUDE 'TREKCOM/NOLIST'
  55. X      EQUIVALENCE (KSTUF(1),ITHERE)  `20
  56. X      BYTE TYPE
  57. X      CALL CRMSENA(TYPE,2,IXX,IYY)
  58. XC--------DECIDE WHAT KIND OF ENEMY IT IS, AND UPDATE APPROPRIATELY
  59. X      IF(TYPE .EQ. IHT) GO TO 30
  60. X      IF(TYPE .EQ. IHR) GO TO 27
  61. X      GALAXY(QUADX,QUADY)=GALAXY(QUADX,QUADY)-100`20
  62. X      KLHERE=KLHERE-1`20
  63. X      REMKL=REMKL-1`20
  64. X      IF(TYPE .EQ. IHK) GO TO 25
  65. X      IF(TYPE .EQ. IHS) GO TO 26
  66. XC--------CHALK UP A COMMANDER`20
  67. X      COMHERE=0`20
  68. X      DO 10 I=1,REMCOM
  69. X      IF(CX(I) .EQ. QUADX .AND. CY(I) .EQ. QUADY)GO TO 15`20
  70. X10    CONTINUE
  71. X15    CX(I)=CX(REMCOM)
  72. X      CY(I)=CY(REMCOM)
  73. X      CX(REMCOM)=0`20
  74. X`09CY(REMCOM)=0
  75. X      REMCOM=REMCOM-1`20
  76. X      FUTURE(2)=1E38`20
  77. X      IF(REMCOM.GT.0) FUTURE(2)=DATE+EXPRAN(FLOAT(INCOM/REMCOM))   `20
  78. X      KILLC=KILLC+1`20
  79. X      GO TO 30
  80. XC--------CHALK UP AN ORDINARY KLINGON`20
  81. X 25   KILLK=KILLK+1`20
  82. X      GO TO 30
  83. XC--------CHALK UP THE (GULP) <SUPER-COMMANDER>.`20
  84. X26`09NSCREM=0
  85. X`09ISHERE=0
  86. X`09ISX=0
  87. X`09ISY=0
  88. X`09NSCKILL=1
  89. X      ISATB=0
  90. X`09ISCATE=0
  91. X      FUTURE(6)=1E38`20
  92. X`09FUTURE(7)=1E38
  93. X      GO TO 30
  94. XC--------CHALK UP A ROMULAN.
  95. X 27   NEWSTUF(QUADX,QUADY)=NEWSTUF(QUADX,QUADY) -10`20
  96. X      IRHERE=IRHERE-1`20
  97. X`09NROMKL=NROMKL+1
  98. X`09NROMREM=NROMREM-1
  99. XC--------FOR EACH KIND OF ENEMY, FINISH MESSAGE TO PLAYER`20
  100. X 30   CALL CRAMDMP(12H DESTROYED. )`20
  101. X      QUAD(IX,IY)=IHDOT`20
  102. X      IF(REMKL .EQ. 0) RETURN`20
  103. X      REMTIME=REMRES/(REMKL+4*REMCOM)`20
  104. XC-------IF ENEMY IS A THOLIAN, SET ITHERE=0 AND RETURN   `20
  105. X      IF(TYPE.EQ.IHT) ITHERE=0
  106. X      IF(TYPE.EQ.IHT) RETURN
  107. X       `20
  108. XC--------REMOVE ENEMY SHIP FROM ARRAYS DESCRIBING LOCAL CONDITIONS
  109. X      DO 40 I=1,NENHERE`20
  110. X      IF(KX(I) .EQ. IX .AND. KY(I) .EQ. IY)GO TO 45`20
  111. X40    CONTINUE
  112. X 45   NENHERE=NENHERE-1`20
  113. X      IF(I .GT. NENHERE) GO TO 55`20
  114. X      DO 50 J=I,NENHERE`20
  115. X      KX(J)=KX(J+1)`20
  116. X      KY(J)=KY(J+1)`20
  117. X      KPOWER(J)=KPOWER(J+1)`20
  118. X 50   KDIST(J)=KDIST(J+1)`20
  119. X55`09KX(NENHERE+1)=0
  120. X`09KY(NENHERE+1)=0
  121. X`09KDIST(NENHERE+1)=0
  122. X`09KPOWER(NENHERE+1)=0
  123. X      RETURN
  124. X      END`20
  125. $ CALL UNPACK TRDEADKL.FOR;1 1728122431
  126. $ create 'f'
  127. X      SUBROUTINE DESTRCT
  128. X`09INCLUDE 'TREKCOM/NOLIST'
  129. X`09LOGICAL*1 ISHIP
  130. X`09REAL*8 IPASS,AITEM
  131. X`09COMMON/SCANBF/KEY,AITEM
  132. X`09EQUIVALENCE(SHIP,ISHIP)
  133. X      IF(DAMAGE(11) .EQ. 0) GO TO 5`20
  134. X      CALL PROUT(`20
  135. X     +   51HCOMPUTER DAMAGED; CANNOT EXECUTE DESTRUCT SEQUENCE.,51)
  136. X      RETURN
  137. X 5    CALL SKIP(1)
  138. X      CALL PROUT(13H---WORKING---,13)
  139. X      CALL PROUT(24HIDENTIFICATION-POSITIVE;,24)`20
  140. X      CALL PROUT(32HSELF-DESTRUCT-SEQUENCE-ACTIVATED,32)`20
  141. X      CALL PROUT( 5H   10,5)
  142. X      CALL PROUT( 8H       9,8)`20
  143. X      CALL PROUT(11H          8,11)
  144. X      CALL PROUT(14H             7,14)`20
  145. X      CALL PROUT(17H                6,17)
  146. X      CALL PROUT(35HENTER-CORRECT-PASSWORD-TO-CONTINUE-,35)
  147. X      CALL PROUT(33HSELF-DESTRUCT-SEQUENCE-OTHERWISE-,33)
  148. X      CALL PROMPT(40HSELF-DESTRUCT-SEQUENCE-WILL-BE-ABORTED: ,40)`20
  149. X      CALL SCAN
  150. X      IF(AITEM .NE. PASSWD) GO TO 30
  151. X      CALL PROUT(17HPASSWORD-ACCEPTED,17)
  152. X      CALL PROUT(11H          5,11)
  153. X      CALL PROUT(14H             4,14)`20
  154. X      CALL PROUT(17H                3,17)
  155. X      CALL PROUT(20H                   2,20)`20
  156. X      CALL PROUT(23H                      1,23)
  157. X      IF(RANF(0) .LT. 0.05) CALL PROUT(19HGOODBYE-CRUEL-WORLD,19)
  158. X      CALL SKIP(2)
  159. XC*`20
  160. X      ENTRY KABOOM
  161. XC*`20
  162. X      CALL STARS
  163. X      IF(ISHIP .EQ. IHE) CALL CRAM3AS
  164. X      CALL CRAM(21H********* ENTROPY OF )`20
  165. X      CALL CRAMSHP
  166. X      CALL CRAMDMP(20H MAXIMIZED *********)`20
  167. X      CALL STARS
  168. X      CALL SKIP(1)
  169. X      IF(NENHERE .EQ. 0) GO TO 20`20
  170. X      WHAMMO=25.0*ENERGY
  171. X      DO 10 L=1,NENHERE`20
  172. X      IF(KPOWER(L)*KDIST(L) .GT. WHAMMO) GOTO 10`20
  173. X      II=KX(1)`09`09!DEADKL SORTS THE KX AND KY ARRAYS AND
  174. X      JJ=KY(1)`09`09!REDUCES THE SIZE
  175. X      CALL DEADKL(II,JJ,QUAD(II,JJ),II,JJ)
  176. X 10   CONTINUE
  177. X 20   CALL FINISH(10)`20
  178. X      RETURN
  179. X 30   CALL PROUT(18HPASSWORD-REJECTED;,18)`20
  180. X      CALL PROUT(19HCONTINUITY-EFFECTED,19)     `20
  181. X      CALL SKIP(2)
  182. X      RETURN
  183. X      END`20
  184. $ CALL UNPACK TRDESTRCT.FOR;1 841308314
  185. $ create 'f'
  186. X      SUBROUTINE DOCK`20
  187. X`09INCLUDE 'TREKCOM/NOLIST'
  188. X      IDIDIT=0
  189. X      IF(CONDIT .EQ. IHDOCKD) GO TO 30`20
  190. X      IF(INORBIT.NE.0) GO TO 40  `20
  191. X      IF(BASEX .EQ. 0) GO TO 5
  192. X      IF(IABS(SECTX-BASEX).LE.1 .AND. IABS(SECTY-BASEY).LE.1)GO TO 10`20
  193. X5     CALL CRAMSHP
  194. X      CALL CRAMDMP(22H NOT ADJACENT TO BASE.)`20
  195. X      RETURN
  196. X10    CONDIT = IHDOCKD
  197. X      CALL PROUT(7HDOCKED.,7)`20
  198. X      IDIDIT=1
  199. X      IF(ENERGY .LT. INENRG) ENERGY=INENRG
  200. X      SHLD=INSHLD`20
  201. X      TORPS=INTORPS`20
  202. X      LSUPRES=INLSR`20
  203. X      RETURN
  204. X 30   CALL PROUT(15HALREADY DOCKED.,15)
  205. X      RETURN
  206. X 40   CALL PROUT(36HYOU MUST FIRST LEAVE STANDARD ORBIT.,36)`20
  207. X      RETURN
  208. X      END`20
  209. $ CALL UNPACK TRDOCK.FOR;1 759313056
  210. $ create 'f'
  211. X      SUBROUTINE DREPORT
  212. X`09INCLUDE 'TREKCOM/NOLIST'
  213. X      INTEGER HDEVICE(40),NAME(2)`20
  214. X      JDAM=0
  215. X      DO 20 L=1,NDEVICE`20
  216. X      IF(DAMAGE(L) .LE. 0) GO TO 20`20
  217. X      IF(JDAM .NE. 0) GO TO 10
  218. X      CALL SKIP(1)
  219. X      CALL PROUT(35HDEVICE               -REPAIR TIMES-,35)
  220. X      CALL PROUT(37H                   IN FLIGHT   DOCKED,37)
  221. X      JDAM=1
  222. X10    CALL CRAM(2H  )`20
  223. X      CALL CRAMS(DEVICE(2*L-1,1),16)`20
  224. X      IF(L.NE.14) CALL CRAMF(DAMAGE(L)+0.005,5,2)`20
  225. X      IF(L.EQ.14) CALL CRAM(5H  -  ) `20
  226. X      CALL CRAMF(DOCKFAC*DAMAGE(L)+0.005,10,2)
  227. X      CALL CREND
  228. X 20   CONTINUE
  229. X      IF(JDAM .EQ. 0) CALL PROUT(23HALL DEVICES FUNCTIONAL.,23)
  230. X      RETURN
  231. X      END`20
  232. $ CALL UNPACK TRDREPORT.FOR;1 1970078264
  233. $ create 'f'
  234. X      SUBROUTINE DROPIN(IQUAD,IX,IY)
  235. X`09INCLUDE 'TREKCOM/NOLIST'
  236. X 10   CALL IRAN10(IX,IY)
  237. X      IF(QUAD(IX,IY) .NE. IHDOT) GO TO 10`20
  238. X      QUAD(IX,IY)=IQUAD`20
  239. X      RETURN     `20
  240. X      END`20
  241. $ CALL UNPACK TRDROPIN.FOR;1 1213092084
  242. $ create 'f'
  243. X$! TREKBLD.COM
  244. X$!
  245. X$! COMMAND PROCEDURE TO BUILD STARTREK
  246. X$!
  247. X$ SET NOON
  248. X$ INQ D "DO YOU WANT TO BUILD A DEBUGGING VERSION?"
  249. X$ DEBUGC :== ""
  250. X$ DEBUGL :== ""
  251. X$ IF D THEN DEBUGC := "/DEBUG=ALL"
  252. X$ IF D THEN DEBUGL := "/DEBUG"
  253. X$ INQ C "DO YOU WANT A CROSS-REFERENCE?"
  254. X$ CREF := ""
  255. X$ IF C THEN CREF := "/CROSS"
  256. X$ COMPOK == 1
  257. X$ BLAB == 1
  258. X$ INQ C "DO YOU WANT TO COMPILE ANYTHING?"
  259. X$ IF .NOT.C THEN GOTO LINK
  260. X$ INQ C "DO YOU WANT TO COMPILE EVERYTHING?"
  261. X$ IF .NOT.C THEN GOTO COMPSOME
  262. X$!
  263. X$ @TREKCOM TRABANDON
  264. X$ @TREKCOM TRATTACK
  265. X$ @TREKCOM TRAUTOVER
  266. X$ @TREKCOM TRCANTA
  267. X$ @TREKCOM TRCHART
  268. X$ @TREKCOM TRCHOOSE
  269. X$ @TREKCOM TRCRAM
  270. X$ @TREKCOM TRCRAMEN
  271. X$ @TREKCOM TRCRAMLOC
  272. X$ @TREKCOM TRCRAMSHP
  273. X$ @TREKCOM TRCRAMSP
  274. X$ @TREKCOM TRCRMSENA
  275. X$ @TREKCOM TRCROP
  276. X$ @TREKCOM TRDEADKL
  277. X$ @TREKCOM TRDESTRCT
  278. X$ @TREKCOM TRDOCK
  279. X$ @TREKCOM TRDREPORT
  280. X$ @TREKCOM TRDROPIN
  281. X$ @TREKCOM TREMEXIT
  282. X$ @TREKCOM TREVENTS
  283. X$ @TREKCOM TREXPRAN
  284. X$ @TREKCOM TRFINISH
  285. X$ @TREKCOM TRFREEZE
  286. X$ @TREKCOM TRGETCD
  287. X$ @TREKCOM TRGETFN
  288. X$ @TREKCOM TRGETOUT
  289. X$ @TREKCOM TRHELP
  290. X$ @TREKCOM TRHITEM
  291. X$ @TREKCOM TRIMPULSE
  292. X$ @TREKCOM TRIRAN8
  293. X$ @TREKCOM TRJA
  294. X$ @TREKCOM TRLRSCAN
  295. X$ @TREKCOM TRMOVE
  296. X$ @TREKCOM TRMOVECOM
  297. X$ @TREKCOM TRMOVETHO
  298. X$ @TREKCOM TRNEWCOND
  299. X$ @TREKCOM TRNEWQUAD
  300. X$ @TREKCOM TRNOVA
  301. X$ @TREKCOM TRPHASERS
  302. X$ @TREKCOM TRPHOTONS
  303. X$ @TREKCOM TRPLANET
  304. X$ @TREKCOM TRPLAQUE
  305. X$ @TREKCOM TRPRELIM
  306. X$ @TREKCOM TRPROUT
  307. X$ @TREKCOM TRRAM
  308. X$ @TREKCOM TRRANF
  309. X$ @TREKCOM TRSCAN
  310. X$ @TREKCOM TRSCOM
  311. X$ @TREKCOM TRSCORE
  312. X$ @TREKCOM TRSETUP
  313. X$ @TREKCOM TRSETWARP
  314. X$ @TREKCOM TRSHIELDS
  315. X$ @TREKCOM TRSKIP
  316. X$ @TREKCOM TRSNOVA
  317. X$ @TREKCOM TRSORTKL
  318. X$ @TREKCOM TRSRSCAN
  319. X$ @TREKCOM TRTREK
  320. X$ @TREKCOM TRTHAW
  321. X$ @TREKCOM TRTIMEWRP
  322. X$ @TREKCOM TRWAIT
  323. X$ @TREKCOM TRWARP
  324. X$ @TREKCOM TRZAP
  325. X$ GOTO LINK
  326. X$!
  327. X$COMPSOME:
  328. X$ BLAB==0
  329. X$ INQ M "TYPE MODULE TO COMPILE, OR RETURN TO LINK"
  330. X$ IF M .EQS. "" THEN GOTO LINK
  331. X$ @TREKCOM TR'M'
  332. X$ GOTO COMPSOME
  333. X$!`20
  334. X$LINK:
  335. X$ IF .NOT.COMPOK THEN GOTO QUIT
  336. X$ IF BLAB THEN WRITE SYS$OUTPUT "Linking..."
  337. X$ FILE = F$SEARCH("*.EXE;*")
  338. X$ IF FILE .NES. "" THEN DELETE/NOCONFIRM TREK.EXE;*
  339. X$ FILE = F$SEARCH("*.MAP;*")
  340. X$ IF FILE .NES. "" THEN DELETE/NOCONFIRM TREK.MAP;*
  341. X$ LINK/EXEC=TREK'DEBUGL''CREF' -
  342. X`09TRABANDON+`09TRATTACK+`09TRAUTOVER+`09TRCANTA+-
  343. X`09TRCHART+`09TRCHOOSE+`09TRCRAM+`09`09TRCRAMEN+-
  344. X`09TRCRAMLOC+`09TRCRAMSHP+`09TRCRAMSP+`09TRCRMSENA+-
  345. X`09TRCROP+`09`09TRDEADKL+`09TRDESTRCT+`09TRDOCK+-
  346. X`09TRDREPORT+`09TRDROPIN+`09TREMEXIT+`09TREVENTS+-
  347. X`09TREXPRAN+`09TRFINISH+`09TRFREEZE+`09TRGETCD+-
  348. X`09TRGETFN+`09TRGETOUT+`09TRHELP+`09`09TRHITEM+-
  349. X`09TRIMPULSE+`09TRIRAN8+`09TRJA+`09`09TRLRSCAN+-
  350. X`09TRMOVE+`09`09TRMOVECOM+`09TRMOVETHO+`09TRNEWCOND+-
  351. X`09TRNEWQUAD+`09TRNOVA+`09`09TRPHASERS+`09TRPHOTONS+-
  352. X`09TRPLANET+`09TRPLAQUE+`09TRPRELIM+`09TRPROUT+-
  353. X`09TRRAM+`09`09TRRANF+`09`09TRSCAN+`09`09TRSCOM+-
  354. X`09TRSCORE+`09TRSETUP+`09TRSETWARP+`09TRSHIELDS+-
  355. X`09TRSKIP+`09`09TRSNOVA+`09TRSORTKL+`09TRSRSCAN+-
  356. X`09TRTREK+`09`09TRTHAW+`09`09TRTIMEWRP+`09TRWAIT+-
  357. X`09TRWARP+`09`09TRZAP
  358. X$!
  359. X$QUIT:
  360. X$ DELETE/NOCONFIRM *.OBJ;*
  361. X$ EXIT
  362. $ CALL UNPACK TREKBLD.COM;1 1299317161
  363. $ create 'f'
  364. X$! TREKCOM.COM
  365. X$!
  366. X$! COMPILE A STARTREK MODULE (OR ANY MODULE, FOR THAT MATTER)
  367. X$!
  368. X$ SET NOON
  369. X$ WRITE SYS$OUTPUT "Compiling ''P1'"
  370. X$ ASSIGN/USER NL: SYS$OUTPUT
  371. X$ ASSIGN/USER NL: SYS$ERROR
  372. X$ DELETE/NOCONFIRM 'P1'.OBJ;*
  373. X$ ASSIGN/USER NL: SYS$OUTPUT
  374. X$ ASSIGN/USER NL: SYS$ERROR
  375. X$ DELETE/NOCONFIRM 'P1'.LIS;*
  376. X$ FORTRAN/NOCHECK'DEBUGC' 'P1'
  377. X$ COMPOK == COMPOK .AND. $STATUS
  378. $ CALL UNPACK TREKCOM.COM;1 1611039306
  379. $ create 'f'
  380. XC
  381. XC`09TREKCOM.FOR`09INCLUDE FILE TO DEFINE COMMONS FOR STARTREK
  382. XC
  383. XC`0926-APR-79
  384. XC
  385. XC`09BLANK COMMON; THIS IS THE GLOBAL DATABASE FOR STARTREK,
  386. XC`09AND CONTAINS ALL INFORMATION NECESSARY TO DETERMINE THE
  387. XC`09STATE OF THE GAME.
  388. XC
  389. XC`09THE PARAMETER COMSIZE DEFINES THE SIZE OF THE COMMON
  390. XC`09IN STORAGE ELEMENTS.  IT MAY NEED TO BE CHANGED IF THINGS ARE
  391. XC`09ADDED TO THE COMMON IN ORDER TO MAKE FREEZE AND THAW
  392. XC`09WORK PROPERLY.  ALWAYS MAKE SURE THAT THE SIZE OF THE
  393. XC`09ARRAY ICOM IS THE SAME AS THE SIZE OF BLANK COMMON.
  394. XC`09IF THEY ARE NOT THE SAME SIZE, CHANGE COMSIZE APPROPRIATELY.
  395. XC
  396. X`09PARAMETER COMSIZE=1222
  397. XC
  398. X`09COMMON SNAP,SNAPSHT(226),`20
  399. X`091   DATE,REMKL,REMCOM,REMBASE,REMRES,REMTIME,STARKL,BASEKL,
  400. X`092   KILLK,KILLC,GALAXY(8,8),CX(10),CY(10),BASEQX(5),BASEQY(5),`20
  401. X`093   NEWSTUF(8,8),PLNETS(10,5),ISX,ISY,NSCREM,NROMKL,NROMREM,
  402. X`094   NSCKILL,ICRYSTL,NPLANKL,`20
  403. X`095   QUAD(10,10),KX(20),KY(20),KPOWER(20),KDIST(20),KSTUF(20), `20
  404. X`096   INKLING,INBASE,INRESOR,INCOM,INTIME,INSTAR,INENRG,INSHLD,
  405. X`097   INTORPS,INLSR,INDATE,ENERGY,SHLD,SHLDUP,CONDIT,TORPS,SHIP,`20
  406. X`098   QUADX,QUADY,SECTX,SECTY,WARPFAC,WFACSQ,LSUPRES,DAMAGE(20),`20
  407. X`099   LENGTH,SKILL,PASSWD,DIST,DIREC,TIME,BASEX,BASEY,DOCKFAC,`20
  408. X`091   KLHERE,COMHERE,CASUAL,NHELP,NKINKS,STARCH(8,8),FUTURE(10),`20
  409. X`092   DEVICE(2,14),IDIDIT,GAMEWON,ALIVE,JUSTIN,RESTING,ALLDONE,
  410. X`093   DAMFAC,SHLDCHG,THINGX,THINGY,NDEVICE,PLNETX,PLNETY,INORBIT,
  411. X`094   LANDED,IPLANET,IMINE,INPLAN,NENHERE,ISHERE,NEUTZ,IRHERE,ICRAFT,
  412. X`095   IENTESC,ISCRAFT,ISATB,ISCATE,CRYPROB,ICITE,IPHWHO,BATX,BATY,`20
  413. X`096   CRACKS(12),
  414. X`097   ICSOS,ISSOS,ISUBDAM
  415. X`09INTEGER SHLDUP,CONDIT,QUADX,QUADY,SECTX,SECTY,TORPS,
  416. X`091   REMKL,REMBASE,SKILL,REMCOM,GALAXY,STARCH,CX,CY,`20
  417. X`092   SHIP,ALLDONE,BASEQX,BASEQY,BASEX,BASEY,GAMEWON,`20
  418. X`093   ALIVE,STARKL,BASEKL,CASUAL,COMHERE,RESTING,SNAP,SHLDCHG,`20
  419. X`094   THINGX,THINGY,BATX,BATY,PLNETX,PLNETY,PLNETS
  420. X`09REAL KDIST,KPOWER,LSUPRES,INTIME,INRESOR,INDATE,INSHLD,  `20
  421. X`091   INENRG,INLSR`20
  422. X`09BYTE QUAD
  423. X`09REAL*8 DEVICE,PASSWD
  424. XC
  425. XC`09ICOM IS AN ARRAY THAT ENCOMPASSES THE ENTIRE COMMON.  IT IS
  426. XC`09USED TO FREEZE AND THAW GAMES.
  427. XC
  428. X`09INTEGER ICOM(COMSIZE)
  429. X`09EQUIVALENCE (ICOM,SNAP)
  430. XC
  431. XC`09COMMON HOLLER; THIS COMMON CONTAINS FREQUENTLY USED CHARACTERS
  432. XC`09AND TEXT STRINGS.  THEIR VALUES ARE DEFINED BY DATA STATEMENTS
  433. XC`09IN THE MODULE STARTRK.
  434. XC
  435. X`09LOGICAL*1 IHS,IHR,IHC,IHK,IHE,IHF,IHBLANK,IHDOT,IHP,IHB,
  436. X`091   IHSTAR,IHT,IHQUEST,IHNUM
  437. X`09COMMON/HOLLER/IHEOL,IHREAL,IHALPHA,IHS,IHR,IHC,IHK,IHGREEN,IHRED,`20
  438. X`091   IHYELLO,IHDOCKD,IHE,IHF,IHBLANK,IHDOT,IHQUEST,IHP,IHSTAR,IHB,
  439. X`092   IHT,IHNUM `20
  440. XC
  441. $ CALL UNPACK TREKCOM.FOR;1 1112500640
  442. $ create 'f'
  443. X`09SUBROUTINE EMEXIT
  444. XC
  445. XC`0913-APR-79 (NEW ROUTINE)
  446. XC`09EMERGENCY EXIT - FREEZE THE GAME ON 'EMSAVE.TRK', ERASE THE
  447. XC`09SCREEN, AND BUG OUT.
  448. XC
  449. X`09INCLUDE 'TREKCOM/NOLIST'
  450. X`09CALL CLOSE(2)
  451. X`09OPEN(UNIT=2,NAME='SYS$DISK:EMSAVE.TRK',TYPE='UNKNOWN',
  452. X`091    FORM='UNFORMATTED',ERR=920)
  453. X`09WRITE(2,ERR=920) COMSIZE,ICOM
  454. X`09CALL CLOSE(2)
  455. X920`09CALL GETOUT
  456. X      RETURN
  457. X      END`20
  458. $ CALL UNPACK TREMEXIT.FOR;1 1182078798
  459. $ create 'f'
  460. X      SUBROUTINE EVENTS`20
  461. XC
  462. XC`0923-OCT-79
  463. XC`09CANCEL TYPEAHEAD WHEN A TRACTOR BEAM OCCURS
  464. XC
  465. X`09INCLUDE 'TREKCOM/NOLIST'
  466. X      DIMENSION PICTURE(226)
  467. X      EQUIVALENCE (PICTURE,DATE),(CRACKS(5),ITYPE)
  468. X      DATA NEVENTS/7/`20
  469. X      ICTBEAM=0`20
  470. X`09ISTRACT=0
  471. XC--------SELECT EARLIEST EXTRANEOUS EVENT (LINE=0 IF NO EVENTS)`20
  472. X 10   LINE=0
  473. X      IF(ALLDONE.NE.0) RETURN`20
  474. X      DATEMIN=DATE+TIME`20
  475. X      DO 20 L=1,NEVENTS`20
  476. X      IF(FUTURE(L) .GT. DATEMIN) GO TO 20`20
  477. X      LINE=L
  478. X      DATEMIN=FUTURE(L)`20
  479. X 20   CONTINUE
  480. +-+-+-+-+-+-+-+-  END  OF PART 7 +-+-+-+-+-+-+-+-
  481.