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