home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 September / Simtel20_Sept92.cdr / msdos / filutl / comhex.arc / COMHEX.PAS < prev   
Pascal/Delphi Source File  |  1986-02-14  |  2KB  |  66 lines

  1. (* ******************************************************************** *)
  2. (* ComHex - Dump a COM file into a HEX file.                            *)
  3. (* Author - Victor Lee , Queen's University, Kingston, Ontario, CANADA  *)
  4. (*                       Network id -  VIC at QUCDN                     *)
  5. (* Date   - 1986 Feb 12                                                 *)
  6. (* Note :   See HexCom to convert  HEX file into COM file.              *)
  7. (* ******************************************************************** *)
  8. Program ComHex ;
  9. type  blocks = array [1..128] of char ;
  10.       S2 = string[2] ;
  11.  var
  12.     i : byte ;
  13.     ComName,HexName : string[14] ;
  14.     FN    : string[8] ;
  15.     abyte : byte ;
  16.     Afile : file of byte ;
  17.     Bfile : Text ;
  18.    count,Rcount : integer ;
  19. label  exit ;
  20.  
  21.  function hex(num:byte) : S2;
  22.  var digit :byte ;
  23.       hex1 : char ;
  24.     begin (* hex *)
  25.     digit := num and $0F ;
  26.     if digit > 9 then digit := digit + 7 ;
  27.     hex1 := chr($30 + digit) ;
  28.     digit := (num and $F0) div $10 ;
  29.     if digit > 9 then digit := digit + 7 ;
  30.     hex := concat(chr($30+digit),hex1);
  31.     end;
  32.  
  33.  
  34.     Begin (* hex Dump *)
  35.     Writeln('Enter Name of COM File to Dump into HEX file ');
  36.     Readln(FN);
  37.     ComName := FN + '.COM' ;
  38.     HexName := FN + '.HEX' ;
  39.     Assign (Afile,ComName);
  40.     Assign (Bfile,HexName);
  41.     Reset(Afile);
  42.     Rewrite(Bfile);
  43.     count := 0 ;
  44.     Rcount := 0 ;
  45.     Writeln('Converting File: ',ComName,' file size =',FileSize(Afile));
  46.     Write(' 32 bytes make a 64 byte Record . Record count = ');
  47.     While True Do
  48.       Begin (* write a line *)
  49.       For i := 1 to $20 do
  50.          Begin (* dump file *)
  51.          if Eof(Afile) then goto exit;
  52.          read(Afile,abyte);
  53.          count := count + 1 ;
  54.     (*   write(hex(abyte));   *)
  55.          write(Bfile,hex(abyte));
  56.          End;
  57.       Writeln(Bfile);
  58.       Rcount := Rcount + 1 ;
  59.       Write(RCount ,'  ');
  60.       End ; (* write a line *)
  61.   exit :
  62.    Close(Bfile) ;
  63.    Writeln('Number of 64 byte records =',Rcount +1);
  64.    Writeln('New file ',HexName,' created.  File size is ',count*2);
  65.    End. (* hex Dump *)
  66.