Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }