[net.micro.mac] MacNosy: Mac ROM Disassembler

sunny@sun.uucp (Ms. Sunny Kirsten) (06/04/85)

For those of you interested in how the guts of your Mac work:
send $50 to Steve Jasik
	Free the ROM 64
	343 Trenton Way
	Menlo Park, CA 94025

I have no connection with either.  I haven't tried it.

				Sunny
-- 
{ucbvax,decvax,ihnp4}!sun!sunny (Ms. Sunny Kirsten)

gus@Shasta.ARPA (06/05/85)

> For those of you interested in how the guts of your Mac work:
> send $50 to Steve Jasik
> 	Free the ROM 64
> 	343 Trenton Way
> 	Menlo Park, CA 94025
> 
> I have no connection with either.  I haven't tried it.
> 
> 				Sunny

I happen to know Steve Jasik and MacNosy fairly well. I have been following
Nosy's development since early this year and have received several updates.

The only reason I would recomend this program is that it does something that
no other Mac application does - disassemble to source code.

MacNosy works by first trying to figure out where various procedures are in
the program being debugged (either ROM, an application, or Macsbug) by
doing a 'tree walk' over the code and following branches and procedure calls.

The program has various heuristics for figuring out things like case jumps,
but invitably, I always gets things wrong, and you have to go in and
change code to data segments and vice versa. You can also change data 
formats. (bytes, words, ascii, etc.)

Once this is done, you cand send output to a file, and further annotate the
code with a text editor.

Now for the bad stuff.

MacNosy shares the cellar with the UCSD P-system and the old OMNIS2 as the
most un-macish application available. The mouse is not used anywhere in the
program, except in the mini-editor (more on this later) and as a pointing
device when doing presentations.

Instead, you get the cryptic UCSD style menu bars with all sorts of
abbreviations. There are several modes which you must frequently get into
and out of. The two most frequent are the top level and review-data mode.
Review data steps you forwards through the various code/data blocks allowing
you to change format attributes, split a block into smaller blocks, etc.
Unfortunately, you can only step forwards. Once you make a mistake, you must
quit back to the top level and start from the beginnin, unless (as jasik
sugests) you write your position down on paper!!!!

The various functions of Nosy lend themselves perfectly to a multi-window
environment, where each function is a window, and one can easily move 
between windows WITHOUT LOSING STATE in the inactive windows. While Steve
admitts that he could use a better user interface, he also considers the Mac
interface to be "training wheels" for real programmers. I would not expect
Nosy to have a "good" user interface for quite some time (if ever.)

The next problem with Nosy, is Steve Jasik's general attitude toward the
Mac. He hasn't bothered to read all of INSIDE MAC in order to take full
advantage of it. For example, he wrote his own memory management routines
(for which he provides source code for on the Nosy master disk.) because
he wanted to allow Nosy to run on both the Lisa and the Mac, but also because
he didn't want to have to learn the Mac memory manager. This means that
Nosy immediately takes up the entire applications heap, on a 512K mac
It doesn't run on a 128K. It requires a modified system for a smaller system 
heap. Good bye desk accessories! Goodbye Switcher!

The one place where MacNosy looks a little mac-ish is in the mini-editor.
This is simply a regular text editor using textedit (i.e. 32K file limit.)
Guess what folks, all this is is Carry Klarke's FILE program, the cannonical
"example" mac application that comes with the software supplement. Steve
simply moved the code over to his program with onlyu minor modification.
Switcher could have done just as well!

Yet another problem is that the source code which Nosy produces is not
valid for any existing assembler. The pseudo-ops produced seem to work for
somewhere in between MDS and the CDC assembler which Steve used before 
writing Nosy. You have to go in with a text editor and manually (albeit
mechanically) modify the source to be able to assemble properly. Even worse
is Jasik's use of non-standard macros and predefined labels. Although both
are provided in the Nosy master disk, I would rather stick with single
opcodes (when the macros such as push and pop expand to only 1 m68k
instruction) and "standard" apple labels, even if Steve Jasik thinks that
they're ugly.

Perhaps the worst problem is the documentation. Steve Jasik is no technical
writer. The few pages of hastily written and very dense documentation is
poorly written and is no excuse for a user manual. Be ready to call Steve
on the phone for a lot of help for things you don't undestand.

One good note - MacNosy is NOT copy-protected. In fact, Jasik makes no
secret of the fact that he designed nosy to break copy-protection systems.
He even devotes a few paragraphs in the documentation about it. Don't,
however, expect Nosy to help you with some of the more sophisticated 
protection systems emerging, such as Lutus Jazz. Nosy assumes that the
object code is not encrypted on the disk. This assumtion is not always
valid.

If you absolutely need a disassembler more sophisticated than Macsbug, then
you might look into MacNosy, otherwise, stay very clear.

							Gus Fernandez

winkler@harvard.ARPA (Dan Winkler) (06/07/85)

The price of Nosy is now $60.