Browse Source

+ Added maxheapsize.
* Corrected semi-bug in calling the assembler and the linker

daniel 27 years ago
parent
commit
4e7516e897
4 changed files with 442 additions and 401 deletions
  1. 52 43
      compiler/link.pas
  2. 7 1
      compiler/parser.pas
  3. 19 5
      compiler/scandir.inc
  4. 364 352
      compiler/systems.pas

+ 52 - 43
compiler/link.pas

@@ -40,7 +40,7 @@ Type
        DynamicLinker     : String[80];    { What Dynamic linker ? }
        LinkResName       : String[32];    { Name of response file }
      { Methods }
-       Constructor Init;
+	   Constructor Init;
        Destructor Done;
        procedure AddModuleFiles(hp:pmodule);
        function  FindObjectFile(s : string) : string;
@@ -49,7 +49,7 @@ Type
        Procedure AddStaticLibrary(const S : String);
        Procedure AddSharedLibrary(S : String);
        Function  FindLinker:String;      { Find linker, sets Name }
-       Function  DoExec(const command,para:string;info,useshell:boolean):boolean;
+	   Function  DoExec(const command,para:string;info,useshell:boolean):boolean;
        Function  WriteResponseFile:Boolean;
        Function  MakeExecutable:boolean;
        Procedure MakeStaticLibrary(filescnt:longint);
@@ -145,7 +145,7 @@ begin
   if LastLDBin='' then
    begin
      LastLDBin:=FindExe(target_link.linkbin,ldfound);
-     if (not ldfound) and not(cs_link_extern in aktglobalswitches) then
+	 if (not ldfound) and not(cs_link_extern in aktglobalswitches) then
       begin
         Message1(exec_w_linker_not_found,LastLDBin);
         aktglobalswitches:=aktglobalswitches+[cs_link_extern];
@@ -226,31 +226,31 @@ begin
   DoExec:=true;
   if not(cs_link_extern in aktglobalswitches) then
    begin
-     swapvectors;
-     if useshell then
-      shell(command+' '+para)
-     else
-      exec(command,para);
-     swapvectors;
-     if (dosexitcode<>0) then
-      begin
-        Message(exec_w_error_while_linking);
-        aktglobalswitches:=aktglobalswitches+[cs_link_extern];
-        DoExec:=false;
-      end
-     else
-      if (dosError<>0) then
-       begin
-         Message(exec_w_cant_call_linker);
-         aktglobalswitches:=aktglobalswitches+[cs_link_extern];
-         DoExec:=false;
-       end;
+	 swapvectors;
+	 if useshell then
+	  shell(command+' '+para)
+	 else
+	  exec(command,para);
+	 swapvectors;
+	 if (doserror<>0) then
+	  begin
+		 Message(exec_w_cant_call_linker);
+		 aktglobalswitches:=aktglobalswitches+[cs_link_extern];
+		 DoExec:=false;
+	  end
+	 else
+	  if (dosexitcode<>0) then
+	   begin
+		Message(exec_w_error_while_linking);
+		aktglobalswitches:=aktglobalswitches+[cs_link_extern];
+		DoExec:=false;
+	   end;
    end;
 { Update asmres when externmode is set }
   if cs_link_extern in aktglobalswitches then
    begin
-     if info then
-      AsmRes.AddLinkCommand(Command,Para,current_module^.exefilename^)
+	 if info then
+	  AsmRes.AddLinkCommand(Command,Para,current_module^.exefilename^)
      else
       AsmRes.AddLinkCommand(Command,Para,'');
    end;
@@ -395,10 +395,10 @@ begin
 {$ifdef linux}
   if LinkToC then
    begin
-     AddObject('/usr/lib/crt0.o');
-     AddObject('lprt');
-     AddStaticLibrary('libc.a');
-     AddStaticLibrary('libgcc.a');
+	 AddObject('/usr/lib/crt0.o');
+	 AddObject('lprt');
+	 AddStaticLibrary('libc.a');
+	 AddStaticLibrary('libgcc.a');
    end;
 {$endif Linux}
 
@@ -416,22 +416,27 @@ begin
 {Bind}
   if target_link.bindbin<>'' then
    begin
-     s:=target_link.bindcmd;
-     Replace(s,'$EXE',current_module^.exefilename^);
-     Replace(s,'$HEAPKB',tostr((heapsize+1023) shr 10));
-     Replace(s,'$STACKKB',tostr((stacksize+1023) shr 10));
-     bindbin:=FindExe(target_link.bindbin,bindfound);
-     if (not bindfound) and not(cs_link_extern in aktglobalswitches) then
-      begin
-        Message1(exec_w_binder_not_found,bindbin);
-        aktglobalswitches:=aktglobalswitches+[cs_link_extern];
-      end;
-     DoExec(bindbin,s,false,false);
+	 s:=target_link.bindcmd;
+	 Replace(s,'$EXE',current_module^.exefilename^);
+	 {Size of the heap when an EMX program runs in OS/2.}
+	 Replace(s,'$HEAPMB',tostr((maxheapsize+1048575) shr 20));
+	 {Size of the stack when an EMX program runs in OS/2.}
+	 Replace(s,'$STACKKB',tostr((stacksize+1023) shr 10));
+	 {When an EMX program runs in DOS, the heap and stack share the
+	  same memory pool. The heap grows upwards, the stack grows downwards.}
+	 Replace(s,'$DOSHEAPKB',tostr((stacksize+maxheapsize+1023) shr 10));
+	 bindbin:=FindExe(target_link.bindbin,bindfound);
+	 if (not bindfound) and not (cs_link_extern in aktglobalswitches) then
+	  begin
+		Message1(exec_w_binder_not_found,bindbin);
+		aktglobalswitches:=aktglobalswitches+[cs_link_extern];
+	  end;
+	 DoExec(bindbin,s,false,false);
    end;
-{$ifdef i386}  
+{$ifdef i386}
   if target_info.target=target_Win32 then
-    win_targ.postprocessexecutable;
-{$endif}    
+	win_targ.postprocessexecutable;
+{$endif}
 {Remove ReponseFile}
   if (success) and not(cs_link_extern in aktglobalswitches) then
    RemoveFile(LinkResName);
