PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #178)

[PCjs Machine "ibm5160"]

Waiting for machine "ibm5160" to load....

Information about “GAME SERIES NO 13”

Are you ready for a challenge?  Then grab your hat and let's go! First
stop, your very own Kingdom, where you are responsible for the well-
being and prosperity of yourself and your subjects. Next, stop the mad
bomber in COLLIDE, it'll really blow you away!  Then off to deep space
with STARTREK, destroy Klingons and save your command.  Afterward, sit
back and let the stars of STAR3D relax you.

System Requirements:  Some programs require color, BASIC

How to Start: To read DOC files, enter TYPE filename.ext and press
<ENTER>.  To run an EXE program, just type its name and press <ENTER>.
For instructions on running BASIC programs, please refer to the
GETTING STARTED section in this catalog.

File Descriptions:

AWARI    BAS  Old African game played with 7 sticks & 36 stones
CHESS88  EXE  Same as above game, either later or earlier version
CHESS    EXE  Color Graphics - plays well at first, not tough later
STAR3D   EXE  Sensation of traveling through space on color monitor
STAR3D   DOC  Documentation for STAR3D.EXE
HAMURABI BAS  Play King and find out its not such a good life
COLLIDE  BAS  Simple minded but not easy - shoot falling bombs
STARTREK BAS  Super version of Startrek
STARTREK EXE  Outstanding version of Startrek

AWARI.BAS

1 '**********************************
2 ' Adapted from the Microcomputer
3 '     Edition of the book
4 '    BASIC COMPUTER GAMES
5 '   Edited by David H. Ahl
6 '**********************************
7 '
10 CLS:KEY OFF
20 PRINT :PRINT TAB(18) "AWARI"
22 PRINT :PRINT
24 PRINT "Awari is an ancient African game played"
25 PRINT "with seven sticks and thirty-six stones"
26 PRINT "or beans. The board is divided into six"
27 PRINT "compartments or pits on each side. In"
28 PRINT "addition, there are two special home "
30 PRINT "pits at the ends.":PRINT
32 PRINT "A move is made by taking all of the "
34 PRINT "beans from any (non-empty) pit on your"
36 PRINT "own side (bottom) and, starting from"
38 PRINT "the pit to the right of this one, place one bean in each pit working around"
40 PRINT "the board anticlockwise.":PRINT
42 PRINT "A turn consists of one or two moves."
44 PRINT "If the last bean of your move is sown"
46 PRINT "in your own home you may take a second  move.":PRINT
50 PRINT :PRINT "      MORE, press enter key.";
51 A$=INKEY$:IF A$="" THEN 51
52 CLS
55 PRINT :PRINT TAB(18) "AWARI"
56 PRINT :PRINT
60 PRINT "If the last bean sown in a move lands"
62 PRINT "in an empty pit, provided that the "
64 PRINT "opposite pit is not empty,all the beans"
66 PRINT "in the opposite pit, together with the"
68 PRINT "last bean sown are captured and moved"
70 PRINT "to that player's home.":PRINT
74 PRINT "When either side is empty, the game is"
76 PRINT "finished. The player with the most "
77 PRINT "beans in his home has won.":PRINT
78 PRINT "To make a move, type in the pit's "
80 PRINT "number. If the last bean lands in your"
82 PRINT "home,the computer responds with"
84 PRINT "`Move again' and you then type in your"
86 PRINT "second move.":PRINT
90 PRINT "The computer always gives you the first"
92 PRINT "move."
129 PRINT :PRINT "Press any key to begin game.";
130 A$=INKEY$:IF A$="" THEN 130
135 DATA 0
140 DIM B(13),G(13),F(50):READ N
150 E=0
160 FOR I=0 TO 12:B(I)=3:NEXT I
165 C=0:F(N)=0:B(13)=0:B(6)=0
172 CLS
175 PRINT :PRINT TAB(18) "AWARI"
177 LOCATE 23,10:PRINT "** SCORE  BOARD **"
178 PRINT TAB(8) "MY SIDE ";MS" YOUR SIDE ";YS;
179 LOCATE 25,13:PRINT "TIE GAMES ";TG;
180 GOSUB 510
182 FOR T=1 TO 1000: NEXT T
185 LOCATE 15,1 :PRINT "                    "
190 LOCATE 15,1:PRINT "Your move ";:GOSUB 360
200 IF E=0 THEN 270
210 IF M=H THEN GOSUB 350
220 IF E=0 THEN 270
225 LOCATE 15,1:PRINT "                    "
230 LOCATE 15,1:PRINT "My move is ";:GOSUB 670
240 IF E=0 THEN 270
250 IF M=H THEN PRINT ",";:GOSUB 670
260 IF E>0 THEN 180
270 LOCATE 17,1:PRINT "End of game."
280 D=B(6)-B(13):IF D<0 THEN MS=MS+1:PRINT "I win by";-D;"points.":GOTO 310
290 N=N+1:IF D=0 THEN PRINT "Tie game.": TG=TG+1:GOTO 310
300 PRINT "You win by";D;"points.":YS=YS+1
310 PRINT :PRINT "Play again (y/n): ";
320 KB$=INKEY$:IF KB$="" THEN 320
330 IF LEFT$(KB$,1)="n" OR LEFT$(KB$,1)="N" THEN LOAD"masterp",R
344 GOTO 150
350 LOCATE 15,1:PRINT "Move again.";
360 INPUT " ",M:IF M<7 AND M>0 THEN M=M-1:GOTO 380
370 BEEP:PRINT "Illegal move!!!":FOR TD=1 TO 1000:NEXT TD:LOCATE 16,1:PRINT "                    ":GOTO 350
380 IF B(M)=0 THEN 370
390 H=6: GOSUB 410
400 GOTO 510
410 K=M: GOSUB 610
420 E=0: IF K>6 THEN K=K-7
430 C=C+1: IF C<9 THEN F(N)=F(N)*6+K
440 FOR I=0 TO 5
450 IF B(I) <> 0 THEN 460 ELSE 490
460   FOR KB=7 TO 12
470   IF B(KB)<>0 THEN E=1
480   NEXT KB
490 NEXT I
500 RETURN
510 LOCATE 7,11:PRINT "MY SIDE"
512 LOCATE 8,1:COLOR 0,7 :PRINT "HOME 6   5   4   3   2   1":COLOR 7,0:PRINT "   ";
520 FOR I=12 TO 7 STEP -1: GOSUB 590
530 NEXT I
540 PRINT :I=13:GOSUB 590
550 PRINT "                       ";:PRINT B(6):PRINT "   ";
560 FOR I=0 TO 5: GOSUB 590
570 NEXT I
575 PRINT :PRINT "     ";:COLOR 0,7:PRINT "1   2   3   4   5   6 HOME":COLOR 7,0
577 PRINT "            YOUR SIDE"
580 PRINT :PRINT :RETURN
590 IF B(I)<10 THEN COLOR 7:PRINT " ";
600 PRINT B(I);:RETURN
610 P=B(M):B(M)=0
620 FOR P=P TO 1 STEP -1:M=M+1:IF M>13 THEN M=M-14
630 B(M)=B(M)+1:NEXT P
640 IF B(M)=1 THEN IF M<>6 THEN IF M<>13 THEN IF B(12-M)<>0 THEN 660
650 RETURN
660 B(H)=B(H)+B(12-M)+1:B(M)=0:B(12-M)=0:RETURN
670 D=-99:H=13
680 FOR I=0 TO 13:G(I)=B(I):NEXT I
690 FOR J=7 TO 12: IF B(J)=0 THEN 830
700 G=0:M=J::GOSUB 610
710 FOR I=0 TO 5: IF B(I)=0 THEN 760
720 L=B(I)+I:R=0
730 IF L>13 THEN L=L-14:R=1:GOTO 730
740 IF B(L)=0 AND L<>6 AND L<>13 THEN R=B(12-L)+R
750 IF R>Q THEN Q=R
760 NEXT I
770 Q=B(13)-B(6)-Q: IF C>8 THEN 810
780 K=J: IF K>6 THEN K=K-7
790 FOR I=0 TO N-1: IF F(N)*6+K=INT(F(I)/6^(7-C)+0.1) THEN Q=Q-2
800 NEXT I
810 FOR I=0 TO 13:B(I)=G(I):NEXT I
820 IF Q>=D THEN A=J:D=Q
830 NEXT J
840 M=A:PRINT CHR$(42+M);:GOTO 410
850 FOR I=0 TO N-1: PRINT B(I):NEXT I
860 END
870 IF B(M) =1 AND M<>6 AND M<>13 AND B(12-M)<>0 THEN 660

COLLIDE.BAS

