Driver:MIPS: Difference between revisions

From MAMEDEV Wiki
No edit summary
 
(24 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 ==
{| class="wikitable" style="width: 75%; text-align: center;"
{| 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 !! style="text-align:left;" | Package !! style="text-align:left;" | Notes
! 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 || style="text-align: left;" | Deskside || style="text-align: left;" | aka Intrepid
| M/120-3 || R2400 || R2000 || 12.5MHz || PC-AT || SCSI || Deskside || aka Intrepid
|-
|-
| M/120-5 || R2400 || R2000 || 16MHz || PC-AT || SCSI || style="text-align: left;" | Deskside ||
| M/120-5 || R2400 || R2000 || 16MHz || PC-AT || SCSI || Deskside ||
|-
|-
| M/180 || R2400 || || || || || ||
| M/180 || R2400 || || || || || ||
|-
|-
| M/2000-6 || R3200 || R3000 || 20MHz || VMEx13 || SMD || style="text-align: left;" | Rack Cabinet ||
| M/2000-6 || R3200 || R3000 || 20MHz || VMEx13 || SMD || Rack Cabinet ||
|-
|-
| M/2000-8 || R3200 || R3000 || 25MHz || VMEx13 || SMD || style="text-align: left;" | Rack Cabinet ||
| 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 || style="text-align: left;" | Desktop || style="text-align: left;" | aka M/12, Jupiter
| RC2030 || I2000 || R2000 || 16MHz || || SCSI || Desktop || aka M/12, Jupiter
|-
|-
| RS2030 || I2000 || R2000 || 16MHz || || SCSI || style="text-align: left;" | Desktop || style="text-align: left;" | aka M/12, Jupiter
| RS2030 || I2000 || R2000 || 16MHz || || SCSI || Desktop || aka M/12, Jupiter
|-
|-
| RC3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI || style="text-align: left;" | Desktop || style="text-align: left;" | aka M/20, Pizazz
| RC3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI || Desktop || aka M/20, Pizazz
|-
|-
| RS3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI || style="text-align: left;" | Desktop || style="text-align: left;" | aka M/20, Pizazz, Magnum 3000
| RS3230 || R3030 || R3000 || 25MHz || PC-ATx1 || SCSI || Desktop || aka M/20, Pizazz, Magnum 3000
|-
|-
| RC3240 || || R3000 || 25MHz || PC-ATx4 || SCSI || style="text-align: left;" | Deskside || style="text-align: left;" | M/120 with CPU-board upgrade
| RC3240 || || R3000 || 25MHz || PC-ATx4 || SCSI || Deskside || M/120 with CPU-board upgrade
|-
|-
| RC3330 || || R3000 || 33MHz || PC-AT || SCSI || style="text-align: left;" | Desktop ||
| RC3330 || || R3000 || 33MHz || PC-AT || SCSI || Desktop ||
|-
|-
| RS3330 || || R3000 || 33MHz || PC-AT || SCSI || style="text-align: left;" | Desktop ||
| RS3330 || || R3000 || 33MHz || PC-AT || SCSI || Desktop ||
|-
|-
| RC3260 || || R3000 || 25MHz || VMEx7 || SCSI || style="text-align: left;" | Pedestal ||
| RC3260 || || R3000 || 25MHz || VMEx7 || SCSI || Pedestal ||
|-
|-
| RC3360 || RB3133 || R3000 || 33MHz || VME || SCSI || style="text-align: left;" | Pedestal ||
| RC3360 || RB3133 || R3000 || 33MHz || VME || SCSI || Pedestal ||
|-
|-
| RC3370 || RB3133 || || || || || ||
| RC3370 || RB3133 || || || || || ||
|-
|-
| RC6260 || R6300 || R6000 || 66MHz || VME || SCSI || style="text-align: left;" | Pedestal ||
| RC6260 || R6300 || R6000 || 66MHz || VME || SCSI || Pedestal ||
|-
|-
| RC6280 || R6300 || R6000 || 66MHz || VMEx6 || SMD || style="text-align: left;" | Data Center ||
| RC6280 || R6300 || R6000 || 66MHz || VMEx6 || SMD || Data Center ||
|-
|-
| RC6380-100 || || R6000x1 || 66MHz || VME || SMD || style="text-align: left;" | Data Center ||
| RC6380-100 || || R6000x1 || 66MHz || VME || SMD || Data Center ||
|-
|-
| RC6380-200 || || R6000x2 || 66MHz || VME || SMD || style="text-align: left;" | Data Center ||
| RC6380-200 || || R6000x2 || 66MHz || VME || SMD || Data Center ||
|-
|-
| RC6380-400 || || R6000x4 || 66MHz || VME || SMD || style="text-align: left;" | Data Center ||
| RC6380-400 || || R6000x4 || 66MHz || VME || SMD || Data Center ||
|}
|}


== Preparation ==
== Preparation ==
=== Prerequisites ===
=== Prerequisites ===
TODO: mame version, riscos files, tap adapter
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 ===
TODO: set up the bfs and rsh networking tools and environment.
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>chdman addmeta</code> to apply a manufacturer string used to identify the drive make/model information that will be returned by the SCSI INQUIRY command.
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>
Line 92: Line 115:
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>.
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 the path name matching your BFS or TFTP data path.
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
Line 123: Line 146:


=== Miniroot Installation ===
=== Miniroot Installation ===
As with the <code>format</code> utility, there are two versions of the standalone shell (sash). <code>sash.std</code> is used for all but the RC2030 and RS2030 systems which have their own dedicated version, <code>sash.2030</code>. Launch <code>sash</code> as follows.
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>
<pre>
boot -f bfs()tree/stand/sash.2030
boot -f bfs()tree/stand/sash.2030
Line 133: Line 156:
</pre>
</pre>
This process should take around 10 minutes to complete.
This process should take around 10 minutes to complete.
=== RISC/os Installation ===
=== 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.
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.
Line 145: Line 169:
</pre>
</pre>


Most of the prompts from <code>inst</code> are fairly self-explanatory, however there are some which may require further guidance:
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 "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.
* The "mh" package is damaged and cannot be installed successfully from the currently available installation media.
* It is recommended to skip the disk space check, as it can be quite time-consuming and is unnecessary if using a sufficiently-sized disk.
* Skipping the disk space check is recommended, as it can be quite time-consuming and is unnecessary if using a sufficiently-sized disk.
* It is recommended to skip the network configuration steps, as they may cause <code>inst</code> to abort if unable to copy rsh configuration files from the host.
* 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>.
A minimal installation (root, rc2030, usr) should take about 10 minutes, after which the system should be shut down with <code>telinit</code>.
Line 155: Line 179:
telinit 0
telinit 0
</pre>
</pre>
=== Booting RISC/os ===
=== Booting RISC/os ===
Once installation is complete, the MIPS monitor may be configured to boot RISC/os normally:
Once installation is complete, the MIPS monitor may be configured to boot RISC/os normally:
<pre>
<pre>
setenv bootfile dksd(,,8)sash
setenv bootfile dksd(0,0,8)sash
</pre>
</pre>


Line 172: Line 197:


== References ==
== References ==
The following are various documents pertaining to MIPS computer systems.
The following are some useful references pertaining to MIPS computer systems.
{| class="wikitable" style="width: 85%;"
{| class="wikitable" style="width: 75%; text-align: left;"
! Reference !! Title !! Date !! Links
! style="text-align: left;" | Topic !! style="text-align: left;" | Links
|+
| Reference || Title || MmmYY || [http://bitsavers.org/pdf/]
|+
|+
| 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

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

MIPS Computer Systems range[1]
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.

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]