home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / oberon-a-1.4ß.lha / Oberon-A / source / FPE / FPE.mod < prev    next >
Text File  |  1994-08-08  |  5KB  |  198 lines

  1. (***************************************************************************
  2.  
  3.      $RCSfile: FPE.mod $
  4.   Description: Frank's Programming Environment
  5.  
  6.                A programming utility designed to integrate seperate
  7.                programming tools (editor, compiler, linker, etc.) into a
  8.                single system.  It also provides a simple source code
  9.                manager.
  10.      Requires: arp.library and intuisup.library
  11.  
  12.    Created by: fjc (Frank Copeland)
  13.     $Revision: 1.9 $
  14.       $Author: fjc $
  15.         $Date: 1994/08/08 16:16:03 $
  16.  
  17.   Copyright © 1993-1994, Frank Copeland.
  18.   This file is part of FPE.
  19.   See FPE.doc for conditions of use and distribution.
  20.  
  21.   Log entries are at the end of the file.
  22.  
  23. ***************************************************************************)
  24.  
  25. MODULE FPE;
  26.  
  27. (*
  28. ** $C= CaseChk       $I= IndexChk  $L= LongAdr   $N- NilChk
  29. ** $P- PortableCode  $R= RangeChk  $S= StackChk  $T= TypeChk
  30. ** $V= OvflChk       $Z= ZeroVars
  31. **
  32. ** Compiler NIL checking is replaced by ASSERTs at the appropriate places.
  33. *)
  34.  
  35. IMPORT
  36.   Exec, Dos, ASL, ARP, Args, IU := IntuiUtil, ISup := IntuiSup, Data,
  37.   FPEDlg, Errors, SYS := SYSTEM;
  38.  
  39.  
  40. CONST
  41.   VersionTag = "$VER: FPE 1.6 (26.7.1994)";
  42.  
  43. VAR startDir : Dos.FileLockPtr;
  44.  
  45.  
  46. (*------------------------------------*)
  47. PROCEDURE* Cleanup ();
  48.  
  49. BEGIN (* Cleanup *)
  50.   IF startDir # NIL THEN startDir := Dos.base.CurrentDir (startDir) END
  51. END Cleanup;
  52.  
  53.  
  54. (*------------------------------------*)
  55. PROCEDURE Init ();
  56.  
  57.   VAR
  58.     programName : Exec.STRPTR;
  59.     programNameIndex : INTEGER;
  60.     process : Dos.ProcessPtr;
  61.     dirLength : LONGINT;
  62.     ignore : Dos.FileLockPtr;
  63.     result : LONGINT;
  64.  
  65. BEGIN (* Init *)
  66.   startDir := NIL;
  67.   SYS.SETCLEANUP (Cleanup);
  68.  
  69.   ASL.OpenLib (FALSE);
  70.   ISup.OpenLib (TRUE);
  71.   IF (Dos.base.version < 37) OR (ASL.base = NIL) THEN
  72.     ARP.OpenLib (TRUE);
  73.   END;
  74.  
  75.   process := SYS.VAL (Dos.ProcessPtr, Exec.base.FindTask (NIL));
  76.   startDir := process.currentDir;
  77.  
  78.   Data.Init();
  79.   FPEDlg.Init();
  80.  
  81.   IF ~Args.IsCLI THEN
  82.     IF Args.NumArgs = 0 THEN
  83.       Errors.Abort( "FPE - too few arguments ?" );
  84.     ELSIF Args.NumArgs = 1 THEN
  85.       programNameIndex := 0;
  86.       Data.currentDir := Dos.base.DupLock (Args.ArgList [0].lock);
  87.     ELSIF Args.NumArgs = 2 THEN
  88.       programNameIndex := 1;
  89.       Data.currentDir := Dos.base.DupLock (Args.ArgList [1].lock);
  90.     ELSE
  91.       Errors.Abort( "FPE - too many arguments" );
  92.     END; (* IF *)
  93.     programName := Args.ArgList [programNameIndex].name;
  94.     IF programName = NIL THEN
  95.       Data.programName := "";
  96.     ELSE
  97.       COPY (programName^, Data.programName)
  98.     END; (* ELSE *)
  99.   ELSE
  100.     IF Args.argc = 1 THEN
  101.       programNameIndex := 0;
  102.     ELSIF Args.argc = 2 THEN
  103.       programNameIndex := 1;
  104.     ELSIF Args.argc > 2 THEN
  105.       Errors.Abort( "FPE - too many arguments" );
  106.     END; (* IF *)
  107.     IF Dos.base.version >= 37 THEN
  108.       programName := Dos.base.FilePart (Args.argv [programNameIndex]^)
  109.     ELSE
  110.       programName := ARP.base.BaseName (Args.argv [programNameIndex]^)
  111.     END;
  112.     IF (programName = NIL) OR (SYS.STRLEN (programName^) = 0) THEN
  113.       dirLength := SYS.STRLEN (Args.argv [programNameIndex]^)
  114.     ELSE
  115.       dirLength :=
  116.         SYS.STRLEN
  117.           (Args.argv [programNameIndex]^) - SYS.STRLEN (programName^);
  118.     END; (* ELSE *)
  119.     IF dirLength > 0 THEN
  120.       Args.argv [programNameIndex] [dirLength - 1] := 0X;
  121.       Data.currentDir :=
  122.         Dos.base.Lock
  123.           (Args.argv^ [programNameIndex]^, Dos.sharedLock);
  124.     ELSE
  125.       Data.currentDir := Dos.base.DupLock (startDir);
  126.     END; (* IF *)
  127.     IF programName = NIL THEN
  128.       Data.programName := "";
  129.     ELSE
  130.       COPY (programName^, Data.programName)
  131.     END; (* ELSE *)
  132.   END; (* IF *)
  133.   ignore := Dos.base.CurrentDir (Data.currentDir);
  134.   IF Dos.base.version >= 37 THEN
  135.     IF
  136.       Dos.base.NameFromLock
  137.         (Data.currentDir, Data.currentPath, LEN(Data.currentPath) - 1)
  138.     THEN END
  139.   ELSE
  140.     result := ARP.base.PathName (Data.currentDir, Data.currentPath, 10 )
  141.   END
  142. END Init;
  143.  
  144.  
  145. (*------------------------------------*)
  146. PROCEDURE Main ();
  147.  
  148. BEGIN (* Main *)
  149.   FPEDlg.Open ();
  150.   FPEDlg.Start ();
  151. END Main;
  152.  
  153. BEGIN (* FPE *)
  154.   Init();
  155.   Main();
  156. END FPE.
  157.  
  158. (***************************************************************************
  159.  
  160.   $Log: FPE.mod $
  161.   Revision 1.9  1994/08/08  16:16:03  fjc
  162.   Release 1.4
  163.  
  164.   Revision 1.8  1994/06/21  22:11:28  fjc
  165.   *** empty log message ***
  166.  
  167.   Revision 1.7  1994/06/17  17:26:27  fjc
  168.   - Updated for release
  169.  
  170.   Revision 1.6  1994/06/09  13:35:18  fjc
  171.   - Bumped version tag.
  172.  
  173.   Revision 1.5  1994/06/04  23:49:52  fjc
  174.   - Changed to use new Amiga interface
  175.  
  176.   Revision 1.4  1994/05/19  23:46:58  fjc
  177.   - Updated VersionTag
  178.  
  179.   Revision 1.3  1994/05/12  21:26:09  fjc
  180.   - Prepared for release
  181.  
  182.   Revision 1.2  1994/01/24  14:33:33  fjc
  183.   Changed version control header
  184.  
  185.   Revision 1.1  1994/01/15  17:32:38  fjc
  186.   Start of revision control
  187.  
  188.   0.6  (06-Sep-93)  General code rework and tidy-up
  189.                     Changed the way module Data handles tools.
  190.                     Changed the tool dialog to conform.
  191.                     General improvements.
  192.   0.5  (25-Jul-93)  First Oberon version, renamed to FPE.
  193.   0.0 - 0.4         Early versions written in Modula 2 and
  194.                     named M2Org.
  195.  
  196. ***************************************************************************)
  197.  
  198.