home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG033.ARK / CAESAR.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  22KB  |  534 lines

  1. REM  CAESAR  A SAR BRIEFING-DEBRIEFING PROGRAM
  2. REM  WRITTEN IN BASIC-E FOR CPM VERSION 1.33 REV 0
  3. REM  OPTIMUM EQUIPMENT- VIDEO TERMINAL, PRINTER WITH FORMFEED
  4. REM  PROGRAM REQUIRES 32K RAM CP/M SYSTEM WITH SINGLE DISC DRIVE
  5. REM  SPECIAL EQUIPMENT-COMPTEK REAL TIME CLOCK ADDRESSED TO PORTS A9-AF
  6. REM  PRESENTLY LIMITED TO 50 SORTIES
  7. REM
  8. REM  WRITTEN BY CAPTAIN R. A. GREGOIRE CAP PAWG GROUP 30
  9. REM
  10. REM
  11. REM LEGEND:
  12. REM  M$(X,Y) = TEMP RAM STORAGE FOR MISSION SCENNARIO
  13. REM  FILE FL$(160)=BLOCKED DISC FILE HOLDING FLIGHT LOG
  14. REM  FILE MQ$=UNBLOCKED DISC FILE HOLDING MISSION SCENARIO QUERIES
  15. REM  FILE MD$=UNBLOCKED DISC FILE HOLDING MISSION SCENARIO
  16. REM  FILE BD$(500)=BLOCKED DISC FILE,1 SORTIE BRIEFING PER RECORD
  17. REM  FILE BQ$=UNBLOCKED DISC FILE HOLDING BRIEFING QUERIES(IE"SARQB.DAT")
  18. REM  FILE DQ$=UNBLOCKED DISC FILE HOLDING DEBRIEFING QUERIES
  19. REM  FILE DD$(500)=BLOCKED DISC FILE,1 SORTIE DEBRIEFING PER RECORD
  20. REM  Q$(X) = TEMP RAM STORAGE FOR CURRENT SORTIE QUERIES
  21. REM  D$(X) = TEMP RAM STORAGE FOR CURRENT SORTIE DATUM
  22. REM  BR(X) = IDENTIFIES SORTIES THAT HAVE BEEN BRIEFED
  23. REM  DR(X) = IDENTIFIES SORTIES THAT HAVE BEEN DEBRIEFED
  24. REM  T(1) = ETD = BRIEFING TIME + 15 MINUTES
  25. REM  TM = MILITARY TIME EG. 1430 HRS
  26. REM  TD = DECIMAL TIME EG. 14.5 HRS
  27. REM  C = COMMAND #
  28. REM  F = FLITE LOG FLAG (1=ALL SORTIES;0=ACTIVE SORTIES ONLY)
  29. REM  S = SORTIE #
  30. REM  B1= # OF LAST SORTIE BRIEFED
  31. REM  W,X,Y,Z,A$,B$,C$ = DUMMY VARIABLE
  32. REM  CHR$(25) OR CONTROL 'Y' = CLEARS VIDEO TERMINAL SCREEN
  33. REM  CHR$(12) OR CONTROL 'K' = FORMFEED FOR PRINTER
  34. REM
  35. REM ---------------------------------------------------------------------
  36. REM SEQUENCE OF DATA FOR FL#(160)
  37. REM  RECORD 1---MISSION #,BASE LOC,DATE
  38. REM  RECORD 2UP-SORTIE #,$A/C#,$PILOT,$A/C TYPE,$FUEL,ETD,ATD,ETE,ETA,ATA
  39. REM        ,TOT,$AREA   NB:ETD,ATD,ETA,ATA=MIL.HRS   ETE,TOT=DEC.HRS
  40. REM
  41. REM SEQUENCE OF DATA FOR BD$(500)  NOTE:ALL DATA IS STRING VARIABLES
  42. REM  SORTIE #,PILOT,HOME,PHONE,COPILOT,OBS 1,OBS 2,OBS 3,A/C #,A/C TYPE,
  43. REM  COLOR,FUEL,CRUISE,A/C BASE,EQUIP,CALLSIGN,ASSIGNED AREA,PATTERN,
  44. REM  ALT OF SEARCH,,ENROUTE ALT,DEPT AIRPORT,DEST AIRPORT,ALTERNATE,
  45. REM  ETE,ETD,ETA,TIME OF BRIEFING
  46. REM
  47. REM SEQUENCE OF DATA FOR DD$(500)  NOTE:ALL DATA IS STRING VARIABLES
  48. REM  SORTIE#,PILOT,COPILOT,OBS1,OBS2,OBS3,A/C#,AREA ASSIGNED,ACTUAL AREA, 
  49. REM  VISIBIL,TERRAIN,ALTITUDE,TIME OF DAY,AIRSPEED,SEARCH AREA TIME,
  50. REM  SPACING,% AREA COVERED,VISUAL?,ELT?,WEATHER,FALSE SIGHTINGS,
  51. REM  LEADS,POD,ATD,ATA,TOTAL SORTIE TIME,TIME OF DEBRIEFING
  52. REM
  53. REM ---------------------------------------------------------------------
  54. REM
  55. REM HOUSEKEEPING ROUTINES
  56. REM
  57.   PRINT CHR$(25);"THIS IS CAESAR  A SAR BRIEFING-DEBRIEFING PROGRAM"
  58.   INPUT "WHAT IS THIS MISSION # [7AN]";A$:DD$=A$+".DD":DQ$="CAESAR.DQ"
  59.   BD$=A$+".BD":BQ$="CAESAR.BQ":MQ$="CAESAR.MQ":MD$=A$+".MD":FL$=A$+".FL"
  60. DIM Q$(26),D$(26),M$(6,10),BR(50),DR(50),T(7)
  61.   BR(0)=1   REM SET INITIALLY FOR LINE 9 MINUS 6
  62. DEF FNA(X)=100*INT(X)+60*(X-INT(X))   REM FUNCTION FNA CHANGES TD->TM
  63. DEF FNB(X)=INT(X/100)+(X-100*(INT(X/100)))/60  REM FNB CHANGES TM->TD
  64.   FILE BD$(500),DD$(500)   REM  WHICH SORTIES HAVE BEEN BRIEFED
  65.   IF END #1 THEN 2
  66.   FOR X=1 TO 50   REM READ IN THE BR( ) ARRAY
  67.   READ #1,X;A$:BR(X)=X
  68.   NEXT X
  69. 2 B1=X-1   REM SET # OF LAST BRIEFED SORTIE
  70.   FOR Y=1 TO B1   REM WHICH SORTIES HAVE BEEN DEBRIEFED? DR( ) ARRAY
  71.   IF END #2 THEN 3
  72.   READ #2,Y;A$
  73.   IF A$<>"" THEN DR(Y)=Y
  74. 3 NEXT Y
  75.   CLOSE(2):CLOSE(1)
  76. 4 GOSUB 700   REM CHECK TIME
  77. REM
  78. REM ---------------------------------------------------------------------
  79. REM
  80. REM COMMAND ROUTINE FOLLOWS
  81. REM
  82. 5 PRINT "FRE=";FRE,CHR$(12), CHR$(25)
  83.   GOSUB 830   REM CLEAR ALL VARIABLES
  84. 6 PRINT:PRINT "THE FOLLOWING COMMANDS ARE AVAILABLE:":PRINT
  85. PRINT"INITIATE";TAB(15);"UPDATE";TAB(45);"PRINT"
  86. PRINT"---------";TAB(15);"------";TAB(45);"-----"
  87. PRINT"1.SCENNARIO";TAB(15);"2.SCENNARIO";TAB(45);"3.SORTIE SUMMARY"
  88. PRINT"4.BRIEFING";TAB(15);"5.BRIEFING";TAB(45);"6.BRIEFING"
  89. PRINT"7.DEBRIEFING";TAB(15);"8.DEBRIEFING";TAB(45);"9.DEBRIEFING"
  90. PRINT "10.TIME";TAB(15);"11.FLITE LOG(ALL SORTIES)";\
  91.         TAB(45);"12.FLIGHT LOG(ALL SORTIES)"
  92. PRINT TAB(15);"13.FLITE LOG(ACTIVE SORTIES)";\
  93.         TAB(45);"14.FLIGHT LOG(ACTIVE SORTIES)"
  94. PRINT:PRINT "THE FOLLOWING SORTIES HAVE BEEN BRIEFED:"
  95.    FOR X=1 TO 50:PRINT BR(X);
  96.    IF X=25 THEN PRINT
  97.    NEXT X:PRINT
  98. PRINT:PRINT "THE FOLLOWING SORTIES HAVE BEEN DEBRIEFED:"
  99.    FOR X=1 TO 50:PRINT DR(X);
  100.    IF X=25 THEN PRINT
  101.    NEXT X:PRINT
  102. GOSUB 750:PRINT "COMPUTER TIME= ";TM,"REMAINING MEMORY=";FRE:PRINT
  103. PRINT:INPUT "TYPE THE COMMAND NUMBER PLEASE";C
  104.    IF C<1 OR C>14 OR C<>INT(C) THEN GOTO 6
  105.    IF C=11 OR C=12 THEN F=1 ELSE F=0
  106.    IF C<4 OR C>9 THEN GOTO 9   REM NO SORTIE # IS REQUIRED
  107. INPUT "WHAT IS THE SORTIE NUMBER";S
  108.    IF S<1 OR S>50 OR S<>INT(S) THEN GOTO 6
  109.    IF C=4 AND (BR(S)=S OR BR(S-1)=0) THEN \
  110.     PRINT"THE NEXT SORTIE TO BE BRIEFED IS # ";B1+1:GOTO 6
  111.    IF (C=8 OR C=9) AND DR(S)=0 THEN \
  112.     PRINT "YOU HAVE NOT YET DEBRIEFED THAT SORTIE":GOTO 6
  113.    IF BR(S)=0 AND (C=5 OR C=6 OR C=7) THEN \
  114.     PRINT"YOU HAVE NOT YET BRIEFED THAT SORTIE":GOTO 6
  115. 9 ON C GOSUB 10,30,350,100,150,400,200,250,500,700,300,600,300,600
  116.   GOTO 5   REM COMMON RETURN POINT FOR ALL SUBROUTINES
  117. REM
  118. REM ---------------------------------------------------------------------
  119. REM
  120. REM SCENARIO INPUT ROUTINE FOLLOWS
  121. REM
  122. 10 PRINT CHR$(12);CHR$(25);"THIS IS THE MISSION SCENNARIO ROUTINE"
  123.    FILE MD$,MQ$
  124.    IF END #1 THEN 15
  125.    IF END #2 THEN 15
  126.    FOR Y=0 TO 6:PRINT:PRINT
  127.    FOR X=0 TO 10:READ #2;Q$(X):NEXT X
  128.    PRINT Q$(0):FOR X=1 TO 9:PRINT Q$(X);:INPUT M$(Y,X):NEXT X
  129.    GOSUB 750:M$(Y,10)=STR$(TM):NEXT Y
  130.    FOR Y=0 TO 6:FOR X=1 TO 10:PRINT #1;M$(Y,X):NEXT X:NEXT Y
  131. 15 CLOSE(2):CLOSE(1)   REM REWIND UNBLOCKED FILES
  132. REM
  133. REM ---------------------------------------------------------------------
  134. REM
  135. REM SCENARIO VERIFICATION ROUTINE FOLLOWS
  136. REM
  137. 30 PRINT CHR$(12);CHR$(25);"THIS IS THE SCENARIO CORRECTION ROUTINE"
  138.    FILE MD$,MQ$
  139.    IF END #1 THEN 48
  140.    IF END #2 THEN 48
  141.    FOR Y=0 TO 6:PRINT:PRINT
  142.     FOR X=0 TO 10:READ #2;Q$(X):NEXT X
  143.     FOR X=1 TO 10:READ #1;M$(Y,X):NEXT X
  144. 35  PRINT Q$(0)
  145.     FOR X=1 TO 10:PRINT X;". ";MID$(Q$(X),13,80);"=";M$(Y,X):NEXT X
  146. 40  PRINT:INPUT "IS THAT OK ? TYPE YES OR THE # OF THE INCORRECT ENTRY";A$
  147.     IF LEFT$(A$,1)="Y" THEN GOTO 45 ELSE W=VAL(A$)
  148.     IF W<1 OR W>9 OR W<>INT(W) THEN GOTO 40
  149.     PRINT Q$(0):PRINT Q$(W);:INPUT M$(Y,W):PRINT
  150.     GOSUB 750:M$(Y,10)=STR$(TM):GOTO 35
  151. 45 NEXT Y:CLOSE(2):CLOSE(1):FILE MD$,FL$(160)   REM FILE MD$ REWIND
  152.    PRINT #2,1;M$(0,1),M$(0,3),M$(0,2)
  153.    FOR Y=0 TO 6:FOR X=1 TO 10:PRINT #1;M$(Y,X):NEXT X:NEXT Y
  154. 48 CLOSE(2):CLOSE(1):RETURN   REM EXIT TO COMMAND MENUE
  155. REM
  156. REM ---------------------------------------------------------------------
  157. REM
  158. REM BRIEFING ROUTINE FOLLOWS
  159. REM
  160. 100 FILE BD$(500),BQ$,FL$(160),DD$(500)
  161.     BR(S)=S:D$(0)=STR$(S):B1=S
  162.     GOSUB 810   REM GET QUERIES FROM FILE BQ$
  163.     GOSUB 815   REM GET INPUT ANSWERS FOR FILE BD$
  164.    PRINT #4,S;A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$,A$, \
  165.     A$,A$,A$,A$,A$,A$,A$        REM DUMMY IN THE DD$ FILE
  166.    CLOSE(4)
  167.     GOTO 160    REM GOTO BRIEFING VERIFICATION SUBROUTINE
  168. REM
  169. REM ---------------------------------------------------------------------
  170. REM
  171. REM BRIEFING VERIFICATION FOLLOWS
  172. REM
  173. 150 FILE BD$(500),BQ$,FL$(160)
  174.     GOSUB 810   REM GET QUERIES
  175.     GOSUB 800   REM READ FILE BD$
  176. 160 Y=1 :GOSUB 825   REM CHECK #1-13 ANSWERS
  177.     Y=14:GOSUB 825   REM CHECK #14-26 ANSWERS
  178.    PRINT #3,S+1;S,D$(8),D$(1),D$(9),D$(11),T(1),T(2),T(3),T(4),T(5),T(6),D$(16)
  179.     GOSUB 802   REM PRINT FILE BD$
  180. 190 CLOSE(3):CLOSE(2):CLOSE(1):RETURN   REM EXIT TO COMMAND MENUE
  181. REM
  182. REM ---------------------------------------------------------------------
  183. REM
  184. REM DEBRIEFING INTERROGATION ROUTINE
  185. REM
  186. 200 PRINT CHR$(12);CHR$(25)
  187.    FILE DD$(500),DQ$,BD$(500)
  188.    IF END #3 THEN 290
  189.    READ #3,S;A$,D$(1),A$,A$,D$(2),D$(3),D$(4),D$(5),D$(6), \
  190.        B$,A$,C$,A$,A$,A$,A$,D$(7)
  191.    PRINT "FOR SORTIE NO. ";S;"THE PILOT WAS ";D$(1); \
  192.          " AND THE AIRCRAFT WAS ";D$(6)
  193.    INPUT "IS THAT WHOM YOU ARE NOW DEBRIEFING";A$
  194.    IF LEFT$(A$,1)<>"Y" THEN GOTO 290
  195.    CLOSE(3):FILE FL$(160)   REM FL$=FILE #3
  196.    D$(0)=STR$(S):DR(S)=S
  197.    GOSUB 750:D$(26)=STR$(TM)   REM GET TIME
  198.    READ #3,S+1;X,A$,A$,A$,A$,T(1),T(2),T(3),T(4),T(5),T(6),A$
  199.    GOSUB 835   REM GET ATD,ATA FROM FILE FL$
  200.    GOSUB 810   REM GET QUERIES FROM FILE DQ$
  201.    GOSUB 815   REM GET ANSWERS FOR FILE DD$
  202.    GOTO 260    REM GOTO DEBRIEFING VERIFICATION SUBROUTINE
  203. REM
  204. REM ---------------------------------------------------------------------
  205. REM
  206. REM DEBRIEFING VERIFICATION ROUTINE FOLLOWS
  207. REM
  208. 250 FILE DD$(500),DQ$,FL$(160)
  209.     GOSUB 810   REM GET QUERIES FROM FILE DQ$
  210.     GOSUB 800   REM GET DATA FROM FILE DD$
  211.     READ #3,S+1;X,A$,A$,B$,C$,T(1),T(2),T(3),T(4),T(5),T(6)
  212.     GOSUB 835   REM GET ATD,ATA,TOT FROM FILE FL$
  213. 260 Y=1 :GOSUB 825   REM CHECK #1-13 ANSWERS
  214.     Y=14:GOSUB 825   REM CHECK #14-26 ANSWERS
  215.     PRINT #3,S+1;S,D$(6),D$(1),B$,C$,T(1),T(2),T(3),T(4),T(5),T(6),D$(8)
  216.     GOSUB 802   REM PRINT FILE DD$
  217. 290 CLOSE(3):CLOSE(2):CLOSE(1):RETURN   REM EXIT TO COMMAND MENUE
  218. REM
  219. REM
  220. REM ---------------------------------------------------------------------
  221. REM  UPDATE THE FLIGHT OPERATIONS LOG
  222. REM
  223. 300 GOSUB 855:GOSUB 610:FILE FL$(160)   REM CLEAR SCREEN AND PRINT FLIGHT LOG
  224.     IF END #1 THEN 340
  225. 310 PRINT "1=ETD 2=ATD 3=ETE 4=ETA 5=ATA 6=NO ERROR"
  226.     INPUT "TYPE THE SORTIE #,ERROR #,DATA ";W,Y,X
  227.     IF Y>5 THEN CLOSE(1):RETURN   REM ONLY EXIT POINT FOR THIS SUBROUTINE
  228.     IF W>B1 THEN GOTO 310   REM SORTIE # MUST BE <LAST BRIEFED #
  229.     READ #1,W+1;S,D$(8),D$(1),D$(9),D$(11),T(1),T(2),T(3),T(4),T(5),T(6),D$(16)
  230.     T(Y)=X   REM CORRECTED ENTRY
  231.     IF T(2)<>0 THEN T(1)=T(2)   REM IF ATD<>0 THEN ETA=ATD
  232.     T(4)=FNA(FNB(T(1))+T(3))   REM RECALCULATE ETA
  233.     IF T(4)>2400 THEN T(4)=T(4)-2400
  234.     GOSUB 840   REM CALCULATE TOTAL SORTIE TIME
  235.     PRINT #1,W+1;S,D$(8),D$(1),D$(9),D$(11),T(1),T(2),T(3),T(4),T(5),T(6),D$(16)
  236. 340 CLOSE(1):GOTO 300
  237. REM
  238. REM ---------------------------------------------------------------------
  239. REM
  240. REM  PRINT THE DEBRIEFING SUMMARY REPORT
  241. REM
  242. 350 FILE MD$,DD$(500)
  243.     IF END #1 THEN 395
  244.     READ #1;M$(0,1),M$(0,2),M$(0,3)
  245.     GOSUB 750   REM GET TIME
  246.     GOSUB 850   REM TURN THE PRINTER ON
  247.     PRINT "MISSION SUMMARY REPORT"
  248.     PRINT "MISSION #: ";M$(0,1);TAB(50);"DATE: ";M$(0,2)
  249.     PRINT "BASE: ";M$(0,3);TAB(50);"TIME: ";TM
  250.     PRINT:GOSUB 870:GOSUB 870
  251.     FOR S=1 TO B1   REM FROM SORTIE #1 TO LAST BRIEFED SORTIE
  252.      IF END #2 THEN 390
  253.      READ #2,S;D$(0),A$,A$,A$,A$,A$,A$,A$,D$(8),A$,A$,A$,A$,A$,D$(14),\
  254.     A$,D$(16),D$(17),D$(18),A$,A$,D$(21),D$(22),A$,A$,D$(25)
  255.      IF D$(0)="" THEN GOTO 390
  256.      PRINT:PRINT "SORTIE #";D$(0);
  257.      IF LEFT$(D$(17),1)="Y" THEN PRINT " VISUAL SEARCH";
  258.      IF LEFT$(D$(18),1)="Y" THEN PRINT " ELT SEARCH";
  259.      PRINT TAB(60);"POD(%): ";D$(22)
  260.      PRINT "  AREA:";LEFT$(D$(8),50);TAB(58);"% COVERED:";D$(16)
  261.      PRINT "  SEARCH TIME: ";D$(14);TAB(55);"SORTIE TIME: ";D$(25)
  262.      PRINT "  LEADS: ";D$(21)
  263.      GOSUB 870   REM PRINT DIVIDER LINE *******->
  264. 390 NEXT S
  265.     GOSUB 850   REM TURN PRINTER OFF
  266. 395 CLOSE(2):CLOSE(1):RETURN   REM EXIT TO COMMAND MENUE
  267. REM
  268. REM-------------------------------------------------------------------
  269. REM
  270. REM PRINT BRIEFING FORM
  271. REM
  272. 400 FILE BD$(500),MD$
  273.     IF END #1 THEN 470
  274.     IF END #2 THEN 470
  275.     GOSUB 800   REM BLOCK FILE READ ROUTINE
  276.     FOR Y=0 TO 6:FOR X=1 TO 10:READ #2;M$(Y,X):NEXT X:NEXT Y
  277.     PRINT "THIS IS THE BRIEFING PRINT ROUTINE:":PRINT
  278.     GOSUB 850   REM TURN PRINTER ON
  279.     PRINT "MISSION BRIEFING FORM:";TAB(50);"SORTIE NO. ";D$(0)
  280.     PRINT "MISSION NUMBER: ";M$(0,1);TAB(50);"DATE: ";M$(0,2)
  281.     PRINT TAB(50);"TIME(L): ";D$(26)
  282.     GOSUB 870:GOSUB 870:PRINT "PERSONNEL:"
  283.     PRINT TAB(3);"PILOT: ";D$(1);" OF ";D$(2);TAB(40);"PHONE: ";D$(3)
  284.     PRINT TAB(3);"COPILOT: ";D$(4);TAB(40);"OBSERVER #1: ";D$(5)
  285.     PRINT TAB(3);"OBSERVER #2: ";D$(6);TAB(40);"OBSERVER #3: ";D$(7)
  286.     PRINT:GOSUB 870:PRINT "AIRCRAFT:"
  287.     PRINT TAB(3);"N NUMBER: ";D$(8);TAB(40);"TYPE: ";D$(9)
  288.     PRINT TAB(3);"COLOR: ";D$(10);TAB(40);"HOME AIRPORT: ";D$(13)
  289.     PRINT TAB(3);"FUEL AVAILABLE (HRS): ";D$(11);
  290.     PRINT TAB(40);"CRUISE SPEED (KNOTS): ";D$(12)
  291.     PRINT TAB(3);"EQUIPMENT ON BOARD:";TAB(40);"CALLSIGN: ";D$(15)
  292.     PRINT TAB(3);D$(14)
  293.     PRINT
  294.     PRINT "CONTROL BASE:"
  295.     PRINT TAB(3);"LOCATION: ";M$(0,3);TAB(40);"PHONE: ";M$(0,4)
  296.     PRINT TAB(3);"VHF CALLSIGN: ";M$(0,5);TAB(40);"MOBILE CALLSIGN: ";M$(0,6)
  297.     PRINT TAB(3);"GROUND-AIR RADIO: ";M$(0,8);
  298.     PRINT TAB(40);"26.620MHZ CALLSIGN: ";M$(0,7)
  299.     PRINT:GOSUB 870:PRINT:PRINT "MISSION OBJECTIVE:"
  300.     PRINT TAB(3);M$(0,9)
  301.     PRINT
  302.     PRINT "ASSIGNED SEARCH AREA:"
  303.     PRINT TAB(3);"LOCATION: ";D$(16)
  304.     PRINT TAB(3);"SEARCH PATTERN: ";D$(17);
  305.     PRINT TAB(3);"ASSIGNED SEARCH ALTITUDE (FT AGL): ";D$(18)
  306.     PRINT:GOSUB 870:PRINT:PRINT "FLIGHT INFORMATION:"
  307.     PRINT TAB(3);"DEPARTS FROM: ";D$(20);TAB(40);"ETD(L): ";D$(24)
  308.     PRINT TAB(3);"ARRIVES AT: ";D$(21);TAB(40);"ETA(L): ";D$(25)
  309.     PRINT TAB(3);"ALTERNATE: ";D$(22);TAB(40);"ENROUTE ALTITUDE (FT): ";D$(19)
  310.     PRINT
  311.     GOSUB 870:PRINT:PRINT "AIRPORT INFORMATION:"
  312.     PRINT TAB(3);"FBO NAME: ";M$(1,1);TAB(40);"APPROACH FREQ: ";M$(1,5)
  313.     PRINT"  FUEL AVAILABLE: ";M$(1,2);TAB(40);"CONTROL TOWER FREQ: ";M$(1,5)
  314.     PRINT TAB(3);"FIELD ELEVATION: ";M$(1,3);TAB(40);"GROUND FREQ: ";M$(1,7)
  315.     PRINT TAB(3);"A/C TIEDOWN: ";M$(1,4);TAB(40);"ACTIVE RUNWAY: ";M$(1,8)
  316.     PRINT TAB(3);"ADDITIONAL COMMENTS: ";M$(1,9)
  317.     GOSUB 860   REM PRINT SIGNATURE LINE+FORMFEED
  318.     GOSUB 870:PRINT:PRINT TAB(28);"WEATHER CONDITIONS":PRINT:PRINT
  319.     X=2:PRINT "LOCAL: ";:GOSUB 450
  320.     X=3:PRINT "NORTH: ";:GOSUB 450
  321.     X=4:PRINT "EAST: ";:GOSUB 450
  322.     X=5:PRINT "SOUTH: ";:GOSUB 450
  323.     X=6:PRINT "WEST: ";:GOSUB 450:GOTO 465
  324. 450 PRINT M$(X,1);" REPORTS AT ";M$(X,10);" HRS LOCAL"
  325.     PRINT TAB(3);"CEILING(AGL): ";M$(X,2)
  326.     PRINT TAB(3);"TEMP/DEW PT: ";M$(X,4);"/";M$(X,5);
  327.     PRINT TAB(40);"WIND: ";M$(X,6);" DEG AT ";M$(X,7);" KNOTS"
  328.     PRINT TAB(3);"BAROMETRIC PRESSURE: ";M$(X,8);
  329.     PRINT TAB(40);"VISIBILITY(NM): ";M$(X,3)
  330.     PRINT TAB(3);"SYNOPSIS+PROGNOSIS: ";M$(X,9)
  331.     PRINT:PRINT:RETURN
  332. 465 GOSUB 850   REM TURN THE PRINTER OFF
  333. 470 CLOSE(2):CLOSE(1):RETURN   REM EXIT TO COMMAND MENUE
  334. REM
  335. REM ---------------------------------------------------------------------
  336. REM
  337. REM PRINT DEBRIEFING FORM
  338. REM
  339. 500 FILE DD$(500),MD$
  340.     IF END #1 THEN 570
  341.     IF END #2 THEN 570
  342.     GOSUB 800   REM BLOCK FILE READ ROUTINE
  343.     FOR X=1 TO 10:READ #2;M$(0,X):NEXT X
  344.     PRINT "THIS IS THE DEBRIEFING PRINT ROUTINE:":PRINT:PRINT
  345.     GOSUB 850   REM TURN PRINTER ON
  346.     PRINT "MISSION DEBRIEFING FORM:";TAB(50);"SORTIE NO. ";D$(0)
  347.     PRINT"MISSION NUMBER: ";M$(0,1);TAB(50);"DATE: ";M$(0,2)
  348.     PRINT TAB(50);"TIME(L): ";D$(26)
  349.     PRINT:GOSUB 870:GOSUB 870:PRINT
  350.     PRINT "PERSONNEL:"
  351.     PRINT TAB(3);"PILOT: ";D$(1);TAB(40);"COPILOT: ";D$(2)
  352.     PRINT TAB(3);"OBSERVER #1: ";D$(3);TAB(40);"OBSERVER #2: ";D$(4)
  353.     PRINT TAB(3);"OBSERVER #3: ";D$(5)
  354.     PRINT:GOSUB 870:PRINT
  355.     PRINT "CONTROL BASE: ";M$(0,3)
  356.     PRINT
  357.     PRINT "MISSION OBJECTIVE: ";M$(0,9)
  358.     PRINT:GOSUB 870:PRINT
  359.     PRINT "SEARCH AREA:"
  360.     PRINT TAB(3);"LOCATION: ";D$(8);TAB(40);"POD (%): ";D$(22)
  361.     PRINT TAB(3);"TERRAIN: ";D$(10);TAB(40);"VISIBILITY: ";D$(9)
  362.     PRINT TAB(3);"ALTITUDE (FT): ";D$(11);TAB(40);"SEARCH TIME OF DAY: ";D$(12)
  363.     PRINT TAB(3);"DEPARTURE TIME(L):";D$(23);TAB(40);"ARRIVAL TIME(L):";D$(24)
  364.     PRINT TAB(3);"AIR SPEED: ";D$(13);TAB(40);"% COVERED: ";D$(16)
  365.     PRINT TAB(3);"SEARCH TIME: ";D$(14);TAB(40);"TOTAL SORTIE TIME: ";D$(25)
  366.     PRINT TAB(3);"ELT MONITORED: ";D$(18);TAB(40);"VISUAL SEARCH: ";D$(17)
  367.     PRINT TAB(3);"SEARCH AREA WEATHER: ";D$(19)
  368.     PRINT
  369.     PRINT "FALSE SIGHTINGS (NUMBER) = ";D$(20)
  370.     PRINT:GOSUB 870:PRINT:PRINT "LEADS AND SUMMARY:"
  371.     PRINT TAB(3);D$(21)
  372.     GOSUB 860   REM PRINT SIGNATURE LINE+FORMFEED
  373.     GOSUB 850   REM TURN PRINTER OFF
  374. 570 CLOSE(2):CLOSE(1):RETURN   REM EXIT TO COMMAND MENUE
  375. REM
  376. REM ---------------------------------------------------------------------
  377. REM
  378. REM THIS IS THE FLIGHT OPERATIONS LOG PRINT ROUTINE
  379. REM
  380. 600 PRINT "THIS IS THE FLIGHT OPERATIONS LOG PRINT ROUTINE":PRINT
  381.     GOSUB 850   REM TURN PRINTER ON
  382.     GOSUB 610   REM PRINT LOG
  383.     GOSUB 850   REM TURN PRINTER OFF
  384.     RETURN   REM EXIT TO COMMAND MENUE
  385. REM
  386. REM --------ACTUAL PRINT SUBROUTINE FOLLOWS------------------------------
  387. REM
  388. 610 FILE FL$(160)
  389.     IF END #1 THEN 640
  390.     READ #1,1;D$(1),D$(3),D$(2)
  391.     PRINT TAB(20);"FLIGHT OPERATIONS LOG ";
  392.     IF F=1 THEN PRINT "FOR ALL SORTIES" ELSE PRINT "FOR ACTIVE SORTIES"
  393.     PRINT "MISSION #: ";LEFT$(D$(1),13);
  394.     PRINT TAB(24);"BASE: ";LEFT$(D$(3),22);
  395.     PRINT TAB(53);"DATE: ";LEFT$(D$(2),18):PRINT
  396. 620 PRINT "#  A/C   PILOT'S   A/C TYPE FUEL ETD  ATD  ";
  397.     PRINT "ETE ETA  ATA  TOT AREA ASSIGNED"
  398.     PRINT TAB(4);"N#";TAB(11);"NAME";
  399.     PRINT TAB(29);"HRS  HRS  HRS  HRS HRS  HRS  HRS"
  400. REM PRINT THE DATA
  401.     PRINT:FOR X=1 TO B1   REM FOR SORTIE #1 TO LAST BRIEFED SORTIE
  402.     READ #1,X+1;S,D$(8),D$(1),D$(9),D$(11),T(1),T(2),T(3),T(4),T(5),T(6),D$(16)
  403.     IF F=0 AND T(5)<>0 THEN GOTO 635
  404.     PRINT LEFT$(STR$(S),2);TAB(4);LEFT$(D$(8),5);TAB(10);
  405.     PRINT LEFT$(D$(1),9);TAB(20);LEFT$(D$(9),8);
  406.     PRINT TAB(29);LEFT$(D$(11),4);
  407.     PRINT TAB(34);LEFT$(STR$(T(1)),4);TAB(39);LEFT$(STR$(T(2)),4);
  408.     PRINT TAB(44);LEFT$(STR$(T(3)),3);TAB(48);
  409.     PRINT LEFT$(STR$(T(4)),4);TAB(53);LEFT$(STR$(T(5)),4);
  410.     PRINT TAB(58);LEFT$(STR$(T(6)),3);
  411.     PRINT TAB(62);LEFT$(D$(16),17)
  412. 635 NEXT X
  413. 640 CLOSE(1):RETURN
  414. REM
  415. REM ---------------------------------------------------------------------
  416. REM
  417. REM CHECK AND SET TIME ROUTINE
  418. 700 GOSUB 750:PRINT "COMPUTER TIME= ";TM:INPUT "OK";A$
  419.     IF LEFT$(A$,1)="Y" THEN RETURN
  420. 710 OUT 169,0:INPUT "WHAT IS THE LOCAL 24 HR TIME [4 DIGITS REQUIRED]";A$
  421.     IF LEN(A$)<>4 OR VAL(A$)>2359 THEN GOTO 710 ELSE PRINT "WAIT"
  422.     FOR X=1 TO 4: T(X)=VAL(MID$(A$,X,1)):NEXT X: OUT 169,4
  423. 720 IF INP(175)=T(1) AND INP(174)=T(2) THEN OUT 169,0:GOTO 730
  424.     GOTO 720
  425. 730 OUT 169,2
  426. 740 IF INP(173)=T(3) AND INP(169)=T(4) THEN OUT 169,0:GOTO 700
  427.     GOTO 740
  428. REM
  429. REM READ SYSTEM CLOCK ROUTINE
  430. 750 FOR Z=0 TO 7:T(Z)=INP(168+Z):NEXT Z
  431.     TM=1000*T(7)+100*T(6)+10*T(5)+T(1)
  432.     TD=10*T(7)+T(6)+(INT(10*T(5)+T(1)))/60
  433.     FOR Z=0 TO 7:T(Z)=0:NEXT Z
  434.     RETURN
  435. REM
  436. REM ---------------------------------------------------------------------
  437. REM
  438. REM BLOCK FILE READ ROUTINES FOR BD$ AND DD$
  439. REM
  440. 800 READ #1,S;D$(0),D$(1),D$(2),D$(3),D$(4),D$(5),D$(6),D$(7),D$(8), \
  441.     D$(9),D$(10),D$(11),D$(12),D$(13),D$(14),D$(15),D$(16),D$(17), \
  442.     D$(18),D$(19),D$(20),D$(21),D$(22),D$(23),D$(24),D$(25),D$(26)
  443.     RETURN
  444. REM
  445. 802 PRINT #1,S;D$(0),D$(1),D$(2),D$(3),D$(4),D$(5),D$(6),D$(7),D$(8), \
  446.     D$(9),D$(10),D$(11),D$(12),D$(13),D$(14),D$(15),D$(16),D$(17), \
  447.     D$(18),D$(19),D$(20),D$(21),D$(22),D$(23),D$(24),D$(25),D$(26)
  448.     RETURN
  449. REM
  450. REM----------READ QUERIES SUBROUTINE FOR BD$+DD$ FILES----------
  451. REM
  452. 810 IF END #1 THEN 190
  453.     IF END #2 THEN 190
  454.     IF END #3 THEN 190
  455.     PRINT CHR$(12);CHR$(25)
  456.     FOR X=0 TO 26:READ #2;Q$(X):NEXT X
  457.   RETURN
  458. REM
  459. REM----------GET ANSWERS SUBROUTINE FOR BD$+DD$ FILES----------
  460. REM
  461. 815 FOR X=0 TO 26:PRINT Q$(X);
  462.     IF D$(X)<>"" THEN PRINT D$(X) ELSE INPUT D$(X)
  463.     IF C=4 AND X=23 THEN GOSUB 820   REM FOR BD$ GEN ETD,ETE,ETA
  464.     IF C=7 AND X=24 THEN GOSUB 838   REM GET D$(25),T(6),T(2),T(5)
  465. 817 NEXT X
  466.   RETURN
  467. REM
  468. REM----------GET ETD,ETE,ETA SUBROUTINE FOR BD$ FILE----------
  469. REM
  470. 820 GOSUB 750:D$(26)=STR$(TM)   REM TIME OF BRIEFING
  471.     T(1)=FNA(TD+.25):D$(24)=STR$(T(1))   REM ETD
  472. 822 T(1)=VAL(D$(24)):T(3)=VAL(D$(23))   REM ETE
  473.     T(4)=FNA(FNB(T(1))+T(3))   REM ETA
  474.     IF T(4)>2400 THEN T(4)=T(4)-2400
  475.     D$(25)=STR$(T(4))
  476.     RETURN
  477. REM
  478. REM----------VERIFICATION SUBROUTINE FOR BD$+DD$ FILES----------
  479. REM
  480. 825 PRINT:FOR X=Y TO Y+12
  481.     PRINT X;". ";MID$(Q$(X),13,80);"=";D$(X)
  482.     NEXT X
  483.     PRINT
  484. REM CHECK IF OK
  485. 828 INPUT"IS THIS OK? TYPE 'YES' OR THE # OF THE INCORRECT ENTRY";A$
  486.     IF LEFT$(A$,1)="Y" THEN RETURN ELSE W=VAL(A$)   REM ONLY EXIT
  487.     IF W<Y OR W>Y+12 OR W<>INT(W) THEN GOTO 828
  488.     PRINT Q$(W);:INPUT D$(W)
  489.     IF (C=4 OR C=5) AND (W=23 OR W=24) THEN GOSUB 822
  490.     IF (C=7 OR C=8) AND (W=23 OR W=24) THEN GOSUB 838
  491.     GOTO 825
  492. REM
  493. REM----------CLEAR SUBROUTINE FOR ALL VARIABLES----------
  494. 830 FOR Y=0 TO 6:FOR X=0 TO 10:M$(Y,X)="":NEXT X:NEXT Y
  495.     FOR X=0 TO 26:D$(X)="":Q$(X)="":NEXT X
  496.     FOR Z=0 TO 7:T(Z)=0:NEXT Z
  497.     A$="":B$="":C$=""
  498.     RETURN
  499. REM
  500. REM----------ATA,ATD SUBROUTINE FOR DD$ FILE----------
  501. REM
  502. 835 IF T(2)<>0 THEN D$(23)=STR$(T(2)) ELSE D$(23)=""   REM ATD
  503.     IF T(5)<>0 THEN D$(24)=STR$(T(5)) ELSE D$(24)=""   REM ATA
  504.     IF T(6)<>0 THEN D$(25)=STR$(T(6)) ELSE D$(25)=""   REM TOT
  505.     RETURN
  506. REM
  507. REM---------- GET TOT FOR FILE FL$+DD$----------
  508. 838 T(2)=VAL(D$(23)):T(5)=VAL(D$(24))
  509. 840 IF T(5)<>0 AND T(2)<>0 THEN T(6)=.1*INT(10*(FNB(T(5))-FNB(T(2))))
  510.     IF T(6)<0 THEN T(6)=T(6)+24
  511.     D$(25)=STR$(T(6))
  512.     RETURN
  513. REM
  514. REM ----------TURN PRINTER ON AND OFF----------
  515. REM
  516. 850 PRINT CHR$(12)
  517.     INPUT "TYPE THE LETTER 'P' AND CONTROL 'P'";A$
  518. 855 PRINT CHR$(25),CHR$(12)
  519.     RETURN
  520. REM
  521. REM ----------PRINT SIGNATURE LINE----------
  522. REM
  523. 860 PRINT:GOSUB 870:GOSUB 870:PRINT:PRINT
  524.     B$="____________________"
  525.     PRINT B$;TAB(25);B$;TAB(50);B$
  526.     PRINT"BRIEF/DEBRIEF OFF";TAB(25);"PILOT/OBSERVER";TAB(50);"AIR OP OFFICER"
  527.     PRINT CHR$(12)
  528.     RETURN
  529. REM
  530. REM
  531. 870 PRINT "************************************************************"; \
  532.     "***********"
  533.      RETURN
  534.