'===========================================================================
' Subject: DARKSTAR (STAR TREK LIKE GAME)     Date: 09-03-98 (17:20)       
'  Author: Adam Dalke                         Code: QB, QBasic, PDS        
'  Origin: jwdalke@juno.com                 Packet: GAMES.ABC
'===========================================================================
'/~~~~~~~~~~~~~~~~\ DARKSTAR.BAS, a shareware version of a Star Trek: The
'| A              | Next Generation: RPG of epic proportions. The full version
'|                | will probably never be finished, so don't send any money.
'|                | Use the code any bloody way you please, but give me some
'|       /\       | credit, after all, I worked on this thing for three months.
'|      (  )      | This program runs best on a 100Mhz computer or less (best
'|       /\       | on a 486SX-25,486DX-33, or 486DX-66). Written and tested
'|                | on a 486DX-33. This program was not created, approved,
'|              A | licensed, or endorsed by any entity involved in creating
'\________________/ or producing the Star Trek(R) television series or films.
'
'
'                      \                             /
'              --------->Press F5 to begin the game.<---------
'                      /                             \
'
'
'
DOITALLOVERAGAIN: 'restart module
DECLARE SUB pab2 () 'declare all the subs
DECLARE SUB pbabb1 ()
DECLARE SUB pb2 ()
DECLARE SUB pbaa1 ()
DECLARE SUB pbab1 ()
DECLARE SUB pbac1 ()
DECLARE SUB epfaoluri2 ()
DECLARE SUB fac172 ()
DECLARE SUB pba1 ()
DECLARE SUB cycledown ()
DECLARE SUB paba1 ()
DECLARE SUB shipexplode ()
DECLARE SUB paaa1 ()
DECLARE SUB paac1 ()
DECLARE SUB paad1 ()
DECLARE SUB paae1 ()
DECLARE SUB fac17 ()
DECLARE SUB paa1 ()
DECLARE SUB pab1 ()
DECLARE SUB pac1 ()
DECLARE SUB PixelScroll (Text$, Col%, NewY%)
DECLARE SUB pa2 ()
DECLARE SUB epfaoluri ()
DECLARE SUB pb1 ()
DECLARE SUB pc1 ()
DECLARE SUB pa1 ()
DECLARE SUB stars ()
DECLARE SUB phaser ()
DECLARE SUB photon ()
DECLARE SUB p1 ()
DECLARE SUB r1 ()
DECLARE SUB warp ()
SCREEN 12 'set screen for 640x480, 16 color, text/graphics
DIM SHARED trek%(197, 35) 'DIM the graphics array for the first Enterprise
FOR B = 270 TO 292.5 STEP .5
        LINE (B, 240)-(B - 9.38, 260), 8
NEXT
FOR B = 173.12 TO 190 STEP .01
        LINE (B, 260)-(B + 10, 245), 8
NEXT

FOR a = 1 TO 50
        CIRCLE (320, 240), a, 7, , , -.9
NEXT
FOR a = 1 TO 60
        CIRCLE (233.12, 260), a, 7, , , -.85
NEXT
LINE (173.12, 261)-(203.12, 270), 0, BF
FOR c = 1 TO 8
        CIRCLE (203.12, 270), c, 0
        CIRCLE (204.12, 270), c, 0
NEXT
FOR c = 1 TO 5
        CIRCLE (293.12, 260), c, 0
        CIRCLE (294.12, 260), c, 0
NEXT
LINE (163.12, 245)-(233.12, 237.5), 7, BF
FOR a = 1 TO 3 STEP .05
        CIRCLE (163.12, 242.25), a, 7
        CIRCLE (164.12, 242.25), a, 7
NEXT
FOR a = 1 TO 10
        CIRCLE (233.12, 242.25), a, 4, , , -.7
NEXT
LINE (161.12, 242.25)-(220, 242.25), 1, B
L = 238
FOR B = 215 TO 210 STEP -1
        LINE (220, L)-(B, L), 1
        L = L + .8
NEXT
FOR B = 210 TO 215
        LINE (220, L)-(B, L), 1
        L = L + .4
NEXT
FOR d = 271 TO 369 STEP 4
        PSET (d, 240), 14
NEXT
FOR d = 291 TO 349 STEP 4
        PSET (d, 243), 14
NEXT
FOR d = 291 TO 349 STEP 4
        PSET (d, 237), 14
NEXT
FOR d = 176 TO 286 STEP 4
        PSET (d, 258), 14
NEXT
FOR d = 196 TO 266 STEP 4
        PSET (d, 255), 14
NEXT
FOR d = 216 TO 286 STEP 4
        PSET (d, 261), 14
NEXT
FOR d = 216 TO 272 STEP 4
        PSET (d, 264), 14
NEXT
GET (160, 235)-(370, 267), trek%

CLS
DIM SHARED trek2%(197, 35) 'DIM the graphics array for the second Enterprise
FOR B = 270 TO 292.5 STEP .5
        LINE (B, 240)-(B - 9.38, 260), 8
NEXT
FOR B = 173.12 TO 190 STEP .01
        LINE (B, 260)-(B + 10, 245), 8
NEXT

FOR a = 1 TO 50
        CIRCLE (320, 240), a, 7, , , -.9
NEXT
FOR a = 1 TO 60
        CIRCLE (233.12, 260), a, 7, , , -.85
NEXT
LINE (173.12, 261)-(203.12, 270), 0, BF
FOR c = 1 TO 8
        CIRCLE (203.12, 270), c, 0
        CIRCLE (204.12, 270), c, 0
NEXT
FOR c = 1 TO 5
        CIRCLE (293.12, 260), c, 0
        CIRCLE (294.12, 260), c, 0
NEXT
LINE (163.12, 245)-(233.12, 237.5), 7, BF
FOR a = 1 TO 3 STEP .05
        CIRCLE (163.12, 242.25), a, 7
        CIRCLE (164.12, 242.25), a, 7
NEXT
FOR a = 1 TO 10
        CIRCLE (233.12, 242.25), a, 4, , , -.7
NEXT
LINE (161.12, 242.25)-(220, 242.25), 9, B
L = 238
FOR B = 215 TO 210 STEP -1
        LINE (220, L)-(B, L), 9
        L = L + .8
NEXT
FOR B = 210 TO 215
        LINE (220, L)-(B, L), 9
        L = L + .4
NEXT
FOR d = 271 TO 369 STEP 4
        PSET (d, 240), 14
NEXT
FOR d = 291 TO 349 STEP 4
        PSET (d, 243), 14
NEXT
FOR d = 291 TO 349 STEP 4
        PSET (d, 237), 14
NEXT
FOR d = 176 TO 286 STEP 4
        PSET (d, 258), 14
NEXT
FOR d = 196 TO 266 STEP 4
        PSET (d, 255), 14
NEXT
FOR d = 216 TO 286 STEP 4
        PSET (d, 261), 14
NEXT
FOR d = 216 TO 272 STEP 4
        PSET (d, 264), 14
NEXT
GET (160, 235)-(370, 267), trek2%

CLS
DIM SHARED trek3%(197, 35) 'DIM the graphics array for the third Enterprise
FOR B = 270 TO 292.5 STEP .5
        LINE (B, 240)-(B - 9.38, 260), 8
NEXT
FOR B = 173.12 TO 190 STEP .01
        LINE (B, 260)-(B + 10, 245), 8
NEXT

FOR a = 1 TO 50
        CIRCLE (320, 240), a, 7, , , -.9
NEXT
FOR a = 1 TO 60
        CIRCLE (233.12, 260), a, 7, , , -.85
NEXT
LINE (173.12, 261)-(203.12, 270), 0, BF
FOR c = 1 TO 8
        CIRCLE (203.12, 270), c, 0
        CIRCLE (204.12, 270), c, 0
NEXT
FOR c = 1 TO 5
        CIRCLE (293.12, 260), c, 0
        CIRCLE (294.12, 260), c, 0
NEXT
LINE (163.12, 245)-(233.12, 237.5), 7, BF
FOR a = 1 TO 3 STEP .05
        CIRCLE (163.12, 242.25), a, 7
        CIRCLE (164.12, 242.25), a, 7
NEXT
FOR a = 1 TO 10
        CIRCLE (233.12, 242.25), a, 4, , , -.7
NEXT
LINE (161.12, 242.25)-(220, 242.25), 11, B
L = 238
FOR B = 215 TO 210 STEP -1
        LINE (220, L)-(B, L), 11
        L = L + .8
NEXT
FOR B = 210 TO 215
        LINE (220, L)-(B, L), 11
        L = L + .4
NEXT
FOR d = 271 TO 369 STEP 4
        PSET (d, 240), 14
NEXT
FOR d = 291 TO 349 STEP 4
        PSET (d, 243), 14
NEXT
FOR d = 291 TO 349 STEP 4
        PSET (d, 237), 14
NEXT
FOR d = 176 TO 286 STEP 4
        PSET (d, 258), 14
NEXT
FOR d = 196 TO 266 STEP 4
        PSET (d, 255), 14
NEXT
FOR d = 216 TO 286 STEP 4
        PSET (d, 261), 14
NEXT
FOR d = 216 TO 272 STEP 4
        PSET (d, 264), 14
NEXT
GET (160, 235)-(370, 267), trek3%
CLS
DIM SHARED jarok%(170, 42.5) 'DIM the graphics array for the Romulan vessel
LINE (295, 240)-(345, 240), 2
LINE (295, 240)-(240, 265), 2
LINE (345, 240)-(400, 265), 2
LINE (400, 265)-(345, 235), 2
LINE (240, 265)-(295, 235), 2
LINE (295, 235)-(345, 235), 2
LINE (295, 235)-(320, 227.5), 2
LINE (345, 235)-(320, 227.5), 2
LINE (295, 240)-(320, 245), 2
LINE (345, 240)-(320, 245), 2
LINE (235, 265)-(240, 270), 2, BF
LINE (236, 267)-(239, 268), 10, BF
LINE (235 + 165, 265)-(240 + 165, 270), 2, BF
LINE (236 + 165, 267)-(239 + 165, 268), 10, BF
PAINT (320, 241), 2
PAINT (320, 239), 2
PAINT (320, 230), 2
FOR psetx = 305 TO 335 STEP 3
PSET (psetx, 233), 14
NEXT
LINE (295, 237.5)-(345, 237.5), 12
LINE (305, 241)-(335, 241), 9
LINE (305, 241)-(320, 243), 9
LINE (335, 241)-(320, 243), 9
PAINT (320, 242), 9
GET (235, 227.5)-(405, 270), jarok%
CLS

DEFINT A-Z
CALL warp 'CALL the warp effect sub
tng:
LOCATE 15, 29
COLOR 9
PRINT "Star Trek: "                'print title
LOCATE 16, 39
PRINT "The Next Generation"
SLEEP
LOCATE 15, 29
COLOR 0
PRINT "Star Trek: "                'black out title
LOCATE 16, 39
PRINT "The Next Generation"
FOR j = 1 TO 100                   'display starfleet emblem
CIRCLE (320, 240), j, 14, , , -.5
NEXT
LINE (320, 120)-(370, 300), 7
LINE (320, 120)-(270, 300), 7
LINE (370, 300)-(320, 240), 7
LINE (270, 300)-(320, 240), 7
PAINT (320, 230), 7
LOCATE 22, 25                      'print title page
COLOR 9
PRINT "Star Trek: The Next Generation"
LOCATE 23, 25
PRINT "    The Dark Star Project"
LOCATE 26, 34
PRINT "Programmed by:"
LOCATE 27, 34
PRINT "  Adam Dalke"
LOCATE 28, 26
PRINT "Ace in the Hole Software Ltd."
SLEEP
CLS
LINE (10, 60)-(40, 480), 1, BF            'draw the cool TNG background
LINE (20, 50)-(640, 60), 1, BF
FOR j = 1 TO 10
CIRCLE (20, 60), j, 1
CIRCLE (21, 60), j, 1
NEXT
LINE (10, 0)-(40, 30), 1, BF
LINE (20, 30)-(640, 40), 1, BF
FOR j = 1 TO 10
CIRCLE (20, 30), j, 1
CIRCLE (21, 30), j, 1
NEXT
LOCATE 1, 7
COLOR 9
PRINT "Duty Roster: Choose your character."  'print characters
LOCATE 6, 17
PRINT "1. Captain Jean-Luc Picard"
FOR p = 1 TO 7.5
CIRCLE (75, 86), p, 9
CIRCLE (76, 86), p, 9
NEXT
LINE (76, 86 - 7.5)-(120, 86 + 7.5), 9, BF
LINE (340, 86 - 7.5)-(400, 86 + 7.5), 9, BF
LINE (76 + 7.5, 86 - 7.5)-(81 + 7.5, 86 + 7.5), 0, BF
LOCATE 8, 17
PRINT "2. Commander William Thomas Riker"
FOR p = 1 TO 7.5
CIRCLE (75, 118), p, 9
CIRCLE (76, 118), p, 9
NEXT
LINE (76, 118 - 7.5)-(120, 118 + 7.5), 9, BF
LINE (395, 118 - 7.5)-(400, 118 + 7.5), 9, BF
LINE (76 + 7.5, 118 - 7.5)-(81 + 7.5, 118 + 7.5), 0, BF
LOCATE 10, 17
PRINT "3. Lieutenant Commander Data"
FOR p = 1 TO 7.5
CIRCLE (75, 150), p, 9
CIRCLE (76, 150), p, 9
NEXT
LINE (76, 150 - 7.5)-(120, 150 + 7.5), 9, BF
LINE (355, 150 - 7.5)-(400, 150 + 7.5), 9, BF
LINE (76 + 7.5, 150 - 7.5)-(81 + 7.5, 150 + 7.5), 0, BF
LOCATE 12, 17
PRINT "4. Commander Deanna Troi"
FOR p = 1 TO 7.5
CIRCLE (75, 182), p, 9
CIRCLE (76, 182), p, 9
NEXT
LINE (76, 182 - 7.5)-(120, 182 + 7.5), 9, BF
LINE (325, 182 - 7.5)-(400, 182 + 7.5), 9, BF
LINE (76 + 7.5, 182 - 7.5)-(81 + 7.5, 182 + 7.5), 0, BF
LOCATE 14, 17
PRINT "5. Lieutenant Commander Worf"
FOR p = 1 TO 7.5
CIRCLE (75, 214), p, 9
CIRCLE (76, 214), p, 9
NEXT
LINE (76, 214 - 7.5)-(120, 214 + 7.5), 9, BF
LINE (355, 214 - 7.5)-(400, 214 + 7.5), 9, BF
LINE (76 + 7.5, 214 - 7.5)-(81 + 7.5, 214 + 7.5), 0, BF
LOCATE 16, 17
PRINT "6. Chief Engineer Geordi La Forge"
FOR p = 1 TO 7.5
CIRCLE (75, 246), p, 9
CIRCLE (76, 246), p, 9
NEXT
LINE (76, 246 - 7.5)-(120, 246 + 7.5), 9, BF
LINE (395, 246 - 7.5)-(400, 246 + 7.5), 9, BF
LINE (76 + 7.5, 246 - 7.5)-(81 + 7.5, 246 + 7.5), 0, BF
agrrrail:                      'INPUT decision
LOCATE 18, 7
PRINT "";
INPUT roster$
IF roster$ = "1" THEN CALL p1  'CALL the right subprogram
IF roster$ = "2" THEN CALL r1
IF roster$ = "3" THEN CALL r1
IF roster$ = "4" THEN CALL r1
IF roster$ = "5" THEN CALL r1
IF roster$ = "6" THEN CALL r1
IF roster$ = "" THEN GOTO agrrrail   'loop if nothing
CLS
SCREEN 0, 0, 0            'reset screen for credits
SCREEN 13                 'set screen to 320x200, 237 color, text/graphics
ON PLAY(1) GOSUB MuchMusic 'code for background music originally by
CLS
PLAY ON
MBuff$ = "MNT150L4O1BL8EBL4>CL8<E>CL4C+L8<E>C+L4CL8<E>CL4<BL8EB"
PLAY "MB X" + VARPTR$(MBuff$)
SCREEN 13
DO
PixelScroll "Thank you for playing Ace in the Hole Software's The Dark Star Project.", 10, 90
PixelScroll "Head Programmer: Adam Dalke", 12, 90
PixelScroll "Enterprise and other assorted Star Trek graphics by: Adam Dalke", 123, 90
PixelScroll "Scroller code by: Martin Lindhe", 1, 90
PixelScroll "Epfaoluri orbit display sequence based loosely on the planet and moon in the background of ROCKWARS.BAS, which was written by Brennen Bearnes.", 11, 90
PixelScroll "Starfield behind the Enterprise is modified code that was originally by John Wantland.", 8, 90
PixelScroll "Stationary starfield code by: Jack Mott", 70, 90
PixelScroll "Earthquake effects by: William Yu", 54, 90
PixelScroll "Special thanks to all those who worked on The Next Generation... especially Gene Roddenberry, for without whom there would be no Star Trek and no program.", 9, 90
PixelScroll "Special thanks also to Microsoft Corporation and Bill Gates, for without which there would be no language to write this in.", 59, 90
PixelScroll "Special thanks also to my parents, for without whom there would be no programmer to write the program!", 122, 90
PixelScroll "Thanks go to Mike Okuda and Rick Sternbach for writing the Star Trek Technical Manual and unintentionally giving me the idea for subspace phaser arrays.", 76, 90
PixelScroll "Thanks also to the All BASIC Code group and all its donors, whose packets have helped me immensely.", 138, 90
PixelScroll "STAR TREK AND QBASIC RULE!", 4, 90
PixelScroll "Adam Dalke's E-mail: jwdalke@juno.com (text only please!)", 45, 90
PixelScroll "Adam Dalke's homepage (kind of lame): http://members.tripod.com/~Spock912/index-2.html", 46, 90
PixelScroll "All BASIC Code homepage: http://charlie.simplenet.com/abc/abchome.html", 48, 90
PixelScroll "A good game & cheats page: http://www.gamesdomain.com", 47, 90
PixelScroll "Do you get the feeling I'm stalling until the music stops?", 49, 90
PixelScroll "I am.", 50, 90
PixelScroll "Almost done.............................................................................", 51, 90
LOOP UNTIL LEN(INKEY$)
END
MuchMusic:
Count% = Count% + 1
SELECT CASE Count%
CASE 0: MBuff$ = "MNT150L4O1BL8EBL4>CL8<E>CL4C+L8<E>C+L4CL8<E>CL4<BL8EB"
CASE 1: MBuff$ = "L4>CL8<E>CL4C+L8<E>C+L4CL8<E>C>EL16F+F+L8F+L4F+.L8<EE"
CASE 2: MBuff$ = "E>EL16GGL8GL4G.L8<F+F+F+>EL16F+F+L8F+L4F+.L8<EEE>EL16G"
CASE 3: MBuff$ = "GL8GL4G.L8<F+F+F+>EL16F+F+L8F+L4F+.L8<EEE>EL16GGL8GL4G."
CASE 4: MBuff$ = "L8<F+F+EO4D+L64<BL8>DL2DL64O2GL8BL64F+L8AL32G.L1B.L8E"
CASE 5: MBuff$ = "L16F+F+L8F+L4F+.L8>EEE<EL16GGL8GL4G.L8>F+F+F+<EL16F+F+"
CASE 6: MBuff$ = "L8F+L4F+.L8>EEE<EL16GGL8GL4G.L8>F+F+F+<EL16F+F+L8F+L4F+."
CASE 7: MBuff$ = "L8>EEE<EL16GGL8GL4G.L8>F+F+E>D+L64<BL8>DL2DL64<GL8BL64F+"
CASE 8: MBuff$ = "L8AL32G.L1B.L4O1BL8EBL4>CL8<E>CL4C+L8<E>C+L4CL8<E>CL4<B"
CASE 9: MBuff$ = "L8EBL4>CL8<E>CL4C+L8<E>C+L4CL8<E>C>EL64EL4GL8>D+L64<G"
CASE 10: MBuff$ = "BL4>D.L8<GL64FL8A+L64GL2B.L8GL32AGL4F+.L8<B>EC+L2C+L64<G"
CASE 11: MBuff$ = "BL8>F+.P16L64<GBL4>F+L8EL64EL4GL8>D+L64<GBL4>D.L8<GL64F"
CASE 12: MBuff$ = "L8A+L64GL2B.L8GL32AGL4F+.L8<B>D+EL2EL64<GBL8>C+.P16L64<G"
CASE 13: MBuff$ = "BL4>C+L8EL64EL4GL8>D+L64<GBL4>D.L8<GL64FL8A+L64GL2B.L8G"
CASE 14: MBuff$ = "L32AGL4F+.L8<B>EC+L2C+L64<GBL8>F+.P16L64<GBL4>F+L8EL64E"
CASE 15: MBuff$ = "L4GL8>D+L64<GBL4>D.L8<GL64FL8A+L64GL2B.L8GL32AGL4F+.L8<B"
CASE 16: MBuff$ = ">D+EL2EL64<GBL8>C+.P16L64<GBL4>C+L64<GBL8>EL64<GBL4>E"
CASE 17: MBuff$ = "L64<GBL8>EL64<A>D+L8F+.L16EL64<A>D+L4F+L64<B>EL8GL64<B"
CASE 18: MBuff$ = ">EL4GL64<B>EL8GL64<A>D+L8F+.L16EL64<A>D+L4F+L64<GBL8>E"
CASE 19: MBuff$ = "L64<GBL4>EL64<GBL8>EL64<A>D+L8F+.L16EL64<A>D+L4F+L64<B"
CASE 20: MBuff$ = ">EL8GL64<B>EL4GL64<B>EL8GL64<A>D+L8F+.L16EL64<A>D+L4F+"
CASE 21: MBuff$ = "L64C+EGL8BL64C+EGL8BP8L2O1BL8BL64O3C+EGL8BL64C+EGL8BP8"
CASE 22: MBuff$ = "L4O1B.BL64O3C+EGL16BL8BL16BL8BL64C+EGL8BL4O1BL8EBL4>C"
CASE 23: MBuff$ = "L8<E>CL4C+L8<E>C+L4CL8<E>C>EL16F+F+L8F+L4F+.L8EEEEL16G"
CASE 24: MBuff$ = "GL8GL4G.L8F+F+F+EL16F+F+L8F+L4F+.L8EEEEL16GGL8GL4G.L8F+"
CASE 25: MBuff$ = "F+F+EL16F+F+L8F+L4F+.L8EEEEL16GGL8GL4G.L8F+F+E>D+L64<B"
CASE 26: MBuff$ = "L8>DL2DL64GL8BL64F+L8AL32G.L1B.P16L8O2EL4GL8>D+L4DL8<G"
CASE 27: MBuff$ = "BB>F+L4FL8<BL4>DL8A+L4AL8FAL4AL8D+DDP8P4L64O1EB>GB>C+"
CASE 28: MBuff$ = "L2F+.": Count% = -1: PSET (1, 1), 12: GOTO DOITALLOVERAGAIN
END SELECT
PLAY "MB X" + VARPTR$(MBuff$)
RETURN
END

             'PALETEE shifting subprogram
SUB cycledown
FOR palc = 1 TO 15
FOR palx = 63 TO 0 STEP -1
PALETTE palc, palx
NEXT palx
NEXT palc
END SUB

DEFSNG A-Z
'DEFINT A-Z  'Planet animation subprogram
SUB epfaoluri
CLS
PI = 3.141592654#

CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LINE (30, 80)-(60, 459), 1, BF
LINE (40, 70)-(619, 80), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 80), j, 1
CIRCLE (41, 80), j, 1
NEXT
LINE (30, 21)-(60, 50), 1, BF
LINE (40, 50)-(619, 60), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 50), j, 1
CIRCLE (41, 50), j, 1
NEXT

LOCATE 3, 9
COLOR 9
PRINT "Beta Quadrant: Romulan Star Empire: Epfaoluri System"

planetX = 320: planetY = 240
FOR circ% = 1 TO 8
  CIRCLE (planetX, planetY), circ%, 14
  CIRCLE (planetX, planetY + 1), circ%, 14
NEXT circ%

orbitRadium = 30
orbitRadium2 = 60
orbitRadium3 = 7
moonAngle = 0
moonAngle2 = 180
moonAngle3 = 180
oldmoonX = planetX + 75: oldmoonY = planetX
oldmoonX2 = planetX + 75: oldmoonY2 = planetX
plantime = 0

DO
  IF plantime = 901 THEN EXIT SUB
  LOCATE 6, 9
  PRINT moonY;
  PRINT moonX;
  PRINT moonY2;
  PRINT moonX2;
  PRINT moonY3;
  PRINT moonX3;
  moonAngle = moonAngle + 1
  moonAngle2 = moonAngle2 - 1
  moonAngle3 = moonAngle3 + 1
  plantime = plantime + 1
  IF moonAngle = 360 THEN moonAngle = 0
  theta = moonAngle * (PI / 180)
  moonX = planetX + orbitRadium * (COS(theta))
  moonY = planetY - orbitRadium * (SIN(theta))
  CIRCLE (oldmoonX + 2, oldmoonY + 4), 2, 0
  CIRCLE (oldmoonX + 2, oldmoonY + 4), 1, 0
  CIRCLE (oldmoonX + 3, oldmoonY + 4), 1, 0
  CIRCLE (oldmoonX + 1, oldmoonY + 4), 1, 0
  CIRCLE (moonX + 2, moonY + 4), 2, 2
  CIRCLE (moonX + 2, moonY + 4), 1, 2
  CIRCLE (moonX + 3, moonY + 4), 1, 2
  CIRCLE (moonX + 1, moonY + 4), 1, 2
  oldmoonX = moonX: oldmoonY = moonY
  IF moonAngle2 = 0 THEN moonAngle2 = 360
  theta = moonAngle2 * (PI / 180)
  moonX2 = planetX + orbitRadium2 * (COS(theta))
  moonY2 = planetY - orbitRadium2 * (SIN(theta))
  CIRCLE (oldmoonX2 + 2, oldmoonY2 + 4), 2, 0
  CIRCLE (oldmoonX2 + 2, oldmoonY2 + 4), 1, 0
  CIRCLE (oldmoonX2 + 3, oldmoonY2 + 4), 1, 0
  CIRCLE (oldmoonX2 + 1, oldmoonY2 + 4), 1, 0
  IF timeisnow > 0 THEN CIRCLE (oldmoonX2 + 2, oldmoonY2 + 4), 12, 0
  CIRCLE (moonX2 + 2, moonY2 + 4), 2, 9
  CIRCLE (moonX2 + 2, moonY2 + 4), 1, 9
  CIRCLE (moonX2 + 3, moonY2 + 4), 1, 9
  CIRCLE (moonX2 + 1, moonY2 + 4), 1, 9
  IF timeisnow > 0 THEN CIRCLE (moonX2 + 2, moonY2 + 4), 12, 12
  oldmoonX2 = moonX2: oldmoonY2 = moonY2
  IF moonAngle3 = 0 THEN moonAngle3 = 360
  theta = moonAngle3 * (PI / 180)
  moonX3 = moonX2 + orbitRadium3 * (COS(theta))
  moonY3 = moonY2 - orbitRadium3 * (SIN(theta))
  CIRCLE (oldmoonX3 + 1, oldmoonY3 + 4), 1, 0
  CIRCLE (moonX3 + 1, moonY3 + 4), 1, 7
  oldmoonX3 = moonX3: oldmoonY3 = moonY3
  IF plantime = 500 THEN timeisnow = 1
  IF timeisnow = 1 THEN GOSUB picard
  IF plantime = 501 THEN timeisnow = 2
  IF plantime = 700 THEN GOSUB clearwords
  IF plantime = 800 THEN GOSUB rd
  IF plantime = 900 THEN CALL fac17
  IF plantime = 901 THEN EXIT SUB
LOOP UNTIL plantime = 900
EXIT SUB
picard:
LOCATE 28, 9: PRINT "Picard: Computer, locate Epfaoluri II."
RETURN
clearwords:
LOCATE 28, 9: PRINT "                                      "
RETURN
rd:
LOCATE 28, 9: PRINT "Picard: Computer, display Romulan weapons R&D facility #17."
RETURN
END SUB

'DEFINT A-Z   'duplicate of the subprogram epfaoluri
SUB epfaoluri2
CLS
PI = 3.141592654#

CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LINE (30, 80)-(60, 459), 1, BF
LINE (40, 70)-(619, 80), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 80), j, 1
CIRCLE (41, 80), j, 1
NEXT
LINE (30, 21)-(60, 50), 1, BF
LINE (40, 50)-(619, 60), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 50), j, 1
CIRCLE (41, 50), j, 1
NEXT

LOCATE 3, 9
COLOR 9
PRINT "Beta Quadrant: Romulan Star Empire: Epfaoluri System"

planetX = 320: planetY = 240
FOR circ% = 1 TO 8
  CIRCLE (planetX, planetY), circ%, 14
  CIRCLE (planetX, planetY + 1), circ%, 14
NEXT circ%

orbitRadium = 30
orbitRadium2 = 60
orbitRadium3 = 7
moonAngle = 0
moonAngle2 = 180
moonAngle3 = 180
oldmoonX = planetX + 75: oldmoonY = planetX
oldmoonX2 = planetX + 75: oldmoonY2 = planetX
plantime = 0

DO
  IF plantime = 901 THEN EXIT SUB
  LOCATE 6, 9
  PRINT moonY;
  PRINT moonX;
  PRINT moonY2;
  PRINT moonX2;
  PRINT moonY3;
  PRINT moonX3;
  moonAngle = moonAngle + 1
  moonAngle2 = moonAngle2 - 1
  moonAngle3 = moonAngle3 + 1
  plantime = plantime + 1
  IF moonAngle = 360 THEN moonAngle = 0
  theta = moonAngle * (PI / 180)
  moonX = planetX + orbitRadium * (COS(theta))
  moonY = planetY - orbitRadium * (SIN(theta))
  CIRCLE (oldmoonX + 2, oldmoonY + 4), 2, 0
  CIRCLE (oldmoonX + 2, oldmoonY + 4), 1, 0
  CIRCLE (oldmoonX + 3, oldmoonY + 4), 1, 0
  CIRCLE (oldmoonX + 1, oldmoonY + 4), 1, 0
  CIRCLE (moonX + 2, moonY + 4), 2, 2
  CIRCLE (moonX + 2, moonY + 4), 1, 2
  CIRCLE (moonX + 3, moonY + 4), 1, 2
  CIRCLE (moonX + 1, moonY + 4), 1, 2
  oldmoonX = moonX: oldmoonY = moonY
  IF moonAngle2 = 0 THEN moonAngle2 = 360
  theta = moonAngle2 * (PI / 180)
  moonX2 = planetX + orbitRadium2 * (COS(theta))
  moonY2 = planetY - orbitRadium2 * (SIN(theta))
  CIRCLE (oldmoonX2 + 2, oldmoonY2 + 4), 2, 0
  CIRCLE (oldmoonX2 + 2, oldmoonY2 + 4), 1, 0
  CIRCLE (oldmoonX2 + 3, oldmoonY2 + 4), 1, 0
  CIRCLE (oldmoonX2 + 1, oldmoonY2 + 4), 1, 0
  IF timeisnow > 0 THEN CIRCLE (oldmoonX2 + 2, oldmoonY2 + 4), 12, 0
  CIRCLE (moonX2 + 2, moonY2 + 4), 2, 9
  CIRCLE (moonX2 + 2, moonY2 + 4), 1, 9
  CIRCLE (moonX2 + 3, moonY2 + 4), 1, 9
  CIRCLE (moonX2 + 1, moonY2 + 4), 1, 9
  IF timeisnow > 0 THEN CIRCLE (moonX2 + 2, moonY2 + 4), 12, 12
  oldmoonX2 = moonX2: oldmoonY2 = moonY2
  IF moonAngle3 = 0 THEN moonAngle3 = 360
  theta = moonAngle3 * (PI / 180)
  moonX3 = moonX2 + orbitRadium3 * (COS(theta))
  moonY3 = moonY2 - orbitRadium3 * (SIN(theta))
  CIRCLE (oldmoonX3 + 1, oldmoonY3 + 4), 1, 0
  CIRCLE (moonX3 + 1, moonY3 + 4), 1, 7
  oldmoonX3 = moonX3: oldmoonY3 = moonY3
  IF plantime = 500 THEN timeisnow = 1
  IF timeisnow = 1 THEN GOSUB picard2
  IF plantime = 501 THEN timeisnow = 2
  IF plantime = 700 THEN GOSUB clearwords2
  IF plantime = 800 THEN GOSUB r2d2
  IF plantime = 900 THEN CALL fac172
  IF plantime = 901 THEN EXIT SUB
