Plain ISO 9660 level 1. No Joliet, no Rock Ridge, no extended attribute
records, no multi-extent files. tools/isofs.py reads all of it in about a
hundred lines because there is nothing else to read.
| Field | Value |
|---|---|
| System identifier | CDTV |
| Volume identifier | DragonStone |
| Volume space size | 1,635 blocks of 2,048 |
| Path table size | 30 bytes; L type at LBA 20, M type at LBA 19 |
| Root directory | LBA 22, 6,144 bytes |
| Publisher | Core Design |
| Data preparer | Sajjad Majid - ISOCD 1.04 by Pantaray, Inc. USA - |
| Application | DragonStone |
| Volume set / copyright / abstract / bibliographic | all empty |
| Creation | 1994122212272100 = 1994-12-22 12:27:21 UTC |
| Modification / expiration / effective | all zero |
| File structure version | 1 |
Two things are worth pointing at.
The system identifier says CDTV, not CD32. That is correct and
deliberate: the Amiga CD32 reads CDTV discs, and a CD32 title identifies its
volume the way a 1991 CDTV title does. There is no field anywhere in ISO 9660
that says "this is a CD32 game". What marks the disc as an Amiga disc is its
content -- an AmigaDOS startup sequence, AmigaDOS commands in c/, and the
Commodore trademark block at sector 21.
The string fields are NUL-padded rather than space-padded, and
DragonStone uses lower case. ISO 9660 asks for d-characters -- upper case,
digits, underscore -- padded with spaces. Every string field on this disc
breaks both rules. Nothing cares, because the only thing that ever reads them
is a person.
The 512-byte application-use field is normally empty. Here it is not:
offset 883: 00
offset 884: 46 53 00 00 "FS"
offset 888: 54 4D 00 14 "TM", 0x0014 = 20
offset 892: 00 00 08 00 0x0800 = 2048
offset 896: 00 00 00 15 0x0015 = 21
Two two-character tags, FS and TM, and then the numbers 20, 2,048 and 21 --
the LBA of the path table, one sector's worth of bytes, and the LBA of the
trademark block. This is the only reference on the entire disc to sector 21:
no directory record covers it and the file system treats it as free space.
11-leftovers.md has what is actually in there.
Three directories: root at LBA 22, s at 25, c at 27. The path table has
three entries and agrees. All 91 files are single-extent, ;1 versioned, with
no XA subheader and no system-use bytes.
Files are laid out alphabetically within each directory, which is why the
shared Lx_* files -- written last, as the timestamps show -- sit at low LBAs
and the level files sit at high ones.
Every directory record carries a seven-byte recording date. On this disc almost all of them read:
4E 01 01 00 mm ss 00 = 1978-01-01 00:mm:ss +00:00
Year byte 0x4E is 78, so 1978; month 1, day 1; hour always 0. 1 January
1978 is day zero of the AmigaDOS DateStamp. A machine with no
battery-backed clock -- or one that has simply never been told the date --
comes up at exactly that instant, and every file written afterwards is stamped
with the time since power-on.
Sorting the files by that time reproduces the build session:
| Time | File | Note |
|---|---|---|
| 00:01:09 | L1_GSBlk.cru |
first file written |
| 00:03:08 | L2_XMemI.cru |
levels 1 and 2 done in two minutes |
| 00:05:19 | L3_GSBlk.cru |
a two-minute pause before level 3 |
| 00:15:08 | Lc_XMemI.cru |
all eleven levels written |
| 00:19:43 | Lx_ChipI.cru |
four and a half minutes later, shared data |
| 00:22:30 | c/FreeAnim |
the boot commands |
| 00:26:35 | s/Startup-Sequence |
last file written |
Note the ordering: the level data was written before the loader and before the boot sequence. The seconds field never exceeds 59 and the minutes climb monotonically, so this is a clock, not a counter.
There is no L4 anywhere in the sequence. Between L3_XMemI at 00:06:04 and
L5_GSBlk at 00:06:26 there is a 22-second gap, no longer than the gaps
elsewhere. Level 4 was not written and then removed during this session; it
simply was not there.
Three records carry a real date:
| File | Timestamp |
|---|---|
Lx_ReloD.cru |
1992-08-14 18:26:17 |
Lx_TPage.cru |
1992-08-14 18:26:56 |
Lx_DataL.exe |
1992-08-14 18:28:07 |
Two minutes apart, on a Friday afternoon, two years and four months before the disc was mastered -- and, unlike everything else, from a machine whose clock was set.
These three files are also, exactly and only, the three files that contain the
marker CDIOEND, the end-of-module label of the disc's hand-written CD driver
(03-boot-chain.md). The correlation is perfect. The
explanation is not established: see
12-open-questions.md.