0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 1 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:44:55 0 LINE LEVEL C1 1 0 PROGRAM PLAYER 2 0 TEXT COMMON 3 0 BEGIN COMMON 4 0 COMMON /LEDFOR/ ENERGY(8),SHIELD(8),XCORD(8),YCORD(8),TORPS(8), 5 0 + PHA(8),I1,I2,HYPER(8),ISENT(8,10), 6 0 + XPOD(8),YPOD(8),DPOD(8),IPOD(8), 7 0 + SCORE(8),CREW(8),DIR(8),WARP(8),LAUNCH(8),UNIV(100,100), 8 0 + MESSAG(480),THRU,XSHIP(8),CLOAK(8) 9 0 REAL LAUNCH 10 0 INTEGER CREW,HYPER,TORPS 11 0 LOGICAL*1 XSHIP,CLOAK 12 0 BYTE THRU,UNIV,MESSAG 13 0 ENDTEXT 14 0 EQUIVALENCE (A,COMMND) 15 0 LOGICAL*1 OK,DONE,YES,WARN 16 0 BYTE BLANK(80),BUFF(22,22),ISPOT(25),COMMND 17 0 INTEGER WHO 18 0 DATA BLANK/80*' '/ 19 0 DATA OK/.FALSE./ 20 0 C 21 0 CALL ERRSET(64,.TRUE.,.FALSE.,.TRUE.,.FALSE.,) 22 0 WRITE(5,) 10000 23 0 FORMAT('0WELCOME TO MULTI-TREK') 24 0 UNTIL OK DO 25 1 WRITE(5,) 10004 26 1 FORMAT('0THE FOLLOWING VESSELS ARE AVAILIABLE FOR USE.') 27 1 FOR I=1 UNTIL 8 DO 28 2 IF .NOT. XSHIP(I) THEN 29 3 WRITE(5,) I 10011 30 3 FORMAT(' SHIP ',I1) 31 2 ENDIF 32 1 ENDDO 33 1 WRITE(5,) 10012 34 1 FORMAT('$ENTER THE NUMBER OF THE VESSEL YOU WISH TO COMMAND :') 35 1 CALL GETINT(WHO,OK,1,8) 36 1 IF XSHIP(WHO) THEN 37 2 WRITE(5,) 10016 38 2 FORMAT('0THIS SHIP ALREADY HAS A COMMANDER') 39 2 WRITE(5,) 10017 40 2 FORMAT('$DO YOU WISH TO SHARE THIS COMMAND ?') 41 2 CALL YESNO(OK) 42 1 ELSE 43 2 SCORE(WHO)=0. 44 1 ENDIF 45 0 ENDDO 46 0 XSHIP(WHO)=.TRUE. 47 0 CREW(WHO)=CREW(WHO)+1 48 0 C 49 0 C INCREMENT PLAYER COUNT 50 0 IF THRU.GT.0 THEN 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 2 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:44:58 0 LINE LEVEL C1 51 1 THRU=THRU+1 52 0 ELSE 53 1 THRU=1 54 0 ENDIF 55 0 C 56 0 UNTIL DONE DO 57 1 WRITE(5,) 10024 58 1 FORMAT('$',15X,'COMMAND :') 59 1 READ(5,,END=100) A 10025 60 1 FORMAT(A4) 61 1 GOTO 110 62 1 100 CLOSE(UNIT=5) 63 1 110 CONTINUE 64 1 SELECT 65 1 C 66 1 C WARP FACTOR COMMAND 67 1 C 68 1 WHEN COMMND .EQ. 'W' THEN 69 2 WRITE(5,) 10032 70 2 FORMAT('0WARP FACTOR SIR ?') 71 2 CALL GETREL(WARP(WHO),OK,0.,8.) 72 2 IF .NOT. OK THEN 73 3 WARP(WHO)=0. 74 2 ENDIF 75 2 WRITE(5,) WARP(WHO) 10036 76 2 FORMAT('0 WARP FACTOR ',F5.2,' SIR.') 77 2 C 78 2 C COURSE COMMAND 79 2 C 80 1 WHEN COMMND .EQ. 'C' THEN 81 2 WRITE(5,) 10039 82 2 FORMAT('0COURSE SIR ?') 83 2 CALL GETREL(VALUE,OK,0.,12.) 84 2 IF OK THEN 85 3 IF VALUE .GE. 3. THEN 86 4 DIR(WHO)=(15.-VALUE)*30. 87 3 ELSE 88 4 DIR(WHO)=(3.-VALUE)*30. 89 3 ENDIF 90 3 WRITE(5,) VALUE 10046 91 3 FORMAT('0 HEADING ',F5.2,' SIR.') 92 2 ENDIF 93 2 C 94 2 C HYPERSPACE COMMAND 95 2 C 96 1 WHEN COMMND .EQ. 'H' THEN 97 2 IF KOMSTR(A,1,4,'HELP',1).EQ.0 THEN 98 3 WRITE(5,1000) 99 3 1000 FORMAT('0A APPEAR (CLOAKING OFF)',T30,'M SEND MESSAGE',T51, 100 3 1 'T FIRE TORPEDOES'/' C COURSE HEADING',T30,'P FIRE PHASERS', 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 3 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:00 0 LINE LEVEL C1 101 3 2 T51,'W SET WARP SPEED'/' F FADE (CLOAKING ON)',T30, 102 3 3 'Q QUIT',T51,'X DETONATE ANTI-MATTER'/ 103 3 4 ' H HYPERSPACE SETTING',T30,'R STATUS REPORT',T51, 104 3 5 'Z LAUNCH ANTI-MATTER'/' L LOCATE SHIP',T30, 105 3 6 'S SHIELD CHANGE',T51,'HELP DISPLAY HELP MESSAGE'/ 106 3 7 ' DISPLAY IMMEDIATE AREA'/) 107 2 ELSE 108 3 WRITE(5,) HYPER(WHO) 10052 109 3 FORMAT('0CURRENT HYPERSPACE JUMP SETTING IS ',I1,' SIR.') 110 3 WRITE(5,) 10053 111 3 FORMAT('$NEW SETTING ?') 112 3 CALL GETINT(II,OK,1,6) 113 3 IF OK THEN 114 4 HYPER(WHO)=II 115 3 ENDIF 116 2 ENDIF 117 2 C 118 2 C SHIELD COMMAND 119 2 C 120 1 WHEN COMMND .EQ. 'S' THEN 121 2 WRITE(5,) 10059 122 2 FORMAT('0ENGINEERING TO BRIDGE, HOW MUCH ENERGY SIR ?') 123 2 CALL GETREL(VALUE,OK,-1.E36,1.E36) 124 2 IF OK THEN 125 3 IF ENERGY(WHO)-VALUE .GE. 0. .AND. SHIELD(WHO)+VALUE .GE. 0. 126 3 + THEN 127 4 ENERGY(WHO)=ENERGY(WHO)-VALUE 128 4 SHIELD(WHO)=SHIELD(WHO)+VALUE 129 4 WRITE(5,) 10066 130 4 FORMAT('0AYE, CAPTAIN.') 131 3 ELSE 132 4 WRITE(5,) 10067 133 4 FORMAT('0I AM SORRY CAPTAIN, BUT THAT IS IMPOSSIBLE.') 134 3 ENDIF 135 2 ENDIF 136 2 WRITE(5,) SHIELD(WHO) 10068 137 2 FORMAT('0DEFLECTOR SHIELDS ARE NOW AT ',F7.2,' UNITS SIR.') 138 2 C 139 2 C LOCAL SCAN COMMAND 140 2 C 141 1 WHEN COMMND .EQ. ' ' THEN 142 2 CALL CLEAR 143 2 IX1=XCORD(WHO)-10. 144 2 IF IX1 .LT. 1 THEN 145 3 IX1=1 146 2 ENDIF 147 2 IX2=XCORD(WHO)+10. 148 2 IF IX2 .GT. 100 THEN 149 3 IX2=100 150 2 ENDIF 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 4 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:02 0 LINE LEVEL C1 151 2 IY1=YCORD(WHO)-10. 152 2 IF IY1 .LT. 1 THEN 153 3 IY1=1 154 2 ENDIF 155 2 IY2=YCORD(WHO)+10. 156 2 IF IY2 .GT. 100 THEN 157 3 IY2=100 158 2 ENDIF 159 2 IBY=0 160 2 FOR IY=IY1 UNTIL IY2 DO 161 3 IBY=IBY+1 162 3 IBX=1 163 3 FOR IX=IX1 UNTIL IX2 DO 164 4 BUFF(IBX,IBY)=UNIV(IX,IY) 165 4 IBX=IBX+1 166 3 ENDDO 167 2 ENDDO 168 2 IX=IX2-IX1+1 169 2 IY=IY2-IY1+1 170 2 DO 10 IBY=IY,1,-1 171 2 ISC=0 172 2 DO 9 IBX=1,IX 173 2 ISC=ISC+1 174 2 ISPOT(ISC)=BUFF(IBX,IBY) 175 2 IF (ISPOT(ISC) .GE. 49) .AND. (ISPOT(ISC) .LE. 56) .AND. 176 2 + CLOAK(ISPOT(ISC)-48) THEN 177 3 ISPOT(ISC)=46 178 2 ENDIF 179 2 9 CONTINUE 180 2 WRITE(5,) (ISPOT(ISC),ISC=1,IX) 10092 181 2 FORMAT(20X,22(A1,1X)) 182 2 10 CONTINUE 183 2 WRITE(5,) XCORD(WHO),YCORD(WHO) 10093 184 2 FORMAT(30X,'CURRENT POSTION IS ',F5.1,',',F5.1) 185 2 C 186 2 C QUIT COMMAND 187 2 C 188 1 WHEN COMMND .EQ. 'Q' THEN 189 2 WRITE(5,) SCORE(WHO) 10096 190 2 FORMAT('0YOUR CURRENT SCORE IS ',F8.0) 191 2 WRITE(5,) 10097 192 2 FORMAT('$ARE YOU SURE YOU WANT TO QUIT NOW ?') 193 2 CALL YESNO(DONE) 194 2 IF DONE THEN 195 3 CREW(WHO)=CREW(WHO)-1 196 3 IF CREW(WHO) .EQ. 400 THEN 197 4 XSHIP(WHO)=.FALSE. 198 3 ENDIF 199 2 ENDIF 200 2 C 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 5 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:04 0 LINE LEVEL C1 201 2 C REPORT COMMAND 202 2 C 203 1 WHEN COMMND .EQ. 'R' THEN 204 2 WRITE(5,) 10106 205 2 FORMAT('0CURRENT STATUS REPORT, CAPTAIN.') 206 2 WRITE(5,) XCORD(WHO),YCORD(WHO) 10107 207 2 FORMAT(/20X,'LOCATION X:',F5.1,' Y:',F5.1) 208 2 WRITE(5,) WARP(WHO) 10108 209 2 FORMAT(20X,'WARP FACTOR :',F6.2) 210 2 IF DIR(WHO) .GT. 90. THEN 211 3 VALUE=(450.-DIR(WHO))/30. 212 2 ELSE 213 3 VALUE=(90.-DIR(WHO))/30. 214 2 ENDIF 215 2 WRITE(5,) VALUE 10112 216 2 FORMAT(20X,'HEADING :',F5.2) 217 2 WRITE(5,) HYPER(WHO) 10113 218 2 FORMAT(20X,'HYPER SET :',I1) 219 2 WRITE(5,) ENERGY(WHO) 10114 220 2 FORMAT(/20X,'ENERGY :',F7.1) 221 2 WRITE(5,) SHIELD(WHO) 10115 222 2 FORMAT(20X,'DEFLECTORS :',F7.1) 223 2 WRITE(5,) TORPS(WHO) 10116 224 2 FORMAT(20X,'TORPEDOES :',I3) 225 2 WRITE(5,) CREW(WHO) 10117 226 2 FORMAT(20X,'CREW SIZE :',I3) 227 2 WRITE(5,) SCORE(WHO) 10118 228 2 FORMAT(/20X,'RATING :',F8.0) 229 2 C 230 2 C TORPEDO COMMAND 231 2 C 232 1 WHEN COMMND .EQ. 'T' THEN 233 2 IF LAUNCH(WHO) .LT. 0. THEN 234 3 IF TORPS(WHO) .GT. 0 THEN 235 4 WRITE(5,) 10127 236 4 FORMAT('0PHOTON TORPEDO READY, COURSE ?') 237 4 CALL GETREL(VALUE,OK,0.,12.) 238 4 IF OK THEN 239 5 IF VALUE .GE. 3. THEN 240 6 VALUE=(15.-VALUE)*30. 241 5 ELSE 242 6 VALUE=(3.-VALUE)*30. 243 5 ENDIF 244 4 ELSE 245 5 VALUE=DIR(WHO) 246 4 ENDIF 247 4 LAUNCH(WHO)=VALUE 248 4 TORPS(WHO)=TORPS(WHO)-1 249 4 IF TORPS(WHO) .EQ. 0 THEN 250 5 WRITE(5,) 10137 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 6 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:07 0 LINE LEVEL C1 251 5 FORMAT('0TORPEDO ROOM TO BRIDGE.') 252 5 WRITE(5,) 10138 253 5 FORMAT(20X,'THIS IS OUR LAST TORPEDO SIR.') 254 4 ENDIF 255 4 WRITE(5,) VALUE 10139 256 4 FORMAT('0TORPEDO LAUNCHED, HEADING ',F7.2,' DEGREES.') 257 3 ELSE 258 4 WRITE(5,) 10140 259 4 FORMAT('0SO SORRY CAPTAIN, BUT WE ARE OUT OF TORPEDOES') 260 3 ENDIF 261 2 ELSE 262 3 WRITE(5,) 10141 263 3 FORMAT('0TORPEDO TUBES ARE NOT READY YET CAPTAIN !') 264 2 ENDIF 265 2 C 266 2 C PHASER COMMAND 267 2 C 268 1 WHEN COMMND .EQ. 'P' THEN 269 2 IF PHA(WHO) .LT. 0. THEN 270 3 WRITE(5,) 10147 271 3 FORMAT('0PHASER CONTROL READY. COURSE ?') 272 3 CALL GETREL(VALUE,OK,0.,12.) 273 3 IF OK THEN 274 4 IF VALUE .GE. 3. THEN 275 5 VALUE=(15.-VALUE)*30. 276 4 ELSE 277 5 VALUE=(3.-VALUE)*30. 278 4 ENDIF 279 3 ELSE 280 4 VALUE=DIR(WHO) 281 3 ENDIF 282 3 PHA(WHO)=VALUE 283 3 ENERGY(WHO)=ENERGY(WHO)-50. 284 3 WRITE(5,) 10154 285 3 FORMAT('0PHASERS FIRED CAPTAIN') 286 2 ELSE 287 3 WRITE(5,) 10155 288 3 FORMAT('0PHASER CONTROL TO BRIDGE, PHASERS ARE NOT READY YET.') 289 2 ENDIF 290 2 C 291 2 C LONG RANGE SCAN COMMAND 292 2 C 293 1 WHEN COMMND .EQ. 'L' THEN 294 2 WRITE(5,) 10158 295 2 FORMAT('0SPOCK HERE CAPTAIN.') 296 2 WRITE(5,) 10159 297 2 FORMAT('$ON WHAT FREQUENCY SHOULD I SET THE SCAN ?') 298 2 CALL GETINT(II,OK,1,8) 299 2 IF OK THEN 300 3 IX=XCORD(II)/10. 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 7 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:09 0 LINE LEVEL C1 301 3 IY=YCORD(II)/10. 302 3 WRITE(5,) IX,IY 10163 303 3 FORMAT(' SCANNERS REPORT LIFE FORMS IN SECTOR ',I3,','I3) 304 3 X=IX*10 305 3 Y=IY*10 306 3 D=ATAN2(Y-YCORD(WHO),X-XCORD(WHO))*180./3.14159 307 3 IF D .GT. 90. THEN 308 4 D=(450.-D)/30. 309 3 ELSE 310 4 D=(90.-D)/30. 311 3 ENDIF 312 3 WRITE(5,) 10167 313 3 FORMAT('0SPOCK HERE CAPTAIN,') 314 3 WRITE(5,) D 10168 315 3 FORMAT(' I APPROXIMATE A COURSE OF ',F13.9,' WOULD TAKE') 316 3 WRITE(5,) 10169 317 3 FORMAT(' US TO THE CENTER OF THAT SECTOR.') 318 2 ENDIF 319 2 C 320 2 C MESSAGE COMMAND 321 2 C 322 1 WHEN COMMND .EQ. 'M' THEN 323 2 WRITE(5,) 10172 324 2 FORMAT('$UHURA HERE CAPTAIN, TO WHOM ARE WE SENDING?') 325 2 CALL GETINT(IVAL,OK,1,8) 326 2 IF .NOT. OK THEN 327 3 IVAL=WHO 328 2 ENDIF 329 2 WRITE(5,) 10176 330 2 FORMAT('0MESSAGE CAPTAIN ?') 331 2 READ(5,,END=12) (MESSAG(I),I=IVAL*60-58,IVAL*60) 10177 332 2 FORMAT(60A1) 333 2 GOTO 13 334 2 12 CLOSE(UNIT=5) 335 2 13 CONTINUE 336 2 ENERGY(WHO)=ENERGY(WHO)-10. 337 2 ENCODE(1,,COMMND) WHO 10178 338 2 FORMAT(I1) 339 2 CALL STRMOV(COMMND,1,1,MESSAG,IVAL*60-59) 340 2 C 341 2 C CLOAKING COMMAND 342 2 C 343 1 WHEN COMMND .EQ. 'F' THEN 344 2 IF .NOT. CLOAK(WHO) THEN 345 3 CLOAK(WHO)=.TRUE. 346 3 TYPE *,' SPOCK HERE CAPTAIN.' 347 3 TYPE *,' CLOAKING DEVICE COMING ON NOW!' 348 3 TYPE *,' WE ARE FADING OUT.....' 349 2 ELSE 350 3 TYPE *,' BUT CAPTAIN WE ARE ALREADY CLOAKED ?!' 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 8 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:11 0 LINE LEVEL C1 351 2 ENDIF 352 2 C 353 1 WHEN COMMND .EQ. 'A' THEN 354 2 IF CLOAK(WHO) THEN 355 3 CLOAK(WHO)=.FALSE. 356 3 TYPE *,' SPOCK HERE CAPTAIN.' 357 3 TYPE *,' CLOAKING DEVICE DEACTIVATED.' 358 3 TYPE *,' WE ARE NOW VISABLE.....' 359 2 ELSE 360 3 TYPE *,' BUT CAPTAIN WE ARE NOT CLOAKED !' 361 2 ENDIF 362 2 C 363 2 C 364 2 C EXPLODE ANTI-MATTER DEVICE 365 2 C 366 1 WHEN COMMND .EQ. 'X' THEN 367 2 IF IPOD(WHO) .EQ. 2 THEN 368 3 IPOD(WHO)=3 369 3 WRITE(5,) 10194 370 3 FORMAT('0ANTI-MATTER DETONATION SIGNALED, SIR!') 371 2 ELSE 372 3 WRITE(5,) 10195 373 3 FORMAT('0CAPTAIN, WE DO NOT HAVE AN ACTIVE ANTI MATTER ', 374 3 + 'DEVICE.') 375 2 ENDIF 376 2 C 377 2 C LAUNCH ANTI-MATTER DEVICE 378 2 C 379 1 WHEN COMMND .EQ. 'Z' THEN 380 2 IF IPOD(WHO) .EQ. 0 THEN 381 3 WRITE(5,) 10201 382 3 FORMAT('0ANTI MATTER DEVICE READY SIR, COURSE ?') 383 3 CALL GETREL(VALUE,OK,0.,12.) 384 3 IF OK THEN 385 4 IF VALUE .GE. 3. THEN 386 5 DPOD(WHO)=(15.-VALUE)*30. 387 4 ELSE 388 5 DPOD(WHO)=(3.-VALUE)*30. 389 4 ENDIF 390 3 ELSE 391 4 DPOD(WHO)=DIR(WHO) 392 3 ENDIF 393 3 IPOD(WHO)=1 394 2 ELSE 395 3 WRITE(5,) 10208 396 3 FORMAT('0SORRY CAPTAIN, BUT WE ARE OUT OF ANTI-MATTER PODS') 397 2 ENDIF 398 1 OTHERWISE 399 2 WRITE(5,) 10210 400 2 FORMAT('0I AM SORRY CAPTAIN, BUT I DID NOT UNDERSTAND THAT.') 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 9 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:13 0 LINE LEVEL C1 401 1 ENDS 402 1 C 403 1 C WRITE SCORES 404 1 WRITE(5,) (SCORE(K),K=1,8) 10211 405 1 FORMAT(' SCORES:',7(F7.0,2X),F7.0) 406 1 C 407 1 C * WRITE OUT MESSAGES FROM DRIVER 408 1 C 409 1 FOR I=1 UNTIL 10 DO 410 2 SELECT USING ISENT(WHO,I) 411 2 WHEN 1 THEN 412 3 TYPE *,' WE ARE NOW DOCKED CAPTAIN.' 413 2 WHEN 2 THEN 414 3 TYPE *,' ** CAPTAIN ! WE HIT A STAR! **' 415 2 WHEN 3 THEN 416 3 FOR IK=1 UNTIL 3 DO 417 4 CALL CLEAR 418 4 WRITE(5,) 10228 419 4 FORMAT(////////////,25X,'*** BOOM ***') 420 3 ENDDO 421 3 WRITE(5,) 10229 422 3 FORMAT(//' YOU',1H','RE SHIP HAS BEEN DESTROYED') 423 3 TYPE *,' FORTUNATELY YOU ESCAPED WITH YOUR LIFE.' 424 3 TYPE *,' UNFORTUNATELY, YOU HAVE BEEN GIVEN A NEW COMMAND.' 425 3 WRITE(5,) 10230 426 3 FORMAT(/'$ARE YOU READY TO ACCEPT THIS ASSIGNMENT ?') 427 3 CALL YESNO(YES) 428 3 IF YES THEN 429 4 TYPE *,' GOOD!' 430 3 ELSE 431 4 TYPE *,' TOUGH LUCK, BUT YOU GET IT ANYWAY.' 432 3 ENDIF 433 3 XSHIP(WHO)=.TRUE. 434 2 WHEN 4 THEN 435 3 WRITE(5,) 10236 436 3 FORMAT(' CAPTAIN WE HAVE BEEN HIT BY A PHOTON TORPEDO') 437 2 WHEN 5 THEN 438 3 TYPE *,' * TORPEDO HIT ALIEN SHIP, SIR. *' 439 2 WHEN 6 THEN 440 3 TYPE *,' * PHASER HIT ON ALIEN VESSEL, SIR *' 441 2 WHEN 7 THEN 442 3 TYPE *,' PHASER HIT ON TORPEDO, SIR' 443 2 WHEN 8 THEN 444 3 TYPE *,' PHASER MISSED' 445 2 WHEN 9 THEN 446 3 WRITE(5,) 10247 447 3 FORMAT(' ** SIR! WE HAVE RAMMED AN ALIEN VESSEL **') 448 3 C 449 2 WHEN 10 THEN 450 3 WRITE(5,) 10250 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 10 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:15 0 LINE LEVEL C1 451 3 FORMAT(' * SIR! WE HAVE COLLIDED WITH AN ALIEN VESSEL *') 452 3 C 453 2 WHEN 11 THEN 454 3 TYPE *,' PHASER HIT ON STAR SIR' 455 3 C 456 2 WHEN 12 THEN 457 3 TYPE *,' BASE REPORTS THEY ARE BEING ATTACKED SIR.' 458 3 C 459 2 WHEN 13 THEN 460 3 TYPE *,' TORPEDO HIT ON STAR SIR' 461 3 C 462 2 WHEN 14 THEN 463 3 WRITE(5,) 10259 464 3 FORMAT(' SIR, WE ARE UNDER PHASER ATTACK!') 465 3 C 466 2 WHEN 15 THEN 467 3 TYPE *,' SPOCK HERE CAPTAIN.' 468 3 TYPE *,' WE ARE BEING DRAWN INTO SOME SORT OF BLACK HOLE,' 469 3 TYPE *,' IT IS UNLIKE ANYTHING I HAVE EVER ENCOUNTERED.' 470 3 TYPE *,' FACINATING.' 471 3 CALL WAIT(2,2,M) 472 3 C 473 2 WHEN 16 THEN 474 3 TYPE *,' SCOTT HERE CAPTAIN' 475 3 TYPE *,' OUR DYLITHIUM CRYSTALS ARE GONE. LIFE SUPPORT IS ' 476 3 TYPE *,' FAILING ...!' 477 3 CALL WAIT(2,2,M) 478 3 C 479 2 WHEN 17 THEN 480 3 TYPE *,' CAPTAIN WE ARE GOING INTO HYPERSPACE' 481 3 C 482 2 WHEN 18 THEN 483 3 TYPE *,' HYPERSPACE JUMP BLOCKED SIR .' 484 2 WHEN 19 THEN 485 3 TYPE *,' SIR! WE ARE ENTERING SOME SORT OF HYPERSPACE FIELD' 486 2 WHEN 20 THEN 487 3 TYPE *,' TORPEDO HIT ON TORPEDO SIR !.' 488 2 WHEN 21 THEN 489 3 TYPE *,' HIT HAD NO EFFECT, APPARENTLY IT IS A GHOST SHIP' 490 3 C 491 2 WHEN 22 THEN 492 3 TYPE *,' SULU HERE CAPTAIN,' 493 3 TYPE *,' THE ALIEN VESSEL HAS BEEN DESTROYED' 494 3 TYPE *,' ***********************************' 495 3 C 496 2 WHEN 23 THEN 497 3 TYPE *,' ANTI-MATTER POD LAUNCH WAS BLOCKED SIR' 498 3 C 499 2 WHEN 24 THEN 500 3 TYPE *,' ANTI-MATTER POD HAS BEEN DESTROYED' 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 11 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:18 0 LINE LEVEL C1 501 3 C 502 2 WHEN 25 THEN 503 3 TYPE *,' PHASER HIT ON ANTI-MATTER POD, SIR!' 504 3 C 505 2 WHEN 26 THEN 506 3 TYPE *,' TORPEDO HIT ON ANTI-MATTER POD, SIR!' 507 3 C 508 2 WHEN 27 THEN 509 3 TYPE *,' SIR, SENSORS REPORT A METALLIC OBJECT IS NEAR' 510 3 C 511 2 WHEN 28 THEN 512 3 TYPE *,' ANTI-MATTER POD SUCCESSFULLY LAUNCHED, SIR.' 513 3 C 514 2 WHEN 29 THEN 515 3 TYPE *,' ** ANTI-MATTER POD DETONATED SIR **' 516 3 C 517 2 WHEN 30 THEN 518 3 WRITE(5,) 10292 519 3 FORMAT(' SIR, WE ARE CAUGHT IN AN ANTI-MATTER EXPLOSION!') 520 3 CALL WAIT(2,2,M) 521 3 C 522 2 WHEN 31 THEN 523 3 WRITE(5,) 10295 524 3 FORMAT(' IIEEEEEE!') 525 3 C 526 2 OTHERWISE 527 3 CONTINUE 528 2 ENDS 529 2 ISENT(WHO,I)=0 530 1 ENDDO 531 1 IF MESSAG(WHO*60-59) .NE. ' ' THEN 532 2 WRITE(5,) 10300 533 2 FORMAT('0CAPTAIN, A MESSAGE IS COMING IN ON SUB SPACE RADIO') 534 2 WRITE(5,) MESSAG(WHO*60-59) 10301 535 2 FORMAT(' FREQUENCY ',A1,' ***') 536 2 WRITE(5,) (MESSAG(I),I=WHO*60-58,WHO*60) 10302 537 2 FORMAT(10X,60A1) 538 2 CALL STRMOV(BLANK,1,60,MESSAG,WHO*60-59) 539 2 CALL WAIT(2,2,M) 540 1 ENDIF 541 1 IF (ENERGY(WHO) .LT. 900.) .AND. WARN THEN 542 2 TYPE *,' SCOTT HERE CAPTAIN,' 543 2 TYPE *,' OUR ENERGY SUPPLY IS GETTING DANGEROUSLY LOW, SIR.' 544 2 WARN=.FALSE. 545 1 ELSE 546 2 WARN=.TRUE. 547 1 ENDIF 548 0 ENDDO 549 0 C 550 0 C DECREMENT PLAYER COUNT 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF PROGRAM PLAYER PAGE 12 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:20 0 LINE LEVEL C1 551 0 THRU=THRU-1 552 0 STOP 553 0 END 0 PROGRAM PLAYER 1 0 INDENT= 4 WARN= OFF SUBROUTINE GETREL(VARI,EXIST,LOW,HIGH) PAGE 1 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:20 0 LINE LEVEL C1 1 0 SUBROUTINE GETREL(VARI,EXIST,LOW,HIGH) 2 0 C 3 0 LOGICAL*1 EXIST,OK 4 0 REAL VARI,LOW,HIGH 5 0 BYTE INPUT(15),LEFTED(15) 6 0 INTEGER NCHRS 7 0 OK=.FALSE. 8 0 UNTIL OK 9 0 .DO 10 1 FOR I=1 UNTIL 15 11 1 . DO 12 2 LEFTED(I)=' ' 13 1 ENDDO 14 1 TYPE 99 15 1 99 FORMAT(1H$,'>') 16 1 READ(5,100,END=800) NCHRS,(INPUT(I),I=1,15) 17 1 100 FORMAT(Q,15A1) 18 1 GOTO 810 19 1 800 CLOSE(UNIT=5) 20 1 810 CONTINUE 21 1 SELECT 22 1 WHEN NCHRS .EQ. 0 23 1 . THEN 24 2 OK=.TRUE. 25 2 EXIST=.FALSE. 26 1 WHEN NCHRS .LE. 15 THEN 27 1 C * LEFT ADJUST INPUT 28 2 CALL STRMOV(INPUT,1,NCHRS,LEFTED,16-NCHRS) 29 2 DECODE(15,,LEFTED,ERR=200) VARI 10014 30 2 FORMAT(G15.0) 31 2 IF VARI .GE. LOW .AND. VARI .LE. HIGH 32 2 . THEN 33 3 OK=.TRUE. 34 3 EXIST=.TRUE. 35 2 ELSE 36 3 WRITE(5,) 10018 37 3 FORMAT('0SORRY CAPTAIN, BUT YOUR COMMAND',1H','S PARAMETER') 38 3 WRITE(5,150) LOW,HIGH 39 3 150 FORMAT(1H ,'MUST BE BETWEEN ',F15.4,' AND ',F15.4) 40 2 ENDIF 41 2 GO TO 300 42 2 200 TYPE *,'WOULD YOU PLEASE REPEAT THAT SIR ?' 43 2 300 CONTINUE 44 1 OTHERWISE 45 2 WRITE(5,) 10020 46 2 FORMAT(' RUN THAT BY ME AGAIN !') 47 1 ENDS 48 0 ENDDO 49 0 RETURN 50 0 END 0 SUBROUTINE GETREL(VARI,EXIST,LOW,HIGH) 1 0 INDENT= 4 WARN= OFF SUBROUTINE GETINT(NUM,FLAG,LOW,HIGH) PAGE 1 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:22 0 LINE LEVEL C1 1 0 SUBROUTINE GETINT(NUM,FLAG,LOW,HIGH) 2 0 INTEGER NUM,LOW,HIGH 3 0 LOGICAL*1 OK,FLAG 4 0 OK=.FALSE. 5 0 UNTIL OK DO 6 1 READ(5,,END=800,ERR=200) NCHRS,NUM 10003 7 1 FORMAT(Q,I5) 8 1 GOTO 810 9 1 800 CLOSE(UNIT=5) 10 1 810 CONTINUE 11 1 IF NCHRS .EQ. 0 THEN 12 2 FLAG=.FALSE. 13 2 OK=.TRUE. 14 1 ELSE 15 2 IF (NUM .GE. LOW) .AND. (NUM .LE. HIGH) THEN 16 3 OK=.TRUE. 17 3 FLAG=.TRUE. 18 2 ELSE 19 3 WRITE(5,) 10010 20 3 FORMAT('0WHAT ? THAT COMMAND REQUIRES A NUMBER THAT IS') 21 3 WRITE(5,) LOW,HIGH 10011 22 3 FORMAT(' BETWEEN ',I5,' AND ',I5) 23 3 WRITE(5,) 10012 24 3 FORMAT(1H$,' TRY AGAIN :') 25 2 ENDIF 26 2 GOTO 300 27 2 200 WRITE(5,100) 28 2 100 FORMAT(1H$,' TRY AGAIN BOZO :') 29 2 300 CONTINUE 30 1 ENDIF 31 0 ENDDO 32 0 RETURN 33 0 END 0 SUBROUTINE GETINT(NUM,FLAG,LOW,HIGH) 1 0 INDENT= 4 WARN= OFF SUBROUTINE YESNO(FLAG) PAGE 1 KEEP= ON SELECT= GO PUNCH= OFF LABEL= 10000 10-APR-79 INLIST= ON C1= P 08:45:24 0 LINE LEVEL C1 1 0 SUBROUTINE YESNO(FLAG) 2 0 LOGICAL*1 FLAG,OK 3 0 BYTE YES(4),NO(4) 4 0 BYTE ANSWER(4) 5 0 DATA YES/'Y','E','S',' '/ 6 0 DATA NO/'N','O',' ',' '/ 7 0 OK=.FALSE. 8 0 UNTIL OK DO 9 1 READ(5,,END=800) NCHRS, (ANSWER(I),I=1,4) 10003 10 1 FORMAT(Q,4A1) 11 1 GOTO 810 12 1 800 CLOSE(UNIT=5) 13 1 810 CONTINUE 14 1 IF (NCHRS .GT. 4) .OR. (NCHRS .LT. 1) THEN 15 2 NCHRS=4 16 1 ENDIF 17 1 C * CHECK FOR YES 18 1 I=KOMSTR(YES,1,NCHRS,ANSWER,1) 19 1 IF I .EQ. 0 THEN 20 2 FLAG=.TRUE. 21 2 OK=.TRUE. 22 1 ELSE 23 1 C * CHECK FOR A NO 24 2 I=KOMSTR(NO,1,NCHRS,ANSWER,1) 25 2 IF I .EQ. 0 THEN 26 3 FLAG=.FALSE. 27 3 OK=.TRUE. 28 2 ELSE 29 2 C * INCORRECT RESPONSE 30 3 WRITE(5,) 10013 31 3 FORMAT('0** PLEASE ANSWER "YES" OR "NO" **') 32 3 WRITE(5,) 10014 33 3 FORMAT('$ ANSWER ? ') 34 2 ENDIF 35 1 ENDIF 36 0 ENDDO 37 0 RETURN 38 0 END 0 SUBROUTINE YESNO(FLAG)