From: Eric S. Raymond Date: Wed, 1 Dec 2010 00:42:31 +0000 (-0500) Subject: Add the website files to the git repo. X-Git-Tag: 2.0~6 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=cc324b5480fa490496b4a89b72c9e23e9e518260;p=super-star-trek.git Add the website files to the git repo. Sigh. The website actually started in 2004 and was last updated in 2006. Metadata and some history are lost because I used a nonstandard Subversion branch layout putting this stuff under 'www'; nprmal up-conversion via git-svn threw this out. --- diff --git a/www/historic/UT-Trek.basic b/www/historic/UT-Trek.basic new file mode 100644 index 0000000..452bf0a --- /dev/null +++ b/www/historic/UT-Trek.basic @@ -0,0 +1,1192 @@ +1 PRINT "U. OF TEXAS STAR TREK GAME BY GRADY HICKS AND JIM KORP." +2 PRINT "GENERAL IDEA STOLEN FROM PENN. U. BY HICKS." +3 PRINT "VASTLY IMPROVED, AND ADAPTED TO TAURUS BY KORP, 5 APRIL 73." +4 GOSUB 9980 +5 PRINT " BE CAREFUL AND HAVE A GOOD TIME." +6 PRINT +7 PRINT +8 X8=RND(0) +9 DIM Q$(10) +10 DIM G(8,8),Q(8,8),D(8),K(9,3),N(3) +11 DIM C$(20) +12 GOSUB 8050 +13 PRINT " TO PLAY SHORT VERSION, TYPE 1 ---" +14 PRINT " TO PLAY REGULAR VERSION, TYPE 2:"; +15 INPUT V +16 IF V = 1 THEN 20 +17 IF V = 2 THEN 20 +18 PRINT +19 GOTO 13 +20 T0=INT(RND(0)*20+20)*100 +21 T=T0 +22 T9=40 +23 E0=3000 +24 E=3000 +25 P0=10 +26 P=10 +27 S9=200 +29 GOSUB 8200 +30 DEF FNO(F)=SQR((K(F,1)-S1)^2+(K(F,2)-S2)^2) +32 Q1=INT(RND(0)*8+1) +34 Q2=INT(RND(0)*8+1) +35 F=1 +40 FOR I=1 TO 7 +42 D(I)=0 +44 NEXT I +62 S1=INT(RND(0)*8+1) +64 S2=INT(RND(0)*8+1) +65 DIM F$(12) +66 DIM N$(15) +72 REM: SET UP GALAXY +75 B9=0 +76 LET E4=W3=A9=C5=0 +77 Z$="DOWN" +80 K9=0 +85 FOR I=1 TO 8 +90 FOR J=1 TO 8 +91 R=RND(0)*64 +95 IF V=2 THEN 150 +100 T9=20 + +110 IF R>=.28 THEN 114 +111 K3=4 +112 GOTO 135 +114 IF R>=1.78 THEN 118 +115 K3=3 +116 GOTO 135 +118 IF R>=5.28 THEN 122 +119 K3=2 +120 GOTO 135 +122 IF R>=9.28 THEN 130 +123 K3=1 +124 GOTO 135 +130 K3=0 +135 K9=K9+K3 +145 GOTO 206 +150 REM: DETERMINE NUMBER OF KLINGONS, BASES AND STARS. +152 IF R>=.01 THEN 156 +153 K3=9 +154 GOTO 195 +156 IF R>=.10 THEN 160 +157 K3=8 +158 GOTO 195 +160 IF R>=.30 THEN 164 +161 K3=7 +162 GOTO 195 +164 IF R>=.80 THEN 168 +165 K3=6 +166 GOTO 195 +168 IF R>=1.25 THEN 172 +169 K3=5 +170 GOTO 195 +172 IF R>=2.00 THEN 176 +173 K3=4 +174 GOTO 195 +176 IF R>=5.28 THEN 180 +177 K3=3 +178 GOTO 195 +180 IF R>=8.28 THEN 183 +181 K3=2 +182 GOTO 195 +183 IF R>=13.28 THEN 190 +184 K3=1 +185 GOTO 195 +190 K3=0 +195 K9=K9+K3 +200 B3=RND(0) +202 IF B3<=.97 THEN 206 +204 B3=1 +205 GOTO 221 +206 B3=0 +221 B9=B9+B3 +230 S3=INT(RND(0)*8+1) +235 G(I,J)=K3*100+B3*10+S3 +250 NEXT J +260 NEXT I +265 K0=K9 +270 IF B9>0 THEN 285 +271 I=INT(RND(0)*8+1) +272 J=INT(RND(0)*8+1) +275 G(I,J)=G(I,J)+10 +276 B9=1 +285 LET P2=1 +294 PRINT +295 PRINT " PLEASE TYPE A SECRET PASSWORD:"; +296 INPUT X$ +297 PRINT +298 LET N1=N9=N7=A7=0 +300 REM: DETERMINE KLINGON COMMANDER +302 IF A9<>0 THEN 320 +304 R1=INT(RND(0)*8+1) +306 R2=INT(RND(0)*8+1) +308 C2=R1 +310 C3=R2 +312 G(C2,C3)=G(C2,C3)+100 +314 K9=K9+1 +315 K0=K9 +316 A9=A9+1 +320 REM: CONTINUE +399 GOTO 9045 +400 REM: SET UP QUADRANT +405 K3=B3=S3=0 +410 IF Q1<1 THEN 500 +420 IF Q1>8 THEN 500 +430 IF Q2<1 THEN 500 +440 IF Q2>8 THEN 500 +450 X=G(Q1,Q2)/99.999 +460 K3=INT(X) +470 B3=INT((X-K3)*10.0) +480 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10 +490 'MAT K=ZER +491 FOR I=1 TO 8 +492 FOR J=1 TO 8 +493 Q(I,J)=0 +494 NEXT J +495 NEXT I +500 FOR I=1 TO 8 +510 FOR J=1 TO 8 +520 Q(I,J)=0 +530 NEXT J +540 NEXT I +545 IF N1<>1 THEN 550 +548 Q(S1,S2)=5 +549 GOTO 560 +550 Q(S1,S2)=1 +560 FOR I=1 TO K3 +570 GOSUB 9000 +580 Q(R1,R2)=2 +590 K(I,1)=R1 +591 K(I,2)=R2 +593 K(I,3)=S9 +600 NEXT I +601 IF Q1<>C2 THEN 610 +602 IF Q2<>C3 THEN 610 +603 K(I,3)=800 +605 Q(K(I,1),K(I,2))=6 +610 FOR I=1 TO B3 +620 GOSUB 9000 +630 Q(R1,R2)=3 +640 NEXT I +650 FOR I=1 TO S3 +660 GOSUB 9000 +670 Q(R1,R2)=4 +680 NEXT I +690 A=-1 +691 IF P2=1 THEN 700 +693 GOSUB 5000 +694 IF E<=0 THEN 5200 +699 GOTO 955 +700 REM: SHORT RANGE SENSOR SCAN +702 P2=P2+1 +705 LET T8=S1-1 +706 LET U=S1+1 +707 LET M=S2-1 +708 LET N=S2+1 +709 IF T8>=1 THEN 711 +710 T8=1 +711 IF U<=8 THEN 713 +712 U=8 +713 IF M>=1 THEN 715 +714 M=1 +715 IF N<=8 THEN 720 +716 N=8 +720 FOR I=T8 TO U +725 FOR J=M TO N +735 IF Q(I,J)<>3 THEN 740 +736 C$="DOCKED" +737 GOSUB 7700 +739 GOTO 801 +740 NEXT J +745 NEXT I +770 IF K3>0 THEN 790 +775 IF E= 0 THEN 830 +815 PRINT "SHORT RANGE SENSORS ARE OUT " +820 PRINT +825 GOTO 955 +830 PRINT "----------------------" +835 FOR I=1 TO 8 +836 FOR J=1 TO 8 +838 PRINT Q$(Q(I,J)+1);" "; +840 NEXT J +841 PRINT " "; +845 GOSUB 854 +847 NEXT I +848 PRINT "--------------------------" +849 GOTO 955 +854 IF I>1 THEN 859 +855 PRINT "STARDATE "T +856 GOTO 900 +859 IF I>2 THEN 864 +860 PRINT "CONDITION "C$ +861 GOTO 900 +864 IF I>3 THEN 869 +865 PRINT "QUADRANT "Q1;"-"Q2 +866 GOTO 900 +869 IF I>4 THEN 874 +870 PRINT "SECTOR "S1;"-"S2 +871 GOTO 900 +874 IF I>5 THEN 879 +875 PRINT "ENERGY "E +876 GOTO 900 +879 IF I>6 THEN 884 +880 PRINT "PHOTON TORPEDOES "P +881 GOTO 900 +884 IF I>7 THEN 890 +885 PRINT "KLINGONS LEFT "K9 +886 GOTO 900 +890 PRINT "ENERGY SHIELDS "Z$ +900 RETURN +955 IF N9<>1 THEN 959 +956 GOSUB 7950 +957 IF N7=1 THEN 3582 +958 N9=2 +959 PRINT "COMMAND:"; +960 INPUT A +961 IF C$<>"DOCKED" THEN 964 +962 GOSUB 7700 +964 GOTO 7100 +974 PRINT +975 PRINT " 0 = SET COURSE" +980 PRINT " 1 = SHORT RANGE SENSOR SCAN" +985 PRINT " 2 = LONG RANGE SENSOR SCAN" +990 PRINT " 3 = FIRE PHASERS" +995 PRINT " 4 = FIRE PHOTON TORPEDOES" +1000 PRINT " 5 = DAMAGE CONTROL REPORT" +1005 PRINT " 6 = SELF-DESTRUCT" +1006 PRINT " 7 = ABANDON SHIP" +1007 PRINT " 8 = ACTIVATE ENERGY SHIELDS" +1008 PRINT " 9 = DEACTIVATE ENERGY SHIELDS" +1009 PRINT " 10 = FIRE EXPERIMENTAL DEATH RAY" +1018 IF H6=1 THEN 9946 +1019 PRINT +1020 GOTO 955 +1030 REM: WARP DRIVE +1035 C$="MOVING" +1040 PRINT "COURSE (1-8.9999):"; +1050 INPUT C1 +1060 IF C1=0 THEN 955 +1070 IF C1<1 THEN 959 +1080 IF C1>= 9 THEN 1040 +1090 PRINT "WARP FACTOR (0-12):"; +1100 INPUT W1 +1110 IF W1<0 THEN 959 +1120 IF W1>12 THEN 959 +1130 IF W1<=.25 THEN 1163 +1140 IF D(1) >= 0 THEN 1163 +1150 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .25" +1160 GOTO 1040 +1163 GOTO 7500 +1164 E=E-C5 +1165 IF E<=0 THEN 5200 +1168 IF W1=12 THEN 3500 +1170 REM: THIS IS A CONTINUE CARD +1180 GOSUB 5000 +1185 IF N9=1 THEN 955 +1190 IF E <=0 THEN 5230 +1200 FOR I=1 TO 7 +1215 IF D(I)=0 THEN 1230 +1220 D(I)=D(I)+2 +1222 IF D(I)<0 THEN 1230 +1225 D(I)=0 +1230 NEXT I +1240 IF RND(0)>.20 THEN 1320 +1250 R1=INT(RND(0)*7+1) +1260 IF RND(0)>.5 THEN 1300 +1270 D(R1)=D(R1)-(RND(0)*5+1) +1280 PRINT "*** SPACE STORM, "; +1281 GOSUB 6000 +1283 PRINT F$" DAMAGED ***" +1290 GOTO 1320 +1300 FOR I=R1 TO 7 +1301 IF D(I)<0 THEN 1307 +1302 NEXT I +1303 FOR I=1 TO R1-1 +1304 IF D(I)<0 THEN 1307 +1305 NEXT I +1306 GOTO 1320 +1307 R1=I +1308 D(I)=D(I)+RND(0)*5+1 +1309 IF D(I)<=0 THEN 1311 +1310 D(I)=0 +1311 PRINT "*** TEMPORARY TRUCE, "; +1312 GOSUB 6000 +1313 PRINT F$" STATE OF REPAIR IMPROVED ***" +1320 N=INT(W1*8) +1322 E=E-N-N+5 +1324 T=T+1 +1326 Q(S1,S2)=0 +1327 X=S1 +1328 Y=S2 +1330 IF T>T0+T9 THEN 5200 +1340 GOSUB 3460 +1350 FOR I=1 TO N +1352 S1=S1+X1 +1354 S2=S2+X2 +1356 X3=INT(S1+.5) +1357 Y3=INT(S2+.5) +1370 IF S1<.5 THEN 1480 +1375 IF S2<.5 THEN 1480 +1380 IF S1>=8.5 THEN 1480 +1385 IF S2>=8.5 THEN 1480 +1388 IF Q(X3,Y3)<>0 THEN 1392 +1390 NEXT I +1391 GOTO 1460 +1392 LET Z5=Q(X3,Y3) +1393 IF Z5=6 THEN 6300 +1394 IF Z5<>2 THEN 1405 +1400 GOTO 6300 +1405 PRINT +1406 GOSUB 7900 +1407 PRINT N$;"BLOCKED BY OBJECT AT SECTOR"S1;"-"S2 +1408 S1=S1-X1 +1410 S2=S2-X2 +1460 S1=INT(S1+.5) +1465 S2=INT(S2+.5) +1467 Q(S1,S2)=A5 +1470 GOTO 955 +1480 Q1=INT(Q1+W1*X1+(X-.5)/8) +1481 Q2=INT(Q2+W1*X2+(Y-.5)/8) +1482 IF Q1>=1 THEN 1485 +1483 Q1=1 +1484 Z2=1 +1485 IF Q1<=8 THEN 1488 +1486 Q1=8 +1487 Z2=1 +1488 IF Q2>=1 THEN 1491 +1489 Q2=1 +1490 Z2=1 +1491 IF Q2<=8 THEN 1494 +1492 Q2=8 +1493 Z2=1 +1494 IF Z2<>1 THEN 1497 +1496 GOSUB 8970 +1497 PRINT +1498 IF G(Q1,Q2)>999 THEN 7650 +1499 Z2=0 +1500 S1=INT(RND(0)*8+1) +1510 S2=INT(RND(0)*8+1) +1550 GOTO 400 +1600 REM: LONG RANGE SENSOR SCAN +1610 IF D(3) >= 0 THEN 1640 +1620 PRINT "LONG RANGE SENSORS ARE INOPERABLE" +1625 PRINT +1630 GOTO 955 +1640 PRINT "LONG RANGE SENSOR SCAN FOR QUADRANT"Q1","Q2 +1645 PRINT "----------------- '" +1660 FOR I=Q1-1 TO Q1+1 +1670 N(1)=N(2)=N(3)=0 +1680 FOR J=Q2-1 TO Q2+1 +1690 IF I<1 THEN 1740 +1700 IF I>8 THEN 1740 +1710 IF J<1 THEN 1740 +1720 IF J>8 THEN 1740 +1730 N(J-Q2+2)=G(I,J) +1740 NEXT J +1750 PRINT ":"N(1);":"N(2);":"N(3) +1760 PRINT "------------------- '" +1770 NEXT I +1775 PRINT +1780 GOTO 955 +1800 REM: PHASER CONTROL +1810 IF D(4) >= 0 THEN 1832 +1820 PRINT "PHASER CONTROL IS DISABLED" +1825 PRINT +1830 GOTO 955 +1832 IF C5=0 THEN 1840 +1834 PRINT "YOU MUST LOWER YOUR ENERGY SHIELDS TO FIRE." +1836 PRINT +1837 GOTO 959 +1840 PRINT "PHASERS LOCKED ON TARGET. ENERGY AVAILABLE = "E +1850 PRINT "NUMBER OF UNITS TO FIRE:"; +1860 INPUT X +1870 IF X <= 0 THEN 955 +1880 IF E-X<0 THEN 1840 +1890 E=E-X +1895 IF K3=0 THEN 2010 +1898 W2=K3 +1900 FOR I=1 TO 9 +1910 IF K(I,3) <= 0 THEN 1990 +1929 H=(X)/(FNO(I))*(3.0+RND(0)) +1930 K(I,3)=K(I,3)-(H/W2) +1940 PRINT H/W2;"UNIT HIT ON KLINGON AT SECTOR"K(I,1);"-"K(I,2) +1950 PRINT "("K(I,3);"LEFT)" +1960 IF K(I,3)>0 THEN 1990 +1970 GOSUB 4500 +1980 IF K9 <= 0 THEN 5300 +1990 NEXT I +1995 IF K3<=0 THEN 2020 +2000 GOSUB 5000 +2010 IF E <= 0 THEN 5250 +2020 GOTO 955 +3000 REM: PHOTON TORPEDOES +3010 IF D(5) >= 0 THEN 3040 +3020 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" +3025 PRINT +3030 GOTO 955 +3040 IF P>0 THEN 3062 +3050 PRINT "ALL PHOTON TORPEDOES EXPENDED" +3060 GOTO 955 +3062 IF C5=0 THEN 3068 +3064 PRINT "YOU MUST LOWER YOUR ENERGY SHIELDS TO FIRE." +3066 PRINT +3067 GOTO 959 +3068 PRINT "DO YOU WISH TO FIRE A SPREAD:"; +3069 INPUT M$ +3070 PRINT "TORPEDO COURSE (1-8.9999):"; +3080 INPUT C1 +3090 IF C1=0 THEN 955 +3100 IF C1<1 THEN 3070 +3110 IF C1>=9 THEN 3070 +3111 IF P<3 THEN 3120 +3116 IF M$="YES" THEN 6500 +3120 GOSUB 3460 +3130 X=S1 +3132 Y=S2 +3134 P=P-1 +3140 PRINT "TORPEDO TRACK:"; +3150 X=X+X1 +3155 Y=Y+X2 +3160 IF X<.5 THEN 3422 +3165 IF Y<.5 THEN 3422 +3170 IF X>=8.5 THEN 3422 +3175 IF Y>=8.5 THEN 3422 +3200 PRINT X;"-"Y; +3202 X5=INT(X+.5) +3204 Y5=INT(Y+.5) +3210 IF Q(X5,Y5)<>0 THEN 3230 +3220 GOTO 3150 +3230 LET F7=Q(X5,Y5) +3236 IF F7=1 THEN 3150 +3237 IF F7=2 THEN 3244 +3238 IF F7=3 THEN 3301 +3239 IF F7=4 THEN 3323 +3240 IF F7=6 THEN 3244 +3244 PRINT +3245 PRINT "*** KLINGON DESTROYED ***" +3250 K3=K3-1 +3255 K9=K9-1 +3260 IF K9<=0 THEN 5300 +3271 FOR I=1 TO 9 +3272 IF K(I,1)<>X5 THEN 3275 +3273 IF K(I,2)<>Y5 THEN 3275 +3274 GOTO 3400 +3275 NEXT I +3301 Q(X5,Y5)=0 +3310 PRINT +3311 PRINT "*** STARBASE DESTROYED ... CONGRATULATIONS ***" +3313 B3=B3-1 +3315 GOTO 3410 +3323 Q(X5,Y5)=0 +3334 PRINT +3335 PRINT "***STAR DESTROYED***" +3340 S3=S3-1 +3345 IF S3>=0 THEN 3410 +3347 S3=0 +3350 GOTO 3410 +3400 K(I,3)=0 +3401 Q(X5,Y5)=0 +3410 G(Q1,Q2)=K3*100+B3*10+S3 +3420 GOTO 3430 +3422 PRINT +3425 PRINT "TORPEDO MISSED" +3430 IF E4=0 THEN 3439 +3432 E4=E4+1 +3433 IF E4>3.5 THEN 3438 +3435 GOTO 6520 +3438 IF K3<=0 THEN 3445 +3439 GOSUB 5000 +3440 IF E <= 0 THEN 5230 +3445 E4=0 +3450 GOTO 955 +3460 X2=COS((C1-1)*.785398) +3470 X1=-SIN((C1-1)*.785398) +3480 RETURN +3500 W9=RND(0) +3502 IF T>T0+15 THEN 3510 +3504 PRINT "WARP 12 CANNOT BE USED UNTIL STARDATE"T0+16 +3506 GOTO 1040 +3510 PRINT "SPEED APPROACHING WARP 12." +3520 PRINT "ENGINES OPERATING ABOVE DANGER LEVEL." +3530 PRINT "ALL SAFETY DEVICES DISFUNCTIONAL." +3540 PRINT "CRITICAL OVERHEATING--SPONTANEOUS IMPLOSION IMMINENT." +3570 IF W9>.40 THEN 3600 +3575 FOR I=1 TO 2 +3576 PRINT "*****************************************************" +3577 NEXT I +3578 GOSUB 7900 +3580 PRINT "*** ENTROPY OF"N$;"MAXIMIZED **************" +3582 GOSUB 9980 +3583 PRINT " YOU ATE THAT ONE." +3584 GOTO 9992 +3600 IF W9>.55 THEN 3700 +3610 PRINT +3620 PRINT " YOU ARE TRAVELLING BACK IN TIME." +3630 T=T-6 +3640 PRINT "*** STARDATE ="T+1 +3650 GOTO 1170 +3700 IF W9>.60 THEN 3800 +3710 PRINT +3720 PRINT " YOU ARE TRAVELLING BACK IN TIME." +3730 T=T-11 +3740 PRINT "*** STARDATE ="T+1 +3750 GOTO 1170 +3800 IF W9>.70 THEN 3900 +3810 PRINT +3820 PRINT " YOU ARE TRAVELLING FORWARD IN TIME." +3830 T=T+5 +3840 IF T>T0+T9 THEN 5200 +3850 PRINT "*** STARDATE ="T +3860 GOTO 1170 +3900 PRINT +3910 PRINT "NUCLEAR REACTOR CHAIN REACTION QUENCHED." +3920 PRINT "*** TIME PORTAL MISSED ***" +3930 GOTO 1170 +4000 REM: DAMAGE CONTROL REPORT +4010 IF D(6) >= 0 THEN 4040 +4020 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE" +4025 PRINT +4030 GOTO 955 +4040 PRINT +4050 PRINT "DEVICE STATE OF REPAIR" +4060 FOR I=1 TO 7 +4065 R5=I-.5 +4066 GOSUB 6000 +4070 PRINT F$,D(I) +4080 NEXT I +4090 PRINT +4100 GOTO 955 +4200 REM: +4500 PRINT "*** KLINGON AT SECTOR"K(I,1);"-"K(I,2);"DESTROYED." +4510 K3=K3-1 +4520 K9=K9-1 +4530 Q(K(I,1),K(I,2))=0 +4540 G(Q1,Q2)=K3*100+B3*10+S3 +4550 RETURN +5000 REM: KLINGON ATTACK +5002 GOSUB 7900 +5003 IF K3<=0 THEN 5110 +5005 IF C$ <> "DOCKED" THEN 5017 +5010 PRINT "STARBASE SHIELDS PROTECT THE"N$ +5012 RETURN +5017 IF C5=0 THEN 5022 +5018 PRINT "** KLINGONS ATTACK-- ENERGY SHIELDS PROTECT"N$ +5020 GOTO 5110 +5022 IF K3*1500 THEN 5049 +5024 PRINT +5025 PRINT " KLINGON COMMANDER TO ENTERPRISE---" +5026 PRINT "AS YOU WELL KNOW, YOU ARE DANGEROUSLY LOW ON ENERGY" +5027 PRINT "AND WILL PROBABLY BE DESTROYED BY MY NEXT ATTACK." +5028 PRINT "AS AN OFFICER AND GENTLEMAN, I OFFER YOU A CHANCE TO" +5029 PRINT "SAVE YOURSELF AND YOUR CREW----" +5032 PRINT " DO YOU SURRENDER:"; +5033 INPUT S$ +5034 IF S$<>"YES" THEN 5049 +5035 A7=1 +5036 N9=1 +5038 GOTO 5110 +5049 PRINT +5050 FOR I=1 TO 9 +5051 IF K(I,3) <= 0 THEN 5100 +5060 H=(K(I,3)/FNO(I))*(2+RND(0)) +5070 E=E-H +5075 GOSUB 7900 +5080 PRINT H;"UNIT HIT ON"N$;"FROM KLINGON, SECTOR "K(I,1);"-"K(I,2) +5082 IF H<=180 THEN 5090 +5083 R5=INT(RND(0)*7+1) +5084 D(R5)=D(R5)-(RND(0)*5+1) +5085 PRINT "*** CRITICAL HIT,"; +5086 GOSUB 6000 +5087 PRINT F$" DAMAGED ***" +5090 PRINT "("E;"LEFT)" +5100 NEXT I +5105 PRINT +5110 RETURN +5200 REM: LOSE +5210 GOSUB 9985 +5220 PRINT "IT IS STARDATE"T +5230 PRINT +5250 GOSUB 7900 +5255 PRINT "THE"N$;"HAS BEEN DESTROYED." +5260 PRINT "THERE ARE STILL"K9;"KLINGON BATTLE CRUISERS." +5270 PRINT "THE FEDERATION WILL BE CONQUERED." +5280 PRINT "YOU ARE DEAD, YOU INCOMPETENT FOOL." +5290 GOTO 9992 +5300 REM: WIN +5310 GOSUB 9985 +5320 PRINT "IT IS STARDATE"T +5330 PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN" +5331 PRINT "DESTROYED." +5340 PRINT "THE FEDERATION HAS BEEN SAVED." +5350 PRINT "YOU HAVE BEEN PROMOTED TO COMMODORE EMERITUS." +5355 IF N1<>0 THEN 5380 +5360 PRINT K0;"KLINGONS IN"T-T0;"YEARS. RATING="INT(K0/(T-T0)*1000) +5370 GOTO 9992 +5380 PRINT K0;"KLINGONS IN"T-T0;"YEARS." +5382 IF A7=5 THEN 5392 +5385 PRINT "ENTERPRISE CAPTURED." +5390 PRINT "RATING ="INT(K0/(T-T0)*1000-1000) +5391 GOTO 9992 +5392 PRINT "ENTERPRISE DESTROYED INTENTIONALLY." +5393 PRINT "RATING ="INT(K0/(T-T0)*1000-500) +5395 GOTO 9992 +6000 REM: SELECT DAMAGED DEVICE +6002 IF A+1<>1 THEN 6010 +6004 R5=R1 +6010 IF R5>1 THEN 6040 +6020 F$="WARP ENGINES" +6030 GOTO 8000 +6040 IF R5>2 THEN 6070 +6050 F$="S.R. SENSORS" +6060 GOTO 8000 +6070 IF R5>3 THEN 6090 +6075 F$="L.R. SENSORS" +6080 GOTO 8000 +6090 IF R5>4 THEN 6100 +6093 F$="PHASER CNTRL" +6097 GOTO 8000 +6100 IF R5>5 THEN 6110 +6103 F$="PHOTON TUBES" +6107 GOTO 8000 +6110 IF R5>6 THEN 6115 +6111 F$="DAMAGE CNTRL" +6112 GOTO 8000 +6115 F$="ENERGY SHLDS" +6118 GOTO 8000 +6300 REM: RAMMING KLINGON +6301 PRINT +6302 Q(S1,S2)=0 +6304 K3=K3-1 +6305 K9=K9-1 +6310 Z$="DOWN" +6318 FOR I=1 TO 9 +6320 IF K(I,1)<>X3 THEN 6330 +6322 IF K(I,2)<>Y3 THEN 6330 +6323 Z6=K(I,1) +6324 Z7=K(I,2) +6325 GOTO 6360 +6330 NEXT I +6360 K(I,3)=0 +6362 GOSUB 7900 +6363 Q(X3,Y3)=A5 +6365 GOTO 6370 +6370 G(Q1,Q2)=K3*100+B3*10+S3 +6380 PRINT "*** EMERGENCY ALERT ***" +6381 PRINT "*** COLLISION IMMINENT ***" +6382 GOSUB 9980 +6383 GOSUB 7900 +6384 PRINT N$;"RAMS KLINGON AT SECTOR"Z6;"-"Z7 +6385 PRINT "*** KLINGON DESTROYED,"N$;"HEAVILY DAMAGED. ***" +6386 FOR I=1 TO 7 +6387 D(I)=D(I)-(RND(0)*4+1) +6388 NEXT I +6389 C5=0 +6390 E=E-500 +6391 IF K9<=0 THEN 5300 +6395 IF E<=0 THEN 5230 +6396 S1=Z6 +6397 S2=Z7 +6398 A=2 +6399 GOTO 4040 +6500 REM: TORPEDO SPREAD FORMATION +6507 PRINT "SPREAD ANGLE (0.05-0.30):"; +6508 INPUT E5 +6509 IF E5=0 THEN 959 +6510 IF E5<0.05 THEN 6507 +6511 IF E5>0.30 THEN 6507 +6515 E4=1 +6520 PRINT "NUMBER"E4; +6522 IF E4>1.5 THEN 6530 +6524 C1=C1-E5 +6525 GOTO 3120 +6530 C1=C1+E5 +6535 GOTO 3120 +7100 REM: COMMAND LINK +7105 IF A+1 = 1 THEN 1030 +7106 IF A+1 = 2 THEN 700 +7107 IF A+1 = 3 THEN 1600 +7108 IF A+1 = 4 THEN 1800 +7109 IF A+1 = 5 THEN 3000 +7110 IF A+1 = 6 THEN 4000 +7111 IF A+1 = 7 THEN 8100 +7112 IF A+1 = 8 THEN 7400 +7113 IF A+1 = 9 THEN 7800 +7114 IF A+1 = 10 THEN 7850 +7115 IF A+1 = 11 THEN 7200 +7125 GOTO 974 +7200 REM: DEATH RAY +7202 IF T>T0+18 THEN 7208 +7204 PRINT " DEATH RAY CANNOT BE USED UNTIL STARDATE"T0+19 +7205 PRINT +7206 GOTO 959 +7208 IF W3<.05 THEN 7215 +7210 PRINT " DEATH RAY PERMANENTLY OUT OF ORDER." +7212 PRINT +7214 GOTO 959 +7215 IF C5=0 THEN 7225 +7220 PRINT " YOU MUST LOWER YOUR SHIELDS TO FIRE." +7222 PRINT +7223 GOTO 959 +7225 W3=RND(0) +7227 PRINT +7228 IF W3>.35 THEN 7260 +7230 PRINT " *ANTI-MATTER OVERLOAD." +7231 PRINT " TEMPORARY PSUEDO-STARS CREATED FROM ENERGY." +7232 FOR I=1 TO 8 +7233 FOR J=1 TO 8 +7235 IF Q(I,J)<>0 THEN 7240 +7238 Q(I,J)=4 +7240 NEXT J +7241 NEXT I +7245 PRINT +7247 GOTO 830 +7260 IF W3>.50 THEN 7280 +7263 PRINT "*** DEATH RAY BACKFIRES ***" +7265 PRINT "*** BETTER LUCK NEXT TIME ***" +7270 GOTO 3575 +7280 IF W3>.60 THEN 7310 +7283 PRINT "*** DEATH RAY ANNIHILATES ALL KLINGONS IN QUADRANT"Q1;"-"Q2 +7285 K9=K9-K3 +7286 IF K9<=0 THEN 5300 +7287 FOR I=1 TO 8 +7288 FOR J=1 TO 8 +7289 IF Q(I,J)<>6 THEN 7292 +7290 Q(I,J)=0 +7292 IF Q(I,J)<>2 THEN 7294 +7293 Q(I,J)=0 +7294 NEXT J +7295 NEXT I +7296 K3=0 +7298 G(Q1,Q2)=INT(B3*10+S3) +7300 GOTO 959 +7310 IF W3>.75 THEN 7325 +7312 PRINT "*THERMAL REACTOR ENERGY DRAIN." +7314 E=E-(.95*E) +7316 PRINT .95*E"UNITS OF ENERGY BURNED." +7320 GOTO 7283 +7325 IF W3>.95 THEN 7350 +7328 PRINT "*MATTER/ANTI-MATTER TRANSFORMATION." +7330 IF K3>0 THEN 7334 +7332 GOTO 7231 +7334 PRINT "KLINGONS HIT BY MAIN BEAM DUPLICATED." +7335 P8=K3 +7338 FOR I=1 TO P8 +7339 IF K3>8 THEN 7345 +7341 K3=K3+1 +7342 K9=K9+1 +7344 NEXT I +7345 G(Q1,Q2)=K3*100+B3*10+S3 +7346 P2=1 +7349 GOTO 1500 +7350 PRINT "*** DEATH RAY GOES CRAZY ***" +7352 PRINT "*** DESTROYS EVERY KLINGON IN THE GALAXY ***" +7353 PRINT "*** ALSO DESTROYS ENTERPRISE ***" +7354 A7=N1=5 +7360 GOTO 5300 +7400 REM: ABANDON SHIP +7401 IF N1=0 THEN 7404 +7402 PRINT "THE FAIRIE QUEENE CANNOT BE ABANDONED." +7403 GOTO 959 +7404 PRINT +7405 IF A7<>1 THEN 7420 +7410 PRINT "** YOU MAY NOT ABANDON SHIP AFTER YOU HAVE BEEN " +7411 PRINT "ASKED TO SURRENDER." +7415 PRINT +7416 GOTO 959 +7420 PRINT "*** ABANDON SHIP ***" +7421 PRINT "*** ABANDON SHIP ***" +7425 PRINT +7426 PRINT "SERIES ENTER-BLITZ INITIATED." +7429 PRINT "FAIL-SAFE AUTO-OVERRIDE INSERTED." +7433 PRINT "ENTERPRISE COMMANDER AND CREW ESCAPE IN SHUTTLE CRAFT." +7435 PRINT +7440 PRINT "*** ENTERPRISE REDUCED TO SUB-ATOMIC PARTICLES ***" +7441 PRINT +7445 A7=5 +7446 N1=1 +7448 N9=1 +7450 GOTO 955 +7500 REM: SUPERNOVA +7501 IF V=2 THEN 7506 +7502 IF RND(0)>.15 THEN 7600 +7504 GOTO 7508 +7506 IF RND(0)>.10 THEN 7600 +7508 Z3=INT(RND(0)*8+1) +7510 Z4=INT(RND(0)*8+1) +7515 IF G(Z3,Z4)>999 THEN 7600 +7520 S4=G(Z3,Z4)-INT(G(Z3,Z4)*.1)*10 +7525 IF S4<=0 THEN 7600 +7530 PRINT +7535 PRINT "*************************************************" +7540 PRINT "********* SUPERNOVA IN QUADRANT"Z3;"-"Z4 +7542 PRINT "ALL MATTER IN THIS QUADRANT CONVERTED TO ENERGY." +7543 IF Q1<>Z3 THEN 7575 +7544 IF Q2<>Z4 THEN 7575 +7545 PRINT +7546 GOSUB 7900 +7548 PRINT "UNFORTUNATELY, THE"N$;"WAS IN THIS QUADRANT." +7550 GOTO 3582 +7575 PRINT "FROM NOW ON, ANY VESSEL STOPPING IN THIS QUADRANT" +7576 PRINT "WILL BE TOTALLY ENERGIZED." +7577 PRINT "*************************************************" +7579 PRINT +7580 K4=INT(G(Z3,Z4)/99.99) +7582 B4=INT((G(Z3,Z4)/99.99-K4)*10.0) +7584 B9=B9-B4 +7585 K9=K9-K4 +7590 G(Z3,Z4)=INT(1000.0) +7600 GOTO 1164 +7650 REM: STARSHIP ENCOUNTERS OLD SUPERNOVA +7655 PRINT "*** HEY STUPID. YOU WERE WARNED NOT TO STOP IN A" +7656 PRINT "QUADRANT WHERE A SUPERNOVA HAD OCCURRED." +7660 GOTO 8992 +7700 REM: VARIABLE RESUPPLY +7701 IF N1=1 THEN 7710 +7703 E=3000 +7705 P=10 +7708 GOTO 7720 +7710 E=1500 +7715 P=5 +7720 A7=0 +7730 RETURN +7800 REM: ACTIVATE ENERGY SHIELDS +7802 IF D(7)>=0 THEN 7808 +7804 PRINT "ENERGY SHIELDS DISABLED." +7806 GOTO 959 +7808 IF C5=0 THEN 7818 +7810 PRINT "ENERGY SHIELDS ALREADY ACTIVATED." +7811 PRINT +7812 GOTO 959 +7818 PRINT +7819 PRINT "ENERGY SHIELDS ACTIVATED." +7820 PRINT +7822 C5=200 +7824 Z$="UP" +7825 E=E-C5 +7826 IF E<=0 THEN 5200 +7828 GOSUB 5000 +7830 GOTO 959 +7850 REM: DEACTIVATE ENERGY SHIELDS +7855 PRINT +7860 PRINT "ENERGY SHIELDS DEACTIVATED." +7863 PRINT +7865 C5=0 +7868 Z$="DOWN" +7870 GOSUB 5000 +7875 GOTO 955 +7900 REM: DETERMINE NAME +7905 IF N1<>1 THEN 7915 +7908 A5=5 +7910 N$=" FAIRIE QUEENE " +7912 GOTO 7920 +7915 N$=" ENTERPRISE " +7918 A5=1 +7920 RETURN +7950 REM: CHANGING OF THE GUARD AT BUCKINGHAM PALACE +7951 PRINT +7952 FOR I=1 TO 8 +7955 FOR J=1 TO 8 +7957 K3=INT(G(I,J)/99.99) +7958 B3=INT((G(I,J)/99.99-K3)*10.0) +7960 IF B3>0 THEN 7978 +7961 NEXT J +7962 NEXT I +7963 PRINT " YOU HAVE BEEN TAKEN TO KLINGON HEADQUARTERS." +7964 PRINT "IF YOU HAD A STARBASE, YOU WOULD BE REPATRIATED" +7965 PRINT "AND GIVEN A NEW STARSHIP TO COMMAND." +7966 PRINT "SINCE YOU HAVE NO STARBASE, YOU WILL BE MERCILESSLY" +7967 PRINT "TORTURED TO DEATH BY THE ARCHFIEND," +7968 PRINT "CECIL DYBOWSKI, SCOURGE OF THE UNIVERSE." +7970 N7=1 +7975 GOTO 8000 +7978 N9=2 +7979 T=T+1 +7980 Q1=I +7981 Q2=J +7982 E=1500 +7983 P=5 +7984 N1=1 +7985 PRINT "YOU HAVE BEEN SENT BACK TO STARFLEET COMMAND." +7987 PRINT "YOU ARE NOW IN COMMAND OF A NEW STARSHIP," +7988 PRINT " THE FAIRIE QUEENE," +7989 PRINT "WHICH LOOKS LIKE /Q/ ON THE SCAN." +7990 PRINT +7992 PRINT " YE FAIRIE QUEENE IS CURRENTLY IN QUADRANT"Q1;"-"Q2 +7994 PRINT "TRY TO BE MORE CAREFUL THIS TIME." +7995 FOR I=1 TO 7 +7996 D(I)=0 +7997 NEXT I +7998 PRINT +7999 GOTO 1500 +8000 RETURN +8050 Q$(1)="." +8051 Q$(2)="E" +8052 Q$(3)="K" +8053 Q$(4)="B" +8054 Q$(5)="*" +8055 Q$(6)="Q" +8056 Q$(7)="C" +8060 RETURN +8100 REM: SELF-DESTRUCT +8105 PRINT +8110 PRINT "SERIES ENTER-BLITZ INITIATED." +8115 PRINT "IN TEN SECONDS THIS VESSEL WILL SELF-DESTRUCT." +8116 PRINT "10" +8117 PRINT " 9" +8118 PRINT " 8" +8119 PRINT " 7" +8120 PRINT " 6" +8122 PRINT +8123 PRINT "T MINUS 5 SECONDS AND HOLDING." +8124 PRINT "FAIL-SAFE MECHANISM ENGAGED. ONLY THE COMMANDER OF" +8125 PRINT "THE STARSHIP CAN OVERRIDE WITH HIS SECRET PASSWORD." +8126 PRINT "SCIENCE OFFICER HICKS HAS ALREADY ENTERED HIS CORRECT" +8127 PRINT "COUNTER-PASSWORD." +8128 PRINT "TO CONTINUE SERIES ENTER-BLITZ, TYPE YOUR " +8129 PRINT "SECRET PASSWORD:"; +8130 INPUT V$ +8135 IF V$<>X$ THEN 8150 +8139 PRINT +8140 PRINT " 4" +8141 PRINT " 3" +8142 PRINT " 2" +8143 PRINT " 1" +8145 GOTO 3575 +8150 PRINT +8151 PRINT "SERIES ENTER-BLITZ TERMINATED." +8155 PRINT +8160 GOTO 955 +8200 REM: RANDOMIZE +8205 PRINT +8206 PRINT " TYPE A WIERD NUMBER BETWEEN 0.0 AND 1.0 :"; +8207 INPUT E6 +8208 E9=RND(E6) +8210 RETURN +8970 REM: LEAVING GALAXY +8975 IF F>2 THEN 8990 +8980 PRINT +8981 PRINT "STARSHIP ENCOUNTERS END OF GALAXY." +8982 PRINT +8983 PRINT "FOOLISH MORTAL, YOU HAVE ATTEMPTED TO VENTURE OUT OF THE" +8984 PRINT "GALAXY INTO SUB-SPACE. ON THE THIRD TIME YOU TRY THIS," +8985 PRINT "THE LIVING GOD, KORP, WILL DESTROY YOU." +8987 F=F+1 +8988 GOTO 8995 +8990 PRINT +8991 PRINT "YOU HAVE DARED TO ENTER SUB-SPACE A THIRD TIME." +8992 PRINT "FOR THIS, ************ YOU DIE ****************" +8993 GOTO 3575 +8995 RETURN +9000 REM: RANDOM NUMBER GENERATOR +9010 R1=INT(RND(0)*8+1) +9020 R2=INT(RND(0)*8+1) +9030 IF Q(R1,R2) <> 0 THEN 9010 +9040 RETURN +9045 PRINT +9050 PRINT "ORDERS: STARDATE = "T +9060 PRINT +9070 PRINT " AS COMMANDER OF THE UNITED STARSHIP ENTERPRISE," +9080 PRINT "YOUR MISSION IS TO RID THE GALAXY OF THE DEADLY" +9090 PRINT "KLINGON MENACE. TO DO THIS, YOU MUST DESTROY THE " +9100 PRINT "KLINGON INVASION FORCE OF "K9"BATTLE CRUISERS." +9110 PRINT "YOU HAVE"T9;"SOLAR YEARS TO COMPLETE YOUR MISSION." +9120 PRINT "(I.E. UNTIL STARDATE"T0+T9;")." +9125 PRINT +9130 IF B9 > 1 THEN 9133 +9131 PRINT " YOU WILL HAVE ONE SUPPORTING STARBASE." +9132 GOTO 9140 +9133 PRINT " YOU WILL HAVE"B9"SUPPORTING STARBASES." +9140 PRINT "WHEN THE ENTERPRISE DOCKS AT ONE (IS POSITIONED" +9150 PRINT "NEXT TO ONE) IT IS RESUPPLIED WITH ENERGY AND" +9160 PRINT "PHOTON TORPEDOES." +9161 PRINT "THE ENTERPRISE IS CURRENTLY IN" +9162 PRINT "QUADRANT"Q1"-"Q2"SECTOR"S1"-"S2 +9163 PRINT "DO YOU NEED FURTHER INSTRUCTIONS (REVISED 18 APRIL 73)"; +9164 INPUT A$ +9166 PRINT +9170 IF A$<>"YES" THEN 400 +9175 GOSUB 9980 +9180 PRINT " THE GALAXY IS DIVIDED INTO 64 QUADRANTS WITH" +9190 PRINT "THE FOLLOWING COORDINATES:" +9200 PRINT " Y-- 1 2 3 4 5 6 7 8 '" +9210 PRINT " --------------------------------- X" +9220 FOR I=1 TO 8 +9230 PRINT " ' : : : : : : : : : "I +9240 PRINT " --------------------------------- '" +9250 NEXT I +9260 PRINT +9270 PRINT +9280 PRINT +9300 PRINT "EACH QUADRANT IS SIMILARLY DIVIDED INTO 64 SECTORS." +9310 GOSUB 9980 +9320 PRINT "::: DEVICES :::" +9330 PRINT +9340 PRINT "WARP ENGINES: " +9350 PRINT +9360 PRINT "COURSE = A REAL NUMBER FROM 1 TO 8.99999." +9370 PRINT "NUMBERS INDICATE DIRECTION STARTING AT THE RIGHT AND" +9380 PRINT "GOING COUNTER CLOCKWISE:" +9390 PRINT +9400 PRINT " 3" +9410 PRINT " 4 2" +9420 PRINT " /" +9430 PRINT " 5---*---1" +9440 PRINT " /" +9450 PRINT " 6 8" +9460 PRINT " 7" +9470 PRINT +9480 PRINT "WARP FACTOR = A REAL NUMBER FROM 0 TO 12." +9490 PRINT "DISTANCE TRAVELED = INTEGER (WARP FACTOR) QUADRANTS:" +9500 PRINT " WARP .2 = THE ENTERPRISE TRAVELS 1 SECTOR." +9510 PRINT " .5 = 4 SECTORS." +9520 PRINT " 1 = 1 QUADRANT." +9530 PRINT " 2 = 2 QUADRANTS." +9535 PRINT +9540 PRINT +9550 PRINT "FOR EXAMPLE, IF YOU TRAVEL FROM:" +9560 PRINT "QUADRANT 1 - 1, SECTOR 1 - 1, IN DIRECTION 1 AT WARP 2" +9570 PRINT "YOU WOULD STOP AT" +9580 PRINT "QUADRANT 1 - 3, SECTOR 1 - 1 IN THE NEXT STARDATE." +9590 PRINT +9591 PRINT " WHEN YOU CHANGE QUADRANTS, HOWEVER, THE POSITIONS OF" +9592 PRINT "ALL OBJECTS IN THE NEW QUADRANT (INCLUDING THE ENTERPRISE)" +9593 PRINT "ARE RANDOMIZED TO SIMULATE 3-D TRAVEL." +9599 PRINT +9600 PRINT "*** NOTE: EVERY USE OF THE WARP ENGINES TAKES ONE" +9610 PRINT "STARDATE. IF THE ENTERPRISE IS BLOCKED BY SOMETHING" +9620 PRINT "DURING INTRA-QUADRANT TRAVEL IT WILL STOP IN FRONT" +9630 PRINT "OF IT (AND WASTE A STARDATE) ***" +9631 PRINT +9632 PRINT "***NOTE: THERE IS A TIME PORTAL AVAILABLE BY TRAVELLING" +9633 PRINT "AT WARP 12. YOU MAY BE CARRIED EITHER FORWARD OR" +9634 PRINT "BACKWARD IN TIME, BUT THERE IS ALSO A .40 PROBABILITY" +9635 PRINT "THAT YOU WILL BE DESTROYED IN A NUCLEAR IMPLOSION." +9636 PRINT "A WARP FACTOR OF 12 MAY ONLY BE USED AFTER 15 SOLAR YEARS." +9637 PRINT +9638 PRINT "***NOTE: IF THE ENTERPRISE RAMS A KLINGON VESSEL, EITHER" +9639 PRINT "DELIBERATELY OR ACCIDENTLY, THE KLINGON WILL BE" +9640 PRINT "DESTROYED AND THE ENTERPRISE HEAVILY DAMAGED." +9649 GOSUB 9980 +9650 PRINT "SHORT RANGE SENSORS:" +9660 PRINT +9670 PRINT " THE SHORT RANGE SENSORS OF THE ENTERPRISE DISPLAY" +9680 PRINT "A DETAILED VIEW OF THE QUADRANT IT IS CURRENTLY IN." +9690 PRINT "THE ENTERPRISE LOOKS LIKE /E/ ON THE SCREEN." +9700 PRINT "KLINGON BATTLE CRUISERS LOOK LIKE /K/ ON THE SCREEN." +9710 PRINT "STARBASES LOOK LIKE /B/ AND STARS LOOK LIKE * ." +9715 PRINT "THE KLINGONS MAY HAVE A POWERFUL COMMAND SHIP, /C/." +9720 PRINT +9723 PRINT "***NOTE: DOCKING IS A TWO STEP PROCEDURE--FIRST YOU" +9724 PRINT "MUST MOVE ADJACENT TO THE BASE. THEN CONDUCT A " +9725 PRINT "SHORT RANGE SCAN." +9726 PRINT "WHILE DOCKED, STARBASE SHIELDS PROTECT THE STARSHIP." +9729 PRINT +9730 PRINT "***NOTE: CONDITION YELLOW MEANS YOU ARE DANGEROUSLY" +9731 PRINT "LOW ON ENERGY AND SHOULD MAKE FOR A BASE POSTHASTE." +9735 GOSUB 9980 +9736 PRINT "EXPERIMENTAL DEATH RAY" +9737 PRINT +9738 PRINT " THE EXPERIMENTAL DEATH RAY, AS ITS NAME IMPLIES," +9739 PRINT "IS UNPREDICTABLE. HOWEVER, ONE CAN CERTAINLY PREDICT" +9740 PRINT "THAT, IN A GIVEN SITUATION, IT WILL DO WHATEVER IT" +9741 PRINT "DAMN WELL PLEASES. THERE IS A GOOD PROBABILITY THAT IT" +9742 PRINT "WILL DESTROY MANY KLINGONS, BUT THERE COULD BE SOME" +9743 PRINT "INTERESTING SIDE EFFECTS. IT CAN PROBABLY ONLY BE" +9744 PRINT "FIRED ONCE, BUT YOU NEVER KNOW. IT CANNOT BE USED UNTIL" +9745 PRINT "18 SOLAR YEARS HAVE PASSED." +9757 GOSUB 9980 +9758 PRINT "LONG RANGE SENSORS:" +9759 PRINT +9760 PRINT " THE LONG RANGE SENSORS OF THE ENTERPRISE DISPLAY" +9770 PRINT "THE NUMBER OF OBJECTS IN THE 9 CLOSEST QUADRANTS," +9771 PRINT "WITH THE ENTERPRISE IN THE CENTRAL ONE." +9780 PRINT "EACH DIGIT OF THE NUMBER IN EACH BOX MEANS SOMETHING:" +9790 PRINT " THE ONES DIGIT REPRESENTS THE NUMBER OF STARS." +9800 PRINT " TENS STARBASES." +9810 PRINT " HUNDREDS KLINGONS." +9812 PRINT " THOUSANDS SUPERNOVA." +9820 PRINT "FOR EXAMPLE:" +9830 PRINT "319 MEANS 3 KLINGONS, 1 STARBASE, AND 9 STARS." +9840 PRINT "206 MEANS 2 KLINGONS, 0 STARBASES, AND 6 STARS." +9850 PRINT "7 MEANS 0 KLINGONS, 0 STARBASES, AND 7 STARS." +9860 GOSUB 9980 +9861 PRINT "ENERGY SHIELDS:" +9862 PRINT +9863 PRINT " WHILE THE ENERGY SHIELDS OF A STARSHIP ARE ACTIVATED," +9864 PRINT "KLINGON ATTACKS ARE NULLIFIED. EVERY TIME YOU MOVE WITH" +9865 PRINT "YOUR SHIELDS UP, 200 UNITS OF ENERGY ARE USED." +9866 PRINT "ALSO, SHIELD ACTIVATION ITSELF REQUIRES 200 UNITS." +9867 PRINT "NOTE: YOU MUST LOWER YOUR SHIELDS TO ATTACK." +9869 GOSUB 9980 +9870 PRINT "PHASERS:" +9880 PRINT +9890 PRINT " ANY PORTION OF THE ENERGY AVAILABLE CAN BE FIRED." +9900 PRINT "THE BATTLE COMPUTER DIVIDES THIS AMOUNT AMONG THE" +9901 PRINT "KLINGON CRUISERS IN THE QUADRANT AND DETERMINES" +9902 PRINT "THE VARIOUS DIRECTIONS OF FIRE. THE EFFECTIVENESS" +9903 PRINT "OF A HIT DEPENDS MOSTLY ON THE DISTANCE TO THE" +9904 PRINT "TARGET. A KLINGON BATTLE CRUISER STARTS WITH"S9 +9905 PRINT "UNITS OF ENERGY. IT CAN FIRE AN AMOUNT EQUAL TO" +9906 PRINT "WHATEVER ENERGY IT HAS LEFT." +9907 PRINT +9908 PRINT +9909 PRINT "PHOTON TORPEDOES:" +9910 PRINT +9911 PRINT " INITIALLY THE ENTERPRISE HAS"P0"PHOTON TORPEDOES." +9912 PRINT "ONE TORPEDO DESTROYS WHATEVER IT HITS. THE RANGE" +9913 PRINT "OF PHOTON TORPEDOES (LIKE PHASERS) IS LIMITED TO" +9914 PRINT "THE CURRENT QUADRANT. THE COURSE OF A PHOTON TORPEDO" +9915 PRINT "IS SET THE SAME WAY AS THAT OF THE ENTERPRISE." +9916 PRINT "YOU MAY, IF YOU WISH, FIRE A SPREAD OF THREE TORPEDOES" +9917 PRINT "AT ONCE. THERE IS A TIME LAG IN LAUNCHING THEM, THE ONE" +9918 PRINT "WITH THE LOWEST NUMERICAL COURSE BEING FIRED FIRST." +9919 PRINT "FOR EXAMPLE, A TORPEDO COURSE OF 3.49 WITH A SPREAD" +9920 PRINT "ANGLE OF 0.24 WOULD FIRE TORPEDOES AT DIRECTIONS" +9921 PRINT "3.25, 3.49, AND 3.73 ." +9924 GOSUB 9980 +9925 PRINT "DAMAGE CONTROL REPORT:" +9926 PRINT " THE DAMAGE CONTROL REPORT LISTS THE MAIN DEVICES AND" +9927 PRINT "THEIR STATE OF REPAIR. A NEGATIVE STATE OF REPAIR" +9928 PRINT "INDICATES A DISABLES DEVICE. DEVICES CAN BE DAMAGED OR" +9929 PRINT "REPAIRED BY A SPACE STORM OR TRUCE, RESPECTIVELY." +9930 PRINT "ALSO, DAMAGED DEVICES ARE REPAIRED 2 UNITS EVERY STARDATE." +9935 GOSUB 9980 +9940 PRINT "COMMANDS:" +9941 PRINT +9942 H6=1 +9944 GOTO 975 +9946 H6=H6+1 +9952 GOSUB 9980 +9953 PRINT "P.S.--SAVE THIS COPY OF INSTRUCTIONS, SO THAT NEXT" +9954 PRINT "TIME YOU WILL NOT NEED ADDITIONAL INSTRUCIONS AND" +9955 PRINT "CAN PROCEED IMMEDIATELY TO PLAY." +9956 PRINT +9957 PRINT +9960 GOSUB 9980 +9961 PRINT "WHEN YOU ARE READY TO CONTINUE, TYPE 9:"; +9962 INPUT X +9963 GOSUB 9980 +9965 GOTO 400 +9980 REM +9985 FOR I=1 TO 3 +9986 PRINT +9990 NEXT I +9991 RETURN +9992 PRINT +9993 PRINT +9994 PRINT " DO YOU WISH TO PLAY AGAIN:"; +9995 INPUT A$ +9996 IF A$ ="YES" THEN 5 +9997 PRINT +9998 PRINT " ** AVE ATQUE VALE **" +9999 END diff --git a/www/historic/mayfield.basic b/www/historic/mayfield.basic new file mode 100644 index 0000000..052da0b --- /dev/null +++ b/www/historic/mayfield.basic @@ -0,0 +1,643 @@ +REM Extracted from HP tape image 16-Nov-2003 by Pete Turnbull + +1 REM **** HP BASIC PROGRAM LIBRARY ****************************** +2 REM +3 REM STTR1: STAR TREK +4 REM +5 REM 36243 REV B -- 10/73 +6 REM +7 REM **** CONTRIBUTED PROGRAM *********************************** +100 REM ***************************************************************** +110 REM *** *** +120 REM *** STAR TREK: BY MIKE MAYFIELD, CENTERLINE ENGINEERING *** +130 REM *** *** +140 REM *** TOTAL INTERACTION GAME - ORIG. 20 OCT 1972 +150 REM *** *** +160 REM ***************************************************************** +170 GOSUB 5460 +180 PRINT " STAR TREK " +190 PRINT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)"; +200 INPUT A$ +210 IF A$ <> "YES" THEN 230 +220 GOSUB 5820 +230 REM ***** PROGRAM STARTS HERE ***** +240 Z$=" " +250 GOSUB 5460 +260 DIM G[8,8],C[9,2],K[3,3],N[3],Z[8,8] +270 DIM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48] +280 DIM Z$[72] +290 T0=T=INT(RND(1)*20+20)*100 +300 T9=30 +310 D0=0 +320 E0=E=3000 +330 P0=P=10 +340 S9=200 +350 S=H8=0 +360 DEF FND(D)=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2) +370 Q1=INT(RND(1)*8+1) +380 Q2=INT(RND(1)*8+1) +390 S1=INT(RND(1)*8+1) +400 S2=INT(RND(1)*8+1) +410 T7=TIM(0)+60*TIM(1) +420 C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1 +430 C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0 +440 C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1 +450 MAT D=ZER +460 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL" +470 D$[49]="PHOTON TUBESDAMAGE CNTRL" +480 E$="SHIELD CNTRLCOMPUTER" +490 B9=K9=0 +500 FOR I=1 TO 8 +510 FOR J=1 TO 8 +520 R1=RND(1) +530 IF R1>.98 THEN 580 +540 IF R1>.95 THEN 610 +550 IF R1>.8 THEN 640 +560 K3=0 +570 GOTO 660 +580 K3=3 +590 K9=K9+3 +600 GOTO 660 +610 K3=2 +620 K9=K9+2 +630 GOTO 660 +640 K3=1 +650 K9=K9+1 +660 R1=RND(1) +670 IF R1>.96 THEN 700 +680 B3=0 +690 GOTO 720 +700 B3=1 +710 B9=B9+1 +720 S3=INT(RND(1)*8+1) +730 G[I,J]=K3*100+B3*10+S3 +740 Z[I,J]=0 +750 NEXT J +760 NEXT I +770 K7=K9 +775 IF B9 <= 0 OR K9 <= 0 THEN 490 +780 PRINT "YOU MUST DESTROY"K9;" KLINGONS IN"T9;" STARDATES WITH"B9;" STARBASES" +810 K3=B3=S3=0 +820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920 +830 X=G[Q1,Q2]*.01 +840 K3=INT(X) +850 B3=INT((X-K3)*10) +860 S3=G[Q1,Q2]-INT(G[Q1,Q2]*.1)*10 +870 IF K3=0 THEN 910 +880 IF S>200 THEN 910 +890 PRINT "COMBAT AREA CONDITION RED" +900 PRINT " SHIELDS DANGEROUSLY LOW" +910 MAT K=ZER +920 FOR I=1 TO 3 +930 K[I,3]=0 +940 NEXT I +950 Q$=Z$ +960 R$=Z$ +970 S$=Z$[1,48] +980 A$="<*>" +990 Z1=S1 +1000 Z2=S2 +1010 GOSUB 5510 +1020 FOR I=1 TO K3 +1030 GOSUB 5380 +1040 A$="+++" +1050 Z1=R1 +1060 Z2=R2 +1070 GOSUB 5510 +1080 K[I,1]=R1 +1090 K[I,2]=R2 +1100 K[I,3]=S9 +1110 NEXT I +1120 FOR I=1 TO B3 +1130 GOSUB 5380 +1140 A$=">!<" +1150 Z1=R1 +1160 Z2=R2 +1170 GOSUB 5510 +1180 NEXT I +1190 FOR I=1 TO S3 +1200 GOSUB 5380 +1210 A$=" * " +1220 Z1=R1 +1230 Z2=R2 +1240 GOSUB 5510 +1250 NEXT I +1260 GOSUB 4120 +1270 PRINT "COMMAND:"; +1280 INPUT A +1290 GOTO A+1 OF 1410,1260,2330,2530,2800,3460,3560,4630 +1300 PRINT +1310 PRINT " 0 = SET COURSE" +1320 PRINT " 1 = SHORT RANGE SENSOR SCAN" +1330 PRINT " 2 = LONG RANGE SENSOR SCAN" +1340 PRINT " 3 = FIRE PHASERS" +1350 PRINT " 4 = FIRE PHOTON TORPEDOES" +1360 PRINT " 5 = SHIELD CONTROL" +1370 PRINT " 6 = DAMAGE CONTROL REPORT" +1380 PRINT " 7 = CALL ON LIBRARY COMPUTER" +1390 PRINT +1400 GOTO 1270 +1410 PRINT "COURSE (1-9):"; +1420 INPUT C1 +1430 IF C1=0 THEN 1270 +1440 IF C1<1 OR C1 >= 9 THEN 1410 +1450 PRINT "WARP FACTOR (0-8):"; +1460 INPUT W1 +1470 IF W1<0 OR W1>8 THEN 1410 +1480 IF D[1] >= 0 OR W1 <= .2 THEN 1510 +1490 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2" +1500 GOTO 1410 +1510 IF K3 <= 0 THEN 1560 +1520 GOSUB 3790 +1530 IF K3 <= 0 THEN 1560 +1540 IF S<0 THEN 4000 +1550 GOTO 1610 +1560 IF E>0 THEN 1610 +1570 IF S<1 THEN 3920 +1580 PRINT "YOU HAVE"E" UNITS OF ENERGY" +1590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT" +1600 GOTO 1270 +1610 FOR I=1 TO 8 +1620 IF D[I] >= 0 THEN 1640 +1630 D[I]=D[I]+1 +1640 NEXT I +1650 IF RND(1)>.2 THEN 1810 +1660 R1=INT(RND(1)*8+1) +1670 IF RND(1) >= .5 THEN 1750 +1680 D[R1]=D[R1]-(RND(1)*5+1) +1690 PRINT +1700 PRINT "DAMAGE CONTROL REPORT:"; +1710 GOSUB 5610 +1720 PRINT " DAMAGED" +1730 PRINT +1740 GOTO 1810 +1750 D[R1]=D[R1]+(RND(1)*5+1) +1760 PRINT +1770 PRINT "DAMAGE CONTROL REPORT:"; +1780 GOSUB 5610 +1790 PRINT " STATE OF REPAIR IMPROVED" +1800 PRINT +1810 N=INT(W1*8) +1820 A$=" " +1830 Z1=S1 +1840 Z2=S2 +1850 GOSUB 5510 +1870 X=S1 +1880 Y=S2 +1885 C2=INT(C1) +1890 X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2) +1900 X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2) +1910 FOR I=1 TO N +1920 S1=S1+X1 +1930 S2=S2+X2 +1940 IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2170 +1950 A$=" " +1960 Z1=S1 +1970 Z2=S2 +1980 GOSUB 5680 +1990 IF Z3 <> 0 THEN 2070 +2030 PRINT USING 5370;S1,S2 +2040 S1=S1-X1 +2050 S2=S2-X2 +2060 GOTO 2080 +2070 NEXT I +2080 A$="<*>" +2083 S1=INT(S1+.5) +2086 S2=INT(S2+.5) +2090 Z1=S1 +2100 Z2=S2 +2110 GOSUB 5510 +2120 E=E-N+5 +2130 IF W1<1 THEN 2150 +2140 T=T+1 +2150 IF T>T0+T9 THEN 3970 +2160 GOTO 1260 +2170 X=Q1*8+X+X1*N +2180 Y=Q2*8+Y+X2*N +2190 Q1=INT(X/8) +2200 Q2=INT(Y/8) +2210 S1=INT(X-Q1*8+.5) +2220 S2=INT(Y-Q2*8+.5) +2230 IF S1 <> 0 THEN 2260 +2240 Q1=Q1-1 +2250 S1=8 +2260 IF S2 <> 0 THEN 2290 +2270 Q2=Q2-1 +2280 S2=8 +2290 T=T+1 +2300 E=E-N+5 +2310 IF T>T0+T9 THEN 3970 +2320 GOTO 810 +2330 IF D[3] >= 0 THEN 2370 +2340 PRINT "LONG RANGE SENSORS ARE INOPERABLE" +2350 IMAGE "LONG RANGE SENSOR SCAN FOR QUADRANT",D,",",D +2360 GOTO 1270 +2370 PRINT USING 2350;Q1,Q2 +2380 PRINT USING 2520 +2390 FOR I=Q1-1 TO Q1+1 +2400 MAT N=ZER +2410 FOR J=Q2-1 TO Q2+1 +2420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460 +2430 N[J-Q2+2]=G[I,J] +2440 IF D[7]<0 THEN 2460 +2450 Z[I,J]=G[I,J] +2460 NEXT J +2470 PRINT USING 2510;N[1],N[2],N[3] +2480 PRINT USING 2520 +2490 NEXT I +2500 GOTO 1270 +2510 IMAGE ": ",3(3D," :") +2520 IMAGE "-----------------" +2530 IF K3 <= 0 THEN 3670 +2540 IF D[4] >= 0 THEN 2570 +2550 PRINT "PHASER CONTROL IS DISABLED" +2560 GOTO 1270 +2570 IF D[7] >= 0 THEN 2590 +2580 PRINT " COMPUTER FAILURE HAMPERS ACCURACY" +2590 PRINT "PHASERS LOCKED ON TARGET. ENERGY AVAILABLE="E +2600 PRINT "NUMBER OF UNITS TO FIRE:"; +2610 INPUT X +2620 IF X <= 0 THEN 1270 +2630 IF E-X<0 THEN 2570 +2640 E=E-X +2650 GOSUB 3790 +2660 IF D[7] >= 0 THEN 2680 +2670 X=X*RND(1) +2680 FOR I=1 TO 3 +2690 IF K[I,3] <= 0 THEN 2770 +2700 H=(X/K3/FND(0))*(2*RND(1)) +2710 K[I,3]=K[I,3]-H +2720 PRINT USING 2730;H,K[I,1],K[I,2],K[I,3] +2730 IMAGE 4D," UNIT HIT ON KLINGON AT SECTOR ",D,",",D," (",3D," LEFT)" +2740 IF K[I,3]>0 THEN 2770 +2750 GOSUB 3690 +2760 IF K9 <= 0 THEN 4040 +2770 NEXT I +2780 IF E<0 THEN 4000 +2790 GOTO 1270 +2800 IF D[5] >= 0 THEN 2830 +2810 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" +2820 GOTO 1270 +2830 IF P>0 THEN 2860 +2840 PRINT "ALL PHOTON TORPEDOES EXPENDED" +2850 GOTO 1270 +2860 PRINT "TORPEDO COURSE (1-9):"; +2870 INPUT C1 +2880 IF C1=0 THEN 1270 +2890 IF C1<1 OR C1 >= 9 THEN 2860 +2895 C2=INT(C1) +2900 X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2) +2910 X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2) +2920 X=S1 +2930 Y=S2 +2940 P=P-1 +2950 PRINT "TORPEDO TRACK:" +2960 X=X+X1 +2970 Y=Y+X2 +2980 IF X<.5 OR X >= 8.5 OR Y<.5 OR Y >= 8.5 THEN 3420 +2990 PRINT USING 3000;X,Y +3000 IMAGE 15X,D,",",D +3010 A$=" " +3020 Z1=X +3030 Z2=Y +3040 GOSUB 5680 +3050 IF Z3=0 THEN 3070 +3060 GOTO 2960 +3070 A$="+++" +3080 Z1=X +3090 Z2=Y +3100 GOSUB 5680 +3110 IF Z3=0 THEN 3220 +3120 PRINT "*** KLINGON DESTROYED ***" +3130 K3=K3-1 +3140 K9=K9-1 +3150 IF K9 <= 0 THEN 4040 +3160 FOR I=1 TO 3 +3170 IF INT(X+.5) <> K[I,1] THEN 3190 +3180 IF INT(Y+.5)=K[I,2] THEN 3200 +3190 NEXT I +3200 K[I,3]=0 +3210 GOTO 3360 +3220 A$=" * " +3230 Z1=X +3240 Z2=Y +3250 GOSUB 5680 +3260 IF Z3=0 THEN 3290 +3270 PRINT "YOU CAN'T DESTROY STARS SILLY" +3280 GOTO 3420 +3290 A$=">!<" +3300 Z1=X +3310 Z2=Y +3320 GOSUB 5680 +3330 IF Z3=0 THEN 2960 +3340 PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS" +3350 B3=B3-1 +3360 A$=" " +3370 Z1=INT(X+.5) +3380 Z2=INT(Y+.5) +3390 GOSUB 5510 +3400 G[Q1,Q2]=K3*100+B3*10+S3 +3410 GOTO 3430 +3420 PRINT "TORPEDO MISSED" +3430 GOSUB 3790 +3440 IF E<0 THEN 4000 +3450 GOTO 1270 +3460 IF D[7] >= 0 THEN 3490 +3470 PRINT "SHIELD CONTROL IS NON-OPERATIONAL" +3480 GOTO 1270 +3490 PRINT "ENERGY AVAILABLE ="E+S" NUMBER OF UNITS TO SHIELDS:"; +3500 INPUT X +3510 IF X <= 0 THEN 1270 +3520 IF E+S-X<0 THEN 3490 +3530 E=E+S-X +3540 S=X +3550 GOTO 1270 +3560 IF D[6] >= 0 THEN 3590 +3570 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE" +3580 GOTO 1270 +3590 PRINT +3600 PRINT "DEVICE STATE OF REPAIR" +3610 FOR R1=1 TO 8 +3620 GOSUB 5610 +3630 PRINT "",D[R1] +3640 NEXT R1 +3650 PRINT +3660 GOTO 1270 +3670 PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT" +3680 GOTO 1270 +3690 PRINT USING 3700;K[I,1],K[I,2] +3700 IMAGE "KLINGON AT SECTOR ",D,",",D," DESTROYED ****" +3710 K3=K3-1 +3720 K9=K9-1 +3730 A$=" " +3740 Z1=K[I,1] +3750 Z2=K[I,2] +3760 GOSUB 5510 +3770 G[Q1,Q2]=K3*100+B3*10+S3 +3780 RETURN +3790 IF C$ <> "DOCKED" THEN 3820 +3800 PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE" +3810 RETURN +3820 IF K3 <= 0 THEN 3910 +3830 FOR I=1 TO 3 +3840 IF K[I,3] <= 0 THEN 3900 +3850 H=(K[I,3]/FND(0))*(2*RND(1)) +3860 S=S-H +3870 PRINT USING 3880;H,K[I,1],K[I,2],S +3880 IMAGE 4D," UNIT HIT ON ENTERPRISE AT SECTOR ",D,",",D," (",4D," LEFT)" +3890 IF S<0 THEN 4000 +3900 NEXT I +3910 RETURN +3920 PRINT "THE ENTERPRISE IS DEAD IN SPACE. IF YOU SURVIVE ALL IMPENDING" +3930 PRINT "ATTACK YOU WILL BE DEMOTED TO THE RANK OF PRIVATE" +3940 IF K3 <= 0 THEN 4020 +3950 GOSUB 3790 +3960 GOTO 3940 +3970 PRINT +3980 PRINT "IT IS STARDATE"T +3990 GOTO 4020 +4000 PRINT +4010 PRINT "THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED" +4020 PRINT "THERE ARE STILL"K9" KLINGON BATTLE CRUISERS" +4030 GOTO 230 +4040 PRINT +4050 PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED" +4060 PRINT "THE FEDERATION HAS BEEN SAVED !!!" +4070 PRINT +4080 PRINT "YOUR EFFICIENCY RATING ="((K7/(T-T0))*1000) +4090 T1=TIM(0)+TIM(1)*60 +4100 PRINT "YOUR ACTUAL TIME OF MISSION ="INT((((T1-T7)*.4)-T7)*100)" MINUTES" +4110 GOTO 230 +4120 FOR I=S1-1 TO S1+1 +4130 FOR J=S2-1 TO S2+1 +4140 IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200 +4150 A$=">!<" +4160 Z1=I +4170 Z2=J +4180 GOSUB 5680 +4190 IF Z3=1 THEN 4240 +4200 NEXT J +4210 NEXT I +4220 D0=0 +4230 GOTO 4310 +4240 D0=1 +4250 C$="DOCKED" +4260 E=3000 +4270 P=10 +4280 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES" +4290 S=0 +4300 GOTO 4380 +4310 IF K3>0 THEN 4350 +4320 IF E= 0 THEN 4430 +4390 PRINT +4400 PRINT "*** SHORT RANGE SENSORS ARE OUT ***" +4410 PRINT +4420 GOTO 4530 +4430 PRINT USING 4540 +4440 PRINT USING 4550;Q$[1,3],Q$[4,6],Q$[7,9],Q$[10,12],Q$[13,15],Q$[16,18],Q$[19,21],Q$[22,24] +4450 PRINT USING 4560;Q$[25,27],Q$[28,30],Q$[31,33],Q$[34,36],Q$[37,39],Q$[40,42],Q$[43,45],Q$[46,48],T +4460 PRINT USING 4570;Q$[49,51],Q$[52,54],Q$[55,57],Q$[58,60],Q$[61,63],Q$[64,66],Q$[67,69],Q$[70,72],C$ +4470 PRINT USING 4580;R$[1,3],R$[4,6],R$[7,9],R$[10,12],R$[13,15],R$[16,18],R$[19,21],R$[22,24],Q1,Q2 +4480 PRINT USING 4590;R$[25,27],R$[28,30],R$[31,33],R$[34,36],R$[37,39],R$[40,42],R$[43,45],R$[46,48],S1,S2 +4490 PRINT USING 4600;R$[49,51],R$[52,54],R$[55,57],R$[58,60],R$[61,63],R$[64,66],R$[67,69],R$[70,72],E +4500 PRINT USING 4610;S$[1,3],S$[4,6],S$[7,9],S$[10,12],S$[13,15],S$[16,18],S$[19,21],S$[22,24],P +4510 PRINT USING 4620;S$[25,27],S$[28,30],S$[31,33],S$[34,36],S$[37,39],S$[40,42],S$[43,45],S$[46,48],S +4520 PRINT USING 4540 +4530 RETURN +4540 IMAGE "---------------------------------" +4550 IMAGE 8(X,3A) +4560 IMAGE 8(X,3A),8X,"STARDATE",8X,5D +4570 IMAGE 8(X,3A),8X,"CONDITION",8X,6A +4580 IMAGE 8(X,3A),8X,"QUADRANT",9X,D,",",D +4590 IMAGE 8(X,3A),8X,"SECTOR",11X,D,",",D +4600 IMAGE 8(X,3A),8X,"ENERGY",9X,6D +4610 IMAGE 8(X,3A),8X,"PHOTON TORPEDOES",3D +4620 IMAGE 8(X,3A),8X,"SHIELDS",8X,6D +4630 IF D[8] >= 0 THEN 4660 +4640 PRINT "COMPUTER DISABLED" +4650 GOTO 1270 +4660 PRINT "COMPUTER ACTIVE AND AWAITING COMMAND"; +4670 INPUT A +4680 GOTO A+1 OF 4740,4830,4880 +4690 PRINT "FUNCTIONS AVAILABLE FROM COMPUTER" +4700 PRINT " 0 = CUMULATIVE GALACTIC RECORD" +4710 PRINT " 1 = STATUS REPORT" +4720 PRINT " 2 = PHOTON TORPEDO DATA" +4730 GOTO 4660 +4740 PRINT USING 4750;Q1,Q2 +4750 IMAGE "COMPUTER RECORD OF GALAXY FOR QUADRANT ",D,",",D +4760 PRINT USING 5330 +4770 PRINT USING 5360 +4780 FOR I=1 TO 8 +4790 PRINT USING 5350;I,Z[I,1],Z[I,2],Z[I,3],Z[I,4],Z[I,5],Z[I,6],Z[I,7],Z[I,8] +4800 PRINT USING 5360 +4810 NEXT I +4820 GOTO 1270 +4830 PRINT "\012 STATUS REPORT\012" +4840 PRINT "NUMBER OF KLINGONS LEFT ="K9 +4850 PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T +4860 PRINT "NUMBER OF STARBASES LEFT ="B9 +4870 GOTO 3560 +4880 PRINT +4890 H8=0 +4900 FOR I=1 TO 3 +4910 IF K[I,3] <= 0 THEN 5260 +4920 C1=S1 +4930 A=S2 +4940 W1=K[I,1] +4950 X=K[I,2] +4960 GOTO 5010 +4970 PRINT USING 4980;Q1,Q2,S1,S2 +4980 IMAGE "YOU ARE AT QUADRANT ( ",D,",",D," ) SECTOR ( ",D,",",D," )" +4990 PRINT "SHIP'S & TARGET'S COORDINATES ARE"; +5000 INPUT C1,A,W1,X +5010 X=X-A +5020 A=C1-W1 +5030 IF X<0 THEN 5130 +5040 IF A<0 THEN 5190 +5050 IF X>0 THEN 5070 +5060 IF A=0 THEN 5150 +5070 C1=1 +5080 IF ABS(A) <= ABS(X) THEN 5110 +5090 PRINT "DIRECTION ="C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) +5100 GOTO 5240 +5110 PRINT "DIRECTION ="C1+(ABS(A)/ABS(X)) +5120 GOTO 5240 +5130 IF A>0 THEN 5170 +5140 IF X=0 THEN 5190 +5150 C1=5 +5160 GOTO 5080 +5170 C1=3 +5180 GOTO 5200 +5190 C1=7 +5200 IF ABS(A) >= ABS(X) THEN 5230 +5210 PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) +5220 GOTO 5240 +5230 PRINT "DIRECTION ="C1+(ABS(X)/ABS(A)) +5240 PRINT "DISTANCE ="(SQR(X^2+A^2)) +5250 IF H8=1 THEN 5320 +5260 NEXT I +5270 H8=0 +5280 PRINT "DO YOU WANT TO USE THE CALCULATOR"; +5290 INPUT A$ +5300 IF A$="YES" THEN 4970 +5310 IF A$ <> "NO" THEN 5280 +5320 GOTO 1270 +5330 IMAGE " 1 2 3 4 5 6 7 8" +5340 IMAGE "---------------------------------------------------" +5350 IMAGE D,8(3X,3D) +5360 IMAGE " ----- ----- ----- ----- ----- ----- ----- -----" +5370 IMAGE " WARP ENGINES SHUTDOWN AT SECTOR ",D,",",D," DUE TO BAD NAVIGATION" +5380 R1=INT(RND(1)*8+1) +5390 R2=INT(RND(1)*8+1) +5400 A$=" " +5410 Z1=R1 +5420 Z2=R2 +5430 GOSUB 5680 +5440 IF Z3=0 THEN 5380 +5450 RETURN +5460 FOR I=1 TO 11 +5470 PRINT +5480 NEXT I +5490 PRINT +5500 RETURN +5510 REM ****** INSERTION IN STRING ARRAY FOR QUADRANT ****** +5520 S8=Z1*24+Z2*3-26 +5530 IF S8>72 THEN 5560 +5540 Q$[S8,S8+2]=A$ +5550 GOTO 5600 +5560 IF S8>144 THEN 5590 +5570 R$[S8-72,S8-70]=A$ +5580 GOTO 5600 +5590 S$[S8-144,S8-142]=A$ +5600 RETURN +5610 REM **** PRINTS DEVICE NAME FROM ARRAY ***** +5620 S8=R1*12-11 +5630 IF S8>72 THEN 5660 +5640 PRINT D$[S8,S8+11]; +5650 GOTO 5670 +5660 PRINT E$[S8-72,S8-61]; +5670 RETURN +5680 REM ******* STRING COMPARISON IN QUADRANT ARRAY ********** +5683 Z1=INT(Z1+.5) +5686 Z2=INT(Z2+.5) +5690 S8=Z1*24+Z2*3-26 +5700 Z3=0 +5710 IF S8>72 THEN 5750 +5720 IF Q$[S8,S8+2] <> A$ THEN 5810 +5730 Z3=1 +5740 GOTO 5810 +5750 IF S8>144 THEN 5790 +5760 IF R$[S8-72,S8-70] <> A$ THEN 5810 +5770 Z3=1 +5780 GOTO 5810 +5790 IF S$[S8-144,S8-142] <> A$ THEN 5810 +5800 Z3=1 +5810 RETURN +5820 PRINT " INSTRUCTIONS:" +5830 PRINT "<*> = ENTERPRISE" +5840 PRINT "+++ = KLINGON" +5850 PRINT ">!< = STARBASE" +5860 PRINT " * = STAR" +5870 PRINT "COMMAND 0 = WARP ENGINE CONTROL" +5880 PRINT " 'COURSE' IS IN A CIRCULAR NUMERICAL 4 3 2" +5890 PRINT " VECTOR ARRANGEMENT AS SHOWN. \ ^ /" +5900 PRINT " INTERGER AND REAL VALUES MAY BE \^/" +5910 PRINT " USED. THEREFORE COURSE 1.5 IS 5 ----- 1" +5920 PRINT " HALF WAY BETWEEN 1 AND 2. /^\" +5930 PRINT " / ^ \" +5940 PRINT " A VECTOR OF 9 IS UNDEFINED, BUT 6 7 8" +5950 PRINT " VALUES MAY APPROACH 9." +5960 PRINT " COURSE" +5970 PRINT " ONE 'WARP FACTOR' IS THE SIZE OF" +5980 PRINT " ONE QUADRANT. THEREFORE TO GET" +5990 PRINT " FROM QUADRANT 6,5 TO 5,5 YOU WOULD" +6000 PRINT " USE COURSE 3, WARP FACTOR 1" +6010 PRINT "COMMAND 1 = SHORT RANGE SENSOR SCAN" +6020 PRINT " PRINTS THE QUADRANT YOU ARE CURRENTLY IN, INCLUDING" +6030 PRINT " STARS, KLINGONS, STARBASES, AND THE ENTERPRISE; ALONG" +6040 PRINT " WITH OTHER PERTINATE INFORMATION." +6050 PRINT "COMMAND 2 = LONG RANGE SENSOR SCAN" +6060 PRINT " SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE" +6070 PRINT " OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN. THE SCAN" +6080 PRINT " IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE" +6090 PRINT " NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-" +6100 PRINT " BASES, THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS." +6110 PRINT "COMMAND 3 = PHASER CONTROL" +6120 PRINT " ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH" +6130 PRINT " SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS " +6140 PRINT " SHIELD POWER. KEEP IN MIND THAT WHEN YOU SHOOT AT" +6150 PRINT " HIM, HE GONNA DO IT TO YOU TOO." +6160 PRINT "COMMAND 4 = PHOTON TORPEDO CONTROL" +6170 PRINT " COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL" +6180 PRINT " IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE" +6190 PRINT " BACK AT YOU. IF YOU MISS, HE WILL SHOOT HIS PHASERS AT" +6200 PRINT " YOU." +6210 PRINT " NOTE: THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION" +6220 PRINT " TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)." +6230 PRINT "COMMAND 5 = SHIELD CONTROL" +6240 PRINT " DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS" +6250 PRINT " ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY." +6260 PRINT "COMMAND 6 = DAMAGE CONTROL REPORT" +6270 PRINT " GIVES STATE OF REPAIRS OF ALL DEVICES. A STATE OF REPAIR" +6280 PRINT " LESS THAN ZERO SHOWS THAT THAT DEVICE IS TEMPORARALY" +6290 PRINT " DAMAGED." +6300 PRINT "COMMAND 7 = LIBRARY COMPUTER" +6310 PRINT " THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:" +6320 PRINT " OPTION 0 = CUMULATIVE GALACTIC RECORD" +6330 PRINT " SHOWS COMPUTER MEMORY OF THE RESULTS OF ALL PREVIOUS" +6340 PRINT " LONG RANGE SENSOR SCANS" +6350 PRINT " OPTION 1 = STATUS REPORT" +6360 PRINT " SHOWS NUMBER OF KLINGONS, STARDATES AND STARBASES" +6370 PRINT " LEFT." +6380 PRINT " OPTION 2 = PHOTON TORPEDO DATA" +6390 PRINT " GIVES TRAJECTORY AND DISTANCE BETWEEN THE ENTERPRISE" +6400 PRINT " AND ALL KLINGONS IN YOUR QUADRANT" +6410 RETURN +6420 END diff --git a/www/index.html b/www/index.html new file mode 100644 index 0000000..45d70db --- /dev/null +++ b/www/index.html @@ -0,0 +1,96 @@ + + + + + + + + Super Star Trek home page + + + + +

