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.
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?
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.
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.
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.
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:
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):
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é! 🙌
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:
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!
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!
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:
Bring up the MiST setup menu by pressing F12. Insert the Workbench 3.1 install floppy file
df0 (first floppy) and set Floppy disk turbo to
ON. In chipset settings,
68020 as CPU, set Turbo to
none, video to
PAL, Chipset to
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:
SSD drives in the screenshots, I did this in WinUAE so it
mounted my PC’s drives as well. You should only see
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
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
Double-click to open the
Install 3.1 drive icon, and the installer program will be
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!
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
df0 and running the 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.
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
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:
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:
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
Updating the window like this might jumble the icons around, so click
Clean Up for them to line up properly. Anyway, onto MUI.
Inside it, you’ll find the
Once that is done, reboot so that the runtime is loaded. On to the Genesis installation! As before, extract the downloaded file:
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
in the Workbench top menu to see the
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
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.
By now, you know the jig. Extract the file and run the installer.
FACTS by default is set to update a hardware RTC device, which the MiST lacks. So go into the settings and unselect it:
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:
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:
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
New Drawer) named
Texts. Then, go into the
RIP folder and add a new folder called
Also, copy the
Zeus.key file into the
Zeus folder to unlock it. Final step:
the telnet connection!
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
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.
Then, copy the
telnetd-device.conf file in the same download to the
Genesis one in the System drive.
The config file is super simple. To edit it, double-click it and fill in the command with the following:
The file has a single line:
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
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!
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
inet.access file in Genesis’
db folder and double-click it:
Once that’s done, just add the following to the top:
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.
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
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
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!
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! 😄
- got these figures from a 1994 issue of Amiga Format [return]