home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff305a.lzh / SpaceLog / SpaceLog (.txt) < prev    next >
AmigaBASIC Source Code  |  1990-01-17  |  21KB  |  794 lines

  1. CLEAR ,95000,2000
  2. WIDTH 80
  3. OPTION BASE 1
  4. DIM mission$(400,11),pt%(400),fld$(11),fldlen%(11),table$(38,3),table%(38),graph%(53,2),mon%(12),col%(2),final%(2)
  5. fld$(1)="Mission":fld$(2)="Nation":fld$(3)="Date":fld$(4)="Site"
  6. fld$(5)="Vehicle":fld$(6)="Weight (LBS)":fld$(7)="Period (MIN)"
  7. fld$(8)="Perigee (MI)":fld$(9)="Apogee (MI)":fld$(10)="Inclination (DEG)"
  8. fld$(11)="Remarks"
  9. fldlen%(1)=19:fldlen%(2)=4:fldlen%(3)=8:fldlen%(4)=4:fldlen%(5)=14
  10. fldlen%(6)=6:fldlen%(7)=5:fldlen%(8)=5:fldlen%(9)=5:fldlen%(10)=5
  11. fldlen%(11)=37
  12. mon%(1)=0:mon%(2)=31:mon%(3)=59:mon%(4)=90:mon%(5)=120:mon%(6)=151
  13. mon%(7)=181:mon%(8)=212:mon%(9)=243:mon%(10)=273:mon%(11)=304:mon%(12)=334
  14. col%(1)=3:col%(2)=2
  15. SCREEN 1,640,200,2,2
  16. WINDOW 1,"Manned Space Log 1.54 (c) 1990 by Gene Heitman",,20,1
  17. setpalette:
  18.  black:
  19.   PALETTE 0,0.05,0.05,0.05        
  20.  yellow:
  21.   PALETTE 1,0.9,0.7,0
  22.  blue:
  23.   PALETTE 2,0,0.1,1
  24.  red:
  25.   PALETTE 3,1,0.1,0
  26. GOSUB loadfile
  27. definemenu:
  28.  MENU 1,0,1,"Change File"
  29.   MENU 1,1,1,"Load Data"
  30.   MENU 1,2,1,"Add New Mission"
  31.   MENU 1,3,1,"Change Mission"
  32.   MENU 1,4,1,"Delete Mission"
  33.   MENU 1,5,1,"Save Changes"
  34.  MENU 2,0,1,"List Missions"
  35.   MENU 2,1,1,"All Missions"
  36.   MENU 2,2,1,"By Mission"
  37.   MENU 2,3,1,"By Nation"
  38.   MENU 2,4,1,"By Date"
  39.   MENU 2,5,1,"By Site"
  40.   MENU 2,6,1,"By Vehicle"
  41.  MENU 3,0,1,"Print Missions"
  42.   MENU 3,1,1,"All Missions"
  43.   MENU 3,2,1,"By Mission"
  44.   MENU 3,3,1,"By Nation"
  45.   MENU 3,4,1,"By Date"
  46.   MENU 3,5,1,"By Site"
  47.   MENU 3,6,1,"By Vehicle"
  48.  MENU 4,0,1,"Show Totals"
  49.   MENU 4,1,1,"Nation Table"
  50.   MENU 4,2,1,"Nation Graph"
  51.   MENU 4,3,1,"Date Table"
  52.   MENU 4,4,1,"Date Graph"
  53.   MENU 4,5,1,"Site Table"
  54.   MENU 4,6,1,"Site Graph"
  55.   MENU 4,7,1,"Site Map"
  56.   MENU 4,8,1,"Vehicle Table" 
  57.  MENU 5,0,1,"Quit"
  58.   MENU 5,1,1,"Quit SpaceLog"
  59.  CLS
  60.  PRINT "Press the right mouse button and choose a menu."
  61.  WHILE count%<>0
  62.   SLEEP
  63.   ON MENU(0) GOSUB changefile,listmissions,printmissions,showtotals,quit
  64.   WEND
  65. quit:
  66.  SYSTEM
  67.  END
  68. changefile:
  69.  ON MENU(1) GOSUB loadfile,addnewmission,changemission,deletemission,savefile
  70.  RETURN
  71. listmissions:
  72.  choice=MENU(1)
  73.  ON choice GOSUB listall,listby,listby,listby,listby,listby
  74.  RETURN
  75. printmissions:
  76.  choice=MENU(1)
  77.  ON choice GOSUB printall,printby,printby,printby,printby,printby
  78.  RETURN
  79. showtotals:
  80.  ON MENU(1) GOSUB nationtable,nationgraph,datetable,dategraph,sitetable,sitegraph,sitemap,vehicletable
  81.  RETURN
  82. loadfile:
  83.  CLS
  84.  PRINT "Please wait while the mission data is loaded."
  85.  PRINT
  86.  PRINT "Loading mission #"
  87.  OPEN "SLMissions" FOR INPUT AS #1
  88.  count%=1
  89.  WHILE NOT EOF(1)
  90.   LOCATE 3,18
  91.   PRINT count%
  92.   FOR fld%=1 TO 11
  93.    INPUT# 1,mission$(count%,fld%)
  94.   NEXT fld%
  95.   pt%(count%)=count%
  96.   count%=count%+1
  97.  WEND
  98.  CLOSE #1
  99.  count%=count%-1
  100.  PRINT
  101.  PRINT "Return to the menu."
  102.  RETURN
  103. addnewmission:
  104.  CLS
  105.  IF count%=400 THEN
  106.   PRINT "The SLMissions data file is full."
  107.  ELSE
  108.   count%=count%+1
  109.   pt%(count%)=count%
  110.   PRINT "Add new mission #";count%
  111.   PRINT
  112.   FOR var%=1 TO 11
  113.    PRINT "What is the new ";fld$(var%);
  114.    INPUT mission$(count%,var%)
  115.    mission$(count%,var%)=UCASE$(mission$(count%,var%))
  116.    IF LEN(mission$(count%,var%))>fldlen%(var%) THEN
  117.     mission$(count%,var%)=LEFT$(mission$(count%,var%),fldlen%(var%))
  118.     PRINT "The field is too long.  It is truncated to";fldlen%(var%);"characters."
  119.    END IF
  120.   NEXT var%
  121.   num1%=count%
  122.   GOSUB checknation
  123.   GOSUB checkdate
  124.   count$=RIGHT$(mission$(count%,3),2)+LEFT$(mission$(count%,3),2)+MID$(mission$(count%,3),4,2)
  125.   var%=1
  126.   comp$=""
  127.   WHILE (count$>=comp$) AND (var%<=count%-1)
  128.    comp$=RIGHT$(mission$(pt%(var%),3),2)+LEFT$(mission$(pt%(var%),3),2)+MID$(mission$(pt%(var%),3),4,2)
  129.    IF (count$<comp$) THEN
  130.     FOR var3%=count% TO var%+1 STEP -1
  131.      pt%(var3%)=pt%(var3%-1)
  132.     NEXT var3%
  133.     pt%(var%)=count%
  134.    END IF
  135.    var%=var%+1
  136.   WEND
  137.  END IF
  138.  PRINT
  139.  PRINT "Return to the menu."
  140.  RETURN
  141. changemission:
  142.  CLS
  143. getnumber:
  144.  PRINT "Change what mission # ( 1 -";count%;")";
  145.  INPUT num%
  146.  IF num%<1 OR num%>count% THEN getnumber
  147.  change$="Y"
  148. change:
  149.  WHILE (change$="Y")
  150.   CLS
  151.   GOSUB listdata
  152.   PRINT "The fields are:"
  153.   PRINT
  154.   FOR var%=1 TO 11
  155.    PRINT var%;"- ";fld$(var%)
  156.   NEXT var%
  157. getfield:
  158.   PRINT
  159.   INPUT "What field do you want to change ( 1 - 11 )";var2%
  160.   IF var2%<1 OR var2%>11 THEN getfield
  161.   PRINT
  162.   PRINT "The ";fld$(var2%);" is: ";mission$(pt%(num%),var2%)
  163.   PRINT "What is the new ";fld$(var2%);
  164.   INPUT mission$(pt%(num%),var2%)
  165.   mission$(pt%(num%),var2%)=UCASE$(mission$(pt%(num%),var2%))
  166.   num1%=pt%(num%)
  167.   IF var2%=2 THEN GOSUB checknation
  168.   IF var2%=3 THEN GOSUB checkdate
  169.   IF (var2%<>2) AND (var2%<>3) AND (LEN(mission$(pt%(num%),var2%))>fldlen%(var2%)) THEN
  170.    mission$(pt%(num%),var2%)=LEFT$(mission$(pt%(num%),var2%),fldlen%(var2%))
  171.    PRINT
  172.    PRINT "The field is too long.  It is truncated to";fldlen%(var2%);"characters."
  173.   END IF
  174. getchange:
  175.   PRINT
  176.   INPUT "Do you want to make more changes to this mission (Y / N)";change$
  177.   change$=UCASE$(change$)
  178.   IF change$<>"Y" AND change$<>"N" THEN getchange
  179.  WEND
  180.  PRINT
  181.  PRINT "Return to the menu."
  182.  RETURN
  183. deletemission:
  184.  CLS
  185. getnum:
  186.  PRINT "Delete what mission # ( 1 -";count%;")";
  187.  INPUT num%
  188.  PRINT
  189.  IF num%<1 OR num%>count% THEN getnum
  190.  GOSUB listdata
  191. getcorrect:
  192.  INPUT "Is this the correct mission ( Y / N )";var$
  193.  var$=UCASE$(var$)
  194.  IF var$<>"Y" AND var$<>"N" THEN getcorrect
  195.  IF var$="Y" THEN mission$(pt%(num%),2)="X"
  196.  PRINT
  197.  PRINT "Return to the menu."
  198.  RETURN
  199. savefile:
  200.  CLS
  201.  PRINT "Please wait while the mission data is saved."
  202.  PRINT
  203.  PRINT "Saving mission #"
  204.  OPEN "SLMissions" FOR OUTPUT AS #1
  205.  FOR var2%=1 TO count%
  206.   IF mission$(pt%(var2%),2)<>"X" THEN
  207.    LOCATE 3,17
  208.    PRINT var2%
  209.    FOR fld%=1 TO 11
  210.     PRINT# 1,mission$(pt%(var2%),fld%)
  211.    NEXT fld%
  212.   END IF
  213.  NEXT var2%
  214.  CLOSE #1
  215.  PRINT
  216.  PRINT "Return to the menu."
  217.  RETURN
  218. listall:
  219.  CLS
  220.  GOSUB bounds
  221.  PRINT
  222.  PRINT "Hit the space bar to continue or the return key to quit."
  223.  PRINT
  224.  var$=""
  225.  num%=low%
  226.  WHILE (num%<=high%) AND (var$<>CHR$(13))
  227.   var$=""
  228.   IF mission$(pt%(num%),2)<>"X" THEN
  229.    GOSUB listdata
  230.    WHILE (var$<>CHR$(13)) AND (var$<>CHR$(32))
  231.     SLEEP
  232.     var$=INKEY$
  233.    WEND
  234.   END IF
  235.   num%=num% + 1
  236.  WEND
  237.  PRINT "Return to the menu."
  238.  RETURN
  239. listby:
  240.  CLS
  241.  PRINT "What is the ";fld$(choice-1);
  242.  INPUT cp$
  243.  cp$=UCASE$(cp$)
  244.  IF LEN(cp$)>fldlen%(choice-1) THEN
  245.   cp$=LEFT$(cp$,fldlen%(choice-1))
  246.   PRINT
  247.   PRINT "The ";fld$(choice-1);" is too long.  It is truncated to";fldlen%(choice-1);"characters."
  248.  END IF
  249.  PRINT
  250.  GOSUB bounds
  251.  PRINT
  252.  PRINT "Hit the space bar to continue or the return key to quit."
  253.  PRINT
  254.  var$=""
  255.  num%=low%
  256.  WHILE (num%<=high%) AND (var$<>CHR$(13))
  257.   var$=""
  258.   IF (mission$(pt%(num%),2)<>"X") AND (LEFT$(mission$(pt%(num%),choice-1),LEN(cp$))=cp$) THEN
  259.    GOSUB listdata
  260.    WHILE (var$<>CHR$(13)) AND (var$<>CHR$(32))
  261.     SLEEP
  262.     var$=INKEY$
  263.    WEND
  264.   END IF
  265.   num%=num% + 1
  266.  WEND
  267.  PRINT "Return to the menu."
  268.  RETURN
  269. printall:
  270.  CLS
  271.  GOSUB bounds
  272.  PRINT
  273.  PRINT "Please wait while the mission data is printed to disk."
  274.  OPEN "SLPAllTop" FOR OUTPUT AS #1
  275.  PRINT# 1,SPACE$(53)+"MANNED SPACE LOG"
  276.  PRINT# 1,SPACE$(31)+"FOR ALL MAN-RELATED SPACE MISSIONS FROM "+mission$(pt%(low%),3)+" TO "+mission$(pt%(high%),3)
  277.  GOSUB printheading
  278.  CLOSE #1
  279.  PRINT
  280.  PRINT "Printing mission #"
  281.  OPEN "SLPAll" FOR OUTPUT AS #2
  282.  num%=low%
  283.  WHILE (num%<=high%)
  284.   IF mission$(pt%(num%),2)<>"X" THEN
  285.    GOSUB printdata
  286.    LOCATE 7,19
  287.    PRINT num%
  288.   END IF
  289.   num%=num% + 1
  290.  WEND
  291.  CLOSE #2
  292.  PRINT
  293.  PRINT "Return to the menu."
  294.  RETURN
  295. printby:
  296.  CLS
  297.  PRINT "What is the ";fld$(choice-1);
  298.  INPUT cp$
  299.  cp$=UCASE$(cp$)
  300.  IF LEN(cp$)>fldlen%(choice-1) THEN
  301.   cp$=LEFT$(cp$,fldlen%(choice-1))
  302.   PRINT
  303.   PRINT "The ";fld$(choice-1);" is too long.  It is truncated to";fldlen%(choice-1);"characters."
  304.  END IF
  305.  PRINT
  306.  GOSUB bounds
  307.  PRINT
  308.  PRINT "Please wait while the mission data is printed to disk."
  309.  OPEN "SLP"+LEFT$(fld$(choice-1),3)+"Top" FOR OUTPUT AS #1
  310.  PRINT# 1,SPACE$(53)+"MANNED SPACE LOG"
  311.  PRINT# 1,SPACE$(33)+"FOR MAN-RELATED SPACE MISSIONS FROM "+mission$(pt%(low%),3)+" TO "+mission$(pt%(high%),3)
  312.  var$=UCASE$(fld$(choice-1))
  313.  PRINT# 1,SPACE$(55-INT((LEN(var$)+LEN(cp$))/2))+"WITH A "+var$+" OF "+cp$
  314.  GOSUB printheading
  315.  CLOSE #1
  316.  PRINT
  317.  PRINT "Printing mission #"
  318.  OPEN "SLP"+LEFT$(fld$(choice-1),3) FOR OUTPUT AS #2
  319.  num%=low%
  320.  WHILE (num%<=high%)
  321.   IF (mission$(pt%(num%),2)<>"X") AND (LEFT$(mission$(pt%(num%),choice-1),LEN(cp$))=cp$) THEN
  322.    GOSUB printdata
  323.    LOCATE 9,19
  324.    PRINT num%
  325.   END IF
  326.   num%=num% + 1
  327.  WEND
  328.  CLOSE #2
  329.  PRINT
  330.  PRINT "Return to the menu."
  331.  RETURN
  332. nationtable:
  333.  GOSUB computenation
  334.  CLS
  335.  PRINT " Year";TAB(10);"USSR";TAB(20);"USA";TAB(41);" Year";TAB(50);"USSR";TAB(60);"USA"
  336.  FOR var%=1 TO last% STEP 2
  337.   PRINT var%+1900+first%;TAB(9);graph%(var%,1);TAB(19);graph%(var%,2);
  338.   IF var%+1<=last% THEN PRINT TAB(41);var%+1901+first%;TAB(49);graph%(var%+1,1);TAB(59);graph%(var%+1,2)
  339.  NEXT var%
  340.  IF (last% MOD 2)<>0 THEN PRINT
  341.  PRINT
  342.  PRINT "Total";TAB(10);"USSR =";final%(1);TAB(25);"USA =";final%(2);TAB(40);"Return to the menu."
  343.  RETURN
  344. nationgraph:
  345.  GOSUB computenation
  346.  CLS
  347.  tabpt%=(INT((last%*0.2)+0.8)*5+5)*12+40
  348.  PRINT "  24"
  349.  PRINT "    "
  350.  PRINT "M   ";PTAB(tabpt%);"Colors"
  351.  PRINT "i   "
  352.  PRINT "s   ";PTAB(tabpt%);"USSR = Red"
  353.  PRINT "s 18";PTAB(tabpt%);"USA = Blue"
  354.  PRINT "i   "
  355.  PRINT "o   "
  356.  PRINT "n   ";PTAB(tabpt%);"Total"
  357.  PRINT "s   "
  358.  PRINT "  12";PTAB(tabpt%);"USSR =";final%(1)
  359.  PRINT "P   ";PTAB(tabpt%);"USA =";final%(2)
  360.  PRINT "e   "
  361.  PRINT "r   "
  362.  PRINT "    ";PTAB(tabpt%);"Return"
  363.  PRINT "Y  6";PTAB(tabpt%);"to"
  364.  PRINT "e   ";PTAB(tabpt%);"the"
  365.  PRINT "a   ";PTAB(tabpt%);"menu."
  366.  PRINT "r   "
  367.  PRINT "    "
  368.  PRINT "   0"
  369.  FOR var4%=first%+1 TO first%+last%+5 STEP 5
  370.   PRINT PTAB((var4%-first%)*12+24);var4%;
  371.  NEXT var4%
  372.  PRINT "    Year"
  373.  LINE (36,0)-((last%+1)*12+35,166),1,b
  374.  FOR var2%=1 TO last%
  375.   hor%=var2%*12+32
  376.   ver2%=INT((24-(graph%(var2%,2)))*6.66667+0.5)+3
  377.   ver1%=INT((24-(graph%(var2%,1)))*6.66667+0.5)+3
  378.   LINE (hor%,ver2%)-(hor%+4,163),col%(2),bf
  379.   LINE (hor%+6,ver1%)-(hor%+10,163),col%(1),bf
  380.  NEXT var2%
  381.  RETURN
  382. computenation:
  383.  CLS
  384.  PRINT "Please wait while the nation totals are computed."
  385.  PRINT
  386.  FOR var%=1 TO 38
  387.   graph%(var%,1)=0
  388.   graph%(var%,2)=0
  389.  NEXT var%
  390.  final%(1)=0
  391.  final%(2)=0
  392.  first%=VAL(RIGHT$(mission$(pt%(1),3),2))-1
  393.  last%=VAL(RIGHT$(mission$(pt%(count%),3),2))-first%
  394.  PRINT "Computing mission #"
  395.  FOR var2%=1 TO count%
  396.   IF (mission$(var2%,2)<>"X") THEN
  397.    LOCATE 3,20
  398.    PRINT var2%
  399.    IF (mission$(var2%,2)="USSR") THEN var3%=1 :ELSE var3%=2
  400.    graph%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)=graph%(VAL(RIGHT$(mission$(var2%,3),2))-first%,var3%)+1
  401.    final%(var3%)=final%(var3%)+1
  402.   END IF
  403.  NEXT var2%
  404.  RETURN
  405. datetable:
  406.  GOSUB computedate
  407.  CLS
  408.  PRINT " Week";TAB(7);"USSR";TAB(12);"USA";TAB(21);" Week";TAB(27);"USSR";TAB(32);"USA";TAB(41);
  409.  PRINT " Week";TAB(47);"USSR";TAB(52);"USA";TAB(61);" Week";TAB(67);"USSR";TAB(72);"USA"
  410.  FOR var%=1 TO 53 STEP 4
  411.   PRINT var%;TAB(6);graph%(var%,1);TAB(11);graph%(var%,2);
  412.   IF var%<>53 THEN
  413.    PRINT TAB(21);var%+1;TAB(26);graph%(var%+1,1);TAB(31);graph%(var%+1,2);
  414.    PRINT TAB(41);var%+2;TAB(46);graph%(var%+2,1);TAB(51);graph%(var%+2,2);
  415.    PRINT TAB(61);var%+3;TAB(66);graph%(var%+3,1);TAB(71);graph%(var%+3,2)
  416.   END IF
  417.  NEXT var%
  418.  PRINT
  419.  PRINT
  420.  PRINT "Return to the menu."
  421.  RETURN
  422. dategraph:
  423.  GOSUB computedate
  424.  CLS
  425.  PRINT "  12"
  426.  PRINT "M   ";TAB(62);"Colors"
  427.  PRINT "i   "
  428.  PRINT "s   ";TAB(62);"USSR = Red"
  429.  PRINT "s   ";TAB(62);"USA = Blue"
  430.  PRINT "i  6"
  431.  PRINT "o   ";TAB(62);"Return"
  432.  PRINT "n   ";TAB(62);"to"
  433.  PRINT "s   ";TAB(62);"the"
  434.  PRINT "    ";TAB(62);"menu."
  435.  PRINT "   0"
  436.  FOR var4%=1 TO 53 STEP 5
  437.   PRINT TAB((var4%-1)+5);var4%;
  438.  NEXT var4%
  439.  PRINT "   Week"
  440.  LINE (36,0)-(468,86),1,b
  441.  FOR var2%=2 TO 53
  442.   FOR var3%=1 TO 2
  443.    ver1%=INT((12-(graph%(var2%-1,var3%)))*6.66667+0.5)+3
  444.    ver2%=INT((12-(graph%(var2%,var3%)))*6.66667+0.5)+3
  445.    LINE ((var2%-1)*8+36,ver1%)-((var2%)*8+36,ver2%),col%(var3%)
  446.   NEXT var3%
  447.  NEXT var2%
  448.  RETURN
  449. computedate:
  450.  CLS
  451.  PRINT "Please wait while the date totals are computed."
  452.  PRINT
  453.  FOR var%=1 TO 53
  454.   graph%(var%,1)=0
  455.   graph%(var%,2)=0
  456.  NEXT var%
  457.  PRINT "Computing mission #"
  458.  FOR var2%=1 TO count%
  459.   IF (mission$(var2%,2)<>"X") THEN
  460.    LOCATE 3,20
  461.    PRINT var2%
  462.    IF (mission$(var2%,2)="USSR") THEN var3%=1 :ELSE var3%=2
  463.    day%=mon%(VAL(LEFT$(mission$(var2%,3),2)))+VAL(MID$(mission$(var2%,3),4,2))
  464.    IF ((VAL(RIGHT$(mission$(var2%,3),2)) MOD 4)=0) AND (VAL(LEFT$(mission$(var2%,3),2))>2) THEN day%=day%+1
  465.    graph%(INT((day%-1)/7)+1,var3%)=graph%(INT((day%-1)/7)+1,var3%)+1
  466.   END IF
  467.  NEXT var2%
  468.  RETURN
  469. sitetable:
  470.  GOSUB computesite
  471.  CLS
  472.  PRINT fld$(4);TAB(10);fld$(2);TAB(20);"#"
  473.  FOR var4%=1 TO numsit%
  474.   PRINT table$(var4%,1);TAB(10);
  475.   IF table$(var4%,2)="USSR" THEN COLOR 3,0 :ELSE COLOR 2,0
  476.   PRINT table$(var4%,2);
  477.   COLOR 1,0
  478.   PRINT TAB(19);table%(var4%)
  479.  NEXT var4%
  480.  PRINT
  481.  PRINT "Return to the menu."
  482.  RETURN
  483. sitegraph:
  484.  GOSUB computesite
  485.  CLS
  486.  tabpt%=numsit%*5+8
  487.  PRINT "  240"
  488.  PRINT "     "
  489.  PRINT "M    "
  490.  PRINT "i    "
  491.  PRINT "s    ";TAB(tabpt%);"Colors"
  492.  PRINT "s 180"
  493.  PRINT "i    ";TAB(tabpt%);"USSR = Red"
  494.  PRINT "o    ";TAB(tabpt%);"USA = Blue"
  495.  PRINT "n    "
  496.  PRINT "s    "
  497.  PRINT "  120"
  498.  PRINT "P    "
  499.  PRINT "e    "
  500.  PRINT "r    "
  501.  PRINT "     ";TAB(tabpt%);"Return"
  502.  PRINT "S  60";TAB(tabpt%);"to"
  503.  PRINT "i    ";TAB(tabpt%);"the"
  504.  PRINT "t    ";TAB(tabpt%);"menu."
  505.  PRINT "e    "
  506.  PRINT "     "
  507.  PRINT "    0"
  508.  FOR var4%=1 TO numsit%
  509.   PRINT TAB(var4%*5+3);table$(var4%,1);
  510.  NEXT var4%
  511.  PRINT "   Site"
  512.  LINE (48,0)-((numsit%+1)*40+3,166),1,b
  513.  FOR var2%=1 TO numsit%
  514.   hor%=var2%*40+16
  515.   ver%=INT((240-table%(var2%))*0.666667+0.5)+3
  516.   IF table$(var2%,2)="USSR" THEN var3%=1 :ELSE var3%=2
  517.   LINE (hor%,ver%)-(hor%+22,163),col%(var3%),bf
  518.  NEXT var2%
  519.  RETURN
  520. computesite:
  521.  CLS
  522.  PRINT "Please wait while the site totals are computed."
  523.  PRINT
  524.  PRINT "Computing mission #"
  525.  numsit%=0
  526.  FOR var2%=1 TO count%
  527.   IF mission$(pt%(var2%),2)<>"X" THEN
  528.    LOCATE 3,20
  529.    PRINT var2%
  530.    flg%=0
  531.    var3%=1
  532.    WHILE (var3%<=numsit%) AND (flg%=0)
  533.     IF mission$(pt%(var2%),4)=table$(var3%,1) THEN
  534.      table%(var3%)=table%(var3%)+1
  535.      flg%=1
  536.     END IF
  537.     var3%=var3%+1
  538.    WEND
  539.    IF flg%=0 THEN
  540.     numsit%=numsit%+1
  541.     table$(numsit%,1)=mission$(pt%(var2%),4)
  542.     table$(numsit%,2)=mission$(pt%(var2%),2)
  543.     table%(numsit%)=1
  544.    END IF
  545.   END IF
  546.  NEXT var2%
  547.  RETURN
  548. sitemap:
  549.  CLS
  550.  RESTORE
  551.  LINE (0,0)-(540,134),1,b
  552.  FOR lat%=-60 TO 60 STEP 30
  553.   ver%=67-lat%
  554.   LINE (0,ver%)-(540,ver%),1
  555.  NEXT lat%
  556.  FOR lon%=0 TO 300 STEP 30
  557.   hor%=INT(1.5*(30+lon%)+0.5)
  558.   LINE (hor%,0)-(hor%,134),1
  559.  NEXT lon% 
  560.  WHILE lon%<>500
  561.   READ lon%,lat%
  562.   WHILE (lon%<>400) AND (lon%<>500) 
  563.    lattemp%=lat%
  564.    lontemp%=lon%
  565.    READ lon%,lat%
  566.    IF lon%<>400 THEN
  567.     vertemp%=67-lattemp%
  568.     IF lontemp%<-30 THEN lontemp%=lontemp%+360
  569.     hortemp%=INT(1.5*(30+lontemp%)+0.5)
  570.     ver%=67-lat%
  571.     IF lon%<-30 THEN lon%=lon%+360
  572.     hor%=INT(1.5*(30+lon%)+0.5)
  573.     LINE (hortemp%,vertemp%)-(hor%,ver%),1
  574.    END IF
  575.   WEND
  576.  WEND
  577.  LINE (104,10)-(8,144),col%(1)
  578.  LINE (105,4)-(64,144),col%(1)
  579.  LINE (114,18)-(128,144),col%(1)
  580.  LINE (140,21)-(184,144),col%(1)
  581.  LINE (404,33)-(256,144),col%(2)
  582.  LINE (408,32)-(312,144),col%(2)
  583.  LINE (426,34)-(376,144),col%(2)
  584.  LINE (464,38)-(428,144),col%(2)
  585.  LINE (471,29)-(488,144),col%(2)
  586.  LOCATE 4,70
  587.  PRINT "Colors"
  588.  PRINT
  589.  PRINT TAB(70);"USSR = Red"
  590.  PRINT TAB(70);"USA = Blue"
  591.  LOCATE 10,70
  592.  PRINT "Return"
  593.  PRINT TAB(70);"to"
  594.  PRINT TAB(70);"the"
  595.  PRINT TAB(70);"menu."  
  596.  LOCATE 19,1
  597.  PRINT "RS";TAB(8);"PL";TAB(16);"KY";TAB(23);"TT";TAB(31);"VAFB";
  598.  PRINT TAB(38);"EAFB";TAB(46);"WSMR";TAB(53);"KSC";TAB(61);"WI"
  599.  PRINT "56N";TAB(8);"63N";TAB(16);"48N";TAB(23);"46N";TAB(31);"35N";
  600.  PRINT TAB(38);"35N";TAB(46);"33N";TAB(53);"29N";TAB(61);"38N"
  601.  PRINT "39E";TAB(8);"40E";TAB(16);"46E";TAB(23);"63E";TAB(31);"121W";
  602.  PRINT TAB(38);"118W";TAB(46);"106W";TAB(53);"81W";TAB(61);"76W"
  603.  RETURN
  604. vehicletable:
  605.  GOSUB computevehicle
  606.  CLS
  607.  PRINT fld$(5);TAB(16);fld$(2);TAB(23);"Year";TAB(28);"#";TAB(41);fld$(5);TAB(56);fld$(2);TAB(63);"Year";TAB(68);"#"
  608.  FOR var4%=1 TO numveh% STEP 2
  609.   PRINT table$(var4%,1);TAB(16);
  610.   IF table$(var4%,2)="USSR" THEN COLOR 3,0 :ELSE COLOR 2,0
  611.   PRINT table$(var4%,2);
  612.   COLOR 1,0
  613.   PRINT TAB(23);table$(var4%,3);TAB(27);table%(var4%);
  614.   IF var4%+1<=numveh% THEN
  615.    PRINT TAB(41);table$(var4%+1,1);TAB(56);
  616.    IF table$(var4%+1,2)="USSR" THEN COLOR 3,0 :ELSE COLOR 2,0
  617.    PRINT table$(var4%+1,2);
  618.    COLOR 1,0
  619.    PRINT TAB(63);table$(var4%+1,3);TAB(67);table%(var4%+1)
  620.   END IF
  621.  NEXT var4%
  622.  IF (numveh% MOD 2)<>0 THEN PRINT
  623.  PRINT
  624.  PRINT "Return to the menu."
  625.  RETURN
  626. computevehicle:
  627.  CLS
  628.  PRINT "Please wait while the vehicle totals are computed."
  629.  PRINT
  630.  PRINT "Computing mission #"
  631.  numveh%=0
  632.  FOR var2%=1 TO count%
  633.   IF mission$(pt%(var2%),2)<>"X" THEN
  634.    LOCATE 3,20
  635.    PRINT var2%
  636.    flg%=0
  637.    var3%=1
  638.    WHILE (var3%<=numveh%) AND (flg%=0)
  639.     IF (mission$(pt%(var2%),5)=table$(var3%,1)) AND (mission$(pt%(var2%),2)=table$(var3%,2)) THEN
  640.      table%(var3%)=table%(var3%)+1
  641.      flg%=1
  642.     END IF
  643.     var3%=var3%+1
  644.    WEND
  645.    IF flg%=0 THEN
  646.     numveh%=numveh%+1
  647.     table$(numveh%,1)=mission$(pt%(var2%),5)
  648.     table$(numveh%,2)=mission$(pt%(var2%),2)
  649.     table$(numveh%,3)=RIGHT$(mission$(pt%(var2%),3),2)
  650.     table%(numveh%)=1
  651.    END IF
  652.   END IF
  653.  NEXT var2%
  654.  RETURN
  655. checknation:
  656.  WHILE (mission$(num1%,2)<>"USSR") AND (mission$(num1%,2)<>"USA")
  657.   PRINT
  658.   PRINT "The Nation must be USA or USSR."
  659.   PRINT
  660.   PRINT "What is the new ";fld$(2);
  661.   INPUT mission$(num1%,2)
  662.   mission$(num1%,2)=UCASE$(mission$(num1%,2))
  663.  WEND
  664.  RETURN
  665. checkdate:
  666.  WHILE (MID$(mission$(num1%,3),3,1)<>"/") OR (MID$(mission$(num1%,3),6,1)<>"/") OR (LEN(mission$(num1%,3))<>8)
  667.   PRINT
  668.   PRINT "The Date must be in MM/DD/YY format."
  669.   PRINT
  670.   PRINT "What is the new ";fld$(3);
  671.   INPUT mission$(num1%,3)
  672.  WEND
  673.  RETURN
  674. bounds:
  675.  asklow:
  676.   PRINT "Start the list with what mission # ( 1 -";count%;")";
  677.   INPUT low%
  678.   IF low%<1 OR low%>count% THEN asklow
  679.   PRINT
  680.  askhigh:
  681.   PRINT "End the list with what mission # (";low%;"-";count%;")";
  682.   INPUT high%
  683.   IF high%<low% OR high%>count% THEN askhigh
  684.   RETURN
  685. listdata:
  686.  PRINT "Mission #";num%
  687.  PRINT mission$(pt%(num%),1);TAB(21);
  688.  IF mission$(pt%(num%),2)="USSR" THEN COLOR 3,0 :ELSE COLOR 2,0
  689.  PRINT mission$(pt%(num%),2);
  690.  COLOR 1,0
  691.  PRINT TAB(26);mission$(pt%(num%),3);TAB(36);mission$(pt%(num%),4);
  692.  PRINT TAB(46);mission$(pt%(num%),5);TAB(66);mission$(pt%(num%),6);" LBS"
  693.  PRINT mission$(pt%(num%),7);" MIN";TAB(11);mission$(pt%(num%),8);" MI";
  694.  PRINT TAB(21);mission$(pt%(num%),9);" MI";TAB(31);mission$(pt%(num%),10);" DEG";
  695.  PRINT TAB(41);mission$(pt%(num%),11)
  696.  PRINT
  697.  RETURN
  698. printheading:
  699.  PRINT# 1,"MISSION"+SPACE$(13)+"NAT  DATE     SITE VEHICLE"+SPACE$(8)+"LBS    MIN   MI    MI    DEG   REMARKS"
  700.  prt$=""
  701.  FOR fld%=1 TO 11
  702.   FOR col%=1 TO fldlen%(fld%)
  703.    prt$=prt$+"-"
  704.   NEXT col%
  705.   prt$=prt$+" "
  706.  NEXT fld%
  707.  prt$=LEFT$(prt$,122)
  708.  PRINT# 1,prt$
  709.  RETURN
  710. printdata:
  711.  prt$=""
  712.  FOR fld%=1 TO 11
  713.   prt$=prt$+mission$(pt%(num%),fld%)+SPACE$(fldlen%(fld%)+1-LEN(mission$(pt%(num%),fld%)))
  714.  NEXT fld%
  715.  prt$=LEFT$(prt$,122)
  716.  PRINT# 2,prt$
  717.  RETURN
  718. REM Europe & Asia
  719. DATA 13,67,10,64,5,62,5,59,11,60,12,56,16,56,19,60,18,64,25,66,21,63,21,61,29,61
  720. DATA 28,59,24,59,20,55,11,54,10,58,8,57,8,54,5,53,-5,48,-1,46,-2,44,-9,44,-10,39,-9,37,-6,36
  721. DATA -2,37,0,39,5,43,10,44,16,40,16,38,12,38,15,37,16,38,17,41,18,40,13,45,14,46,20,42,23,36,24,38,23,40,26,41,27,37
  722. DATA 32,36,36,37,35,32,32,32,34,28,35,28,40,22,43,13,52,15,60,23,56,27,51,25,48,30,50,30
  723. DATA 56,27,67,25,70,21,73,22,77,8,80,10,80,6,82,7,80,10,80,16,87,21,92,23,94,16,97,17,98,8,103,1,103,5
  724. DATA 99,10,101,14,105,9,109,13,106,19,118,23,123,30,118,39,122,41,121,39,125,39,126,35,129,35
  725. DATA 128,40,137,45,142,53,142,46,144,47,143,53,135,55,143,59,155,59
  726. DATA 160,62,164,62,156,55,157,51,148,45,157,51,163,59,166,60,180,62,-178,66,-173,64,-171,67,400,0 
  727. REM White Sea
  728. DATA 42,67,38,66,32,67,35,64,38,64,37,65,40,65,40,66,45,67,400,0
  729. REM Black Sea
  730. DATA 30,41,35,42,42,41,42,43,37,45,40,47,35,46,37,45,34,44,33,46,30,47,28,43,30,41,400,0
  731. REM Caspian Sea
  732. DATA 49,38,54,37,50,45,53,47,47,45,50,40,49,38,400,0
  733. REM Aral Sea
  734. DATA 58,44,61,44,62,45,62,47,59,46,58,44,400,0
  735. REM Iceland
  736. DATA -15,66,-25,66,-20,64,-14,65,-15,66,400,0
  737. REM Great Britain & Ireland
  738. DATA -3,59,2,52,-5,50,-3,55,-6,52,-10,52,-10,54,-3,55,-6,57,-3,59,400,0
  739. REM Sardinia & Corsica
  740. DATA 9,42,8,41,8,39,9,39,9,43,8,43,9,42,400,0
  741. REM Africa
  742. DATA 32,32,29,31,20,33,20,30,15,32,10,34,11,37,-2,35,-6,36,-10,33,-10,30,-13,28,-17,21,-17,15,-10,6,-7,5,9,4,8,0
  743. DATA 14,-11,12,-18,19,-34,25,-33,36,-25,36,-20,41,-15,39,-5,45,2,51,13,43,13,37,18,32,32,400,0
  744. REM Madagascar
  745. DATA 49,-12,44,-16,43,-22,44,-25,47,-25,51,-14,49,-12,400,0
  746. REM Indonesia
  747. DATA 95,6,98,0,105,-6,107,-7,115,-8,111,-7,106,-6,106,-3,104,0,100,3,95,6,400,0
  748. REM Borneo
  749. DATA 109,2,110,-3,115,-4,118,1,117,7,109,2,400,0
  750. REM Australia
  751. DATA 115,-35,123,-34,130,-32,135,-35,138,-33,137,-35,140,-38,145,-39,150,-38
  752. DATA 152,-33,154,-29,153,-25,146,-18,145,-15,143,-11,140,-17,135,-15
  753. DATA 137,-12,131,-12,130,-15,127,-14,123,-16,122,-19,115,-21,113,-25,116,-32,115,-35,400,0
  754. REM Tasmania
  755. DATA 145,-41,147,-44,149,-41,147,-42,145,-41,400,0
  756. REM New Zealand
  757. DATA 173,-35,175,-37,174,-39,175,-41,172,-41,171,-43,166,-46,169,-47
  758. DATA 171,-44,175,-41,178,-38,175,-37,400,0
  759. REM New Guinea
  760. DATA 131,-1,135,-5,138,-8,150,-10,137,-2,131,-1,400,0
  761. REM Philippines
  762. DATA 120,18,121,14,123,13,125,10,122,12,123,9,125,10,122,8,124,8,125,5,126,10,125,13,122,15,122,18,120,18,400,0
  763. REM Japan
  764. DATA 142,45,140,41,138,37,131,34,130,33,131,31,132,33,131,34,136,34,141,36
  765. DATA 142,40,140,41,145,43,142,45,400,0
  766. REM North & South America
  767. DATA -162,67,-168,66,-161,64,-166,61,-158,58,-167,53,-178,52
  768. DATA 173,53,-178,52,-167,53,-160,55,-154,58,-151,61,-149,61,-151,61,-151,59,-148,61,-140,60,-134,55
  769. DATA -131,55,-128,51,-125,49,-124,41,-121,35,-118,34,-110,23,-109,24,-115,32,-113,32,-108,25
  770. DATA -105,20,-90,13,-80,8,-80,9,-77,4,-80,1,-81,-6,-75,-15
  771. DATA -70,-18,-72,-30,-74,-37,-75,-45,-75,-52,-70,-55,-67,-56,-65,-55,-69,-51,-66,-47,-68,-46,-62,-41,-58,-38
  772. DATA -49,-29,-49,-26,-42,-22,-39,-13,-35,-8,-35,-5,-50,0,-52,5,-58,7
  773. DATA -72,12,-77,9,-83,10,-83,15,-89,16,-87,22,-90,21,-92,18,-95,18,-98,22,-97,26,-97,28,-90,29,-84,30,-81,25
  774. DATA -80,26,-82,32,-75,36,-74,41,-70,42,-70,44,-60,46,-65,47,-65,50,-57,51
  775. DATA -59,48,-53,48,-56,54,-65,61,-68,58,-70,61,-78,62,-79,59,-80,55,-80,51,-83,55,-92,57,-95,60,-90,63
  776. DATA -88,64,-86,66,-87,64,-85,63,-80,64,-85,66,-82,67,400,0
  777. REM Great Lakes
  778. DATA -76,44,-80,43,-83,42,-82,43,-81,45,-80,45,-83,46,-88,49,-92,47,-88,47,-83,46,-87,46
  779. DATA -88,42,-88,41,-86,43,-84,46,-82,43,-83,42,-81,42,-79,43,-76,43,-76,44,400,0
  780. REM Baffin Island
  781. DATA -74,67,-75,65,-78,65,-78,64,-72,63,-66,62,-64,64,-68,66,-66,66,-63,65,-61,67,400,0
  782. REM Greenland
  783. DATA -54,67,-48,61,-43,60,-40,65,-33,67,400,0
  784. REM Cuba
  785. DATA -85,22,-82,23,-78,20,-74,20,-80,23,-82,23,400,0
  786. REM Haiti
  787. DATA -75,19,-72,18,-68,19,-70,20,-73,20,-72,19,400,0
  788. REM Biscoe Islands
  789. DATA -66,-67,-60,-64,-56,-64,-59,-64,-64,-67,400,0
  790. REM Wilkes Land
  791. DATA 87,-67,92,-66,100,-66,101,-65,109,-67,113,-65,120,-67,125,-66,128,-67,130,-66
  792. DATA 135,-65,145,-67,400,0
  793. DATA 500,0
  794.