Super Star Trek — a classic computer game

+ +

Save the Federation from the invading Klingons! Visit exotic +planets and strip-mine them for dilithium! Encounter mysterious space +thingies! This is the home page of the classic Super Star Trek game +from the days of slow teletypes, reloaded.

+ +

SST2K is a modern Unix port of the University of Texas "Super Star +Trek" game originally written in FORTRAN in the mid-1970s. It has +options to restrict its feature set to what was in earlier versions.

+ +

SST2K is a kind of time machine back to what interactive programs were +like in the days of hardcopy terminals, before graphics and before +even video displays. Despite this archaism and decades after it was +written, SST2K retains significant play value. We think it's both fun +and instructive to see how good a game could be written under those +conditions.

+ +

Presently the code is available only via Subversion +at the SST +Project Page on berlios.de. It builds and runs. We expect to do +an actual release Real Soon Now.

+ +

In the meantime, you can at least browse the game +documentation. + +

You can read the project's to-do list. If +you want to help with these things, here are the project mailing +lists:

+ +
    +
  • sst-users +is for questions and technical support on sst.

  • + +
  • sst-dev +is for sst developers.

  • + +
  • sst-commit-watch +carries notifications of commits to the Subversion archive. It is +recommended that developers subscribe to this.

+ + +

Tom Almy, one of the SST project founders, has an SST page of his own.

