fdisasm191117.zip (106K) a zipped hfs disk image and checksum file. The disk image can be mounted with Mini vMac. Includes source code.
fdplusv3-191110.zip (90K) a disk image containing all the formatting information needed to disassemble a Macintosh Plus ROM image (version 3, final - checksum 4D1F8172).
ROM Formatting Information - more images to disassemble other Macintosh ROMs.
FDisasm is a formatting disassembler for Motorola 680x0 code. It makes it possible to distribute the means to create an annotated disassembly of copyrighted code (such as Macintosh ROM images), without distributing that code or files derived from it.
To use FDisasm to disassemble the Macintosh Plus ROM, launch Mini vMac and boot from a disk image containing a system folder. Mount the fdplusv3-191110 disk image, and import a copy of the Macintosh Plus ROM onto it. (Such as by using ImportFl.) Mount the fdisasm191117 disk image, copy the FDisasm application to the fdplus disk image, and then eject the fdisasm image. Rename the ROM image to “bin”, and then launch the FDisasm application. The program displays a progress indicator, and quits when it is finished. (It could take five minutes at 1x speed, so set speed to “all out”. At “all out” speed it takes under 10 seconds to finish on my Mac Mini.) When the program finishes, the output is in a file named “listing”.
This listing file is over 2 megabytes. The program MPW Shell 3.2.3 works in Mini vMac and can work with such large text files. But probably almost nobody else has an old copy of MPW. (The final version of MPW still available for free download requires a Mac II or later.) Instead you can export the listing file to the host computer (such as by using ExportFl), and find some program there that can view it. (For OS X, TextWrangler would work, for example.)
Warning : Not enough people are paying enough attention to FDisasm (especially me) for it to be relied upon. If you notice something odd in the output, double check it, and if it is wrong, please report it to me.
This listing file is derived (in terms of copyright law) from the Macintosh Plus ROM, and so may not be redistributed.
To disassemble the Macintosh 128/512 ROM, follow the above instructions, except use the fdmac128-0.3.0 disk image, and of course use a ROM image from a Macintosh 128 or 512. And similarly for the Macintosh SE, Macintosh II, and PowerBook 100 ROMs.
Here are some details about the formatting information files used by FDisasm:
The only file required by FDisasm is “bin”. But if this is all it finds, it will just create a hexadecimal dump of the file. To disassemble code, it needs to know where the code is. It looks for a file named “bin_map” for this information. It also looks for a file named “bin_names” for names of locations within “bin”, and for a file named “abs_names” for names of absolute memory locations, and for a file named “trap_names” for names of A-line instructions. A file named “format” can give additional formatting information, and comments to include in the listing.
The FindCode tool can help to create the files “bin_map” and “bin_names”.
The FindRes tool will create an initial “format” file for Macintosh resources, and also “bin_map” and a set of entry points to feed to FindCode.
Besides ROM images, FDisasm can also disassemble Macintosh 680x0 applications. But the code and other resources are located in the “resource fork” of such appplications, while FDisasm only operates on the “data fork” of the file “bin”. The GetRsFrk tool gets the resource fork of a file you select, and saves it into the data fork of “bin”. An alternative is asPack, which also saves the data fork and the meta data into “bin”, in AppleSingle format.
FDisasm has some compile time options. The default values are defined in “source/CNFGDLFT.i”, and these defaults can be changed in “source/CONFIGUR.i”. For example, the following variation outputs address and hex fields, resulting in output that is not suitable for passing to an assembler, but is more useful when working on the format file.
fdis0003-191117.zip (29K) variation of FDisasm.
The software that has become FDisasm, FindCode, and FindRes was my first serious programming project, started in 1985 in Basic, and later converted to Pascal, and now converted to C when I got back to it recently. I wonder if 23 years to first public release is any kind of record.
Here are the md5 checksums for the downloads, signed with Gryphel Key 5:
--------- GRY SIGNED TEXT --------- 2dd186e8f1c753f41ef8d8da9b72b3d8 fdisasm191117.zip 4d36511fea785c2667e7cc17902fed8b fdis0003-191117.zip 42fd9fed40790c1235679e5702adaebe fdtwiggy-190630.zip 9ca3ab19ddb37595fed87d36a1d9fd2d fdmac128v1-190630.zip 96b75af636003188ca174d81587af8b5 fdmac128v2-190630.zip 1003a6aabac8086f51a5ac4fe384457b fdplusv1-190630.zip c0b8b30b78a0a1fb83a50078160f53d8 fdplusv2-190630.zip 874588b0f7d787e97eeac806066b9a76 fdplusv3-191110.zip d178bb5a3f9e7d22220ba8b71a6b44e5 fdmacse-190630.zip dbc7e53c01217e283fb35e885c64f5d2 fdsefdhd-190630.zip f027f7b6a4ecdd2dd14bbeaaf8bee042 fdmaciiv1-190901.zip 37b04a65074c2b5ce1158e5c5582a8d7 fdmaciiv2-190901.zip a56757f3fddb63ba1d588b5307141765 fdmaciix-190901.zip a71d9adae445e0dca6df96b3947f8f29 fdpb100-190714.zip f2253e5bfb014f3aa32c6720d25145f7 fdmaciici-190915.zip ------- BEGIN GRY SIGNATURE ------- Gry/4Xa8CFcUzxdN/D0lE4qrOoxtBVl1Jm/WZhyZXPtU2lzKY1dbkwhZ2pduCTcC SHdUZI7NxRBpUJjS4W3lIN0IhnSwLr4XhtRaMhaw/JojRgZ6/jEfoMA8Z9YH8OkC ADr2bDSD70gvOJoNi2N+kLjt71KyEdz5Yr+qVW84jGyXsjQ3Mm1oKQSn6cR8p2xi -------- END GRY SIGNATURE --------
See the Compiling page for instructions on compiling FDisasm from the source code.
You can redistribute FDisasm and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the included file COPYING.
FDisasm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.