LOOP UNTIL plantime = 900
EXIT SUB
picard2:
LOCATE 28, 9: PRINT "Picard: Computer, locate Epfaoluri II."
RETURN
clearwords2:
LOCATE 28, 9: PRINT "                                      "
RETURN
r2d2:
LOCATE 28, 9: PRINT "Picard: Computer, display Romulan weapons R&D facility #17."
RETURN

END SUB

DEFINT A-Z
           'subprogram for drawing the Romulan weapons R&D facility #17
SUB fac17
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LINE (30, 80)-(60, 459), 1, BF
LINE (40, 70)-(619, 80), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 80), j, 1
CIRCLE (41, 80), j, 1
NEXT
LINE (30, 21)-(60, 50), 1, BF
LINE (40, 50)-(619, 60), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 50), j, 1
CIRCLE (41, 50), j, 1
NEXT

LOCATE 3, 9
COLOR 9
PRINT "Beta Quadrant: Romulan Star Empire: Epfaoluri System: Weapons R&D #17"
LINE (61, 81)-(619, 459), 2, BF
FOR c = 200 TO 250
CIRCLE (400, 400), c, 1
CIRCLE (401, 400), c, 1
NEXT
LINE (20, 20)-(620, 460), 7, B
PAINT (630, 470), 7
PAINT (200, 470), 7
LINE (380, 340)-(420, 420), 7, BF
LINE (379, 377.5)-(340, 382.5), 8, BF
LINE (421, 377.5)-(460, 382.5), 8, BF
LINE (397.5, 340)-(402.5, 300), 8, BF
LINE (320, 370)-(340, 390), 7, BF
LINE (460, 370)-(480, 390), 7, BF
CIRCLE (470, 380), 7, 12
LINE (390, 280)-(410, 300), 7, BF
CIRCLE (400, 290), 2.5, 0
LINE (300, 340)-(379, 345), 8, BF
LINE (280, 352.5)-(300, 332.5), 7, BF
CIRCLE (290, 342.5), 8, 9
LINE (282, 342.5)-(298, 342.5), 2
LINE (290, 334.5)-(290, 350.5), 2
PSET (281, 333.5), 4
PSET (281, 351.5), 4
PSET (299, 333.5), 4
PSET (299, 351.5), 4
SLEEP 3
LOCATE 28, 9
COLOR 9
PRINT "Picard: Computer, annotate diagram."
SLEEP 2
LOCATE 25, 11
PRINT "Photon Torpedo Testing Lab"
LOCATE 22, 9
PRINT "Shuttlecraft Landing Pad"
LOCATE 18, 15
PRINT "Quantum Singularity Power Plant"
LOCATE 22, 55
PRINT "Main Building"
LOCATE 26, 54
PRINT "Phaser Array Testing Lab"
SLEEP 5
LOCATE 28, 9
PRINT "Picard: Computer, clear screen.    "
SLEEP 2
CLS
CALL pa2
END SUB

           'duplicate of the subprogram for drawing the Romulan weapons R&D
SUB fac172 'facility #17
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LINE (30, 80)-(60, 459), 1, BF
LINE (40, 70)-(619, 80), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 80), j, 1
CIRCLE (41, 80), j, 1
NEXT
LINE (30, 21)-(60, 50), 1, BF
LINE (40, 50)-(619, 60), 1, BF
FOR j = 1 TO 10
CIRCLE (40, 50), j, 1
CIRCLE (41, 50), j, 1
NEXT

LOCATE 3, 9
COLOR 9
PRINT "Beta Quadrant: Romulan Star Empire: Epfaoluri System: Weapons R&D #17"
LINE (61, 81)-(619, 459), 2, BF
FOR c = 200 TO 250
CIRCLE (400, 400), c, 1
CIRCLE (401, 400), c, 1
NEXT
LINE (20, 20)-(620, 460), 7, B
PAINT (630, 470), 7
PAINT (200, 470), 7
LINE (380, 340)-(420, 420), 7, BF
LINE (379, 377.5)-(340, 382.5), 8, BF
LINE (421, 377.5)-(460, 382.5), 8, BF
LINE (397.5, 340)-(402.5, 300), 8, BF
LINE (320, 370)-(340, 390), 7, BF
LINE (460, 370)-(480, 390), 7, BF
CIRCLE (470, 380), 7, 12
LINE (390, 280)-(410, 300), 7, BF
CIRCLE (400, 290), 2.5, 0
LINE (300, 340)-(379, 345), 8, BF
LINE (280, 352.5)-(300, 332.5), 7, BF
CIRCLE (290, 342.5), 8, 9
LINE (282, 342.5)-(298, 342.5), 2
LINE (290, 334.5)-(290, 350.5), 2
PSET (281, 333.5), 4
PSET (281, 351.5), 4
PSET (299, 333.5), 4
PSET (299, 351.5), 4
SLEEP 3
LOCATE 28, 9
COLOR 9
PRINT "Picard: Computer, annotate diagram."
SLEEP 2
LOCATE 25, 11
PRINT "Photon Torpedo Testing Lab"
LOCATE 22, 9
PRINT "Shuttlecraft Landing Pad"
LOCATE 18, 15
PRINT "Quantum Singularity Power Plant"
LOCATE 22, 55
PRINT "Main Building"
LOCATE 26, 54
PRINT "Phaser Array Testing Lab"
SLEEP 5
LOCATE 28, 9
PRINT "Picard: Computer, clear screen.    "
SLEEP 2
CLS
CALL pb2

END SUB

           'Plot for Picard
SUB p1
CLS
CALL stars 'CALL the subprogram for the starry background
FOR j = 1 TO 100 'draw planet and moon
CIRCLE (620, 460), j, 1
CIRCLE (621, 460), j, 1
NEXT
FOR j = 1 TO 20
CIRCLE (560, 300), j, 8
CIRCLE (561, 300), j, 8
NEXT
FOR j = 1 TO 5
CIRCLE (100, 100), j, 14
CIRCLE (101, 100), j, 14
NEXT
LINE (1, 200)-(181, 276), 0, BF 'draw the Remmler array
FOR a = 0 TO 59
LINE (30, 1 + 200)-(1 + a, 25 + 200), 6
LINE (30, 75 + 200)-(1 + a, 50 + 200), 6
LINE (1, 26 + 200)-(60, 49 + 200), 6, BF
NEXT
FOR a = 60 TO 119
LINE (90, 1 + 200)-(1 + a, 25 + 200), 6
LINE (90, 75 + 200)-(1 + a, 50 + 200), 6
LINE (61, 26 + 200)-(120, 49 + 200), 6, BF
NEXT
FOR a = 120 TO 179
LINE (150, 1 + 200)-(1 + a, 25 + 200), 6
LINE (150, 75 + 200)-(1 + a, 50 + 200), 6
LINE (121, 26 + 200)-(180, 49 + 200), 6, BF
NEXT
LINE (30, 1 + 200)-(150, 1 + 200), 6
LINE (30, 75 + 200)-(150, 75 + 200), 6
LOCATE 3, 7
COLOR 9
PRINT "Picard: Captain's Log: Stardate 47582.4. After a routine baryon sweep"
LOCATE 4, 7
PRINT "at the Remmler Array we are ready to leave Arkaria."
Move = 1
DO 'Enterprise movement sequence
LINE (200 + Move - 2, 225)-(412 + Move, 260), 0, BF
PUT (200 + Move, 225), trek% 'unload the DIMmed graphics array at the proper
Move = Move + 2              'x,y position
LOOP UNTIL Move = 225
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Worf: A top priority message from The Federation has arrived, Captain."
SLEEP 3
LOCATE 3, 7
PRINT "Picard: I'll take it in my ready room.                                "
SLEEP 2
CLS
LINE (10, 60)-(40, 480), 1, BF  'draw the background
LINE (20, 50)-(640, 60), 1, BF
FOR j = 1 TO 10
CIRCLE (20, 60), j, 1
CIRCLE (21, 60), j, 1
NEXT
LINE (10, 0)-(40, 30), 1, BF
LINE (20, 30)-(640, 40), 1, BF
FOR j = 1 TO 10
CIRCLE (20, 30), j, 1
CIRCLE (21, 30), j, 1
NEXT
LOCATE 3 + 3, 7
COLOR 9
PRINT "Computer: Playing message..."
SLEEP 2
LOCATE 3 + 3, 7
PRINT "Starbase 310, Fleet Admiral Nechayev: Recently a top secret subspace"
LOCATE 4 + 3, 7
PRINT "phaser was stolen from a Federation weapons R&D lab. It was built as"
LOCATE 5 + 3, 7
PRINT "part of the Dark Star Project. We believe that the Romulans have it."
LOCATE 6 + 3, 7
PRINT "Your prime objective is to get it back, your secondary objective is"
LOCATE 7 + 3, 7
PRINT "to learn more about the new class of Romulan ships. Good luck."
SLEEP 10
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "(Do you now a} set a course for Romulan space b} set a course for the"
LOCATE 4, 7
PRINT "nearest starbase for a special operations upgrade or c} ignore it all"
LOCATE 5, 7
PRINT "and set a course for Omicron Delta region and the Amusement Park Planet."
notenter: 'INPUT decision
LOCATE 6, 15
PRINT "";
INPUT pd1$
IF pd1$ = "a" THEN CALL pa1 'CALL the right subprogram
IF pd1$ = "b" THEN CALL pb1
IF pd1$ = "c" THEN CALL pc1
IF pd1$ = "" THEN GOTO notenter 'loop if nothing
END SUB

           'Plot for Picard if a) is chosen
