The Jaguar of 80s computers

Ah, the Commodore Amiga. Much (maybe too much) has been written about this range of computers that failed to beat IBM and Apple for dominance in the home market in the 80s and 90s. Bad management decisions abounded, the design wasn’t open to third parties, and there were a ton of makers vying for the #1 spot back then - still, we don’t see a lot of Atari ST or MSX revival online like we do for the Amiga. Its capabilities were way beyond the Mac and the PC in 1985, but sadly the more advanced (but still inferior in some aspects to VGA) AGA chipset came late and was only featured in two models: the 1200 and the 4000.

The 4000 was aimed at professionals and thus more expensive, but the 1200 was aimed at gaming and digital artistry in the home. Alas, it was too little too late, and by 1993, barely a year after its introduction, few games were coming out for it and Commodore was basically doomed.

I’ve always wanted one, but they were kinda expensive back then. You could get an Intel 486DX2/66 (around 50MIPS) PC with 8 MB of RAM (expandable), 527 MB hard drive, Sound Blaster 16 soundcard, double-speed CD-ROM and 14” SVGA monitor for around 2000€ (not accounting for inflation) in 1994. The Amiga 1200 featured a Motorola 60EC020 (around 5 MIPS) running at 14Mhz, 2MB of RAM (expansions sold separately), no hard drive and no CD-ROM for around 600€. Monitor sold separately, multisync capable monitors were around 400€. A 210 MB hard drive would cost you around 300€. An extra 4MB of RAM, 200€1. When you add it all up, it didn’t make sense. A fully specced out Amiga 4000 would cost more than the 486 PC above, without a monitor!

So by 1994 the writing was on the wall for the poor Amiga. But for a magical period (87-92) the Amiga was king of graphics and sound in the home computer scene. As I mentioned, I never owned one but as soon as PCs got fast enough to easily emulate them (late 1990s, I guess) I was an avid WinUAE user. But then I kinda gave up on Windows, and *NIX emulator software wasn’t as good. So I forgot about it for a while.

The MiST board

Fast-forward a number of years, and I found out about an FPGA device called the MiST.

The MiST board
The MiST board

For those of you that don’t know, an FPGA is a kind of programmable CPU. You can load up a “core” on the MiST which is a description of the logic circuits of the target computer, and the board simulates that collection of logic circuits. So if you load a ZXSpectrum core, you get a ZXSpectrum computer. There are cores for a number of computers now, including the Atari ST, Apple II, original Macintosh, MSX and of course the Commodore Amiga - full list of cores on its wiki.

Of course, this was too awesome for me to pass up on so I got one. Much joy was had reminiscing over old classics. Over time though, I spent less and less time playing games and more writing software and doing other things. Recently, maybe inspired by Marie Kondo 😄 I’ve gotten around to sell or give away some of my old “stuff” that no longer brings me joy. I thought about selling the MiST but a thought came to me - is it possible to get it online?

MiST internals

The board is quite compact and features VGA and audio outputs, 4 USB ports and a micro-USB port to power it. It also features 2 DB9 connectors for old-school Amiga or Atari joysticks, or Sega Megadrive (Genesis in the USA) original controllers. Cores are loaded via an SD card slot in the front, which also features a few LEDs and buttons.

The back of the MiST
The back of the MiST

At first I thought I could get a USB wifi dongle or Ethernet adapter, but none are supported in the Amiga core (there’s support for a USB Ethernet device in the Atari ST core, though) so I figured that was it, no online possible. But then I stumbled upon a forum thread that described connecting it via the serial port to an ESP8266 controller that features a wifi interface and have it online via SLIP, an ancient method of networking via serial port! This sounded very exciting.

The quest

If you just want to setup a BBS on an Amiga, feel free to skip over this bit

If you want to do this on your MiST, you’ll need:

  • An ESP8266 - I went with this one from Adafruit
  • A cable to flash the SLIP router firmware on the controller
  • Some female-to-female jumper cable

I got all items from Pimoroni UK for around 25 pounds with shipping.

Soldering the headers onto the ESP8266

