home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c / qk3exe.pas < prev    next >
Pascal/Delphi Source File  |  2020-01-01  |  2KB  |  68 lines

  1. (* ******************************************************************** *)
  2. (* HexExe - Load a HEX (Hex dump file) and makes it a Exe file.         *)
  3. (* Author - Victor Lee , Queen's University, Kingston, Ontario, CANADA  *)
  4. (*                       Network id -  VIC at QUCDN                     *)
  5. (* Date   - 1988 October 12                                             *)
  6. (* Note :   See ExeHex to convert  Exe file into HEX file.              *)
  7. (* ******************************************************************** *)
  8. Program HexExe ;
  9. type  blocks = array [1..128] of char ;
  10.       S2 = string[2] ;
  11.  var
  12.     i : byte ;
  13.     ExeName,HexName : string[14] ;
  14.     FN    : string[8] ;
  15.     REC   : string[64] ;
  16.     abyte : byte ;
  17.     Afile : file of byte ;
  18.     Bfile : Text ;
  19.    count,Rcount : integer ;
  20. label  exit ;
  21.  
  22.  function HexNum(char1,char2:char) : byte ;
  23.  var Hi,Low :byte ;
  24.       tempbyte : byte ;
  25.     begin (* hex *)
  26.     Hi := ord(char1) ;
  27.     Low := ord(char2);
  28.     If Hi > $40 then Hi := Hi + 9 ;
  29.     Hi := Hi shl 4 ;
  30.     If Low> $40 then Low:= Low + 9 ;
  31.     Low := Low and $0F ;
  32.     hexNum := Hi + Low ;
  33.     end;
  34.  
  35.     Begin (* Exe Load *)
  36.     Writeln('Enter Name of HEX File to Load into Exe file ');
  37.     Readln(FN);
  38.     ExeName := FN + '.EXE' ;
  39.     HexName := FN + '.HEX' ;
  40.     Assign (Afile,ExeName);
  41.     Assign (Bfile,HexName);
  42.     Reset(Bfile);
  43.     Rewrite(Afile);
  44.     count := 0 ;
  45.     Rcount := 0 ;
  46.     Writeln('Converting File: ',HexName,' file size =',FileSize(Afile));
  47.     Writeln(' 64 byte record makes 32 bytes.');
  48.     While Not Eof(Bfile) Do
  49.       Begin (* read  a record *)
  50.       Rcount := Rcount + 1 ;
  51.       Write(RCount ,'  ');
  52.       Readln(Bfile,Rec) ;
  53.       writeln('rec=',Rec);
  54.       i := 1 ;
  55.       While i < length(Rec) do
  56.          Begin (* load file *)
  57.          abyte := HexNum(Rec[i],Rec[i+1]) ;
  58.          i := i + 2 ;
  59.          write(Afile,abyte);
  60.          count := count + 1 ;
  61.          End;
  62.       End ; (* read a record  *)
  63.   exit :
  64.    Close(Afile) ;
  65.    Writeln('Number of 64 byte records read =',Rcount);
  66.    Writeln('New file ',ExeName,' created.');
  67.    End. (* Exe Load *)
  68.