SUB pa1
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Picard: Ensign Crusher, set a course for Romulan space, 025 mark 252."
SLEEP 3
LOCATE 3, 7
PRINT "Crusher: Aye, Captain.                                               "
SLEEP 2
LOCATE 3, 7
PRINT "Picard: Ahead, warp factor 8, engage!                                "
SLEEP 2
CALL warp 'CALL the warp effect sub
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Picard: Mr. Worf, ready all weapons."
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Aye, sir. What exactly are we to expect?"
SLEEP 3
LOCATE 3, 7
PRINT "Picard: A new class of Romulan ships has been launched, and they have"
LOCATE 4, 7
PRINT "stolen a subspace phaser array. Mr. Data, scan for subspace field decay."
SLEEP 5
LOCATE 3, 7
PRINT "Data: I have found significant amounts of field decay surrounding the"
LOCATE 4, 7
PRINT "Epfaoluri System.                                                       "
SLEEP 4
LOCATE 3, 7
PRINT "Picard: Do we have any information on the Epfaoluri System?          "
LOCATE 4, 7
PRINT "                 "
SLEEP 3
LOCATE 3, 7
PRINT "Data: It is part of the Romulan Star Empire and is home to one of the"
LOCATE 4, 7
PRINT "Romulan's best weapons R&D facilities. It has only two planets and one"
LOCATE 5, 7
PRINT "moon."
SLEEP 6
LOCATE 3, 7
PRINT "Picard: Computer, display the Epfaoluri System.                      "
LOCATE 4, 7
PRINT "                                                                      "
LOCATE 5, 7
PRINT "         "
SLEEP 3
CALL epfaoluri 'CALL the planet animation subprogram
END SUB

SUB pa2
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Do you now a} set a course for the Epfaoluri system b} send for "
LOCATE 4, 7
PRINT "reinforcements or c} defect to the Romulans"
nonotenter: 'INPUT decision
LOCATE 5, 15
PRINT "";
INPUT pd2$
IF pd2$ = "a" THEN CALL paa1 'CALL the right subprogram
IF pd2$ = "b" THEN CALL pab1
IF pd2$ = "c" THEN CALL pac1
IF pd2$ = "" THEN GOTO nonotenter 'loop if nothing
END SUB

           'Plot for Picard if a) and a) are chosen
SUB paa1
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Picard: Ensign Crusher, set a new course for Epfaoluri II, maintain"
LOCATE 4, 7
PRINT "speed."
SLEEP 4
LOCATE 3, 7
PRINT "Crusher: Aye, sir.                                                 "
LOCATE 4, 7
PRINT "      "
SLEEP 2
LOCATE 3, 7
PRINT "Time passes....   "
SLEEP 2
LOCATE 3, 7
PRINT "Crusher: We have reached Epfaoluri II, captain."
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Very good, prepare an away team and..."
SLEEP 2
LINE (20, 20)-(620, 460), 4, B   'turn screen border red
PAINT (5, 5), 4
Delay = 15500 'earthquake effect (by William Yu)
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 10 'alarm sounds loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
PRINT "Picard: Turn off that alarm!                  "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Our shields have been reduced to almost nothing, captain!"
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Mr. Worf, what hit us?                                 "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: It appears to have been a photon torpedo, but it did not show"
LOCATE 4, 7
PRINT "up on our sensors. Sir, a ship is decloaking in front of us!"
SLEEP 4
PUT (200, 200), jarok% 'unload the DIMmed graphics array at the proper x,y
LOCATE 3, 7            'position
PRINT "Worf: They are hailing us, captain, audio only.                    "
LOCATE 4, 7
PRINT "                                                            "
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Patch them in, Mr. Worf.               "
SLEEP 2
LOCATE 3, 7
PRINT "Romulan Commander: This is Commander Talek of the Jarok Class vessel"
LOCATE 4, 7
PRINT "Toreth. Surrender your ship immediately or face our new cloakable"
LOCATE 5, 7
PRINT "photon topedo. They can be fired through our own cloaking fields by"
LOCATE 6, 7
PRINT "tuning them to the same frequency."
SLEEP 7
LOCATE 3, 7
PRINT "Do you now a} surrender the ship b} blow up the ship c} run like hell"
LOCATE 4, 7
PRINT "d} try diplomacy or e} fire at them                              "
LOCATE 5, 7
PRINT "                                                                   "
LOCATE 6, 7
PRINT "                                  "
nonotneverenter: 'INPUT decision
LOCATE 5, 15
PRINT "";
INPUT pd3$
IF pd3$ = "a" THEN CALL paaa1 'CALL the right subprogram
IF pd3$ = "b" THEN CALL shipexplode
IF pd3$ = "c" THEN CALL paac1
IF pd3$ = "d" THEN CALL paad1
IF pd3$ = "e" THEN CALL paae1
IF pd3$ = "" THEN GOTO nonotneverenter 'loop if nothing
END SUB

           'Plot for Picard if a), a), and a) are chosen
SUB paaa1
CLS
PALETTE 4, 0 'change the color red to black
COLOR 4
PRINT "After capitulating to the Romulans, you and your entire crew are put in a "
PRINT "prison camp for the remainder of your days. You and your senior staff are"
PRINT "tortured in order to further the amount of information on The Federation."
PRINT "You all die of old age and assorted diseases unhappily on a cold, dark, and"
PRINT "hostile world. Game Over. You lose. "
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT "                              THE END"
FOR palx = 0 TO 63 'slowly change the color red (currently black) back to red
PALETTE 4, palx
FOR timewaste = 1 TO 999: NEXT
NEXT
SLEEP
CALL cycledown 'CALL the change-all-colors-to-black subprogram
END SUB

           'Plot for Picard if a), a), and c) are chosen
SUB paac1
LOCATE 3, 7
COLOR 9
PRINT "Picard: Get us out of here, Ensign, maximum warp.                    "
LOCATE 4, 7
PRINT "                                                                    "
LOCATE 5, 7
PRINT "                                                                    "
SLEEP 3
LOCATE 3, 7
PRINT "Crusher: Aye, sir.                               "
SLEEP 2
CALL warp 'CALL the warp effect sub
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 4, B
PAINT (5, 5), 4
LOCATE 3, 7
COLOR 9
PRINT "Worf: Captain, they are pursuing us."
SLEEP 2
LOCATE 3, 7
PRINT "Picard: Range?                           "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: In another few seconds they'll be within weapons range, sir."
SLEEP 4
LOCATE 3, 7
PRINT "Picard: Mr. La Forge, can you get more power to the shields?      "
SLEEP 3
LOCATE 3, 7
PRINT "La Forge: No, Captain, the power...                              "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: They are firing.             "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Impact in 10 seconds, 9, 8, 7, 6, 5, 4, 3, it was a pleasure"
LOCATE 4, 7
PRINT "serving under you, sir."
SLEEP 5
Delay = 15500 'earthquake effect (by William Yu)
DO
bloodyalarm = 0
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 5
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
endx = endx + 1
LOOP UNTIL endx = 3
CALL shipexplode 'CALL the Enterprise explode subprogram
END SUB

           'Plot for Picard if a), a), and d) are chosen
SUB paad1
LOCATE 3, 7
PRINT "We have only come to claim what is ours, are you willing to create an"
LOCATE 4, 7
PRINT "interstellar incident?                                              "
LOCATE 5, 7
PRINT "                                                                    "
SLEEP 5
LOCATE 3, 7
PRINT "Talek: Chances are that nobody but your starfleet command knows about"
LOCATE 4, 7
PRINT "your mission, and if it failed, I doubt that they would tell anybody."
LOCATE 5, 7
PRINT "Also, since I don't have time to waste, I'll just end this the easy"
LOCATE 6, 7
PRINT "way. Goodbye."
SLEEP 8
Delay = 15500 'earthquake effect (by William Yu)
DO
bloodyalarm = 0
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 5 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
endx = endx + 1
LOOP UNTIL endx = 3
CALL shipexplode 'CALL the Enterprise explode subprogram
END SUB

           'Plot for Picard if a), a), and e) are chosen
SUB paae1
LOCATE 3, 7
PRINT "Picard: Mr. Worf, fire at will.                                      "
LOCATE 4, 7
PRINT "                                                                    "
LOCATE 5, 7
PRINT "                                                                    "
SLEEP 2
LOCATE 3, 7
PRINT "Worf pulls out a Type I personnel phaser and points it at Riker..."
SLEEP 4
LOCATE 3, 7
PRINT "Picard: No, no, I mean the enemy!                                 "
SLEEP 2
LOCATE 3, 7
PRINT "Worf looks disappointed as he fires the weapons."
SLEEP 3
CLS
CALL phaser 'CALL the phaser effect subprogram
CLS
CALL photon 'CALL the photon torpedo effect subprogram
CLS
CALL stars  'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 4, B
PAINT (5, 5), 4
PUT (200, 200), jarok% 'unload the DIMmed graphics array at the proper x,y
Delay = 15500          'position
FOR X = 1 TO Delay     'earthquake effect (by William Yu)
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 5 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
COLOR 9
PRINT "Worf: Our hits have been minimal, our shields are down, and theirs"
LOCATE 4, 7
PRINT "are still intact. Our chances of survival are low."
SLEEP 5
Delay = 15500 'earthquake effect (by William Yu)
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 5 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
PRINT "Picard: Thank you for that delightful upper, Mr. Worf, continue   "
LOCATE 4, 7
PRINT "firing.                                           "
SLEEP 4
Delay = 15500 'earthquake effect (by William Yu)
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 5 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
PRINT "Aye, aye, Captain.                                               "
LOCATE 4, 7
PRINT "            "
SLEEP 2
CLS
CALL phaser 'CALL the phaser effect subprogram
CLS
CALL photon 'CALL the photon torpedo effect subprogram
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 4, B
PAINT (5, 5), 4
PUT (200, 200), jarok% 'unload the DIMmed graphics array at the proper x,y
Delay = 15500          'position
FOR X = 1 TO Delay     'earthquake effect (by William Yu)
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 5 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
COLOR 9
PRINT "La Forge: They've hit the warp core, and it won't eject. There will"
LOCATE 4, 7
PRINT "Be a breach.....";
SLEEP 5
PRINT "now!"
SLEEP 1
CALL shipexplode 'CALL the Enterprise explode subprogram
END SUB

           'Plot for Picard if a) amd b)are chosen