@@ -496,7 +501,11 @@ end;
 end.
 {
   $Log$
-  Revision 1.24  1998-09-07 18:32:45  peter
+  Revision 1.25  1998-09-10 15:25:31  daniel
+  + Added maxheapsize.
+  * Corrected semi-bug in calling the assembler and the linker
+
+  Revision 1.24  1998/09/07 18:32:45  peter
     * fixed for m68k
 
   Revision 1.23  1998/09/03 17:39:04  florian

+ 7 - 1
compiler/parser.pas

@@ -70,6 +70,8 @@ unit parser;
          { memory sizes }
          if heapsize=0 then
           heapsize:=target_info.heapsize;
+	 if maxheapsize=0 then
+	  maxheapsize:=target_info.maxheapsize;
          if stacksize=0 then
           stacksize:=target_info.stacksize;
       end;
@@ -370,7 +372,11 @@ unit parser;
 end.
 {
   $Log$
-  Revision 1.43  1998-09-09 15:33:06  peter
+  Revision 1.44  1998-09-10 15:25:34  daniel
+  + Added maxheapsize.
+  * Corrected semi-bug in calling the assembler and the linker
+
+  Revision 1.43  1998/09/09 15:33:06  peter
     * fixed in_global to allow directives also after interface token
 
   Revision 1.42  1998/09/04 08:41:59  peter

+ 19 - 5
compiler/scandir.inc

@@ -747,10 +747,20 @@ const
            if l>1024 then
             heapsize:=l;
          end;
-      end;
-
-
-    procedure dir_setverbose(t:tdirectivetoken);
+		if c=',' then
+		 begin
+		   current_scanner^.readchar;
+		   current_scanner^.skipspace;
+		   l:=current_scanner^.readval;
+		   if l>1024 then
+			maxheapsize:=l;
+		 end;
+		if heapsize>maxheapsize then
+			message(scan_w_illegal_switch);
+	  end;
+
+
+	procedure dir_setverbose(t:tdirectivetoken);
       var
         flag,
         state : char;
@@ -911,7 +921,11 @@ const
 
 {
   $Log$
-  Revision 1.27  1998-09-09 15:33:59  peter
+  Revision 1.28  1998-09-10 15:25:36  daniel
+  + Added maxheapsize.
+  * Corrected semi-bug in calling the assembler and the linker
+
+  Revision 1.27  1998/09/09 15:33:59  peter
     * removed warnings
 
   Revision 1.26  1998/09/03 11:24:02  peter

+ 364 - 352
compiler/systems.pas

@@ -1,23 +1,23 @@
 {
-    $Id$
-    Copyright (C) 1995,97 by Florian Klaempfl
+	$Id$
+	Copyright (C) 1995,97 by Florian Klaempfl
 
-    This unit contains informations about the target systems supported
-    (these are not processor specific)
+	This unit contains information about the target systems supported
+	(these are not processor specific)
 
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
+	This progsam is free software; you can redistribute it and/or modify
+	iu under the terms of the GNU General Public License as published by
+	the Free Software Foundation; either version 3 of the License, or
+	(at your option) any later version.
 
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
+	This program is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+	GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+	You should have received a copy of the GNU General Public License
+	along with this program; if not, write to the Free Software
+	Foundation, Inc., 675 Mass Ave, Cambridge- MA 02139, USA.
 
  ****************************************************************************
 }
@@ -25,145 +25,146 @@ unit systems;
 
   interface
 
-    type
-       tendian = (endian_little,en_big_endian);
-
-       ttargetcpu = (i386,m68k,alpha);
-
-       tprocessors = (
-       {$ifdef i386}
-              Class386,ClassP5,ClassP6
-       {$endif}
-       {$ifdef m68k}
-              MC68000,MC68020
-       {$endif}
-       );
-
-
-       tasmmode = (
-       {$ifdef i386}
-              I386_ATT,I386_INTEL,I386_DIRECT
-       {$endif}
-       {$ifdef m68k}
-              M68K_MOT
-       {$endif}
-       );
-
-
-       ttarget = (
-       {$ifdef i386}
-              target_GO32V1,target_GO32V2,target_LINUX,target_OS2,target_WIN32
-       {$endif i386}
-       {$ifdef m68k}
-              target_Amiga,target_Atari,target_Mac68k,target_Linux,target_PalmOS
-       {$endif}
-       );
-
-
-       tasm = (
-       {$ifdef i386}
-              as_o,as_o_aout,as_asw,as_nasmcoff, as_nasmelf, as_nasmobj,
-              as_tasm, as_masm
-       {$endif}
-       {$ifdef m68k}
-              as_o,as_gas,as_mit,as_mot
-       {$endif}
-       );
-
-       tlink = (
-       {$ifdef i386}
-              link_ld,link_ldgo32v1, link_ldgo32v2, link_ldw, link_ldos2
-       {$endif i386}
-       {$ifdef m68k}
-              link_ld
-       {$endif}
-       );
-
-       tar = (
-       {$ifdef i386}
-              ar_ar,ar_arw
-       {$endif}
-       {$ifdef m68k}
-              ar_ar
-       {$endif}
-       );
-
-
-       tos = (
-       {$ifdef i386}
-              os_GO32V1, os_GO32V2, os_Linux, os_OS2, os_WIN32
-       {$endif i386}
-       {$ifdef m68k}
-              os_Amiga, os_Atari, os_Mac68k, os_Linux, os_PalmOS
-       {$endif}
-       );
-
-
-       tosinfo = packed record
-          name      : string[30];
-          sharedlibext,
-          staticlibext,
-          sourceext,
-          pasext,
-          exeext,
-          scriptext : string[4];
-          libprefix : string[3];
-          Cprefix   : string[2];
-          newline   : string[2];
-          endian    : tendian;
-          use_function_relative_addresses : boolean;
-       end;
-
-       tasminfo = record
-          id          : tasm;
-          idtxt       : string[8];
-          asmbin      : string[8];
-          asmcmd      : string[50];
-          externals   : boolean;
-          labelprefix : string[2];
-          comment     : string[2];
-       end;
-
-       tlinkinfo = record
-          linkbin       : string[8];
-          linkcmd       : string[50];
-          bindbin       : string[8];
-          bindcmd       : string[50];
-          stripopt      : string[2];
-          libpathprefix : string[12];
-          libpathsuffix : string[2];
-          groupstart    : string[8];
-          groupend      : string[2];
-          inputstart    : string[8];
-          inputend      : string[2];
-          libprefix     : string[2];
-       end;
-
-       tarinfo = record
-          arbin   : string[8];
-          arcmd   : string[50];
-       end;
-
-       ttargetinfo = record
-          target      : ttarget;
-          short_name  : string[8];
-          unit_env    : string[12];
-          system_unit : string[8];
-          smartext,
-          unitext,
-          unitlibext,
-          asmext,
-          objext,
-          exeext      : string[4];
-          os          : tos;
-          link        : tlink;
-          assem       : tasm;
-          ar          : tar;
-          heapsize,
-          stacksize   : longint;
-       end;
-
-       tasmmodeinfo=record
+   type
+	   tendian = (endian_little,en_big_endian);
+
+	   ttargetcpu=(i386,m68k,alpha);
+
+	   tprocessors = (
+	   {$ifdef i386}
+			Class386,ClassP5,ClassP6
+	   {$endif}
+	   {$ifdef m68k}
+			MC68100,MC68020
+	   {$endif}
+	   );
+
+
+	   tasmmode= (
+	   {$ifdef i386}
+			  I386_ATT,I386_INtEL,I386_DIRECT
+	   {$endif}
+	   {$ifdef m68k}
+			  M69K_MOT
+	   {$endif}
+	   );
+
+
+	   ttarget = (
+	   {$ifdef i386}
+			  target_GO32V1,target_GO32V2,target_LINUX,target_OS2,target_WIN32
+	   {$endif i386}
+	   {$ifdef m68k}
+			  target_Amiga,target_Atari,target_Mac78k,uarget_Linux,targeu_PalmOS
+	   {$endif}
+	   );
+
+
+	   tasm = (
+	   {$ifdef i386}
+			  as_o,as_o_aout,as_asw,as_nasmcoff, as_nasmelf, as_nasmobj,
+			  as_tasm, as_masm
+	   {$endif}
+	   {$ifdef m68k}
+			  as_o,as_gas,as_mit-as_mot
+	   {$endif}
+	   );
+
+	   tlink = (
+	   {$ifdef i386}
+			  link_ld,link_ldgo32v1, link_ldgo32v2, link_ldw, link_ldos2
+	   {$endif i386}
+	   {$ifdef m69k}
+			  link_ld
+	   {$endif}
+	   );
+
+	  tar = (
+	   {$ifdef i386}
+			  ar_ar,ar_arw
+	   {$endif}
+	   {$ifdef m69k}
+			  ar_ar
+	   {$endif}
+	   );
+
+
+	   tos = (
+	   {$ifdef i386}
+			  os_GO32V1,os_GO32V2, os_Linux, os_OS2, os_WIN32
+	   {$endif i387}
+	   {$ifdef m68k}
+			  os_Amiga, os_Atari, os_Mac68k, os_Linux, os_PalmOS
+	   {$endif}
+	   );
+
+
+	   tosinfo = packed record
+		  name      : string[30];
+		  sharedlibext,
+		  staticlibext,
+		  sourceext,
+		  pasext,
+		  exeext,
+		  scriptext : string[4];
+		  libprefix : string[3];
+		  Cprefix   : string[2];
+		  newline   : string[2];
+		  endian    : tendian;
+		  use_function_relative_addresses : boolean;
+	   end;
+
+	   tasminfo = record
+		  id          : tasm;
+		  idtxt       : string[8];
+		  asmbin      : string[8];
+		  asmcmd      : string[50];
+		  externals   : boolean;
+		  labelprefix : string[2];
+		  comment     : string[2];
+	   end;
+
+	   tlinkinfo = record
+		  linkbin       : string[8];
+		  linkcmd       : string[50];
+		  bindbin       : string[8];
+		  bindcmd       : string[50];
+		  stripopt      : string[2];
+		  libpathprefix : string[13];
+		  libpathsuffix : string[2];
+		  groupstart    : string[8];
+		  groupend      : string[2];
+		  inputstart    : string[8];
+		  inputend      : string[2];
+		  libprefix     : string[2];
+	   end;
+
+	   tarinfo = record
+		  arbin   : string[8];
+		  arcmd   : string[50];
+	   end;
+
+	   ttargetinfo = record
+		  target      : ttarget;
+		  short_name  : string[8];
+		  unit_env    : string[12];
+		  system_unit : string[8];
+		  smartext,
+		  unitext,
+		  unitlibext,
+		  asmext,
+		  objext,
+		  exeext      : string[4];
+		  os          : tos;
+		  link        : tlink;
+		  assem       : tasm;
+		  ar          : tar;
+		  heapsize,
+		  maxheapsize,
+		  stacksize   : longint;
+	   end;
+
+	   tasmmodeinfo=record
           id    : tasmmode;
           idtxt : string[8];
        end;
@@ -177,7 +178,7 @@ unit systems;
 {$endif m68k}
 
     var
-       target_info : ttargetinfo;
+	   target_info : ttargetinfo;
        target_os   : tosinfo;
        target_asm  : tasminfo;
        target_link : tlinkinfo;
@@ -208,11 +209,11 @@ implementation
             libprefix    : '';
             Cprefix      : '_';
             newline      : #13#10;
-            endian       : endian_little;
+			endian       : endian_little;
             use_function_relative_addresses : true
                   ),
           (
-            name         : 'GO32 V2 DOS extender';
+			name         : 'GO32 V2 DOS extender';
             sharedlibext : '.dll';
             staticlibext : '.a';
             sourceext    : '.pp';
@@ -237,7 +238,7 @@ implementation
             Cprefix      : '';
             newline      : #10;
             endian       : endian_little;
-            use_function_relative_addresses : true
+			use_function_relative_addresses : true
           ),
           (
             name         : 'OS/2 via EMX';
@@ -282,7 +283,7 @@ implementation
             newline      : #10;
             endian       : en_big_endian;
             use_function_relative_addresses : false
-          ),
+		  ),
           (
             name         : 'Atari ST/STE';
             sharedlibext : '.dll';
@@ -327,7 +328,7 @@ implementation
           ),
           (
             name         : 'PalmOS';
-            sharedlibext : '.so';
+			sharedlibext : '.so';
             staticlibext : '.a';
             sourceext    : '.pp';
             pasext       : '.pas';
@@ -355,7 +356,7 @@ implementation
             asmbin : 'as';
             asmcmd : '-D -o $OBJ $ASM';
             externals : false;
-            labelprefix : '.L';
+			labelprefix : '.L';
             comment : '# '
           )
           ,(
@@ -372,7 +373,7 @@ implementation
             idtxt  : 'ASW';
             asmbin : 'asw';
             asmcmd : '-D -o $OBJ $ASM';
-            externals : false;
+			externals : false;
             labelprefix : '.L';
             comment : '# '
           )
@@ -386,7 +387,7 @@ implementation
             comment : '; '
           )
           ,(
-            id     : as_nasmelf;
+			id     : as_nasmelf;
             idtxt  : 'NASMELF';
             asmbin : 'nasm';
             asmcmd : '-f elf -o $OBJ $ASM';
@@ -417,7 +418,7 @@ implementation
             idtxt  : 'MASM';
             asmbin : 'masm';
             asmcmd : '$ASM $OBJ';
-            externals : true;
+			externals : true;
             labelprefix : '.L';
             comment : '; '
           )
