
Ask HN: Any cool stories about old DOS extender, EMS or Extended Memory? - sqldba
I was reading the recent HN article about Warcraft 1 and how EMS was a horror to work with until they moved to DOS Extender.<p>This was all before my time and I was wondering if you who worked with this tech had much to say about it?<p>Thanks.
======
svfhn
Basically we had this memory limit in DOS. It was pathetic, like 600K.

Memory extenders came out that let you reach over that limit. But you had to
make OS calls that flipped the CPU into a different mode first.

That was just the beginning! We also had to write 'self modifying code', emit
assembly instructions and make DOS programs rewrite themselves to squeeze
every last bit out of graphics routines. I remember counting 'cycles' of each
ASM instruction. Fixed point was much faster than float then, we did craaaazy
things for 3d graphics, for sure.

Those were fun days of hobby dev, for sure!

------
superflit
Ok, I will try to descript some of my memories.

At that time I had an XT with 4.77MHZ and a "turbo" switch where the CPUs go
to 10MHZ. We are talking about real power here and a 30MB HD Seagate.

A lot of games/programs run ok with only 640 at that time. But graphic ones
and heavier ones need more memory as 1MB or 2MB. Remember that time 1MB was a
serious investing or cost.

So what we used to do at that times:

Several configs.sys and autoexec.bat for each application. Eg.: 1\. Boot with
CD-Rom drivers; 2\. Boot with CD-Rom drivers and others; 3\. Clean Boot

So I had to choose how to boot my PC before choosing the boot menu, and each
menu has its configuration. The more drivers/configs more options becoming an
exponential function.

So later came Qemm[1] that optimize all options for best scenarios (more free
under 640kb or higher mem free). That was a game changer.

There were several details, but that was it. Ask me about stacked or other
techniques from that time if you are curious :)

[1] - [https://en.wikipedia.org/wiki/QEMM](https://en.wikipedia.org/wiki/QEMM)

~~~
SmellTheGlove

        DEVICE=C:\Windows\HIMEM.SYS
        DOS=HIGH,UMB
        DEVICE=C:\Windows\EMM386.EXE NOEMS

------
NetStrikeForce
I have a slightly related one...

At that time I was nothing but a child, so my main interest outside "how does
$THIS work" was to play computer games.

I had a 386 @20MHz with something like 40MB HDD. I wanted to play this
Sherlock Holmes game my dad bought for my birthday. Mind you, at that time
paying for a game was a big effort for my family, so this would only happen
once per year (if lucky).

The problem? The game, once installed, was like 39MB or something crazy like
that! There was this tool called doublespace or drivespace (can't remember the
exact name, I believe both existed) that could increase your __total __disk
space by doing some magic (actually compression, but mostly magic for barely a
child). Problem solved, right?

Not quite.

Now I had a second problem: This tool loaded a driver, otherwise you couldn't
access your data in the disk, and with this driver I could not hit the memory
requirements for this specific game (which also required to load the mouse
driver!).

All in all, I could only play this game by deleting everything on the HDD and
even trimming down c:\dos :) then installing the game. I believe some time
later you could load the doublespace/drivespace driver on to the extended
memory, as well as the mouse driver; plus the RAM started getting cheaper and
I got a whooping 2MB expansion (so I had 4MB in total) and could play and use
the computer for other... games.

As someone else mentioned, you ended up with several boot options depending on
the task you wanted to do. Most of the times I wouldn't even load the CD-Rom
drivers (that's actually with a 486 I got a few years later) or the mouse
drivers.

Those were the times... This is the game in question:
[https://en.wikipedia.org/wiki/The_Lost_Files_of_Sherlock_Hol...](https://en.wikipedia.org/wiki/The_Lost_Files_of_Sherlock_Holmes#The_Case_of_the_Serrated_Scalpel)

------
gadders
I used to work supporting Lotus 1-2-3 for DOS for Lotus in the UK. We quite
often had to get people to load a "clean config" by commenting out most of
their config.sys and autoexec.bat apart from a prompt command and emm386.exe.
This was so we could fit the program in the first 600k and then load the rest
into the main memory.

