home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / DOOR / DDPLUS67.ZIP / INITOVER.PAS < prev    next >
Pascal/Delphi Source File  |  1994-11-21  |  3KB  |  111 lines

  1. UNIT InitOver;
  2. (**) INTERFACE (**)
  3. Uses Overlay, Dos, Crt;
  4.  
  5. (**) IMPLEMENTATION (**)
  6.  
  7.   (*NOTE: You will have to choose the buffer size
  8.     for each particular program.  The bigger it is,
  9.     the less "thrashing" as the program reads from
  10.     disk.  However, the bigger it is, the less Heap
  11.     memory is available.  Hence we define the buffer
  12.     size in terms of the amount of heap space needed
  13.     by the program.*)
  14. CONST HeapNeeded = 1000;
  15.  
  16.   PROCEDURE SetUpOverlay;
  17.   VAR
  18.     OverlayName    : String[79];
  19.     BufferSize,
  20.     OrigBufferSize : LongInt;
  21.     N              : Word;
  22.     Message        : Boolean;
  23.   BEGIN
  24.     Message := FALSE;
  25.     IF Lo(DosVersion) >= 3 THEN
  26.       OverlayName := ParamStr(0)
  27.     ELSE
  28.       BEGIN
  29.         {NOTE - You MUST replace GOC.EXE with your programs main}
  30.         {executable file name}
  31.         OverlayName := FSearch('GOC.EXE',        
  32.                                GetEnv('PATH'));
  33.         IF OverlayName = '' THEN
  34.           BEGIN
  35.             Write('The main program must be named');
  36.             WriteLn('"GOC.EXE",');
  37.             Write('and it must reside on your PATH ');
  38.             WriteLn('or in the current directory.');
  39.             Halt( 1 );
  40.           END;
  41.       END;
  42.     WriteLn;
  43.     OverlayName := FExpand(OverlayName);
  44.     WriteLn('Loading ',OverlayName,'...');
  45.     Dec(OverlayName[0], 3);
  46.     OverlayName := OverlayName + 'OVR';
  47.     OvrInit(OverlayName);
  48.  
  49.     IF OvrResult = OvrNotFound THEN
  50.       BEGIN
  51.         Write('Overlay file not found: ');
  52.         WriteLn(OverlayName);
  53.         Halt( 2 );
  54.       END;
  55.     IF OvrResult <> OvrOK THEN
  56.       BEGIN
  57.         WriteLn('Error loading overlay file: ');
  58.         WriteLn(OverlayName);
  59.         Halt( 3 );
  60.       END;
  61.  
  62.     OvrInitEMS;
  63.  
  64.     CASE OvrResult OF
  65.       OvrOK : ; {just continue}
  66.       OvrNoEMSDriver : BEGIN
  67.           Write('No EMS driver in system.  Program ');
  68.           WriteLn('will read overlay from disk');
  69.           Message := TRUE;
  70.         END;
  71.       OvrNoEMSMemory : BEGIN
  72.           Write('Not enough EMS memory in system.  ');
  73.           Write('Program will read ');
  74.           WriteLn('overlay from disk');
  75.           Message := TRUE;
  76.         END;
  77.        ELSE
  78.          WriteLn('Overlay manager error.');
  79.          Halt( 4 );
  80.     END;
  81.     OrigBufferSize := OvrGetBuf;
  82.     BufferSize := MaxAvail - HeapNeeded;
  83.  
  84.     OvrSetBuf(BufferSize);
  85.  
  86.     IF OvrResult <> OvrOK THEN
  87.       BEGIN
  88.         Write('Could not set overlay buffer to ');
  89.         Write(BufferSize,'.  Remaining at default: ');
  90.         WriteLn(OrigBufferSize);
  91.         Message := TRUE;
  92.       END;
  93.     IF Message THEN
  94.       BEGIN
  95.         NoSound;
  96.         Sound(1200); Delay(150);
  97.         NoSound; Delay(50);
  98.         Sound(1000); Delay(150);
  99.         NoSound;
  100.         N := 5000;
  101.         REPEAT
  102.           Delay( 1 );
  103.           Dec(N);
  104.         UNTIL (N = 0) OR KeyPressed;
  105.         IF KeyPressed THEN IF ReadKey = #0 THEN;
  106.       END;
  107.   END;
  108.  
  109. BEGIN
  110.   SetUpOverlay;
  111. END.