(* ******************************************************************** *) (* HexExe - Load a HEX (Hex dump file) and makes it a Exe file. *) (* Author - Victor Lee , Queen's University, Kingston, Ontario, CANADA *) (* Network id - VIC at QUCDN *) (* Date - 1988 October 12 *) (* Note : See ExeHex to convert Exe file into HEX file. *) (* ******************************************************************** *) Program HexExe ; type blocks = array [1..128] of char ; S2 = string[2] ; var i : byte ; ExeName,HexName : string[14] ; FN : string[8] ; REC : string[64] ; abyte : byte ; Afile : file of byte ; Bfile : Text ; count,Rcount : integer ; label exit ; function HexNum(char1,char2:char) : byte ; var Hi,Low :byte ; tempbyte : byte ; begin (* hex *) Hi := ord(char1) ; Low := ord(char2); If Hi > $40 then Hi := Hi + 9 ; Hi := Hi shl 4 ; If Low> $40 then Low:= Low + 9 ; Low := Low and $0F ; hexNum := Hi + Low ; end; Begin (* Exe Load *) Writeln('Enter Name of HEX File to Load into Exe file '); Readln(FN); ExeName := FN + '.EXE' ; HexName := FN + '.HEX' ; Assign (Afile,ExeName); Assign (Bfile,HexName); Reset(Bfile); Rewrite(Afile); count := 0 ; Rcount := 0 ; Writeln('Converting File: ',HexName,' file size =',FileSize(Afile)); Writeln(' 64 byte record makes 32 bytes.'); While Not Eof(Bfile) Do Begin (* read a record *) Rcount := Rcount + 1 ; Write(RCount ,' '); Readln(Bfile,Rec) ; writeln('rec=',Rec); i := 1 ; While i < length(Rec) do Begin (* load file *) abyte := HexNum(Rec[i],Rec[i+1]) ; i := i + 2 ; write(Afile,abyte); count := count + 1 ; End; End ; (* read a record *) exit : Close(Afile) ; Writeln('Number of 64 byte records read =',Rcount); Writeln('New file ',ExeName,' created.'); End. (* Exe Load *)