예제 #1
0
 public abstract void FormatHeader(TextWriter writer, Context ctx, HeaderChunk hdr);
예제 #2
0
        public override void FormatHeader(TextWriter writer, Context ctx, HeaderChunk hdrChunk)
        {
            Header hdr = hdrChunk.Header;

            // header is handled by Inform, we can't do much besides write comments
            writer.WriteLine("Switches v{0};", hdr.ZVersion);
            if ((hdr.Flags1 & 2) != 0)
            {
                writer.WriteLine("Statusline time;");
            }
            writer.WriteLine("Release {0};", hdr.Release);
            writer.Write("Serial \"");
            foreach (byte b in hdr.Serial)
            {
                writer.Write((char)b);
            }
            writer.WriteLine("\";");

            writer.WriteLine("! Flags 1: {0} ({1})", hdr.Flags1, FormatFlags1(ctx, hdr.Flags1));
            writer.WriteLine("! Preload size: {0}", hdr.EndLod);
            writer.WriteLine("! Starting address: {0}", hdr.Start);
            writer.WriteLine("! Vocab table: {0}", hdr.Vocab);
            writer.WriteLine("! Object table: {0}", hdr.Objects);
            writer.WriteLine("! Global table: {0}", hdr.Globals);
            writer.WriteLine("! Dynamic size: {0}", hdr.Impure);
            writer.WriteLine("! Flags 2: {0} ({1})", hdr.Flags2, FormatFlags2(hdr.Flags2));
            writer.WriteLine("! Abbrevs table: {0}", hdr.Words);
            writer.WriteLine("! Length: {0} ({1}x{2})", hdr.Length * ctx.SizeFactor,
                             hdr.Length, ctx.SizeFactor);
            writer.WriteLine("! Checksum: ${0:X4}", hdr.Checksum);
            writer.WriteLine("! Interpreter number(*): {0}", hdr.TerpNum);
            writer.WriteLine("! Interpreter version(*): {0}", hdr.TerpVersion);
            writer.WriteLine("! Screen height(*): {0}", hdr.ScreenRows);
            writer.WriteLine("! Screen width(*): {0}", hdr.ScreenColumns);
            writer.WriteLine("! Screen width in units(*): {0}", hdr.ScreenWidth);
            writer.WriteLine("! Screen height in units(*): {0}", hdr.ScreenHeight);
            writer.WriteLine("! Font width(V5)/height(V6)(*): {0}", hdr.FontWidth);
            writer.WriteLine("! Font height(V5)/width(V6)(*): {0}", hdr.FontHeight);
            writer.WriteLine("! Routines offset(*): {0}", hdr.RoutineOffset * 8);
            writer.WriteLine("! Strings offset(*): {0}", hdr.StringOffset);
            writer.WriteLine("! Default BG color: {0}", hdr.DefaultBG);
            writer.WriteLine("! Default FG color: {0}", hdr.DefaultFG);
            writer.WriteLine("! Terminating chars table(*): {0}", hdr.TCharsTable);
            writer.WriteLine("! Buffer width(*): {0}", hdr.BufferWidth);
            writer.WriteLine("! Standard revision(*): {0}", hdr.StandardVersion);
            writer.WriteLine("! Alphabet table(*): {0}", hdr.AlphabetTable);
            writer.WriteLine("! Header extension table(*): {0}", hdr.ExtensionTable);

            writer.Write("! Username(*): ");
            foreach (byte b in hdr.Username)
            {
                writer.Write((char)b);
            }
            writer.WriteLine();

            writer.Write("! Creator ver: ");
            foreach (byte b in hdr.Creator)
            {
                writer.Write((char)b);
            }
            writer.WriteLine();
        }
예제 #3
0
        public override void FormatHeader(TextWriter writer, Context ctx, HeaderChunk hdrChunk)
        {
            Header hdr = hdrChunk.Header;

            if (ctx.ZVersion != 3)
            {
                writer.WriteLine(INDENT + ".NEW {0}", ctx.ZVersion);
            }

            if (ctx.ZVersion < 5)
            {
                // header is handled by ZAPF, we can't do much besides write comments
                if (ctx.ZVersion == 3)
                {
                    writer.WriteLine(INDENT + "; Z-machine version 3");
                }

                if ((hdr.Flags1 & 2) != 0)
                {
                    writer.WriteLine(INDENT + ".TIME");
                }
                writer.WriteLine(INDENT + "; Flags 1: {0} ({1})", hdr.Flags1, FormatFlags1(ctx, hdr.Flags1));
                writer.WriteLine(INDENT + "; Release {0}", hdr.Release);
                writer.WriteLine(INDENT + "; Preload size: {0}", hdr.EndLod);
                writer.WriteLine(INDENT + "; Starting address: {0}", hdr.Start);
                writer.WriteLine(INDENT + "; Vocab table: {0}", hdr.Vocab);
                writer.WriteLine(INDENT + "; Object table: {0}", hdr.Objects);
                writer.WriteLine(INDENT + "; Global table: {0}", hdr.Globals);
                writer.WriteLine(INDENT + "; Dynamic size: {0}", hdr.Impure);
                writer.WriteLine(INDENT + "; Flags 2: {0} ({1})", hdr.Flags2, FormatFlags2(hdr.Flags2));

                writer.Write(INDENT + "; Serial: ");
                foreach (byte b in hdr.Serial)
                {
                    writer.Write((char)b);
                }
                writer.WriteLine();

                writer.WriteLine(INDENT + "; Abbrevs table: {0}", hdr.Words);
                writer.WriteLine(INDENT + "; Length: {0} ({1}x{2})", hdr.Length * ctx.SizeFactor,
                                 hdr.Length, ctx.SizeFactor);
                writer.WriteLine(INDENT + "; Checksum: ${0:X4}", hdr.Checksum);
                writer.WriteLine(INDENT + "; Interpreter number(*): {0}", hdr.TerpNum);
                writer.WriteLine(INDENT + "; Interpreter version(*): {0}", hdr.TerpVersion);
                writer.WriteLine(INDENT + "; Screen height(*): {0}", hdr.ScreenRows);
                writer.WriteLine(INDENT + "; Screen width(*): {0}", hdr.ScreenColumns);
                writer.WriteLine(INDENT + "; Screen width in units(*): {0}", hdr.ScreenWidth);
                writer.WriteLine(INDENT + "; Screen height in units(*): {0}", hdr.ScreenHeight);
                writer.WriteLine(INDENT + "; Font width(V5)/height(V6)(*): {0}", hdr.FontWidth);
                writer.WriteLine(INDENT + "; Font height(V5)/width(V6)(*): {0}", hdr.FontHeight);
                writer.WriteLine(INDENT + "; Routines offset(*): {0}", hdr.RoutineOffset * 8);
                writer.WriteLine(INDENT + "; Strings offset(*): {0}", hdr.StringOffset);
                writer.WriteLine(INDENT + "; Default BG color: {0}", hdr.DefaultBG);
                writer.WriteLine(INDENT + "; Default FG color: {0}", hdr.DefaultFG);
                writer.WriteLine(INDENT + "; Terminating chars table(*): {0}", hdr.TCharsTable);
                writer.WriteLine(INDENT + "; Buffer width(*): {0}", hdr.BufferWidth);
                writer.WriteLine(INDENT + "; Standard revision(*): {0}", hdr.StandardVersion);
                writer.WriteLine(INDENT + "; Alphabet table(*): {0}", hdr.AlphabetTable);
                writer.WriteLine(INDENT + "; Header extension table(*): {0}", hdr.ExtensionTable);

                writer.Write(INDENT + "; Username(*): ");
                foreach (byte b in hdr.Username)
                {
                    writer.Write((char)b);
                }
                writer.WriteLine();

                writer.Write(INDENT + "; Creator ver: ");
                foreach (byte b in hdr.Creator)
                {
                    writer.Write((char)b);
                }
                writer.WriteLine();
            }
            else
            {
                // header has to be assembled in code
                //XXX
                throw new NotImplementedException();
            }
        }