--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:38 by OpenVMS SDL EV3-3 -- Source: 13-MAY-1993 10:46:37 $1$DGA7274:[LIB_ADA.LIS]F11DDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package F11DDEF is -- module $F11DDEF IDENT X-3 -- -- File sections shall be recorded in the Data Area. The following types of -- descriptors shall be record in the data area of a volume. -- -- o Volume Descriptors -- o Boot Record (BOOT) -- o Volume Descriptor Set Terminator (VDST) -- o Primary Volume Descriptor (PVD) -- o Supplementary Volume Descriptor (SVD) -- o Volume Partition Descriptor (VPD) -- o File Descriptors -- o Directory Descriptors -- o Path Tables -- -- -- ISO 9660 standard constants -- HS_K_LOGICAL_BLOCK_SIZE : constant := 2048; -- Current Volume Descriptor Block Size HS_K_SYSTEM_AREA : constant := 0; -- Logical Block number of System Area HS_K_DATA_AREA : constant := 16; -- Logical Block number of Data Area HS_K_ISO_9660_VERSION_1988 : constant := 1; -- Volume Descriptor Version # for ISO 9660 (1988) -- -- Character set coding -- HS_K_SPACE : constant := 32; -- ' ' fill character HS_K_FULL_STOP : constant := 46; -- '.'-filename.extension break HS_K_SEMICOLON : constant := 59; -- ';'-extension;version break HS_K_ROOT_DIRECTORY_ID : constant := 0; -- Root Directory Identifier HS_K_PARENT_DIRECTORY_ID : constant := 1; -- Parent Directory Identifier --+ -- FILE_ID -- -- A File Identifier consist of the following sequence: -- - File name : A sequence of 0 -> 30 'D' or 'D1' characters -- - FULL_STOP -- - Extension : A sequence of 0 -> 30 'D' or 'D1' characters -- - SEMICOLON -- - Version # : A sequence of 1 to 5 digits; up to "32767" -- If 'File Name' length equals 0, then Extension must be 1 or greater -- If 'Extension' length equals 0, then File Name must be 1 or greater -- if 'Version' length equals 0, then Version is assumed to be 1 -- The length of 'File Name' + 'Extension' must not exceed 30. --- HS_FNAME_S_FILE_ID : constant := 32; -- Old size name - synonym type HS_F11D_FILE_ID_TYPE is record FILLER_1 : STRING(1 .. 32); -- filename.ext;version end record; for HS_F11D_FILE_ID_TYPE use record FILLER_1 at 0 range 0 .. 255; end record; for HS_F11D_FILE_ID_TYPE'SIZE use 256; HS_F11D_FILE_ID_TYPE_INIT : constant HS_F11D_FILE_ID_TYPE := (FILLER_1 => (others => ASCII.NUL)); --+ -- Identifier -- -- This descriptor shall specify an identifier. If all bytes in this -- field are set to %X20, it shall mean that no such identifier is defined. --- HS_ID_S_IDENTIFIER : constant := 128; -- Old size name - synonym type HS_F11D_IDENTIFIER_TYPE is record DATA : INTEGER_8_ARRAY (1 .. 128); -- Text Identifier end record; for HS_F11D_IDENTIFIER_TYPE use record DATA at 0 range 0 .. 1023; end record; for HS_F11D_IDENTIFIER_TYPE'SIZE use 1024; --+ -- ASCII_DATE_TIME -- -- The date and time shall be represented by a 16-byte field. -- If Byte positions 1-16 are the digit '0' then -- it shall mean that date and time are not specified. --- HS_AUTC_S_ASCII_DATE_TIME : constant := 16; -- Old size name - synonym type HS_F11D_ASCII_DATE_TYPE is record YEAR : STRING(1 .. 4); -- year (1-9999) MONTH : STRING(1 .. 2); -- month (1-12) DAY : STRING(1 .. 2); -- day (1-31) HOUR : STRING(1 .. 2); -- hour (0-23) MINUTE : STRING(1 .. 2); -- minute (0-59) SECOND : STRING(1 .. 2); -- second (0-59) HUNDREDTH : STRING(1 .. 2); -- hundredth (0-99) end record; for HS_F11D_ASCII_DATE_TYPE use record YEAR at 0 range 0 .. 31; MONTH at 4 range 0 .. 15; DAY at 6 range 0 .. 15; HOUR at 8 range 0 .. 15; MINUTE at 10 range 0 .. 15; SECOND at 12 range 0 .. 15; HUNDREDTH at 14 range 0 .. 15; end record; for HS_F11D_ASCII_DATE_TYPE'SIZE use 128; HS_F11D_ASCII_DATE_TYPE_INIT : constant HS_F11D_ASCII_DATE_TYPE := (YEAR => (others => ASCII.NUL), MONTH => (others => ASCII.NUL), DAY => (others => ASCII.NUL), HOUR => (others => ASCII.NUL), MINUTE => (others => ASCII.NUL), SECOND => (others => ASCII.NUL), HUNDREDTH => (others => ASCII.NUL)); --+ -- BINARY_DATE_TIME -- -- The data and time shall be represented by six 8-bit numbers --- HS_BUTC_S_BINARY_DATE_TIME : constant := 6; -- Old size name - synonym type HS_F11D_BINARY_DATE_TYPE is record YEAR : UNSIGNED_BYTE; -- year since 1900 (1-99) MONTH : UNSIGNED_BYTE; -- month (1-12) DAY : UNSIGNED_BYTE; -- day (1-31) HOUR : UNSIGNED_BYTE; -- hour (0-23) MINUTE : UNSIGNED_BYTE; -- minute (0-59) SECOND : UNSIGNED_BYTE; -- second (0-59) end record; for HS_F11D_BINARY_DATE_TYPE use record YEAR at 0 range 0 .. 7; MONTH at 1 range 0 .. 7; DAY at 2 range 0 .. 7; HOUR at 3 range 0 .. 7; MINUTE at 4 range 0 .. 7; SECOND at 5 range 0 .. 7; end record; for HS_F11D_BINARY_DATE_TYPE'SIZE use 48; HS_F11D_BINARY_DATE_TYPE_INIT : constant HS_F11D_BINARY_DATE_TYPE := (YEAR => 0, MONTH => 0, DAY => 0, HOUR => 0, MINUTE => 0, SECOND => 0); --+ -- PATH_TABLE_RECORD -- -- A Path Table contain a set of records describing a directory hierarchy -- for those volume of a Volume Set the sequence numbers of which are less -- than, or equal to, the assigned Volume Set size of the volume. -- -- For each directory in the directory hierarchy other then the Root -- Directory, the Path Table shall contain a record which identifies -- the directory, its Parent Directory and its location. The records -- in a Path Table shall be number starting at 1. The first record in -- the Path Table shall identify the Root Directory and it location. -- --- HS_PTBL_S_PATH_TABLE_RECORD : constant := 40; -- Old size name - synonym type HS_F11D_PATH_TABLE_REC_TYPE is record EXTENT_LOCATION : UNSIGNED_LONGWORD; -- Location of Extent XAR_LENGTH : UNSIGNED_BYTE; -- Extended Attribute Record length DIRECTORY_ID_LENGTH : UNSIGNED_BYTE; -- Length of directory Identifier PARENT_DIRECTORY : UNSIGNED_WORD; -- Parent Directory Number DIRECTORY_ID : STRING(1 .. 32); -- Directory Identifier (dirname) end record; for HS_F11D_PATH_TABLE_REC_TYPE use record EXTENT_LOCATION at 0 range 0 .. 31; XAR_LENGTH at 4 range 0 .. 7; DIRECTORY_ID_LENGTH at 5 range 0 .. 7; PARENT_DIRECTORY at 6 range 0 .. 15; DIRECTORY_ID at 8 range 0 .. 255; end record; for HS_F11D_PATH_TABLE_REC_TYPE'SIZE use 320; HS_F11D_PATH_TABLE_REC_TYPE_INIT : constant HS_F11D_PATH_TABLE_REC_TYPE := (EXTENT_LOCATION => 0, XAR_LENGTH => 0, DIRECTORY_ID_LENGTH => 0, PARENT_DIRECTORY => 0, DIRECTORY_ID => (others => ASCII.NUL)); --+ -- DIRECTORY -- This descriptor shall define a directory record. A directory record -- contains information to locate a File Section; an Extended Attribute -- Record associated with a File Section; the identification of a file; -- attributes of a file and file section. --- HS_DREC_M_EXISTENCE : constant := 16#00000001#; HS_DREC_M_DIRECTORY : constant := 16#00000002#; HS_DREC_M_ASSOCIATED : constant := 16#00000004#; HS_DREC_M_RECORD : constant := 16#00000008#; HS_DREC_M_PROTECTION : constant := 16#00000010#; HS_DREC_M_RESERVED : constant := 16#00000060#; HS_DREC_M_MULTI_EXTENT : constant := 16#00000080#; HS_DREC_A_PADDING : constant := 34; -- Pad byte HS_DREC_A_SYSTEM_USE : constant := 34; -- System use HS_DREC_S_DIRECTORY : constant := 512; -- Old size name - synonym type HS_FILE_FLAGS_TYPE is -- File characteristics record EXISTENCE : BOOLEAN; -- If set; nonexistent DIRECTORY : BOOLEAN; -- If set; directory record ASSOCIATED : BOOLEAN; -- If set; associated file RECOR : BOOLEAN; -- If set; record format via XAR.RFM PROTECTION : BOOLEAN; -- If set; enforce protection FILLER_1 : UNSIGNED_2; -- Reserved MULTI_EXTENT : BOOLEAN; -- If set; extend record end record; for HS_FILE_FLAGS_TYPE use record EXISTENCE at 0 range 0 .. 0; DIRECTORY at 0 range 1 .. 1; ASSOCIATED at 0 range 2 .. 2; RECOR at 0 range 3 .. 3; PROTECTION at 0 range 4 .. 4; FILLER_1 at 0 range 5 .. 6; MULTI_EXTENT at 0 range 7 .. 7; end record; for HS_FILE_FLAGS_TYPE'SIZE use 8; HS_FILE_FLAGS_TYPE_INIT : constant HS_FILE_FLAGS_TYPE := (EXISTENCE => FALSE, DIRECTORY => FALSE, ASSOCIATED => FALSE, RECOR => FALSE, PROTECTION => FALSE, FILLER_1 => 0, MULTI_EXTENT => FALSE); type HS_F11D_DIRECTORY_TYPE is record DIRECTORY_LENGTH : UNSIGNED_BYTE; -- Length of directory record XAR_LENGTH : UNSIGNED_BYTE; -- Extended Attribute Length EXTENT_LOCATION : UNSIGNED_LONGWORD; -- Location of Extent (LBN) EXTENT_LOCATION_M : UNSIGNED_LONGWORD; -- Location of Extent (LBN) DATA_LENGTH : UNSIGNED_LONGWORD; -- Data Length of File Section DATA_LENGTH_M : UNSIGNED_LONGWORD; -- Data Length of File Section FILE_RECORDING : INTEGER_8_ARRAY (1 .. 6); -- Recording Date/Time of extent FILE_FLAGS : HS_FILE_FLAGS_TYPE; -- File characteristics FILLER_1 : UNSIGNED_BYTE; -- Reserved FILE_UNIT_SIZE : UNSIGNED_BYTE; -- Interleave File Unit Size INTERLEAVE_GAP : UNSIGNED_BYTE; -- Interleave gap size VOLUME_NUMBER : UNSIGNED_WORD; -- Volume Sequence # of extent VOLUME_NUMBER_M : UNSIGNED_WORD; -- Volume Sequence # of extent FILE_ID_LENGTH : UNSIGNED_BYTE; -- File Identifier Field Length FILE_ID : INTEGER_8; -- File Identifier ----FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 478); -- Fill out to maximum size end record; for HS_F11D_DIRECTORY_TYPE use record DIRECTORY_LENGTH at 0 range 0 .. 7; XAR_LENGTH at 1 range 0 .. 7; EXTENT_LOCATION at 2 range 0 .. 31; EXTENT_LOCATION_M at 6 range 0 .. 31; DATA_LENGTH at 10 range 0 .. 31; DATA_LENGTH_M at 14 range 0 .. 31; FILE_RECORDING at 18 range 0 .. 47; FILE_FLAGS at 24 range 0 .. 7; FILLER_1 at 25 range 0 .. 7; FILE_UNIT_SIZE at 26 range 0 .. 7; INTERLEAVE_GAP at 27 range 0 .. 7; VOLUME_NUMBER at 28 range 0 .. 15; VOLUME_NUMBER_M at 30 range 0 .. 15; FILE_ID_LENGTH at 32 range 0 .. 7; FILE_ID at 33 range 0 .. 7; FILLER_2 at 34 range 0 .. 3823; end record; for HS_F11D_DIRECTORY_TYPE'SIZE use 4096; HS_F11D_DIRECTORY_TYPE_INIT : constant HS_F11D_DIRECTORY_TYPE := (DIRECTORY_LENGTH => 0, XAR_LENGTH => 0, EXTENT_LOCATION => 0, EXTENT_LOCATION_M => 0, DATA_LENGTH => 0, DATA_LENGTH_M => 0, FILE_RECORDING => (others => 0), FILE_FLAGS => HS_FILE_FLAGS_TYPE_INIT, FILLER_1 => 0, FILE_UNIT_SIZE => 0, INTERLEAVE_GAP => 0, VOLUME_NUMBER => 0, VOLUME_NUMBER_M => 0, FILE_ID_LENGTH => 0, FILE_ID => 0, FILLER_2 => (others => 0)); --+ -- XAR_RECORD -- This descriptor shall define an Extended Attribute Record. An -- extended attribute record contains addition information which -- is associated to a File Section. -- --- HS_XAR_M_SYS_NO_READ : constant := 16#00000001#; HS_XAR_M_FILL_1 : constant := 16#00000002#; HS_XAR_M_SYS_NO_EXECUTE : constant := 16#00000004#; HS_XAR_M_FILL_2 : constant := 16#00000008#; HS_XAR_M_OWN_NO_READ : constant := 16#00000010#; HS_XAR_M_FILL_3 : constant := 16#00000020#; HS_XAR_M_OWN_NO_EXECUTE : constant := 16#00000040#; HS_XAR_M_FILL_4 : constant := 16#00000080#; HS_XAR_M_GRP_NO_READ : constant := 16#00000100#; HS_XAR_M_FILL_5 : constant := 16#00000200#; HS_XAR_M_GRP_NO_EXECUTE : constant := 16#00000400#; HS_XAR_M_FILL_6 : constant := 16#00000800#; HS_XAR_M_WLD_NO_READ : constant := 16#00001000#; HS_XAR_M_FILL_7 : constant := 16#00002000#; HS_XAR_M_WLD_NO_EXECUTE : constant := 16#00004000#; HS_XAR_M_FILL_8 : constant := 16#00008000#; HS_XAR_RFM_K_UNDEFINED : constant := 0; HS_XAR_RFM_K_FIXED : constant := 1; HS_XAR_RFM_K_LSB_VARIABLE : constant := 2; HS_XAR_RFM_K_MSB_VARIABLE : constant := 3; HS_XAR_RFM_SYS_K_UNDEFINED : constant := 128; HS_XAR_RFM_SYS_K_FIXED : constant := 129; HS_XAR_RFM_SYS_K_VARIABLE : constant := 130; HS_XAR_RFM_SYS_K_VFC : constant := 131; HS_XAR_RFM_SYS_K_STREAM : constant := 132; HS_XAR_RFM_SYS_K_STREAMLF : constant := 133; HS_XAR_RFM_SYS_K_STREAMCR : constant := 134; HS_XAR_ATR_K_CRLF : constant := 0; HS_XAR_ATR_K_FTN : constant := 1; HS_XAR_ATR_K_STM : constant := 2; HS_XAR_S_XAR_RECORD : constant := 512; -- Old size name - synonym type HS_PERMISSIONS_TYPE is -- Access permission for classes of users record SYS_NO_READ : BOOLEAN; -- If set; ~(S:R) FILLER_1 : BOOLEAN; -- Must be set to 1 SYS_NO_EXECUTE : BOOLEAN; -- If set; ~(S:E) FILLER_2 : BOOLEAN; -- Must be set to 1 OWN_NO_READ : BOOLEAN; -- If set; ~(O:R) FILLER_3 : BOOLEAN; -- Must be set to 1 OWN_NO_EXECUTE : BOOLEAN; -- If set; ~(O:E) FILLER_4 : BOOLEAN; -- Must be set to 1 GRP_NO_READ : BOOLEAN; -- If set; ~(G:R) FILLER_5 : BOOLEAN; -- Must be set to 1 GRP_NO_EXECUTE : BOOLEAN; -- If set; ~(G:E) FILLER_6 : BOOLEAN; -- Must be set to 1 WLD_NO_READ : BOOLEAN; -- If set; ~(W:R) FILLER_7 : BOOLEAN; -- Must be set to 1 WLD_NO_EXECUTE : BOOLEAN; -- If set; ~(W:E) FILLER_8 : BOOLEAN; -- Must be set to 1 end record; for HS_PERMISSIONS_TYPE use record SYS_NO_READ at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 1; SYS_NO_EXECUTE at 0 range 2 .. 2; FILLER_2 at 0 range 3 .. 3; OWN_NO_READ at 0 range 4 .. 4; FILLER_3 at 0 range 5 .. 5; OWN_NO_EXECUTE at 0 range 6 .. 6; FILLER_4 at 0 range 7 .. 7; GRP_NO_READ at 1 range 0 .. 0; FILLER_5 at 1 range 1 .. 1; GRP_NO_EXECUTE at 1 range 2 .. 2; FILLER_6 at 1 range 3 .. 3; WLD_NO_READ at 1 range 4 .. 4; FILLER_7 at 1 range 5 .. 5; WLD_NO_EXECUTE at 1 range 6 .. 6; FILLER_8 at 1 range 7 .. 7; end record; for HS_PERMISSIONS_TYPE'SIZE use 16; HS_PERMISSIONS_TYPE_INIT : constant HS_PERMISSIONS_TYPE := (SYS_NO_READ => FALSE, FILLER_1 => FALSE, SYS_NO_EXECUTE => FALSE, FILLER_2 => FALSE, OWN_NO_READ => FALSE, FILLER_3 => FALSE, OWN_NO_EXECUTE => FALSE, FILLER_4 => FALSE, GRP_NO_READ => FALSE, FILLER_5 => FALSE, GRP_NO_EXECUTE => FALSE, FILLER_6 => FALSE, WLD_NO_READ => FALSE, FILLER_7 => FALSE, WLD_NO_EXECUTE => FALSE, FILLER_8 => FALSE); type HS_F11D_XAR_RECORD_TYPE is record OWNER_ID : UNSIGNED_WORD; -- Owner Identification OWNER_ID_M : UNSIGNED_WORD; -- Owner Identification GROUP_ID : UNSIGNED_WORD; -- Group Identification GROUP_ID_M : UNSIGNED_WORD; -- Group Identification PERMISSIONS : HS_PERMISSIONS_TYPE; -- Access permission for classes of users FILE_CREATION : INTEGER_8_ARRAY (1 .. 16); -- File Creation Date/Time FILE_MODIFICATION : INTEGER_8_ARRAY (1 .. 16); -- File Modification Date/Time FILE_EXPIRATION : INTEGER_8_ARRAY (1 .. 16); -- File Expiration Date/Time FILE_EFFECTIVE : INTEGER_8_ARRAY (1 .. 16); -- File Effective Date/Time RECORD_FORMAT : UNSIGNED_BYTE; -- Record Format RECORD_ATTRIBUTES : UNSIGNED_BYTE; -- Record Attributes RECORD_LENGTH : UNSIGNED_WORD; -- Record Length RECORD_LENGTH_M : UNSIGNED_WORD; -- Record Length SYSTEM_ID : STRING(1 .. 32); -- System Identifier SYSTEM_USE : INTEGER_8_ARRAY (1 .. 64); -- System Used XAR_VERSION : UNSIGNED_BYTE; -- Extended Attribute Version FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 64); -- Reserved PARENT_DIRECTORY : UNSIGNED_WORD; -- Parent Directory Number PARENT_DIRECTORY_M : UNSIGNED_WORD; -- Parent Directory Number APPLICATION_LENGTH : UNSIGNED_WORD; -- Application Use Length APPLICATION_LENGTH_M : UNSIGNED_WORD; -- Application Use Length ROOT_DIRECTORY : INTEGER_8_ARRAY (1 .. 34); -- Root Directory Record APPLICATION_USE : INTEGER_8_ARRAY (1 .. 229); -- Application Use end record; for HS_F11D_XAR_RECORD_TYPE use record OWNER_ID at 0 range 0 .. 15; OWNER_ID_M at 2 range 0 .. 15; GROUP_ID at 4 range 0 .. 15; GROUP_ID_M at 6 range 0 .. 15; PERMISSIONS at 8 range 0 .. 15; FILE_CREATION at 10 range 0 .. 127; FILE_MODIFICATION at 26 range 0 .. 127; FILE_EXPIRATION at 42 range 0 .. 127; FILE_EFFECTIVE at 58 range 0 .. 127; RECORD_FORMAT at 74 range 0 .. 7; RECORD_ATTRIBUTES at 75 range 0 .. 7; RECORD_LENGTH at 76 range 0 .. 15; RECORD_LENGTH_M at 78 range 0 .. 15; SYSTEM_ID at 80 range 0 .. 255; SYSTEM_USE at 112 range 0 .. 511; XAR_VERSION at 176 range 0 .. 7; FILLER_1 at 177 range 0 .. 511; PARENT_DIRECTORY at 241 range 0 .. 15; PARENT_DIRECTORY_M at 243 range 0 .. 15; APPLICATION_LENGTH at 245 range 0 .. 15; APPLICATION_LENGTH_M at 247 range 0 .. 15; ROOT_DIRECTORY at 249 range 0 .. 271; APPLICATION_USE at 283 range 0 .. 1831; end record; for HS_F11D_XAR_RECORD_TYPE'SIZE use 4096; HS_F11D_XAR_RECORD_TYPE_INIT : constant HS_F11D_XAR_RECORD_TYPE := (OWNER_ID => 0, OWNER_ID_M => 0, GROUP_ID => 0, GROUP_ID_M => 0, PERMISSIONS => HS_PERMISSIONS_TYPE_INIT, FILE_CREATION => (others => 0), FILE_MODIFICATION => (others => 0), FILE_EXPIRATION => (others => 0), FILE_EFFECTIVE => (others => 0), RECORD_FORMAT => 0, RECORD_ATTRIBUTES => 0, RECORD_LENGTH => 0, RECORD_LENGTH_M => 0, SYSTEM_ID => (others => ASCII.NUL), SYSTEM_USE => (others => 0), XAR_VERSION => 0, FILLER_1 => (others => 0), PARENT_DIRECTORY => 0, PARENT_DIRECTORY_M => 0, APPLICATION_LENGTH => 0, APPLICATION_LENGTH_M => 0, ROOT_DIRECTORY => (others => 0), APPLICATION_USE => (others => 0)); --+ -- Volume Descriptor -- -- The Volume Descriptor shall Identify the volume, the partitions recorded -- on the volume, the volume creator(s), certain attributes of the volume, -- the location of other recorded descriptors and the version of the -- standard which applies to the volume descriptor. -- --- HS_VD_K_BOOT : constant := 0; -- Boot Record Descriptor HS_VD_K_PVD : constant := 1; -- Primary Volume Descriptor HS_VD_K_SVD : constant := 2; -- Supplementary Volume Descriptor HS_VD_K_VPD : constant := 3; -- Volume Partition Descriptor -- (Values 4 to 254 are reserved) HS_VD_K_VDST : constant := 255; -- Volume Descriptor Set Terminator HS_VD_S_VD : constant := 2048; -- Old size name - synonym type HS_F11D_VD_TYPE is record DESCRIPTOR_LBN : UNSIGNED_LONGWORD; -- LBN of first logical block DESCRIPTOR_LBN_M : UNSIGNED_LONGWORD; -- LBN of first logical block VOLUME_DESCRIPTOR_TYPE : UNSIGNED_BYTE; -- Volume Descriptor Type STANDARD_IDENTIFIER : STRING(1 .. 5); -- International Standard Id. (CDROM) VOLUME_DESCRIPTOR_VERS : UNSIGNED_BYTE; -- Volume Descriptor Version VOLUME_DATA : INTEGER_8_ARRAY (1 .. 2033); -- Volume Descriptor Data end record; for HS_F11D_VD_TYPE use record DESCRIPTOR_LBN at 0 range 0 .. 31; DESCRIPTOR_LBN_M at 4 range 0 .. 31; VOLUME_DESCRIPTOR_TYPE at 8 range 0 .. 7; STANDARD_IDENTIFIER at 9 range 0 .. 39; VOLUME_DESCRIPTOR_VERS at 14 range 0 .. 7; VOLUME_DATA at 15 range 0 .. 16263; end record; for HS_F11D_VD_TYPE'SIZE use 16384; HS_F11D_VD_TYPE_INIT : constant HS_F11D_VD_TYPE := (DESCRIPTOR_LBN => 0, DESCRIPTOR_LBN_M => 0, VOLUME_DESCRIPTOR_TYPE => 0, STANDARD_IDENTIFIER => (others => ASCII.NUL), VOLUME_DESCRIPTOR_VERS => 0, VOLUME_DATA => (others => 0)); --+ -- Boot Record -- -- The Boot Record shall Identify a system which can recognize and act upon -- the content of the field reserved for boot system use in the Boot -- Record, and shall contain information which is used to achieve a -- specific state for a system or for an application. -- --- HS_BOOT_S_BOOT : constant := 2048; -- Old size name - synonym type HS_F11D_BOOT_TYPE is record BOOT_VOLUME : INTEGER_8_ARRAY (1 .. 15); -- Boot Volume Descriptor SYSTEM_IDENTIFIER : STRING(1 .. 32); -- Boot System Identifier IDENTIFIER : STRING(1 .. 32); -- Boot Identifier SYSTEM_USE : INTEGER_8_ARRAY (1 .. 1969); -- Boot System Use end record; for HS_F11D_BOOT_TYPE use record BOOT_VOLUME at 0 range 0 .. 119; SYSTEM_IDENTIFIER at 15 range 0 .. 255; IDENTIFIER at 47 range 0 .. 255; SYSTEM_USE at 79 range 0 .. 15751; end record; for HS_F11D_BOOT_TYPE'SIZE use 16384; HS_F11D_BOOT_TYPE_INIT : constant HS_F11D_BOOT_TYPE := (BOOT_VOLUME => (others => 0), SYSTEM_IDENTIFIER => (others => ASCII.NUL), IDENTIFIER => (others => ASCII.NUL), SYSTEM_USE => (others => 0)); --+ -- Volume Descriptor Sequence Terminator -- -- The recorded set of Volume Descriptors shall be terminated by a sequence -- of one or more Volume Descriptor Set Terminators -- --- HS_VDST_S_VDST : constant := 2048; -- Old size name - synonym type HS_F11D_VDST_TYPE is record TERMINATOR_VOLUME : INTEGER_8_ARRAY (1 .. 15); -- Volume Descriptor Set FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 2033); -- Reserved end record; for HS_F11D_VDST_TYPE use record TERMINATOR_VOLUME at 0 range 0 .. 119; FILLER_1 at 15 range 0 .. 16263; end record; for HS_F11D_VDST_TYPE'SIZE use 16384; HS_F11D_VDST_TYPE_INIT : constant HS_F11D_VDST_TYPE := (TERMINATOR_VOLUME => (others => 0), FILLER_1 => (others => 0)); --+ -- Standard File Structure Volume Descriptor -- -- The Standard File Structure Volume Descriptor shall Identify the volume, a system which -- can recognize and act upon the content of the Logical Sectors with -- Logical Sector Number 0 to 15, the size of the Volume Space, the version -- of the standard which applies to the Volume Descriptor, the version of -- the specification which applies to the Directory Records and the Path -- Table Records and certain attributes of the volume. -- --- HS_PVD_S_PVD : constant := 2048; -- Old size name - synonym type HS_F11D_PVD_TYPE is record PRIMARY_VOLUME : INTEGER_8_ARRAY (1 .. 15); -- Standard File Structure Volume Descriptor FILLER_1 : UNSIGNED_BYTE; -- Unused field SYSTEM_IDENTIFIER : STRING(1 .. 32); -- System Identifier VOLUME_IDENTIFIER : STRING(1 .. 32); -- Volume Identifier FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 8); -- Unused field VOLUME_SPACE_SIZE : UNSIGNED_LONGWORD; -- Volume Space Size VOLUME_SPACE_SIZE_M : UNSIGNED_LONGWORD; -- Volume Space Size FILLER_3 : UNSIGNED_BYTE_ARRAY (1 .. 32); -- Unused field VOLUME_SET_SIZE : UNSIGNED_WORD; -- Volume Set Size VOLUME_SET_SIZE_M : UNSIGNED_WORD; -- Volume Set Size VOLUME_NUMBER : UNSIGNED_WORD; -- Volume Sequence Number VOLUME_NUMBER_M : UNSIGNED_WORD; -- Volume Sequence Number LOGICAL_BLOCK_SIZE : UNSIGNED_WORD; -- Logical Block Size LOGICAL_BLOCK_SIZE_M : UNSIGNED_WORD; -- Logical Block Size PATH_TABLE_SIZE : UNSIGNED_LONGWORD; -- Path Table Size PATH_TABLE_SIZE_M : UNSIGNED_LONGWORD; -- Path Table Size PATH_TABLE : UNSIGNED_LONGWORD; -- Path Table Logical Block # OPT_PATH_TABLE : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_1 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_2 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # PATH_TABLE_M : UNSIGNED_LONGWORD; -- Path Table Logical Block # OPT_PATH_TABLE_M : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_M1 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_M2 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # ROOT_DIRECTORY : INTEGER_8_ARRAY (1 .. 34); -- Root Directory Record VOLUME_SET_IDENTIFIER : STRING(1 .. 128); -- Volume Set Identifier PUBLISHER_ID : INTEGER_8_ARRAY (1 .. 128); -- Publisher Identifier DATA_PREPARER_ID : INTEGER_8_ARRAY (1 .. 128); -- Data Preparer Identifier APPLICATION_ID : INTEGER_8_ARRAY (1 .. 128); -- Application Identifier COPYRIGHT_FILE_ID : INTEGER_8_ARRAY (1 .. 32); -- Copyright File Identifier ABSTRACT_FILE_ID : INTEGER_8_ARRAY (1 .. 32); -- Abstract File Identifier VOLUME_CREATION : INTEGER_8_ARRAY (1 .. 16); -- Volume Creation Date/Time VOLUME_MODIFIY : INTEGER_8_ARRAY (1 .. 16); -- Volume Modification Date/Time VOLUME_EXPIRATION : INTEGER_8_ARRAY (1 .. 16); -- Volume Expiration Date/Time VOLUME_EFFECTIVE : INTEGER_8_ARRAY (1 .. 16); -- Volume Effective Date/Time FILE_STRUCTURE_VERS : UNSIGNED_BYTE; -- File Structure Version FILLER_4 : UNSIGNED_BYTE; -- Reserved APPLICATION_USE : INTEGER_8_ARRAY (1 .. 512); -- Application Use field FILLER_5 : UNSIGNED_BYTE_ARRAY (1 .. 680); -- Reserved end record; for HS_F11D_PVD_TYPE use record PRIMARY_VOLUME at 0 range 0 .. 119; FILLER_1 at 15 range 0 .. 7; SYSTEM_IDENTIFIER at 16 range 0 .. 255; VOLUME_IDENTIFIER at 48 range 0 .. 255; FILLER_2 at 80 range 0 .. 63; VOLUME_SPACE_SIZE at 88 range 0 .. 31; VOLUME_SPACE_SIZE_M at 92 range 0 .. 31; FILLER_3 at 96 range 0 .. 255; VOLUME_SET_SIZE at 128 range 0 .. 15; VOLUME_SET_SIZE_M at 130 range 0 .. 15; VOLUME_NUMBER at 132 range 0 .. 15; VOLUME_NUMBER_M at 134 range 0 .. 15; LOGICAL_BLOCK_SIZE at 136 range 0 .. 15; LOGICAL_BLOCK_SIZE_M at 138 range 0 .. 15; PATH_TABLE_SIZE at 140 range 0 .. 31; PATH_TABLE_SIZE_M at 144 range 0 .. 31; PATH_TABLE at 148 range 0 .. 31; OPT_PATH_TABLE at 152 range 0 .. 31; OPT_PATH_TABLE_1 at 156 range 0 .. 31; OPT_PATH_TABLE_2 at 160 range 0 .. 31; PATH_TABLE_M at 164 range 0 .. 31; OPT_PATH_TABLE_M at 168 range 0 .. 31; OPT_PATH_TABLE_M1 at 172 range 0 .. 31; OPT_PATH_TABLE_M2 at 176 range 0 .. 31; ROOT_DIRECTORY at 180 range 0 .. 271; VOLUME_SET_IDENTIFIER at 214 range 0 .. 1023; PUBLISHER_ID at 342 range 0 .. 1023; DATA_PREPARER_ID at 470 range 0 .. 1023; APPLICATION_ID at 598 range 0 .. 1023; COPYRIGHT_FILE_ID at 726 range 0 .. 255; ABSTRACT_FILE_ID at 758 range 0 .. 255; VOLUME_CREATION at 790 range 0 .. 127; VOLUME_MODIFIY at 806 range 0 .. 127; VOLUME_EXPIRATION at 822 range 0 .. 127; VOLUME_EFFECTIVE at 838 range 0 .. 127; FILE_STRUCTURE_VERS at 854 range 0 .. 7; FILLER_4 at 855 range 0 .. 7; APPLICATION_USE at 856 range 0 .. 4095; FILLER_5 at 1368 range 0 .. 5439; end record; for HS_F11D_PVD_TYPE'SIZE use 16384; HS_F11D_PVD_TYPE_INIT : constant HS_F11D_PVD_TYPE := (PRIMARY_VOLUME => (others => 0), FILLER_1 => 0, SYSTEM_IDENTIFIER => (others => ASCII.NUL), VOLUME_IDENTIFIER => (others => ASCII.NUL), FILLER_2 => (others => 0), VOLUME_SPACE_SIZE => 0, VOLUME_SPACE_SIZE_M => 0, FILLER_3 => (others => 0), VOLUME_SET_SIZE => 0, VOLUME_SET_SIZE_M => 0, VOLUME_NUMBER => 0, VOLUME_NUMBER_M => 0, LOGICAL_BLOCK_SIZE => 0, LOGICAL_BLOCK_SIZE_M => 0, PATH_TABLE_SIZE => 0, PATH_TABLE_SIZE_M => 0, PATH_TABLE => 0, OPT_PATH_TABLE => 0, OPT_PATH_TABLE_1 => 0, OPT_PATH_TABLE_2 => 0, PATH_TABLE_M => 0, OPT_PATH_TABLE_M => 0, OPT_PATH_TABLE_M1 => 0, OPT_PATH_TABLE_M2 => 0, ROOT_DIRECTORY => (others => 0), VOLUME_SET_IDENTIFIER => (others => ASCII.NUL), PUBLISHER_ID => (others => 0), DATA_PREPARER_ID => (others => 0), APPLICATION_ID => (others => 0), COPYRIGHT_FILE_ID => (others => 0), ABSTRACT_FILE_ID => (others => 0), VOLUME_CREATION => (others => 0), VOLUME_MODIFIY => (others => 0), VOLUME_EXPIRATION => (others => 0), VOLUME_EFFECTIVE => (others => 0), FILE_STRUCTURE_VERS => 0, FILLER_4 => 0, APPLICATION_USE => (others => 0), FILLER_5 => (others => 0)); --+ -- Coded Character Set File Structure Volume Descriptor -- -- The Coded Character Set File Structure Volume Descriptor Supplementary shall -- Identify the volume, a system which can recognize and act upon the content of -- the Logical Sectors with Logical Sector Number 0 to 15, the size of the -- Volume Space, the version of the standard which applies to the Volume -- Descriptor, the version of the specification which applies to the Directory -- Records and the Path Table Records, certain attributes of the volume and the -- coded graphic character sets used to interpret descriptor fields that contain -- characters. -- --- HS_SVD_M_NON_ISO_2375 : constant := 16#00000001#; HS_SVD_S_SVD : constant := 2048; -- Old size name - synonym type HS_VOLUME_FLAGS_TYPE is -- Volume characteristics record NON_ISO_2375 : BOOLEAN; -- If set; Escape Sequence is non ISO-2375 compliant FILLER_1 : UNSIGNED_7; end record; for HS_VOLUME_FLAGS_TYPE use record NON_ISO_2375 at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 7; end record; for HS_VOLUME_FLAGS_TYPE'SIZE use 8; HS_VOLUME_FLAGS_TYPE_INIT : constant HS_VOLUME_FLAGS_TYPE := (NON_ISO_2375 => FALSE, FILLER_1 => 0); type HS_F11D_SVD_TYPE is record SUPPLEMENTARY_VOLUME : INTEGER_8_ARRAY (1 .. 15); -- Coded Character Set File Structure Volume Descriptor VOLUME_FLAGS : HS_VOLUME_FLAGS_TYPE; -- Volume characteristics SYSTEM_IDENTIFIER : STRING(1 .. 32); -- System Identifier VOLUME_IDENTIFIER : STRING(1 .. 32); -- Volume Identifier FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 8); -- Unused Field VOLUME_SPACE_SIZE : UNSIGNED_LONGWORD; -- Volume Space Size VOLUME_SPACE_SIZE_M : UNSIGNED_LONGWORD; -- Volume Space Size ESCAPE_SEQUENCES : INTEGER_8_ARRAY (1 .. 32); -- Coded Character Set for Descriptor Id VOLUME_SET_SIZE : UNSIGNED_WORD; -- Volume Set Size VOLUME_SET_SIZE_M : UNSIGNED_WORD; -- Volume Set Size VOLUME_NUMBER : UNSIGNED_WORD; -- Volume Sequence Number VOLUME_NUMBER_M : UNSIGNED_WORD; -- Volume Sequence Number LOGICAL_BLOCK_SIZE : UNSIGNED_WORD; -- Logical Block Size LOGICAL_BLOCK_SIZE_M : UNSIGNED_WORD; -- Logical Block Size PATH_TABLE_SIZE : UNSIGNED_LONGWORD; -- Path Table Size PATH_TABLE_SIZE_M : UNSIGNED_LONGWORD; -- Path Table Size PATH_TABLE : UNSIGNED_LONGWORD; -- Path Table Logical Block # OPT_PATH_TABLE : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_1 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_2 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # PATH_TABLE_M : UNSIGNED_LONGWORD; -- Path Table Logical Block # OPT_PATH_TABLE_M : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_M1 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # OPT_PATH_TABLE_M2 : UNSIGNED_LONGWORD; -- Optional Path Table Logical Block # ROOT_DIRECTORY : INTEGER_8_ARRAY (1 .. 34); -- Root Directory Record VOLUME_SET_IDENTIFIER : STRING(1 .. 128); -- Volume Set Identifier PUBLISHER_ID : INTEGER_8_ARRAY (1 .. 128); -- Publisher Identifier DATA_PREPARER_ID : INTEGER_8_ARRAY (1 .. 128); -- Data Preparer Identifier APPLICATION_ID : INTEGER_8_ARRAY (1 .. 128); -- Application Identifier COPYRIGHT_FILE_ID : INTEGER_8_ARRAY (1 .. 32); -- Copyright File Identifier ABSTRACT_FILE_ID : INTEGER_8_ARRAY (1 .. 32); -- Abstract File Identifier VOLUME_CREATION : INTEGER_8_ARRAY (1 .. 16); -- Volume Creation Date/Time VOLUME_MODIFIY : INTEGER_8_ARRAY (1 .. 16); -- Volume Modification Date/Time VOLUME_EXPIRATION : INTEGER_8_ARRAY (1 .. 16); -- Volume Expiration Date/Time VOLUME_EFFECTIVE : INTEGER_8_ARRAY (1 .. 16); -- Volume Effective Date/Time FILE_STRUCTURE_VERS : UNSIGNED_BYTE; -- File Structure Version FILLER_2 : UNSIGNED_BYTE; -- Reserved APPLICATION_USE : INTEGER_8_ARRAY (1 .. 512); -- Application Use field FILLER_3 : UNSIGNED_BYTE_ARRAY (1 .. 680); -- Reserved end record; for HS_F11D_SVD_TYPE use record SUPPLEMENTARY_VOLUME at 0 range 0 .. 119; VOLUME_FLAGS at 15 range 0 .. 7; SYSTEM_IDENTIFIER at 16 range 0 .. 255; VOLUME_IDENTIFIER at 48 range 0 .. 255; FILLER_1 at 80 range 0 .. 63; VOLUME_SPACE_SIZE at 88 range 0 .. 31; VOLUME_SPACE_SIZE_M at 92 range 0 .. 31; ESCAPE_SEQUENCES at 96 range 0 .. 255; VOLUME_SET_SIZE at 128 range 0 .. 15; VOLUME_SET_SIZE_M at 130 range 0 .. 15; VOLUME_NUMBER at 132 range 0 .. 15; VOLUME_NUMBER_M at 134 range 0 .. 15; LOGICAL_BLOCK_SIZE at 136 range 0 .. 15; LOGICAL_BLOCK_SIZE_M at 138 range 0 .. 15; PATH_TABLE_SIZE at 140 range 0 .. 31; PATH_TABLE_SIZE_M at 144 range 0 .. 31; PATH_TABLE at 148 range 0 .. 31; OPT_PATH_TABLE at 152 range 0 .. 31; OPT_PATH_TABLE_1 at 156 range 0 .. 31; OPT_PATH_TABLE_2 at 160 range 0 .. 31; PATH_TABLE_M at 164 range 0 .. 31; OPT_PATH_TABLE_M at 168 range 0 .. 31; OPT_PATH_TABLE_M1 at 172 range 0 .. 31; OPT_PATH_TABLE_M2 at 176 range 0 .. 31; ROOT_DIRECTORY at 180 range 0 .. 271; VOLUME_SET_IDENTIFIER at 214 range 0 .. 1023; PUBLISHER_ID at 342 range 0 .. 1023; DATA_PREPARER_ID at 470 range 0 .. 1023; APPLICATION_ID at 598 range 0 .. 1023; COPYRIGHT_FILE_ID at 726 range 0 .. 255; ABSTRACT_FILE_ID at 758 range 0 .. 255; VOLUME_CREATION at 790 range 0 .. 127; VOLUME_MODIFIY at 806 range 0 .. 127; VOLUME_EXPIRATION at 822 range 0 .. 127; VOLUME_EFFECTIVE at 838 range 0 .. 127; FILE_STRUCTURE_VERS at 854 range 0 .. 7; FILLER_2 at 855 range 0 .. 7; APPLICATION_USE at 856 range 0 .. 4095; FILLER_3 at 1368 range 0 .. 5439; end record; for HS_F11D_SVD_TYPE'SIZE use 16384; HS_F11D_SVD_TYPE_INIT : constant HS_F11D_SVD_TYPE := (SUPPLEMENTARY_VOLUME => (others => 0), VOLUME_FLAGS => HS_VOLUME_FLAGS_TYPE_INIT, SYSTEM_IDENTIFIER => (others => ASCII.NUL), VOLUME_IDENTIFIER => (others => ASCII.NUL), FILLER_1 => (others => 0), VOLUME_SPACE_SIZE => 0, VOLUME_SPACE_SIZE_M => 0, ESCAPE_SEQUENCES => (others => 0), VOLUME_SET_SIZE => 0, VOLUME_SET_SIZE_M => 0, VOLUME_NUMBER => 0, VOLUME_NUMBER_M => 0, LOGICAL_BLOCK_SIZE => 0, LOGICAL_BLOCK_SIZE_M => 0, PATH_TABLE_SIZE => 0, PATH_TABLE_SIZE_M => 0, PATH_TABLE => 0, OPT_PATH_TABLE => 0, OPT_PATH_TABLE_1 => 0, OPT_PATH_TABLE_2 => 0, PATH_TABLE_M => 0, OPT_PATH_TABLE_M => 0, OPT_PATH_TABLE_M1 => 0, OPT_PATH_TABLE_M2 => 0, ROOT_DIRECTORY => (others => 0), VOLUME_SET_IDENTIFIER => (others => ASCII.NUL), PUBLISHER_ID => (others => 0), DATA_PREPARER_ID => (others => 0), APPLICATION_ID => (others => 0), COPYRIGHT_FILE_ID => (others => 0), ABSTRACT_FILE_ID => (others => 0), VOLUME_CREATION => (others => 0), VOLUME_MODIFIY => (others => 0), VOLUME_EXPIRATION => (others => 0), VOLUME_EFFECTIVE => (others => 0), FILE_STRUCTURE_VERS => 0, FILLER_2 => 0, APPLICATION_USE => (others => 0), FILLER_3 => (others => 0)); --+ -- Unspecified Partition Descriptor -- -- The Unspecified Volume Partition Descriptor shall identify a volume partition with -- the Volume Space, a system which can recognize and act upon the content -- of fields reserved for system use in the Volume Descriptor, the position -- and size of the volume partition, the version of the standard which -- applies to the Volume Descriptor. -- --- HS_VPD_S_VPD : constant := 2048; -- Old size name - synonym type HS_F11D_VPD_TYPE is record VOLUME_PARTITION : INTEGER_8_ARRAY (1 .. 15); -- Unspecified Volume Partition Descriptor FILLER_1 : UNSIGNED_BYTE; -- Unused field SYSTEM_IDENTIFIER : STRING(1 .. 32); -- System Identifier PARTITION_IDENTIFIER : STRING(1 .. 32); -- Volume Partition Identifier PARTITION_LOCATION : UNSIGNED_LONGWORD; -- Location of Partition (LBN) PARTITION_LOCATION_M : UNSIGNED_LONGWORD; -- Location of Partition (LBN) PARTITION_SIZE : UNSIGNED_LONGWORD; -- Volume Partition Size PARTITION_SIZE_M : UNSIGNED_LONGWORD; -- Volume Partition Size SYSTEM_USE : INTEGER_8_ARRAY (1 .. 1952); -- System Use end record; for HS_F11D_VPD_TYPE use record VOLUME_PARTITION at 0 range 0 .. 119; FILLER_1 at 15 range 0 .. 7; SYSTEM_IDENTIFIER at 16 range 0 .. 255; PARTITION_IDENTIFIER at 48 range 0 .. 255; PARTITION_LOCATION at 80 range 0 .. 31; PARTITION_LOCATION_M at 84 range 0 .. 31; PARTITION_SIZE at 88 range 0 .. 31; PARTITION_SIZE_M at 92 range 0 .. 31; SYSTEM_USE at 96 range 0 .. 15615; end record; for HS_F11D_VPD_TYPE'SIZE use 16384; HS_F11D_VPD_TYPE_INIT : constant HS_F11D_VPD_TYPE := (VOLUME_PARTITION => (others => 0), FILLER_1 => 0, SYSTEM_IDENTIFIER => (others => ASCII.NUL), PARTITION_IDENTIFIER => (others => ASCII.NUL), PARTITION_LOCATION => 0, PARTITION_LOCATION_M => 0, PARTITION_SIZE => 0, PARTITION_SIZE_M => 0, SYSTEM_USE => (others => 0)); end F11DDEF;