A weird EBay interlude on the way to Extending DOS.

I’ve always been fascinated with DOS Extenders, as they are such an ingenious method of breaking the rules of an environment by cheating the system. The first one I, like many others I imagine was using was DOSX that is the heart of Windows 3.0 on the 286. An incredibly tiny program but it let Windows run in protected mode, unlocking the potential of the machine. Great!

But as an aspiring programmer things were a quite a bit different. While QuickC for Windows did give you Microsoft C 5 hosted inside of Windows, effectively making the $99 for Windows and $99 for QuickC for Windows the cheapest DOS Extender dev kit of the time, it was of course limited to the 286. The 386 stuff although being the genesis of the DOS Extender was far more expensive.

But then with the advent of EMX for OS/2 and DJGPP for MS-DOS, both of them included DOS Extenders, and even better they were gratis! But of course they were GCC focused, and me being a kid saw the incredible 1MB++ size of CC1.EXE was thinking it’s insanely bloated, and of course slow. I don’t think many people were using 80386sx-16’s but I was.

Then there was this incredible offer from Watcom, who’d just become an internet (yes on usenet!) darling for being the compiler used to port DooM from NeXT to MS-DOS and it was available to students for a whopping $99. Neat!

Watcom C/C++ 10.0 retail packaging

Being in collage this was great. Another big plus of Watcom is that it was able to host on MS-DOS, Windows NT, and OS/2. And target far more!

So much included in the box!

Back then there was such incredible platform diversity in the PC space. Servers could be NetWare, Unix, OS/2 and that new fangled and often delayed Windows NT. Watcom was uniquely positioned to support so many of them, all from the same compiler set.

And of course most famously was DOS/4GW included in the box!

Despite having this, I’d always wanted Phar Lap TNT, as it brought insane features of Windows NT to MS-DOS, like DLL’s, and threads! But it was expensive, and I couldn’t justify it.

And this is where the story gets weird as I was also looking for their 286 product, and I found a copy on Ebay, and even better I easily won!

I can’t get a higher resolution image as the auction has expired out. But take note of the thumbnail.


And this happened. I was all happy expecting it to arrive when out of the blue the order was cancelled and refunded. I contacted the seller as I was totally wanting to get this, and to see if there had been some screwup in shipping, and they had told me that they didn’t know either has they had been refunded the sale price+shipping. So there we both were, me without my 286 Extender, and the seller with no disks to try to sell back again. And then this happened:

Phar Lap 286 magically reappears!

The disks showed up again for sale. We were both dumbfounded, how did this happen? Somehow someone intercepted the sale, and refunded us both, and then is trying to sell it on their own? Interestingly they won’t ship it to me, almost as if they are trying to block me from it.

Sketchy as hell as they say they are reselling from 3rd parties. Is there some kind of hustle going on where someone at a combined overseas shipping centre grabs random items, they can issue a refund for both parties so we don’t care, and then use a proxy sales site to sell them again?

Interestingly they know the disks read fine, as I know that too as I’d asked the seller to image them for me incase anything happened in shipping. I just never imagined it’d have been intercepted and resold. Maybe it’s common place, but I’ve been using Ebay since 1998 or so and well it’s the first time I’d ever seen something like this. Naturally bringing it up with Ebay is a total waste of time.

I’ll have to continue this with a deeper look into Phar Lap 286|DOS-Extender 2.5 as this is already far too much of a diversion from where I was going. But I thought I should point out this thing so buyer beware about the current listing.


Well seems I had the opposite effect I was looking for:


22 thoughts on “A weird EBay interlude on the way to Extending DOS.

    • Yep that’s it all right! So interesting that they picked a 4 disk set. I guess they do random grabs, but what a strange business model. Someone has to refund me & the seller, and their sale price for the intercepted package is only $1 more than the original sales price.

      combining shipping doing containers is nothing new or exciting, it’s basically how mail works. However reselling back on the same platform things that are intercepted is just plain weird.

      It feels like there is something much more sinister going on.

  1. I’ve been ignoring Phar Lap as part of Visual C++ 1.x installs for decades.

    Looking now, it is incredibly heavily patterned on 16-bit OS/2. Visual C++ outputs an NE binary that’s marked for Windows 3.1, but the Phar Lap runtime will happily run OS/2 binaries, and the functions it’s using are the same doscalls ones from 16 bit OS/2.

    I tried building a binary with Visual C++ and taking it to OS/2, but it looks like the startup code includes a PHAPI.DLL dependency. It should still be possible to make it work with more minimal startup code though. It is possible to take Hello World from C 5.1 targeting OS/2 and run that Phar Lap, so the PHAPI startup code isn’t necessary to function.

    Phar Lap (even the Lite version) uses DLLs extensively, since it’s just implementing an NE loader. “Real” OS/2 binaries (the C 5.1 compiler itself) won’t run because of missing DLLs, but taking a 16 bit version of NLS.DLL, and it executes. I haven’t tried to build a “real” toolchain out of this yet.

    It seems though like this should be enough to use the OS/2 toolchain for Word 1.1 when compiling on DOS to eliminate those annoying out of memory errors …

    Although, the other thing I hit messing with this is I was using NT 3.51 for these experiments, but it can run OS/2 binaries itself without help from Phar Lap, so maybe I should just compile Word on NT.

    Btw, I’m curious if TNT is really bringing NT (PE) executables to DOS rather than the NE ones supported by Phar Lap 286. The DOSXNT bound DOS/PE executables are still somewhat useful, since they’ll run on the latest 64 bit Windows 10 but also back to DOS.

    • Windows NT from the beginning until NT 4.0 have the OS/2 subsystem and could run OS/2 16 bit binaries like you comment, this was so their customers could run Microsoft SQL Server for OS/2 and other server software that they sold.
      Out of the box it only run console applications, but if you was an important customer and had the need they sold you “Microsoft OS/2 Presentation Manager for NT” so you could run Presentation Manager applications.

      • I had bought a couple of “Microsoft Select” CD-ROM’s for ‘partner use’ and I was so excited to have it in my hands as burried in one full of service packs for office was the fabled Presentation Manager for NT. And it’s exactly what it sounds like. Sadly I really don’t have any 16bit PM applications, and the Microsoft ones (Word 1/ Excel 2) are rebound Windows ones, and it really confuses NT.

        • What a find!
          For many years it was just a rumor for me, a unicorn, like the Microsoft OS/2 32-bit SDK (that we could only hope that someday will appear).
          Even when I had running OS/2 2.0 and Warp in my computer back in the day, I don’t remember running 16-bit programs, it was the software that came with the system, DOS programs, Windows 3.x programs and shareware and other stuff that you found int the Internet which was compiled with EMX so was UNIX ported software not tailored specifically for OS/2, there was really a lack of programs.
          That said, one of my projects is compile the sample code y old compilers and other sources for OS/2 and test it in OS/2, Windows NT, 2ine and who knows, probably make some new program…

          • I’ve uploaded it all over the place, it’s kind of easy to find now. It’s weird now that it’s been out for years, you’ll have more trouble finding Presentation Manager applications!

            You’ve come to the right place for messing around for dev tools, as close as we’ll get to that fabled Microsoft OS/2 2.00 Pre-Release 2 stuff is 6.123 and the OS/2 2.00 Pre-Release 2 SDK.

        • Very nice find. If you want to snag a full-blown 16-bit PM app that you can use to try to put PM-NT through its paces, I’d look no further than the DeScribe 3.0 beta that WinWorldPC is hosting. 4.0 was the first 32-bit build of DeScribe for OS/2, and the beta copy on WWPC has separate installers and (unbound) executables for both Win16 and OS/2 1.x!

          • I just installed it. Sadly it just hangs trying to do anything, but it did install! Oddly enough I tried Excel 2.2 and that works fine. Go figure!

    • Coming back to answer my own question…

      It turns out that 16 bit Visual C++ includes the OS/2 based Phar Lap, but the 32 bit Visual C++ 1.1 CD includes the NT based Phar Lap TNT Lite, cleverly hidden in the MSVC32S directory. I haven’t messed with it much yet, but it’s clearly implementing a PE loader. Because it’s the “Lite” version, it’s not intended to support redistribution…but that also means there’s a TNTLITE.EXE loader that can be pointed at a PE file, and it will attempt to execute it from DOS.

      Unfortunately I haven’t found many things that work with this. It looks like newer (2.0 or above) C runtimes depend on Win32 APIs that this version of TNT didn’t implement (in particular NLS, just like the OS/2 one.) It needs relocation information in the EXE, which means anything compiled with Visual C++ 4.2 or newer is out. It doesn’t seem to have basic Unicode APIs, so anything must be 8 bit chars. As of now, it’s not much more than a runtime that allows people like this community to compile non-Unicode code using Visual C++ 1.1 and launch it from DOS.

      It’s crippled to 2Mb of memory, which seems like ought to be straightforward to remove. It also seems to limit the use of DLLs (unlike the 16 bit version) which may be a more problematic restriction.

      Note that Visual C++ 1.1 itself was bound with a version of TNT so it can execute from DOS. This is the only 32 bit version of Visual C++ that appears to do this. There seems to be interesting potential to leverage the “real” runtime used by the compiler with the “lite” tools, but so far I haven’t succeeded.

      • Its part of what set me on a long journey to get a copy of TNT. Ive gutted the manuals for version 6, the one I managed to get, and made some disk snapshots.

        Had there been a more permissive version of TNT included, maybe DOS would have held on for another year or two, although Direct X basically killed DOS by offering a nice abstraction to graphics/audio/peripherals.

        the first 32bit version of PharLap I have is 4.1 although it should have been their first product? The Pharlap 2/3 I have is all 286 based, I could have sword I read that the 386 based stuff came first as it was far easier to go from protected to real mode.. Then they built the 286 stuff afterwards.

        • According to Wikipedia, their first (1986) offering was for the 386 – which kind of blows my mind. What was the install base of 386 devices? What 32 bit developer toolchains existed? What 32 bit APIs existed? I can’t imagine that product being remotely useful.

          Moving to the 286 seems as much about using the existing OS/2 developer tools and creating the potential for hybrid applications than anything with the 286 itself. In the late 80s, any developer wanting to support high memory applications probably found themselves needing an OS/2 version anyway.

          Agree completely about the incredibly strict licensing in these bundled Phar Lap products. It makes me wonder why it’s even there – what did Microsoft gain by distributing something its users couldn’t use? Why was it distributing an effectively OS/2 development toolchain with its 1993/1994 Windows development tools? After looking at TNT, I’m now wondering if this is the price Microsoft paid to move Phar Lap from OS/2 to NT – they could have supported OS/2 2.x LX as a 32 bit DOS target, and it’s conspicuously absent. But due to the strict licensing, I wonder how many applications moved to the Win32 API as a result of Phar Lap.

  2. I have a disk with a LITE version of Phar Lap that was originally supplied with Borland C++ 3.1. Then there was also the Borland Power Pack that came with C++ 4.5, which had 16 and 32-bit extenders.

  3. A full (non-lite) version of Phar Lap 286|DOS Extender 3.1 can be downloaded on vetusware. It works, at least for Borland C++ 3.1!(*) Just don’t forget to run the installation batchfiles.

    (*) I would like to get it working for Watcom.

    • All this talk of DOS Extenders has me wanting to dig out DJGPP and my copy of Borland Power Pack. I seem to recall the DJGPP was more mature and easier to use than Power Pack and Power Pack didn’t have a protected mode video driver.

      • DOS extenders are so much fun! It’s breaking all the rules!

        DJGPP is a mixed bag, the v2 stuff is a lot more forgiving than the v1 GO32. I did a haphazzard port of DooM to v1, and it mostly runs, but it’s so prone to crashing. At the same time it’s cool to downgrade to GCC 1.27 and get it building DooM!

  4. I’m writing a EXE “dumper” tool, for lack of a better term for it.

    This is leading to a slow and tedious process of learning all the various EXE formats, and to reverse engineering one (the “W3” format used exclusively by the Windows/386 kernel on 3.x releases, titled WIN386.EXE. The W3 format is really just a collection of LE VxDs, with a directory table right after the W3 header describing where each VxD is and its module name.)

    I’m looking to get my hands on anything related to Phar-Lap 286 because it supposedly uses two special NE OS type values, one for console and one for GUI, that I’d like to verify the truth of.

    Bonus points if I can run this tool through Phar-Lap 286. The current Makefile for OS/2 builds a 16-bit OS/2 1.x program.

    You can find the source code to my program, available under the ISC license, at https://github.com/segin/readexe

    If I can figure out how to use the GitHub releases feature, I’ll ship out precompiled binaries for everyone to use.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.