MIST manual

Till Harbaum
<till@harbaum.org>

What is the MIST?

The MIST is a hardware board built around a field programmable gate array (FPGA). FPGAs are chips that can be configured to implement complex user specific logic functions. Todays FPGAs are powerful enough to implement complete computers from the golden era of "home computing" 20 years ago.

The MIST was designed to act like an Atari ST or Commordore Amiga. The MIST is based upon the concepts of the Minimig, a similar project to implement a Commodore Amiga. The original Minimig included a real 68000 CPU and only implemented the chipset in an FPGA. The MIST extends this concept by also placing the 68000 CPU inside the FPGA. Furthermore it uses modern interfaces like VGA, USB and SD card instead of the original TV outputs, custom keyboards, mice and 3,5 inch floppy disks of the original Amiga and ST.

The MIST board preserves this "instant on" feeling of the original devices with boot times of 5 seconds or even less.

Specifications

The MIST board was designed as a next-gen Minimig. It provides:

Overview

Booting

The MIST boots from the internal flash memory of the IO controller and from SD card. You thus have to place a matching file named core.rbf containing the FPGA configuration on the SD card and have that inserted when powering the MIST board on. In case of e.g. a simple arcade machine core this may already be all you have to do and games like pacman are immediately working. More complex cores like the Minimig/Amiga core may require additional files which will be used by the core when booting.

Booting Arcade (Pacman)

The Pacman core needs no additional files to boot. It implements the original pacman arcade board and is based in the pacedev project. The game is controlled with a joystick in port 1 and the two push on-board buttons.

Booting Minimig (Amiga)

The Minimig core needs at least a kickstart ROM named kick.rom to be placed on the SD card. Additional floppy disk images (*.adf) and a hard disk image (hardfile.hdf) are also required to use the simulated Amiga.

A custom boot logo named logo.raw may also be placed on the card and will be used instead of the built-in Minimig logo. The logo is a 232x80 black'n white image. See the firmware source for an example logo.gif. This logo can be converted into the raw format required by the MIST Minimig core using ImageMagick using the following command:

convert logo.png -negate -depth 1 GRAY:logo.raw 

Booting MIST (Atari ST)

The MIST core needs a TOS image named tos.img on the sd card. Tested and supported are TOS 1.00, TOS 1.02, TOS 1.04, TOS 2.06 and EmuTOS 0.8.7. Also a atari font file named system.fnt should be present for early boot messages on the VGA output.

Floppy disk images in raw (.st) format may also be placed on the sd card and have to be named disk_a.st and disk_b.st for floppy drive A and B.

Displays

Typically all devices emulated by the MIST used TV screens in PAL or NTSC timing. These video timings are incompatible with todays VGA screens.

Arcade core

The Pacman arcade core converts the video into a compatible standard VGA video mode.

Minimig core

The original Amiga used a PAL or NTSC TV video mode and wasn't able to directly drive a VGA screen. The Minimig uses a scan doubler to create a video timing from the PAL/NTSC mode that's close to a valid VGA video mode, but in the case of PAL has a vertical refresh rate of 50Hz which is below the minimum required vertical VGA refresh rate of 56Hz. Many displays cope with this signal. But many displays don't. The symptoms range from no image at all to an error message ("frequency out of range") to images being partial off-screen or having wrong colors or being otherwise distorted.

One option to deal with this is to select an NTSC video mode on the OSD (see below). The resulting VGA mode is compatible to the 640x480 VGA mode and works fine with all VGA displays. But many games require a PAL video mode to run properly.

The MIST optionally comes with Minimig cores that are slightly "overclocked". The CPU inside runs at 8MHz instead of the 7MHz of a real Amiga and everything is 10% faster. Games will run slightly faster and may be more difficult to master and sounds and music will have a slightly higher pitch. But the advantage is that the PAL video mode then uses a vertical refresh rate of 56Hz and displays fine on all VGA displays tested so far.

MIST core

The MIST core converts the Atari ST video modes into standard VGA compatible video modes. These video modes are not 100% compatible with the original ATari ST modes and some Atari ST software (especially games and demos) may not be displayed properly.

Input devices

Keyboards and mice

Unlike other Minimig based systems the MIST uses USB instead of PS/2 to connect keyboards and mice. The main advantage is that you can use the majority of recent keyboards and mice and even combo devices, touch pads and similar are likely to work.

Using USB hubs

The MIST board comes with a built-in USB hub and features four USB host ports (the fifth USB port next to the push buttons is a device port and is used to connect a PC during firmware update). You can connect further USB hubs to these ports. Also keyboards with built-in hubs are supported.

Using multiple USB mice and keyboards

Although you can connect several mice and keyboards at the same time they are treated as one device. Later versions may support several distinct mice to support multi mouse games.

Using the On-Screen-Display

The MIST Minimig core is controlled using an on screen display (OSD). The OSD can be invoked with the F12 key. Use the OSD to insert disk images into the emulated floppy drives or to change the total amount of memory visible to the embedded Amiga. Also the hard drive emulation can be enabled here.

Using mouse and joystick emulation

The NumLock key toggles a mouse or joystick emulation. The mouse and joystick emulation uses the arrows keys on the keyboard and the two ctrl keys to emulate mouse and joystick input. Pressing the NumLock key cycles through four states indicated by the NumLock and ScrollLock LEDs on the keyboard:

Joysticks

The MIST board supports up to two standard DB9 Atari/Commodore style joysticks. The joysticks are provided with 5 Volts (up to 200mA total) in order to allow for auto fire and similar devices to work. No mice are supported on these ports. A built-in switch logic of the Minimig switches forth and back between the USB mouse and a joystick in the right joystick port to allow the convenient usage of two joysticks and a mouse without having to unplug anything.

Updating

Updating the FPGA

The FPGA is usually booted by the Io controller from SD card. The easiest way to update the FPGA code is thus to replace the FPGA configuration file core.rbf in the root directory of the SD card.

During development it's often more convenient to use a USB Blaster cable. After downloading the core, the Io controller needs to be restarted by pressing the reset button (the leftmost button directly right of the USB port). To prevent the booting Io controller from reconfiguring the FPGA again from SD card the DIP switch 1 has to be set to on. This causes the booting Io controller to bypass the FPGA configuration and to directly continue with the start up of the core (kickstart download etc).

Developing for and with the MIST

All development for the MIST can be done using freely available software tools only. No additional hardware or expensive software is required. Although it might be handy and ease development.

Currently all development takes place under Linux. A windows based tool chain has not been investigated yet.

Developing for the FPGA

The FPGA configuration source code comes with a quartus project file minimig/fpga/altera/minimig_mist.qpf. This is known to work with free versoin of the latest Quartus 12.1.

The FPGA configuration source code includes a auto generated minimal boot code amigaboot.v. This can be built by issuing a make command in the minimig/fw/amiga_boot/ sub directory before starting a sythesis in quartus.

Alternally the invoking make in the root directory of the HDL code will build the amigaboot.v and start the command line versoin of quartus. Quartus has to be in the PATH for this to work.

After a successful build rhe resulting core is created under minimig/fpga/altera/minimig_mist.rbf. It has to be renamed to core.rfb when being copied onto the SD card. Alternally the minimig/fpga/altera/minimig_mist.sof can be uploaded directly via JTAG. Afterwards the Io controller needs to be restarted e.g. by pressing the reset button while the DIP switch 1 is set to "on". This prevents the Io controller from initializing the FPGA using the core from SD card when booting.