The ESP8266 doesn’t come with headers on its PCB, so you have to solder them on. The kit from Pimoroni comes with all the headers you’ll need.

The ESP8266
The ESP8266

It’s easier to solder all six of the headers on the left side of the picture here, even though we only need four of them.

Flashing the firmware on the ESP8266

This is the easiest bit. I used this firmware which also needs the SDK to be compiled and in your $PATH if you want to change the defaults - if not, the pre-built firmware in the repo should be enough for you. Bear in mind, I couldn’t get the SDK to compile in my Manjaro Linux installation, so I spun up an Ubuntu 14.04 LTS VM to do it. If you go down that route, make sure to pass the USB cable as a device to the VM for it to be usable.

Follow the instructions in the SLIP router’s github page to connect to your wifi AP and you should be good to go. You want the Usage as STA instructions. There’s only one bit of extra configuration needed on it. Connect to its IP in your LAN via wifi or via serial using slattach as the docs mention, and telnet to port 7777 to access the configuration interface. You should be greeted with:

CMD>

Now type

set bitrate 38400
set speed 160
portmap add TCP 23 192.168.240.2 23
save
reset

This limits the bitrate on the serial port to 38400 b/s (you can experiment with higher values, but I’ve noticed it’s not as stable), sets the ESP8266’s CPU to 160Mhz instead of the default 80 and adds a port mapping to be forwarded to your Amiga via the serial interface. You can change the external port here to anything you’d like, but keep the internal one (the second port number) to 23. Once reset, you’re good to go and won’t need to tweak the ESP8266 further. Since we’ve changed the bitrate, if you intend to connect via slattach again, be sure to use the new bitrate. To confirm, when you reset it and issue a show command, it should look like this (your external IP might be different based on your wifi DHCP settings and I took this screenshot when the SLIP link was up, hence the 192.168.240.2 PeerIP address being shown):

ESP8266 settings
ESP8266 settings
Connecting the ESP8266 to the MiST

The serial port is not exposed on my case, and the header on the motherboard isn’t even populated so I had to ask someone at work to solder it for me, and the result was super professional - done by the same person who did the ESP8266 headers, major props to André! 🙌

Serial port header soldered in
Serial port header soldered in

The port’s pinout is very simple - RX, TX, 3.3V+ and GND. These four connections will have to go into your ESP8266’s headers. Here’s a picture of how my setup turned out:

Final setup
Final setup

Be sure to cover the bottom of the ESP8266 with electrical tape so it won’t short anything out!

All set to go, right? Unfortunately, no. You see, the MiST case is hard metal and appears to be made of the stuff of bomb shelters and blocks all RF inside it. I suppose this is done for FCC/EU emissions and interference compliance, but it also means the ESP8266 won’t work inside the case - I kept getting huge ping times and around 90% packet loss. So something else had to be done…

The totally awesome watercolor paper cover

Luckily, my girlfriend is an artist and loves paper projects. She also has this thick watercolor paper around. So we made a cover for it!

Awesome paper cover
Awesome paper cover

I applied electrical tape to the edges so dust wouldn’t creep in (I have two cats).

As a bonus, the case is translucent so at night the blue LED on the ESP8266 shines through!

LEDs at night
LEDs at night

If you’d like to make your own, here is an A4 PDF to print out.

Setting up the Amiga

The MiST emulates an Amiga 1200 with an extra 24MB of RAM and 2 hard drive files in HDF format. I used WinUAE to create two “hard drives”, one 500 MB and the other 700MB. The idea is to have a system drive with all the software, and a data drive with all the BBS’ files and extra games you’d like.

You can recreate almost all of this process on your computer with WinUAE, and only connect to the internet on the MiST at the end if you’d like.

Start by placing the Amiga core’s .rbf file in the root of your SD card, along with the Kickstart 3.1 ROM and Workbench v3.1 floppy files in .adf format. You can source these online easily enough, but there’s a product called Amiga Forever that will allow you to have them legally. The “value” edition is just 10 bucks. It even comes with preset Workbench setups that look pretty great:

AmigaForever Workbench 3.x default desktop
AmigaForever Workbench 3.x default desktop

Bring up the MiST setup menu by pressing F12. Insert the Workbench 3.1 install floppy file in df0 (first floppy) and set Floppy disk turbo to ON. In chipset settings, select 68020 as CPU, set Turbo to none, video to PAL, Chipset to AGA, CHIP RAM to 2.0MB, SLOW RAM to none and FAST RAM to 24MB. Finally, turn A600 IDE on in the hard drive settings, and select the System and Data hard drive HDF files as master and slave, respectively. It’d be good to save this as your default configuration for this core.

When the reboot concludes, you should see this desktop:

Workbench desktop
Workbench desktop

Ignore the 3TB and SSD drives in the screenshots, I did this in WinUAE so it mounted my PC’s drives as well. You should only see Ram Disk, Install 3.1 and two “NDOS” devices if you do it on the MiST. DH0 is the IDE master, and DH1 the slave.

Formatting the drives

Let’s start by formatting the hard drives. Click to select DH0 and from the Workbench menu at the top, select Icons ▶️ Format Disk.

Workbench menu option
Workbench menu option
Formatting the disks
Formatting the disks

NOTE: To get software onto the HDF files (which we’ll need to do later on), I used WinUAE, added the Data HDF file as another hard drive and copied over the software from my mounted PC drive directly. If you don’t format the drives with ‘Directory Cache’ here, you can also mount the files as “loopback” in Linux with the affs filesystem - formatting them with the cache option makes the mount read-only for some reason.

Repeat the process for the second hard disk (I called it ‘Data’). With both disks formatted, it’s time to install Workbench to the System drive, since the Workbench we see now is running from floppy.

Installing Workbench and BetterWB
Finding the installer
Finding the installer

Double-click to open the Install 3.1 drive icon, and the installer program will be inside the Install folder (or “drawer”, as Workbench calls them).

After the installer concludes, it’s time to remove any floppies from their drives and reboot (Ctrl-LAlt-RAlt on the MiST). We’ll be greeted with Workbench, but this time running from “disk” (the System HDF file). You probably noticed that after changing the floppies in the MiST interface (or WinUAE) you didn’t have to press any key for the installer to continue. That’s because the Amiga had a form of removable media detection, even back in 1985!

Workbench booted from disk
Workbench booted from disk

Plain Workbench is a bit meh, so over the years people have released toolkits to spruce it up. ClassicWB is the one everyone knows, but it’s a bit harder to install than BetterWB. Download version 4.0 and the 4.3 update, unzip and place all seven ADF files on your MiST SD card. Start by inserting the MISC31_#1.adf file in df0 and running the installer.

BetterWB Installer
BetterWB Installer

The installer is just a shell window running a script, and you’ll get prompts to change the floppy as the installer runs, just like before.

Once you’re done, eject floppies and reboot. Then run the installer on the 4.3 update floppy, and reboot after that. Can you tell the difference? There’s a boing ball on the System drive icon! 😄 Well not just that of course, under the hood a bunch of utilities were installed.

BetterWB desktop
BetterWB desktop
Installing Genesis

Now it’s time to install our TCP/IP stack, since regular Workbench 3.1 didn’t ship with one. We’ll use Genesis 1.0.4’s demo plus the “keyfile” to unlock it. But before that we’ll need to install MUI, a UI toolkit that was really popular in the Amiga world. Think of it as a kind of Qt or GTK.

NOTE: I’ll be distributing software here that, as I see it, is abandoned. If you’re the copyright holder for these files (Genesis, telnetd.device and Zeus BBS) contact me, and I’ll take the links down immediately!

Download MUI 3.8 from Aminet, the still-running Amiga software repository, from this link. While we’re at it, let’s get all of the software at once:

Place all downloads in the Data drive and boot up the MiST. In your System drive, there will be a System folder, and inside it a Shell icon. Double-click it to open a shell window.

There are a few AmigaDOS commands you should know. Data: changes the current folder to the Data drive and System: will take you back to the System drive. Changing folders is done with cd <folder_name> just like *NIX, but instead of cd .. to go to the parent folder, you type cd /. To close the shell, type endcli or use the top left icon on the window to close it. The filesystem we’re using (Fast File System) is not case-sensitive but is “case preserving”.

So, let’s switch over to the Data drive and if you type dir you should see something similar to:

Data file listing
Data file listing

As seen on the screenshot, let’s extract the MUI runtime by typing

lha e -x mui38usr.lha

You can delete the mui38usr.lha file now. Click to select it and:

Saving space on our virtual drives
Saving space on our virtual drives

Since Workbench won’t auto-update file windows, if you have the Data drive root folder open now, you won’t see the new MUI folder that was extracted. Just keep the window in focus and go to the Workbench top menu and click Window ▶️ Update.

Slightly annoying
Slightly annoying

Updating the window like this might jumble the icons around, so click Window ▶️ Clean Up for them to line up properly. Anyway, onto MUI.

Data window with MUI folder
Data window with MUI folder

Inside it, you’ll find the Install-MUI installer.

Once that is done, reboot so that the runtime is loaded. On to the Genesis installation! As before, extract the downloaded file:

Extracting Genesis
Extracting Genesis

The installer is pretty friendly.

Next up, copying the keyfile to unlock the demo. Copy the genesiskey.library file to the Libs drawer in the System drive, making sure you replace the existing one. Workbench defaults to only showing “Icons” instead of all files, so go to the System drive and click Window ▶️ Show ▶️ All Files in the Workbench top menu to see the Libs folder.

Very annoying
Very annoying
TCP/IP settings

Once that’s all done, it’s time to tweak TCP/IP settings for our setup. Go to the System drive, open the Genesis folder and start up GenesisPrefs.

Configuring Genesis
Configuring Genesis

There are a few settings to change, but they’re all pretty simple.

We don’t want the clock to sync because Genesis uses the old DAYTIME type of sync that is no longer supported. That’s why we downloaded FACTS, as it features more modern NTP syncing. If you do find a public DAYTIME time server, feel free to use it.

Installing FACTS

By now, you know the jig. Extract the file and run the installer.

Extracting FACTS
Extracting FACTS

FACTS by default is set to update a hardware RTC device, which the MiST lacks. So go into the settings and unselect it:

No more annoying messages
No more annoying messages

While you’re at it, feel free to tweak the time zone offset and save your settings. Alright, onto the BBS software!

Installing Zeus BBS

This must be familiar by now:

Extracting Zeus
Extracting Zeus

This will take a while as the package has a lot of files. Also, it will pause a few times because the compressed file contains these .DISPLAYME files that show a window with info:

Past adverts
Past adverts

Just admire the ads for BBSs long gone and press Enter to continue the extraction. Then we can start the installer, which will also take a while to complete.

This version of Zeus I found online seems to be a dump of an old BBS, so it’s missing a few things. To fix it, go into the Zeus folder and add two new folders (Workbench menu Window ▶️ New Drawer) named Users and Texts. Then, go into the RIP folder and add a new folder called Icons. Also, copy the Zeus.key file into the Zeus folder to unlock it. Final step: the telnet connection!

Installing telnetd.device

So we’re at the final piece of the puzzle. This is the one thing that stumped me for a long time. 😠 I thought some telnet daemon had to be running to forward the connections to a “serial” device, which is what most BBS softwares of the time know how to talk to. I tried telnetd and telser but could never get them to work. Eventually I got telnetd.device and it all just clicked after realizing what configuration Zeus needed for it. The way it works is quite ingenious - it fakes a serial device, like the other two programs, but it starts a process to monitor them as soon as the serial device is opened by a BBS package. That process is the one that forwards the port 23 connections to the serial device (and does some telnet protocol translation). To set it up, you need to copy the telnetd.device in the download above to your Devs folder in the System drive.

Copying the telnetd.device to Devs
Copying the telnetd.device to Devs

Then, copy the telnetd-device.conf file in the same download to the db folder inside the Genesis one in the System drive.

Copying the telnetd-device.conf to db
Copying the telnetd-device.conf to db

