SGI IRIX Emulation

MAME can emulate either SGI Indy or Indigo 2 running the IRIX Operating System. https://github.com/mamedev/mame/releases

  • 0.207 Initial Support (slow)

  • 0.213 has a graphics bug regression

  • 0.232 Networking works

  • 0.240 Non-Dynamic Recompiler

  • 0.241 Dynamic Recompiler was added (faster)

  • Current MAME version at the time of last update is 0.250

Emulation supports installing IRIX, some demo and other applications have been tested.

If something doesn't work please submit an issue so it can be fixed.

Recommendation: The Latest Release

What Hardware to emulate?

First decide between Indy and Indigo 2

The biggest difference between these is the startup logo, in emulation neither has a performance or feature benefit over the other.

Recommendation: Indigo 2 OR Indy

Then decide on the graphics option: serial terminal, xl8 or xl24

The serial terminal is the default, if you don't specify one of the other options on the MAME command line (covered later) then you will only be able to connect to the emulated serial terminal.

Between 8bit palette graphics and 24 bit frame buffer graphics I'm not sure if one emulates faster or not. So at this time I'll recommend xl24 which "intuitively" seems like it would be faster.

Recommendation: xl24

BIOS ROM Download Location: https://archive.org/download/mame-merged/mame-merged/

Do a Ctrl+F and search for indigo2_4415.zip OR indy_4610.zip

Also get both of the following

kb_ms_natural.zip AND ps2_keybc.zip

Download these files and place in the \MAME\ROMS folder

There are other SGI BIOS files available but they are minimally usable in MAME at this time and NOT covered on this page

What version of IRIX to install?

Overview

The Indigo 2 was released before the Indy and could originally run IRIX 4.05. At this time IRIX 4.x is not known to complete the installation.

IRIX 5.x is supported by the Indigo 2 and Indy but most versions until 5.3 are considered buggy and should be avoided. IRIX 5.3 may perform a little better, than the 6.x versions but some software may not work on 5.3.

IRIX 6.0 was the first 64-bit release of IRIX, The last supported version for either Indigo 2 or Indy is 6.5.22. IRIX 6.5.x installation may use up to 5 CD's so keep an eye on your emulated hard drive size.

Notes:

  • IRIX 6.3 is for the O2 only

  • IRIX 6.4 is Origin 200/0 and Onyx 2 and Octane only.

  • IRIX 6.5.23 and up are not supported on the Indigo 2 or Indy workstations.

Recommendation: IRIX 6.5.22

Alternate: IRIX 5.3

IRIX Installation CD Images

Other images can be found with a little searching but the more common choices are here.

IRIX 5.3 for Indy https://archive.org/details/sgi_IRIX_5.3_for_Indy_R4400_175MHz

IRIX 5.3 for Indigo 2 https://archive.org/details/irix53xfs

IRIX 6.5 for Indigo 2 and Indy https://archive.org/search.php?query=irix%206.5

  • IRIX 6.5 Installation Tools

  • IRIX 6.5 Foundation 1

  • IRIX 6.5 Foundation 2

  • IRIX 6.5 Applications (Optional)

  • IRIX 6.5 Base Documentation (Optional)

  • IRIX 6.5 Development Foundation (Optional needed for GCC installations as well)

  • IRIX 6.5 Development Libraries (Optional needed for GCC installations as well)

Alternate download location: https://jrra.zone/sgi/

Use the chdman utility included with MAME to create a hard disk to install to.

9.1 GB for IRIX 5.3

chdman createhd -ss 512 -s 11773255680 -o Indigo2_IRIX53.chd

https://www.seagate.com/support/disc/manuals/scsi/29030c.pdf

36.7 GB for IRIX 6.5

chdman createhd -ss 512 -s 36771581952 -o Indigo2_IRIX65.chd

CDROM

cdrom drive is hardcoded to 0,6 (X,Y)

Using the ISO files acquired above you are now ready to emulate an SGI workstation running IRIX. Use a shell or batch file to start your emulated system because the command line is a bit long otherwise.

The base command line is (needs additional parameters, see below):

mame64 <DRIVER> -window -ui_mouse -harddisk1 .\roms\Indigo2_IRIX53.chd -cdrom .\roms\irix5.3_indy_r4400.iso

This command will run MAME in a window which is usually more convenient, enables the mouse in the MAME UI, provides the path the harddrive and CD drives. Verify the path to the chd and iso file match their actual location, also make sure the keyboard and mouse BIOS files that were downloaded are still zipped and placed in the \MAME\roms folder.

The workstation DRIVER is indigo2_4415 OR indy_4610 (without the .zip extension)

Enable a Serial Console Terminal

-hpc3:ioc2:rs232b terminal

To Select a Graphics card (Default is Serial Terminal Only)

-gio_gfx xl8 OR -gio_gfx xl24

The final command line will look something like this:

mame64 indigo2_4415 -window -ui_mouse -gio_gfx xl24 -harddisk1 .\roms\Indy2g.chd -cdrom .\roms\irix5.3_indy_r4400.iso

Some additional parameters to experiment with:

Troubleshooting

-log -verbose

MIPS Assembly language Debugging

-debug

The following may (or may not) improve performance.

-autoframeskip


Refence: https://docs.mamedev.org/_files/MAME.pdf

The following references were used for the installation steps below:

https://software.majix.org/irix/install-start.shtml

https://software.majix.org/irix/install-bootcd.shtml

https://software.majix.org/irix/install-fx.shtml

https://software.majix.org/irix/install-network.shtml

If you get an error message telling you that no swap-space is available, you first need to initalize your harddrive via fx.

Installing IRIX (in MAME)

