(*****************************************************************************)
(*                                                                           *)
(*                           File: PAS/PASCAL.TEXT                           *)
(*                                                                           *)
(*              (C) Copyright 1981 Silicon Valley Software, Inc.             *)
(*                            1983, 1984 Apple Computer, Inc.                *)
(*                                                                           *)
(*                            All rights reserved.                 7-Aug-82  *)
(*                                                                           *)
(*  6-16-83 Pascal: add mark & release to make sure memory given back at end *)
(*  6-16-83 Pascal: add call to initialize heap to minimum size              *)
(*  7-15-83 Pascal: add Issue309Error,Killexec flags                         *)
(*  8-28-83 Pascal: add FlagHexConsts                                        *)
(*****************************************************************************)
{$e err.log.text}
{$I flags.text}

{$SETC IULIB := true}    {true==>code for Searching I.U. Libs Indirect}

{$SETC OptDbg := false}  {true==>debug output on Opt.2}

{$r-}

PROGRAM Pascal;

  USES
    {$ifc foros         } {use standard unit from INTRINSIC.LIB}
    {$U+                }
    {$U n/IosFPLib      } FPlib,
    {$U-                } {don't search INTRINSIC.LIB}
    {$U SysCall         } SysCall,
    {$U n/SULib         } StdUnit,
    {$endc}

    {$ifc IULIB}
    {$U PAS/ObjInter.obj} ObjInter, {or hide ObjIOLib behind here}
    {$U n/PPasDefs.obj  } PPasDefs,
    {$endc}

    {$U PaslibCall.obj  } PaslibCall, {for pAbortFlag, plinitheap}
    {$U HWInt.obj       } HWInt,
    {$U Obj/Times.obj   } Times,
    {$U Pas/Dates.obj   } Dates,
    {$U Primitives/IO   } IOPrimitives, {spring - change to $U n/SULib}
    {$U ProgComm/Stub   } ProgComm;  {spring - change to $U n/SULib}

    {$I PAS/GLOBAL.TEXT}

  {$I PAS/OPT.1.TEXT}
  {$I PAS/OPT.2.TEXT}

  {$I PAS/DUMP.TEXT}

  {$I PAS/DBG.PAS.TEXT}

  {$I PAS/INIT.TEXT}

  {$I PAS/DECL.TEXT}

  {$I PAS/BODY.TEXT}

  {$I PAS/MISC.TEXT}

  {$S }

  PROCEDURE Main;

    BEGIN {Main}
      Initialize;
      CallProg;
    END; {Main}

  BEGIN {Pascal}
    {$IFC ForOs}
    (*PLInitHeap(ErrNum, RefNum, 128, 16384 {delta} , 5 {default LDSN} , False);*)
    {$ENDC}

    Main;

    MarkTime; {marks time since StartTimer was called in initialize}
    IF ErrIndex = 0 THEN
      BEGIN
      IF Listing THEN
        BEGIN
        PutcF(ListingFCBP, IONewline); PutLineS(ListingFCBP, ReportTime^);
        END;
      IF NOT ConsListing THEN
        BEGIN
        WriteLn; WriteLn(ReportTime^);
        END;
      END;

  999:
    IF ErrIndex <> 0 THEN
      BEGIN {force out any remaining errors}
      LinePrinted := True;
      EolSource := True; InbufP := 0; Inbuf[0] := ' ';
      InbufLastValidByte := 1;
      NextCh;
      END;

    Finalize;
  END. {Pascal}

