Hacker News new | past | comments | ask | show | jobs | submit login

I suggest you take a look at DOS extenders at some point. They were brilliant and the best was DOS/4GW.



The article mentions those at the bottom: "And that’s it for today folks. I intentionally did not touch on DPMI—the technology that truly allowed DOS applications to break free from the 1 MB memory limitation—because I’m saving that for the next article. So, make sure to come back for more!"


[Original author here.] Exactly! That (DPMI) is the thing I originally wanted to talk about but I realized I had to clarify many more thoughts first! And I still have to do the research on DPMI to be able to talk about it :)


Zortech shipped with a compact and fast 32 bit DOS extender called DOSX. It worked like a champ.

https://www.digitalmars.com/ctg/dos32.html

And supported the 286 DOS extender from Rational Systems.


Oh yes, that's right it did. I do remember playing about with that.


I was almost amazed when instead of launching windows 3.1 running win.com one could run Borland DPMI host (that they used in their own 32-bit compiler toolchain), that stayed resident offering its API, and then one could run windows' KRNL386.EXE, that hooked with the DPMI host and booted windows.


What benefit comes from this?


None concrete I can think about, apart from understanding better the innards of windows boot with a whacky experiment. DPMI was an open spec, so this validated that in principle you could write your own DPMI host to make windows think it was running on top of a protected mode whose view to clients you could control and customize. But again can't answer to what avail.


CauseWay DOS Extender was released open source to public domain in 2000, and the source is on GitHub, if you're curious about the implementation. It supports builtin EXE (LE) packing as well.


It would be interesting to understand the Quarterdeck products and how they fit together: the separation between QEMM and QDPMI, and how DESQview worked to enhance DOS with multitasking.


There were many of these.

An impressive suite was the stuff from QuarterDeck. Their DOS extender was called QDPMI, and used the QEMM memory manager.

Quarterdeck DESQview, built on QEMM, truly extended DOS by turning it into a kind of multi-tasking system, allowing users to be more productive.

It was known for its high application compatibility.

I used DJGPP in the early 1990's, and the GO32.EXE extender, which did the job.


My 1990s multi-node BBS ran via DESQView/x

That company produced a number of excellent DOS survival tools. QEMM memory manager was an absolute must to get games working.


DESQView was my daily driver for a number of years. I even ran Windows 3.1 in a DESQView window.


Does anyone know how QEMM worked exactly? I thought all the tricks would be known by now but no other implementation comes close to it.


Not all of them.

But the rival 386Max is now FOSS, so if you are really really curious you could take it apart and study it.

https://github.com/sudleyplace/386MAX

Closest you will get for now, I fear.

I think I read that Symantec lost or erased all the Quarterdeck source code after the acquisition. :-(


DOS/4GW was memorable because it advertised itself while loading games made with it, usually late 386/486 era 32-bit games from before gaming on Windows had its act together.

Phar Lap was more ubiquitous throughout the 286 and 386 DOS days. Microsoft distributed a light version of it with their compiler for a while.


Pharlap 386 is mentioned on Links386, although its flies on by, and special->about


Pharlap's TNT was way more exciting to be honest.

I'm still trying to find the first early extenders though from 1987/88 no leads though.


They also had DOS/16M which targeted 286 protected mode. The company I worked for used it when moving the Clipper programming language to protected mode.


DOS extenders and Watcom C/C++ were heaven-sent after spending years targeting real-mode with its segments and offsets.


I do wonder if it's possible to write a DOS extender for 64 bits.


The big problem is that 64-bit x86 long mode removes the V86 mode that made DOS 386 memory managers possible.

This is why the DOSemu project has been doing a multi-year rewrite: to create a new, full-VM-based DOSemu2 that can run DOS without emulation on x86-64 machines.

https://github.com/dosemu2/dosemu2/wiki




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: