Page 1 of 2

mTCP Updates (2010-06-21)

PostPosted: Mon Jun 21, 2010 8:55 pm
by Brutman
The latest mTCP applications have just been posted at !

For this release I ported the code from Turbo C++ 3.0 for DOS to Open Watcom 1.8. Turbo C++ has been my preferred compiler for years but I was a little disappointed with the quality of the code being generated. It was correct, but certainly not high performance. One of the major reasons for writing my own TCP/IP is to have the best performance possible, so being hindered by the compiler is no fun.

Open Watcom 1.8 is generally a winner, and for a few reasons:

  • The mTCP applications saw a performance improvement of anywhere from 2 to 11%
  • The size of the executable files went down quite a bit. For example, Telnet shrunk to 77KB from 89KB.
  • The compiler runs natively on Windows, letting me use a much faster machine for compiles, editing, looking up docs, etc.
  • Open Watcom is open source and is actively maintained.

What I am hoping is that you will see the same code working the same way with no bugs introduced during the porting process and slightly better speed.

This release also represents an important milestone. This code is the first version to break the 100KB/sec barrier on my PCjr. Using a Western Digital 8003 card I was able to run a throughput test and see TCP/IP sends at 108KB/sec and receives at 112KB/sec. When I first got TCP/IP sockets working 2 or 3 years ago getting 50KB/sec was tough ... and now on the same machine I have doubled the performance. (Additional performance numbers can be found here: )

If you haven't tried mTCP out, it has FTP, Telnet, IRC, Netcat, Ping, and a DHCP client. It runs on almost any machine you can dig up, it only requires 256KB, and it doesn't waste CPU cycles. There are some screen shots and a video on the web page if you want a preview.

And of course, it runs great on a PCjr ;- )


Re: mTCP Updates (2010-06-21)

PostPosted: Fri Jul 02, 2010 9:08 pm
by Vorticon
That's great Mike! I use your TCP suite quite a bit, especially telnet and ftp and it has definitely expanded the uses of my Jr.
Thank's for continuing to maintain these programs.


Re: mTCP Updates (2010-06-21)

PostPosted: Sat Jul 03, 2010 6:56 am
by Brutman

Remember to update often. There is nothing tragically broken, but I have been finding a lot of little problems, mostly of my own doing. Sometime I look at the code and the bug and I'm amazing that it lasted two years before being detected. ;-0

The todo list looks something like this:
  • Wget, to make getting updates directly from the web site possible for the old machines
  • IP fragment support
  • IRCjr updates to make the user interface a bit nicer
  • Doing an open source release


Re: mTCP Updates (2010-10-20)

PostPosted: Wed Oct 20, 2010 7:53 pm
by Brutman

Once again, a new version of mTCP is available at .

On the surface this version looks like the prior versions. The biggest visible change is that FTP now has command line editing and recall, which makes it much nicer to use.

Deeper down in the TCP/IP stack the changes were pretty significant. This is the first version to support IP fragment reassembly. I have been able to get by without it for the last two years but really to be a compliant TCP/IP stack it should support sending and receiving IP fragments. This change will improve the compatibility with other networks and gateways. I was able to get IP fragmentation support in with minimal performance impact; you'll only notice it if you get fragmented packets.

For those of you not using mTCP yet, it includes a DHCP client, FTP, IRC, Telnet, Ping, SNTP and Netcat. It runs on just about any (Free)DOS machine (virtual or otherwise) that you can find.


Re: mTCP Updates (2010-11-27)

PostPosted: Sat Nov 27, 2010 12:41 pm
by Brutman
A new version of mTCP is available in the usual place: .

If you are on an older clone machine and you have not been able to make the larger apps run correctly, then you want this version. The Watcom compiler runtime that I am using now was incorrectly flagging some machines as NEC PC9801 compatible, which was crashing machines that were not PC9801 compatible. Some of the machines that were hit by this bug were the Compaq Portable and the Epson Equity series. Thanks to MikeRM for helping me flush this latest problem out - it is a priority to me to make sure that these older machines run well.

(If your clone machine does hot have a normal looking copyright date in BIOS at FFFF:0005 then you were probably being hit by this bug. DHCP would work fine, but the bigger apps like FTP, IRCJR or Telnet would crash when sounding the beeper or reading the keyboard.)

There were some minor TCP/IP changes too to make it more robust if the apps run out of buffer space. This version is built using Open Watcom 1.9; previous versions of mTCP were built using Open Watcom 1.8.

One last note - if you have any problems at all, just drop an email. Also, if you are using mTCP on your machine I'd like to know what kind of machine it is - I'm compiling a list of machines that I know it works on. That will help me with compatibility testing so that I can avoid hiccups like the one above. The partial list at the moment is the PC, XT, AT, PCjr, Epson Equity, Compaq Portable, generic 386-40, Victor Technologies 'Vicky', generic 286-12, generic Pentium class machines, DOSBox (using the Hal-9000 builds), VMWare and VirtualBox.


Re: mTCP Updates (2010-06-21)

PostPosted: Thu Dec 02, 2010 6:41 pm
by MattCarp
Is a V-20 required on the PCjr?

Re: mTCP Updates (2010-06-21)

PostPosted: Thu Dec 02, 2010 9:07 pm
by Brutman
Negative - 8088 is just fine. I explicitly limit the compiler to 8088 instructions when I create the code.

I need to get you on IRC .. back in the golden age we had all of the regulars on IRC. Now we can do it with PCjrs directly.

Re: mTCP Updates (2010-06-21)

PostPosted: Sat Dec 10, 2011 1:38 pm
by Vorticon
Mike, have you considered adding file transfer capabilities to telnet by any chance?

Re: mTCP Updates (2010-06-21)

PostPosted: Sun Dec 11, 2011 12:40 pm
by Brutman
Something like Xmodem or Ymodem embedded in the Telnet client?

I had thought of it but forgot it - I should add that. A lot of Linux and Unix-type machines have sz and rz installed, and those do X-modem and Y-modem over a TTY.


Re: mTCP Updates (2010-06-21)

PostPosted: Sun Dec 11, 2011 2:18 pm
by Vorticon
I mostly need it to download/upload files from and to telnet BBS'ses since modem access is fading fast unfortunately... Thanks for looking into it. I have to say that I use your mTCP suite almost daily on my PCjr :)