MODULE YMF754Util;

IMPORT
	Commands, Streams, Codecs, Files, Strings;

CONST
	FNameInstRAM = "YMF754.Bin";

PROCEDURE Open* (context : Commands.Context);
VAR
	name, str: ARRAY 256 OF CHAR;
	in: Streams.Reader;
	w, binW: Files.Writer;
	token: ARRAY 1024 OF CHAR;
	f, binF: Files.File;
	c, l, res: LONGINT;
BEGIN
	context.arg.SkipWhitespace; context.arg.String(name);
	c := 1;

	in := Codecs.OpenInputStream (name);
	IF in # NIL THEN

		Strings.Concat (name, ".Bin", str);
		binF := Files.New (FNameInstRAM);
		Files.OpenWriter (binW, binF, 0);

		REPEAT

			in.SkipWhitespace;
			in.Token (token);

			IF Strings.Pos ("{", token) # -1 THEN
				Strings.IntToStr (c, str); INC (c);
				Strings.Concat (name, str, str);
				Strings.Concat (str, ".txt", str);
				f := Files.New (str);
				Files.OpenWriter (w, f, 0);

				Strings.Concat ("Creating file: ", str, str);
				context.out.String(str); context.out.Ln;
			END;

			IF Strings.Pos ("0x", token) = 0 THEN
				Strings.Delete (token, 0, 2);
				Strings.TrimRight (token, ",");

				IF w # NIL THEN
					w.String (token); w.Ln;
				END;

				IF (w # NIL) & (binW # NIL) THEN
					Strings.HexStrToInt (token, l, res);
					IF res = Strings.Ok THEN
						binW.RawLInt (l);
					ELSE
						context.error.String("Error!!!"); context.error.Ln;
					END;
				END;

			END;

			IF Strings.Pos ("}", token) # -1 THEN
				context.out.String("Closing file"); context.out.Ln;
				w.Update;
				Files.Register (f);
			END;

		UNTIL in.res = Streams.EOF;

		binW.Update;
		Files.Register (binF);
	END;
END Open;

END YMF754Util.

SystemTools.Free YMF754Util~
YMF754Util.Open 724hwmcode.c~

Tar.Create Sage.YMF754.tar
	Sage.YMF754.Mod
	YMF754.Bin
	Sage.DriverDatabase.XML
	Sage.YMF754Util.Mod
	724hwmcode.c
	Sage.YMF754.txt
~


