[comp.sys.mac.programmer] _Launch 2.5 patch for Mac Plus

rsfinn@athena.mit.edu (Russell S. Finn) (03/15/90)

Using TMON and about half an hour when I should have been working on a
problem set, I was able to determine why _Launch 2.5 freezes the mouse
on a Macintosh Plus.

To fix this problem, use ResEdit on a copy of _Launch 2.5; open the
CODE 3 resource; at offset $15D2, replace $4879 0080 0000 with 
$4878 0A7C 4E71.  (Obviously, you could also do this with a file
editor.)  I have not tried this patch on any other version.

The bug is that MaxMem is being called with an argument of $00800000,
instead of the address of a longword (IM II-38); so when the glue
tries to store the "grow" value at that address, it accesses something
in the I/O space which (presumably) resets the SCC and freezes the
mouse.  (I didn't actually look it up in the Hardware Manual, but
that's my best guess.)  The patch substitutes the address of the
longword at ApplScratch+4, which ought to be fairly safe until the
author revises the program.  Apparently, the problem is harmless on
ADB-equipped machines, but you could apple the patch anyway to be safe.

(Note: It's not my intention to embarass Lunarmobiscuit by hanging his
dirty laundry out in public; my intentions were (a) to provide a
potentially instructive lesson to a technically oriented audience, and
(b) to let Luni know what the problem was, since I couldn't find his
E-mail address anywhere in the documention.)

--
Russell S. Finn
rsfinn@athena.mit.edu

freek@fwi.uva.nl (Freek Wiedijk) (03/15/90)

In article <1990Mar15.052046.20348@athena.mit.edu>
rsfinn@athena.mit.edu (Russell S. Finn) writes:
>
>Using TMON and about half an hour when I should have been working on a
>problem set, I was able to determine why _Launch 2.5 freezes the mouse
>on a Macintosh Plus.
>
>The bug is that MaxMem is being called with an argument of $00800000,
>instead of the address of a longword (IM II-38);

This should be a lesson to all: NEVER program in C!  :-) :-) :-)

--
Freek "the Pistol Major" Wiedijk                  Path: uunet!fwi.uva.nl!freek
#P:+/ = #+/P?*+/ = i<<*+/P?*+/ = +/i<<**P?*+/ = +/(i<<*P?)*+/ = +/+/(i<<*P?)**