// /*************************************************************************** // Aaru Data Preservation Suite // ---------------------------------------------------------------------------- // // Filename : Structs.cs // Author(s) : Natalia Portillo // // Component : RT-11 file system plugin. // // --[ Description ] ---------------------------------------------------------- // // Identifies the RT-11 file system and shows information. // // --[ License ] -------------------------------------------------------------- // // This library is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation; either version 2.1 of the // License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, see . // // ---------------------------------------------------------------------------- // Copyright © 2011-2024 Natalia Portillo // ****************************************************************************/ using System.Runtime.InteropServices; namespace Aaru.Filesystems; // Information from http://www.trailing-edge.com/~shoppa/rt11fs/ /// /// Implements detection of the DEC RT-11 filesystem public sealed partial class RT11 { #region Nested type: HomeBlock [StructLayout(LayoutKind.Sequential, Pack = 1)] readonly struct HomeBlock { /// Bad block replacement table [MarshalAs(UnmanagedType.ByValArray, SizeConst = 130)] public readonly byte[] badBlockTable; /// Unused [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public readonly byte[] unused; /// INITIALIZE/RESTORE data area [MarshalAs(UnmanagedType.ByValArray, SizeConst = 38)] public readonly byte[] initArea; /// BUP information area [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)] public readonly byte[] bupInformation; /// Empty [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] public readonly byte[] empty; /// Reserved [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public readonly byte[] reserved1; /// Reserved [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public readonly byte[] reserved2; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 14)] public readonly byte[] empty2; /// Cluster size public readonly ushort cluster; /// Block of the first directory segment public readonly ushort rootBlock; /// "V3A" in Radix-50 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public readonly byte[] systemVersion; /// Name of the volume, 12 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public readonly byte[] volname; /// Name of the volume owner, 12 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public readonly byte[] ownername; /// RT11 defines it as "DECRT11A ", 12 bytes [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] public readonly byte[] format; /// Unused public readonly ushort unused2; /// Checksum of preceding 255 words (16 bit units) public readonly ushort checksum; } #endregion }