SUB pab1
LOCATE 3, 7
PRINT "Picard: Mr. Data, how far away is the nearest Starfleet ship?        "
LOCATE 4, 7
PRINT "                                                                    "
LOCATE 5, 7
PRINT "                                                                    "
SLEEP 3
LOCATE 3, 7
PRINT "Data: We are deep within Romulan space, so no Starfleet ship could "
LOCATE 4, 7
PRINT "reach us in less than a day."
SLEEP 5
LOCATE 3, 7
PRINT "Riker: Also, sir, this is supposed to be a covert operation. I don't"
LOCATE 4, 7
PRINT "think that Starfleet Command would approve of the involvement of other"
LOCATE 5, 7
PRINT "vessels."
SLEEP 7
LOCATE 3, 7
PRINT "Do you now a} send for reinforcements, wait for them to come, and risk"
LOCATE 4, 7
PRINT "retribution or b} set a course for Epfaoluri II.                      "
exenter: 'INPUT decision
LOCATE 5, 7
PRINT "        ";
INPUT pd4$
IF pd4$ = "a" THEN CALL paba1 'CALL the right sub
IF pd4$ = "b" THEN CALL paa1
IF pd4$ = "" THEN GOTO exenter 'loop if nothing
END SUB

           'Plot for Picard if b) and b) are chosen (near duplicate of pab1)
SUB pab2
LOCATE 3, 7
PRINT "Picard: Mr. Data, how far away is the nearest Starfleet ship?        "
LOCATE 4, 7
PRINT "                                                                    "
LOCATE 5, 7
PRINT "                                                                    "
SLEEP 3
LOCATE 3, 7
PRINT "Data: We are deep within Romulan space, so no Starfleet ship could "
LOCATE 4, 7
PRINT "reach us in less than a day."
SLEEP 5
LOCATE 3, 7
PRINT "Riker: Also, sir, this is supposed to be a covert operation. I don't"
LOCATE 4, 7
PRINT "think that Starfleet Command would approve of the involvement of other"
LOCATE 5, 7
PRINT "vessels."
SLEEP 7
LOCATE 3, 7
PRINT "Do you now a} send for reinforcements, wait for them to come, and risk"
LOCATE 4, 7
PRINT "retribution or b} set a course for Epfaoluri II.                      "
exenter2: 'INPUT decision
LOCATE 5, 7
PRINT "        ";
INPUT pd4$
IF pd4$ = "a" THEN CALL paba1 'CALL the right subprogram
IF pd4$ = "b" THEN CALL pba1
IF pd4$ = "" THEN GOTO exenter2 'loop if nothing
END SUB

           'Plot for Picard if a), b), and a) are selected
SUB paba1
LOCATE 3, 7
PRINT "Picard: Send for reinforcements. We will wait here until they arrive. "
LOCATE 4, 7
PRINT "                                                                    "
LOCATE 5, 7
PRINT "                                                                    "
SLEEP 4
LOCATE 3, 7
PRINT "One day later....                                                     "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: The reinforcements have arrived, Captain, and we are receiving a"
LOCATE 4, 7
PRINT "message from Starfleet Command."
SLEEP 5
LOCATE 3, 7
PRINT "Picard: On screen.                                                    "
LOCATE 4, 7
PRINT "                                 "
SLEEP 2
LOCATE 3, 7
PRINT "Our long range sensors aboard Federation outposts along the Romulan"
LOCATE 4, 7
PRINT "Neutral Zone have found subspace phasers in use on Romulan ships. We"
LOCATE 5, 7
PRINT "are too late."
LOCATE 16, 25
PRINT "(THE END. YOU LOSE. HAVE A NICE DAY.)"
SLEEP
CALL cycledown 'CALL the change-all-colors-to-black subprogram
END SUB

           'Plot for Picard if a) and c) are chosen
SUB pac1
CLS
PALETTE 4, 0 'set the color red to black
COLOR 4
PRINT "Your attempt to leave the ship in a shuttlepod fails. It is destroyed when"
PRINT "Commander Riker fires on it. What's left of you drifts in the vacuum of space"
PRINT "for centuries, a warning to all Starfleet captains who have first officers"
PRINT "loyal to the United Federation of Planets."
LOCATE 16, 25
PRINT "THE END. YOU LOSE. HAVE A NICE DAY."
FOR palx = 0 TO 63 'slowly change red (now black) back to red
PALETTE 4, palx
FOR timewaste = 1 TO 999: NEXT
NEXT
CALL cycledown 'CALL the change-all-colors-to-black subprogram
END SUB

           'Plot for Picard if b) is chosen
SUB pb1
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Picard: Ensign, set a course for the nearest starbase, warp 8."
SLEEP 3
LOCATE 3, 7
PRINT "Crusher: Aye, sir.                                               "
SLEEP 2
CLS
CALL warp 'CALL the warp effect sub
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Picard: Hail them, Mr. Worf."
SLEEP 2
LOCATE 3, 7
PRINT "Starbase Commander: This is Starbase 513, what is it Enterprise?"
SLEEP 4
LOCATE 3, 7
PRINT "Picard: We are here for a special operations upgrade authorized "
LOCATE 4, 7
PRINT "by Fleet Admiral Nechayev."
SLEEP 4
LOCATE 3, 7
PRINT "                                                                "
LOCATE 4, 7
PRINT "                           "
LOCATE 3, 7
PRINT "Starbase Commander: Let me check....";
SLEEP 3
PRINT "yes, you are scheduled for an"
LOCATE 4, 7
PRINT "upgrade. I will feed the docking procedure to your helmsman."
SLEEP 4
LOCATE 3, 7
PRINT "Some time later....                                                 "
LOCATE 4, 7
PRINT "                                                                 "
SLEEP 2
LOCATE 3, 7
PRINT "Picard: Mr. LaForge, fill me in on the changes to my ship."
SLEEP 4
LOCATE 3, 7
PRINT "LaForge: A cloaking device has been installed and experimental"
LOCATE 4, 7
PRINT "weapons have been added, such as subspace phaser array prototypes"
LOCATE 5, 7
PRINT "and cloakable photon torpedoes."
SLEEP 7
LOCATE 3, 7
PRINT "Picard: Very good, it appears we are as ready as we'll ever be."
LOCATE 4, 7
PRINT "Ensign Crusher, head for Romulan space, warp factor 8. Mr, Worf  "
LOCATE 5, 7
PRINT "engage the cloaking device.    "
SLEEP 5
LOCATE 3, 7
PRINT "Worf: The cloaking device is active.                           "
LOCATE 4, 7
PRINT "                                                               "
LOCATE 5, 7
PRINT "                                 "
SLEEP 2
LOCATE 3, 7
PRINT "Picard: Mr. Worf, ready all weapons."
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Aye, sir. What exactly are we to expect?"
SLEEP 3
LOCATE 3, 7
PRINT "Picard: A new class of Romulan ships has been launched, and they have"
LOCATE 4, 7
PRINT "stolen a subspace phaser array. Mr. Data, scan for subspace field decay."
SLEEP 5
LOCATE 3, 7
PRINT "Data: I have found significant amounts of field decay surrounding the"
LOCATE 4, 7
PRINT "Epfaoluri System.                                                       "
SLEEP 4
LOCATE 3, 7
PRINT "Picard: Do we have any information on the Epfaoluri System?          "
LOCATE 4, 7
PRINT "                 "
SLEEP 3
LOCATE 3, 7
PRINT "Data: It is part of the Romulan Star Empire and is home to one of the"
LOCATE 4, 7
PRINT "Romulan's best weapons R&D facilities. It has only two planets and one"
LOCATE 5, 7
PRINT "moon."
SLEEP 6
LOCATE 3, 7
PRINT "Picard: Computer, display the Epfaoluri System.                      "
LOCATE 4, 7
PRINT "                                                                      "
LOCATE 5, 7
PRINT "         "
SLEEP 3
CALL epfaoluri2 'CALL the planet animation
END SUB

           'continuation of pb1
SUB pb2
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Do you now a} set a course for the Epfaoluri System b} send for "
LOCATE 4, 7
PRINT "reinforcements or c} defect to the Romulans"
deadparrot: 'INPUT decision
LOCATE 5, 15
PRINT "";
INPUT pd2$
IF pd2$ = "a" THEN CALL pba1 'CALL the right subprogram
IF pd2$ = "b" THEN CALL pab2
IF pd2$ = "c" THEN CALL pac1
IF pd2$ = "" THEN GOTO deadparrot 'loop if nothing
END SUB

           'Plot for Picard if b) and a) are chosen
SUB pba1
CLS
CALL stars 'CALL the subprogram for the starry background
LINE (20, 20)-(620, 460), 7, B
PAINT (5, 5), 7
LOCATE 3, 7
COLOR 9
PRINT "Picard: Ensign Crusher, set a new course for Epfaoluri II, maintain"
LOCATE 4, 7
PRINT "speed."
SLEEP 4
LOCATE 3, 7
PRINT "Crusher: Aye, sir.                                                 "
LOCATE 4, 7
PRINT "      "
SLEEP 2
LOCATE 3, 7
PRINT "Time passes....   "
SLEEP 2
LOCATE 3, 7
PRINT "Crusher: We have reached Epfaoluri II, Captain."
SLEEP 3
LOCATE 3, 7
PRINT "Do you now a) land a special operations away team in the Romulan"
LOCATE 4, 7
PRINT "weapons R&D lab b) try to lock on to the subspace phaser array and"
LOCATE 5, 7
PRINT "beam it out of the facility c) ask them nicely to give it back"
billiethewonderllama: 'INPUT decision
LOCATE 6, 15
PRINT "";
INPUT pd73$
IF pd73$ = "a" THEN CALL pbaa1 'CALL the right sub
IF pd73$ = "b" THEN CALL pbab1
IF pd73$ = "c" THEN CALL pbac1
IF pd73$ = "" THEN GOTO billiethewonderllama 'loop if nothing
END SUB

           'Plot for Picard if b), a), and a) are chosen
SUB pbaa1
LOCATE 3, 7
PRINT "Picard: Prepare the special operations away team and beam them down"
LOCATE 4, 7
PRINT "to the Romulan weapons R&D facility. Mr. Worf, transfer cloaking   "
LOCATE 5, 7
PRINT "device command to the transporter console.                         "
LOCATE 6, 7
PRINT "                                                                   "
SLEEP 7
LOCATE 3, 7
PRINT "Worf: Aye, sir.                                                    "
LOCATE 4, 7
PRINT "                                                                 "
LOCATE 5, 7
PRINT "                                          "
SLEEP 2
LOCATE 3, 7
PRINT "Time passes...."
SLEEP 2
LOCATE 3, 7
PRINT "Data: The away team should have secured the SPA and erased all the "
LOCATE 4, 7
PRINT "SPA data from their central computers."
SLEEP 4
LOCATE 3, 7
PRINT "Worf: We have received a subspace pulse from the away team.       "
LOCATE 4, 7
PRINT "                                      "
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Beam them up, Mr. Worf.                            "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Transporter room signals a successful mission, Captain."
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Take us home, Ensign.                                    "
SLEEP 2
LOCATE 3, 7
PRINT "Crusher: With pleasure, Captain."
SLEEP 2
CALL warp 'CALL the warp effect sub
END SUB

           'Plot for Picard if b), a), and b) are chosen
SUB pbab1
LOCATE 3, 7
PRINT "Picard: Mr. Worf, lock transporters on the SPA and beam it out.   "
LOCATE 4, 7
PRINT "                                                                  "
LOCATE 5, 7
PRINT "                                                                  "
LOCATE 6, 7
PRINT "                                                                  "
SLEEP 3
LOCATE 3, 7
PRINT "Worf: The transporter won't lock, a shield is currently activated."
SLEEP 4
LOCATE 3, 7
PRINT "Picard: Can you break through the shielding?                     "
SLEEP 3
LOCATE 3, 7
PRINT "Worf not without disengaging the cloaking device for an extended "
LOCATE 4, 7
PRINT "period of time."
SLEEP 4
LOCATE 3, 7
PRINT "Do you now a) land a special operations away team in the Romulan"
LOCATE 4, 7
PRINT "weapons R&D lab b) decloak in order to breakthrough the shielding"
LOCATE 5, 7
PRINT "and beam it out of the facility c) ask them nicely to give it back"
ni: 'INPUT decision
LOCATE 6, 15
PRINT "";
INPUT pd73$
IF pd73$ = "a" THEN CALL pbaa1 'CALL the right subprogram
IF pd73$ = "b" THEN CALL pbabb1
IF pd73$ = "c" THEN CALL pbac1
IF pd73$ = "" THEN GOTO ni 'loop if nothing
END SUB

           'Plot for Picard if b), a), b), and b) are chosen
SUB pbabb1
LOCATE 3, 7
PRINT "Picard: You are authorized to decloak.                            "
LOCATE 4, 7
PRINT "                                                                  "
LOCATE 5, 7
PRINT "                                                                  "
LOCATE 6, 7
PRINT "                                                                  "
SLEEP 3
LINE (20, 20)-(620, 460), 4, B
PAINT (5, 5), 4
Delay = 15500 'earthquake effect (by William Yu)
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 10 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
PRINT "Picard: Turn off that alarm!                  "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Our shields have been reduced to almost nothing and the"
LOCATE 4, 7
PRINT "cloaking device is off-line, captain!"
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Mr. Worf, what hit us?                                 "
LOCATE 4, 7
PRINT "                                         "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: It appears to have been a photon torpedo, but it did not show"
LOCATE 4, 7
PRINT "up on our sensors. Sir, a ship is decloaking in front of us!"
SLEEP 4
PUT (200, 200), jarok% 'unload the DIMmed graphics array at the proper x,y
LOCATE 3, 7            'position
PRINT "Worf: They are hailing us, captain, audio only.                    "
LOCATE 4, 7
PRINT "                                                            "
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Patch them in, Mr. Worf.               "
SLEEP 2
LOCATE 3, 7
PRINT "Romulan Commander: This is Commander Talek of the Jarok Class vessel"
LOCATE 4, 7
PRINT "Toreth. Surrender your ship immediately or face our new cloakable"
LOCATE 5, 7
PRINT "photon topedo. They can be fired through our own cloaking fields by"
LOCATE 6, 7
PRINT "tuning them to the same frequency."
SLEEP 7
LOCATE 3, 7
PRINT "Do you now a} surrender the ship b} blow up the ship c} run like hell"
LOCATE 4, 7
PRINT "d} try diplomacy or e} fire at them                              "
LOCATE 5, 7
PRINT "                                                                   "
LOCATE 6, 7
PRINT "                                  "
spootage: 'INPUT decision
LOCATE 5, 15
PRINT "";
INPUT pd33$
IF pd33$ = "a" THEN CALL paaa1 'CALL the right subprogram
IF pd33$ = "b" THEN CALL shipexplode
IF pd33$ = "c" THEN CALL paac1
IF pd33$ = "d" THEN CALL paad1
IF pd33$ = "e" THEN CALL paae1
IF pd33$ = "" THEN GOTO spootage 'loop if nothing
END SUB

           'Plot for Picard if b), a), and c) are chosen
SUB pbac1
LOCATE 3, 7
PRINT "Picard: Disengage the cloaking device and open a channel to the   "
LOCATE 4, 7
PRINT "facility, audio only.                                             "
LOCATE 5, 6
PRINT "                                                                  "
LOCATE 6, 7
PRINT "                                                                  "
SLEEP 4
LOCATE 3, 7
PRINT "Picard: This is Captain Picard of the Starship Enterprise. We have"
LOCATE 4, 7
PRINT "come to reclaim the stolen subspace phaser array."
SLEEP 6
LOCATE 3, 7
PRINT "Romulan Commander: Bwa, ha, ha, ha, ha, ha! SNORT! HEE HEE HA! You"
LOCATE 4, 7
PRINT "...giggle...can't be...chortle...serious!        "
SLEEP 5
LOCATE 3, 7
PRINT "Picard: Of course I am, what the devil do you think is so funny? "
LOCATE 4, 7
PRINT "                                         "
SLEEP 4
LOCATE 3, 7
PRINT "Romulan Commander: Heh, heh, snort, right, hold...giggle...on.  "
SLEEP 3
LOCATE 3, 7
PRINT "The Romulan Commander manages to wheeze an order to his subordinate."
SLEEP 4
LOCATE 3, 7
PRINT "Worf: They have broken the channel.                                 "
SLEEP 2
LINE (20, 20)-(620, 460), 4, B
PAINT (5, 5), 4
Delay = 15500 'earthquake effect (by William Yu)
FOR X = 1 TO Delay
  OUT &H3D4, 8: OUT &H3D5, X
NEXT X
OUT &H3D4, 8: OUT &H3D5, 0
DO UNTIL bloodyalarm = 10 'alarm loop
SOUND 1500, 1
SOUND 2000, 5
SOUND 0, 3
bloodyalarm = bloodyalarm + 1
LOOP
LOCATE 3, 7
PRINT "Picard: Turn off that alarm!                  "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: Our shields have been reduced to almost nothing and the"
LOCATE 4, 7
PRINT "cloaking device is off-line, Captain!"
SLEEP 4
LOCATE 3, 7
PRINT "Picard: Mr. Worf, what hit us?                                 "
LOCATE 4, 7
PRINT "                                         "
SLEEP 2
LOCATE 3, 7
PRINT "Worf: It appears to have been a photon torpedo, but it did not show"
LOCATE 4, 7
PRINT "up on our sensors. Sir, a ship is decloaking in front of us!"
SLEEP 4
PUT (200, 200), jarok% 'unload the DIMmed graphics array at the proper x,y
LOCATE 3, 7            'position
PRINT "Worf: They are hailing us, Captain, audio only.                    "
LOCATE 4, 7
PRINT "                                                            "
SLEEP 3
LOCATE 3, 7
PRINT "Picard: Patch them in, Mr. Worf.               "
SLEEP 2
LOCATE 3, 7
PRINT "Romulan Commander: This is Commander Talek of the Jarok Class vessel"
LOCATE 4, 7
PRINT "Toreth. Surrender your ship immediately or face our new cloakable"
LOCATE 5, 7
PRINT "photon topedo. They can be fired through our own cloaking fields by"
LOCATE 6, 7
PRINT "tuning them to the same frequency."
SLEEP 7
LOCATE 3, 7
PRINT "Do you now a} surrender the ship b} blow up the ship c} run like hell"
LOCATE 4, 7
PRINT "d} try diplomacy or e} fire at them                              "
LOCATE 5, 7
PRINT "                                                                   "
LOCATE 6, 7
PRINT "                                  "
billybob: 'INPUT decision
LOCATE 5, 15
PRINT "";
INPUT pd23$
IF pd23$ = "a" THEN CALL paaa1 'CALL right subprogram
IF pd23$ = "b" THEN CALL shipexplode
IF pd23$ = "c" THEN CALL paac1
IF pd23$ = "d" THEN CALL paad1
IF pd23$ = "e" THEN CALL paae1
IF pd23$ = "" THEN GOTO billybob 'loop if nothing
END SUB

           'Plot for Picard if c) is chosen
SUB pc1
CLS
COLOR 4
PALETTE 4, 0 'set red to black
PRINT "After telling Ensign Crusher to plot a heading to the Amusement "
PRINT "Park Planet in the Omicron Delta region you are relieved of command"
PRINT "by the bridge officers. Riker assumes command, and due to bad command"
PRINT "decisions made by the aforementioned individual the Enterprise meets"
PRINT "its demise in the Epfaoluri Star System. Everyone dies."
PRINT
PRINT "              THE END. YOU LOSE. HAVE A NICE DAY."
FOR PALS = 0 TO 63 'slowly change red (black) back to normal red
PALETTE 4, PALS
NEXT
SLEEP
CALL cycledown 'CALL the change-all-colors-to-black subprogram
END SUB

           'phaser effect sub
SUB phaser
N = 150
DIM Y(N)
DIM X(N)
DIM s(N)
DIM c(N)
DIM X1(N)
DIM Y1(N)
DIM c1(N)
DIM s1(N)
RANDOMIZE TIMER
CLS
FOR I = 1 TO N
X(I) = INT(RND * 640 + 1)
Y(I) = INT(RND * 480 + 1)
s(I) = INT(RND * 5 + 1)
s1(I) = INT(RND * 5 + 1)
X1(I) = INT(RND * 640 + 1)
Y1(I) = INT(RND * 480 + 1)
IF s1(I) <= 3 THEN c1(I) = 8
IF s1(I) = 4 THEN c1(I) = 7
IF s1(I) = 5 THEN c1(I) = 15
IF s(I) <= 3 THEN c(I) = 8
IF s(I) = 4 THEN c(I) = 7
IF s(I) = 5 THEN c(I) = 15
NEXT I
DO
FOR I = 1 TO N
PSET (X(I), Y(I)), 0
PSET (X1(I), Y1(I)), 0
X(I) = X(I) - s(I)
X1(I) = X1(I) - s1(I)
IF X(I) <= 1 THEN GOSUB 2
IF X1(I) >= 640 THEN GOSUB 3
PSET (X(I), Y(I)), c(I)
PSET (X1(I), Y1(I)), c1(I)
NEXT I
LINE (200, 200)-(412, 236), 0, BF
PUT (200, 200), trek%    'unload the DIMmed graphics array at the proper x,y
IF secondprise > 50 THEN 'position
  FOR g = 1 TO 500
  LINE (395, 209)-(640, 250), RND * 15
  NEXT
  LINE (395, 209)-(640, 250), 0
  LINE (1, 1)-(200, 1), 0
  secondprise = 0
  EXIT SUB
