--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:37 by OpenVMS SDL EV3-3 -- Source: 13-MAY-1993 14:02:07 $1$DGA7274:[LIB_ADA.LIS]F11CDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package F11CDEF is -- module $F11CDEF 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 -- ISO_K_LOGICAL_BLOCK_SIZE : constant := 2048; -- Current Volume Descriptor Block Size ISO_K_SYSTEM_AREA : constant := 0; -- Logical Block number of System Area ISO_K_DATA_AREA : constant := 16; -- Logical Block number of Data Area ISO_K_ISO_9660_VERSION_1988 : constant := 1; -- Volume Descriptor Version # for ISO 9660 (1988) -- -- Character set coding -- ISO_K_SPACE : constant := 32; -- ' ' fill character ISO_K_SEPARATOR_1 : constant := 46; -- '.'-filename.extension break ISO_K_SEPARATOR_2 : constant := 59; -- ';'-extension;version break ISO_K_FILE_ID : constant := 95; -- '_' file identifier character ISO_K_ROOT_DIRECTORY_ID : constant := 0; -- Root Directory Identifier ISO_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 -- - SEPARATOR_1 -- - Extension : A sequence of 0 -> 30 'D' or 'D1' characters -- - SEPARATOR_2 -- - 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 -- The length of 'File Name' + 'Extension' must not exceed 30. --- ISO_FNAME_S_FILE_ID : constant := 37; -- Old size name- synonym type ISO_F11C_FILE_ID_TYPE is record FILE_NAME_EXT : STRING(1 .. 37); -- filename.ext;version end record; for ISO_F11C_FILE_ID_TYPE use record FILE_NAME_EXT at 0 range 0 .. 295; end record; for ISO_F11C_FILE_ID_TYPE'SIZE use 296; ISO_F11C_FILE_ID_TYPE_INIT : constant ISO_F11C_FILE_ID_TYPE := (FILE_NAME_EXT => (others => ASCII.NUL)); --+ -- Identifier -- -- This descriptor shall specify an identifier. If the first byte is equal -- to a %X05F, the remaining bytes of this field shall specific an -- identifier for a file containing the identification text. This file -- shall be described in the Root Directory. The File Name shall not -- contain more than 8 D_CHARACTERS and the File Extension shall not -- contain more than 3 D_CHARACTERS. If all bytes in this field are set to -- %X20, it shall mean that no such identifier is defined. --- ISO_ID_S_IDENTIFIER : constant := 128; -- Old size name - synonym type ISO_ENCODED_ID_TYPE is record FLAG : UNSIGNED_BYTE; -- File specific flag FILE_NAME_EXT : STRING(1 .. 37); -- File Identifier (filename.ext;version) end record; for ISO_ENCODED_ID_TYPE use record FLAG at 0 range 0 .. 7; FILE_NAME_EXT at 1 range 0 .. 295; end record; for ISO_ENCODED_ID_TYPE'SIZE use 304; ISO_ENCODED_ID_TYPE_INIT : constant ISO_ENCODED_ID_TYPE := (FLAG => 0, FILE_NAME_EXT => (others => ASCII.NUL)); type ISO_F11C_IDENTIFIER_TYPE is record DATA : INTEGER_8_ARRAY (1 .. 128); -- Text Identifier ----Component(s) below are defined as comments since they ----overlap other fields ---- ----ENCODED_ID : ISO_ENCODED_ID_TYPE; end record; for ISO_F11C_IDENTIFIER_TYPE use record DATA at 0 range 0 .. 1023; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----ENCODED_ID at 0 range 0 .. 303; end record; for ISO_F11C_IDENTIFIER_TYPE'SIZE use 1024; --+ -- ASCII_DATE_TIME -- -- The date and time shall be represented by a 17-byte field. -- If Byte positions 1-16 are the digit '0', and BP 17 equals 0, then -- it shall mean that date and time are not specified. --- ISO_AUTC_S_ASCII_DATE_TIME : constant := 17; -- Old size name - synonym type ISO_F11C_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) OFFSET_GMT : INTEGER_8; -- ¼ hr. intervals (-48:+52)) end record; for ISO_F11C_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; OFFSET_GMT at 16 range 0 .. 7; end record; for ISO_F11C_ASCII_DATE_TYPE'SIZE use 136; ISO_F11C_ASCII_DATE_TYPE_INIT : constant ISO_F11C_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), OFFSET_GMT => 0); --+ -- BINARY_DATE_TIME -- -- The data and time shall be represented by seven 8-bit numbers --- ISO_BUTC_S_BINARY_DATE_TIME : constant := 7; -- Old size name - synonym type ISO_F11C_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) OFFSET_GMT : INTEGER_8; -- ¼ hr. intervals from -48(west) to +52(east) end record; for ISO_F11C_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; OFFSET_GMT at 6 range 0 .. 7; end record; for ISO_F11C_BINARY_DATE_TYPE'SIZE use 56; ISO_F11C_BINARY_DATE_TYPE_INIT : constant ISO_F11C_BINARY_DATE_TYPE := (YEAR => 0, MONTH => 0, DAY => 0, HOUR => 0, MINUTE => 0, SECOND => 0, OFFSET_GMT => 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. -- --- ISO_PTBL_S_PATH_TABLE_RECORD : constant := 45; -- Old size name - synonym type ISO_F11C_PATH_TABLE_REC_TYPE is record DIRECTORY_ID_LENGTH : UNSIGNED_BYTE; -- Length of directory Identifier XAR_LENGTH : UNSIGNED_BYTE; -- Extended Attribute Record length EXTENT_LOCATION : UNSIGNED_LONGWORD; -- Location of Extent PARENT_DIRECTORY : UNSIGNED_WORD; -- Parent Directory Number DIRECTORY_ID : STRING(1 .. 37); -- Directory Identifier (dirname) end record; for ISO_F11C_PATH_TABLE_REC_TYPE use record DIRECTORY_ID_LENGTH at 0 range 0 .. 7; XAR_LENGTH at 1 range 0 .. 7; EXTENT_LOCATION at 2 range 0 .. 31; PARENT_DIRECTORY at 6 range 0 .. 15; DIRECTORY_ID at 8 range 0 .. 295; end record; for ISO_F11C_PATH_TABLE_REC_TYPE'SIZE use 360; ISO_F11C_PATH_TABLE_REC_TYPE_INIT : constant ISO_F11C_PATH_TABLE_REC_TYPE := (DIRECTORY_ID_LENGTH => 0, XAR_LENGTH => 0, EXTENT_LOCATION => 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. --- ISO_DREC_M_EXISTENCE : constant := 16#00000001#; ISO_DREC_M_DIRECTORY : constant := 16#00000002#; ISO_DREC_M_ASSOCIATED : constant := 16#00000004#; ISO_DREC_M_RECORD : constant := 16#00000008#; ISO_DREC_M_PROTECTION : constant := 16#00000010#; ISO_DREC_M_RESERVED : constant := 16#00000060#; ISO_DREC_M_MULTI_EXTENT : constant := 16#00000080#; ISO_DREC_A_PADDING : constant := 34; -- Pad byte ISO_DREC_A_SYSTEM_USE : constant := 34; -- System use ISO_DREC_S_DIRECTORY : constant := 512; -- Old size name - synonym type ISO_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 ISO_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 ISO_FILE_FLAGS_TYPE'SIZE use 8; ISO_FILE_FLAGS_TYPE_INIT : constant ISO_FILE_FLAGS_TYPE := (EXISTENCE => FALSE, DIRECTORY => FALSE, ASSOCIATED => FALSE, RECOR => FALSE, PROTECTION => FALSE, FILLER_1 => 0, MULTI_EXTENT => FALSE); type ISO_F11C_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 .. 7); -- Recording Date/Time of extent FILE_FLAGS : ISO_FILE_FLAGS_TYPE; -- File characteristics 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_1 : UNSIGNED_BYTE_ARRAY (1 .. 478); -- Fill out to maximum size end record; for ISO_F11C_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 .. 55; FILE_FLAGS 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_1 at 34 range 0 .. 3823; end record; for ISO_F11C_DIRECTORY_TYPE'SIZE use 4096; ISO_F11C_DIRECTORY_TYPE_INIT : constant ISO_F11C_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 => ISO_FILE_FLAGS_TYPE_INIT, FILE_UNIT_SIZE => 0, INTERLEAVE_GAP => 0, VOLUME_NUMBER => 0, VOLUME_NUMBER_M => 0, FILE_ID_LENGTH => 0, FILE_ID => 0, FILLER_1 => (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. -- --- ISO_XAR_M_SYS_NO_READ : constant := 16#00000001#; ISO_XAR_M_FILL_1 : constant := 16#00000002#; ISO_XAR_M_SYS_NO_EXECUTE : constant := 16#00000004#; ISO_XAR_M_FILL_2 : constant := 16#00000008#; ISO_XAR_M_OWN_NO_READ : constant := 16#00000010#; ISO_XAR_M_FILL_3 : constant := 16#00000020#; ISO_XAR_M_OWN_NO_EXECUTE : constant := 16#00000040#; ISO_XAR_M_FILL_4 : constant := 16#00000080#; ISO_XAR_M_GRP_NO_READ : constant := 16#00000100#; ISO_XAR_M_FILL_5 : constant := 16#00000200#; ISO_XAR_M_GRP_NO_EXECUTE : constant := 16#00000400#; ISO_XAR_M_FILL_6 : constant := 16#00000800#; ISO_XAR_M_WLD_NO_READ : constant := 16#00001000#; ISO_XAR_M_FILL_7 : constant := 16#00002000#; ISO_XAR_M_WLD_NO_EXECUTE : constant := 16#00004000#; ISO_XAR_M_FILL_8 : constant := 16#00008000#; ISO_XAR_RFM_K_UNDEFINED : constant := 0; ISO_XAR_RFM_K_FIXED : constant := 1; ISO_XAR_RFM_K_LSB_VARIABLE : constant := 2; ISO_XAR_RFM_K_MSB_VARIABLE : constant := 3; ISO_XAR_RFM_SYS_K_UNDEFINED : constant := 128; ISO_XAR_RFM_SYS_K_FIXED : constant := 129; ISO_XAR_RFM_SYS_K_VARIABLE : constant := 130; ISO_XAR_RFM_SYS_K_VFC : constant := 131; ISO_XAR_RFM_SYS_K_STREAM : constant := 132; ISO_XAR_RFM_SYS_K_STREAMLF : constant := 133; ISO_XAR_RFM_SYS_K_STREAMCR : constant := 134; ISO_XAR_ATR_K_CRLF : constant := 0; ISO_XAR_ATR_K_FTN : constant := 1; ISO_XAR_ATR_K_STM : constant := 2; ISO_XAR_A_ESCAPE_SEQUENCE : constant := 250; -- Escape Sequences ISO_XAR_S_XAR_RECORD : constant := 512; -- Old size name - synonym type ISO_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 ISO_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 ISO_PERMISSIONS_TYPE'SIZE use 16; ISO_PERMISSIONS_TYPE_INIT : constant ISO_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 ISO_F11C_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 : ISO_PERMISSIONS_TYPE; -- Access permission for classes of users FILE_CREATION : INTEGER_8_ARRAY (1 .. 17); -- File Creation Date/Time FILE_MODIFICATION : INTEGER_8_ARRAY (1 .. 17); -- File Modification Date/Time FILE_EXPIRATION : INTEGER_8_ARRAY (1 .. 17); -- File Expiration Date/Time FILE_EFFECTIVE : INTEGER_8_ARRAY (1 .. 17); -- 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 ESCAPE_SEQ_LENGTH : UNSIGNED_BYTE; -- Escape Sequence record length FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 64); -- Reserved APPLICATION_USE : UNSIGNED_WORD; -- Application Use Length APPLICATION_USE_M : UNSIGNED_WORD; -- Application Use Length APPLICATION_USE : INTEGER_8_ARRAY (1 .. 262); -- Application Use end record; for ISO_F11C_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 .. 135; FILE_MODIFICATION at 27 range 0 .. 135; FILE_EXPIRATION at 44 range 0 .. 135; FILE_EFFECTIVE at 61 range 0 .. 135; RECORD_FORMAT at 78 range 0 .. 7; RECORD_ATTRIBUTES at 79 range 0 .. 7; RECORD_LENGTH at 80 range 0 .. 15; RECORD_LENGTH_M at 82 range 0 .. 15; SYSTEM_ID at 84 range 0 .. 255; SYSTEM_USE at 116 range 0 .. 511; XAR_VERSION at 180 range 0 .. 7; ESCAPE_SEQ_LENGTH at 181 range 0 .. 7; FILLER_1 at 182 range 0 .. 511; APPLICATION_USE at 246 range 0 .. 15; APPLICATION_USE_M at 248 range 0 .. 15; APPLICATION_USE at 250 range 0 .. 2095; end record; for ISO_F11C_XAR_RECORD_TYPE'SIZE use 4096; ISO_F11C_XAR_RECORD_TYPE_INIT : constant ISO_F11C_XAR_RECORD_TYPE := (OWNER_ID => 0, OWNER_ID_M => 0, GROUP_ID => 0, GROUP_ID_M => 0, PERMISSIONS => ISO_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, ESCAPE_SEQ_LENGTH => 0, FILLER_1 => (others => 0), APPLICATION_USE => 0, APPLICATION_USE_M => 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. -- --- ISO_VD_K_BOOT : constant := 0; -- Boot Record Descriptor ISO_VD_K_PVD : constant := 1; -- Primary Volume Descriptor ISO_VD_K_SVD : constant := 2; -- Supplementary Volume Descriptor ISO_VD_K_VPD : constant := 3; -- Volume Partition Descriptor -- (Values 4 to 254 are reserved) ISO_VD_K_VDST : constant := 255; -- Volume Descriptor Set Terminator ISO_VD_S_VD : constant := 2048; -- Old size name - synonym type ISO_F11C_VD_TYPE is record VOLUME_DESCRIPTOR_TYPE : UNSIGNED_BYTE; -- Volume Descriptor Type STANDARD_IDENTIFIER : STRING(1 .. 5); -- International Standard Id. (CD001) VOLUME_DESCRIPTOR_VERS : UNSIGNED_BYTE; -- Volume Descriptor Version VOLUME_DATA : INTEGER_8_ARRAY (1 .. 2041); -- Volume Descriptor Data end record; for ISO_F11C_VD_TYPE use record VOLUME_DESCRIPTOR_TYPE at 0 range 0 .. 7; STANDARD_IDENTIFIER at 1 range 0 .. 39; VOLUME_DESCRIPTOR_VERS at 6 range 0 .. 7; VOLUME_DATA at 7 range 0 .. 16327; end record; for ISO_F11C_VD_TYPE'SIZE use 16384; ISO_F11C_VD_TYPE_INIT : constant ISO_F11C_VD_TYPE := (VOLUME_DESCRIPTOR_TYPE => 0, STANDARD_IDENTIFIER => (others => ASCII.NUL), VOLUME_DESCRIPTOR_VERS => 0, VOLUME_DATA => (others => 0)); --+ -- Boot Record (BOOT) -- -- 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. -- --- ISO_BOOT_S_BOOT : constant := 2048; -- Old size name - synonym type ISO_F11C_BOOT_TYPE is record BOOT_VOLUME : INTEGER_8_ARRAY (1 .. 7); -- Boot Volume Descriptor SYSTEM_IDENTIFIER : STRING(1 .. 32); -- Boot System Identifier IDENTIFIER : STRING(1 .. 32); -- Boot Identifier SYSTEM_USE : INTEGER_8_ARRAY (1 .. 1977); -- Boot System Use end record; for ISO_F11C_BOOT_TYPE use record BOOT_VOLUME at 0 range 0 .. 55; SYSTEM_IDENTIFIER at 7 range 0 .. 255; IDENTIFIER at 39 range 0 .. 255; SYSTEM_USE at 71 range 0 .. 15815; end record; for ISO_F11C_BOOT_TYPE'SIZE use 16384; ISO_F11C_BOOT_TYPE_INIT : constant ISO_F11C_BOOT_TYPE := (BOOT_VOLUME => (others => 0), SYSTEM_IDENTIFIER => (others => ASCII.NUL), IDENTIFIER => (others => ASCII.NUL), SYSTEM_USE => (others => 0)); --+ -- Volume Descriptor Set Terminator -- -- The recorded set of Volume Descriptors shall be terminated by a sequence -- of one or more Volume Descriptor Set Terminators -- --- ISO_VDST_S_VDST : constant := 2048; -- Old size name - synonym type ISO_F11C_VDST_TYPE is record TERMINATOR_VOLUME : INTEGER_8_ARRAY (1 .. 7); -- Volume Descriptor Set FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 2041); -- Reserved end record; for ISO_F11C_VDST_TYPE use record TERMINATOR_VOLUME at 0 range 0 .. 55; FILLER_1 at 7 range 0 .. 16327; end record; for ISO_F11C_VDST_TYPE'SIZE use 16384; ISO_F11C_VDST_TYPE_INIT : constant ISO_F11C_VDST_TYPE := (TERMINATOR_VOLUME => (others => 0), FILLER_1 => (others => 0)); --+ -- Primary Volume Descriptor -- -- The Primary 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. -- --- ISO_PVD_S_PVD : constant := 2048; -- Old size name - synonym type ISO_F11C_PVD_TYPE is record PRIMARY_VOLUME : INTEGER_8_ARRAY (1 .. 7); -- Primary 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 # PATH_TABLE_M : UNSIGNED_LONGWORD; -- Path Table Logical Block # OPT_PATH_TABLE_M : 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 .. 37); -- Copyright File Identifier ABSTRACT_FILE_ID : INTEGER_8_ARRAY (1 .. 37); -- Abstract File Identifier BIBLIOGRAPHIC_ID : INTEGER_8_ARRAY (1 .. 37); -- Bibliographic File Identifier VOLUME_CREATION : INTEGER_8_ARRAY (1 .. 17); -- Volume Creation Date/Time VOLUME_MODIFIY : INTEGER_8_ARRAY (1 .. 17); -- Volume Modification Date/Time VOLUME_EXPIRATION : INTEGER_8_ARRAY (1 .. 17); -- Volume Expiration Date/Time VOLUME_EFFECTIVE : INTEGER_8_ARRAY (1 .. 17); -- 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 .. 653); -- Reserved end record; for ISO_F11C_PVD_TYPE use record PRIMARY_VOLUME at 0 range 0 .. 55; FILLER_1 at 7 range 0 .. 7; SYSTEM_IDENTIFIER at 8 range 0 .. 255; VOLUME_IDENTIFIER at 40 range 0 .. 255; FILLER_2 at 72 range 0 .. 63; VOLUME_SPACE_SIZE at 80 range 0 .. 31; VOLUME_SPACE_SIZE_M at 84 range 0 .. 31; FILLER_3 at 88 range 0 .. 255; VOLUME_SET_SIZE at 120 range 0 .. 15; VOLUME_SET_SIZE_M at 122 range 0 .. 15; VOLUME_NUMBER at 124 range 0 .. 15; VOLUME_NUMBER_M at 126 range 0 .. 15; LOGICAL_BLOCK_SIZE at 128 range 0 .. 15; LOGICAL_BLOCK_SIZE_M at 130 range 0 .. 15; PATH_TABLE_SIZE at 132 range 0 .. 31; PATH_TABLE_SIZE_M at 136 range 0 .. 31; PATH_TABLE at 140 range 0 .. 31; OPT_PATH_TABLE at 144 range 0 .. 31; PATH_TABLE_M at 148 range 0 .. 31; OPT_PATH_TABLE_M at 152 range 0 .. 31; ROOT_DIRECTORY at 156 range 0 .. 271; VOLUME_SET_IDENTIFIER at 190 range 0 .. 1023; PUBLISHER_ID at 318 range 0 .. 1023; DATA_PREPARER_ID at 446 range 0 .. 1023; APPLICATION_ID at 574 range 0 .. 1023; COPYRIGHT_FILE_ID at 702 range 0 .. 295; ABSTRACT_FILE_ID at 739 range 0 .. 295; BIBLIOGRAPHIC_ID at 776 range 0 .. 295; VOLUME_CREATION at 813 range 0 .. 135; VOLUME_MODIFIY at 830 range 0 .. 135; VOLUME_EXPIRATION at 847 range 0 .. 135; VOLUME_EFFECTIVE at 864 range 0 .. 135; FILE_STRUCTURE_VERS at 881 range 0 .. 7; FILLER_4 at 882 range 0 .. 7; APPLICATION_USE at 883 range 0 .. 4095; FILLER_5 at 1395 range 0 .. 5223; end record; for ISO_F11C_PVD_TYPE'SIZE use 16384; ISO_F11C_PVD_TYPE_INIT : constant ISO_F11C_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, PATH_TABLE_M => 0, OPT_PATH_TABLE_M => 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), BIBLIOGRAPHIC_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)); --+ -- Supplementary Volume Descriptor -- -- The Supplementary 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, certain attributes of the volume and the coded graphic -- character sets used to interpret descriptor fields that contain -- characters. -- --- ISO_SVD_M_NON_ISO_2375 : constant := 16#00000001#; ISO_SVD_S_SVD : constant := 2048; -- Old size name - synonym type ISO_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 ISO_VOLUME_FLAGS_TYPE use record NON_ISO_2375 at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 7; end record; for ISO_VOLUME_FLAGS_TYPE'SIZE use 8; ISO_VOLUME_FLAGS_TYPE_INIT : constant ISO_VOLUME_FLAGS_TYPE := (NON_ISO_2375 => FALSE, FILLER_1 => 0); type ISO_F11C_SVD_TYPE is record SUPPLEMENTARY_VOLUME : INTEGER_8_ARRAY (1 .. 7); -- Supplementary Volume Descriptor VOLUME_FLAGS : ISO_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); -- Escape Sequences ISO 2022 for G0, G1 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 # PATH_TABLE_M : UNSIGNED_LONGWORD; -- Path Table Logical Block # OPT_PATH_TABLE_M : 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 .. 37); -- Copyright File Identifier ABSTRACT_FILE_ID : INTEGER_8_ARRAY (1 .. 37); -- Abstract File Identifier BIBLIOGRAPHIC_ID : INTEGER_8_ARRAY (1 .. 37); -- Bibliographic File Identifier VOLUME_CREATION : INTEGER_8_ARRAY (1 .. 17); -- Volume Creation Date/Time VOLUME_MODIFIY : INTEGER_8_ARRAY (1 .. 17); -- Volume Modification Date/Time VOLUME_EXPIRATION : INTEGER_8_ARRAY (1 .. 17); -- Volume Expiration Date/Time VOLUME_EFFECTIVE : INTEGER_8_ARRAY (1 .. 17); -- 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 .. 653); -- Reserved end record; for ISO_F11C_SVD_TYPE use record SUPPLEMENTARY_VOLUME at 0 range 0 .. 55; VOLUME_FLAGS at 7 range 0 .. 7; SYSTEM_IDENTIFIER at 8 range 0 .. 255; VOLUME_IDENTIFIER at 40 range 0 .. 255; FILLER_1 at 72 range 0 .. 63; VOLUME_SPACE_SIZE at 80 range 0 .. 31; VOLUME_SPACE_SIZE_M at 84 range 0 .. 31; ESCAPE_SEQUENCES at 88 range 0 .. 255; VOLUME_SET_SIZE at 120 range 0 .. 15; VOLUME_SET_SIZE_M at 122 range 0 .. 15; VOLUME_NUMBER at 124 range 0 .. 15; VOLUME_NUMBER_M at 126 range 0 .. 15; LOGICAL_BLOCK_SIZE at 128 range 0 .. 15; LOGICAL_BLOCK_SIZE_M at 130 range 0 .. 15; PATH_TABLE_SIZE at 132 range 0 .. 31; PATH_TABLE_SIZE_M at 136 range 0 .. 31; PATH_TABLE at 140 range 0 .. 31; OPT_PATH_TABLE at 144 range 0 .. 31; PATH_TABLE_M at 148 range 0 .. 31; OPT_PATH_TABLE_M at 152 range 0 .. 31; ROOT_DIRECTORY at 156 range 0 .. 271; VOLUME_SET_IDENTIFIER at 190 range 0 .. 1023; PUBLISHER_ID at 318 range 0 .. 1023; DATA_PREPARER_ID at 446 range 0 .. 1023; APPLICATION_ID at 574 range 0 .. 1023; COPYRIGHT_FILE_ID at 702 range 0 .. 295; ABSTRACT_FILE_ID at 739 range 0 .. 295; BIBLIOGRAPHIC_ID at 776 range 0 .. 295; VOLUME_CREATION at 813 range 0 .. 135; VOLUME_MODIFIY at 830 range 0 .. 135; VOLUME_EXPIRATION at 847 range 0 .. 135; VOLUME_EFFECTIVE at 864 range 0 .. 135; FILE_STRUCTURE_VERS at 881 range 0 .. 7; FILLER_2 at 882 range 0 .. 7; APPLICATION_USE at 883 range 0 .. 4095; FILLER_3 at 1395 range 0 .. 5223; end record; for ISO_F11C_SVD_TYPE'SIZE use 16384; ISO_F11C_SVD_TYPE_INIT : constant ISO_F11C_SVD_TYPE := (SUPPLEMENTARY_VOLUME => (others => 0), VOLUME_FLAGS => ISO_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, PATH_TABLE_M => 0, OPT_PATH_TABLE_M => 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), BIBLIOGRAPHIC_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)); --+ -- Volume Partition Descriptor -- -- The 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. -- --- ISO_VPD_S_VPD : constant := 2048; -- Old size name - synonym type ISO_F11C_VPD_TYPE is record VOLUME_PARTITION : INTEGER_8_ARRAY (1 .. 7); -- 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 .. 1960); -- System Used end record; for ISO_F11C_VPD_TYPE use record VOLUME_PARTITION at 0 range 0 .. 55; FILLER_1 at 7 range 0 .. 7; SYSTEM_IDENTIFIER at 8 range 0 .. 255; PARTITION_IDENTIFIER at 40 range 0 .. 255; PARTITION_LOCATION at 72 range 0 .. 31; PARTITION_LOCATION_M at 76 range 0 .. 31; PARTITION_SIZE at 80 range 0 .. 31; PARTITION_SIZE_M at 84 range 0 .. 31; SYSTEM_USE at 88 range 0 .. 15679; end record; for ISO_F11C_VPD_TYPE'SIZE use 16384; ISO_F11C_VPD_TYPE_INIT : constant ISO_F11C_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 F11CDEF;