private void WriteEntry(DataController dc, HuFileEntry fe, int pos, int start, bool ipl) { dc.Fill(0x20, pos + 0x01, HuFileEntry.MaxNameLength); dc.Fill(0x20, pos + 0x0e, HuFileEntry.MaxExtensionLength); if (ipl) { WriteIplName(dc, pos); } else { WriteEntryName(dc, fe, pos); } dc.SetByte(pos + 0x11, fe.Password); dc.SetWord(pos + 0x12, fe.Size); dc.SetWord(pos + 0x14, fe.LoadAddress); dc.SetWord(pos + 0x16, fe.ExecuteAddress); dc.SetCopy(pos + 0x18, fe.DateTimeData); // 最上位は未調査 dc.SetByte(pos + 0x1d, (start >> 14) & 0x7f); dc.SetByte(pos + 0x1e, start & 0x7f); dc.SetByte(pos + 0x1f, (start >> 7) & 0x7f); }
public void Make(int Track, int Side, int Sector, int NumOfSector, int SectorsInTrack, int Density, bool Delete, int Status, int DataSize) { Header = new byte[0x10]; var dc = new DataController(Header); this.Track = Track; this.Side = Side; this.Sector = Sector; this.NumOfSector = NumOfSector; this.SectorsInTrack = SectorsInTrack; this.Density = Density; this.IsDelete = Delete; this.Status = Status; this.DataSize = DataSize; this.IsDirty = true; dc.SetByte(0, Track); dc.SetByte(1, Side); dc.SetByte(2, Sector); dc.SetByte(3, NumOfSector); dc.SetWord(4, SectorsInTrack); dc.SetByte(6, Density); dc.SetByte(7, IsDelete ? 0x10 : 0x00); dc.SetByte(8, Status); dc.SetWord(0x0e, DataSize); Data = new byte[DataSize]; dc.SetBuffer(Data); dc.Fill(FillValue); }