Browse Source

+ ZX Spectrum internal linker: invoke the ihx2tzx to postprocess the ihx file,
produced by the internal linker (in the future, the code of this utility may
be integrated into the compiler)
* changed the exe extension of ZX Spectrum to '.tzx'

git-svn-id: trunk@45578 -

nickysn 5 years ago
parent
commit
84cd9e129b
2 changed files with 35 additions and 1 deletions
  1. 1 1
      compiler/systems/i_zxspectrum.pas
  2. 34 0
      compiler/systems/t_zxspectrum.pas

+ 1 - 1
compiler/systems/i_zxspectrum.pas

@@ -44,7 +44,7 @@ unit i_zxspectrum;
             cpu          : cpu_z80;
             unit_env     : '';
             extradefines : '';
-            exeext       : '';
+            exeext       : '.tzx';
             defext       : '.def';
             scriptext    : '.sh';
             smartext     : '.sl';

+ 34 - 0
compiler/systems/t_zxspectrum.pas

@@ -68,6 +68,8 @@ implementation
        public
          constructor create;override;
          procedure InitSysInitUnitName;override;
+         function MakeExecutable: boolean; override;
+         function postprocessexecutable(const fn : string): boolean;
        end;
 
 
@@ -390,6 +392,38 @@ procedure TInternalLinkerZXSpectrum.InitSysInitUnitName;
     sysinitunit:='si_prc';
   end;
 
+function TInternalLinkerZXSpectrum.MakeExecutable: boolean;
+  begin
+    result:=inherited;
+    { Post process }
+    if result and not(cs_link_nolink in current_settings.globalswitches) then
+      result:=PostProcessExecutable(current_module.exefilename);
+  end;
+
+function TInternalLinkerZXSpectrum.postprocessexecutable(const fn: string): boolean;
+  var
+    exitcode: longint;
+    FoundBin: ansistring;
+    Found: Boolean;
+    utilexe: TCmdStr;
+  begin
+    result:=false;
+
+    utilexe:=utilsprefix+'ihx2tzx';
+    FoundBin:='';
+    Found:=false;
+    if utilsdirectory<>'' then
+      Found:=FindFile(utilexe,utilsdirectory,false,Foundbin);
+    if (not Found) then
+      Found:=FindExe(utilexe,false,Foundbin);
+
+    if Found then
+      begin
+        exitcode:=RequotedExecuteProcess(foundbin,' '+fn);
+        result:=exitcode<>0;
+      end;
+  end;
+
 {*****************************************************************************
                                      Initialize
 *****************************************************************************}