コード例 #1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="owner">Parent window.</param>
        /// <param name="omfFile">OMF file object.</param>
        /// <param name="omfSeg">Segment to view.  Must be part of omfFile.</param>
        /// <param name="formatter">Text formatter.</param>
        public OmfSegmentViewer(Window owner, OmfFile omfFile, OmfSegment omfSeg,
                                Formatter formatter)
        {
            InitializeComponent();
            Owner       = owner;
            DataContext = this;

            //mOmfFile = omfFile;
            mOmfSeg    = omfSeg;
            mFormatter = formatter;

            string fmt = (string)FindResource("str_FileOffsetLenFmt");

            FileOffsetLenStr = string.Format(fmt,
                                             mFormatter.FormatOffset24(omfSeg.FileOffset),
                                             omfSeg.FileLength,
                                             mFormatter.FormatHexValue(omfSeg.FileLength, 4));

            GenerateHeaderItems();

            RecordItems = omfSeg.Records;
            RelocItems  = new List <RelocItem>(omfSeg.Relocs.Count);
            foreach (OmfReloc omfRel in omfSeg.Relocs)
            {
                RelocItems.Add(new RelocItem(omfRel, formatter));
            }
            RelocItems.Sort(delegate(RelocItem a, RelocItem b) {
                return(a.RelocRef.Offset - b.RelocRef.Offset);
            });

            fmt             = (string)FindResource("str_RecordHeaderFmt");
            RecordHeaderStr = string.Format(fmt, RecordItems.Count);
            fmt             = (string)FindResource("str_RelocHeaderFmt");
            RelocHeaderStr  = string.Format(fmt, RelocItems.Count);
        }
コード例 #2
0
ファイル: OmfViewer.xaml.cs プロジェクト: retroric/6502bench
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="owner">Parent window.</param>
        /// <param name="pathName">Path to file on disk.  Only used for display.</param>
        /// <param name="data">File contents.</param>
        /// <param name="formatter">Text formatter.</param>
        public OmfViewer(Window owner, string pathName, byte[] data, Formatter formatter) {
            InitializeComponent();
            Owner = owner;
            DataContext = this;

            PathName = pathName;
            mFormatter = formatter;

            mOmfFile = new OmfFile(data);
            mOmfFile.Analyze(mFormatter);

            string summary;
            if (mOmfFile.OmfFileKind == OmfFile.FileKind.Foreign) {
                summary = (string)FindResource("str_OmfFileNot");
            } else {
                string fileStr;
                switch (mOmfFile.OmfFileKind) {
                    case OmfFile.FileKind.Indeterminate:
                        fileStr = (string)FindResource("str_OmfFileIndeterminateStr");
                        break;
                    case OmfFile.FileKind.Load:
                        fileStr = (string)FindResource("str_OmfFileLoadStr");
                        break;
                    case OmfFile.FileKind.Object:
                        fileStr = (string)FindResource("str_OmfFileObjectStr");
                        break;
                    case OmfFile.FileKind.Library:
                        fileStr = (string)FindResource("str_OmfFileLibraryStr");
                        break;
                    default:
                        fileStr = (string)FindResource("str_OmfFileUnknownStr");
                        break;
                }

                string fmt;
                if (mOmfFile.SegmentList.Count == 1) {
                    fmt = (string)FindResource("str_OmfFileSummaryFmt");
                } else {
                    fmt = (string)FindResource("str_OmfFileSummaryPlFmt");
                }
                summary = string.Format(fmt, fileStr, mOmfFile.SegmentList.Count);
            }
            FileSummaryStr = summary;

            foreach (OmfSegment omfSeg in mOmfFile.SegmentList) {
                SegmentListItems.Add(new SegmentListItem(omfSeg));
            }
            MessageStrings = string.Join("\r\n", mOmfFile.MessageList.ToArray());
        }