10 REM A PT-BASIC CONVERSION OF A STARTREK PROGRAM - 4/21 WTN 11 REM PROG I STARTED WITH WAS STARTREK.BAS AND STINSTR.TXT 12 REM FOR QBASIC, FILES DATED 11/26/2000 AND 11/22/2000 13 REM STRING ARRAY USAGE REPLACED WITH INDEXED PRINT SUBS 14 REM PTBASIC HAS 1 LETTER ARRAYS, CHANGED K1->K K2->L K3->M 15 REM BUMPED ALL ARRAY DIMENSIONS BY +1 (BY ADDING +1) 16 REM MODIFIED TEXT FORMATTING, ADDED >< MAP INDICATOR 17 REM CHANGED THE WORDINGS OF SOME THINGS (MORE MEMORY!) 18 REM ADDED STATUS REPORT, CHANGED HOW TIME IS SCORED 100 DIM D[6],K[8],L[8],M[8],S[8,8],Q[8,8] 110 PRINT 120 PRINT "ENTER 1 TO PRINT INSTRUCTIONS, 2 TO PAUSE INSTRUCTIONS," 121 PRINT "OR ENTER A NUMBER TO SEED THE GALAXY... "; 122 INPUT I 125 IF I<1 OR I>2 THEN 140 130 GOSUB 2000 140 LET I=ABS(I) 150 IF I<10000 THEN 160 151 LET I=I/5 152 GOTO 150 160 LET I=INT(I) 161 IF I>0 THEN 170 162 LET I=1 170 PRINT "SETTING UP GALAXY NUMBER "; 171 LET Z9=I 172 GOSUB 9400 173 PRINT "..." 174 FOR J=0 TO I 175 LET K=RND(1) 176 NEXT J 179 PRINT 180 DEF FND(N)=SQR((K[I+1]-S1)^2+(L[I+1]-S2)^2) 190 GOSUB 690 191 GOSUB 530 192 LET Q1=X 193 LET Q2=Y 194 LET X=8 195 LET Y=1 196 LET X1=.2075 197 LET Y1=6.28 198 LET X2=3.28 200 LET Y2=1.8 201 LET A=.96 202 LET C=100 203 LET W=10 204 LET K9=B9=0 206 LET S9=400 207 LET T9=3451 208 GOTO 220 209 REM MOD FOR HPBASIC TRUE=1 INSTEAD OF -1 HERE AND ELSEWHERE 210 LET K=K-(N= X1 THEN 240 234 LET N=N*64 235 LET K=-(NA) 241 LET B9=B9-B 242 LET Q[I+1,J+1]=K*C+B*W-INT(RND(1)*X+Y) 243 NEXT J 244 NEXT I 250 IF K9 <= (T9-T0) THEN 260 251 LET T9=T0+K9 260 IF B9>0 THEN 280 270 GOSUB 530 271 LET Q[X+1,Y+1]=Q[X+1,Y+1]-10 272 LET B9=1 280 PRINT "STARTREK" 281 REM PRINT LEFT$("STARTREK ADAPTED BY L.E. COCHRAN 2/29/76",8) 282 LET K0=K9 285 PRINT "========" 286 PRINT 290 PRINT "OBJECTIVE: DESTROY "; 291 LET Z9=K9 292 GOSUB 9400 293 PRINT " KLINGON BATTLE CRUISERS IN "; 294 LET Z9=T9-T0 295 GOSUB 9400 296 PRINT " YEARS." 297 PRINT "THIS GIVES YOU UNTIL STARDATE "; 298 LET Z9=T9 299 GOSUB 9400 300 PRINT " TO COMPLETE YOUR MISSION." 301 PRINT "YOU HAVE "; 302 LET Z9=B9 303 GOSUB 9400 304 PRINT " STARBASE"; 305 IF B9=1 THEN 307 306 PRINT "S"; 307 PRINT " FOR RESUPPLYING YOUR STARSHIP." 309 PRINT 310 LET A=0 311 IF Q1<0 OR Q1>7 OR Q2<0 OR Q2>7 THEN 313 312 GOTO 320 313 LET N=S=K=0 314 GOTO 330 320 LET N=ABS(Q[Q1+1,Q2+1]) 321 LET Q[Q1+1,Q2+1]=N 322 LET S=N-INT(N/10)*10 323 LET K=INT(N/100) 330 LET B=INT(N/10-K*10) 331 GOSUB 530 332 LET S1=X 333 LET S2=Y 340 FOR I=0 TO 7 341 FOR J=0 TO 7 342 LET S[I+1,J+1]=1 343 NEXT J 344 NEXT I 345 LET S[S1+1,S2+1]=2 350 FOR I=0 TO 7 351 LET M[I+1]=0 352 LET X=8 353 IF I >= K THEN 360 354 GOSUB 540 355 LET S[X+1,Y+1]=3 356 LET M[I+1]=S9 360 LET K[I+1]=X 361 LET L[I+1]=Y 362 NEXT I 363 LET I=S 370 IF B <= 0 THEN 380 371 GOSUB 540 372 LET S[X+1,Y+1]=4 380 IF I <= 0 THEN 390 381 GOSUB 540 382 LET S[X+1,Y+1]=5 383 LET I=I-1 384 GOTO 380 390 GOSUB 630 391 IF A#0 THEN 400 392 GOSUB 560 400 IF E <= 0 THEN 1450 410 LET I=1 411 IF D[I+1]>0 THEN 700 420 FOR I=0 TO 7 421 FOR J=0 TO 7 422 LET I9=S[I+1,J+1] 423 IF I9#1 THEN 425 424 PRINT ". "; 425 IF I9#2 THEN 427 426 PRINT "E "; 427 IF I9#3 THEN 429 428 PRINT "K "; 429 IF I9#4 THEN 431 430 PRINT "B "; 431 IF I9#5 THEN 433 432 PRINT "* "; 433 NEXT J 436 IF I=1 THEN 460 437 IF I=2 THEN 470 438 IF I=3 THEN 480 439 IF I=4 THEN 490 440 IF I=5 THEN 500 441 IF I=6 THEN 510 442 IF I=7 THEN 520 443 PRINT 450 NEXT I 451 GOTO 730 460 PRINT " STARDATE ";T 461 GOTO 450 470 PRINT " CONDITION "; 471 IF C9#1 THEN 473 472 PRINT "GREEN" 473 IF C9#2 THEN 475 474 PRINT "YELLOW" 475 IF C9#3 THEN 477 476 PRINT "RED" 477 IF C9#4 THEN 479 478 PRINT "DOCKED" 479 GOTO 450 480 PRINT " QUADRANT "; 481 LET Z9=Q1+1 482 GOSUB 9400 483 PRINT "-"; 484 LET Z9=Q2+1 485 GOSUB 9400 486 PRINT 489 GOTO 450 490 PRINT " SECTOR "; 491 LET Z9=S1+1 492 GOSUB 9400 493 PRINT "-"; 494 LET Z9=S2+1 495 GOSUB 9400 496 PRINT 499 GOTO 450 500 PRINT " ENERGY ";E 501 GOTO 450 510 PRINT " TORPEDOS LEFT =";P 513 GOTO 450 520 PRINT " KLINGONS LEFT =";K9 521 GOTO 450 530 LET X=INT(RND(1)*8) 531 LET Y=INT(RND(1)*8) 532 RETURN 540 GOSUB 530 541 IF S[X+1,Y+1]>1 THEN 540 550 RETURN 560 IF K >= 1 THEN 570 561 RETURN 570 IF C9#4 THEN 580 571 PRINT "STARBASE PROTECTS ENTERPRISE" 572 RETURN 580 FOR I=0 TO 7 581 IF M[I+1] <= 0 THEN 605 590 LET H=M[I+1]*.4*RND(1) 591 LET M[I+1]=M[I+1]-H 592 LET H=H/(FND(0)^.4) 593 LET E=E-H 600 LET Z6=6 601 LET N=E 602 GOSUB 610 605 NEXT I 606 RETURN 610 LET Z9=H 612 GOSUB 9400 614 PRINT " UNIT HIT ON "; 615 GOSUB 1600 616 PRINT " SECTOR "; 617 LET Z9=K[I+1]+1 618 GOSUB 9400 619 PRINT "-"; 620 LET Z9=L[I+1]+1 621 GOSUB 9400 622 PRINT " ("; 623 LET Z9=N 624 GOSUB 9400 625 PRINT " LEFT)" 626 RETURN 630 FOR I=S1-1 TO S1+1 631 FOR J=S2-1 TO S2+1 640 IF I<0 OR I>7 OR J<0 OR J>7 THEN 660 650 IF S[I+1,J+1]#4 THEN 660 651 LET C9=4 652 LET E=E0 653 LET P=P0 654 GOSUB 690 655 RETURN 660 NEXT J 661 NEXT I 662 IF K <= 0 THEN 670 663 LET C9=3 664 RETURN 670 IF E >= E0*.1 THEN 680 671 LET C9=2 672 RETURN 680 LET C9=1 681 RETURN 690 FOR N=0 TO 5 691 LET D[N+1]=0 692 NEXT N 693 RETURN 700 LET Z6=I 701 GOSUB 1600 702 PRINT " DAMAGED. "; 710 LET Z9=D[I+1] 711 GOSUB 9400 712 PRINT " YEARS ESTIMATED FOR REPAIR." 715 PRINT 720 IF A#1 THEN 730 721 RETURN 730 PRINT "COMMAND "; 731 INPUT A 735 IF A<-98 THEN 1520 740 IF A<1 OR A>7 THEN 760 750 IF A=1 THEN 790 751 IF A=2 THEN 390 753 IF A=3 THEN 1330 754 IF A=4 THEN 1220 755 IF A=5 THEN 770 756 IF A=6 THEN 1380 757 GOTO 1700 760 FOR I=0 TO 5 761 LET Z9=I+1 762 GOSUB 9400 763 PRINT " = "; 764 LET Z6=I 765 GOSUB 1600 766 PRINT 767 NEXT I 768 PRINT "7 - STATUS REPORT" 769 GOTO 730 770 IF D[4+1] <= 0 THEN 780 771 PRINT "SPACE CRUD BLOCKING TUBES." 772 LET I=4 773 GOTO 710 780 LET N=15 781 IF P >= 1 THEN 790 782 PRINT "NO TORPEDOES LEFT." 783 GOTO 730 790 IF A#5 THEN 800 791 PRINT "TORPEDO "; 800 PRINT "COURSE (1-8.9) "; 801 INPUT C 802 IF C<1 THEN 730 810 IF C >= 9 THEN 790 820 IF A#5 THEN 830 821 LET P=P-1 822 PRINT "TRACK: "; 823 GOTO 980 830 PRINT "WARP (0-12) "; 831 INPUT W 832 IF W <= 0 OR W>12 THEN 790 840 IF W <= .2 OR D[0+1] <= 0 THEN 860 850 LET Z6=I=0 851 GOSUB 1600 852 PRINT " DAMAGED, MAX IS .2 "; 853 GOSUB 710 854 GOTO 830 860 GOSUB 560 861 IF E <= 0 THEN 1450 870 IF RND(1)>.25 THEN 950 880 LET X=INT(RND(1)*6) 881 IF RND(1)>.5 THEN 910 890 LET D[X+1]=D[X+1]+INT(6-RND(1)*5) 891 PRINT "**SPACE STORM, "; 900 LET Z6=X 901 GOSUB 1600 902 PRINT " DAMAGED**" 903 LET I=X 904 GOSUB 710 905 LET D[X+1]=D[X+1]+1 906 GOTO 950 910 FOR I=X TO 5 911 IF D[I+1]>0 THEN 940 920 NEXT I 930 FOR I=0 TO X 931 IF D[I+1]>0 THEN 940 935 NEXT I 936 GOTO 950 940 LET D[I+1]=.5 941 PRINT "**SPOCK USED A NEW REPAIR TECHNIQUE**" 950 FOR I=0 TO 5 951 IF D[I+1]=0 THEN 970 960 LET D[I+1]=D[I+1]-1 961 IF D[I+1]>0 THEN 970 962 LET D[I+1]=0 963 LET Z6=I 964 GOSUB 1600 965 PRINT " ARE FIXED!" 970 NEXT I 971 LET N=INT(W*8+.5) 972 LET E=E-N-N+.5 973 LET T=T+(W >= 1)+(N/8)*(W<1)+(W-1)*.1*(W>2) 974 LET S[S1+1,S2+1]=1 975 REM ADDED .5 TO N CALC, WAS FUNNY UNDER .125 976 REM ADJUSTED T CALC TO ADJUST FOR DISTANCE 977 REM UPDATED DOCS TO EXPLAIN FORMULA 980 LET Y1=S1+.5 981 LET X1=S2+.5 982 IF T>T9 THEN 1450 990 LET Y=(C-1)*.785398 991 LET X=COS(Y) 992 LET Y=-SIN(Y) 1000 FOR I=1 TO N 1001 LET Y1=Y1+Y 1002 LET X1=X1+X 1003 LET Y2=INT(Y1) 1004 LET X2=INT(X1) 1010 IF X2<0 OR X2>7 OR Y2<0 OR Y2>7 THEN 1190 1020 IF A#5 THEN 1030 1021 LET Z9=Y2+1 1022 GOSUB 9400 1023 PRINT "-"; 1024 LET Z9=X2+1 1025 GOSUB 9400 1026 PRINT " "; 1030 IF S[Y2+1,X2+1]#1 THEN 1040 1035 NEXT I 1036 GOTO 1140 1040 PRINT 1041 IF A#1 THEN 1050 1042 PRINT "BLOCKED BY "; 1050 LET Z9=S[Y2+1,X2+1]-3 1051 IF Z9=1 THEN 1120 1052 IF Z9=2 THEN 1100 1060 PRINT "KLINGON"; 1061 IF A=1 THEN 1130 1070 FOR I=0 TO 7 1071 IF Y2#K[I+1] THEN 1090 1080 IF X2#L[I+1] THEN 1090 1081 LET M[I+1]=0 1090 NEXT I 1091 LET K=K-1 1092 LET K9=K9-1 1093 GOTO 1150 1100 PRINT "STAR"; 1101 IF A#5 THEN 1110 1102 LET S=S-1 1103 GOTO 1150 1110 GOTO 1130 1120 PRINT "STARBASE"; 1121 IF A#5 THEN 1130 1122 LET B=2 1123 GOTO 1150 1130 PRINT " AT SECTOR"; 1131 LET Z9=Y2+1 1132 GOSUB 9400 1133 PRINT "-"; 1134 LET Z9=X2+1 1135 GOSUB 9400 1136 PRINT 1137 LET Y2=INT(Y1-Y) 1138 LET X2=INT(X1-X) 1140 LET S1=Y2 1141 LET S2=X2 1142 LET S[S1+1,S2+1]=2 1143 LET A=2 1144 GOTO 390 1150 PRINT " DESTROYED!"; 1151 IF B#2 THEN 1160 1152 LET B=0 1153 PRINT ". . .GOOD WORK!"; 1154 LET B9=B9-1 1160 PRINT 1161 LET S[Y2+1,X2+1]=1 1162 LET Q[Q1+1,Q2+1]=K*100+B*10+S 1163 IF K9<1 THEN 1480 1170 GOSUB 560 1171 IF E <= 0 THEN 1450 1180 GOSUB 630 1181 GOTO 730 1190 IF A#5 THEN 1200 1191 PRINT "MISSED!" 1192 GOTO 1170 1200 LET Q1=INT(Q1+W*Y+(S1+.5)/8) 1201 LET Q2=INT(Q2+W*X+(S2+.5)/8) 1210 LET Q1=Q1+(Q1<0)-(Q1>7) 1211 LET Q2=Q2+(Q2<0)-(Q2>7) 1212 GOTO 310 1220 LET I=3 1221 IF D[I+1]>0 THEN 700 1230 PRINT "PHASERS READY: ENERGY UNITS TO FIRE "; 1231 INPUT X 1232 IF X <= 0 THEN 730 1240 IF X <= E THEN 1250 1241 PRINT "ONLY GOT";E 1242 GOTO 1230 1250 LET E=E-X 1251 LET Y=K 1252 FOR I=0 TO 7 1253 IF M[I+1] <= 0 THEN 1310 1260 LET H=X/(Y*(FND(0)^.4)) 1261 LET M[I+1]=M[I+1]-H 1270 LET Z6=7 1271 LET N=M[I+1] 1272 GOSUB 610 1280 IF M[I+1]>0 THEN 1310 1290 PRINT "**KLINGON DESTROYED**" 1300 LET K=K-1 1301 LET K9=K9-1 1302 LET S[K[I+1]+1,L[I+1]+1]=1 1303 LET Q[Q1+1,Q2+1]=Q[Q1+1,Q2+1]-100 1310 NEXT I 1311 IF K9<1 THEN 1480 1320 GOTO 1170 1330 LET I=2 1331 IF D[I+1]>0 THEN 700 1340 LET Z6=I 1341 GOSUB 1600 1342 PRINT " FOR QUADRANT "; 1343 LET Z9=Q1+1 1344 GOSUB 9400 1345 PRINT "-"; 1346 LET Z9=Q2+1 1347 GOSUB 9400 1348 PRINT 1350 FOR I=Q1-1 TO Q1+1 1351 FOR J=Q2-1 TO Q2+1 1352 PRINT " "; 1360 IF I<0 OR I>7 OR J<0 OR J>7 THEN 1362 1361 GOTO 1370 1362 PRINT "***"; 1363 GOTO 1375 1370 LET Q[I+1,J+1]=ABS(Q[I+1,J+1]) 1371 LET Z9=Q[I+1,J+1] 1372 GOSUB 9300 1375 NEXT J 1376 PRINT 1377 NEXT I 1378 GOTO 730 1380 LET I=5 1381 IF D[I+1]>0 THEN 700 1390 PRINT "CUMULATIVE GALACTIC MAP FOR STARDATE:";T 1400 FOR I=0 TO 7 1401 FOR J=0 TO 7 1402 IF I=Q1 AND J=Q2 THEN 1406 1403 IF I=Q1 AND J=Q2+1 THEN 1408 1404 PRINT " "; 1405 GOTO 1410 1406 PRINT " >"; 1407 GOTO 1410 1408 PRINT "< "; 1410 IF Q[I+1,J+1] >= 0 THEN 1420 1411 PRINT "***"; 1412 GOTO 1430 1420 LET Z9=Q[I+1,J+1] 1421 GOSUB 9300 1430 NEXT J 1431 PRINT 1432 NEXT I 1433 GOTO 730 1440 PRINT 1441 PRINT "IT IS STARDATE";T 1442 RETURN 1450 GOSUB 1440 1451 PRINT "THANKS TO YOUR BUNGLING, THE FEDERATION WILL BE" 1460 PRINT "CONQUERED BY THE REMAINING "; 1461 LET Z9=K9 1462 GOSUB 9400 1463 PRINT " KLINGON CRUISER"; 1464 IF K9=1 THEN 1466 1465 PRINT "S"; 1466 PRINT "!" 1470 PRINT "YOU ARE DEMOTED TO CABIN BOY!" 1471 GOTO 1510 1480 GOSUB 1440 1481 PRINT "THE FEDERATION HAS BEEN SAVED!" 1490 PRINT "YOU ARE PROMOTED TO ADMIRAL." 1491 LET Z9=K0 1492 GOSUB 9400 1493 PRINT " KLINGONS IN "; 1500 LET Z9=T-T0 1501 GOSUB 9400 1502 PRINT " YEARS. RATING =";INT(K0/(T-T0)*1000) 1510 PRINT "TRY AGAIN? (0=NO 1=YES) "; 1511 INPUT A 1512 IF A=1 THEN 190 1515 GOTO 1530 1520 PRINT 1530 END 1599 REM D$ DEVICE PRINTS DEVICE IN Z6 ADDED SOME 1600 IF Z6#0 THEN 1610 1605 PRINT "WARP ENGINES"; 1610 IF Z6#1 THEN 1620 1615 PRINT "SHORT RANGE SENSORS"; 1620 IF Z6#2 THEN 1630 1625 PRINT "LONG RANGE SENSORS"; 1630 IF Z6#3 THEN 1640 1635 PRINT "PHASORS"; 1640 IF Z6#4 THEN 1650 1645 PRINT "PHOTON TORPEDOES"; 1650 IF Z6#5 THEN 1660 1655 PRINT "GALACTIC RECORDS"; 1660 IF Z6#6 THEN 1670 1665 PRINT "ENTERPRISE FROM"; 1670 IF Z6#7 THEN 1680 1675 PRINT "KLINGON AT"; 1680 RETURN 1699 REM STATUS COMMAND 1700 PRINT "QUADRANT/SECTOR/SCAN "; 1702 LET Z9=Q1+1 1703 GOSUB 9400 1704 PRINT "-"; 1705 LET Z9=Q2+1 1706 GOSUB 9400 1707 PRINT " "; 1710 LET Z9=S1+1 1711 GOSUB 9400 1712 PRINT "-"; 1713 LET Z9=S2+1 1714 GOSUB 9400 1715 PRINT " "; 1720 LET Z9=ABS(Q[Q1+1,Q2+1]) 1721 GOSUB 9300 1722 PRINT 1730 PRINT "ENERGY LEVEL ";E 1735 PRINT "TORPEDO STOCK ";P 1737 PRINT "NUMBER OF STARBASES ";B9 1740 PRINT "KLINGONS REMAINING ";K9 1745 PRINT "YEARS REMAINING ";T9-T 1750 FOR I=0 TO 5 1760 LET Z6=I 1770 GOSUB 1600 1780 PRINT TAB(21); 1790 LET Z6=D[I+1] 1800 IF Z6>0 THEN 1830 1810 PRINT "OK" 1820 GOTO 1880 1830 PRINT "DAMAGED (EST "; 1835 LET Z9=Z6 1840 GOSUB 9400 1850 PRINT " YEARS)" 1880 NEXT I 1890 GOTO 730 1999 REM INSTRUCTIONS SUB 2000 PRINT 2005 PRINT 2006 PRINT 2007 PRINT " IT IS STARDATE 3421 AND THE FEDERATION IS BEING INVADED" 2010 PRINT "BY A BAND OF KLINGON 'PIRATES' WHOSE OBJECTIVE IS TO TEST" 2020 PRINT "OUR DEFENSES. IF EVEN ONE SURVIVES THE TRIAL PERIOD," 2030 PRINT "KLINGON HEADQUARTERS WILL LAUNCH AN ALL-OUT ATTACK." 2040 PRINT "AS CAPTAIN OF THE FEDERATION STARSHIP 'ENTERPRISE', YOUR" 2050 PRINT "MISSION IS TO FIND AND DESTROY THE INVADERS BEFORE THE" 2060 PRINT "TIME RUNS OUT." 2070 PRINT 2080 PRINT " THE KNOWN GALAXY IS DIVIDED INTO 64 QUADRANTS ARRANGED" 2090 PRINT "LIKE A SQUARE CHECKERBOARD, 8 ON A SIDE. EACH QUADRANT" 2100 PRINT "IS LIKEWISE DIVIDED INTO 64 SECTORS ARRANGED AS AN 8 BY 8" 2110 PRINT "SQUARE. EACH SECTOR CAN CONTAIN A KLINGON (K), STAR (*)," 2120 PRINT "STARBASE (B), THE ENTERPRISE HERSELF (E), OR EMPTY SPACE" 2130 PRINT "(.). EACH SECTOR IS ALSO NUMBERED; A STARBASE IN SECTOR" 2140 PRINT "3-5 IS 3 ROWS DOWN FROM THE TOP OF THE SHORT RANGE SCAN" 2150 PRINT "PRINT-OUT, AND 5 SECTORS TO THE RIGHT. DOCKING AT A" 2160 PRINT "STARBASE IS DONE BY OCCUPYING AN ADJACENT SECTOR, AND" 2170 PRINT "REPROVISIONS YOUR STARSHIP WITH ENERGY AND PHOTON" 2180 PRINT "TORPEDOES, AS WELL AS REPAIRING ALL DAMAGES." 2190 PRINT 2191 GOSUB 3000 2200 PRINT "YOUR STARSHIP WILL ACT ON THE FOLLOWING COMMANDS:" 2210 PRINT "COMMAND 1 WARP ENGINE CONTROL IS USED TO MOVE THE" 2220 PRINT " ENTERPRISE. YOU WILL BE ASKED TO SET THE" 2230 PRINT " DISTANCE (MEASURED IN WARPS), AND THE COURSE" 2240 PRINT " FOR THE MOVE. THE AMOUNT OF TIME (IN YEARS)" 2250 PRINT " REQUIRED FOR THE MOVE DEPENDS ON THE WARP" 2260 PRINT " FACTOR - UNDER WARP 1 IS EQUAL TO THE WARP," 2270 PRINT " FROM WARP 1 TO 2 REQUIRES ONE YEAR, AND EACH" 2280 PRINT " WARP EXCEEDING WARP 2 ADDS ANOTHER 0.1 YEAR." 2290 PRINT 2300 PRINT " COURSE - A NUMBER FROM 1 TO 8.999 4 3 2" 2310 PRINT " INDICATING A DIRECTION (STARTING \ ' /" 2320 PRINT " WITH 1 TO THE RIGHT AND INCREASING 5 - * - 1" 2330 PRINT " COUNTERCLOCKWISE). TO MOVE TO THE / ' \" 2340 PRINT " LEFT, USE A COURSE OF 5. (A COURSE 6 7 8" 2350 PRINT " OF 3.5 IS HALFWAY BETWEEN 3 AND 4;" 2370 PRINT " A COURSE OF 8.75 IS THREE-QUARTERS OF" 2380 PRINT " THE WAY FROM 8 TO 1.)" 2390 PRINT 2391 GOSUB 3000 2400 PRINT " WARP - ONE WARP MOVES YOU THE WIDTH OF A" 2410 PRINT " QUADRANT. A WARP OF .5 WILL MOVE YOU HALFWAY" 2420 PRINT " THROUGH A QUADRANT; MOVING DIAGONALLY ACROSS A" 2430 PRINT " QUADRANT TO THE NEXT WILL REQUIRE 1.414 WARPS." 2440 PRINT " WARP 3 WILL MOVE YOU 3 QUADRANTS PROVIDING" 2450 PRINT " NOTHING IN YOUR PRESENT QUADRANT BLOCKS YOUR" 2460 PRINT " EXIT. ONCE YOU LEAVE THE QUADRANT THAT YOU" 2470 PRINT " WERE IN, YOU WILL ENTER HYPERSPACE; COMING OUT" 2480 PRINT " OF HYPERSPACE WILL PLACE YOU RANDOMLY IN THE" 2490 PRINT " NEW QUADRANT. KLINGONS IN A GIVEN QUADRANT" 2500 PRINT " WILL FIRE AT YOU WHENEVER YOU LEAVE, ENTER," 2510 PRINT " OR MOVE WITHIN THE QUADRANT. ENTERING A" 2520 PRINT " COURSE OR WARP OF ZERO CAN BE USED TO RETURN" 2530 PRINT " TO THE COMMAND MODE." 2540 PRINT 2550 PRINT "COMMAND 2 A SHORT RANGE SENSOR SCAN WILL PRINT OUT THE" 2560 PRINT " QUADRANT YOU PRESENTLY OCCUPY SHOWING THE" 2570 PRINT " CONTENT OF EACH OF THE 64 SECTORS, AS WELL" 2580 PRINT " AS OTHER PERTINENT INFORMATION." 2590 PRINT 2591 GOSUB 3000 2600 PRINT "COMMAND 3 THE LONG RANGE SENSOR SCAN SUMMARIZES THE" 2610 PRINT " QUADRANT YOU ARE IN, AND THE ADJOINING ONES." 2620 PRINT " EACH QUADRANT IS REPRESENTED AS A 3-DIGIT" 2630 PRINT " NUMBER; THE FIRST (HUNDREDS) DIGIT IS THE" 2640 PRINT " NUMBER OF KLINGONS IN THAT QUADRANT WHILE THE" 2650 PRINT " MIDDLE DIGIT IS THE NUMBER OF STARBASES, AND" 2660 PRINT " THE UNITS DIGIT IS THE NUMBER OF STARS. AN" 2670 PRINT " ENTRY OF 305 MEANS 3 KLINGONS, NO STARBASES," 2680 PRINT " AND 5 STARS." 2690 PRINT 2700 PRINT "COMMAND 4 FIRE PHASERS; THE PORTION OF THE ENTERPRISE'S" 2710 PRINT " ENERGY THAT YOU SPECIFY WILL BE DIVIDED EVENLY" 2720 PRINT " AMONG THE KLINGONS IN THE QUADRANT AND FIRED" 2730 PRINT " AT THEM. SURVIVING KLINGONS WILL RETALIATE." 2740 PRINT " PHASER FIRE BYPASSES STARS AND STARBASES, BUT" 2750 PRINT " IS ATTENUATED BY THE DISTANCE IT TRAVELS." 2760 PRINT " THE ARRIVING ENERGY DEPLETES THE SHIELD POWER" 2770 PRINT " OF ITS TARGET. ENERGY IS AUTOMATICALLY" 2780 PRINT " DIVERTED TO THE SHIELDS AS NEEDED, BUT IF YOU" 2790 PRINT " RUN OUT OF ENERGY YOU'LL GET FRIED." 2800 PRINT 2801 GOSUB 3000 2810 PRINT "COMMAND 5 PHOTON TORPEDO CONTROL WILL LAUNCH A TORPEDO" 2820 PRINT " ON A COURSE YOU SPECIFY WHICH WILL DESTROY" 2830 PRINT " ANY OBJECT IN ITS PATH. RANGE IS LIMITED TO" 2840 PRINT " THE LOCAL QUADRANT. EXPECT RETURN FIRE FROM" 2850 PRINT " SURVIVING KLINGONS." 2860 PRINT 2870 PRINT "COMMAND 6 THE GALACTIC RECORDS SECTION OF THE SHIP'S" 2880 PRINT " COMPUTER RESPONDS TO THIS COMMAND BY PRINTING" 2890 PRINT " OUT A GALACTIC MAP SHOWING THE RESULTS OF ALL" 2900 PRINT " PREVIOUS SENSOR SCANS." 2910 PRINT 2920 PRINT "COMMAND 7 THE STATUS SECTION OF THE SHIP'S COMPUTER" 2930 PRINT " RESPONDS TO THIS COMMAND BY PRINTING OUT THE" 2940 PRINT " SHIP'S LOCATION AND A 3-DIGIT SCAN, ENERGY AND" 2941 PRINT " TORPEDO SUPPLIES, KLINGONS AND YEARS REMAINING" 2942 PRINT " AND THE STATUS OF YOUR SHIP'S VITAL SYSTEMS." 2950 PRINT 2960 PRINT "ENTER A NUMBER TO SEED THE GALAXY "; 2970 INPUT I 2980 RETURN 3000 IF I<2 THEN 3060 3010 PRINT "---- ENTER A NUMBER TO CONTINUE ---- "; 3020 INPUT Z9 3030 FOR J=1 TO 8 3040 PRINT 3050 NEXT J 3060 RETURN 9299 REM 3-DIGIT PRINT SUB WITH LEADING ZEROS, NUMBER IN Z9 9300 IF Z9 >= 100 THEN 9320 9310 PRINT "0"; 9320 IF Z9 >= 10 THEN 9340 9330 PRINT "0"; 9340 GOTO 9400 9395 REM *** INTEGER PRINT SUBROUTINE *** 9396 REM UP TO 6 DIGITS -999999 TO 999999, NO SPACES PRINTED 9397 REM NUMBER TO PRINT IN Z9, Z8 AND Z7 USED FOR TEMPS 9398 REM IF OUT OF RANGE JUST PRINTS 9399 REM IF NOT INTEGER JUST PRINTS 9400 IF ABS(Z9) <= 999999. THEN 9405 9401 IF Z9=INT(Z9) THEN 9405 9402 PRINT Z9 9403 RETURN 9405 IF Z9 >= 0 THEN 9420 9410 PRINT "-"; 9420 LET Z8=ABS(Z9) 9430 LET Z8=INT(Z8) 9440 IF Z8<10 THEN 9560 9450 IF Z8<100 THEN 9530 9460 IF Z8<1000 THEN 9500 9461 IF Z8<10000 THEN 9470 9462 IF Z8<100000. THEN 9466 9463 LET Z7=INT(Z8/100000.) 9464 LET Z8=Z8-Z7*100000. 9465 GOSUB 9700 9466 LET Z7=INT(Z8/10000) 9467 LET Z8=Z8-Z7*10000 9468 GOSUB 9700 9470 LET Z7=INT(Z8/1000) 9480 LET Z8=Z8-Z7*1000 9490 GOSUB 9700 9500 LET Z7=INT(Z8/100) 9510 LET Z8=Z8-Z7*100 9520 GOSUB 9700 9530 LET Z7=INT(Z8/10) 9540 LET Z8=Z8-Z7*10 9550 GOSUB 9700 9560 LET Z7=Z8 9570 GOSUB 9700 9580 RETURN 9695 REM DIGIT PRINT SUBROUTINE, DIGIT IN Z7 9700 IF Z7=1 THEN 9810 9710 IF Z7=2 THEN 9830 9720 IF Z7=3 THEN 9850 9730 IF Z7=4 THEN 9870 9740 IF Z7=5 THEN 9890 9750 IF Z7=6 THEN 9910 9760 IF Z7=7 THEN 9930 9770 IF Z7=8 THEN 9950 9780 IF Z7=9 THEN 9970 9790 PRINT "0"; 9800 RETURN 9810 PRINT "1"; 9820 RETURN 9830 PRINT "2"; 9840 RETURN 9850 PRINT "3"; 9860 RETURN 9870 PRINT "4"; 9880 RETURN 9890 PRINT "5"; 9900 RETURN 9910 PRINT "6"; 9920 RETURN 9930 PRINT "7"; 9940 RETURN 9950 PRINT "8"; 9960 RETURN 9970 PRINT "9"; 9980 RETURN 9999 END