2 PI = 3.14159265358979 : BACKSPACE$ = "": CL$ = "": ENTER$ = "" : HOME$ = "" : LE$ = "": ND$ = "": UP$ = "" 10 goto 10000 99 rem SECTOR 100 if d[2] = 0 then pp = 0: return 103 pp = 1: if n1 < l1 then return 105 if n1 > l2 then return 110 if n2 < l3 then return 115 if n2 > l4 then return 120 pp = 0: return 130 gosub 100: if pp then return 140 w9 = s[n1 * 8 + int(n2 / 2)] + 1: if w9 < 1 then w9 = 0 150 tc = c[w9] 160 poke vd + 40 * n1 + n2, tc: return 170 gosub 100: if pp then return 175 poke vd + 40 * n1 + n2, 155: return 180 for w8 = 0 to pm: music ">b0r<": next: return 190 gosub 100: if pp then return 195 if tc > 192 gosub 180 200 goto 160 210 n1 = w1: n2 = 2 * w2: gosub 100: if pp then return 220 tc = 90: gosub 160: gosub 180: goto 140 230 n1 = s1: n2 = 2 * s2: goto 175 240 n1 = s1: n2 = s2 * 2: tc = c[2]: goto 160 250 gosub 100: if pp then return 260 if n2 - int(n2 / 2) * 2 then tc = is: goto 160 265 goto 140 299 rem MOVING 300 n1 = o1: n2 = 2 * o2: c1 = n1: c2 = n2: s4 = o3: s5 = o3 305 c3 = -cos(c / 180 * PI) / 2 * 0.9999: c4 = sin(c / 180 * PI) * 0.9999 310 for i = 1 to r: c1 = c1 + c3: c2 = c2 + c4: n7 = int(c1 + 0.5): n8 = int(c2 + 0.5) 315 if (n1 = n7) and (n2 = n8) then next: goto 365 320 if p1 gosub 250 330 if (n7 < 0) or (n7 > 7) or (n8 < 0) or (n8 > 14) goto 375 340 n1 = n7: n2 = n8: s4 = int(n7 * 8 + c2 / 2 + 0.5): if s4 = s5 goto 350 343 w1 = s[s4]: if w1 then 380 347 s5 = s4 350 if p1 then tc = tt: gosub 190 360 next 365 if p1 then if n2 - int(n2 / 2) * 2 gosub 250 370 r1 = 0: r = 0: return 375 w9 = i: i = r: next: r1 = 4: r = r - w9 - 1: return 380 w9 = i: i = r: next: r1 = w1: if w1 < 0 then r1 = -1 385 r = r - w9: return 400 w9 = -180 * (w1 > 0): if w2 then w9 = 90 - (atn(-w1 / w2) / PI + (w2 < 0)) * 180 + 0.5 405 w1 = int(sqr(w1 * w1 + w2 * w2) + 0.5): w2 = int(w9): return 410 if k = 0 then return 420 k4 = 1 - k4: for o3 = 0 to 63: if s[o3] >= 0 then next: return 430 w3 = -s[o3]: gosub 650: if (v1 < 40) + (v1 - int(v1 / 2) * 2 = k4) then next: return 440 o1 = int(o3 / 8): o2 = o3 - o1 * 8: w1 = o1 - s1: w2 = o2 - s2: gosub 400 450 if v1 > fnr(400) goto 456 452 if k > fnr(3) then next: return 454 goto 460 456 if k < fnr(8) then next: return 458 w2 = w2 + 180 460 w2 = w2 + fnr(91) + fnr(91) - 90: c = w2: r = 2: p1 = 0: gosub 300 463 if (r1 <> 0) and (r1 <> 4) then next: return 465 if r1 = 4 gosub 500: if (abs(q[q6]) >= 1900) or (v3 > 0) then next: return 470 s[o3] = 0: n1 = o1: n2 = 2 * o2: gosub 130 480 if r1 = 0 goto 490 483 q[q3] = q[q3] - 100: k = k - 1: gosub 2000: q[q6] = q[q6] + 100 * sgn(q[q6]) 485 if n6 = 0 gosub 1840: if d[3] = 0 then w1 = q6: gosub 1800 487 next: return 490 v1 = v1 - 19: i = s5: gosub 660: n1 = int(s5 / 8): n2 = (s5 - n1 * 8) * 2: gosub 130: next :return 500 w7 = (q1 + (n7 < 0) - (n7 > 7) + 8): w8 = w7 - int(w7 / 8) * 8 505 w7 = (q2 + (n8 < 0) - (n8 > 14) + 8): w9 = w7 - int(w7 / 8) * 8: q6 = w8 * 8 + w9: return 520 s[s3] = 0: o1 = s1: o2 = s2: o3 = s3: tt = c[2]: p1 = 1: gosub 300 525 on r1 + 2 goto 530, 555, 1, 570, 540, 580 530 a$ = k$: goto 550 540 a$ = s$ 550 w1 = int(s4 / 8): w2 = s4 - w1 * 8: print "STOPPED BY "; : gosub 1035: gosub 1140 555 s3 = s5 560 s1 = int(s3 / 8): s2 = s3 - s1 * 8: s[s3] = 1: if d[2] then 1600 565 goto 240 570 s3 = s4: gosub 560: q[q3] = q[q3] - 10: b9 = b9 - 1: b = b - 1: goto 1840 580 w1 = q3: gosub 1800: gosub 500: q3 = q6: w8 = n7 + 8 - int((n7 + 8) / 8) * 8 582 w9 = int((n8 + 15 - int((n8 + 15) / 15) * 15) / 2): s3 = w8 * 8 + w9: gosub 1740: gosub 1600 585 gosub 2000: if r > 0 goto 520 587 r1 = 0: return 590 if (a1 = 0) or (e - e1 < 30) then return 595 w1 = v5 - s1: w2 = v6 - s2: gosub 400 600 c = w2: r = 2: gosub 520: a1 = (v5 <> s1) or (v6 <> s2): e = e - 30: goto 1325 649 rem: k$ = "KLINGON": goto 3999 650 v2 = int(w3 / 10000): v3 = int((w3 - 10000 * v2) / 1000): v1 = w3 - (v2 * 10 + v3) * 1000: return 660 if (v1 <= 20) and (v3 > 0) then v3 = v3 - 1: v1 = v1 + ep - 100 670 s[i] = -v1 - 1000 * v3 - 10000 * v2: return 680 a$ = k$: k = k - 1: k9 = k9 - 1: w3 = 100: goto 760 690 v1 = v1 - h: if v1 <= 0 goto 680 695 gosub 1040: goto 660 700 for w9 = 0 to 63: if s[w9] < 0 then s[w9] = s[w9] + int(-s[w9] / 10000) * 10000 710 next: return 720 at = 0: for i = 0 to 63: if int(-s[i] / 10000) <> d1 - 3 goto 740 730 at = at + 1: if at = 1 then print d$[d1]; "S LOCKED ON": gosub 1140 735 w1 = int(i / 8): w2 = i - w1 * 8: gosub 1000: print " "; 740 next: if at = 0 then print d$[d1]; "S NOT LOCKED" 745 goto 1140 749 rem WEAPON 750 pm = 10: gosub 210: print d$[5]; " HIT ON "; : gosub 1035: goto 1140 760 s[i] = 0: q[q3] = q[q3] - w3: gosub 1050: gosub 130: gosub 2000: if n6 then return 765 goto 1840 770 r = 30: p1 = 1: pm = 2: if (c > 30) and (c < 150) then tt = 195: goto 778 772 if (c >= 150) and (c <= 210) then tt = 193: goto 778 774 if (c > 210) and (c < 330) then tt =196: goto 778 776 tt = 194 778 gosub 300: i = s4: w1 = int(i / 8): w2 = i - w1 * 8: on r1 + 2 goto 780, 1, 790, 800, 810, 820 780 a$ = k$: gosub 750: w3 = -s[i]: gosub 650: h = ep: goto 690 790 a$ = e$: gosub 750: h = ep: goto 1430 800 a$ = b$: gosub 750: b9 = b9 - 1: b = b - 1: w3 = 10: goto 760 810 a$ = s$: gosub 750: w3 = 1: goto 760 820 print "MISSED!!": goto 1140 830 w8 = w5 - s1: w9 = w6 - s2: w7 = w8 * w8 + w9 * w9: h = h1: if w7 > 9 then h = int(9 * h1 / w7) 840 pm = int(h / 25): ps = 5: gosub 210: goto 1020 850 if k = 0 then return 860 for o3 = 0 to 63: w3 = -s[o3]: if w3 <= 0 then next: goto 935 870 gosub 650: o1 = int(o3 / 8): o2 = o3 - o1 * 8: if w3 = s9 goto 920 880 w1 = s7 - o1: w2 = s8 - o2: gosub 400: rr = w1: if rr < fnr(4) goto 920 885 if v3 = 0 goto 910 890 k2 = s[s6]: s[s6] = 1: c = w2: r = 30: p1 = 0: gosub 300: s[s6] = k2: if r1 = -1 goto 910 895 if r1 = 3 then if (fnr(100) < v1) or (v3 < 2) goto 910 900 w1 = o1: w2 = o2: print "< "; : gosub 1030: gosub 1110: v3 = v3 - 1: v1 = v1 - 20: i = o3 905 gosub 660: gosub 770: next: goto 935 910 if rr > 6 + fnr(2) then next: goto 935 920 h1 = int((20 - v1) * (v1 >= 20) * rnd(1) / 2): if h1 <= 0 goto 930 922 n1 = o1: n2 = 2 * o2: gosub 170: v1 = v1 - h1: i = o3: gosub 660: w1 = s1: w2 = s2: w5 = o1: w6 = o2 924 gosub 830: print e$: gosub 1140: print "FROM "; : w1 = o1: w2 = o2: gosub 1030: gosub 1140 926 gosub 1430: n1 = o1: n2 = 2 * o2: gosub 130 930 next 935 s6 = s3: s7 = s1: s8 = s2: return 940 print "< "; e$; : gosub 1110: p = p - 1: gosub 2000: o1 = s1: o2 = s2: o3 = s3: goto 770 950 if h1 <= 0 goto 2000 955 for i = 0 to 63: w3 = -s[i]: if w3 <= 0 then next: goto 2000 960 gosub 650: if (v2 <> 1) and (at > 0) then next: goto 2000 970 e = e - h1: gosub 230: w1 = int(i / 8): w2 = i - w1 * 8: w5 = w1: w6 = w2: gosub 830: gosub 1030 975 gosub 1140: gosub 690: gosub 240: next: goto 2000 999 rem OUTPUT TOOLS 1000 print str$(w1 + 1); "-"; str$(w2 + 1); : return 1020 print h; " UNIT HIT ON "; : return 1030 a$ = k$ 1035 print a$; " AT "; : goto 1000 1040 print "("; v1; " LEFT )": goto 1140 1050 print a$; " DESTROYED!!": goto 1140 1060 print "NOT ENOUGH ENERGY"; : music ">c2<": goto 1140 1070 a$ = "> NO " + k$ + "S <" 1075 print spc((39 - len(a$)) / 2); a$: goto 1140 1080 print "[ DATA ERROR! ]": music "b1rbrbrb": goto 1140 1110 print " FIRING "; d$[5]; " >": goto 1140 1120 print "EXCUSE ME SIR, "; : return 1130 gosub 1800: cursor (w1 - int(w1 / 8) * 8) * 5, int(w1 / 8): print "*": return 1140 usr(g1): cursor 0, 13: return 1199 rem DISPLAY AREA 1200 mz = 53248 + (n4 + 1) * 40: my = g0: gosub 8850 1202 mz = mz + 40: gosub 8850 1206 mz = 53808 - mz: gosub 8850 1208 cursor 0, 13: return 1210 if n4 < w1 then n4 = w1 1220 print HOME$; : for w9 = 0 to n4: print spc(39): next: print HOME$; : n4 = w1: return 1230 gosub 1200: cursor 0, n4 + 1: for w9 = n4 + 1 to 13: print spc(39): next: cursor 0, 13: return 1240 cursor 0, n4 - 1: print spc(39): cursor 9, n4 - 1: return 1260 cursor 0, 14: for w9 = 1 to 10: print spc(16): next: print spc(16); : return 1270 cursor 19, 14: for w9 = 1 to 10: print tab(19); spc(20): next 1272 print tab(19); spc(20); : return 1275 poke g0, 48: poke g0 + 1, 210: poke g0 + 2, 88: poke g0 + 3, 210: poke g0 + 4, 114: poke g0 + 5, 1 1277 cursor 0, 14: for w9 = 1 to 10: print spc(39): next: print spc(39); : cursor 0, 14: return 1280 cursor 0, 23: print spc(39); : poke mx, 0: return 1285 cursor 0, n4: print spc(39): print UP$; : return 1299 rem RECOVERY & DAMAGE 1300 d[d1] = 0: print d$[d1]; " REPAIRED!": gosub 1140: if d1 = 2 then 1610 1301 if d1 = 3 goto 1880 1302 return 1305 print "DOCKED!!": gosub 1140: h3 = 0: for d1 = 1 to 7: if d[d1] > h3 then h3 = d[d1] 1307 if d[d1] gosub 1300 1310 next: if d[9] then d[9] = 0: print dc$; " INSTALLED!!": gosub 1140 1313 print e$; " ENERGIZED!!": gosub 1140 1315 h3 = int(h3 / 10): h4 = int((eb - e - p * 500) / 1000): if h3 < h4 then t = t + h4 / 100: goto 1320 1317 t = t + h3 / 100 1320 e = e0: p = p0: e1 = int(e / 100 * e2 + 0.5): r1 = 0: return 1325 t3 = 1 1330 if t3 = 0 then 1380 1335 if d[9] = 0 then e = e + 50 * t3 1340 if e > eb - ep * p then e = eb - ep * p 1350 for w9 = 1 to t3: e1 = e1 + int((e * e2 / 100 - e1) / 4): next: t = t + t3 / 100: gosub 2000 1355 if fnr(200) < t3 then gosub 1420 1360 for d1 = 1 to 7: if d[d1] then d[d1] = d[d1] - t3: if d[d1] < 1 gosub 1300 1370 next: d1 = fnr(7) + 1: if (fnr(100) > 25) or (d[d1] = 0) goto 1380 1375 print "*** SPOCK USED A NEW REPAIR TECHNIQUE **": gosub 1140: gosub 1300 1380 if r1 = 2 then gosub 1305: goto 2000 1385 return 1420 gosub 40000: print "SPACE STORM!!": gosub 1140: h = 0: if lf = 0 then h = 200 + fnr(400) 1425 gosub 1020: print e$: gosub 1140: if h = 0 then return 1430 e = e - h: e1 = e1 = h: if e1 < 0 then e1 = 0 1440 gosub 2000: if fnr(int(h / 10)) * fnr(20) < e1 then return 1450 d1 = fnr(8 - (d[9] = 0)) + 1: h = 5 + fnr(30) 1455 ds = d[d1]: on d1 goto 1460, 1480, 1460, 1460, 1460, 1460, 1457, 1490, 1520 1457 if ds = 0 then gosub 700: if r1 then a1 = 0: gosub 2000 1460 d[d1] = ds + h 1465 tb = len(d$[d1]) + 1 1470 gosub 1475: goto 1140 1475 print d$[d1]; tab(tb); "DAMAGED"; : mz = d[d1] / 100: gosub 8410 1477 print " YRS TO REPAIR": return 1480 gosub 1460: if ds then return 1485 goto 1610 1490 a$ = d$[8]: gosub 1050: for w9 = 0 to 63: q[w9] = -abs(q[w9]): next: gosub 1805: goto 1880 1520 d[9] = -1: a$ = dc$: goto 1050 1599 rem : print "QUADRANT "; : return 1600 gosub 1260: cursor 1, 23: print "1 2 3 4 5 6 7 8"; UP$: w$ = qm$[int(q1 / 2), int(q2 / 2)] 1603 w$ = w$ + " " + qn$[q1 - int(q1 / 2) * 2, q2 - int(q2 / 2) * 2] 1605 cursor int((18 - len(w$)) / 2), 14: print w$ 1607 cursor 3, 24: gosub 1599: w1 = q1: w2 = q2: gosub 1000 1610 for w9 = 1 to 8: cursor 0, 14 + w9: print spc(16); str$(w9); : next: if d[2] goto 1650 1615 l1 = 0: l2 = 7: l3 = 0: l4 = 14 1620 for w8 = 0 to 7: cursor 1, 15 + w8: for w7 = 0 to 7: w9 = s[w8 * 8 + w7] + 1: if w9 < 1 then w9 = 0 1630 ww = vd + 40 * w8 + w7 * 2: poke ww, c[w9]: if w7 <> 7 then poke ww + 1, is 1640 next: next: goto 1200 1650 l1 = s1 - 1: if l1 < 0 then l1 = 0 1655 l2 = s1 + 1: if l2 > 7 then l2 = 7 1660 l3 = 2 * s2 - 2: l4 = l3 + 4: if l3 < 0 then l3 = 0 1665 if l4 > 14 then l4 = 14 1670 for n1 = l1 to l2: for n2 = l3 to l4: gosub 260 1680 next: next: goto 1200 1710 if w1 <= 0 then return 1715 for w9 = 1 to w1 1720 w8 = fnr(64): if s[w8] then 1720 1730 s[w8] = w2: next: return 1740 q1 = int(q3 / 8): q2 = q3 - q1 * 8: gosub 1880: w3 = q[q3] - int(q[q3] / 1000) * 1000 1750 k = int(w3 / 100): b = int(w3 / 10) - k * 10: for w9 = 0 to 63: s[w9] = 0: next: s1 = int (s3 / 8) 1760 s2 = s3 - s1 * 8: s[s3] = 1: w1 = b: w2 = 2: gosub 1710: w1 = k: w2 = -s9: gosub 1710 1770 w1 = w3 - int(w3 / 10) * 10: w2 = 3: gosub 1710: s6 = s6: s7 = s1: s8 = s2: return 1799 rem UNIVERSE 1800 cursor (w1 - int(w1 / 8) * 8) * 5, int(w1 / 8) 1802 print right$(" " + str$(q[w1] - 1000), 4); : return 1805 if n6 then return 1807 print HOME$; : for w9 = 0 to 7: print " : : : : : : :": next 1808 return 1810 w1 = 8: gosub 1210: n6 = 0: gosub 1805 1820 for w1 = 0 to 63: if q[w1] >= 0 then gosub 1800 1830 next 1840 if n6 then return 1845 w1 = q3: gosub 1130: goto 1200 1850 for w9 = 0 to 63: s[w9] = 0: next: w1 = b9: w2 = 10: gosub 1710 1855 for w8 = 1 to k9: if w8 > 1 then if fnr(900) > s[w9] then 1870 1860 w9 = fnr(64): if (s[w9] = 10) or (s[w9] > 800) goto 1860 1870 s[w9] = s[w9] + 100: next: for w8 = 0 to 63: q[w8] = -s[w8] - 2 - fnr(4) - fnr(4) - 1000: next 1875 q3 = fnr(64): q1 = int(q3 / 8): q2 = q3 - q1 * 8: s3 = fnr(64): return 1880 q[q3] = abs(q[q3]): gosub 1840: if d[3] then return 1885 for w8 = q1 - 1 to q1 + 1: for w9 = q2 - 1 to q2 + 1 1890 w1 = (w8 + 8 - int(w8 / 8 + 1) * 8) * 8 + w9 + 8 - int(w9 / 8 + 1) * 8: if w1 = q3 goto 1897 1895 q[w1] = abs(q[w1]): if n6 = 0 gosub 1800 1897 next: next: cursor 0, 13: return 1998 rem MAIN CONTROL 1999 rem DISPLAY STATUS 2000 if n5 gosub 1270 2010 cursor 19, 14: print "SECTOR"; spc(10); : w1 = s1: w2 = s2: gosub 1000: cursor 19,15 2012 print "YEARS"; spc(9); : mz = t9 - t: gosub 8410: cursor 19, 16: a$ = " " 2014 mz = t: gosub 8400 2020 cursor 19, 17: print "CONDITION"; : if k > 0 then print " RED ": w9 = 3: goto 2030 2025 if (e1 < e0 / 10) or (e - e1 < e0 / 10) then print " YELLOW ": w9 = 2: goto 2030 2027 print ":::GREEN::": w9 = 1 2030 for w8 = 1 to w9: music ">f0r<": next 2035 cursor 19, 18: print "SHIELDS"; spc(9); right$(" " + str$(e2), 2); "%" 2037 cursor 19, 19: gosub 2999: print right$(" " + str$(e1), 5) 2040 cursor 19, 20: print "AVAIL ENERGY "; right$(" " + str$(int(e - e1)), 5) 2042 cursor 19, 21: print d$[5]; "S"; spc(9); right$(" " + str$(p), 2) 2044 cursor 19, 22: print k$; "S"; spc(8); right$(" " + str$(k9), 3) 2046 cursor 19, 23: print b$; "S"; spc(12); right$(" " + str$(b9), 2); 2048 cursor 19, 24: print "COURSE "; 2050 if a1 then print "SET FOR "; : w1 = v5: w2 = v6: gosub 1000: goto 2060 2055 print "NOT SET "; 2060 n5 = 0: goto 1200 2099 rem COMMAND MENU 2100 if n5 = 1 then return 2105 gosub 1270 2110 for w9 = 1 to 9: cursor 18, 14 + w9: print w9; " "; 2115 on w9 goto 2499, 2130, 3499, 2150, 2150, 2160, 2160, 5999, 2180 2130 gosub 2999: next 2150 print d$[w9]; "S": next 2160 print d$[w9]: next 2180 print sd$: next: n5 = 1: goto 1200 2199 rem: print " INSTRUCTION?"; : return 2200 if n5 = 2 then return 2205 gosub 1270 2210 for w9 = 0 to 6: cursor 18, 14 + w9: print w9; "*"; 2215 on w9 + 1 goto 2220, 2230, 2240, 2250, 2260, 2260, 2270 2220 print "RETURN": w$ = "COMPUTE ": next 2230 print w$; : gosub 1599: next 2240 print w$; "TRAJECTORY": next 2250 print w$; "ENERGY": w$ = "LOCK ": next 2260 print w$; d$[w9]; "S": next 2270 print w$; "COURSE": next: n5 = 2: goto 1200 2300 gosub 410: gosub 590: goto 850 2400 if f1 then r1 = 0: t3 = 1: goto 1330 2405 return 2499 rem: print "NAVIGATION": next 2500 if n6 then gosub 1810 2505 if e - e1 < 40 goto 1060 2510 if (d[1]) + (e - e1 < 100) then print im$; " DRIVE ONLY": gosub 1140: goto 2590 2520 print "WARP OR "; im$; " DRIVE (W OR I)?"; : gosub 8200 2522 if kb$ = "I" goto 2590 2524 if (kb$ = "W") = 0 then return 2530 print "WARP FACTOR (0"; : if e - e1 < 112 goto 2533 2531 print " ONLY)?"; : w8 = 0: goto 2535 2533 w8 = int(((e - e1 - 100) / 12) ^ (1 / 3)): if w8 > 9 then w8 = 9 2534 print "-"; str$(w8); ")?"; 2535 gosub 8220: if (ib < 0) or (ib > w8) then return 2536 r0 = ib: if r0 > 0 then goto 2540 2537 a1 = 0: gosub 410: r1 = 0: s[s3] = 0: n1 = s1: n2 = s2 * 2: gosub 130: s3 = fnr(64) 2538 if s[s3] then gosub 2640: w1 = q3: gosub 1800: goto 2570 2539 gosub 560: goto 2580 2540 gosub 8100: if cc < 0 then return 2545 a1 = 0: gosub 410: c = cc 2550 w7 = int(q1 - r0 * cos(c / 180 * PI) + 8.5): w8 = w7 - int(w7 / 8) * 8 2552 w7 = int(q2 + r0 * sin(c / 180 * PI) + 8.5): w9 = w7 - int(w7 / 8) * 8 2555 q7 = w8 * 8 + w9: r = 6: gosub 520: if r1 then r0 = 6: goto 2620 2560 if q7 = q3 goto 2580 2565 s[s3] = 0: n1 = s1: n2 = s2 * 2: gosub 130: w1 = q3: gosub 1800: if r0 > fnr(25) then gosub 2640 2570 q3 = q7: s3 = fnr(64): gosub 1740: gosub 1600: gosub 2000 2580 e = e - 12 * r0 ^ 3 - 100: t3 = 10: gosub 1330: if k = 0 then return 2585 gosub 850: goto 1325 2590 w8 = int((e - e1) / 20) - 1: if w8 > 9 then w8 = 9 2594 print "DURATION (1"; : if e - e1 < 60 then print " ONLY)?"; : goto 2598 2596 print "-"; str$(w8); ")?"; 2598 gosub 8220: if (ib < 1) or (ib > w8) then return 2600 r0 = 2 * ib: gosub 8100: if cc < 0 then return 2610 a1 = 0: gosub 410: c = cc: r = r0: gosub 520 2620 t3 = int((r0 - r) / 2): e = e - 20 * t3 - 10: gosub 1330: if k > 0 goto 2585 2630 return 2640 gosub 40000: cursor 0, 13: print "TRAPPED IN WORM HOLE!!": gosub 1140 2650 q7 = fnr(64): return 2999 rem: print "SHIELD ENERGY "; : return 3000 print "SET SHIELD ENERGY %?"; : gosub 8210: if (ib < 1) or (ib > 100) then return 3003 if ib <> 100 goto 3020 3005 if e - e1 < 90 goto 1060 3007 print fd$; " READY": gosub 1140: print "HOW MANY YRS. (0.01-0.99)? 0.??"; LE$; LE$; 3010 gosub 8210: if (ib < 1) or (ib > 99) then return 3013 t5 = ib: print "< "; fd$; " ACTIVATED >": gosub 1140: e = int(e - 90): lf = 1: t3 =10 3015 for t4 = 0 to t5 / 10: gosub 410: if t5 - t4 * 10 < 10 then t3 = t5 - t4 * 10 3017 gosub 1330: next: lf = 0: return 3020 e2 = ib: print "QUICK PARTITIONING?"; : gosub 8200: if (kb$ = "Y") = 0 goto 2000 3025 e = int(e * 0.8): e1 = int(e * e2 / 100): goto 2000 3499 rem: print "DAMAGE RPT": next 3500 w1 = 7: if d[9] then w1 = 8 3510 gosub 1210: n6 = 1: w3 = 0: tb = 13: for d1 = 1 to 7: print str$(d1); " "; 3513 if d[d1] then w3 = w3 + 1: gosub 1475: goto 3520 3515 print d$[d1]; tab(tb); "OK" 3520 next: if d[9] then print "* "; dc$; " DESTROYED" 3530 gosub 1200: if (w3 = 0) or (w3 = 7) then return 3550 print "FUNCTIONAL UNITS MOVING": gosub 1140: print "ATTACH TO (1 - 7)?"; 3553 gosub 8220: if (ib < 1) or (ib > 7) then return 3555 if d[ib] = 0 goto 1080 3560 d2 = ib: print "DETACH FROM (1-7)?"; : gosub 8220: if (ib < 1) or (ib > 7) then return 3565 if d[ib] goto 1080 3570 d1 = ib: h = int(d[d2] * 1.5): gosub 1455: d1 = d2: goto 1300 3999 rem: d$[4] = "PHASER": goto 4499 4000 d1 = 4: if d[4] goto 1465 4005 if k = 0 goto 1070 4010 gosub 710: if at gosub 8120: if at < 0 then return 4020 print d$[4]; "S READY: ENERGY TO FIRE?"; : gosub 8210: if ib <= 0 then return 4025 if e - e1 < ib gosub 1120: print "WE ONLY HAVE"; int(e - e1); "."; : gosub 1140: goto 4020 4030 h2 = ib: if at = 0 then h1 = int(h2 / k): gosub 950: gosub 2300: goto 1325 4040 k1 = at: gosub 2300: d1 = 4: if d[4] goto 1465 4043 if k = 0 goto 1070 4045 gosub 720: if at = 0 goto 1325 4047 if e - e1 < h2 then h2 = e - e1 4050 h1 = int(h2 / k1): gosub 950: goto 1325 4499 rem: d$[5] = "PH TORP": goto 4999 4500 d1 = 5: if d[5] goto 1465 4505 if e - e1 < 20 goto 1060 4510 gosub 720: if at then gosub 8120: if at < 0 then return 4520 if (p < at) or (p = 0) gosub 1120: print "WE HAVE"; p; " LEFT.": gosub 1140: return 4530 if at <> 0 goto 4540 4533 a$ = "TRAJECTORY?": gosub 8105: if cc< 0 then return 4535 e = e - 20: c = cc: gosub 940: gosub 2300: goto 1325 4540 gosub 2300: d1 = 5: if d[5] goto 1465 4542 if e - e1 < 20 goto 1060 4544 gosub 720: if at = 0 goto 1325 4546 e = e - 20: for j = 0 to 63: w9 = -s[j]: if w9 <= 0 then next: goto 1325 4548 if int(w9 / 10000) <> 2 then next: goto 1325 4550 w1 = int(j / 8) - s1: w2 = j - int(j / 8) * 8 - s2: gosub 400: c = w2: gosub 940: next: goto 1325 4999 rem: d$[6] = "PROBE": goto 5499 5000 d1 = 6: if d[6] goto 1465 5003 if e - e1 < 30 goto 1060 5005 e = e - 30: if k = 0 goto 1070 5010 w1 = k + 1: gosub 1210: n6 = 2: print "COORD ENERGY "; right$(d$[5], 4); "S LOCK" 5020 for i = 0 to 63: w3 = -s[i]: if w3 <= 0 then next: goto 2000 5023 w1 = int(i / 8): w2 = i - w1 * 8: print " "; : gosub 1000: gosub 650 5025 print spc(6); right$(" " + str$(v1), 3); spc(5); str$(v3); : if v2 = 0 then print 5027 if v2 then print spc(5); d$[v2 + 3] 5030 next: goto 2000 5499 rem: d$[7] = "COMPUTER": goto 6499 5500 d1 = 7: if d[7] goto 1465 5503 if e - e1 < 20 goto 1060 5505 e = e - 20: n4 = n4 + 1: gosub 1230: gosub 1285 5507 a$ = "**** " + z$ + " HERE ****": gosub 1075 5510 gosub 2220 5513 print "WHAT IS YOUR"; : gosub 2199: gosub 8080 5515 if (ib < 0) or (ib > 6) goto 5510 5517 if n5 gosub 2000 5520 if ib = 0 then n4 = n4 - 1: goto 1230 5523 if e - e1 < 10 gosub 1060: goto 5513 5525 on ib gosub 5530, 5540, 5550, 5560, 5560, 5580: goto 5513 5530 print "QUADRANT "; : gosub 8040: if w2 < 0 then return 5532 w9 = w1 - q1 + 12: w1 = w9 - int(w9 / 8) * 8 - 4: w9 = w2 - q2 + 12: w2 = int(w9 / 8) * 8 - 4 5534 gosub 400: gosub 1240: print "COURSE -"; w2; " WARP -"; w1: goto 5585 5540 print "SECTOR "; : gosub 8040: if w2 < 0 then return 5542 w1 = w1 - s2: w2 = w2 - s2: gosub 400: gosub 1240 5544 print "TRAJECTORY -"; w2; " RANGE -"; w2: goto 5585 5550 print "TARGET "; : gosub 8040: if w2 < 0 then return 5552 w1 = w1 - s1: w2 = w2 - s2: w1 = w1 * w1 + w2 * w2: print "EFFECTIVE ENERGY?"; 5554 gosub 8210: if ib <= 0 then return 5556 w2 = ib: if w1 > 9 then w2 = int(ib / 9 * w1 + 0.9) 5558 gosub 1240: print "ABSOLUTE ENERGY -"; w2: goto 5585 5560 w4 = ib - 3: print d$[ib]; "S: LOCK OR UNLOCK (L OR U)?"; : gosub 8200 5562 if kb$ = "U" then w4 = -w4: goto 5566 5564 if (kb$ = "L") = 0 then return 5566 print k$; " "; : gosub 8040: if w1 < 0 goto 5585 5568 if w2 >=0 then i = w1 * 8 + w2: w3 = -s[i]: if w3 > 0 gosub 650: goto 5572 5570 gosub 1080: goto 5566 5572 if (w4 > 0) and (v2 <> w4) then v2 = w4: gosub 660: goto 5566 5574 if (w4 < 0) and (v2 = -w4) then v2 = 0: gosub 660: goto 5566 5576 goto 5570 5580 print "DESTINATION "; : gosub 8040: if (w1 < 0) or (w2 < 0) then return 5581 if (w1 = s1) and (w2 = s2) then a1 = 0: goto 5585 5583 v5 = w1: v6 = w2: a1 = 1 5585 e = e - 10: goto 2000 5999 rem: print "LOAD PH TORPS": next 6000 print "* TO LOAD (+) OR UNLOAD (-)?"; : gosub 8210 6003 if (ib < -p) or (ib > 10 - p) then return 6005 w9 = (ep + 100 * sgn(ib)) * ib: if e - e1 < w9 goto 1060 6007 e = e - w9: p = p + ib: goto 2000 6499 rem: sd$ = "SELF DESTRUCT": return 6500 print "COUNT DOWN STARTED": gosub 1140: w1 = 10: w2 = 6: gosub 6540: gosub 8140 6503 gosub 1140: print sd$; " SEQUENCE "; 6505 if (kb$ = pw$) = 0 then print "CANCELLED": goto 1140 6510 print "CONTINUES": gosub 1140: w1 = 5: w2 = 0: gosub 6540 6520 e1 = 0: if k = 0 gosub 1060: p = 0: goto 6530 6525 e = e + p * ep + 1000 * (1 + d[9]): p = 0: gosub 2000: at = 0: h1 = int(e / k): gosub 950 6530 e = 0: gosub 2000: e = -eb: f1 = 0: return 6540 for w0 = w1 to w2 step -1: print w9; " "; : music ">b1r5<": next: goto 1140 6599 rem ENDING 6600 if e >= 0 goto 6620 6610 poke g0 + 8, 0: usr(g3): for w9 = 1 to 100: music ">c0c<": next 6620 cursor 0, 24: for w9 = 0 to 24: print: next: return 6999 rem MAIN LOOP 7000 usr($3e): print "COMMAND?"; : gosub 8080 7003 if (ib < 1) or (ib > 9) gosub 2100: goto 7000 7006 if n5 gosub 2000 7010 f1 = 0: on ib gosub 2500, 3000, 3500, 4000, 4500, 5000, 5500, 6000, 6500 7013 gosub 2400: if (k9 > 0) and (e > 0) and (t9 > t) goto 7000 7016 goto 6600 7999 rem INPUT TOOLS 8000 on mf goto 8010, 8020 8005 usr(g2): kb$ = chr$(peek(g0 + 7)): print kb$; : return 8010 gosub 8005: if ma > vl then poke 54247, 99: return 8012 if peek(g0 + 7) <> 0 then poke ma, peek(g0 + 7): ma = ma + 1: return 8015 poke ma, 1: ma = ma + 1: return 8020 poke g0 + 6, 1: usr(g2): poke g0 + 6, 0: if peek(g0 + 7) = 0 goto 8023 8021 if peek(g0 + 7) <> 32 then mf = 1 8022 goto 8000 8023 if peek(ma) = 0 then mf = 1: goto 8000 8025 kb$ = chr$(peek(ma)): ma = ma + 1: print kb$; : return 8030 gosub 8000: if kb$ = "" then ib = -1000: return 8035 ib = asc(kb$) - 48: return 8040 w1 = -1: w2 = -1: print "COORDINATE ?- "; LE$; LE$; LE$; 8050 gosub 8030: if (ib < 1) or (ib > 8) then goto 8070 8055 w1 = ib - 1: print ND$; "?"; LE$; : poke 54184, 69: gosub 8030 8060 if (ib > 0) and (ib < 9) then w2 = ib - 1 8070 poke 54184, 80: goto 1140 8080 gosub 8030: print: print UP$; spc(39); : print: print UP$; : fl = 0: return 8100 a$ = "INPUT COURSE?" 8105 print a$; : gosub 8210: cc = ib: if (ib < 0) or (ib > 359) then cc = -1 8110 return 8120 print "AUTO OR MANUAL (A OR M)?"; : gosub 8200 8123 if kb$ = "M" then at = 0: return 8126 if (kb$ = "A") = 0 then at = -1 8130 return 8140 print "ENTER "; sd$; " PASSWORD-"; : goto 8150 8150 on mf goto 8170, 8180 8155 ka$ = "": w9 = 0: w$ = LE$ + " " + LE$ 8160 usr(g2): kb$ = chr$(peek(g0 + 7)): if kb$ = ENTER$ then kb$ = ka$: goto 8188 8163 if (kb$ = BACKSPACE$) and (w9 > 0) then ka$ = left$(ka$, len(ka$) - 1): w9 = w9 - 1: print w$; : goto 8160 8165 if kb$ = "" goto 8160 8167 ka$ = ka$ + kb$: w9 = w9 + 1: print kb$; : goto 8160 8170 gosub 8155: if ma > vl then poke 54247, 99: return 8172 poke ma, w9 + 1: ma = ma + 1: if w9 = 0 then return 8175 for w8 = 1 to w9: poke ma, asc(mid$(kb$, w8, 1)): ma = ma + 1: next: return 8180 poke g0 + 6, 1: usr(g2): poke g0 + 6, 0: if peek(g0 + 7) = 0 goto 8183 8181 if peek(g0 + 7) <> 32 then mf = 1 8182 goto 8150 8183 w9 = peek(ma): if w9 = 0 then mf = 1: goto 8150 8184 ma = ma + 1: w9 = w9 - 1: kb$ = "": if w9 = 0 then return 8186 for w8 = 1 to w9: kb$ = kb$ + chr$(peek(ma)): ma = ma + 1: next: print kb$; 8188 poke $1181, 0: return 8190 gosub 8150: ib = 0: w9 = len(kb$): if w9 = 0then ib = -1000: return 8192 for w8 = 1 to w9: w7 = asc(mid$(kb$, w8, 1)): if (w7 > 47) and (w7 < 58) goto 8196 8194 if (w8 <> 1) + ((w7 <> 43) * (w7 <> 45)) then ib = -1000 8196 next: if ib <> -1000 then ib = val(kb$) 8198 return 8200 gosub 8000: goto 1140 8210 gosub 8190: goto 1140 8220 gosub 8030: goto 1140 8399 rem PRINT NUMBER 8400 print "STARDATE "; a$; : if mz < 0.1 then print " 0.0"; str$(int(mz * 100)); : return 8403 w$ = " " + str$(int(mz * 100)): if mz < 1 then print " 0"; : goto 8407 8405 print right$(left$(w$, len(w$) - 2), 4); 8407 print "."; right$(w$, 2); : return 8410 if mz < 0 then print "-0.0"; str$(int(-mz * 100)); : return 8413 if mz < 1 / 10 then print " 0.0"; str$(int(mz * 100)); : return 8415 w$ = " " + str$(int(mz * 100)): if mz < 1 then print " 0"; : goto 8407 8417 print right$(left$(w$, len(w$) - 2), 2); : goto 8407 8499 rem TITLE 8500 print: print tab(31); "_____" 8510 print " " 8520 print " " 8530 print " " 8540 print " " 8550 print " " 8560 print " " 8570 print " " 8580 print " " 8590 print: print " "; : gosub 50020: goto 1275 8599 rem: print "CAPTAIN'S LOG -"; : return 8600 w8 = int(s9 / 1000) : w9 = w8 * ep + s9 - 1000 * w8 8605 x1 = (w9 / eb * k0 * 100 / 23) ^ 1.1 * (189 / (b0 + 1) / (t9 - t0)) ^ 0.55 * 2.25: gosub 1275 8620 gosub 8599: a$ = "": mz = t0: gosub 8400: print: print 8630 print "WE HAVE BEEN ASSIGNED"; t9 - t0; " YEAR MISSION" 8640 print "TO SEEK AND DESTROY"; k0; " " ; k$; " BATTLE": print "CRUISERS." 8650 print "WE WILL HAVE"; b0; " "; b$; "S AVAILABLE.": print 8660 print "DIFFICULTY=";int(x1): return 8699 rem PARAMETER SET-UP 8700 k0 = 27 + fnr(14) + fnr(14): b0 = 2 + fnr(2) + fnr(2): t9 = 3428: gosub 8600: gosub 1280 8705 print "DIFFERENT SET-UP?"; : gosub 8080: if (kb$ = "Y") = 0 goto 8750 8707 gosub 1275 8710 gosub 1280: print "SET UP YOUR OWN?"; : gosub 8080: if (kb$ = "Y") = 0 goto 8700 8720 gosub 1280: print k$; "S (1-200)"; : gosub 8190: if (ib > 0) and (ib < 201) goto 8725 8722 usr(g1): goto 8720 8725 k0 = ib: usr(g1): goto 8720 8730 gosub 1280: print b$; "S (0-20)"; : gosub 8190: if (ib >= 0) and (ib < 20) goto 8735 8732 usr(g1): goto 8730 8735 b0 = ib: usr(g1): usr(g1) 8740 gosub 1280: print "YEARS (1-20)"; : gosub 8190: if (ib > 0) and (ib < 21) goto 8745 8742 usr(g1): usr(g1): goto 8740 8745 t9 = t0 + ib: gosub 8600 8750 gosub 1280: gosub 8140: pw$ = kb$: goto 1280 8799 rem INITIALIZE VARIABLES 8800 k9 = k0: b9 = b0: t = t0: e2 = t0: a1 = 0: k4 = 0: for w9 = 1 to 9: d[w9] = 0: next 8810 gosub 1320: gosub 1850: n6 = 1: goto 1740 8849 rem MEMORY 8850 w9 = int(mz / 256): poke my + 1, w9: poke my, mz - 256 * w9: my = my + 2: return 8860 mz = 4497: my = g0 + 12: gosub 8850: usr(g6): w1 = peek(g0 + 14): w1 = w1 - int(w1 / 2) * 2 + 1 8865 return 8900 mf = 0: ma = m0: gosub 8860: mr = (val(right$(time$, 2)) + 1) * w1: w9 = rnd(-1) 8910 print "AMONG 3 GAME MODES,": print " *NORMAL": print " *RECORDING" 8911 print " *PLAYBACK": print "SELECT ONE (N OR R OR P)?"; : gosub 8000: print 8913 if kb$ = "R" then usr(g5): poke ma, mr: ma = ma = 1: mf = 1 8915 if (kb$ = "P") = 0 goto 8930 8917 print "LOAD A MISSION RECORD?"; : gosub 8000: print: if kb$ = "Y" then gosub 8900 8920 mf = 2: mr = peek(ma): ma = ma + 1: if (mr < 1) or (mr > 120) goto 8900 8930 for w8 = 1 to mr: w9 = rnd(1): next: return 8949 rem 8950 mf = 0: if ma = m0 then return 8952 print "SAVE YOUR MISSION RECORD?"; : gosub 8000: print: if (kb$ = "Y") = 0 then return 8954 cm = 0: goto 9200 8980 cm = 1: goto 9200 8999 rem BULLETIN 9000 x2 = ((b9 + (e + ep * p) / eb) / (b0 + 1) * 0.5 + 1) * ((t9 - t) / (t9 - t0) * 0.7 + 1) 9002 if k9 then x2 = 1 - ((k9 - x2 / 2.55) / k0) ^ 0.5 9005 x = x1 * x2 9010 cursor 12, 1: print "< BULLETIN >": print: print "TO: ALL UNITS"; spc(10); : a$ = "" 9020 mz = t: gosub 8400: print: print "FROM: "; sc$: print: print "WE HAVE BEEN "; 9025 w$ = "DESTROYED": if e >= 0 then w$ = "SUCCESSFUL": if k9 then w$ = "UN" + w$ 9030 print "NOTIFIED THAT THE STARSHIP": print e$; " HAS BEEN " ; w$; " AFTER" 9040 mz = t - t0: gosub 8410: print " YEARS OF ITS"; t9 - t0; " YEAR MISSION. THE" 9050 w$ = "ALL": if k9 then w$ = "ONLY" 9060 print e$; " DESTROYED "; w$; k0 - k9; " BATTLE": print "CRUISERS"; 9070 if k9 then print " OF"; k0; 9080 print " IN ITS MISSION.": print : print "THIS "; 9090 if k9 then w$ = "DISASTROUS": if x >= 500 then w$ = "LACKLUSTER" 9100 if k9 = 0 then w$ = "EXCELLENT": if x >= 700 then w$ = "BRILLIANT" 9110 print w$; " PERFORMANCE MEANS" 9120 if k9 then w$ = "DESTRUCTION OF": if x >= 500 then w$ = "DIFFICULT TIMES FOR" 9130 if k9 = 0 then w$ = "VICTORY FOR" 9140 print w$; " THE FEDERATION.": print: print sc$; " HEREBY ISSUES ORDERS" 9150 if k9 and (x < 500) then w$ = "DISMISSAL FOR INCOMPETENCE": goto 9180 9160 if k9 then w$ = "REMOVAL FROM COMMAND": goto 9180 9170 w$ = "THE MEDAL OF VALOR": if x >= 700 then w$ = "PROMOTION TO ADMIRAL" 9180 print "FOR "; w$; " FOR THE": print "CAPTAIN OF THE "; e$; " FOR A" 9190 print "BATTLE FACTOR OF"; int(x); " IN THIS MISSION.": print : return 9199 rem CMT 9200 input "MISSION NAME?"; kb$: print: w$ = left$(kb$ + spc(16), 16): if cm <> 0 then 9260 9210 poke mc, 84: for w9 = 1 to 16: poke mc + w9, asc(mid$(w$, w9, 1)): next: poke mc + 17, 13 9220 mz = ma - m0: my = mc + 18: print mz; " BYTE": gosub 8850: mz = m0: gosub 8850: mz = 0 9230 gosub 8850: usr(g4) 9235 usr(9): print "SAVE-AGAIN OR VERIFY?(S OR V)"; : gosub 8000: print 9240 if kb$ = "S" goto 9200 9250 if (kb$ = "V") = 0 then return 9260 usr(g4 + 18): if peek(g0 + 9) = 0 goto 9263 9261 if cm = 0 goto 9340 9262 goto 9310 9263 mz = mc: my = g0 + 12: gosub 8850: usr(g6): w8 = peek(g0 + 14): a$ = "" 9265 for w9 = 1 to 16: usr(g6): a$ = a$ + chr$(peek(g0 + 14)): next: a$ = left$(a$ + spc(16), 16) 9270 usr(9): print "FOUND "; a$: if w8 <> 84 then print "*NOT MISSION DATA": goto 9260 9280 if (w$ = spc(16)) = 0 then if (w$ = a$) = 0 then print "*SKIP": goto 9260 9290 print: mz = m0: my = mc + 20: gosub 8850: if cm = 0then 9330 9300 usr(g4 + 8): usr(9): if peek(g0 + 9) = 0 then return 9310 print "BREAK/ERROR...TRY AGAIN?(Y/N)"; : gosub 8000: print: if kb$ = "Y" goto 9200 9320 return 9330 usr(g4 + 13): if peek(g0 + 9) = 0 then print "OK!": goto 9235 9340 usr(9): print "BREAK/ERROR": goto 9235 9999 rem MAIN PROGRAM 10000 g0 = 54256: m0 = 47104: rem g0 = $d3f0, m0 = $b800 10005 g1 = m0 - 156: limit g1 - 1: tempo 7: gosub 11000 10010 print CL$; : gosub 8500: gosub 1275: gosub 8900: gosub 8700: gosub 8800: print CL$; 10015 gosub 1810: gosub 1600: gosub 2000: f1 = 1: gosub 850: gosub 2400: gosub 7000 10020 gosub 9000: gosub 8950: print "TRY AGAIN?"; : gosub 8000: if kb$ = "Y" goto 10010 10030 goto 50000 10999 rem DECLARATIONS 11000 def fn r(x) = int(rnd(1) * x) 11005 w9 = 0: w8 = 0: w7 = 0: ww = 0: w$ = "": rem LOCAL 11010 pp = 0: n1 = 0: n2 = 0: n7 = 0: n8 = 0: c = 0: r = 0: o1 = 0: o2 = 0: o3 = 0: c1 = 0: c2 = 0: c3 = 0: c4 = 0 11012 pm = 0: s4 = 0: s5 = 0: p1 = 0: q6 = 0: v1 = 0: v2 = 0: v3 = 0: i = 0: k1 = 0: h1 = 0: h2 = 0: at = 0: w5 = 0 11014 r1 = 0: w6 = 0: rr = 0: k2 = 0: j = 0: h3 = 0: h4 = 0: ds = 0: d1 = 0: h = 0: t3 = 0: tb = 0: r0 = 0: cc = 0 11016 tc = 0: q7 = 0: f1 = 0: d2 = 0: t4 = 0: w1 = 0: w2 = 0: w3 = 0: w4 = 0 11018 ib = 0: a$ ="": kb$ = "": rem INTER-SUB 11030 gosub 30000 11040 e$ = "ENTERPRIZE": z$ = "MAIN COMPUTER": b$ = "BASE": s$ = "STAR": im$ = "IMPULSE" 11043 sc$ = "STARFREET COMMAND": dc$ = "DILITHIUM CRYSTALS": fd$ = "LANGSTON FIELD" 11050 vl = 53247: vd = 53849: s9 = 3800: e0 = 5000: t0 = 3424: p0 = 10: ep = 500: eb = e0 + p0 * ep: is = 67 11055 dim s[63], q[63], d[9], c[4], d$[8], qm$[3, 3], qn$[1, 1] 11060 for w9 = 0 to 4: read c[w9]: next 11070 for w9 = 1 to 8: read d$[w9]: next 11080 for w9 = 0 to 3: for w8 = 0 to 3: read qm$[w9, w8]: next: next 11090 for w9 = 0 to 1: for w8 = 0 to 1: read qn$[w9, w8]: next: next 11100 goto 649 28999 rem DATA 29000 data 197,213,229,237,75,244,211,237,91,240,211,42,242,211,205,166,13,175 29010 data 50,3,224,237,176,235,6,40,205,216,15,62,1,50,3,224,225,209,193,201 29020 data 58,246,211,183,32,3,205,179,9,205,27,0,50,247,211,201 29030 data 197,213,229,33,0,208,1,232,3,58,248,211,87,175,50,3,224,178,40,18 29040 data 126,130,119,35,11,120,177,32,247,62,1,50,3,224,225,209,193,201 29050 data 54,90,35,11,120,177,32,248,24,237 29060 data 205,33,0,205,36,0,24,13,205,42,0,24,8,205,45,0,24,3,205,39 29070 data 0,50,249,211,201 29080 data 229,42,250,211,175,119,35,124,254,208,32,248,225,201 29090 data 229,42,252,211,126,50,254,211,35,34,252,211,225,201 29100 data 11,67,5,2,74 29110 data "WARP DRIVE", "SR SENSOR", "LR SENSOR", "", "", "", "", "GAL RECORD" 29130 data "DENEB", "ALGOL", "MIRA", "POLARIS", "ACHERNAR", "CAPELLA", "CASTOR", "ALDEBARAN" 29140 data "ARCTURUS", "REGULUS", "POLLUX", "RIGEL", "ANTARES", "SPICA", "CANOPUS", "BETELGEUSE" 29150 data "IV", "I", "III", "II" 29999 rem MACHINE SUB 30000 mx = 4465: ml = 4513: mh = 4514: me = g0 + 8: mc = 4336 30010 for w9 = 0 to 37: read w8: poke g1 + w9, w8: next 30020 g2 = g1 + 38: for w9 = 0 to 15: read w8: poke g2 + w9, w8: next: poke g6 + 6, 0 30030 g3 = g1 + 54: for w9 = 0 to 47: read w8: poke g3 + w9, w8: next 30040 g4 = g1 + 102: for w9 = 0 to 24: read w8: poke g4 + w9, w8: next 30050 g5 = g1 + 127: for w9 = 0 to 13: read w8: poke g5 + w9, w8: next 30060 g6 = g1 + 141: for w9 = 0 to 13: read w8: poke g6 + w9, w8: next 30070 return 39999 rem STORM & WORM 40000 w9 = fnr(255) + 1: for w8 = 1 to 8: music ">#b0<": poke me, w9: usr(g3): music ">b<" 40010 poke me, 256 - w9: usr(g3): next 40020 poke me, w9: usr(g3): music ">#b9<": poke me, 256 - w9: usr(g3): return 49999 rem NOTES 50000 print: print: gosub 50010: goto 50040 50010 print "+---------------------------+ 50020 print "* MZ(K/C) STAR TREK VER 1.3 *": return 50040 print "+---------------------------+" 50060 print "| THIS PROGRAM WAS |" 50070 print "| ORIGINALLY WRITTEN FOR |" 50080 print "| APPLE ][ INTEGER BASIC |" 50090 print "| BY W.SANDER '78 1/11 |" 50100 print "| THEN TRANSPORTED TO |" 50110 print "| PC-8001 N-BASIC |" 50120 print "| BY O.KANAMITSU, K.HORI |" 50130 print "| & K.HANDA '80 5/30 |" 50140 print "| AND ENTIRELY REWRITTEN |" 50150 print "| BY K.HORI '81 9/19 |" 50160 print "| AND MODIFIED '81 10/29 |" 50170 print "| AND HERE TRANSPORTED TO |" 50180 print "| MZ-80K/C SHARP BASIC |" 50190 print "| BY S.OKADA '81 11/20 |" 50200 print "| AND MODIFIED '82 1/23 |" 50250 print "+---------------------------+" 50300 end