Table of Contents

Manually preparing MAME for Geneve emulation

The Geneve 9640 hardware has code baked into an EPROM that handles the early boot process. MAME does not come with any images for the ROM, so you need to provide them yourself. At the absolute least, you’ll want one of these:

ASIDE: What is Genmod?

The Genmod is a modification to the Geneve hardware that allowed for 2 MB of RAM and zero-wait state memory, which in general allowed the computer to run faster than before.

Because the mod deals with such low-level components of the system, a separate ROM image is needed for MAME’s purposes. Hence, genmod.zip.

The Geneve was designed to work with other expansion cards that would’ve also been plugged into the Peripheral Expansion Box (PEB). If you want to emulate those, you’ll need their ROM files, too. Here’s the definitive ROM collection.

A particularly useful one is the HFDC, which represents Myarc’s disk controller card:

NOTE: don’t unzip these files. Just put them all in a dedicated directory. You’ll refer to this location with MAME’s -rompath option.

Seeing the available EPROM versions

The reason why the ROM images are in Zip files is because each one actually contains several files. You can instruct MAME to show you what’s inside.

$ mame geneve -rompath roms/ -listbios
BIOS options for system Geneve 9640 (geneve):
    0.98             Geneve Boot ROM 0.98 (1987)
    1.00             Geneve Boot ROM 1.00 (1990)
    2.00             Geneve Boot ROM 2.00 (2021)

and:

$ mame genmod -rompath roms/ -listbios
BIOS options for system Geneve 9640 Mod (genmod):
    1.00             Geneve Mod Boot ROM 1.00 (1990)
    2.00             Geneve Mod Boot ROM 2.00 (2021)

The community has developed their own modifications to the code well after Myarc’s time. That’s why there’s a version of the ROM from 1990 and also a new one from 2021.

The basics of Geneve booting

After the Geneve powers on, it wants to locate an operating system. Exactly what and how it looks for it depends on the version of the EPROM image (“BIOS version” per MAME’s parlance), and the medium of the boot volume.

For version 2.00, it needs to be able to locate a special file from GeneveOS called SYSTEM-SYS. However, just putting that file on a boot volume isn’t enough – we also need to provide code that will instruct the ROM how to load SYSTEM-SYS. In general, this extra code is referred to as LOAD-SYS, but keep in mind there is no such file called LOAD-SYS. Instead, when we say “LOAD-SYS,” we actually mean the mechanism by which SYSTEM-SYS could be loaded.

There are currently 4 supported LOAD-SYS methods:

Setup #1: Boot MDOS from a floppy

Based on what we learned in The basics of Geneve booting (above), the minimum bootable floppy for GeneveOS contains:

As of this writing, the latest version of GeneveOS is 7.45, from April 2024. A pre-made boot floppy containing only the above files is available at this AtariAge forum post.

Here’s a direct link to the .DSK file (boot745.dsk)

You can boot in this manner with a command like so:

$ mame genmod -bios 2.00 \
      -skip_gameinfo \
      -rompath ./roms \
      -peb:slot8 hfdc \
      -peb:slot8:hfdc:f1 35dd -flop1 disks/boot745.dsk

In plain English, the command above translates to: “Install a disk controller into Slot 8 of the PEB. It’s hooked up to a 3.5-inch floppy drive. Inside the drive is the boot disk for GeneveOS 7.45.”

This is a minimal setup. You can do almost nothing with it because there’s no interesting software, nor anywhere else configured to save new files. But it is a good sanity check.

ASIDE: What’s the difference between GeneveOS and MDOS?

Nothing. MDOS is the name that Myarc originally gave the operating system. After the community bought the rights to MDOS and its source code, it has been suggested that new developments be ought called something else, in order to make it clear that Myarc is not involved anymore (the “M” in “MDOS” stands for “Myarc”).

Source: https://ftp.whtech.com/Geneve.new/GeneveOS/GenOS_MDOS.txt

Setup #2: Boot from a hard disk image

Even though MAME comes with a tool to manipulate disk images (imgtool), the current state of the art when dealing with the TI-99/Geneve is with the TIImageTool, also known as “TIMT.”

TIMT a Java application. Be sure to install Java, confirm that the JAVA_HOME is defined in your environment, and make sure PATH includes the Java tools. For example, in NetBSD/amd64, I installed lang/openjdk17 from pkgsrc and set my environment thus:

$ export JAVA_HOME=/usr/pkg/java/openjdk17
$ export PATH=${JAVA_HOME}/bin:${PATH}

Run TIMT like this:

$ java -jar tiimagetool.jar

Now you can build for yourself a hard disk image with the GUI. Here’s how to make a minimum bootable hard disk image:

Step 1. Obtain MDOS 7.45.

You can read the release announcement from the 9640 News website. Here’s a direct link to MDOS745DIS.zip.

Step 2. Extract the appropriate files in the manner that TIMT expects.

TIMT has a feature called “Install GeneveOS” which will automatically populate a new hard disk image with SYSTEM-SYS and LOAD-SYS. However, 9640 News’ distribution of the OS arranges the files in a way that TIMT doesn’t understand. The solution is to unzip MDOS745DIS.zip, then create a new directory for TIMT to use. This new directory will contain the following files from the zip archive:

TIMT needs a flat folder containing SYSTEM-SYS and LOAD-MFM beside one another.

Step 3. Now we can finally use TIMT.

  1. In the menu bar, select: File > Preferences...

  2. In the “Paths” tab, fill out the “Path to GeneveOS files.” This is the directory with the 2 files that you just created. Hit “OK.”

  3. In the menu bar, select: File > New > Hard disk image...

  4. Fill out the options in the dialog box. The “Drive” field should be set togeneric MFM.

  5. In the menu bar, select: Utility > Install GeneveOS

  6. In the new dialog box, select the EPROM to 2.00

A couple of files should show up in the main window. You can save this disk image (File > Save As). Select “CHD image” when prompted. Now you have a bootable hard disk image. You can tell MAME to use it like so:

$ mame genmod -bios 2.00 \
    -skip_gameinfo \
    -rompath ./roms \
    -peb:slot8 hfdc \
    -peb:slot8:hfdc:h1 generic -hard1 disks/geneve.chd