+ +

There is a Wikipedia +entry.

+ +

SST is fairly closely related to Eric Allman's BSD Trek, which also started +life as a C translation of UT Super Star Trek. BSD Trek is missing most of +the post-1978 features of SST2K, but does add a cloaking device for the +Romulans.

+ +

The only other really current Star Trek port we know of is +OpenTrek, +which appears to be set in the ST:TNG universe (featuring the Borg +Collective as the villains) and has a fancy graphical interface.

+ +

(There are also some multi-player Trek variants out there, notably +XTrek and NetTrek, that have a very different feel from any of the +Trek solitaires.)

+ +

For a truly retro-Trek experience, see the Star Trek ASCII Art +Archive.

+ +

If this game interested you, you may want to check out some of the +other ancient games at the Retrocomputing Museum.

+ + + + diff --git a/www/lpt.jpg b/www/lpt.jpg new file mode 100644 index 0000000..cc74ea0 Binary files /dev/null and b/www/lpt.jpg differ diff --git a/www/upload b/www/upload new file mode 100755 index 0000000..b8066a1 --- /dev/null +++ b/www/upload @@ -0,0 +1,6 @@ +#!/bin/sh +# +# Upload gpsd docs +# +xmlto xhtml-nochunks ../sst-doc.xml +scp ../TODO ../CHANGES *.html *.jpg esr@shell.berlios.de:/home/groups/sst/htdocs