Lisa filesystem

From: Natalia Portillo <claunia_at_email.domain.hidden>
Date: Fri, 29 Jul 2016 03:10:09 +0100


Hello friends,

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

This archive was generated by hypermail 2.4.0 : 2020-01-13 12:15:14 EST