Driver:MIPS: Difference between revisions
Pmackinlay (talk | contribs) |
No edit summary |
||
(40 intermediate revisions by one other user not shown) | |||
Line 4: | Line 4: | ||
== Introduction == | == Introduction == | ||
<gallery> | |||
mips_rs2030.jpg|MIPS RS2030|alt=A MIPS RS2030 system | |||
mips_rc3230.png|MIPS RC3230|alt=A MIPS RC3230 system | |||
mips_m2000.png|MIPS M/2000|alt=A MIPS M/2000 system | |||
</gallery> | |||
== Status == | == Status == | ||
At this time, the RC2030 and RS2030 systems work well; the main remaining defects in the emulation are some issues with keyboard initialization and the failure of the power-on diagnostics, neither of which affect normal system operation. The RC3230 and RS3230 systems are emulated and close to working state. Other variations have not yet been emulated due to a lack of firmware dumps. | |||
== Hardware == | == Hardware == | ||
{| | {| style="width: 75%;" | ||
|+ style="caption-side:bottom; text-align: left;"|MIPS Computer Systems range[http://www.bitsavers.org/pdf/mips/brochures/MIPS_Product_Overview_1990.pdf] | |+ style="caption-side:bottom; text-align: left;"|MIPS Computer Systems range[http://www.bitsavers.org/pdf/mips/brochures/MIPS_Product_Overview_1990.pdf] | ||
! Model !! Board !! CPU !! Clock !! Slots !! Disk !! | ! Model !! Board !! CPU !! Clock !! Slots !! Disk !! Package !! Notes | ||
|- | |- | ||
| M/500 || R2300 || R2000 || 5MHz || VME || ESDI || || | | M/500 || R2300 || R2000 || 5MHz || VME || ESDI || || | ||
Line 16: | Line 24: | ||
| M/1000 || R2800 || R2000 || 10MHz || VME || ESDI || || | | M/1000 || R2800 || R2000 || 10MHz || VME || ESDI || || | ||
|- | |- | ||
| M/120-3 || R2400 || R2000 || 12.5MHz || PC-AT || SCSI | | | M/120-3 || R2400 || R2000 || 12.5MHz || PC-AT || SCSI || Deskside || aka Intrepid | ||
|- | |- | ||
| M/120-5 || R2400 || R2000 || 16MHz || PC-AT || SCSI | | | M/120-5 || R2400 || R2000 || 16MHz || PC-AT || SCSI || Deskside || | ||
|- | |- | ||
| M/180 || R2400 || || || || || || | | M/180 || R2400 || || || || || || | ||
|- | |- | ||
| M/2000-6 || R3200 || R3000 || 20MHz || VMEx13 || SMD | | | M/2000-6 || R3200 || R3000 || 20MHz || VMEx13 || SMD || Rack Cabinet || | ||
|- | |- | ||
| M/2000-8 || R3200 || R3000 || 25MHz || VMEx13 || SMD | | | M/2000-8 || R3200 || R3000 || 25MHz || VMEx13 || SMD || Rack Cabinet || | ||
|- | |- | ||
| M/2000-? || RB3125 || R3000 || 33MHz || || || || | | M/2000-? || RB3125 || R3000 || 33MHz || || || || | ||
|- | |- | ||
| RC2030 || I2000 || R2000 || 16MHz || || SCSI | | | RC2030 || I2000 || R2000 || 16MHz || || SCSI || Desktop || aka M/12, Jupiter | ||
|- | |- | ||
| RS2030 || I2000 || R2000 || 16MHz || || SCSI | | | RS2030 || I2000 || R2000 || 16MHz || || SCSI || Desktop || aka M/12, Jupiter | ||
|- | |- | ||
| RC3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI | | | RC3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI || Desktop || aka M/20, Pizazz | ||
|- | |- | ||
| RS3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI | | | RS3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI || Desktop || aka M/20, Pizazz, Magnum 3000 | ||
|- | |- | ||
| RC3240 || || R3000 || 25MHz || PC-ATx4 || SCSI | | | RC3240 || || R3000 || 25MHz || PC-ATx4 || SCSI || Deskside || M/120 with CPU-board upgrade | ||
|- | |- | ||
| RC3330 || || R3000 || 33MHz || PC-AT || SCSI | | | RC3330 || || R3000 || 33MHz || PC-AT || SCSI || Desktop || | ||
|- | |- | ||
| RS3330 || || R3000 || 33MHz || PC-AT || SCSI | | | RS3330 || || R3000 || 33MHz || PC-AT || SCSI || Desktop || | ||
|- | |- | ||
| RC3260 || || R3000 || 25MHz || VMEx7 || SCSI | | | RC3260 || || R3000 || 25MHz || VMEx7 || SCSI || Pedestal || | ||
|- | |- | ||
| RC3360 || RB3133 || R3000 || 33MHz || VME || SCSI | | | RC3360 || RB3133 || R3000 || 33MHz || VME || SCSI || Pedestal || | ||
|- | |- | ||
| RC3370 || RB3133 || || || || || || | | RC3370 || RB3133 || || || || || || | ||
|- | |- | ||
| RC6260 || R6300 || R6000 || 66MHz || VME || SCSI | | | RC6260 || R6300 || R6000 || 66MHz || VME || SCSI || Pedestal || | ||
|- | |- | ||
| RC6280 || R6300 || R6000 || 66MHz || VMEx6 || SMD | | | RC6280 || R6300 || R6000 || 66MHz || VMEx6 || SMD || Data Center || | ||
|- | |- | ||
| RC6380-100 || || R6000x1 || 66MHz || VME || SMD | | | RC6380-100 || || R6000x1 || 66MHz || VME || SMD || Data Center || | ||
|- | |- | ||
| RC6380-200 || || R6000x2 || 66MHz || VME || SMD | | | RC6380-200 || || R6000x2 || 66MHz || VME || SMD || Data Center || | ||
|- | |- | ||
| RC6380-400 || || R6000x4 || 66MHz || VME || SMD | | | RC6380-400 || || R6000x4 || 66MHz || VME || SMD || Data Center || | ||
|} | |} | ||
== Preparation == | == Preparation == | ||
=== Prerequisites === | === Prerequisites === | ||
To complete the installation of RISC/os described here, you will require the following: | |||
* MAME version 0.211 or newer | |||
* ROM images for the RS2030 or other supported system | |||
* RISC/os 4.52 network installation media | |||
* Host operating system TAP networking support | |||
These instructions should apply to any of the supported MIPS systems, however examples shown assume: | |||
* Windows host operating system | |||
* TAP adapter configured with address 192.168.137.1 (192.168.137.2 used by the MAME guest) | |||
* MAME rs2030 driver | |||
=== Network === | === Network === | ||
MIPS computers use a combination of BFS, BOOTP, TFTP and Berkely r-command (rsh/rcp, etc.) network protocols to perform network booting and installation. While BOOTP, TFTP and the r-commands are still able to be found and deployed on modern host platforms, BFS is a MIPS-specific protocol which provides similar functionality to BOOTP, and is the only option available for older MIPS systems such as the RS2030. | |||
In addition, these systems are programmed with an assumption that IP network broadcast addresses should be constructed with zeroes in the host portion rather than ones (e.g. 192.168.137.0 versus 192.168.137.255). This fact makes receiving broadcast packets produced by BFS/BOOTP on these systems quite challenging, and two workarounds are required to resolve this issue. The MAME driver includes one workaround internally, which patches the firmware for the systems to use a standard broadcast address. A second workaround must be implemented externally to MAME by patching the <code>sash</code> program binary to apply the same fix. | |||
A [https://github.com/pmackinlay/mipsboot utility] implementing the BFS protocol, and sufficient portions of BOOTP, TFTP and the r-commands in Python is available to support the installation of RISC/os as described here. The utility has been used successfully on Windows, and should also work on Linux or other operating systems with some minor tweaking. | |||
=== Storage === | === Storage === | ||
Use <code>chdman createhd</code> to prepare a new CHD for the operating system installation, and then <code> | Use the <code>chdman</code> <code>createhd</code> command to prepare a new CHD for the operating system installation, and then the <code>addmeta</code> command to apply a manufacturer string used to identify the drive make/model information that will be returned by the SCSI INQUIRY command. | ||
<pre> | <pre> | ||
chdman createhd -o | chdman createhd -o riscos.chd -c none -chs 1731,15,80 | ||
chdman addmeta -i | chdman addmeta -i riscos.chd -t IDNT -vt "SEAGATE ST11200N 1.00" | ||
</pre> | </pre> | ||
Line 77: | Line 100: | ||
TODO: mame configuration | TODO: mame configuration | ||
<pre> | <pre> | ||
mame64 rs2030 -hard | mame64 rs2030 -hard riscos.chd | ||
</pre> | </pre> | ||
== Installing RISC/os == | == Installing RISC/os == | ||
=== Environment === | === Environment === | ||
After powering on the system, you should be presented with | After powering on the system, you should be presented with the MIPS Monitor prompt. The <code>help</code> command shows the syntax recognized, and additional information may be found in the manual[http://www.bitsavers.org/pdf/mips/PRM-01-DOC_PROM_Monitor_Ref_Jun92.pdf]. | ||
To complete a network installation, it's | To complete a network installation, it's necessary to set the system TCP/IP address to one compatible with the external networking environment, using the <code>setenv</code> command. The current environment settings are retained in non-volatile memory, and may be displayed using <code>printenv</code>. | ||
<pre> | <pre> | ||
setenv netaddr 192.168.137.2 | setenv netaddr 192.168.137.2 | ||
</pre> | </pre> | ||
=== Format === | === Format === | ||
The <code>format</code> utility allows disks to be partitioned | The <code>format</code> utility allows disks to be formatted, partitioned and labelled. There are two versions of this utility, with <code>format.std</code> being used for all but the RC2030 and RS2030 systems, which have their own dedicated version <code>format.2030</code>. | ||
Launch the applicable <code>format</code> utility using the <code>boot</code> command, being sure to provide | Launch the applicable <code>format</code> utility using the <code>boot</code> command, being sure to provide a path name matching the BFS or TFTP data path. | ||
<pre> | <pre> | ||
boot -f bfs()tree/stand/format.2030 | boot -f bfs()tree/stand/format.2030 | ||
</pre> | </pre> | ||
Once <code>format</code> is launched, | Once <code>format</code> is launched, accept the defaults for all prompts except the following, adjusting the disk geometry to match that provided to <code>chdman</code>. | ||
{| class="wikitable" style="width: 50%;" | {| class="wikitable" style="width: 50%;" | ||
Line 103: | Line 127: | ||
| name of device || dksd | | name of device || dksd | ||
|- | |- | ||
| | | device parameters || 13 | ||
|- | |- | ||
| | | number of cylinders || 1731 | ||
|- | |- | ||
| | | number heads in vol 0 || 15 | ||
|- | |- | ||
| | | number sectors per track || 80 | ||
|- | |- | ||
| | | number bytes per sector || 512 | ||
|- | |- | ||
| media defect command || q | | media defect command || q | ||
|- | |- | ||
| write new volume header || y | | write new volume header || y | ||
|- | |- | ||
|} | |} | ||
The utility will exit to the monitor once the volume header has been written. | |||
=== Miniroot Installation === | === Miniroot Installation === | ||
The standalone shell (sash) is very similar to the monitor, but is loaded from network or disk, has access to more devices and provides a few more commands. As with the <code>format</code> utility, there are two versions of the standalone shell. <code>sash.std</code> is used for all but the RC2030 and RS2030 systems which have their own dedicated implementation, <code>sash.2030</code>. Launch <code>sash</code> as follows. | |||
<pre> | |||
boot -f bfs()tree/stand/sash.2030 | |||
</pre> | |||
From the <code>sash</code> prompt, use the <code>cp</code> command to copy the miniroot filesystem from TFTP to the boot partition of the hard disk. | |||
<pre> | <pre> | ||
cp bfs()root.fs dksd(0,0,1) | cp bfs()root.fs dksd(0,0,1) | ||
</pre> | </pre> | ||
This process should take | This process should take around 10 minutes to complete. | ||
=== RISC/os Installation === | |||
After the miniroot has been copied to disk, RISC/os may be booted using it as a root file system with a kernel loaded from TFTP. | |||
<pre> | <pre> | ||
boot -f bfs()unix.i2000_std root=sdc0d0s1 | boot -f bfs()unix.i2000_std root=sdc0d0s1 | ||
</pre> | </pre> | ||
From the miniroot shell prompt, configure the environment to specify a network installation, and start the RISC/os installation utility. | From the miniroot shell prompt, configure the environment to specify a network installation and the name of the installation server, and start the RISC/os installation utility <code>inst</code>. | ||
<pre> | <pre> | ||
From=en | From=en | ||
Server=host | |||
inst | inst | ||
</pre> | </pre> | ||
Most of the prompts from <code>inst</code> are fairly obvious, however there are a few which require further explanation: | |||
* The "remote package root" and "remote packaging information tree" responses must correspond to the "tree" and "umips4.52" directories within the RISC/os network installation structure respectively. | |||
* The "mh" package is damaged and cannot be installed successfully from the currently available installation media. | |||
* Skipping the disk space check is recommended, as it can be quite time-consuming and is unnecessary if using a sufficiently-sized disk. | |||
* Skipping the network configuration steps is recommended, as they may cause <code>inst</code> to abort if unable to copy r-command configuration files from the host. | |||
A minimal installation (root, rc2030, usr) should take about 10 minutes, after which the system should be shut down with <code>telinit</code>. | |||
<pre> | |||
telinit 0 | |||
</pre> | |||
=== Booting RISC/os === | |||
Once installation is complete, the MIPS monitor may be configured to boot RISC/os normally: | |||
<pre> | |||
setenv bootfile dksd(0,0,8)sash | |||
</pre> | |||
After this, the <code>auto</code> command may be used to boot RISC/os. | |||
At first boot, some questions about networking should be completed allowing the network to be configured, after which a login prompt will be presented and RISC/os is ready for use. | |||
<gallery> | |||
mips_monitor.png|MIPS Monitor|alt=A screenshot of the MIPS Monitor | |||
mips_sash.png|MIPS Standalone Shell|alt=A screenshot of the MIPS Standalone Shell (sash) | |||
mips_miniroot.png|RISC/os Miniroot|alt=A screenshot of RISC/os booted from the miniroot | |||
mips_riscos.png|RISC/os|alt=A screenshot of RISC/os booted normally | |||
</gallery> | |||
== References == | == References == | ||
The following are | The following are some useful references pertaining to MIPS computer systems. | ||
{| class="wikitable" style="width: | {| class="wikitable" style="width: 75%; text-align: left;" | ||
! | ! style="text-align: left;" | Topic !! style="text-align: left;" | Links | ||
|+ | |+ | ||
| Archived post describing RISC/os installation || [https://web.archive.org/web/20140517195919/http://no-l.org/pages/riscos.html] | |||
|- | |||
| Blog describing setup and use of a real RS2030 || [http://www.geekdot.com/the-mips-rs2030/] [http://www.geekdot.com/mips-rs2030-resurrection/] [http://www.geekdot.com/mips-2030-home-improvements/] | |||
|- | |||
| MIPS Monitor reference || [http://www.bitsavers.org/pdf/mips/PRM-01-DOC_PROM_Monitor_Ref_Jun92.pdf] | |||
|- | |||
| RISC/os documentation || [http://www.bitsavers.org/pdf/mips/RISCos/] | |||
|- | |||
| Historical information about UMIPS/RISC/os || [http://www.umips.net/] | |||
|} | |} | ||
[[Category:Year_1989]] |
Latest revision as of 22:43, 19 February 2023
MIPS
This article and the corresponding MAME driver focus on computers sold by MIPS Computer Systems which use MIPS R2000/R3000 processors and run RISC/os (also known as UMIPS), a port of UNIX System V release 3 with BSD extensions.
Introduction
-
MIPS RS2030
-
MIPS RC3230
-
MIPS M/2000
Status
At this time, the RC2030 and RS2030 systems work well; the main remaining defects in the emulation are some issues with keyboard initialization and the failure of the power-on diagnostics, neither of which affect normal system operation. The RC3230 and RS3230 systems are emulated and close to working state. Other variations have not yet been emulated due to a lack of firmware dumps.
Hardware
Model | Board | CPU | Clock | Slots | Disk | Package | Notes |
---|---|---|---|---|---|---|---|
M/500 | R2300 | R2000 | 5MHz | VME | ESDI | ||
M/800 | R2600 | R2000 | 8MHz | VME | ESDI | ||
M/1000 | R2800 | R2000 | 10MHz | VME | ESDI | ||
M/120-3 | R2400 | R2000 | 12.5MHz | PC-AT | SCSI | Deskside | aka Intrepid |
M/120-5 | R2400 | R2000 | 16MHz | PC-AT | SCSI | Deskside | |
M/180 | R2400 | ||||||
M/2000-6 | R3200 | R3000 | 20MHz | VMEx13 | SMD | Rack Cabinet | |
M/2000-8 | R3200 | R3000 | 25MHz | VMEx13 | SMD | Rack Cabinet | |
M/2000-? | RB3125 | R3000 | 33MHz | ||||
RC2030 | I2000 | R2000 | 16MHz | SCSI | Desktop | aka M/12, Jupiter | |
RS2030 | I2000 | R2000 | 16MHz | SCSI | Desktop | aka M/12, Jupiter | |
RC3230 | R3030 | R3000 | 25MHz | PC-ATx1 | SCSI | Desktop | aka M/20, Pizazz |
RS3230 | R3030 | R3000 | 25MHz | PC-ATx1 | SCSI | Desktop | aka M/20, Pizazz, Magnum 3000 |
RC3240 | R3000 | 25MHz | PC-ATx4 | SCSI | Deskside | M/120 with CPU-board upgrade | |
RC3330 | R3000 | 33MHz | PC-AT | SCSI | Desktop | ||
RS3330 | R3000 | 33MHz | PC-AT | SCSI | Desktop | ||
RC3260 | R3000 | 25MHz | VMEx7 | SCSI | Pedestal | ||
RC3360 | RB3133 | R3000 | 33MHz | VME | SCSI | Pedestal | |
RC3370 | RB3133 | ||||||
RC6260 | R6300 | R6000 | 66MHz | VME | SCSI | Pedestal | |
RC6280 | R6300 | R6000 | 66MHz | VMEx6 | SMD | Data Center | |
RC6380-100 | R6000x1 | 66MHz | VME | SMD | Data Center | ||
RC6380-200 | R6000x2 | 66MHz | VME | SMD | Data Center | ||
RC6380-400 | R6000x4 | 66MHz | VME | SMD | Data Center |
Preparation
Prerequisites
To complete the installation of RISC/os described here, you will require the following:
- MAME version 0.211 or newer
- ROM images for the RS2030 or other supported system
- RISC/os 4.52 network installation media
- Host operating system TAP networking support
These instructions should apply to any of the supported MIPS systems, however examples shown assume:
- Windows host operating system
- TAP adapter configured with address 192.168.137.1 (192.168.137.2 used by the MAME guest)
- MAME rs2030 driver
Network
MIPS computers use a combination of BFS, BOOTP, TFTP and Berkely r-command (rsh/rcp, etc.) network protocols to perform network booting and installation. While BOOTP, TFTP and the r-commands are still able to be found and deployed on modern host platforms, BFS is a MIPS-specific protocol which provides similar functionality to BOOTP, and is the only option available for older MIPS systems such as the RS2030.
In addition, these systems are programmed with an assumption that IP network broadcast addresses should be constructed with zeroes in the host portion rather than ones (e.g. 192.168.137.0 versus 192.168.137.255). This fact makes receiving broadcast packets produced by BFS/BOOTP on these systems quite challenging, and two workarounds are required to resolve this issue. The MAME driver includes one workaround internally, which patches the firmware for the systems to use a standard broadcast address. A second workaround must be implemented externally to MAME by patching the sash
program binary to apply the same fix.
A utility implementing the BFS protocol, and sufficient portions of BOOTP, TFTP and the r-commands in Python is available to support the installation of RISC/os as described here. The utility has been used successfully on Windows, and should also work on Linux or other operating systems with some minor tweaking.
Storage
Use the chdman
createhd
command to prepare a new CHD for the operating system installation, and then the addmeta
command to apply a manufacturer string used to identify the drive make/model information that will be returned by the SCSI INQUIRY command.
chdman createhd -o riscos.chd -c none -chs 1731,15,80 chdman addmeta -i riscos.chd -t IDNT -vt "SEAGATE ST11200N 1.00"
The SCSI INQUIRY response data (defined by the IDNT meta-data tag in the CHD) should consist of an 8 character manufacturer name, 16 character model number, and 4 character version number, all left justified and padded with spaces.
Configuration
TODO: mame configuration
mame64 rs2030 -hard riscos.chd
Installing RISC/os
Environment
After powering on the system, you should be presented with the MIPS Monitor prompt. The help
command shows the syntax recognized, and additional information may be found in the manual[2].
To complete a network installation, it's necessary to set the system TCP/IP address to one compatible with the external networking environment, using the setenv
command. The current environment settings are retained in non-volatile memory, and may be displayed using printenv
.
setenv netaddr 192.168.137.2
Format
The format
utility allows disks to be formatted, partitioned and labelled. There are two versions of this utility, with format.std
being used for all but the RC2030 and RS2030 systems, which have their own dedicated version format.2030
.
Launch the applicable format
utility using the boot
command, being sure to provide a path name matching the BFS or TFTP data path.
boot -f bfs()tree/stand/format.2030
Once format
is launched, accept the defaults for all prompts except the following, adjusting the disk geometry to match that provided to chdman
.
Prompt | Response |
---|---|
name of device | dksd |
device parameters | 13 |
number of cylinders | 1731 |
number heads in vol 0 | 15 |
number sectors per track | 80 |
number bytes per sector | 512 |
media defect command | q |
write new volume header | y |
The utility will exit to the monitor once the volume header has been written.
Miniroot Installation
The standalone shell (sash) is very similar to the monitor, but is loaded from network or disk, has access to more devices and provides a few more commands. As with the format
utility, there are two versions of the standalone shell. sash.std
is used for all but the RC2030 and RS2030 systems which have their own dedicated implementation, sash.2030
. Launch sash
as follows.
boot -f bfs()tree/stand/sash.2030
From the sash
prompt, use the cp
command to copy the miniroot filesystem from TFTP to the boot partition of the hard disk.
cp bfs()root.fs dksd(0,0,1)
This process should take around 10 minutes to complete.
RISC/os Installation
After the miniroot has been copied to disk, RISC/os may be booted using it as a root file system with a kernel loaded from TFTP.
boot -f bfs()unix.i2000_std root=sdc0d0s1
From the miniroot shell prompt, configure the environment to specify a network installation and the name of the installation server, and start the RISC/os installation utility inst
.
From=en Server=host inst
Most of the prompts from inst
are fairly obvious, however there are a few which require further explanation:
- The "remote package root" and "remote packaging information tree" responses must correspond to the "tree" and "umips4.52" directories within the RISC/os network installation structure respectively.
- The "mh" package is damaged and cannot be installed successfully from the currently available installation media.
- Skipping the disk space check is recommended, as it can be quite time-consuming and is unnecessary if using a sufficiently-sized disk.
- Skipping the network configuration steps is recommended, as they may cause
inst
to abort if unable to copy r-command configuration files from the host.
A minimal installation (root, rc2030, usr) should take about 10 minutes, after which the system should be shut down with telinit
.
telinit 0
Booting RISC/os
Once installation is complete, the MIPS monitor may be configured to boot RISC/os normally:
setenv bootfile dksd(0,0,8)sash
After this, the auto
command may be used to boot RISC/os.
At first boot, some questions about networking should be completed allowing the network to be configured, after which a login prompt will be presented and RISC/os is ready for use.
-
MIPS Monitor
-
MIPS Standalone Shell
-
RISC/os Miniroot
-
RISC/os
References
The following are some useful references pertaining to MIPS computer systems.
Topic | Links |
---|---|
Archived post describing RISC/os installation | [3] |
Blog describing setup and use of a real RS2030 | [4] [5] [6] |
MIPS Monitor reference | [7] |
RISC/os documentation | [8] |
Historical information about UMIPS/RISC/os | [9] |