1 '*************************************************************************
2 '                 From Personal Computing Age
3 '                    Volume 2.2  Page 32
4 '                       By Peter Kahn
5 '*************************************************************************
6 '
10 KEY OFF:CLS:WIDTH 80: DEFINT I-K
20 KDB = VAL(RIGHT$(TIME$,2))*VAL(MID$(TIME$,4,2))
30 RANDOMIZE KDB:CLS
100 LOCATE 10,17:PRINT "THE BULLET IS CONTROLLED BY THE LEFT AND RIGHT":LOCATE 12,21:PRINT "CURSOR CONTROLS ON THE NUMERIC KEYPAD."
110 LOCATE 15,5:PRINT "SPEED OF GAME - ENTER (1) FOR FAST, (2) FOR MEDIUM, OR (3) FOR SLOW"
120 LOCATE 15,75:INPUT Q
130 IF ((Q<1) OR (Q>3)) THEN LOCATE 20,33:PRINT "ENTER 1,2, OR 3!:LOCATE 15,75:PRINT "               ":GOTO 120
140 IF Q=1 THEN S=200 ELSE IF Q=2 THEN S=250 ELSE S=400
150 COLOR 15,0,5
160 DEF SEG=0 : IF (PEEK(1040) AND 48) = 48 THEN DEF SEG = &HB000 ELSE DEF SEG = &HB800
180 CLS
190 LOCATE 25,1:PRINT "MISSED":LOCATE 25,70:PRINT "HITS"
200 L=0:M=0:H=0:M$="YOU GOT ME"
210 KEY (12) ON
220 KEY (13) ON
230 ON KEY (12) GOSUB 390
240 ON KEY (13) GOSUB 410
250 I=3760+C:R=RND*160: IF R<10 OR R>150 THEN 250
252 J=INT(R)-160:IF ((J MOD 2) <> 0) THEN J=J-1
260 I=I-160:J=J+160
270 IF (I<1760) THEN M=M+1:LOCATE 25,8:PRINT M;:L=L+1:IF L=10 THEN GOTO 430 ELSE GOTO 250
280 POKE I,127
290 POKE J,234
300 IF I=J THEN PLAY "MBT255L32O4CDEFGCDG":GOTO 350
310 FOR K=1 TO S:NEXT K
330 POKE I,32:POKE J,32
340 GOTO 260
350 POKE I,3:H=H+1:LOCATE 25,75:PRINT H
370 L=L+1:IF L=10 THEN 430
380 GOTO 250
390 POKE I,127:POKE I,32:I=I-2
400 RETURN
410 POKE I,127:POKE I,32:I=I+2
420 RETURN
430 CLS:LOCATE 10,36:PRINT "SCORE":LOCATE 10,42:PRINT 25*H:LOCATE 15,32:PRINT "HIT PERCENTAGE":LOCATE 15,48:PRINT INT((H/(H+M))*100):LOCATE 15,52:PRINT "%"
440 LOCATE 23,29:PRINT "WANT TO PLAY AGAIN (Y/N)"
445 LOCATE 23,53:Z$=INKEY$ : IF Z$ = "" THEN 445
447 IF Z$<>"n" AND Z$<>"N" THEN 180
450 RUN "MASTERP"

CRC.TXT

PC-SIG Disk No. #178, version v1

The following is a list of the file checksums which should be produced by
the CRCK4 program on disk #9 (and others).  If the CRC numbers do not match
you may have a bad file.  To use type:  CRCK4 <filespec>

CRCK4 output for this disk:


CRCK ver 4.2B (MS DOS VERSION )
CTL-S pauses, CTL-C aborts

--> FILE:  AWARI   .BAS         CRC = 0E 96

--> FILE:  CHESS   .EXE         CRC = 2C 13

--> FILE:  CHESS88 .EXE         CRC = E1 E6

--> FILE:  COLLIDE .BAS         CRC = A7 7D

--> FILE:  HAMURABI.BAS         CRC = 51 FC

--> FILE:  XXX     .            CRC = 6F 36

--> FILE:  STAR3D  .DOC         CRC = 5E B9

--> FILE:  STAR3D  .EXE         CRC = A1 15

--> FILE:  STARTREK.BAS         CRC = AB A4

--> FILE:  STARTREK.EXE         CRC = B9 AC

 ---------------------> SUM OF CRCS = EA 5C

DONE

These and other Public Domain and user-supported programs from:

PC Software Interest Group
1125 Stewart Ct  Suite G
Sunnyvale, CA 94086
(408) 730-9291

HAMURABI.BAS

10 KEY OFF
20 CLS
30 PRINT TAB(16);"HAMMURABI"
40 PRINT "Based on the book, BASIC COPUTER GAMES  Microcomputer Edition, by David H Ahl"
50 PRINT :PRINT :PRINT
60 PRINT "Try your hand at governing ancient      SUMERIA for a ten-year term of office"
70 TD=0 'TD=total dead
80  PP = 0:Z = 0: 'pp = percent of died per year over your term of office, z = year
90 S = 2800: H = 3000: 's = bushels of grain in store, h = bushels of grain harvested
100 Y = 3: E = H-S: A = H/Y: 'y = number of bushels of grain harvested per acre, e = bushels of grain the RATS ate, a = the number of acres of land that the city ownes
110 I = 5: Q = 1 'i = the number of people coming to the city, q = factor
120 P=95
130 PRINT :PRINT :PRINT
140 PRINT "To begin your term of office,enter any"
150 PRINT :PRINT "number between 0 and 1000";:INPUT R
160 RANDOMIZE R
170 D = 0 'd = number of people starved,  begins main program,
180 CLS:Z=Z+1:IF Z=11 THEN 1090
190 PRINT "  HAMURABI: I beg to report to you that":PRINT
200 PRINT "In year";Z;",";D;"people starved,":PRINT
210 PRINT I;"came to the City,":PRINT
220 P = P + I
230 IF Q > 0 THEN 260
240 P = INT(P/2)
250 PRINT "a horrible plague struck, killing half  of the population!!!":PRINT
260 PRINT "The total population is now";P;".":PRINT
270 PRINT "The City now ownes ";A;"acres of land.":PRINT
280 PRINT "We harvested ";Y;" bushels per acre.":PRINT
290 PRINT "The cursed rats ate "E;" bushels.":PRINT
300 PRINT "We now have ";S;" bushels in storage.":PRINT
310 C = INT(10*RND(1)):LP = C + 17
320 PRINT :PRINT :PRINT "Land is trading at";LP;"bushels per acre."
330 PRINT :PRINT "How many acres do you wish to buy.";
340 INPUT Q
350 IF Q<0 THEN 1050
360 IF LP*Q<=S THEN 390
370 GOSUB 960
380 GOTO 330
390 IF Q=0 THEN 430
400 A =A+Q
410 S =S-LP*Q : C=0
420 GOTO 510
430 PRINT :PRINT "How many acres do you wish to sell";
440 INPUT Q
450 IF Q<0 THEN 1050
460 IF Q<A THEN 490
470 GOSUB 1000
480 GOTO 430
490 A=A-Q
500 S=S+LP*Q:C=0
510 PRINT :PRINT
520 PRINT "How many bushels do you wish to feed    your people";:INPUT Q
530 IF Q<0 THEN 1050
540 IF Q<=S THEN 570 'attempting to   use more grain than is stored
550 GOSUB 960
560 GOTO 520
570 S=S-Q:C=1
580 PRINT :PRINT
590 PRINT "How many acres do you wish to plant      with seed";
600 INPUT G
610 IF G=0 THEN 740
620 IF G<0 THEN 1050
630 IF G <=A THEN 660 'Trying to plant more acres than you own
640 GOSUB 1000
650 GOTO 580
660 IF INT(G/2)<=S THEN 690 'enough grain for planting
670 GOSUB 960
680 GOTO 580
690 IF G<10*P THEN 730
700 PRINT :PRINT :PRINT "But you only have";P;"people to tend the fields! "
710 PRINT "Now then,"
720 GOTO 580
730 S=S-INT(G/2)
740 GOSUB 1030
750 LP=C: H=G*Y:E=0 'bountiful harvest
760 Y=C
770 GOSUB 1030
780 IF INT(C/2)<>C/2 THEN 800
790 E=INT(S/C) 'RATS ARE RAMPANT !
800 S=S-E+H
810 GOSUB 1030
820 I=INT(C*(20*A+S)/P/100+1)'population growth
830 C=INT(Q/20) 'adequate food
840 Q=INT(10*(2*RND(1)-0.3)) '15% chance of PLAGUE11
850 Q=INT(10*(2*RND(1)-0.3)) '15% chance of PLAGUE !!!
860 IF P<C THEN 170
870 D=P-C
880 IF D>0.45*P THEN 920 'starve enough people for impeachment
890 PP=((Z-1)*PP+D*100/P)/Z
900 P=C: TD=TD+D
910 GOTO 180
920 CLS :PRINT :PRINT :PRINT "You starved";D;"people in one year!!!"
930 PRINT :PRINT "Due to this extreme mismanagement,      you have not only"
940  PRINT "been impeached and thrown out of office but you also have been declared national fink!!!!"
950 GOTO 1430
960 PRINT :PRINT "HAMMURABI: Think again. You only have";S
970 PRINT "bushels of grain. Now then."
980 RETURN
990 PRINT :PRINT
1000 PRINT "HAMMURABI: Think again. You only"
1010 PRINT "have";A;"acres. Now then."
1020 RETURN
1030 C=INT(RND(1)*5)+1 'c=1 to 6
1040 RETURN
1050 PRINT :PRINT
1060 PRINT "HAMMURABI: I cannot do what you wish."
1070 PRINT "Get yourslf another servant!!!!!!"
1080 GOTO 1430
1090 CLS :PRINT :PRINT "In your ten year term of office,"
1100 PRINT PP;"percent of the population "
1110 PRINT "starved per year on the average,"
1120 PRINT "i.e. a total of";TD;"people died!"
1130 L=A/P
1140 PRINT "You started with 10 acres per "
1150 PRINT "person and ended with";L
1160 PRINT "acres per person.":PRINT
1170 IF PP>33 THEN 930
1180 IF L<7 THEN 930
1190 IF PP>10 THEN 1290
1200 IF L<9 THEN  1290
1210 IF PP>3 THEN 1370
1220 IF L<10 THEN 1370
1230 PRINT "A SUPER FANTASTIC PERFORMANCE !!!"
1240 PRINT
1250 PRINT "Nobody in the entire Kingdom coud have"
1260 PRINT
1270 PRINT "done better ! Your truly GREAT !!"
1280 GOTO 1480
1290 PRINT "Your heavy handed rule smacks of"
1300 PRINT
1310 PRINT "Ivan the Terrible, or Adolf Hitler"
1320 PRINT
1330 PRINT "The people (remaining) find you ":PRINT
1340 PRINT "an unpleasant ruler, and quite ":PRINT
1350 PRINT "frankly, HATE YOUR GUTS !!!"
1360 GOTO 1480
1370 PRINT "Your performance as our Ruler could":PRINT
1380 PRINT "have been much better, but really":PRINT
1390 PRINT "wasn't too bad at all.":PRINT
1400 PRINT "Only "INT(P*0.8*RND(1));"people would":PRINT
1410 PRINT "like to see you assassinated, but" :PRINT
1420 PRINT "we all have our own trivial problems."
1430 PRINT : FOR N=1 TO 10:PRINT CHR(7);
1440 NEXT N
1450 SOUND 500,18 :SOUND 1000,18 :SOUND 500,18
1480 PRINT :PRINT
1490 PRINT "Would you like another term of office";
1500 INPUT CH$
1510 IF LEFT$(CH$,1)="y" OR LEFT$(CH$,1)="Y" THEN 70
1530 PRINT "So long for now.":PRINT
1540 FOR T=1 TO 2500 :NEXT T
1600 LOAD"masterp",R

STAR3D.DOC

.mt 0
.po 8
.op












				STAR3D
			By: Andrew Tuline
	This program is a semi realistic 3 dimensional star routine (a la
Star Trek). The .exe file has been converted to hexadecimal format by
the HEXCONV.BAS program from USERVIEW donated to Rich Schinell's bulletin
board in Washington D.C. (A long, expensive route to Vancouver). Anyways, once
you have converted the hex file back to .exe format, you type in star3d
followed by a carriage return and a star pattern in 640 X 200 graphics should
appear on the T.V. screen. The speed can be changed by typing a number from
0-9, or you can return to DOS by pressing almost any other key. After a couple
of minutes, the pattern may stop, or stars come out from one side. Well, so
much for my random number generation. Requirements are PC DOS, and a colour
graphics adaptor. As a final note, I also have another star routine which uses
the Radio Shack joystick and the 320 X 200 mode.










STARTREK.BAS

1 KEY 1,"NAV"+CHR$(13)
2 KEY 2,"SRS"+CHR$(13):KEY 3,"LRS"+CHR$(13):KEY 4,"PHA"+CHR$(13)
3 KEY 5,"TOR"+CHR$(13):KEY 6,"SHE"+CHR$(13):KEY 7,"DAM"+CHR$(13)
4 KEY 8,"COM"+CHR$(13)
5 KEY 9,"":KEY 10,""
9 KEY ON
10 REM ****INSTRUCTIONS  FOR SUPER STAR TREK FROM CREATIVE COMPUTING
20 REM ****PUT ON IBM PC BY STEVENS ON 2-10-82
30 CLS:LOCATE 9,1
40 PRINT TAB(10);"*************************************"
50 PRINT TAB(10);"*                                   *"
60 PRINT TAB(10);"*      ** SUPER STAR TREK **        *"
70 PRINT TAB(10);"*                                   *"
80 PRINT TAB(10);"*************************************"
90 FOR I=1 TO 8: PRINT:NEXT I
100 INPUT "DO YOU NEED INSTRUCTIONS (Y/N)"; K$: IF K$<>"Y" AND K$ <>"y" THEN 1450
110 PRINT
120 PRINT :PRINT
130 IF INP(1)=13 THEN 130
140 POKE 1229,2
150 POKE 1237,3
160 CLS:PRINT"     INSTRUCTIONS FOR `SUPER STAR TREK'"
170 PRINT
180 PRINT"1. WHEN YOU SEE \COMMAND ?\ PRINTED, ENTER ONE OF THE LEGAL"
190 PRINT"     COMMANDS (NAV,SRS,LRS,PHA,TOR,SHE,DAM,COM, OR XXX)."
200 PRINT "2. IF YOU SHOULD TYPE IN AN ILLEGAL COMMAND, YOU'LL GET A SHORT"
210 PRINT "    LIST OF THE LEGAL COMMANDS PRINTED OUT."
220 PRINT"3. SOME COMMANDS REQUIRE YOU TO ENTER DATA (FOR EXAMPLE, THE"
230 PRINT"     `NAV' COMMAND COMES BACK WITH `COURSE (1-9) ?'.)  IF YOU"
240 PRINT"     TYPE IN ILLEGAL DATA (LIKE NEGATIVE NUMBERS, THAT COMMAND"
250 PRINT"     WILL BE ABORTED"
260 PRINT
270 PRINT"     THE GALAXY IS DIVIDED INTO AN 8 X 8 QUADRANT GRID,"
280 PRINT"AND EACH QUADRANT IS FURTHER DIVIDED INTO AN 8 X 8 SECTOR GRID."
290 PRINT
300 PRINT"     YOU WILL BE ASSIGNED A STARTING POINT SOMEWHERE IN THE"
310 PRINT"GALAXY TO BEGIN A TOUR OF DUTY AS COMMANDER OF THE STARSHIP"
320 PRINT"\ENTERPRISE\; YOUR MISSION:  TO SEEK AND DESTROY THE FLEET OF"
330 PRINT"KLINGON WARSHIPS WHICH ARE MENACING THE UNITED FEDERATION OF"
340 PRINT"PLANETS."
350 PRINT : PRINT "***TO CONTINUE WITH THE INSTRUCTIONS HIT <ENTER>."
360 GOSUB 10500:PRINT
370 PRINT"     YOU HAVE THE FOLLOWING COMMANDS AVAILABLE TO YOU AS CAPTAIN"
380 PRINT"OF THE STARSHIP ENTERPRISE:"
390 PRINT
400 PRINT"\NAV\ COMMAND = WARP ENGINE CONTROL --"
410 PRINT"     COURSE IS IN A CIRCULAR NUMERICAL      4  3  2"
420 PRINT"     VECTOR ARRANGEMENT AS SHOWN             . . ."
430 PRINT"     INTEGER AND REAL VALUES MAY BE           ..."
440 PRINT"     USED.  (THUS COURSE 1.5 IS HALF-     5 ---*--- 1"
450 PRINT"     WAY BETWEEN 1 AND 2                      ..."
460 PRINT"                                             . . ."
470 PRINT"     VALUES MAY APPROACH 9.0, WHICH         6  7  8"
480 PRINT"     ITSELF IS EQUIVALENT TO 1.0
490 PRINT"                                            COURSE"
500 PRINT"     ONE WARP FACTOR IS THE SIZE OF "
510 PRINT"     ONE QUADRANT.  THEREFORE, TO GET"
520 PRINT"     FROM QUADRANT 6,5 TO 5,5, YOU WOULD"
530 PRINT"     USE COURSE 3, WARP FACTOR 1.
540 PRINT
550 PRINT: PRINT : PRINT "***TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
560 GOSUB 10500:PRINT :PRINT:PRINT :PRINT
570 PRINT :PRINT :PRINT
580 PRINT"\SRS\ COMMAND = SHORT RANGE SENSOR SCAN"
590 PRINT
600 PRINT"     SYMBOLOGY ON YOR SENSOR SCREEN IS AS FOLLOWS:"
610 PRINT"        <*> = YOUR STARSHIP'S POSITION"
620 PRINT"        +K+ = KLINGON BATTLE CRUISER"
630 PRINT"        >!< = FEDERATION STARBASE ( REFUEL/REPAIR/RE-ARM HERE!)"
640 PRINT"         *  = STAR"
650 PRINT
660 PRINT"     A CONDENSED `STATUS REPORT' WILL ALSO BE PRESENTED."
670 PRINT
680 PRINT "\LRS\ COMMAND = LONG RANGE SENSOR SCAN"
690 PRINT"     SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
700 PRINT"     OF THE ENTERPRISE (WHICH IS IN THE MIDDLE OF THE SCAN)"
710 PRINT
720 PRINT"     THE SCAN IS CODED IN THE FORM \###\, WHERE THE UNITS DIGIT"
730 PRINT"     IS THE NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF"
740 PRINT"     STARBASES, AND THE HUNDREDS DIGIT IS THE NUMBER OF"
750 PRINT"     KLINGONS."
760 PRINT
770 PRINT"     EXAMPLE - 207 = 2 KLINGONS, NO STARBASES,  7 STARS."
780 PRINT "***TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
790 GOSUB 10500:PRINT :PRINT
800 PRINT"\PHA\ COMMAND = PHASER CONTROL."
810 PRINT"     ALLOWS YOU TO DESTROY THE KLINGON BATTLE CRUISERS BY "
820 PRINT"     ZAPPING THEM WITH SUITABLY LARGE UNITS OF ENERGY TO"
830 PRINT"     DEPLETE THEIR SHIELD POWER.  REMEMBER, KLINGONS HAVE"
840 PRINT"     PHASERS, TOO!)"
850 PRINT
860 PRINT"\TOR\ COMMAND = PHOTON TORPEDO CONTROL"
870 PRINT"     TORPEDO COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
880 PRINT"     IF YOU HIT THE KLINGON VESSEL, HE IS DESTROYED AND"
890 PRINT"     CANNOT FIRE BACK AT YOU.  IF YOU MISS, YOU ARE SUBJECT TO"
900 PRINT"     HIS PHASER FIRE.  IN EITHER CASE, YOU ARE ALSO SUBJECT TO "
910 PRINT"     THE PHASER FIRE OF ALL OTHER KLINONS IN THE QUADRANT."
920 PRINT
930 PRINT"     THE LIBRARY-COMPUTER (\COM\ COMMAND) HAS AN OPTION TO"
940 PRINT"     COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)"
950 PRINT
960 PRINT :PRINT:PRINT: PRINT "TO CONTINUE WITH THE PROGRAM, HIT <ENTER>."
970 GOSUB 10500
980 PRINT :PRINT :PRINT
990 PRINT :PRINT :PRINT :PRINT
1000 PRINT"\SHE\ COMMAND = SHIELD CONTROL"
1010 PRINT"     DEFINES THE NUMBER OF ENERGY UNITS TO BE ASSIGNED TO THE"
1020 PRINT"     SHIELDS.  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY.  NOTE"
1030 PRINT"     THAT THE STATUS DISPLAY TOTAL ENERGY INCLUDES SHIELD ENERGY"
1040 PRINT
1050 PRINT"\DAM\ COMMAND = DAMAGE CONTROL REPORT"
1060 PRINT"     GIVES THE STATE OF REPAIR OF ALL DEVICES.  WHERE A NEGATIVE"
1070 PRINT"     `STATE OF REPAIR' SHOWS THAT THE DEVICE IS TEMPORARILY"
1080 PRINT"     DAMAGED."
1090 PRINT :PRINT :PRINT
1100 PRINT: PRINT "TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
1110 GOSUB 10500
1120 PRINT
1130 PRINT"\COM\ COMMAND = LIBRARY-COMPUTER"
1140 PRINT"     THE LIBRARY-COMPUTER CONTAINS SIX OPTIONS:"
1150 PRINT"     OPTION 0 = CUMULATIVE GALACTIC RECORD"
1160 PRINT"        THIS OPTION SHOWS COMPUTER MEMORY OF THE RESULTS OF A LL"
1170 PRINT"        PREVIOUS SHORT AND LONG RANGE SENSOR SCANS"
1180 PRINT"     OPTION 1 = STATUS REPORT"
1190 PRINT"        THIS OPTION SHOWS THE NUMBER OF KLINGONS, STARDATES,"
1200 PRINT"        AND STARBASES REMAINING IN THE GAME."
1210 PRINT"     OPTION 2 = PHOTON TORPEDO DATA"
1220 PRINT"        WHICH GIVES DIRECTION AND DISTANCE FROM THE ENTERPRISE"
1230 PRINT"        TO ALL KLINGONS IN YOUR QUADRANT"
1240 PRINT"     OPTION 3 = STARBASE NAV DATA"
1250 PRINT"        THIS OPTION GIVES DIRECTION AND DISTANCE TO ANY"
1260 PRINT"        STARBASE WITHIN YOU QUADRANT"
1270 PRINT :PRINT :PRINT :PRINT
1280 PRINT "TO CONTINUE WITH THE INSTRUCTIONS, HIT <ENTER>."
1290 PRINT
1300 GOSUB 10500 : PRINT :PRINT
1310 PRINT "CONTINUATION OF AVAILABLE COMPUTER OPTIONS---" : PRINT : PRINT
1320 PRINT"     OPTION 4 = DIRECTION/DISTANCE CALCULATOR"
1330 PRINT"        THIS OPTION ALLOWS YOU TO ENTER COORDINATES FOR"
1340 PRINT"        DIRECTION/DISTANCE CALCULATIONS"
1350 PRINT"     OPTION 5 = GALACTIC /REGION NAME/ MAP"
1360 PRINT"        THIS OPTION PRINTS THE NAMES OF THE SIXTEEN MAJOR"
1370 PRINT"        GALACTIC REGIONS REFERRED TO IN THE GAME."
1380 POKE 1229,0:POKE 1237,1
1390 IF INP(1)=13 THEN 1390
1400 PRINT :PRINT "CONGRATULATIONS, YOU HAVE SUCCESSFULLY GRADUATED FROM STARFLEET ACADEMY."
1410 PRINT "YOU ARE NOW READY TO ASSUME THE HELM OF THE ENTERPRISE." :PRINT
1420 PRINT "TO OPEN COMMUNICATIONS WITH STARFLEET, INDICATING THAT YOU"
1430 PRINT "ARE NOW READY TO BEGIN YOUR JOURNEY, SIMPLY HIT <ENTER>."
1440 GOSUB 10500:PRINT
1450 REM **** SUPER STAR TREK - MAY 16, 1978 - REQUIRES 24K MEMORY ****
1460 REM
1470 REM ****        **** STAR TREK ****        ****
1480 REM **** SIMULATION OF A MISSION OF THE STARSHIP ENTERPRISE,
1490 REM **** AS SEEN ON THE STAR TREK TV SHOW.
1600 CLS
1610 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1620 PRINT"                                    ,------*------,"
1630 PRINT "                    ,-------------   `---  ------'"
1640 PRINT "                     `-------- --'      / /"
1650 PRINT"                         ,---' `-------/ /--,"
1660 PRINT "                          `----------------'":PRINT
1670 PRINT"                    THE USS ENTERPRISE --- NCC-1701"
1680 PRINT:PRINT:PRINT:PRINT:PRINT
1690 PRINT :PRINT
1710 Z$="                         "
1720 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8)
1730 RANDOMIZE VAL(RIGHT$(TIME$,2))
1770 PRINT :PRINT :PRINT
1780 T=INT(RND(1)*20+20)*100:T0=T:T9=25+INT(RND(1)*10):D0=0:E=3000:E0=E
1790 P=10:P0=P:S9=200:S=0:B9=0:K9=0:X$="":X0$=" IS "
1800 DEF FND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2)
1810 DEF FNR(R)=INT(RND(R)*7.98+1.01)
1820 REM **************** INITIALIZE ENTERPRISE'S POSITION ****************
1830 Q1=FNR(1):Q2=FNR(1):S1=FNR(1):S2=FNR(1)
1840 FOR I=1 TO 9:C(I,1)=0:C(I,2)=0:NEXT I
1850 C(3,1)=-1:C(2,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1
1860 C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1
1870 FOR I=1 TO 8:D(I)=0: NEXT I
1880 A1$="NAVSRSLRSPHATORSHEDAMCOMXXX"
1890 REM ************** SETUP WHAT EXISTS IN GALAXY . . . ******************
1900 REM ************  K3= # KLINGONS  B3= # STARBASES  S3= # STARS ********
1910 FOR I=1 TO 8: FOR J=1 TO 8:K3=0:Z(I,J)=0:R1=RND(1)
1920 IF R1>0.9799999 THEN K3=3:K9=K9+3:GOTO 1950
1930 IF R1>0.95 THEN K3=2:K9=K9+2:GOTO 1950
1940 IF R1>0.8 THEN K3=1:K9=K9+1
1950 B3=0:IF RND(1)>0.96 THEN B3=1:B9=B9+1
1960 G(I,J)=K3*100+B3*10+FNR(1): NEXT J: NEXT I: IF K9>T9 THEN T9=K9+1
1970 IF B9<>0 THEN 2000
1980 IF G(Q1,Q2)<200 THEN G(Q1,Q2)=G(Q1,Q2)+100:K9=K9+1
1990 B9=0:G(Q1,Q2)=G(Q1,Q2)+10:Q1=FNR(1):Q2=FNR(1)
2000 K7=K9:IF B9<>1 THEN X$="S":X0$=" ARE "
2010 CLS:PRINT"YOUR ORDERS, SHOULD YOU ACCEPT THIS MISSION, ARE  AS FOLLOWS:"
2020 PRINT"     DESTROY THE";K9;"KLINGON WARSHIPS WHICH HAVE INVADED"
2030 PRINT"   THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS"
2040 PRINT"   ON STARDATE";T0+T9;"  THIS GIVES YOU";T9;"DAYS.  THERE";X0$
2050 PRINT"  ";B9;"STARBASE";X$;" IN THE GALAXY FOR RESUPPLYING YOUR SHIP"
2060 PRINT:PRINT"HIT RETURN KEY WHEN READY TO ACCEPT COMMAND"
2070 I=RND(1)
2080 REM *********** HERE ANY TIME NEW QUADRANT ENTERED ******************
2090 Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=0.5*RND(1):Z(Q1,Q2)=G(Q1,Q2)
2100 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 2200
2110 GOSUB 5690 : PRINT : IF  T0<>T THEN 2140
2120 PRINT "YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED"
2130 PRINT "IN THE GALACTIC QUADRANT, `";G2$;"'.":GOTO 2150
2140 PRINT "NOW ENTERING ";G2$;" QUADRANT . . ."
2150 PRINT : K3=INT(G(Q1,Q2)*0.01):B3=INT(G(Q1,Q2)*0.1)-10*K3
2160 S3=G(Q1,Q2)-100*K3-10*B3:IF K3=0 THEN 2190
2170 PRINT"COMBAT AREA      CONDITION RED": BEEP :IF S>200 THEN 2190
2180 PRINT "   SHIELDS DANGEROUSLY LOW" : BEEP
2190 FOR I=1 TO 3:K(I,1)=0:K(I,2)=0:NEXT I
2200 FOR I=1 TO 3:K(I,3)=0: NEXT I:Q$=Z$+Z$+Z$+Z$+Z$+Z$+Z$+LEFT$(Z$,17)
2210 REM *** POSITON ENTERPRISE IN QUADRANT, THEN PLACE "K3" KLINGONS, & ***
2220 REM ***** "B3" STARBASES, & "S3" STARS ELSEWHERE. **************
2230 A$="<*>":Z1=S1:Z2=S2:GOSUB 5460:IF K3<1 THEN 2260
2240 FOR I=1 TO K3: GOSUB 5430:A$="+K+":Z1=R1:Z2=R2
2250 GOSUB 5460:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(0.5+RND(1)): NEXT I
2260 IF B3<1 THEN 2280
2270 GOSUB 5430:A$=">!<":Z1=R1:B4=R1:Z2=R2:B5=R2:GOSUB 5460
2280 FOR I=1 TO S3: GOSUB 5430:A$=" * ":Z1=R1:Z2=R2: GOSUB 5460: NEXT I
2290 GOSUB 4470
2300 IF S+E>10 THEN IF E>10 OR D(7)=0 THEN 2370
2310 PRINT:PRINT "** FATAL ERROR ** YOU'VE JUST STRANDED YOUR SHIP IN "
2320 PRINT "SPACE":PRINT "YOU HAVE INSUFFICIENT MANEUVERING ENERGY,";
2330 PRINT " AND SHIELD CONTROL":PRINT"IS PRESENTLY INCAPABLE OF CROSS";
2340 PRINT"-CIRCUITING TO ENGINE ROOM!!"  :SOUND 75,4 : SOUND 44,6
2350 PRINT :PRINT "LT.UHURA REPORTS ALL RADIO FREQUENCIES ARE INOPERABLE!!"
2360 GOTO 4330
2370 INPUT "COMMAND";A$
2380 FOR I=1 TO 9:IF LEFT$(A$,3)<>MID$(A1$,3*I-2,3) THEN 2400
2390 ON I GOTO 2510,2290,3290,3380,3600,3960,4050,4730,4360
2400 NEXT I:PRINT "ENTER ONE OF THE FOLLOWING:"
2410 PRINT"   NAV  (TO SET COURSE)"
2420 PRINT"   SRS  (FOR SHORT RANGE SENSOR SCAN)"
2430 PRINT"   LRS  (FOR LONG RANGE SENSOR SCAN)"
2440 PRINT"   PHA  (TO FIRE PHASERS)"
2450 PRINT "   TOR  (TO FIRE PHOTON TORPEDOES)"
2460 PRINT"   SHE  (TO RAISE OR LOWER SHIELDS)"
2470 PRINT"   DAM  (FOR DAMAGE CONTROL REPORTS)"
2480 PRINT"   COM  (TO CALL ON LIBRARY-COMPUTER)"
2490 PRINT"   XXX  (TO RESIGN YOUR COMMAND)":PRINT:GOTO 2300
2500 REM ************ COURSE CONTROL BEGINS HERE **********************
2510 INPUT "COURSE (0-9)";C1: IF C1=9 THEN C1=1
2520 IF C1>=1 AND C1<9 THEN 2550
2530 PRINT "   LT. SULU REPORTS, 'INCORRECT COURSE DATA, SIR!'"
2540 PRINT "WOULD YOU LIKE TO TRY ANOTHER COMMAND, SIR?": GOTO 2300
2550 X$="8": IF D(1)<0 THEN X$="0.2"
2560 PRINT "WARP FACTOR  (0-";X$;")";: INPUT W1: IF D(1)<0 AND W1>0.2 THEN 2630
2570 IF W1>0 AND W1<8 THEN 2640
2580 IF W1=0 THEN 2300
2590 PRINT "    CHIEF ENGINEER SCOTT REPORTS `THE ENGINES WON'T TAKE";
2600 PRINT " WARP "; W1; "!'": PRINT
2610 PRINT "LET'S EASE IT DOWN SOME, CAPTAIN, OR THE ANTI-MATTER"
2620 PRINT "PODS WILL SURELY BLOW US ALL UP!!": GOTO 2300
2630 PRINT "WARP ENGINES ARE DAMAGED.  MAXIUM SPEED = WARP 0.2": BEEP : GOTO 2300
2640 N=INT(W1*8+0.5):IF E-N>=0 THEN 2720
2650 PRINT"ENGINEERING REPORTS   "INSUFFICIENT ENERGY AVAILABLE"
2660 PRINT "                       FOR MANEUVERING AT WARP";W1;"!'" : BEEP
2670 IF S<N-E OR D(7)<0 THEN 2300
2680 PRINT"DEFLECTOR CONTROL ROOM ACKNOWLEDGES";S;"UNITS OF ENERGY"
2690 PRINT"                         PRESENTLY DEPLOYED TO SHIELDS."
2700 GOTO 2300
2710 REM ******* KLINGONS MOVE/FIRE ON MOVING STARSHIP . . .***************
2720 FOR I=1 TO K3:IF K(I,3)=0 THEN 2750
2730 A$="   ":Z1=K(I,1):Z2=K(I,2):GOSUB 5460:GOSUB 5430
2740 K(I,1)=Z1:K(I,2)=Z2:A$="+K+": GOSUB 5460
2750 NEXT I:GOSUB 4210:D1=0:D6=W1:IF W1>=1 THEN D6=1
2760 FOR I=1 TO 8:IF D(I)>=0 THEN 2810
2770 D(I)=D(I)+D6: IF D(I)>-0.1 AND D(I)<0 THEN D(I)=-0.1: GOTO 2810
2780 IF D(I)<0 THEN 2810
2790 IF D1<>1 THEN D1=1 :PRINT "DAMAGE CONTROL REPORT:  ";
2800 PRINT  TAB(8);:R1=I:GOSUB 5520:PRINT  G2$;" REPAIR COMPLETED." : BEEP
2810 NEXT I:IF RND(1)>0.2 THEN 2880
2820 R1=FNR(1):IF RND(1)>=0.6 THEN 2850
2830 D(R1)=D(R1)-(RND(1)*5+1) :PRINT"DAMAGE CONTROL REPORT:  ";
2840 GOSUB 5520:PRINT G2$;" DAMAGED":PRINT: : BEEP :GOTO 2880
2850 D(R1)=D(R1)+RND(1)*3+1 :PRINT "DAMAGE CONTROL REPORT:  ";
2860 GOSUB 5520:PRINT G2$" STATE OF REPAIR IMPROVED":PRINT : BEEP
2870 REM ********* BEGIN MOVING STARSHIP **************************
2880 A$="   ":Z1=INT(S1):Z2=INT(S2):GOSUB 5460
2890 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):X=S1:Y=S2
2900 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):Q4=Q1:Q5=Q2
2910 FOR I=1 TO N:S1=S1+X1:S2=S2+X2:IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 3040
2920 S8=INT(S1)*24+INT(S2)*3-26: IF MID$(Q$,S8,2)="  " THEN 2970
2930 S1=INT(S1-X1):S2=INT(S2-X2):PRINT "WARP ENGINES SHUT DOWN AT ";
2940 PRINT "SECTOR";S1;",";S2;"DUE TO BAD NAVIGATION":BEEP :
2950 PRINT "CHIEF ENGINEER SCOTT REPORTS `THE HULL CAN'T TAKE"
2960 PRINT "MUCH MORE OF THIS BEATING, SIR'": GOTO 2980
2970 NEXT I:S1=INT(S1):S2=INT(S2)
2980 A$="<*>":Z1=INT(S1):Z2=INT(S2): GOSUB 5460:GOSUB 3210:T8=1
2990 IF W1<1 THEN T8=0.1*INT(10*W1)
3000 T=T+T8:IF T>T0+T9 THEN 4330
3010 REM *********** SEE IF DOCKED, THEN GET COMMAND ******************
3020 GOTO 2290
3030 REM *********** EXCEEDED QUADRANT LIMITS *************************
3040 X=8*Q1+X+N*X1:Y=8*Q2+Y+N*X2:Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8)
3050 S2=INT(Y-Q2*8):IF S1=0 THEN Q1=Q1-1:S1=8
3060 IF S2=0 THEN Q2=Q2-1:S2=8
3070 X5=0: IF Q1<1 THEN X5=1:Q1=1:S1=1
3080 IF Q1>8 THEN X5=1 : Q1=8 : S1=8
3090 IF Q2<1 THEN X5=1 : Q2=1 : S2=1
3100 IF Q2>8 THEN X5=1 : Q2=8 : S2=8
3110 IF X5=0 THEN 3180
3120 PRINT "LT. UHURA REPORTS A MESSAGE FROM STARFLEET COMMAND:" :BEEP
3130 PRINT "   `PERMISSION TO ATTEMPT CROSSING OF GALACTIC PERIMETER"
3140 PRINT " IS HEREBY *DENIED*.  SHUT DOWN YOUR ENGINES.'"
3150 PRINT "CHIEF ENGINEER SCOTT REPORTS `WARP ENGINES SHUT DOWN"
3160 PRINT " AT SECTOR";S1;",";S2; " OF QUADRANT";Q1;",";Q2;"."
3170 IF T>T0 + T9 THEN 4330
3180 IF 8*Q1+Q2=8*Q4+Q5 THEN 2980
3190 T=T+1 : GOSUB 3210 : GOTO 2090
3200 REM ********* MANUEVER ENERGY S/R ******************************
3210 E=E-N-10 : IF E>0 THEN RETURN
3220 PRINT "SHIELD CONTROL SUPPIES ENERGY TO COMPLETE THE MANEUVER."
3230 PRINT
3240 PRINT "SCOTTY REPORTS,`AYE, CAPTAIN, WE WERE VERY LUCKY THIS TIME"
3250 PRINT "WE HAD BETTER BE CAREFUL OR  NEXT TIME COULD BE OUR LAST'."
3260 S=S+E : E=0 : IF S<=0 THEN S=0
3270 RETURN
3280 REM *********LONG RANGE SENSOR SCAN CODE*************************
3290 IF D(3)<0 THEN PRINT "LONG RANGE SENSORS ARE INOPERABLE. ":BEEP : GOTO 2300
3300 PRINT "LONG RANGE SCAN FOR QUADRANT"; Q1; ","; Q2
3310 O1$="---------------------" : PRINT O1$
3320 FOR I=Q1-1 TO Q1+1 : N(1)=-1 : N(2)=-2 : N(3)=-3 : FOR J=Q2-1 TO Q2+1
3330 IF I>0 AND I<9 AND J>0 AND J<9 THEN N(J-Q2+2)=G(I,J) : Z(I,J)=G(I,J)
3340 NEXT J: FOR L=1 TO 3: PRINT ":  ";: IF N(L)<0 THEN PRINT "*** ";: GOTO 3360
3350 PRINT  RIGHT$(STR$(N(L)+1000),3);" ";
3360 NEXT L: PRINT ":": PRINT O1$: NEXT I: GOTO 2300
3370 REM ************PHASER CONTROL CODE BEGINS HERE*********************
3380 IF D(4)<0 THEN PRINT "PHASERS INOPERATIVE": BEEP :GOTO 2300
3390 IF K3>0 THEN 3420
3400 PRINT "SCIENCE OFFICER SPOCK REPORTS  `SENSORS SHOW NO ENEMY SHIPS"
3410 PRINT "                                IN THIS QUADRANT'": GOTO 2300
3420 IF D(8)<0 THEN PRINT "COMPUTER FAILURE HAMPERS ACCURACY" : BEEP
3430 PRINT "PHASERS LOCKED ON TARGET;  ";
3440 PRINT "ENERGY AVAILABLE = ";E;"UNITS"
3450 INPUT "NUMBER OF UNITS TO FIRE";X:IF X<=0 THEN 2300
3460 IF E-X<0 THEN 3440
3470 E=E-X : IF D(7)<0 THEN X=X*RND(1)
3480 H1=INT(X/K3) : FOR I=1 TO 3 : IF K(I,3)<=0 THEN 3580
3490 H=INT((H1/RND(0))*(RND(1)+2)) : IF H>0.15*K(I,3) THEN 3510
3500 PRINT "SENSORS SHOW NO DAMAGE TO ENEMY AT ";K(I,1);","; K(I,2): GOTO 3580
3510 K(I,3)=K(I,3)-H: PRINT H; "UNIT HIT ON KLINGON AT SECTOR"; K(I,1);",";
3520 PRINT K(I,2):IF K(I,3)<=0 THEN PRINT "*** KLINGON DESTROYED ***"
3530 SOUND 45,5
3540 GOTO 3560
3550 PRINT "   (SENSORS SHOW"; K(I,3); "UNITS REMAINING)": GOTO 3580
3560 K3=K3-1:K9=K9-1: Z1=K(I,1): Z2=K(I,2):A$ ="   ": GOSUB 5460
3570 K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IF K9<=0 THEN 4430
3580 NEXT I: GOSUB 4210: GOTO 2300
3590 REM ************** PHOTON TORPEDO CODE BEGINS HERE *******************
3600 IF P<=0 THEN PRINT "ALL PHOTON TORPEDOES EXPENDED":BEEP : GOTO 2300
3610 IF D(5)<0 THEN PRINT "PHOTON TUBES ARE NOT OPERATIONAL": BEEP : GOTO 2300
3620 INPUT "PHOTON TORPEDO COURSE (1-9)"; C1: IF C1=9 THEN C1=1
3630 IF C1>=1 AND C1<9 THEN 3660
3640 PRINT "ENSIGN CHEKOV REPORTS,   `INCORRECT COURSE DATA, SIR!'"
3650 GOTO 2300
3660 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):E=E-2: P=P-1
3670 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):X=S1:Y=S2
3680 PRINT "TORPEDO TRACK:"
3690 X=X+X1:Y=Y+X2:X3=INT(X+0.5):Y3=INT(Y+0.5)
3700 IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 3940
3710 PRINT "            ";X3;",";Y3:A$="    ":Z1=X:X2=Y: GOSUB 5620
3720 IF Z3<>0 THEN 3690
3730 A$="+K+": Z1=X:Z2=Y: GOSUB 5620 : IF Z3=0 THEN 3790
3740 PRINT "*** KLINGON DESTROYED ***":K3=K3-1:K9=K9-1:SOUND 45,5
3750 IF K9<=0 THEN 4430
3760 FOR I=1 TO 3 : IF X3=K(I,1) AND Y3=K(I,2) THEN 3780
3770 NEXT I:I=3
3780 K(I,3)=0: GOTO 3920
3790 A$=" * ":Z1=X : Z2=Y : GOSUB 5620 :IF Z3=0 THEN 3810
3800 PRINT "STAR AT";X3;",";Y3;"ABSORBED TORPEDO ENERGY.":GOSUB 4210:GOTO 2300
3810 A$=">!<":Z1=X:Z2=Y:GOSUB 5620:IF Z3=0 THEN 3620
3820 PRINT "*** STARBASE DESTROYED ***": SOUND 45,5 :PRINT :B3=B3-1:B9=B9-1
3830 IF B9>0 OR K9>T-T0-T9 THEN 3870
3840 PRINT"THAT DOES IT, CAPTAIN!!  YOU ARE HEREBY RELIEVED OF COMMAND"
3850 PRINT"AND SENTENCED TO 99 STARDATES AT HARD LABOR ON CYGNUS 12!!":PRINT
3860 GOTO 4360
3870 PRINT"STARFLEET COMMAND REVIEWING YOUR RECORD TO CONSIDER" : SOUND 45,5
3880 PRINT "CONVENING A GENERAL COURT MARTIAL."
3890 PRINT "YOU ARE  ADVISED TO BE MORE CAREFUL IN THE FUTURE,"
3900 PRINT "GOOD LAWYERS ARE HARD TO FIND, ESPECIALLY IN THIS QUADRANT--"
3910 PRINT "THEY ARE ALMOST AS BAD AS DENUBIAN BLOODSUCKERS.":PRINT :D0=0
3920 Z1=X:Z2=Y:A$="   ":GOSUB 5460
3930 G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB 4210:GOTO 2300
3940 PRINT"TORPEDO MISSED":GOSUB 4210:GOTO 2300
3950 REM ********** SHIELD CONTROL ************************
3960 IF D(7)<0 THEN PRINT "SHIELD CONTROL INOPERABLE": BEEP : GOTO 2300
3970 PRINT "ENERGY AVAILABLE =";E+S;:INPUT"NUMBER OF UNITS TO SHIELDS";X
3980 IF X<0 OR S=X THEN PRINT"<SHIELDS UNCHANGED>":GOTO 2300
3990 IF X<=E+S THEN 4020
4000 PRINT "SHIELD CONTROL REPORTS  `THIS IS NOT THE FEDERATION TREASURY.'"
4010 PRINT "<SHIELDS UNCHANGED>": BEEP : GOTO 2300
4020 E=E+S-X:S=X:PRINT"DEFLECTOR CONTROL ROOM REPORT:"
4030 PRINT "  `SHIELDS NOW AT";INT(S);"UNITS PER YOUR COMMAND.'":GOTO 2300
4040 REM *************** DAMAGE CONTROL ***********************
4050 IF D(6)>=0 THEN 4160
4060 PRINT "DAMAGE CONTROL REPORT NOT AVAILABLE":BEEP :IF D0=0 THEN 2300
4070 D3=0:FOR I=1 TO 8:IF D(I)<0 THEN D3=D3+1
4080 NEXT I:IF D3=0 THEN 2300
4090 PRINT:D3=D3+D4:IF D3>=1 THEN D3=0.9
4100 PRINT "TECHNICIANS STANDING BY TO EFFECT REPAIRS TO YOUR SHIP;"
4110 PRINT "ESTIMATED TIME TO REPAIR:";0.01*INT(100*D3);"STARDATES"
4120 INPUT "WILL YOU AUTHORIZE THE REPAIR ORDER (Y/N)";A$
4130 IF A$<>"Y" THEN 2300
4140 FOR I=1 TO 8:IF D(I)<0 THEN D(I)=0
4150 NEXT I:T=T+D3+0.1
4160 PRINT:PRINT "DEVICE             STATE OF REPAIR":FOR R1=1 TO 8
4170 GOSUB 5520:PRINT G2$; LEFT$(Z$,25-LEN(G2$));INT(D(R1)*100)*0.01
4180 NEXT R1:PRINT:IF D0<>0 THEN 4070
4190 GOTO 2300
4200 REM ************ KLINGONS SHOOTING *************************
4210 IF K3<=0 THEN RETURN
4220 IF D0<>0 THEN PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE":SOUND 45,52835! RETURN
4230 FOR I=1 TO 3:IF K(I,3)<=0 THEN 4310
4240 H=INT((K(I,3)/RND(1))*(2+RND(1))):S=S-H:K(I,3)=K(I,3)/(3+RND(0))
4250 PRINT"UNIT HIT ON ENTERPRISE FROM SECTOR";K(I,1);",";K(I,2) :SOUND 55,4
4260 IF S<=0 THEN 4340
4270 PRINT"      SHIELDS DOWN TO";S;"UNITS>": BEEP :IF H<20 THEN 4310
4280 IF RND(1)>0.6 OR H/S<=0.02 THEN 4310
4290 R1=FNR(1):D(R1)=D(R1)-H/S-0.5*RND(1):GOSUB 5520
4300 PRINT"DAMAGE CONTROL REPORTS `";G2$;" DAMAGED BY THE HIT'"  : BEEP
4310 NEXT I:RETURN
4320 REM************ END OF GAME *********************************
4330 PRINT "IT IS STARDATE";T:GOTO 4360
4340 PRINT:PRINT"THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION ";
4350 GOTO 4330
4360 PRINT "THERE WERE";K9;"KLINGON BATTLE CRUISERS LEFT AT"
4370 PRINT "THE END OF YOUR MISSION."
4380 PRINT:PRINT:IF B9=0 THEN 4420
4390 PRINT "THE FEDERATION IS IN NEED OF A NEW STARSHIP COMMANDER"
4400 PRINT "FOR A SIMILAR MISSION -- IF THERE IS A VOLUNTEER,"
4410 INPUT "LET HIM STEP FORWARD AND ENTER `AYE'";A$:IF A$="AYE" THEN 1450
4420 END
4430 PRINT "CONGRATULATIONS, CAPTAIN!  THE LAST KLINGON BATTLE CRUISER"
4440 PRINT "MENACING THE FEDERATION HAS BEEN DESTROYED.":PRINT
4450 PRINT "YOUR EFFICIENCY RATING IS";1000*(K7/(T-T0))^2:GOTO 4380
4460 REM*********** SHORT RANGE SENSOR SCAN & STARTUP SUBROUTINE ***********
4470 FOR I=S1-1  TO S1+1:FOR J=S2-1 TO S2+1
4480 IF INT(I+0.5)<1 OR INT(I+0.5)>8 OR INT(J+0.5)<1 OR INT(J+0.5)>8 THEN 4500
4490 A$=">!<":Z1=I:Z2=J:GOSUB 5620:IF Z3=1 THEN 4510
4500 NEXT J:NEXT I:D0=0:GOTO 4560
4510 D0=1:C$="DOCKED":E=E0:P=P0
4520 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES": BEEP :PRINT
4530 PRINT "IF YOU NEED OR WANT TO EFFECT REPAIRS TO DAMAGED EQUIPMENT,"
4540 PRINT "WHILE YOU ARE DOCKED, USE THE DAMAGE COMMAND (DAM)." :PRINT
4550 S=0:GOTO 4580
4560 IF K3>0 THEN C$="*RED*":GOTO 4580
4570 C$="GREEN":IF E<E0*0.1 THEN C$="YELLOW"
4580 IF D(2)>=0 THEN 4600
4590 PRINT:PRINT"*** SHORT RANGE SENSORS ARE OUT ***":BEEP:PRINT:RETURN
4600 O1$="---------------------------------":PRINT O1$ : FOR I=1 TO 8
4610 FOR J=(I-1)*24+1 TO (I-1)*24+22 STEP 3:PRINT" ";MID$(Q$,J,3);:NEXT J
4620 ON I GOTO 4630,4640,4650,4660,4670,4680,4690,4700
4630 PRINT"        STARDATE          ";INT(T*10)*0.1:GOTO 4710
4640 PRINT"        CONDITION          ";C$:GOTO 4710
4650 PRINT"        QUADRANT          ";Q1;",";Q2:GOTO 4710
4660 PRINT"        SECTOR            ";S1;",";S2:GOTO 4710
4670 PRINT"        PHOTON TORPEDOES  ";INT(P):GOTO 4710
4680 PRINT"        TOTAL ENERGY      ";INT(E+S):GOTO 4710
4690 PRINT"        SHIELDS           ";INT(S):GOTO 4710
4700 PRINT"        KLINGONS REMAINING";INT(K9)
4710 NEXT I:PRINT O1$:RETURN
4720 REM**************LIBRARY COMPUTER CODE****************
4730 IF D(8)<0 THEN PRINT"COMPUTER DISABLED":BEEP : GOTO 2300
4740 PRINT:PRINT
4750 PRINT "HIT `6' FOR A LISTING OF FUNCTIONS"
4760 PRINT "AVAILABLE FROM LIBRARY-COMPUTER...":PRINT:PRINT : GOTO 4770
4770 INPUT"COMPUTER ACTIVE AND AWAITING COMMAND";A:IF A<0 THEN 2300
4780 PRINT:H8=1:ON A+1 GOTO 4890,5020,5130,5390,5190,4870
4790 PRINT"FUNCTIONS AVAILABLE FROM LIBRARY-COMPUTER:"
4800 PRINT"   0 = CUMULATIVE GALACTIC RECORD"
4810 PRINT"   1 = STATUS REPORT"
4820 PRINT"   2 = PHOTON TORPEDE DATA"
4830 PRINT"   3 = STARBASE NAV DATA"
4840 PRINT"   4 = DIRECTION/DISTANCE CALCULATOR"
4850 PRINT"   5 = GALAXY `REGION NAME' MAP":PRINT:GOTO 4770
4860 REM*************** SETUP TO CHANGE CUM GAL RECORD TO GALAXY MAT **********
4870 H8=0:G5=1:PRINT"                        THE GALAXY":GOTO 4920
4880 REM*************** CUM GALACTIC RECORD ****************
4890 PRINT:PRINT"         ";
4900 PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT";Q1;",";Q2
4910 PRINT
4920 PRINT"         1      2      3      4      5      6      7     8"
4930 O1$="       -----  -----  -----  -----  -----  -----  -----  -----"
4940 PRINT O1$:FOR I=1 TO 8:PRINT I;:IF H8=0 THEN 4980
4950 FOR J=1 TO 8:PRINT"    ";:IF Z(I,J)=0 THEN PRINT"***";:GOTO 4970
4960 PRINT RIGHT$(STR$(Z(I,J)+1000),3);
4970 NEXT J:GOTO 5000
4980 Z4=I:Z5=1:GOSUB 5690:J0=INT(15-0.5*LEN(G2$)):PRINT TAB(J0);G2$;
4990 Z5=5:GOSUB 5690:J0=INT(39-0.5*LEN(G2$)):PRINT TAB(J0);G2$;
5000 PRINT:PRINT O1$:NEXT I:PRINT :POKE 1229,0:POKE 1237,1 :NULL=0:GOTO 2300
5010 REM*************** STATUS REPORT *****************
5020 PRINT "   STATUS REPORT:":X$="":IF K9>1 THEN X$="S"
5030 PRINT"KLINGON";X$;" LEFT: ";K9
5040 PRINT"MISSION MUST BE COMPLETED IN";0.1*INT((T0+T9-T)*10);"STARDATES"
5050 X$="S":IF B9<2 THEN X$="":IF B9<1 THEN 5080
5060 PRINT"THE FEDERATION IS MAINTAINING";B9;"STARBASE";X$;" IN THE GALAXY"
5070 GOTO 4050
5080 PRINT"YOUR POSITION IN THE GALAXY INDICATES "
5090 PRINT"THAT YOU HAVE NO STARBASES AVAILABLE TO YOU."
5100 PRINT:PRINT"CAPTAIN, YOU ARE ON YOUR OWN--BE CAREFUL!!!!"
5110 GOTO 4050
5120 REM************* TORPEDO, BASE NAV, D/D CALCULATOR ****************
5130 IF K3<=0 THEN 3400
5140 X$="":IF K3>1 THEN X$="S"
5150 PRINT "FROM ENTERPRISE TO KLINGON BATTLE CRUISER";X$
5160 H8=0: FOR I=1 TO 3: IF K(I,3)<=0 THEN 5380
5170 W1=K(I,1):X=K(I,2)
5180 C1=S1:A=S2: GOTO 5230
5190 PRINT "DIRECTION/DISTANCE CALCULATOR:"
5200 PRINT "YOU ARE AT QUADRANT  ";Q1;",";Q2;"  SECTOR  ";S1;",";S2
5210 PRINT "PLESE ENTER": INPUT "   INITIAL COORDINATES (X,Y)";C1,A
5220 INPUT "   FINAL COORDINATES (X,Y)";W1,X
5230 X=X-A:A=C1-W1: IF X<0 THEN 5310
5240 IF A<0 THEN 5330
5250 IF X>0 THEN 5270
5260 IF A=0 THEN C1=5: GOTO 5280
5270 C1=1
5280 IF ABS(A)<=ABS(X) THEN 5300
5290 PRINT"DIRECTION ="; C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)): GOTO 5370
5300 PRINT"DIRECTION =";C1+(ABS(A)/ABS(X)): GOTO 5370
5310 IF A>0 THEN C1=3 : GOTO 5340
5320 IF X<>0 THEN C1=5 : GOTO 5280
5330 C1=7
5340 IF ABS(A)>=ABS(X) THEN 5360
5350 PRINT "DIRECTION ="; C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) :GOTO 5370
5360 PRINT "DIRECTION =";C1+(ABS(X)/ABS(A))
5370 PRINT "DISTANCE ="; SQR(X^2+A^2): IF H8=1 THEN 2300
5380 NEXT I : GOTO 2300
5390 IF B3<>0 THEN PRINT"FROM ENTERPRISE TO STARBASE:":W1=B4:X=B5: GOTO 5180
5400 PRINT "MR. SPOCK REPORTS,  `SENSORS SHOW NO STARBASES IN THIS";
5410 PRINT " QUADRANT.'" : GOTO 2300
5420 REM ********** FIND EMPTY PLACE IN QUADRANT (FOR THINGS) **********
5430 R1=FNR(1):R2=FNR(1):A$="   ":Z1=R1:Z2=R2: GOSUB 5620: IF Z3=0 THEN 5430
5440 RETURN
5450 REM *********** INSERT IN STRING ARRAY FOR QUADRANT ****************
5460 S8=INT(Z2-0.5)*3+INT(Z1-0.5)*24+1
5470 IF LEN(A$)<>3 THEN PRINT"ERROR": STOP
5480 IF S8=1 THEN Q$=A$+RIGHT$(Q$,189) : RETURN
5490 IF S8=190 THEN Q$=LEFT$(Q$,189)+A$ : RETURN
5500 Q$=LEFT$(Q$,S8-1)+A$+RIGHT$(Q$,190-S8) : RETURN
5510 REM **************** PRINTS DEVICE NAME **************************
5520 ON R1 GOTO 5530,5540,5550,5560,5570,5580,5590,5600
5530 G2$="WARP ENGINES": RETURN
5540 G2$="SHORT RANGE SENSORS": RETURN
5550 G2$="LONG RANGE SENSORS": RETURN
5560 G2$="PHASER CONTROL": RETURN
5570 G2$="PHOTON TUBES": RETURN
5580 G2$="DAMAGE CONTROL": RETURN
5590 G2$="SHIELD CONTROL": RETURN
5600 G2$="LIBRARY-COMPUTER": RETURN
5610 REM ************** STRING COMPARISON IN QUADRANT ARRAY ****************
5620 Z1=INT(Z1+0.5):Z2=INT(Z2+0.5):S8=(Z2-1)*3+(Z1-1)*24+1:Z3=0
5630 IF MID$(Q$,S8,3)<>A$ THEN RETURN
5640 Z3=1: RETURN
5650 REM *********** QUADRANT NAME IN G2$ FROM Z4, Z5 (=Q1,Q2) **************
5660 REM **** CALL WITH G5=1 TO GET REGION NAME ONLY ****
5670 REM ************ QUADRANT NAME IN G2$ FROM Z4, Z5 (=Q1,Q2) ****
5680 REM ************ CALL WITH G5=1 TO GET REGION NAME ONLY ****
5690 IF Z5<=4 THEN ON Z4 GOTO 5710,5720,5730,5740,5750,5760,5770,5780
5700 GOTO 5790
5710 G2$="ANTARES":GOTO 5880
5720 G2$="RIGEL":GOTO 5880
5730 G2$="PROCYON":GOTO 5880
5740 G2$="VEGA":GOTO 5880
5750 G2$="CANOPUS":GOTO 5880
5760 G2$="ALTAIR":GOTO 5880
5770 G2$="SAGITTARIUS":GOTO 5880
5780 G2$="POLLUX":GOTO 5880
5790 ON Z4 GOTO 5800,5810,5820,5830,5840,5850,5860,5870
5800 G2$="SIRIUS":GOTO 5880
5810 G2$="DENEB":GOTO 5880
5820 G2$="CAPELLA":GOTO 5880
5830 G2$="BETELGEUSE":GOTO 5880
5840 G2$="ALDEBARAN":GOTO 5880
5850 G2$="REGULUS":GOTO 5880
5860 G2$="ARCTURUS":GOTO 5880
5870 G2$="SPICA"
5880 IF G5<>1 THEN ON Z5 GOTO 5900,5910,5920,5930,5900,5910,5920,5930
5890 RETURN
5900 G2$=G2$+" I":RETURN
5910 G2$=G2$+" II":RETURN
5920 G2$=G2$+" III":RETURN
5930 G2$=G2$+" IV":RETURN
10500 IN$=INKEY$:IF IN$="" THEN 10500 ELSE CLS:RETURN

Directory of PC-SIG Library Disk #0178

 Volume in drive A has no label
 Directory of A:\

AWARI    BAS      4096   1-01-80   1:54a
CHESS    EXE      9728   1-24-84  10:35p
CHESS88  EXE      9472   1-01-80   2:40a
COLLIDE  BAS      1664   5-26-83   9:15p
CRC      TXT      1029  11-15-84   7:03a
CRCK4    COM      1536  10-21-82   7:54p
HAMURABI BAS      4736   1-01-80
STAR3D   DOC      1024   8-30-83   8:48p
STAR3D   EXE      2560   8-20-83   9:18p
STARTREK BAS     25728   9-07-83   4:10p
STARTREK EXE     61824   8-27-83   1:41p
XXX                768   5-29-84  12:31a
       12 file(s)     124165 bytes
                       33792 bytes free