DiscImageChef and the Lisa operating system source code recovery

In 1983, Apple launched the Lisa computer, one of the first personal computers with a graphical user interface, setting up the first stone to user interfaces as we know them today.
On 24th December 2017, Al Kossow announced he recovered the source code (that is, the computer code used to create the Lisa operating system and user interface), using the DiscImageChef tool.

What is DiscImageChef?
DiscImageChef is a multifunctional manager for all kind of dump images of computer storage. It can do the most common functions usually done with dumps of floppies, hard disks, optical discs, etc. It also allows dumping such media to images.

What was the function of DiscImageChef in the Lisa source code recovery?
One of the functions of DiscImageChef is, for supported filesystems, to extract the contents of a dump. And in the case of the Lisa, DiscImageChef is the only tool supporting its filesystem thanks to my reverse engineering of it.

Reverse engineering?
Yes, that is the process to analyze some software to learn its inner workings, to be able to document that, or to create another software that is interoperable with its documents. In the case of the Lisa filesystem, there was no documentation of it; it was only known that it had some structures called MDDF and S-Record, but there was no information about how those structures were formed. So for several years I studied all known dumps, and created lots of test dumps using Ray Arachelian’s emulator, LisaEm. Then, through testing and analysis of these dumps, I finally got enough knowledge of the Lisa filesystem structures to be able to add support for it on DiscImageChef.

So that’s why you created DiscImageChef?
No, indeed, DiscImageChef started in 2011 as a personal tool designed to identify and show information about filesystems called FileSystemIDAndChk, that I used to check the integrity and correctness in my collection of operating system dumps. From that, it evolved organically. As dumps came in different formats, I added support for format plugins. In 2014 I renamed it the a more appropriate DiscImageChef. And from then on it has gained the ability of extracting files, creating dumps, comparing two dumps even with different formats, etc.

Why that name?
When talking about storage media, we say that their contents are raw when they represent what is in the media itself, while the contents are cooked when they contain only the data a user has wrote to them. And a chef is someone that takes a bunch of raw ingredients, and not only cooks, but makes magic with them. And disc image is because at first it was oriented for optical discs only, that by convention are spelled with C, contrary to other media that is spelled with K, as in disk. Also, “swiss army knife” is a term that’s used so much, it has known became a common thing, losing its uniqueness. So join all, and you have The Disc Image Chef.

So, is it DiscImageChef or Disc Image Chef?
Both can be used. I just prefer to use DiscImageChef when no article is used, and separate when it is, like The Disc Image Chef.

And what can it do today?
Well, the last stable version, it can analyze, checksum, compare and verify 46 different image formats, identify 73 filesystems, list and extract files from 5 of them, and get information and create a dump from almost all devices, as long as they are attached to a ATA (aka IDE), Serial ATA, FireWire, USB, SCSI or SDHCI bus, from 3 of the major operating systems: Windows, Linux and FreeBSD.

Why does it not support macOS?
It does! The only thing it is not able to do is to dump media from a device connected to macOS. All the other functions work perfectly. The problem with macOS is that it doesn’t allow any application to arbitrarily read devices attached to it; only from CD and DVD recorders. And I intend to add support for doing that soon.

So what’s the future of DiscImageChef?
Well, for start I’m adding support for writing in any of the dump formats currently supported. That will allow people to convert a dump between two formats, or create a new dump from real media in their favorite format. The next thing I’ll add is support for dumping floppies, with a standard floppy drive, or using one of the flux dumping hardware cards, like SuperCardPro, DiscFerret or KryoFlux. Also I intend to add the ability to list of extract for as many filesystems as possible.

Is a graphical interface coming?
Yes. I will add a graphical interface to DiscImageChef when all the other functions are stable. With barebones support for floppies, and only 5 filesystems fully supported, I feel it is not currently the time for adding a graphical interface. Also I’m pretty bad designing graphical interfaces, so if any designer is up to it, help is accepted.

About help, how many people work on DiscImageChef?
From time to time a collaborator sends new code, or someone asks for a feature, but it’s mostly me alone, and I will be very grateful to have some help, specially when designing new parts of DiscImageChef, a little discussion of different ideas is always welcome.

To end, where can we get more information, or news, about DiscImageChef, or ask for a feature?
You can follow my work on Twitter, @aaru-dps, or you can follow the project on GitHub.

Natalia Portillo,
31st December 2017