12 ms·
mTCP: TCP/IP applications for DOS PCs
- speransky 4y agoMy 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 !
- nikanj 4y agoThe tagline ”Friends don't let friends run old code” on their page was rather funny, considering it’s targeted towards DOS users
- jonny_eh 4y ago> considering it’s targeted towards DOS users I don't see the connection. Is this a reference to something from the 80s?
- progman32 4y agoWell, considering the last DOS version is 6.22 (or, if you stretch, Windows ME)... by virtue of running DOS, you're running old software almost by definition :) Yes, I know FreeDOS exists.
- tssva 4y agoThere were a few versions of DOS from other vendors available after MS-DOS for example IBM PC-DOS and DR/Novell/Caldera (same OS with name changes as the owner changed) DOS.
- watersb 4y agoFWIW, OS/2 is actively developed, maintained for a price. I gather it's mostly for industrial control and ATMs these days. I used OS/2 Warp 4.0 for a bit, when researching for my book on Windows NT. It's certainly not "DOS", or not only, as it's a protected memory kernel with DOS userspace. But it might be a DOS, or a direct descendant that has managed to swim all the way to 2022. https://en.m.wikipedia.org/wiki/EComStation https://en.m.wikipedia.org/wiki/EComStation And of course https://www.freedos.org https://www.freedos.org
- nikanj 4y agoThat wikipedia page makes it sound like os/2 is very much dead
- mrlonglong 4y agoIt comes from C++, an object oriented programming language where friends don't let friends access their privates. A nerd joke basically.
- IncRnd 4y agoDOS is old code, so the humor comes from the paradoxial juxtaposition of touting the use of old code while simultaneously saying, "friends don't let friends run old code." This superposition of statements is set against the backdrop of the tech idiom, "friends don't let friends" followed by some activity. [1] This tech idiom is based on a decades-old advertising slogan, "Friends Don't Let Friends Drive Drunk," by MADD, Mother's Against Drunk Drivers. [2] [1] https://www.google.com/search?q=%22friends+don%27t+let+friends%22+tech https://www.google.com/search?q=%22friends+don%27t+let+frien... [2] https://www.youtube.com/watch?v=qVuu8G8ww6s https://www.youtube.com/watch?v=qVuu8G8ww6s
- Lammy 4y ago> DOS is old code Not necessarily! http://freedos.org/ http://freedos.org/
- mbbrutman 4y agoMy jokes don't always land well. I'll consider this a success. I prefer to look at DOS as "stable."
- mbbrutman 4y agoFor 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.
- tssva 4y agoDidn't see mention of it in the release notes but did you happen to implement the ability to disable the ftp server login beep via the config file. We exchanged some email regarding this a while ago. If I forget to do so manually the beep sends my dog into a barking frenzy when I connect. You mentioned implementing for the next version.
- oso2k 4y agoThanks a ton Mike! One of these days I want to start working on a djgpp version of the library code. 32-bit clients could be useful for some things.
- bennysomething 4y agoDoes each application implement its own tcp up stack? Or does dos have one already?
- MrYellowP 4y agoWow! Will you eventually implement multithreading?
- mbbrutman 4y agoProbably not .. that is a diminishing returns kind of thing. If I'm the only user and there are not a lot of programs that need it, it's not worth the effort. What I have now can best be described as cooperative multitasking with custom contexts. Example: the FTP server and HTTP server keep track of each user connection, provide them a buffer, and know the state of the session and how far into the file they are that is being transferred. (True multithreading would generalize that kind of context as a set of registers and a stack for each thread.)
- MrYellowP 4y agoI am talking about actual multithreading using several cores. You don't need to write a scheduler for that or anything fancy. There's some osdev tutorials about how to enable multiple cores in DOS, iirc. I can dig them out, if you want. You're probably seriously overthinking this. Right now you're polling, which is fine, because that's how all the high performance software works. One thread pre core, each thread rolling through a list of connections, checking if there's new data.
- mbbrutman 4y agoOh, I understood - I've been a professional programmer for close to 30 years, and I've done a lot of operating systems work. On this platform you have the burden of ensuring that the C runtime is thread safe, or putting locks around it. The same with BIOS calls. And DOS function calls too; you can't have those other CPU cores just blundering in on something that is not reentrant. And besides, I target this at 16 bit DOS on vintage machines. I've never seen a PCjr or an AT class machine with multiple cores. There were some super expensive 386s at the time that were multi-processors, but those are a fairly rare item.
- 4y ago
- walrus01 4y agofor 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.
- jlundberg 4y agoIt is also possible to use a 3c509 in 8-bit ISA mode. Such a card might be easier to get hold of these days. https://github.com/hackerb9/3C509B-nestor https://github.com/hackerb9/3C509B-nestor
- mbbrutman 4y agoI use the 3C503 in a lot of machines. It is not a great performer, but it is well supported and solid. And it is an 8 bit card, which is handy for the older PC and XT class machines. Other notable cards for older machines include the NE1000 (8 bit), NE2000, Intel 8/16, Western Digital or SMC 8000 series. Many PCI cards work well; just look for a packet driver. For those of you without real slots the Xircom PE3-10BT device is great, but they are getting more expensive in the wild. SLIP and PPP work. PLIP works too, but I have not tested it myself. And there are even packet drivers that allow for Token Ring and Arcnet to be used; they emulate Ethernet.
- tssva 4y agoI have a few cheap noname NE2000 clones that I originally got in the mid 90s. I wouldn't have put them in a server but they were stable for me in DOS, 16 bit Windows, OS/2 and eventually Linux clients back in the day. Linux had some growing pains with the NE2000 drivers. I wouldn't have put them in a server but they always worked great for my home client machines. They still work great for me today in my retro machines. I use them with packet, ODI and NDIS drivers with no issue. I also have a real NE1000 that I use in a Zenith Z-161 luggable, an XT class 8-bit isa machine. This is the machine I mostly use mTCP on.
- oso2k 4y agoThere's also a few NE2000 ISA clones on github now. https://github.com/Manawyrm/ISA8019 https://github.com/Manawyrm/ISA8019 https://github.com/hkzlab/ISA_8bitNetwork_8019 https://github.com/hkzlab/ISA_8bitNetwork_8019 https://github.com/skiselev/isa8_eth https://github.com/skiselev/isa8_eth
- qwezxcrty 4y agoI'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.
- contingencies 4y agoI remember submitting an nmap-profile for a DOS-era TCP/IP stack about 20 years ago... it would crash every time you scanned it.
- incanus77 4y agoGreat 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. https://justinmiller.io/series/project-386/ https://justinmiller.io/series/project-386/
- bennysomething 4y agohttps://justinmiller.io/posts/2020/06/17/project-386-part-4/ https://justinmiller.io/posts/2020/06/17/project-386-part-4/ Just read your bit on how focused you felt using that. Very interesting! I still have my ATX big case pc and won't give it up for a laptop even though it makes no sense (well it does in that I can upgrade bits as I please). However for the most part I associate computers with work and stress these days.
- watersb 4y agoThis 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. https://en.m.wikipedia.org/wiki/NCSA_Telnet https://en.m.wikipedia.org/wiki/NCSA_Telnet 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.
- mbbrutman 4y agoI discovered NCSA Telnet late, after it was obsolete, but it inspired me greatly. I still have not looked at the source code, but it is tucked away somewhere.
- analognoise 4y agoIs 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.