public abstract void FormatHeader(TextWriter writer, Context ctx, HeaderChunk hdr);
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(); }
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(); } }