MODULE CVTHEX; (*$VER 1.0*) (*$HDR -1*) (* converts a binary file to hex inline statements for Modula-2 *) FROM ASCII IMPORT EOL; FROM Streams IMPORT ConnectStream, DisconnectStream, BinaryStream, Stream, TextStream, InputStream, OutputStream, ReadWord, WriteStr,WriteChar; FROM Conversions IMPORT HexToString; FROM Terminal IMPORT WriteString, WriteLn, ReadString,Write; FROM BreakLib IMPORT CheckBreak; VAR i,w,res,outres: CARDINAL; s: ARRAY [0..11] OF CHAR; in,out: ARRAY [0..33] OF CHAR; is,os: Stream; done: BOOLEAN; BEGIN WriteString("Convert Binary File to Hex Inline Statements"); WriteLn; WriteLn; WriteString("Input File: "); ReadString(in); WriteString("Output File: "); ReadString(out); WriteLn; ConnectStream(is,in,BinaryStream,InputStream,res); IF res = 0 THEN ConnectStream(os,out,TextStream,OutputStream,outres); IF res = 0 THEN ReadWord(is,w,res); WHILE (res = 0) & NOT (CheckBreak()) DO i := 0; WriteStr(os,' INLINE(',outres); Write('.'); REPEAT HexToString(w,s,5,done); WriteStr(os,s,outres); ReadWord(is,w,res); IF (i = 4) OR (res # 0) THEN WriteStr(os,'H',outres); ELSE WriteStr(os,'H,',outres); END; INC(i); UNTIL (res # 0) OR (i = 5) OR (CheckBreak()); WriteStr(os,');',outres); WriteChar(os,EOL,outres); END; DisconnectStream(is,res); DisconnectStream(os,outres); ELSE WriteString("%Cannot open output file."); END; ELSE WriteString("%Cannot open input file."); END; WriteLn; END CVTHEX. .