Начал переделку работы с ФС RT-11 под испольвание маппера. Можно сравнить куски кода работы с описателем файла:
Было
Код:
F_ESTAT deStatus = (F_ESTAT)currSegment.Words[de + 0 * 2];
if (deStatus.Has(F_ESTAT.E_PERM | F_ESTAT.E_TENT | F_ESTAT.E_MPTY))
{
RT11File f = new(); // new file, read dir entry
f.Status = deStatus;
f.FileName =( currSegment.Words[de + 1 * 2].Rad50Decode()
+ currSegment.Words[de + 2 * 2].Rad50Decode()).TrimEnd(); // filnam: 6 chars
f.Extension = currSegment.Words[de + 3 * 2].Rad50Decode().TrimEnd(); // extension: 3 chars
f.BlkNum = startBlockN; // startblock on disk
f.BlkCount = currSegment.Words[de + 4 * 2]; // blocks in data stream
if (deStatus.Has(F_ESTAT.E_MPTY))
freeBlocks += f.BlkCount;
else
usedFileBlocks += f.BlkCount;
// currSegment.Words[de + 5 * 2]; // ignore job/channel
UInt16 id = currSegment.Words[de + 6 * 2];
f.CreationDate = RT11Date.Decode(informator, id); // creation date
...
Стало
Код:
DirectoryEntry dirEntry = new(currSegment.Bytes, de);
if (dirEntry.Status.Has(F_ESTAT.E_PERM | F_ESTAT.E_TENT | F_ESTAT.E_MPTY))
{
RT11File f = new(); // new file! read dir entry
f.Status = dirEntry.Status;
f.FileName = dirEntry.Name.TrimEnd();
f.Extension = dirEntry.Extension.TrimEnd();
f.BlkNum = startBlockN; // startblock on disk
f.BlkCount = dirEntry.Length; // blocks in data stream
if (dirEntry.Status.Has(F_ESTAT.E_MPTY))
freeBlocks += f.BlkCount;
else
usedFileBlocks += f.BlkCount;
// dirEntry.JobNum dirEntry.Channel dirEntry.Time // ignore job/channel, but dirEntry.Time (in future)
f.CreationDate = dirEntry.Date.RDateTime; // creation date
...
Какие такие жёстко закодированные смещения? 

Ну и флаги статуса записи о файле уже были доделаны, но имена ещё не были сменены на более юзерфрендли