END IF
secondprise = secondprise + 1
LOOP UNTIL secondprise = 110
EXIT SUB
2 X(I) = 640
Y(I) = INT(RND * 480 + 1)
RETURN
3 X1(I) = 1
Y1(I) = INT(RND * 480 + 1)
RETURN

END SUB

           'photon torpedo effect sub
SUB photon
N = 150
DIM Y(N)
DIM X(N)
DIM s(N)
DIM c(N)
DIM X1(N)
DIM Y1(N)
DIM c1(N)
DIM s1(N)
RANDOMIZE TIMER
CLS
FOR I = 1 TO N
X(I) = INT(RND * 640 + 1)
Y(I) = INT(RND * 480 + 1)
s(I) = INT(RND * 5 + 1)
s1(I) = INT(RND * 5 + 1)
X1(I) = INT(RND * 640 + 1)
Y1(I) = INT(RND * 480 + 1)
IF s1(I) <= 3 THEN c1(I) = 8
IF s1(I) = 4 THEN c1(I) = 7
IF s1(I) = 5 THEN c1(I) = 15
IF s(I) <= 3 THEN c(I) = 8
IF s(I) = 4 THEN c(I) = 7
IF s(I) = 5 THEN c(I) = 15
NEXT I

DO
FOR I = 1 TO N
PSET (X(I), Y(I)), 0
PSET (X1(I), Y1(I)), 0
X(I) = X(I) - s(I)
X1(I) = X1(I) - s1(I)
IF X(I) <= 1 THEN GOSUB 222
IF X1(I) >= 640 THEN GOSUB 333
PSET (X(I), Y(I)), c(I)
PSET (X1(I), Y1(I)), c1(I)
NEXT I
LINE (200, 200)-(412, 236), 0, BF
PUT (200, 200), trek%    'unload the DIMmed graphics array at the proper x,y
IF secondprise > 50 THEN 'position
  photonx = 326
  DO
  LINE (photonx - 3, 215)-(photonx - 3, 219), 0
  PSET (photonx, 215), 0
  PSET (photonx + 2, 217), 0
  PSET (photonx, 217), 0
  PSET (photonx - 2, 217), 0
  PSET (photonx, 219), 0
  photonx = photonx + 1
  PSET (photonx - 2, 215), 11
  PSET (photonx + 2, 215), 11
  PSET (photonx, 217), 11
  PSET (photonx - 2, 219), 11
  PSET (photonx + 2, 219), 11
  FOR ptime = 1 TO 1000
  NEXT
  LINE (photonx - 3, 215)-(photonx - 3, 219), 0
  PSET (photonx - 2, 215), 0
  PSET (photonx + 2, 215), 0
  PSET (photonx, 217), 0
  PSET (photonx - 2, 219), 0
  PSET (photonx + 2, 219), 0
  photonx = photonx + 1
  PSET (photonx, 215), 11
  PSET (photonx + 2, 217), 11
  PSET (photonx, 217), 11
  PSET (photonx - 2, 217), 11
  PSET (photonx, 219), 11
  FOR ptime = 1 TO 1000
  NEXT
  LOOP UNTIL photonx > 621
  EXIT SUB
  secondprise = 0
  asteroid = 0
END IF
secondprise = secondprise + 1
LOOP
EXIT SUB
222 X(I) = 640
Y(I) = INT(RND * 480 + 1)
RETURN
333 X1(I) = 1
Y1(I) = INT(RND * 480 + 1)
RETURN
END SUB

           'Single pixel scroller (By Martin Linde)
SUB PixelScroll (Text$, Col%, NewY%)

    DIM Move(1277)
    DIM Temp(20)

    Temp = 255 - Col
    PALETTE Temp, 0
    COLOR Temp: PRINT Text$
  
    Tmp2 = 1
    FOR X = 0 TO LEN(Text$) * 8
        IF X > 319 * Tmp2 THEN Tmp = Tmp + 7: Tmp2 = Tmp2 + 1
       
        GET (X, 0 + Tmp)-(X, 7 + Tmp), Temp
        PUT (319, NewY), Temp, PRESET

        GET (2, NewY)-(320, NewY + 7), Move
        PUT (1, NewY), Move, PSET
    NEXT X

    FOR X = 1 TO 320
        GET (2, NewY)-(320, NewY + 7), Move
        PUT (1, NewY), Move, PSET
    NEXT
    SCREEN 0: SCREEN 13

END SUB

           'Shareware sub, don't send money, because I'm not planning on
SUB r1     'making a full version
CLS
LOCATE 3, 7
COLOR 11
PRINT "This is only the shareware version of The Dark Star Project. If you"
LOCATE 4, 7
PRINT "would like to receive the other five characters and the .wav file sound"
LOCATE 5, 7
PRINT "track, send $20 to the following address:"
LOCATE 7, 15
COLOR 10
PRINT "Adam Dalke"
LOCATE 8, 15
PRINT "21018-84th Ave. W"
LOCATE 9, 15
PRINT "Edmonds, WA 98026"
LOCATE 11, 7
COLOR 12
PRINT "U.S. CURRENCY ONLY, PLEASE!"
SLEEP
CALL cycledown 'CALL the change-all-colors-to-black subprogram
END SUB

               'the Enterprise explode subprogram
SUB shipexplode
CLS
CALL stars 'CALL the subprogram for the starry background
PUT (200, 200), trek% 'unload the DIMmed graphics array at the proper x,y
FOR f = 1 TO 50       'position
q = INT(RND * 200 + 200)
j = INT(RND * 35) + 200
FOR h = 1 TO 10
CIRCLE (q, j), h, 12
CIRCLE (q + 1, j), h, 12
NEXT h
SOUND 40, 3
FOR h = 1 TO 10
CIRCLE (q, j), h, 0
NEXT h
FOR h = 1 TO 10
CIRCLE (q + 1, j), h, 0
NEXT h
SOUND 0, 3
NEXT f
DO
LOCATE 16, 25
COLOR RND * 10
PRINT "Game Over. You lose. Have a nice day."
LOOP UNTIL INKEY$ <> ""

END SUB

SUB stars 'the subprogram for the starry background
I = 0
DO
X = INT(RND * 640 + 1)
Y = INT(RND * 480 + 1)
COLOR 15
PSET (X, Y)
COLOR 7
PSET (X - 1, Y)
PSET (X + 1, Y)
PSET (X, Y - 1)
PSET (X, Y + 1)
COLOR 8
PSET (X - 2, Y)
PSET (X + 2, Y)
PSET (X, Y - 2)
PSET (X, Y + 2)
I = I + 1
LOOP UNTIL I = 20
       


COLOR 8
I = 0
DO
X = INT(RND * 640 + 1)
Y = INT(RND * 480 + 1)
PSET (X, Y)
I = I + 1
LOOP UNTIL I = 180

COLOR 15
I = 0
DO
X = INT(RND * 640 + 1)
Y = INT(RND * 480 + 1)
PSET (X, Y)
I = I + 1
LOOP UNTIL I = 90

COLOR 7
I = 0
DO
X = INT(RND * 640 + 1)
Y = INT(RND * 480 + 1)
PSET (X, Y)
I = I + 1
LOOP UNTIL I = 150


END SUB

SUB warp 'the warp effect sub
N = 150
DIM Y(N)
DIM X(N)
DIM s(N)
DIM c(N)
DIM X1(N)
DIM Y1(N)
DIM c1(N)
DIM s1(N)
RANDOMIZE TIMER
CLS
FOR I = 1 TO N
X(I) = INT(RND * 640 + 1)
Y(I) = INT(RND * 480 + 1)
s(I) = INT(RND * 5 + 1)
s1(I) = INT(RND * 5 + 1)
X1(I) = INT(RND * 640 + 1)
Y1(I) = INT(RND * 480 + 1)
IF s1(I) <= 3 THEN c1(I) = 8
IF s1(I) = 4 THEN c1(I) = 7
IF s1(I) = 5 THEN c1(I) = 15
IF s(I) <= 3 THEN c(I) = 8
IF s(I) = 4 THEN c(I) = 7
IF s(I) = 5 THEN c(I) = 15
NEXT I
secondprise = 1
DO
FOR I = 1 TO N
PSET (X(I), Y(I)), 0
PSET (X1(I), Y1(I)), 0
X(I) = X(I) - s(I)
X1(I) = X1(I) - s1(I)
IF X(I) <= 1 THEN GOSUB 22
IF X1(I) >= 640 THEN GOSUB 33
PSET (X(I), Y(I)), c(I)
PSET (X1(I), Y1(I)), c1(I)
NEXT I
IF secondprise > 425 THEN
LINE (secondprise - 22, 200)-(secondprise + 212, 236), 0, BF
LINE (630, 147)-(630, 257), 11
LINE (secondprise - 223, 207)-(640, 207), 11
SLEEP 1
LINE (630, 147)-(630, 257), 0
LINE (177, 207)-(640, 207), 0
EXIT SUB
END IF
IF secondprise < 100 THEN
LINE (secondprise - 1, 200)-(secondprise + 212, 236), 0, BF
PUT (secondprise, 200), trek%  'unload the DIMmed graphics array at the proper
speed = 1                      'x,y position
secondprise = secondprise + speed
END IF
IF secondprise >= 100 THEN
LINE (secondprise - 2, 200)-(secondprise + 212, 236), 0, BF
PUT (secondprise, 200), trek2% 'unload the DIMmed graphics array at the proper
speed = 2                      'x,y position
secondprise = secondprise + speed
END IF
IF secondprise = 200 THEN warped = 1
IF warped = 1 THEN
LINE (secondprise - 22, 200)-(secondprise + 212, 236), 0, BF
PUT (secondprise, 200), trek3% 'unload the DIMmed graphics array at the proper
LINE (secondprise + 1, 207)-(secondprise - 23, 207), 11 'x,y position
speed = 20
secondprise = secondprise + speed
END IF
LOOP
22 X(I) = 640
Y(I) = INT(RND * 480 + 1)
RETURN
33 X1(I) = 1
Y1(I) = INT(RND * 480 + 1)
RETURN
END SUB
