For those of you missing context, mTCP is a TCP/IP library and some of the more common applications. It runs on anything from an old 41 year old IBM PC up to emulated virtual machines.

Applications include fresh implementations of a DHCP client, FTP client and server, HTTP server, IRC client, Telnet Client, SNTP client, Ping, and some other goodies. (These are not stale ports of old code.) Everything runs in 16 bit DOS and the library is open source.

The target is retro-computing hobbyists and people stuck with embedded solutions that use DOS. A good FTP client can be a godsend in that situation.

I'll spread the word to the guy maintaining some tools (RIE, wire bonder and mechanical profilometer) running DOS in our university micro-nano fabrication center. Hope it can help extending the useful life of those >20k$ equipment a bit.
for people who want to try this with real hardware I would recommend the 3com 3c503 as the best choice of 16-bit ISA bus interface card. Or a real NE2000. There were some weird NE2000 clones back in the day that were not so great.
My number two software after Volkov Commander (thank you Seva) when I build an vintage gaming pc, great thing to have a easy way to transfer files to old DOS machine. mTCP rocks !
Great toolset. This was essential once I got my revived 386 luggable going in order to get all sorts of software and files back and forth with the FTP server.


This is wonderful to see! Wow.

Reminds me of that era, when office computers didn't support TCP/IP at the system level: applications had to implement their own stack.

1990s-me used NCSA Telnet on the Mac every day.


Once Windows Sockets API was nailed down, a good TCP/IP stack was available on DOS as a system network driver. And IIRC Apple released a system service as well, as a System extension and Control Panel.

Is there like a long form intro somewhere that starts at a packet driver and a virtual machine and takes you through the internet stack that way?

I'm not sure if that's stupid, but I've done a lot of things with raw ethernet frames, and used LWIP, but...I'd like to develop my own someday, just to "know" how it's all really supposed to work.

I remember submitting an nmap-profile for a DOS-era TCP/IP stack about 20 years ago... it would crash every time you scanned it.
The tagline ”Friends don't let friends run old code” on their page was rather funny, considering it’s targeted towards DOS users
Wow! Will you eventually implement multithreading?