{$E+,T-} program bintohex ; const TheHEADER = 'CP/M Binary File to ASCII Hex File Program'; TheVERSION= 'Version -- October 10, 1982.'; TheTRAILER= 'Binary to Hex File conversion done.'; hexinit = '0123456789ABCDEF'; type sector = packed array [1..128] of char; filestring= string 14; var ofilename , ifilename : filestring; hexfile , binfile : file of sector; hexbuf , binbuf : sector; hextab : string 16; i , j , k : integer; function OpenInp: boolean ; begin {* OpenInp *} OpenInp := true; write('INPUT FILE? '); read(ifilename); reset(ifilename,binfile); if EOF(binfile) then begin writeln(' ... file is empty...'); OpenInp := false; end; end; {* OpenInp *} function OpenOut:boolean ; begin {* OpenOut *} OpenOut := true; write('OUTPUT FILE? '); read(ofilename); rewrite(ofilename,hexfile); end; {* OpenOut *} begin {* BintoHex *} writeln(TheHEADER); writeln(TheVERSION); hextab := Hexinit; repeat until OpenInp; writeln('------> File opened.'); repeat until OpenOut; writeln('------> File opened.'); while not EOF(binfile) do begin read(binfile,binbuf); for i := 0 to 1 do begin for j := 1 to 64 do begin k := ord(binbuf[i*64+j]); hexbuf[2*j-1] := hextab[(k div 16)+1]; hexbuf[2*j] := hextab[(k mod 16)+1]; end; write(hexfile,hexbuf); end; end; writeln(TheTRAILER); end. {* BintoHex *} .