{ I keep forgetting to turn off 286 instruction set.  So, better force it
  off here, before I confuse any more 286 people. }
{$A+}        { speed up us 80x86 guys }
{$B-}        { I dig short circuits }
{$I+}        { pisses people off when they hit a letter, but its better than
               gigo. }
{$G-}        { turn OFF 286 instruction set }
{$M 32767, 0, 65520 }

program offline;
{ This will do the various sorts of computations you might want to do with
your data base but while not playing.  You might plan itineraries, identify
defensible structures, identify areas of control, spot high traffic areas, 
and so on. }

uses
  DOS, CRT;

{$I headers.inc}
var {globals}
  space     : TheVoid;
  BBSname   : string;
  quit      : boolean;
  distances : distancearray;
  mono,
  verbose   : boolean;
  inverses  : inversearray;
  invdone   : boolean;

{$I misc.inc }
{$I GSDATA.INC }
{$I queue.inc }
{$I distance.inc }
{$I decount.inc }
{$I control.inc }
{$I status.inc }
{$I textdisp.inc }
{$I basepath.inc }
{$I hitrffic.inc }
{$I statistc.inc }
{$I tour.inc }
{$I multpath.inc }
{$I unknown.inc }
{$I oneway.inc}
{$I parseeth.inc}
{$I sctrlist.inc }
{$I robpath.inc}
{$I listbust.inc}
{$I initdefs.inc}
procedure menu;
begin
  writeln;
  writeln('<C>ontrolled sector status');
  writeln('<D>ead end analysis');
  writeln('suggest <E>therprobe targets');
  writeln('<L>ist bust records');
  writeln('visit <M>ultiple sectors efficiently');
  writeln('<O>ne way warps');
  writeln('<P>arse captured ASCII text');
  writeln('<Q>uit');
  writeln('<R>obbing path');
  writeln('<S>tellar dispersion');
  writeln('<T>raffic area analysis');
  writeln('<U>known sectors');
  writeln('<V>isit every sector');
  writeln;
end; {menu}

function choice : char;
var
  ch : char;
begin
  write('(', BBSName, ') [C, D, E, L, M, O, P, Q, R, S, T, U, V] Your choice?  ');
  readln( ch );
  choice := upcase( ch );
end;

begin
  writeln('Tradewars Offline Data Base Inquiry program: ', version);
  writeln( author );
  writeln( source );
  writeln;
  Quit := false;
  GetInits( verbose, mono );
  invdone := false;
  InitSpace( Space );
  if paramcount > 0 then
    BBSName := paramstr( 1 )
  else
    BBSName := '';
  GetData( Space, BBSName, false );
  menu;
  repeat
    case choice of
      'C' : Control;
      'D' : DeadEndAnalysis;
      'E' : SuggestEtherProbes;
      'L' : ListBusts;
      'M' : MultiPassSector;
      'O' : OneWaySectorList;
      'P' : ParseCapturedText;
      'Q' : quit := true;
      'R' : RobPath;
      'S' : StellarDispersion;
      'T' : HighTraffic;
      'U' : UnknownSectors;
      'V' : VisitEverySector;
    else
      menu;
    end; {case}
  until quit;
end.