The config file is super simple. To edit it, double-click it and fill in the command with the following:

Launching the text editor
Launching the text editor

The file has a single line:

Editing the config
Editing the config

The format is

<PORT> <NUMBER_OF_UNITS> <ACCESS_CONTROL>

The port is obvious enough, the number of units is how many lines you want your BBS to have via telnet (I chose two). Access control set to the default 255.255.255.255 will allow all connections. The docs for telnetd.device have more info, including the possibility to set IP bans. Speaking of docs, did you know Amiga documentation usually came in a format called AmigaGuide that featured hypertext? It was pretty ahead of its time. There are viewers for Windows and *NIX, too. But I digress. 😅

Let’s reboot and connect to the internet!

Getting online

Apologies for the quality, filmed this with my phone. I usually connect, adjust the system time with FACTS, disconnect and finally reconnect so the Genesis window won’t tell me I’ve been online for 218,601 hours! 😄

Ok, now that we’re online there’s one more tweak we need to make. Genesis is secure by default, so we need to allow outside connections to port 23. Let’s find the inet.access file in Genesis’ db folder and double-click it:

Editing the access file
Editing the access file

Once that’s done, just add the following to the top:

Allowing telnet from everywhere
Allowing telnet from everywhere

And we’re set with telnetd.device! Next up, the final final bit - editing Zeus’ settings. Start up Zeus by double-clicking the Zeus icon inside the Zeus folder.

Starting Zeus up
Starting Zeus up

I contacted the author to try and get an updated (non-cracked) copy, but got no reply. It amazes me that it was still being developed in 2009, which is very late into the Amiga’s life! Anyway, Zeus’s preferences:

In the serial line configuration screen, if you press Test Setup no error should come up. You’re free to add as many as 255 lines, but you need to repeat this setup for each one of them and also set the <NUMBER_OF_UNITS> field properly in your telnetd-device.conf file.

The final final final thing to do is to start the Zeus connectors on serial lines 1 and 2.

This is what initializes the serial line and starts the telnetd.device supervisor process. You can automate this process by adding Zeus:Utils/Connector LINE 1 and Zeus:Utils/Connector LINE 2 to Zeus’ startup process list in the top menu.

And at last, at long long last, we can login remotely to our Amiga BBS via telnet. I’m using Syncterm (still under development) and so should you, it’s pretty great and it supports the ANSI characters that the BBS uses to make menus look awesome. In this example, 192.168.1.94 is the IP address the ESP8266 got from my wifi AP. It’s best to give it a static DHCP lease so you can port-forward outside connections to it predictably.

As you can see, this BBS dump I got used to be the Wedlock BBS somewhere in Sweden. Now it’s up to you to login, add the first user, promote it to sysop in Zeus’ User Editor, and then go on adding files and tweaking the menus and so on to make the BBS your own!

BBS Messages menu
BBS Messages menu

Conclusion

Oh wow, this is the longest blog post I’ve written ever - 93 images and three videos! 😅

It feels great to “tame the beast” that is AmigaDOS and Workbench, and Zeus is pretty impressive. Time to dig into those docs and tweak the hell out of it. I’m really happy the MiST allows me to experience this! If you’re intrigued by Workbench and just want to see how it looked like, there’s a cool online simulator called TAWS that even features different versions.

If you’re thinking about getting a MiST, they’re sadly no longer being made available at Lotharek in the EU and other vendors elsewhere, but be sure to get the 1.3 or 1.3+ version as the 1.4 version now being sold no longer features the serial port in the same location. There are also successor projects, biggest one being the MiSTer which happens to be more powerful as well!

And if you’re thinking of hosting your own BBS, you don’t need an Amiga! There’s Synchronet for Windows and *NIX, ENiGMA½ for anything nodeJS runs on, and MysticBBS for Windows and *NIX as well, all still being developed! It’s a great project for a Raspberry Pi you might have laying around.

Now if you’ll excuse me, I’m gonna add some doors and change some screens on my BBS! 😄


  1. got these figures from a 1994 issue of Amiga Format [return]