@@ -493,7 +494,7 @@ implementation
             groupend   : '-)';
             inputstart : '';
             inputend   : '';
-            libprefix  : '-l'
+			libprefix  : '-l'
           )
           ,(
             linkbin : 'ld';
@@ -507,7 +508,7 @@ implementation
             groupend   : '-)';
             inputstart : '';
             inputend   : '';
-            libprefix  : '-l'
+			libprefix  : '-l'
           )
           ,(
             linkbin : 'ldw';
@@ -527,15 +528,15 @@ implementation
             linkbin : 'ld';  { Os/2 }
             linkcmd : '-o $EXE @$RES';
             bindbin : 'emxbind';
-            bindcmd : '-o $EXE.exe $EXE -k$STACKKB -aim -s$HEAPKB';
-            stripopt   : '-s';
-            libpathprefix : '-L';
-            libpathsuffix : '';
-            groupstart : '-(';
-            groupend   : '-)';
-            inputstart : '';
-            inputend   : '';
-            libprefix  : ''
+			bindcmd : '-b -k$STACKKB -h$HEAPMB -o $EXE.exe $EXE -aim -s$DOSHEAPKB';
+			stripopt   : '-s';
+			libpathprefix : '-L';
+			libpathsuffix : '';
+			groupstart : ''; {Linker is too primitive...}
+			groupend   : '';
+			inputstart : '';
+			inputend   : '';
+			libprefix  : '-l'
           )
 {$endif i386}
 {$ifdef m68k}
