{$M $2000,$26800,$A0000}
{$F+,S-}

uses Overlay, Drivers, Mem, Params, App, Dialogs, TDos, TVars, RunErr, GetOpt,
  Turbo1;

{$O OBJECTS}
{$O MEMORY}
{$O HISTLIST}
{$O VIEWS}
{$O MENUS}
{$O APP}
{$O DIALOGS}
{$O TDOS}
{$O VSWAP}
{$O GETOPT}
{$O VMEM}
{$O VMEMUTIL}
{$O TSTATUS}
{$O TWINDOWS}
{$O EXTEND}
{$O BASM}
{$O TDINFO}
{$O VFILES}
{$O FNAMES}
{$O COMPWIND}
{$O COMPILER}
{$O TRACER}
{$O COMPOPT}
{$O EDITOR}
{$O UTILS}
{$O CONTROLS}
{$O TSTDDLG}
{$O EVALDLG}
{$O CPUWIN}
{$O BPTDLG}
{$O WATCHWIN}
{$O OUTPUTWN}
{$O CALSTKWN}
{$O HELPUTIL}
{$O HELPFILE}
{$O HELPSCRN}
{$O HELPHIST}
{$O HELP}
{$O CONFIG}
{$O COLORSEL}
{$O TCOLORS}
{$O REG}
{$O TURBO2}
{$O TURBO1}

var

  T: TTurbo;

procedure OverlayInit;
var
  S: PathStr;
begin
{$IFDEF SINGLEEXE}
  S := ParStr(0);
  if S = '' then
    S := 'TURBO.EXE';
{$ELSE}
  S := 'TURBO.OVR';
{$ENDIF}
  OvrInit(S);
end;

begin
  asm
        MOV     AX,SS
        MOV     DX,DS
        SUB     AX,DX
        MOV     CL,4
        SHL     AX,CL
        CLI
        MOV     SS,DX
        ADD     SP,AX
        ADD     BP,AX
        STI
  end;
  PrintStr('Turbo Pascal  Version 6.0  Copyright (c) 1983,90 Borland International'^M^J);
  InitRunErr;
  OverlayInit;
  GetOptions;
  OvrClearBuf;
  InitMem;
  if EmsHandle <> 0 then
    OvrInitEms;
  if OvrEmsHandle = 0 then
    OvrSetRetry(OvrGetBuf div 2);
  T.Init;
  T.Run;
  T.Done;
end.
