Some of you know that a couple of years ago I started reverse engineering the Lisa filesystem in my spare time.
So wait no more, it is done.
Indeed V3 was done more than a year ago, it's just that I tried to make my DiscImageChef tool something more usable for that.
And this time has come.
https://github.com/claunia/DiscImageChef/releases/tag/v3.1.0
Here you have a pre-release of DiscImageChef with full support for Lisa filesystem, V1, V2 and V3.
The code also contains a fully documented, heavily commented, list of all the structures that make the filesystem.
I have reverse engineered it looking not a single confidential file (which I do not have) or source file (which I neither have) but purely experimenting with disks. Indeed I'm writing a book on how I made it.
Some field names I took from the Lisa OS public programming interfaces while some others I invented they myself.
It has read any single disk and its contents I have been able to throw to it with the following caveats:
It wholly supports Twiggies, Profiles, Widgest, IDEFiles, etc, anything you can throw in DiskCopy 4.2. I have not tested Priam disks, but if you got a DiskCopy 4.2 image of them, send me!
In a nutshell, to debunk all misinformation about the filesystem:
Every disk starts with the boot file (shown as $Boot by DiscImageChef) that contains code to load the OS loader (shown as $Loader). The OS Loader is next block in floppies but 8 blocks farther away in all hard disk images. Next to the $Loader resides the MDDF (shown as $MDDF), like the Lisa filesystem superblock, it contains information describing the volume. Next to the MDDF resides the volume usage bitmap (shown as $Bitmap), and pointed by it (usually next to it) the S-Records file (shown as $S-Records).
The $S-Records contain a hashtable of entries, where the hash is the file id, and the entry contains a pointer to the Extents File to that file id, as well as the file size in bytes.
The Extents File (2 sectors in V1, 1 sector in V2 and V3) contains all information, including the LisaInfo structure, for a file, plus the extents to read them (extents = pointer + length), and dates (epoch is 1 January 1901, 3 years before Mac OS epoch).
In V1 and V2, the root (and only) catalog is a file whose Extents File is pointed by the S-Records file, containing the filenames and file IDs only.
In V3 the catalogs are 4-sector blocks that connect using a double-linked (before and after pointers) structure.
While seems that the only public information until today about Lisa FS has veen that v1 uses a simple table catalog, v2 a hash table one and v3 a B-Tree one, for me doesn't seem the case. But note, that looking at the raw data, as I've done it, I can't be sure that v3 is not a B-Tree (it may be a simple B-Tree that's readable as a double-linked list), and for me, v2 and v1 catalogs are identically structured (and read flawlessly with the same code). It may also be referring to an on-memory structure for the OS.
So, that's all, thanks for waiting for me all this years :p
Regards,
Natalia Portillo
-- -- ----- You received this message because you are a member of the LisaList group. The group FAQ is at http://lowendmac.com/lists/lisa.html To post to this group, send email to lisalist_at_email.domain.hidden To leave this group, send email to lisalist+unsubscribe_at_email.domain.hidden For more options, visit this group at http://groups.google.com/group/lisalist --- You received this message because you are subscribed to the Google Groups "LisaList" group. To unsubscribe from this group and stop receiving emails from it, send an email to lisalist+unsubscribe_at_googlegroups.com. For more options, visit https://groups.google.com/d/optout.Received on 2016-07-29 10:27:55
- application/pgp-signature attachment: OpenPGP digital signature
This archive was generated by hypermail 2.4.0 : 2020-01-13 12:15:14 EST