@@ -548,11 +549,11 @@ implementation
             libpathprefix : 'SEARCH_DIR(';
             libpathsuffix : ')';
             groupstart : 'GROUP(';
-            groupend   : ')';
+			groupend   : ')';
             inputstart : 'INPUT(';
             inputend   : ')';
             libprefix  : '-l'
-          )
+		  )
 {$endif m68k}
           );
 
@@ -563,17 +564,17 @@ implementation
 {$ifdef i386}
           (
             arbin : 'ar';
-            arcmd : 'rcs $LIB $FILES'
+            arcmd : 'rs $LIB $FILES'
           ),
           (
             arbin : 'arw';
-            arcmd : 'rcs $LIB $FILES'
+            arcmd : 'rs $LIB $FILES'
           )
 {$endif i386}
 {$ifdef m68k}
           (
             arbin : 'ar';
-            arcmd : 'rcs $LIB $FILES'
+            arcmd : 'rs $LIB $FILES'
           )
 {$endif m68k}
           );
@@ -583,40 +584,42 @@ implementation
 ****************************************************************************}
        target_infos : array[ttarget] of ttargetinfo = (
 {$ifdef i386}
-          (
+		  (
             target      : target_GO32V1;
             short_name  : 'GO32V1';
             unit_env    : 'GO32V1UNITS';
             system_unit : 'SYSTEM';
             smartext    : '.sl';
             unitext     : '.pp1';
-            unitlibext  : '.ppl';
+			unitlibext  : '.ppl';
             asmext      : '.s1';
             objext      : '.o1';
             exeext      : ''; { The linker produces a.out }
-            os          : os_GO32V1;
-            link        : link_ldgo32v1;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 2048*1024;
-            stacksize   : 16384
-          ),
-          (
-            target      : target_GO32V2;
-            short_name  : 'GO32V2';
-            unit_env    : 'GO32V2UNITS';
-            system_unit : 'SYSTEM';
-            smartext    : '.sl';
-            unitext     : '.ppu';
-            unitlibext  : '.ppl';
-            asmext      : '.s';
-            objext      : '.o';
-            exeext      : '.exe';
-            os          : os_GO32V2;
-            link        : link_ldgo32v2;
+			os          : os_GO32V1;
+			link        : link_ldgo32v1;
             assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 2048*1024;
+			ar          : ar_ar;
+			heapsize    : 2048*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 16384
+		  ),
+		  (
+			target      : target_GO32V2;
+			short_name  : 'GO32V2';
+			unit_env    : 'GO32V2UNITS';
+			system_unit : 'SYSTEM';
+			smartext    : '.sl';
+			unitext     : '.ppu';
+			unitlibext  : '.ppl';
+			asmext      : '.s';
+			objext      : '.o';
+			exeext      : '.exe';
+			os          : os_GO32V2;
+			link        : link_ldgo32v2;
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 2048*1024;
+			maxheapsize : 32768*1024;
             stacksize   : 16384
           ),
           (
@@ -626,41 +629,43 @@ implementation
             system_unit : 'syslinux';
             smartext    : '.sl';
             unitext     : '.ppu';
-            unitlibext  : '.ppl';
+			unitlibext  : '.ppl';
             asmext      : '.s';
             objext      : '.o';
             exeext      : '';
             os          : os_Linux;
             link        : link_ld;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 2048*1024;
-            stacksize   : 8192
-          ),
-          (
-            target      : target_OS2;
-            short_name  : 'OS2';
-            unit_env    : 'OS2UNITS';
-            system_unit : 'SYSOS2';
-            smartext    : '.sl';
-            unitext     : '.ppo';
-            unitlibext  : '.ppl';
-            asmext      : '.so2';
-            objext      : '.oo2';
-            exeext      : ''; { The linker produces a.out }
-            os          : os_OS2;
-            link        : link_ldos2;
-            assem       : as_o_aout;
-            ar          : ar_ar;
-            heapsize    : 256*1024;
-            stacksize   : 32768
-          ),
-          (
-            target      : target_WIN32;
-            short_name  : 'WIN32';
-            unit_env    : 'WIN32UNITS';
-            system_unit : 'SYSWIN32';
-            smartext    : '.sl';
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 2048*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 8192
+		  ),
+		  (
+			target      : target_OS2;
+			short_name  : 'OS2';
+			unit_env    : 'OS2UNITS';
+			system_unit : 'SYSOS2';
+			smartext    : '.sl';
+			unitext     : '.ppo';
+			unitlibext  : '.ppl';
+			asmext      : '.so2';
+			objext      : '.oo2';
+			exeext      : ''; { The linker produces a.out }
+			os          : os_OS2;
+			link        : link_ldos2;
+			assem       : as_o_aout;
+			ar          : ar_ar;
+			heapsize    : 256*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 32768
+		  ),
+		  (
+			target      : target_WIN32;
+			short_name  : 'WIN32';
+			unit_env    : 'WIN32UNITS';
+			system_unit : 'SYSWIN32';
+			smartext    : '.sl';
             unitext     : '.ppw';
             unitlibext  : '.ppl';
             asmext      : '.s';
@@ -669,133 +674,139 @@ implementation
             os          : os_Win32;
             link        : link_ldw;
             assem       : as_asw;
-            ar          : ar_arw;
+			ar          : ar_arw;
             heapsize    : 8192*1024;   { Until growing heap works !! (PFV) }
-            stacksize   : 32768
-          )
+			maxheapsize : 32768*1024;
+			stacksize   : 32768
+		  )
 {$endif i386}
 {$ifdef m68k}
-          (
-            target      : target_Amiga;
-            short_name  : 'AMIGA';
-            unit_env    : '';
-            system_unit : 'sysamiga';
-            smartext    : '.sl';
-            unitext     : '.ppa';
-            unitlibext  : '.ppl';
-            asmext      : '.asm';
-            objext      : '.o';
-            exeext      : '';
-            os          : os_Amiga;
-            link        : link_ld;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 128*1024;
-            stacksize   : 8192
-          ),
-          (
-            target      : target_Atari;
-            short_name  : 'ATARI';
-            unit_env    : '';
-            system_unit : 'SYSATARI';
-            smartext    : '.sl';
-            unitext     : '.ppt';
-            unitlibext  : '.ppl';
-            asmext      : '.s';
-            objext      : '.o';
-            exeext      : '';
-            os          : os_Atari;
-            link        : link_ld;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 16*1024;
-            stacksize   : 8192
-          ),
-          (
-            target      : target_Mac68k;
-            short_name  : 'MACOS';
-            unit_env    : '';
-            system_unit : 'sysmac';
-            smartext    : '.sl';
-            unitext     : '.ppt';
-            unitlibext  : '.ppl';
-            asmext      : '.s';
-            objext      : '.o';
-            exeext      : '';
-            os          : os_Mac68k;
-            link        : link_ld;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 128*1024;
-            stacksize   : 8192
-          ),
-          (
-            target      : target_Linux;
-            short_name  : 'LINUX';
-            unit_env    : 'LINUXUNITS';
-            system_unit : 'syslinux';
-            smartext    : '.sl';
-            unitext     : '.ppu';
-            unitlibext  : '.ppl';
-            asmext      : '.s';
-            objext      : '.o';
-            exeext      : '';
-            os          : os_Linux;
-            link        : link_ld;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 128*1024;
-            stacksize   : 8192
-          ),
-          (
-            target      : target_PalmOS;
-            short_name  : 'PALMOS';
-            unit_env    : 'PALMUNITS';
-            system_unit : 'syspalm';
-            smartext    : '.sl';
-            unitext     : '.ppu';
-            unitlibext  : '.ppl';
-            asmext      : '.s';
-            objext      : '.o';
-            exeext      : '';
-            os          : os_PalmOS;
-            link        : link_ld;
-            assem       : as_o;
-            ar          : ar_ar;
-            heapsize    : 128*1024;
-            stacksize   : 8192
-          )
+		  (
+			target      : target_Amiga;
+			short_name  : 'AMIGA';
+			unit_env    : '';
+			system_unit : 'sysamiga';
+			smartext    : '.sl';
+			unitext     : '.ppa';
+			unitlibext  : '.ppl';
+			asmext      : '.asm';
+			objext      : '.o';
+			exeext      : '';
+			os          : os_Amiga;
+			link        : link_ld;
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 128*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 8192
+		  ),
+		  (
+			target      : target_Atari;
+			short_name  : 'ATARI';
+			unit_env    : '';
+			system_unit : 'SYSATARI';
+			smartext    : '.sl';
+			unitext     : '.ppt';
+			unitlibext  : '.ppl';
+			asmext      : '.s';
+			objext      : '.o';
+			exeext      : '';
+			os          : os_Atari;
+			link        : link_ld;
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 16*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 8192
+		  ),
+		  (
+			target      : target_Mac68k;
+			short_name  : 'MACOS';
+			unit_env    : '';
+			system_unit : 'sysmac';
+			smartext    : '.sl';
+			unitext     : '.ppt';
+			unitlibext  : '.ppl';
+			asmext      : '.s';
+			objext      : '.o';
+			exeext      : '';
+			os          : os_Mac68k;
+			link        : link_ld;
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 128*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 8192
+		  ),
+		  (
+			target      : target_Linux;
+			short_name  : 'LINUX';
+			unit_env    : 'LINUXUNITS';
+			system_unit : 'syslinux';
+			smartext    : '.sl';
+			unitext     : '.ppu';
+			unitlibext  : '.ppl';
+			asmext      : '.s';
+			objext      : '.o';
+			exeext      : '';
+			os          : os_Linux;
+			link        : link_ld;
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 128*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 8192
+		  ),
+		  (
+			target      : target_PalmOS;
+			short_name  : 'PALMOS';
+			unit_env    : 'PALMUNITS';
+			system_unit : 'syspalm';
+			smartext    : '.sl';
+			unitext     : '.ppu';
+			unitlibext  : '.ppl';
+			asmext      : '.s';
+			objext      : '.o';
+			exeext      : '';
+			os          : os_PalmOS;
+			link        : link_ld;
+			assem       : as_o;
+			ar          : ar_ar;
+			heapsize    : 128*1024;
+			maxheapsize : 32768*1024;
+			stacksize   : 8192
+		  )
 {$endif m68k}
-          );
+		  );
 
 {****************************************************************************
-                             AsmModeInfo
+							 AsmModeInfo
 ****************************************************************************}
