Difference between revisions of "Unit CDFS"
(15 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '''Ultibo CDFS | + | '''Ultibo CDFS Interface unit''' |
− | + | ||
− | + | ||
=== Constants === | === Constants === | ||
Line 34: | Line 32: | ||
|- | |- | ||
| <code>cdfsUDF = 5;</code> | | <code>cdfsUDF = 5;</code> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
|- | |- | ||
Line 67: | Line 43: | ||
|- | |- | ||
| <code>cdfsDotDotName = '..';</code> | | <code>cdfsDotDotName = '..';</code> | ||
− | |||
− | |||
− | |||
| | | | ||
|- | |- | ||
Line 261: | Line 234: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 278: | Line 251: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 292: | Line 265: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 327: | Line 300: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 383: | Line 356: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 403: | Line 376: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 426: | Line 399: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 452: | Line 425: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 463: | Line 436: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 480: | Line 453: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 523: | Line 496: | ||
<br /> | <br /> | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <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 | + | <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;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
Line 547: | Line 520: | ||
|} | |} | ||
− | '''CDFS time | + | '''CDFS time''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 582: | Line 555: | ||
</div></div> | </div></div> | ||
− | '''CDFS date time | + | '''CDFS date time''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 620: | Line 593: | ||
</div></div> | </div></div> | ||
− | '''CDFS directory record | + | '''CDFS directory record''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 682: | Line 655: | ||
</div></div> | </div></div> | ||
− | '''CDFS path record | + | '''CDFS path record''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 714: | Line 687: | ||
</div></div> | </div></div> | ||
− | '''CDFS extended record | + | '''CDFS extended record''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 794: | Line 767: | ||
</div></div> | </div></div> | ||
− | '''CDFS volume descriptor header | + | '''CDFS volume descriptor header''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 820: | Line 793: | ||
</div></div> | </div></div> | ||
− | '''CDFS volume descriptor boot | + | '''CDFS volume descriptor boot''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 852: | Line 825: | ||
</div></div> | </div></div> | ||
− | '''CDFS volume descriptor primary | + | '''CDFS volume descriptor primary''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 980: | Line 953: | ||
</div></div> | </div></div> | ||
− | '''CDFS volume descriptor supplementary | + | '''CDFS volume descriptor supplementary''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,108: | Line 1,081: | ||
</div></div> | </div></div> | ||
− | '''CDFS volume descriptor partition | + | '''CDFS volume descriptor partition''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,155: | Line 1,128: | ||
</div></div> | </div></div> | ||
− | '''CDFS volume descriptor terminator | + | '''CDFS volume descriptor terminator''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,181: | Line 1,154: | ||
</div></div> | </div></div> | ||
− | ''' | + | '''EL TORITO validation record''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,213: | Line 1,186: | ||
</div></div> | </div></div> | ||
− | ''' | + | '''EL TORITO default record''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,243: | Line 1,216: | ||
|- | |- | ||
| <code>LoadRBA:LongWord;</code> | | <code>LoadRBA:LongWord;</code> | ||
− | | Load RBA. This is the start address of the virtual disk. | + | | 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> | | <code>Reserved2:array[0..19] of Byte; {Unused, must be 0}</code> | ||
Line 1,251: | Line 1,224: | ||
</div></div> | </div></div> | ||
− | ''' | + | '''EL TORITO section header''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,277: | Line 1,250: | ||
</div></div> | </div></div> | ||
− | ''' | + | '''EL TORITO section record''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,307: | Line 1,280: | ||
|- | |- | ||
| <code>LoadRBA:LongWord;</code> | | <code>LoadRBA:LongWord;</code> | ||
− | | Load RBA. This is the start address of the virtual disk. | + | | Load RBA. This is the start address of the virtual disk. CDs use Relative/Logical block addressing |
|- | |- | ||
| <code>SelectionType:Byte;</code> | | <code>SelectionType:Byte;</code> | ||
Line 1,318: | Line 1,291: | ||
</div></div> | </div></div> | ||
− | ''' | + | '''EL TORITO section extension''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,341: | Line 1,314: | ||
</div></div> | </div></div> | ||
− | ''' | + | '''EL TORITO volume descriptor boot''' |
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
Line 1,362: | Line 1,335: | ||
|- | |- | ||
| <code>SystemIdentifier:array[0..31] of Char;</code> | | <code>SystemIdentifier:array[0..31] of Char;</code> | ||
− | | Boot System Identifier, must be 'EL TORITO SPECIFICATION' padded with | + | | Boot System Identifier, must be 'EL TORITO SPECIFICATION' padded with 0s |
|- | |- | ||
| <code>Reserved1:array[0..31] of Byte;</code> | | <code>Reserved1:array[0..31] of Byte;</code> | ||
Line 1,380: | Line 1,353: | ||
---- | ---- | ||
− | '' | + | |
+ | '''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 === | ||
Line 1,399: | Line 1,445: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,411: | Line 1,457: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,426: | Line 1,472: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Allows byte order swapping on copy | | Allows byte order swapping on copy | ||
|- | |- | ||
Line 1,438: | Line 1,484: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Allows byte order swapping on copy | | Allows byte order swapping on copy | ||
|- | |- | ||
Line 1,450: | Line 1,496: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Accounts for unicode and byte ordering | | Accounts for unicode and byte ordering | ||
|- | |- | ||
Line 1,462: | Line 1,508: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Accounts for unicode and byte ordering | | Accounts for unicode and byte ordering | ||
|- | |- | ||
Line 1,474: | Line 1,520: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Accounts for dot and dot dot special entries | | Accounts for dot and dot dot special entries | ||
|- | |- | ||
Line 1,486: | Line 1,532: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Accounts for dot and dot dot special entries | | Accounts for dot and dot dot special entries | ||
|- | |- | ||
Line 1,498: | Line 1,544: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,510: | Line 1,556: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,522: | Line 1,568: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 1,534: | Line 1,580: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- |
Latest revision as of 05:35, 31 August 2021
Return to Unit Reference
Contents
Description
Ultibo CDFS Interface unit
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);
|
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 |
cdfsVolumeFlag*
cdfsVolumeFlagNone = $00;
|
|
cdfsVolumeFlagUnregistered = $01;
|
If set this SVD contains an unregistered escape sequence |
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 |
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 |
cdfsPathTable*
cdfsPathTableTypePrimary = $00;
|
|
cdfsPathTableTypeAlternate = $01;
|
|
cdfsPathTableTypePrimaryM = $02;
|
|
cdfsPathTableTypeAlternateM = $03;
|
cdfsVolumeDescriptor*
cdfsVolumeDescriptorTypeBoot = $00;
|
|
cdfsVolumeDescriptorTypePrimary = $01;
|
|
cdfsVolumeDescriptorTypeSupplementary = $02;
|
|
cdfsVolumeDescriptorTypePartition = $03;
|
|
cdfsVolumeDescriptorTypeTerminator = $FF;
|
cdfsElTorito*
cdfsElToritoHeaderId = $01;
|
|
cdfsElToritoBootIndicator = $88;
|
|
cdfsElToritoNoBootIndicator = $00;
|
|
cdfsElToritoHeaderIndicator = $90;
|
91 if final header |
cdfsElToritoHeaderTerminator = $91;
|
|
cdfsElToritoExtensionIndicator = $44;
|
cdfsElToritoSignature*
cdfsElToritoSignature = $AA55;
|
cdfsElToritoPlatform*
cdfsElToritoPlatformIdx86 = $00;
|
|
cdfsElToritoPlatformIdPPC = $01;
|
|
cdfsElToritoPlatformIdMac = $02;
|
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;
|
cdfsElToritoExtensionFlag*
cdfsElToritoExtensionFlagExtension = $20;
|
Extension Record Follows |
Type definitions
CDFS specific types
TCDFSType = (ctNONE,ctISO9660,ctJOLIET,ctSIERRA,ctROCKRIDGE,ctAUDIO,ctUDF);
|
CDFS time
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
procedure CDFSInit;
Note | None documented |
---|
procedure CDFSQuit;
Note | None documented |
---|
CDFS helper functions
function CDFSDataToPointer(const AData; ASize:Integer; ASwap:Boolean):Pointer;
Note | Allows byte order swapping on copy |
---|
function CDFSPointerToData(APointer:Pointer; var AData; ASize:Integer; ASwap:Boolean):Boolean;
Note | Allows byte order swapping on copy |
---|
function CDFSIdentifierToString(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Note | Accounts for unicode and byte ordering |
---|
function CDFSStringToIdentifier(const AString:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Note | Accounts for unicode and byte ordering |
---|
function CDFSIdentifierToFileName(const AIdentifier; ASize:Integer; AUnicode:Boolean):String;
Note | Accounts for dot and dot dot special entries |
---|
function CDFSFileNameToIdentifier(const AFileName:String; var AIdentifier; ASize:Integer; AUnicode:Boolean):Boolean;
Note | Accounts for dot and dot dot special entries |
---|
function CDFSTimeToFileTime(const ATime:TCDFSTime):TFileTime;
Note | None documented |
---|
function FileTimeToCDFSTime(const AFileTime:TFileTime; var ATime:TCDFSTime):Boolean;
Note | None documented |
---|
function CDFSDateTimeToFileTime(const ADateTime:TCDFSDateTime):TFileTime;
Note | None documented |
---|
function FileTimeToCDFSDateTime(const AFileTime:TFileTime; var ADateTime:TCDFSDateTime):Boolean;
Note | None documented |
---|
Return to Unit Reference