Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info.

NeXTcube running 68030 and 68040 boards

From Higher Intellect Wiki
Jump to navigation Jump to search
DISCLAIMER: THE FOLLOWING PROCEDURE IS NOT SUPPORTED BY NEXT, INC. AND WILL DEFINITELY VOID THE WARRANTY ON YOUR NEXT COMPUTER. FOLLOW IT AT YOUR OWN RISK. I DISCLAIM ALL RESPONSIBILITIES FOR DAMAGES CAUSED BY NEGLIGENCE IN FOLLOWING THE PROCEDURE. THERE IS NO GUARANTEE THAT THE PROCEDURE WILL WORK ON ALL VERSIONS(?) OF THE NEXT CUBE HARDWARE. ALL I KNOW IS THAT IT WORKED ON THE NEXT CUBE I WAS WORKING ON!!!! SO BEWARE.
Here we go! I'll first provide a description of the hardware I was using and comment on what I accomplished and how I got the information on how to do it!

The hardware included a NeXT cube with 660 MB drive, OD, etc., a 68040 upgrade board, and a 68030 motherboard. I successfully installed both the 68040 and 68030 boards on a SINGLE NeXT cube and linked them together through their ethernet ports. The 68040 was configured as a boot server and the 68030 was used as its client (booting off the network for lack of an additional hard drive).

The procedure reconfigures slot #2 on the cube's back-plane as slot #0. This provides two slots configured as #0, required for booting the two motherboards. Once I determined what the slot pin-outs were (thanks to my good friend John Chmielewski), it was a matter of time before the two boards happily co-existed.

The procedure:

First, follow the procedure on the NeXT User's Reference manual for removing the system board (Appendix C: Opening the Cube, page 291 of the 2.0 manual).
Using the NeXT supplied screwdriver, remove the two screws that attach the power-supply housing to the cube (the screws are located on the lower part of the housing) and gently pull the housing out. Set it aside in a safe place (away from kids and nosey friends!)
Remove the two plastic grooved plates (used to slide the system boards in) at each side of the inside bottom of the cube. (For each plate, lift the side closest to the rear opening and gently pull them out). Set them aside.
Using the NeXT tool, remove three screws holding the back-plane to the cube and then take the back-plane out of the cube. Let the cube rest for a while.
Inspect the back-plane. You will see five bus slots (four vertical and one horizontal). The horizontal slot connects the back-plane to the power supply housing. We're only interested in the four vertical slots. From the factory these slots are configured as 6, 2, 0, and 4 (starting from the left and going right with the horizontal slot at the bottom).

The system board connects to slot #0 (which you've probably noticed). Each slot contains three columns of 32 pins. Following is an ASCII representation of one of the slots:

                        x y z    C B A
                        o-o o 32 . . .
                        o-o o 31 . . .
                        o-o o 30 . . .
                        o-o o 29 . . .
                              28 . . .
                                   . 
                                   . 
                                   . 
                               3 . . .
                               2 . . .
                               1 . . .

...where x, y, and z are labeled GND, SID, and VCC, respectively. The GND, SID, and VCC "holes" are used to configure the slot number using simple binary encoding, where GND is logical zero, VCC is logical one, and SID (for Slot-ID I guess) determines the current bit state (one or zero).

Notice the four rows of GND, SID, VCC triads; each row is equivalent to one bit position in the slot number, the bottom row bit position 0, the top row bit position 3. This gives a total of four bit positions, or 16 possible slot numbers. To encode a slot number, you need to connect an SID row to its corresponding GND or VCC row. For example, the diagram below shows the configuration of the slots in my cube's back-plane (you'll have to look very closely to see the actual connections):

                        SLOT 6          SLOT 2          SLOT 0          SLOT 4
                BIT 3:  o-o o           o-o o           o-o o           o-o o
                BIT 2:  o o-o           o-o o           o-o o           o o-o
                BIT 1:  o o-o         * o o-o *         o-o o           o-o o
                BIT 0:  o-o o           o-o o           o-o o           o-o o

To reconfigure slot 2 as slot 0, cut the trace between SID and VCC for bit position 1 (see * o o-o * above) and connect SID to GND on the same row. I used the SIMM removal tool supplied by NeXT in the 040 upgrade (talk about multi-purpose) to cut the trace! Very gently, scrape the solder off between the two holes. Take a paperclip, shape it to fit between the holes in SID and GND, and trim it down to an even 1/4 inch (perfect fit)!
That's all there is to it. If for some reason you ever want to revert to slot 2, just remove the paperclip from GND-SID and reconnect it to SID-VCC.

Now put the cube back together. First, re-install the back-plane using its three connecting screws, then snap on the plastic plates, and finally insert the power-supply housing and secure with its two screws.
At this point the cube is ready to take on the two system boards (it is up to you to determine where/how you want to use the two boards; I'll explain how I used mine) ...

I installed the 68040 in the original slot 0 and the 68030 in the reconfigured slot 0 (previously slot 2). The 68040 was used as the main processor board. I connected the 660 MB drive, the OD, and the monitor to it.
NOTE: Before beginning the procedure, I went into the NeXT Monitor on the 68030 and disabled the Sound out, SCSI tests and verbose test mode and enabled serial port A as a console terminal. I also made "en" the default boot device. I setup the 68040 as a boot server and taught it about the 68030 (which took some time in getting it setup properly).

I connected the 68040 to the 68030 using a thin-ethernet cable and I booted. First thing I noticed was that the 030 timed-out a couple of times waiting for the 040 to tell it to boot. But after the 040 was up, the 030 booted nicely.
That's all folks. Hope all this made some sense and people find it useful.

Comments:
To power off the cube, I have to first shutdown the 030 (I run "halt -p" as root from a telnet connection and wait for the 030 to go down), and I then power-down the 040. If you shut down the 040 before the 030, you'll have to pull the power plug to turn the machine off. The cube will not power off if either of the two boards is providing a load to the power-supply.
Remember, I've only performed this procedure on one system. I do not know what will happen on your system. So make sure you plan ahead what your going to do and that you understand the procedure.
I don't know what problems may arise when you add a board that uses the NeXTbus, such as the NeXTdimension, or how it will behave. If someone is courageous enough to perform the procedure and installs another board, please post your results to the net.
Update:

To clear up some misunderstandings with the settings in the "p" command of the NeXT monitor (these settings are only required for the system board that doesn't have the NeXT display monitor connected):

Sound out test must be "no"; the boot process will not proceed if the monitor isn't connected to the board and this is set to "yes" (the sound out tests will fail, aborting the boot procedure).
SCSI tests should be "no" if you don't have SCSI devices attached to the board (SCSI tests will fail otherwise, aborting the boot procedure).
Verbose test mode must be "no" for booting from the network. If set to "yes", the boot process will timeout waiting for a BOOTP and you'll be left in the monitor with no means of restarting the board (except pulling the power plug)!
This is probably true also for booting from an OD that hasn't been inserted (assuming the OD was attached to the board).

Allow serial port A as alternate console if you want to view the boot process (for problems and peace-of-mind).
Other settings were not modified from their factory defaults or had no effect on the procedure.
There is also a way in using 2 boards plus NeXTDimension board in one Cube.

I've run my "screw with the backplane trick" cube with :

        |  | 32MB-ND | | 64MB-040 | 40MB-030 |

without any problems. Using the od got the system warm, but never had a problem. The cool part was having the printer on the 030. One day I tried to dump an 040 into the 030 position, but I couldn't get it to boot. I played for a couple minutes, but put the 030 back in and went on with life...