[LMH]SIB, Config ROMs, Fonts, Diagnostic Engine Code
Steve Krueger
stevelisp@grape-krueger.com
Sun Aug 17 15:44:01 2003
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
Alastair,<br>
<br>
If you are looking at the 68000 code to try to work out the NuPI function,
that seems a difficult task. The NuPI provides a very clean command block
interface that was well documented (in lroy-qdev and elsewhere). I find
that I do have the NuPI manual that we sent out with systems and it describes
the command block interface in pretty good detail.<br>
<br>
I'm not going to type the whole thing in -- I'm considering investing in
a scanner, so maybe I'll get it scanned in, eventually.<br>
<br>
For now, a few bits of interesting (possibly useful) info on NuPI (this could
be just a tease):<br>
<br>
Onboard RAM is 2Kx16. There is also an onboard FIFO RAM of 1Kx16.<br>
<br>
The 68K interrupts are:<br>
<br>
<table cellpadding="2" cellspacing="2" border="1" width="80%">
<tbody>
<tr>
<td valign="top">Level<br>
</td>
<td valign="top">Purpose<br>
</td>
</tr>
<tr>
<td valign="top">1<br>
</td>
<td valign="top">DMA complete interrupt. The DMA control logic generates
this interrupt to indicate the completion of a DMA transfer.<br>
</td>
</tr>
<tr>
<td valign="top">2<br>
</td>
<td valign="top">SCSI interrupt. The SCSI controller generates this
interrupt to indicate an SCSI event.<br>
</td>
</tr>
<tr>
<td valign="top">3<br>
</td>
<td valign="top">Timer interrupt. The interval timer generates this
interrupt.<br>
</td>
</tr>
<tr>
<td valign="top">4<br>
</td>
<td valign="top">NuBus interrupt 2. TheNuBus master logic generates
this interrupt to indicate that a NuBus error has occurred during a NuBus
master operation.<br>
</td>
</tr>
<tr>
<td valign="top">5<br>
</td>
<td valign="top">NuBus interrupt 1. The NuBus master slave logic generates
this interrupt to indicate that a write operation has occurred to the most
significant byte (bits 24 through 31) of a 32-bit word.<br>
</td>
</tr>
</tbody>
</table>
<br>
There is diagnostic access to the internal NuPI resources via NuBus. Access
to the diagnostic resources can interfere with proper NuPI operation.<br>
<br>
<table cellpadding="2" cellspacing="2" border="1" width="80%">
<tbody>
<tr>
<td valign="top">NuBus Address<br>
</td>
<td valign="top">What's There<br>
</td>
</tr>
<tr>
<td valign="top">FsE00000<br>
</td>
<td valign="top">Microprocessor RAM -- This is a 4-kilobyte block.<br>
</td>
</tr>
<tr>
<td valign="top">FsFFC000<br>
</td>
<td valign="top">Microprocessor ROM -- This is a 16-kilobyte block
of ROM that contains the MPU firmware, the NuPI configuration ROM data, the
NuPI and SCSI selftest firmware, and the NuPI device service routine (in
the Forth-like bytecodes - sk)<br>
</td>
</tr>
</tbody>
</table>
<br>
Note: the above is for NuPI devices (low order bytes of words FsFFFF84-8C
= "NPI"). There were also NuPI/E ("NPE") and possibly NuPI2 ("NP2") and
a Mass Storage Controller ("MSC"). I'm not sure these last two ever shipped
in Explorer systems.<br>
<br>
-Steve<br>
<br>
<br>
Nyef wrote:<br>
<blockquote type="cite"
cite="midPine.LNX.4.56.0308161620100.24672@mai.paradiesanalytics.com">
<pre wrap="">On Wed, 6 Aug 2003, Nyef wrote:
</pre>
<blockquote type="cite">
<pre wrap="">On Wed, 6 Aug 2003, Nyef wrote:
The ROMs are obviously mapped to address 0x000000 on the 68k, and there
appears to be RAM at 0x180000 for at least 4096 bytes (the initial stack
pointer in the interrupt vector table points to 0x181000).
Unfortunately, I don't have easy access to a 68k disassembler right now,
so I don't know too much more.
</pre>
</blockquote>
<pre wrap=""><!---->
Okay, I set up my Performa 400 again, kicked it into NetBSD, and used the
binutils there to get me a disassembly. Then I started looking through it.
This is harder than usual, partly because I don't have much in the way of
documentation besides the CPU manuals and lroy-qdev.lisp, and partly
because there are no text strings in the ROM at all. Anywhere.
Anyway, I did find a couple things, but it's really slow going. I put my
current disassembly file at
<a class="moz-txt-link-freetext" href="http://www.dridus.com/~nyef/lispm/random_stuff/combined_nupi.dis68k.edited">http://www.dridus.com/~nyef/lispm/random_stuff/combined_nupi.dis68k.edited</a>
And there is a copy of Al Kossow's ROM and disk dumps at
<a class="moz-txt-link-freetext" href="http://sc.am/~hametheif/lispm/">http://sc.am/~hametheif/lispm/</a> These (or other disk images) may come in
handy at some point in the near future.
---------------------------
All programming can be viewed as an exercise.
---------------------------
Alastair Bridgewater
e-mail: <a class="moz-txt-link-abbreviated" href="mailto:nyef@softhome.net">nyef@softhome.net</a>
<a class="moz-txt-link-freetext" href="http://lists.unlambda.com/mailman/listinfo/lispm-hackers">http://lists.unlambda.com/mailman/listinfo/lispm-hackers</a>
</pre>
</blockquote>
<br>
<br>
</body>
</html>