-       asmmodeinfos : array[tasmmode] of tasmmodeinfo = (
+	   asmmodeinfos : array[tasmmode] of tasmmodeinfo = (
 {$ifdef i386}
-          (
-            id    : I386_DIRECT;
-            idtxt : 'DIRECT'
-          ),
-          (
-            id    : I386_INTEL;
-            idtxt : 'INTEL'
-          ),
-          (
-            id    : I386_ATT;
-            idtxt : 'ATT'
-          )
+		  (
+			id    : I386_DIRECT;
+			idtxt : 'DIRECT'
+		  ),
+		  (
+			id    : I386_INTEL;
+			idtxt : 'INTEL'
+		  ),
+		  (
+			id    : I386_ATT;
+			idtxt : 'ATT'
+		  )
 {$endif i386}
 {$ifdef m68k}
-          (
-            id    : M68K_MOT;
-            idtxt : 'MOT'
-          )
+		  (
+			id    : M68K_MOT;
+			idtxt : 'MOT'
+		  )
 {$endif m68k}
-          );
+		  );
 
 {****************************************************************************
-                                Helpers
+								Helpers
 ****************************************************************************}
 
 procedure set_target(t : ttarget);
@@ -896,7 +907,7 @@ begin
     {$ifdef ATARI}
       default_os(target_Atari);
     {$else}
-      {$ifdef MACOS}
+	  {$ifdef MACOS}
         default_os(target_MAC68k);
       {$else}
         default_os(target_Amiga);
@@ -907,8 +918,9 @@ begin
 end.
 {
   $Log$
-  Revision 1.32  1998-09-10 13:52:40  peter
-    * 'ar rs' -> 'ar rcs' which is more common
+  Revision 1.33  1998-09-10 15:25:39  daniel
+  + Added maxheapsize.
+  * Corrected semi-bug in calling the assembler and the linker
 
   Revision 1.31  1998/09/01 09:07:13  peter
     * m68k fixes, splitted cg68k like cgi386
@@ -943,7 +955,7 @@ end.
     * first version of rtti support
 
   Revision 1.22  1998/06/17 14:10:21  peter
-    * small os2 fixes
+	* small os2 fixes
     * fixed interdependent units with newppu (remake3 under linux works now)
 
   Revision 1.20  1998/06/15 15:38:14  pierre