Return to Unit Reference
Description
Ultibo CDFS Interface unit
Constants
[Expand]
CDFS specific constants cdfs*
cdfsIso9660 = 0;
|
|
cdfsJoilet = 1;
|
|
cdfsSierra = 2;
|
|
cdfsRockRidge = 3;
|
|
cdfsAudio = 4;
|
|
cdfsUDF = 5;
|
|
|
cdfsAnyName = '*';
|
|
cdfsDotName = '.';
|
|
cdfsDotDotName = '..';
|
|
cdfsVersionName = '1';
|
Used by version information on end of identifier (Not Used)
|
cdfsSeparator1Name = '.';
|
Dot on end of identifier when no extension exists (File only)
|
cdfsSeparator2Name = ';';
|
Used by version information on end of identifier (File only)
|
|
cdfsJolietMaxPath = 240;
|
120 (240 bytes)
|
cdfsJolietMaxFile = 64;
|
(128 bytes)
|
cdfsISO9660MaxPath = 240;
|
|
cdfsISO9660MaxFile = 30;
|
31 for Directories
|
|
cdfsISO9660StandardIdentifier = 'CD001';
|
|
cdfsELTORITOSystemIdentifier = 'EL TORITO SPECIFICATION';
|
|
|
cdfsFirstSector = 0;
|
|
cdfsReservedSectors = 16;
|
|
cdfsISO9660StartSector = 16;
|
|
cdfsELTORITOBootSector = 17;
|
|
|
cdfsISO9660StructureVersion = 1;
|
|
cdfsISO9660DescriptorVersion = 1;
|
|
cdfsELTORITODescriptorVersion = 1;
|
|
|
cdfsJolietUCS2Sequence1 = #37 + #47 + #64;
|
'%/@'
|
cdfsJolietUCS2Sequence2 = #37 + #47 + #67;
|
'%/C'
|
cdfsJolietUCS2Sequence3 = #37 + #47 + #69;
|
'%/E'
|
|
cdfsDotIdentifier = $00;
|
|
cdfsDotDotIdentifier = $01;
|
|
|
cdfsSeparator1Value = $2E;
|
'.'
|
cdfsSeparator2Value = $3B;
|
';'
|
|
cdfsTimeStartYear = 1900;
|
CDFS Time starts at 1900
|
cdfsTimeOffsetInterval = 15;
|
Offset is in 15 minute intervals
|
|
cdfsNullFileTime:TFileTime = (dwLowDateTime:$00000000;dwHighDateTime:$00000000);
|
|
|
cdfsStartCluster = 16;
|
|
cdfsUnknownCluster = LongWord(-1);
|
|
|
cdfsRootPathNumber = 1;
|
|
|
cdfsPathRecordSize = 9;
|
Minimum
|
cdfsExtendedRecordSize = 250;
|
Minimum
|
cdfsDirectoryRecordSize = 34;
|
Minimum
|
|
cdfsFileIdentifierSize = 1;
|
Minimum
|
cdfsPathIdentifierSize = 1;
|
Minimum
|
|
cdfsHeaderRecordSize = 32;
|
Fixed
|
cdfsCatalogRecordSize = 32;
|
Fixed
|
cdfsExtensionRecordSize = 32;
|
Fixed
|
|
cdfsEvenSize = 0;
|
|
cdfsUnevenSize = 1;
|
|
|
cdfsRootRecordOffset = 156;
|
Offset of Root Directory in Descriptor
|
|
cdfsInstanceFirst = 0;
|
|
cdfsInstanceLast = Byte(-1);
|
|
|
cdfsTableTypeMask = $00FF0000;
|
|
cdfsTableTypeShift = 16;
|
|
cdfsTableInstanceMask = $0000FF00;
|
|
cdfsTableInstanceShift = 8;
|
|
cdfsTableDescriptorMask = $000000FF;
|
|
cdfsTableDescriptorShift = 0;
|
|
|
cdfsBitmapUnknown = LongWord(-1);
|
|
[Expand]
CDFS bitmap mask cdfsBitmapMask*
cdfsBitmapMaskBits = 64;
|
Int64 Bitmap Masks
|
cdfsBitmapMaskNone = $0000000000000000;
|
Int64 Used for fast counting of free blocks
|
cdfsBitmapMaskAll = $FFFFFFFFFFFFFFFF;
|
Int64 Used for fast counting of used blocks
|
[Expand]
CDFS volume flag cdfsVolumeFlag*
cdfsVolumeFlagNone = $00;
|
|
cdfsVolumeFlagUnregistered = $01;
|
If set this SVD contains an unregistered escape sequence
|
[Expand]
CDFS file flag cdfsFileFlag*
cdfsFileFlagNone = $00;
|
|
cdfsFileFlagExistence = $01;
|
If set this file is hidden
|
cdfsFileFlagDirectory = $02;
|
If set this record is a directory
|
cdfsFileFlagAssociated = $04;
|
If set this file is an associated file
|
cdfsFileFlagRecord = $08;
|
If set record information is recorded for this file
|
cdfsFileFlagProtection = $10;
|
If set permissions are recorded for this file
|
cdfsFileFlagReserved1 = $20;
|
Reserved
|
cdfsFileFlagReserved2 = $40;
|
Reserved
|
cdfsFileFlagMore = $80;
|
If set there are more directory records for this file
|
[Expand]
CDFS permissions cdfsPermission*
cdfsPermissionSystemRead = $0001;
|
If set system cannot Read
|
cdfsPermissionSystemWrite = $0002;
|
If set system cannot Write
|
cdfsPermissionSystemExecute = $0004;
|
If set system cannot Execute
|
cdfsPermissionReserved1 = $0008;
|
Reserved
|
cdfsPermissionOwnerRead = $0010;
|
If set owner cannot Read
|
cdfsPermissionOwnerWrite = $0020;
|
If set owner cannot Write
|
cdfsPermissionOwnerExecute = $0040;
|
If set owner cannot Execute
|
cdfsPermissionReserved2 = $0080;
|
Reserved
|
cdfsPermissionGroupRead = $0100;
|
If set group cannot Read
|
cdfsPermissionGroupWrite = $0200;
|
If set group cannot Write
|
cdfsPermissionGroupExecute = $0400;
|
If set group cannot Execute
|
cdfsPermissionReserved3 = $0800;
|
Reserved
|
cdfsPermissionOtherRead = $1000;
|
If set other cannot Read
|
cdfsPermissionOtherWrite = $2000;
|
If set other cannot Write
|
cdfsPermissionOtherExecute = $4000;
|
If set other cannot Execute
|
cdfsPermissionReserved4 = $8000;
|
Reserved
|
[Expand]
CDFS path table cdfsPathTable*
cdfsPathTableTypePrimary = $00;
|
|
cdfsPathTableTypeAlternate = $01;
|
|
cdfsPathTableTypePrimaryM = $02;
|
|
cdfsPathTableTypeAlternateM = $03;
|
|
[Expand]
CDFS volume descriptor cdfsVolumeDescriptor*
cdfsVolumeDescriptorTypeBoot = $00;
|
|
cdfsVolumeDescriptorTypePrimary = $01;
|
|
cdfsVolumeDescriptorTypeSupplementary = $02;
|
|
cdfsVolumeDescriptorTypePartition = $03;
|
|
cdfsVolumeDescriptorTypeTerminator = $FF;
|
|
[Expand]
CDFS header cdfsElTorito*
cdfsElToritoHeaderId = $01;
|
|
cdfsElToritoBootIndicator = $88;
|
|
cdfsElToritoNoBootIndicator = $00;
|
|
cdfsElToritoHeaderIndicator = $90;
|
91 if final header
|
cdfsElToritoHeaderTerminator = $91;
|
|
cdfsElToritoExtensionIndicator = $44;
|
|
[Expand]
CDFS signature cdfsElToritoSignature*
cdfsElToritoSignature = $AA55;
|
|
[Expand]
CDFS platform Id cdfsElToritoPlatform*
cdfsElToritoPlatformIdx86 = $00;
|
|
cdfsElToritoPlatformIdPPC = $01;
|
|
cdfsElToritoPlatformIdMac = $02;
|
|
[Expand]
CDFS media type cdfsElToritoMedia*
cdfsElToritoMediaTypeNone = $00;
|
No Emulation
|
cdfsElToritoMediaType12M = $01;
|
1.2 meg diskette
|
cdfsElToritoMediaType144M = $02;
|
1.44 meg diskette
|
cdfsElToritoMediaType288M = $03;
|
2.88 meg diskette
|
cdfsElToritoMediaTypeHDD = $04;
|
Hard Disk (drive 80)
|
cdfsElToritoMediaTypeMask = $0F;
|
Values 5-F Reserved, invalid at this time
|
|
cdfsElToritoMediaFlagReserved = $10;
|
Reserved, must be 0
|
cdfsElToritoMediaFlagContinuation = $20;
|
Continuation Entry Follows
|
cdfsElToritoMediaFlagAtapi = $40;
|
Image contains ATAPI driver
|
cdfsElToritoMediaFlagScsi = $80;
|
Image contains SCSI drivers
|
cdfsElToritoMediaFlagMask = $F0;
|
|
[Expand]
CDFS extension flag cdfsElToritoExtensionFlag*
cdfsElToritoExtensionFlagExtension = $20;
|
Extension Record Follows
|
Type definitions
CDFS specific types
TCDFSType = (ctNONE,ctISO9660,ctJOLIET,ctSIERRA,ctROCKRIDGE,ctAUDIO,ctUDF);
|
|
CDFS time
[Expand]
PCDFSTime = ^TCDFSTime;
TCDFSTime = packed record
Note: 7 Bytes
|
Years:Byte;
|
Number of years since 1900
|
Month:Byte;
|
Month of the year from 1 to 12
|
Day:Byte;
|
Day of the month from 1 to 31
|
Hour:Byte;
|
Hour of the day from 0 to 23
|
Minute:Byte;
|
Minute of the hour from 0 to 59
|
Second:Byte;
|
Second of the minute from 0 to 59
|
Offset:ShortInt;
|
Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East)
|
CDFS date time
[Expand]
PCDFSDateTime = ^TCDFSDateTime;
TCDFSDateTime = packed record
Note: 17 Bytes
|
Year:array[0..3] of Char;
|
Year from 1 to 9999
|
Month:array[0..1] of Char;
|
Month of the year from 1 to 12
|
Day:array[0..1] of Char;
|
Day of the month from 1 to 31
|
Hour:array[0..1] of Char;
|
Hour of the day from 0 to 23
|
Minute:array[0..1] of Char;
|
Minute of the hour from 0 to 59
|
Second:array[0..1] of Char;
|
Second of the minute from 0 to 59
|
Hundredths:array[0..1] of Char;
|
Hundredths of a second
|
Offset:ShortInt;
|
Offset from Greenwich Mean Time in number of 15 min intervals from -48 (West) to +52 (East)
|
CDFS directory record
[Expand]
PCDFSDirectoryRecord = ^TCDFSDirectoryRecord;
TCDFSDirectoryRecord = packed record
Note: 34 Bytes (Minimum not including padding)
|
RecordSize:Byte;
|
Length of Directory Record (LEN-DR)
|
ExtendedSize:Byte;
|
Extended Attribute Record Length
|
FirstBlock:LongWord;
|
Location of Extent
|
FirstBlockM:LongWord;
|
|
DataSize:LongWord;
|
Data Length
|
DataSizeM:LongWord;
|
|
CreateTime:TCDFSTime;
|
Recording Date and Time
|
FileFlags:Byte;
|
File Flags 8 bits
|
UnitSize:Byte;
|
File Unit Size
|
InterleaveSize:Byte;
|
Interleave Gap Size
|
SequenceNumber:Word;
|
Volume Sequence Number
|
SequenceNumberM:Word;
|
|
FileIdentifierSize:Byte;
|
Length of File Identifier (LEN_FI)
|
FileIdentifier:array[0..0] of Char;
|
File Identifier d-characters,d1-characters,SEPARATOR 1,SEPARATOR 2,(00) or (01) byte
|
Padding:Byte;
|
Padding Field (00) byte (Only present if FileIdentifierSize is even (Total size would be odd))
|
SystemData:array[0..0] of Byte;
|
System Use LEN_SU bytes
|
CDFS path record
[Expand]
PCDFSPathRecord = ^TCDFSPathRecord;
TCDFSPathRecord = packed record
Note: 9 Bytes (Minimum not including padding)
|
PathIdentifierSize:Byte;
|
Length of Directory Identifier (LEN_DI)
|
ExtendedSize:Byte;
|
Extended Attribute Record Length
|
FirstBlock:LongWord;
|
Location of Extent
|
ParentNumber:Word;
|
Parent Directory Number
|
PathIdentifier:array[0..0] of Char;
|
Directory Identifier d-characters, d1-characters, (00) byte
|
Padding:Byte;
|
Padding Field (00) byte (Only present if PathIdentifierSize is odd (Total size would be odd))
|
CDFS extended record
[Expand]
PCDFSExtendedRecord = ^TCDFSExtendedRecord;
TCDFSExtendedRecord = packed record
Note: 250 Bytes (Minimum)
|
OwnerId:Word;
|
Owner Identification
|
OwnerIdM:Word;
|
|
GroupId:Word;
|
Group Identification
|
GroupIdM:Word;
|
|
Permissions:Word;
|
Permissions 16 bits
|
CreateTime:TCDFSDateTime;
|
File Creation Date and Time
|
ModifyTime:TCDFSDateTime;
|
File Modification Date and Time
|
ExpireTime:TCDFSDateTime;
|
File Expiration Date and Time
|
EffectiveTime:TCDFSDateTime;
|
File Effective Date and Time
|
RecordFormat:Byte;
|
Record Format
|
RecordAttributes:Byte;
|
Record Attributes
|
RecordLength:Word;
|
Record Length
|
RecordLengthM:Word;
|
|
SystemIdentifier:array[0..31] of Char;
|
System Identifier a-characters, a1-characters
|
SystemData:array[0..63] of Byte;
|
System Use not specified
|
ExtendedVersion:Byte;
|
Extended Attribute Record Version
|
EscapeSequenceSize:Byte;
|
Length of Escape Sequences (LEN_ESC)
|
Reserved1:array[0..63] of Byte;
|
Reserved for future standardization (00) bytes
|
ApplicationDataSize:Word;
|
Length of Application Use (LEN_AU)
|
ApplicationDataSizeM:Word;
|
|
ApplicationData:array[0..0] of Byte;
|
Application Use LEN_AU bytes
|
EscapeSequence:array[0..0] of Byte;
|
Escape Sequences LEN_ESC bytes
|
CDFS volume descriptor header
[Expand]
PCDFSVolumeDescriptorHeader = ^TCDFSVolumeDescriptorHeader;
TCDFSVolumeDescriptorHeader = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Descriptor Type 00 = Boot, 01 = Primary etc
|
StandardIdentifier:array[0..4] of Char;
|
Standard Identifier ('CD001')
|
DescriptorVersion:Byte;
|
Descriptor Version (1)
|
Reserved:array[0..2040] of Byte;
|
Content depends on Descriptor Type
|
CDFS volume descriptor boot
[Expand]
PCDFSVolumeDescriptorBoot = ^TCDFSVolumeDescriptorBoot;
TCDFSVolumeDescriptorBoot = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Descriptor Type (00 = Boot)
|
StandardIdentifier:array[0..4] of Char;
|
Standard Identifier ('CD001')
|
DescriptorVersion:Byte;
|
Descriptor Version (1)
|
SystemIdentifier:array[0..31] of Char;
|
32 a-characters (eg EL TORITO SPECIFICATION)
|
BootIdentifier:array[0..31] of Char;
|
32 a-characters
|
BootData:array[0..1976] of Byte;
|
|
CDFS volume descriptor primary
[Expand]
PCDFSVolumeDescriptorPrimary = ^TCDFSVolumeDescriptorPrimary;
TCDFSVolumeDescriptorPrimary = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Descriptor Type (01 = Primary)
|
StandardIdentifier:array[0..4] of Char;
|
Standard Identifier ('CD001')
|
DescriptorVersion:Byte;
|
Descriptor Version (1)
|
Reserved1:Byte;
|
Unused Field (00) byte
|
SystemIdentifier:array[0..31] of Char;
|
System Identifier a-characters
|
VolumeIdentifier:array[0..31] of Char;
|
Volume Identifier d-characters
|
Reserved2:array[0..7] of Byte;
|
Unused Field (00) bytes
|
VolumeSpaceSize:LongWord;
|
Volume Space Size
|
VolumeSpaceSizeM:LongWord;
|
|
Reserved3:array[0..31] of Byte;
|
Unused Field (00) bytes
|
VolumeSetSize:Word;
|
Volume Set Size
|
VolumeSetSizeM:Word;
|
|
VolumeSequenceNumber:Word;
|
Volume Sequence Number
|
VolumeSequenceNumberM:Word;
|
|
LogicalBlockSize:Word;
|
Logical Block Size
|
LogicalBlockSizeM:Word;
|
|
PathTableSize:LongWord;
|
Path Table Size
|
PathTableSizeM:LongWord;
|
|
PrimaryPathTable:LongWord;
|
Location of Occurrence of Type L Path Table
|
AlternatePathTable:LongWord;
|
Location of Optional Occurrence of Type L Path Table
|
PrimaryPathTableM:LongWord;
|
Location of Occurrence of Type M Path Table
|
AlternatePathTableM:LongWord;
|
Location of Optional Occurrence of Type M Path Table
|
RootDirectory:TCDFSDirectoryRecord;
|
Directory Record for Root Directory 34 bytes
|
VolumeSetIdentifier:array[0..127] of Char;
|
Volume Set Identifier d-characters
|
PublisherIdentifier:array[0..127] of Char;
|
Publisher Identifier a-characters
|
PreparerIdentifier:array[0..127] of Char;
|
Data Preparer Identifier a-characters
|
ApplicationIdentifier:array[0..127] of Char;
|
Application Identifier a-characters
|
CopyrightIdentifier:array[0..36] of Char;
|
Copyright File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
|
AbstractIdentifier:array[0..36] of Char;
|
Abstract File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
|
BibliographicIdentifier:array[0..36] of Char;
|
Bibliographic File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
|
CreateTime:TCDFSDateTime;
|
Volume Creation Date and Time
|
ModifyTime:TCDFSDateTime;
|
Volume Modification Date and Time
|
ExpireTime:TCDFSDateTime;
|
Volume Expiration Date and Time
|
EffectiveTime:TCDFSDateTime;
|
Volume Effective Date and Time
|
FileStructureVersion:Byte;
|
File Structure Version
|
Reserved4:Byte;
|
Reserved for future standardization (00) byte
|
ApplicationData:array[0..511] of Byte;
|
Application Use not specified
|
Reserved5:array[0..652] of Byte;
|
Reserved for future standardization (00) bytes
|
CDFS volume descriptor supplementary
[Expand]
PCDFSVolumeDescriptorSupplementary = ^TCDFSVolumeDescriptorSupplementary;
TCDFSVolumeDescriptorSupplementary = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Descriptor Type (02 = Supplementary)
|
StandardIdentifier:array[0..4] of Char;
|
Standard Identifier ('CD001')
|
DescriptorVersion:Byte;
|
Descriptor Version (1)
|
VolumeFlags:Byte;
|
Volume Flags 8 bits
|
SystemIdentifier:array[0..31] of Char;
|
System Identifier a-characters
|
VolumeIdentifier:array[0..31] of Char;
|
Volume Identifier d-characters
|
Reserved2:array[0..7] of Byte;
|
Unused Field (00) bytes
|
VolumeSpaceSize:LongWord;
|
Volume Space Size
|
VolumeSpaceSizeM:LongWord;
|
|
EscapeSequences:array[0..31] of Byte;
|
Escape Sequences 32 bytes
|
VolumeSetSize:Word;
|
Volume Set Size
|
VolumeSetSizeM:Word;
|
|
VolumeSequenceNumber:Word;
|
Volume Sequence Number
|
VolumeSequenceNumberM:Word;
|
|
LogicalBlockSize:Word;
|
Logical Block Size
|
LogicalBlockSizeM:Word;
|
|
PathTableSize:LongWord;
|
Path Table Size
|
PathTableSizeM:LongWord;
|
|
PrimaryPathTable:LongWord;
|
Location of Occurrence of Type L Path Table
|
AlternatePathTable:LongWord;
|
Location of Optional Occurrence of Type L Path Table
|
PrimaryPathTableM:LongWord;
|
Location of Occurrence of Type M Path Table
|
AlternatePathTableM:LongWord;
|
Location of Optional Occurrence of Type M Path Table
|
RootDirectory:TCDFSDirectoryRecord;
|
Directory Record for Root Directory 34 bytes
|
VolumeSetIdentifier:array[0..127] of Char;
|
Volume Set Identifier d-characters
|
PublisherIdentifier:array[0..127] of Char;
|
Publisher Identifier a-characters
|
PreparerIdentifier:array[0..127] of Char;
|
Data Preparer Identifier a-characters
|
ApplicationIdentifier:array[0..127] of Char;
|
Application Identifier a-characters
|
CopyrightIdentifier:array[0..36] of Char;
|
Copyright File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
|
AbstractIdentifier:array[0..36] of Char;
|
Abstract File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
|
BibliographicIdentifier:array[0..36] of Char;
|
Bibliographic File Identifier d-characters, SEPARATOR 1, SEPARATOR 2
|
CreateTime:TCDFSDateTime;
|
Volume Creation Date and Time
|
ModifyTime:TCDFSDateTime;
|
Volume Modification Date and Time
|
ExpireTime:TCDFSDateTime;
|
Volume Expiration Date and Time
|
EffectiveTime:TCDFSDateTime;
|
Volume Effective Date and Time
|
FileStructureVersion:Byte;
|
File Structure Version
|
Reserved4:Byte;
|
Reserved for future standardization (00) byte
|
ApplicationData:array[0..511] of Byte;
|
Application Use not specified
|
Reserved5:array[0..652] of Byte;
|
Reserved for future standardization (00) bytes
|
CDFS volume descriptor partition
[Expand]
PCDFSVolumeDescriptorPartition = ^TCDFSVolumeDescriptorPartition;
TCDFSVolumeDescriptorPartition = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Descriptor Type (03 = Partition)
|
StandardIdentifier:array[0..4] of Char;
|
Standard Identifier ('CD001')
|
DescriptorVersion:Byte;
|
Descriptor Version (1)
|
Reserved1:Byte;
|
Unused Field (00) byte
|
SystemIdentifier:array[0..31] of Char;
|
System Identifier a-characters
|
PartitionIdentifier:array[0..31] of Char;
|
Volume Partition Identifier d-characters
|
PartitionStart:LongWord;
|
Volume Partition Location (first Logical Block)
|
PartitionStartM:LongWord;
|
|
PartitionSize:LongWord;
|
Volume Partition Size (in Logical Blocks)
|
PartitionSizeM:LongWord;
|
|
SystemData:array[0..1959] of Byte;
|
System Use not specified
|
CDFS volume descriptor terminator
[Expand]
PCDFSVolumeDescriptorTerminator = ^TCDFSVolumeDescriptorTerminator;
TCDFSVolumeDescriptorTerminator = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Descriptor Type (FF = Terminator)
|
StandardIdentifier:array[0..4] of Char;
|
Standard Identifier ('CD001')
|
DescriptorVersion:Byte;
|
Descriptor Version (1)
|
Reserved:array[0..2040] of Byte;
|
Reserved (Always 00)
|
EL TORITO validation record
[Expand]
PELTORITOValidationRecord = ^TELTORITOValidationRecord;
TELTORITOValidationRecord = packed record
Note: 32 Bytes
|
HeaderId:Byte;
|
Header ID, must be 01
|
PlatformId:Byte;
|
Platform ID 0 = 80x86, 1 = PowerPC, 2 = Mac
|
Reserved1:Word;
|
Reserved, must be 0
|
VendorId:array[0..23] of Char;
|
ID string. This is intended to identify the manufacturer/developer of the CD-ROM
|
Checksum:Word;
|
Checksum Word. This sum of all the words in this record should be 0
|
Signature:Word;
|
Key byte, must be 55. Key byte, must be AA. This value is included in the checksum
|
EL TORITO default record
[Expand]
PELTORITODefaultRecord = ^TELTORITODefaultRecord;
TELTORITODefaultRecord = packed record
Note: 32 Bytes
|
BootIndicator:Byte;
|
Boot Indicator. 88 = Bootable, 00 = Not Bootable
|
BootMedia:Byte;
|
Boot media type. This specifies what media the boot image is intended to emulate
|
LoadSegment:Word;
|
This is the load segment for the initial boot image. If this value is 0 the system will use the traditional segment of 7C0
|
SystemType:Byte;
|
This must be a copy of byte 5 (System Type) from the Partition Table found in the boot image (PartitionId)
|
Reserved1:Byte;
|
Unused, must be 0
|
LoadCount:Word;
|
Sector Count. This is the number of virtual/emulated sectors the system will store at Load Segment during the initial boot procedure
|
LoadRBA:LongWord;
|
Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing
|
Reserved2:array[0..19] of Byte; {Unused, must be 0}
|
|
EL TORITO section header
[Expand]
PELTORITOSectionHeader = ^TELTORITOSectionHeader;
TELTORITOSectionHeader = packed record
Note: 32 Bytes
|
HeaderIndicator:Byte;
|
Header Indicator, 90 - Header, more headers follow, 91 - Final Header
|
PlatformId:Byte;
|
Platform ID 0 = 80x86, 1 = PowerPC, 2 = Mac
|
SectionCount:Word;
|
Number of section entries following this header
|
SectionId:array[0..27] of Char;
|
ID string. This identifies a section
|
EL TORITO section record
[Expand]
PELTORITOSectionRecord = ^TELTORITOSectionRecord;
TELTORITOSectionRecord = packed record
Note: 32 Bytes
|
BootIndicator:Byte;
|
Boot Indicator. 88 = Bootable, 00 = Not Bootable
|
BootMedia:Byte;
|
Boot media type. This specifies what media the boot image emulates
|
LoadSegment:Word;
|
Load Segment. This is the load segment for the initial boot image. If this value is 0 the system will use the traditional segment of 7C0
|
SystemType:Byte;
|
System Type. This must be a copy of byte 5 (System Type) from the Partition Table found in the boot image (PartitionId)
|
Reserved1:Byte;
|
Unused, must be 0
|
LoadCount:Word;
|
Sector Count. This is the number of virtual/emulated sectors the system will store at Load Segment during the initial boot procedure
|
LoadRBA:LongWord;
|
Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing
|
SelectionType:Byte;
|
Selection criteria type. 0 - No selection criteria, 1- Language and Version Information (IBM), 2-FF - Reserved
|
SelectionData:array[0..18] of Byte;
|
Vendor unique selection criteria
|
EL TORITO section extension
[Expand]
PELTORITOSectionExtension = ^TELTORITOSectionExtension;
TELTORITOSectionExtension = packed record
Note: 32 Bytes
|
ExtensionIndicator:Byte;
|
Extension Indicator. Must be 44
|
ExtensionFlag:Byte;
|
Bits 1-4 - Unused, Bit 5 (1 = Extension Record follows, 0 = This is final Extension), Bits 6-7 - Unused
|
SelectionData:array[0..29] of Byte;
|
Vendor unique selection criteria
|
EL TORITO volume descriptor boot
[Expand]
PELTORITOVolumeDescriptorBoot = ^TELTORITOVolumeDescriptorBoot;
TELTORITOVolumeDescriptorBoot = packed record
Note: 2048 Bytes
|
DescriptorType:Byte;
|
Boot Record Indicator, must be 0
|
StandardIdentifier:array[0..4] of Char;
|
ISO-9660 Identifier, must be 'CD001'
|
DescriptorVersion:Byte;
|
Version of this descriptor, must be 1
|
SystemIdentifier:array[0..31] of Char;
|
Boot System Identifier, must be 'EL TORITO SPECIFICATION' padded with 0s
|
Reserved1:array[0..31] of Byte;
|
Unused, must be 0
|
CatalogStart:LongWord;
|
Absolute pointer to first sector of Boot Catalog
|
Reserved2:array[0..1972] of Byte;
|
Unused, must be 0
|
Class definitions
CDFS specific classes
Public variables
None defined
Function declarations
Initialization functions
[Expand]
procedure CDFSInit;
Description: To be documented
[Expand]
procedure CDFSQuit;
Description: To be documented
CDFS helper functions
[Expand]
function CDFSDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;
Description: Creates a pointer and copies data from a buffer
Note
|
Allows byte order swapping on copy
|
[Expand]
function CDFSPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;
Description: Copies data to a buffer from supplied pointer
Note
|
Allows byte order swapping on copy
|
[Expand]
function CDFSIdentifierToString(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied indentifier to a string
Note
|
Accounts for unicode and byte ordering
|
[Expand]
function CDFSStringToIdentifier(const AString:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Description: Converts the supplied string to an identifier
Note
|
Accounts for unicode and byte ordering
|
[Expand]
function CDFSIdentifierToFileName(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Description: Converts the supplied identifier to a filename
Note
|
Accounts for dot and dot dot special entries
|
[Expand]
function CDFSFileNameToIdentifier(const AFileName:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Description: Converts the supplied filename to an identifier
Note
|
Accounts for dot and dot dot special entries
|
[Expand]
function CDFSTimeToFileTime(const ATime:TCDFSTime):TFileTime;
Description: Converts a CDFS Time in Local to a File Time in UTC
[Expand]
function FileTimeToCDFSTime(const AFileTime:TFileTime; var ATime:TCDFSTime):Boolean;
Description: Converts a File Time in UTC to a CDFS Time in Local
[Expand]
function CDFSDateTimeToFileTime(const ADateTime:TCDFSDateTime):TFileTime;
Description: Converts a CDFS Date Time in Local to a File Time in UTC
[Expand]
function FileTimeToCDFSDateTime(const AFileTime:TFileTime; var ADateTime:TCDFSDateTime):Boolean;
Description: Converts a File Time in UTC to a CDFS Date Time in Local
Return to Unit Reference