Subject: Apple Desktop Bus and '040s
To: None <port-mac68k@NetBSD.ORG>
From: Steven Campbell <Steven_Campbell@magic.ca>
List: port-mac68k
Date: 09/20/1996 15:02:35
I have seen a few other people mention the same thing, but here is what
I think the problem is with current ADBtest kernels for MacBSD.

My Centris 650, and Nathan Shaw, among other has mentioned a similar
prolem.  After ADBReInit is called on Quadra/Centris series, the kernel
hangs.  

Here is what I think the problem is with these machines.  I'm willing
to bet that it's a ROM bug that has had ROVr ( ROM override resources )
written to counteract bugs.  

Here is an excerpt of Apple Developer Technote HW # 505, Copyright
Apple Computer Inc.

System 7.1 and ADBReINIT extension Date Written: 11/18/92 Last
reviewed: 6/14/93
Q -- Now that I’ve upgraded my Macintosh Quadra 950 to System 7.1, do I
still need the ADBReInit bug fix that’s posted in AppleLink or was this
ADB problem fixed in System 7.1? ___
A -- The ADBReInit bug wasn’t fixed in 7.1, so you probably should
continue to use the ADBReINIT extension.
The ADBReInit extension prevents memory from being moved at interrupt
time, which could cause the PowerBook 140 and 170 models, as well as
the Macintosh Quadra 700, 900, 950 models, to hang or crash if
ADBReInit is called. Informal testing indicates that it’s more likely
to happen while AppleShare is active (file sharing is turned on).
ADBReInit normally is never called on a Macintosh Quadra because
connecting ADB devices while the CPU power is on is discouraged. There
is a specific instant that the PowerBook uses the call: When coming out
of Sleep mode, ADBReInit is called to determine whether or not external
ADB devices are attached. Also, the ADBReInit section of the Macintosh
Technical Note “Space Aliens Ate My Mouse (ADB—The Untold Story)”
suggests instances where this call might be used, as does the MacDTS
sample code TbltDrvr, referenced in the ADBReInit section of Inside
Macintosh’s ADB chapter. So, though most developers won’t be affected
by the ADBReInit bug, it could affect some developers.


It seems that ADBReInit problems affected only developers, probably
more specifically hardware developers of ADB devices, probably because
when ADBReInit is called at boot time, the machine would hang.  

Now, I'm not a programmer, but I think we have 2 choices.  One, is to
find out how Apple fixed the ADBReInit problem in their operating
system, and hack it to fit in ours, or:  Totally bypass ROM calls and
Reinitialize the ADB ourselves, writing a new routine that talks to
hardware directly to accomplish the same thing as ADBReInit. 

Anybody else have any ideas about why my and other '040 machines would
crash on booting the kernel?

Steven Campbell

Contrary to popular belief, Unix is user friendly.  
It just happens to be selective about who it makes friends with.

Everything you know is wrong!