== fabulous.systems ==
Welcome to the world of fabulous.systems

Connecting MS-DOS 6.22 to the internet — and the fediverse

#retrocomputing #msdos #mastodon #fediverse

Microsoft released the last standalone version of MS-DOS as MS-DOS 6.22 in 1994.

Even though this operating system is decades old and a true relic of the past, people still develop new software for it. Thanks to a couple of modern tools, we can connect MS-DOS to the internet. Since just having a connection to the outside world itself is pretty boring, we connect MS-DOS 6.22 to something fairly modern and amazing: the fediverse.

Let’s have a look.

A little bit of history

Today, getting connected to the internet is very simple: Just enable your WiFi or connect an ethernet cable and you are good to go. In many cases, everything just works without having to configure anything.

Modern systems include all the drivers and tools you need for an internet connection right out of the box.

Back then, things were not that easy.

For connecting a machine running MS-DOS to the internet, you needed the matching packet driver for your network card and a set of tools for providing the TCP/IP stack. Yes, TCP/IP is not the only way to do networking, and since other protocols were a lot more popular in the world of small to medium-sized businesses, it was a common practice to ship the OS without any networking capabilities so you could install whatever software your network required.

Setting up the connection

Thanks to emulation, hardware compatibility isn’t a problem anymore, so we can just emulate a network card compatible with the widespread NE2000 standard which 86Box conveniently supports.

As I mentioned before, we need both the networking driver and the TCP/IP stack. For the driver, we are going to use the NE2000/NE2100 driver available at http://www.georgpotthast.de/sioux/packet.htm. Support for TCP/IP will be provided by the mTCP toolset.

If you are mainly interested in connecting MS-DOS to the fediverse, you only need the packet driver, since DOStodon, the software we will be using, includes a full TCP/IP stack. However, if you want to use your brand new Internet connection for other software, I recommend that you install mTCP as well.

In 86Box, we can use SLiRP for connection handling, so we don’t need to worry about it on your host machine at all. SLiRP’s virtual router is able to provide dynamic networking configuration with DHCP, making it the perfect match for mTCP’s DHCP client.

To add the virtual network card to the VM, open the VM settings and use the following configuration:

  • Mode: SLiRP
  • Adapter: [ISA16] Novell NE2000
  • Address: 0x300
  • IRQ: IRQ 3 (or any other IRQ if IRQ 3 is already used by other virtual cards)
  • BIOS address: Disabled

86Box: Network card configuration
86Box: Network card configuration

The hardware is done, now to the software side of things!

Part 1: The internet.

To add some life to the virtual network card, we extract the .ZIP archives of the NE2000/NE2100 driver and the mTCP package. The software is pretty small and will fit on a single 1.44MB floppy disk. For this experiment, I created a floppy image with WinImage and copied all the files to it.

Do not skip the SAMPLES directory of the mTCP package - we’ll need it later!

Installing the networking stack is pretty easy. After booting the VM, we mount the floppy image containing the driver and mTCP to the VM and copy everything to the C:\NET directory.

After copying the files, it is time to check if the networking driver works. To do so, we try to load the NE2000 driver manually:

C:\NET\NE2000.COM 0x60 3 0x300

The NE2000 driver is working!
The NE2000 driver is working!

Great, the driver found the network card!

Now, we can try to get an IP address. First, we have to copy the file SAMPLES\SAMPLE.CFG to C:\NET\MTCP.CFG. Since we are using only the DHCP client and none of the other services (like an FTP or HTTP server) from the mTCP package, the default configuration works just fine.

Prior to using mTCP, we have to tell it where the configuration file is located by using the SET MTCPCFG=C:\NET\MTCP.CFG command. Finally, we can try to get an IP address.

Success, we have an IP address!
Success, we have an IP address!

As you can see, the DHCP server provided by the virtual router assigned an IP address to the VM. The DHCP server doesn’t seem to support requesting a hostname, but for our purposes, this won’t matter at all.

Time to test if outbound connections work: C:\NET\PING.EXE fabulous.systems.

Hello there!
Hello there!

Now that we confirmed that the setup we want to run is working properly, it is time to auto-load it in the AUTOEXEC.BAT file with the following modifications:

LH C:\NET\NE2000.COM 0x60 3 0x300

These modifications will ensure that the networking stack will be loaded each time the system starts up.

Part 2: The fediverse.

Now that we have a working internet connection, it is time to connect MS-DOS to the fediverse.

Let me introduce you to DOStodon, a Mastodon client for MS-DOS, created by SuperIlu. DOStodon is powered by DOjS, a JavaScript implementation for MS-DOS which is also created by SuperIlu.

Installing DOStodon is very simple. All we have to do is to get a copy of the git repository, which includes the necessary program files already compiled.

I transferred the extracted files to an ISO image and mounted the image in the virtual machine. Then, I copied all files to a new directory.

When starting DOStodon for the first time, we have to pass the login credentials as arguments. Since DOStodon stores the login information, we only have to do this on the first start.

C:\PROGRAMS\DOSTODON\DOSTODON.BAT example.com youraddress@example.com yourPassword123`

After a couple of seconds, DOStodon starts up and shows us the Home timeline. As you’ll see in the next couple of screenshots, this is not just a simple tech demo. DOStodon is a complete Mastodon client with all the timelines, hashtag search, and a compositor for new posts and replies.

And because a picture is worth a thousand words, I’ll close this article with some screenshots.


Home timeline
Home timeline


Tag search
Tag search

Creating new posts…
Creating new posts...

…and replies!
...and replies

Do you have any comments or suggestions regarding this article? Feel free to join the discussion at our fabulous.community!