BEFORE First Boot (Indigo 2)

The following steps will set the MAC address of the network adapter.

Create the folder \MAME\nvram\indigo2_4415

Download this 1KB file: eeprom

Place it in the folder \MAME\nvram\indigo2_4415

If you have already run MAME once the file and folder are probably already created so just overwrite the existing file.

Standard Boot Process (Indigo 2 & Indy)

When the system first boots you will probably see an error that there is no operating system installed.

"Press any key to continue:" <Enter> or click the continue button

It will now load a graphical interface with a few buttons,

Click the "Enter Command Monitor" button

It will help to type slowly (for example fully depress and release each keyboard key) maybe 5 wpm. Not quite hunt and peck speed but more like you are on a really bad keyboard.

There is a `help` command to show the list of available commands

First Boot (Indy)

The following steps will set the MAC address of the network adapter. When you start the emulated Indy, you'll want to go into the command monitor and first thing, do:

>printenv

The value eaddr defaults to ff:ff:ff:ff:ff:ff which could cause the installer to crash or hang, this can be fixed with the following command.

>setenv -f eaddr 08:00:69:12:34:56

The range 08:00:69 was assigned to SGI, the last 3 sections only matter for software licenses.

Standard Installation steps (Indigo 2 & Indy)

The steps here are really standard, I'm including them here for completeness and since it's a single implementation of the hardware I can be more specific in the steps.

The 'hinv' command will describe the hardware that is being emulated.

Indigo 2

>> hinv

System: IP22

Processor: 150 Mhz R4400, with FPU

Primary I-cache size: 16 Kbytes

Primary D-cache size: 16 Kbytes

Memory size: 128 Mbytes

Graphics: XL

SCSI Disk: scsi(0)disk(1)

SCSI CDROM: scsi(0)cdrom(6)

Audio: Iris Audio Processor: version A2 revision 4.1.0

Indy

>> hinv

System: IP22

Processor: 100 MHz R4600, with FPU

Primary I-cache size: 16 Kbytes

Primary D-cache size: 16 Kbytes

Memory size: 128 Mbytes

Graphics: Indy 24-bit

SCSI Disk: scsi(0)disk(1)

SCSI CDROM: scsi(0)cdrom(6)

Audio: Iris Audio Processor: version A2 revision 4.1.0

Installation steps (Indigo 2 & Indy)

The CDROM is at 0,6 so type the following (Error? Troubleshooting below in Yellow)

>> ls dksc(0,6,8)

The results should include a file 'sashARCS' so enter the following

>> boot -f dksc(0,6,8)sashARCS

Now we are in a 'sash' prompt

sash: ls dksc(0,6,7)

Here we can see an object 'stand' which is a directory, it's not obvious but it is.

sash: ls dksc(0,6,7)stand

This shows the contents of the 'stand' directory, including fx.ARCS

sash: boot -f dksc(0,6,7)stand/fx.ARCS

The fx disk partitioning tool is actually really easy, review the defaults and hit <Enter>

It will then display a summary and available options, type 'exit' <Enter> then <Enter> again when prompted to save the changes.



When prompted for "device-name", ctrlr#, drive# just hit <Enter> the value in parens is the default.

boot -f dksc(0,6,7)stand/fx.ARCS --x

boot -f dksc(0,6,7)stand/fx.ARCS --x When prompted with multiple menu options (exit, debug, label, auto, badblock, exercise, repartition, format) choose 'exit' then <Enter>

When prompted for 'label info has changed for disk dksc(0,1,). write out changes? (yes)' type 'yes' then <Enter>



You will be returned to the main menu.

Choose "Install Software"

Select "Local CD-ROM" and "Local SCSI CD-ROM drive 6", then click the "Install" button and click the "Continue" button.

The initial copy progress takes just a couple of minutes.

The command prompt returns and confirms you want to overwrite the disk contents.

Repeat twice (System and User partition)

yes <Enter>

y <Enter>

To install all of the default software:

go <Enter>

After a while the installer will return to a prompt type 'quit' <Enter>

It will then run a final process and prompt for restart type 'y' <Enter>

Troubleshooting

MAME crashes when running the command ls dksc(0,6,8)

  1. Check the path the ISO file is correct

  2. Use the ISO extension instead of IMG, etc. MAME may interpret files by extension and think that an IMG is a hard drive image.

Tips

Slowing down the emulation speed actually improves responsiveness because the keyboard is checked for input more often.

  • [Scroll Lock] Enable partial keyboard emulation

  • [~] Open MAME Menu

  • Cursor Up/Down to find maincpu

  • Cursor Left/Right to set speed

  • [~] Close MAME Menu

  • [Scroll Lock] Enable full keyboard emulation

Change CD's

  • [Scroll Lock] Enable partial keyboard emulation

  • [tab] Open MAME Menu

  • Cursor Up/Down to 'File Manager'

  • Press[Enter]

  • Cursor Up/Down to 'cdrom (cdrm)'

  • Cursor [ESC], [Up], [Down] and [Enter] to find and select the desired ISO

  • [tab] Close MAME Menu

  • [Scroll Lock] Enable full keyboard emulation

Performance

Most systems will not be able to emulate an R4400 Indy @ 133 MHz at full speed using the default interpreter.

There is now a Dynamic ReCompiler which was implemented starting in MAME version 0.241

Example running on an AMD 3900X

  • No DRC emulation speed as high as 38% of a real SGI Indy

  • With DRC emulation speed as high as 90% of a real SGI Indy

Emulating these systems does work, but don't expect high performance.

Thanks: For many good questions and answers in the Silicon Graphics User Group and IRIX Network Discord

Including: Lady Serena Kitty