DOS Memory Management
(os2museum.com)
101 points
by: ingve
3 days ago
☆

(os2museum.com)
101 points
by: ingve
3 days ago
☆
26 comments
☆
5o1ecist
14 hours ago
I remember UMB. I remember that, as a teenager, I was obsessed with figuring out how to squeeze the most free conventional memory out of MS-DOS 6+ ... or 7+? I was stuck at around 615k, maybe 620ish. It annoyed me greatly, because I knew there was still headroom left.
The thing was, that upper memory wasn't just for TSRs. Anything one can shove there, would happily stay there and run just fine.
My journey towards the most free, conventional memory ended at 637k on my 386 DX-33 with 8megs of RAM and a SoundBlaster card, with everything possible being shoved to high memory. Mouse driver, MSCDEX and even COMMAND.COM.
637k. So proud, much wow!
Good times!
☆
EvanAnderson
11 hours ago
parent
next
[ - ]
[ x ]
Ahh, memories.
I'd done so well optimizing my conventional memory with my rig (a 486SX w/ 4, then later 16 MB of RAM), then I purchased a Media Vision Pro/ Audio Spectrum 16 card and screwed it all up.
The silly thing purported SoundBlaster compatibility but needed a TSR that, if memory serves, couldn't be loaded into upper memory for that "compatibility" to actually work. It was maddening, but I'd already spent the money. Then there was the matter of throwing away more memory for the drive for the card's onboard SCSI controller... Grr...
☆
wvenable
5 hours ago
parent
prev
next
[ - ]
[ x ]
I had a 286 with 1MB of RAM. It had a chips and technologies chipset that used that RAM to shadow the ROM BIOS but you could also have it put memory anywhere in the upper memory area that was free. So I too religiously optimized conventional/upper memory because that was all the memory that I had.
☆
mhd
13 hours ago
parent
prev
next
[ - ]
[ x ]
I remember playing at least one game without the mouse, to save those precious KBs…
☆
MrBuddyCasino
14 hours ago
parent
prev
next
[ - ]
[ x ]
637k is pretty good! There was an automated command in later DOS versions that would try to optimise memory, but I don't think it got results as good.
☆
blueflow
10 hours ago
root
parent
next
[ - ]
[ x ]
Its not just good, its the maximum you can get with MS-DOS. The remaining 3 kb are the interrupt table, the BDA and the IO.SYS stub.
This was detailed in Geoff Chapells "DOS Internals". I loved that book.
☆
markus_zhang
10 hours ago
root
parent
next
[ - ]
[ x ]
BTW for anyone interested, Geoff Chapells has a wonderful website dedicated to Microsoft OS internals. RIP Geoff.
☆
5o1ecist
10 hours ago
root
parent
prev
next
[ - ]
[ x ]
Wow, you're saying I've literally maxxed it out?
☆
einr
13 hours ago
root
parent
prev
next
[ - ]
[ x ]
MEMMAKER. It was okay, but it was so invasive in modifying your CONFIG.SYS and AUTOEXEC.BAT that I never really trusted it. I preferred hand-optimizing.
☆
lproven
11 hours ago
root
parent
next
[ - ]
[ x ]
> I preferred hand-optimizing.
Same here.
But then, it was my job, it wasn't for gaming or anything. I don't play games much and I had an Acorn Archimedes at home.
I could usually get 620 kB free by hand with no problem, even with a mouse, a CD, and a network stack.
That was enough for 99% of work business apps.
Being able to get ACT! for DOS running alongside a Novell Netware client on Sony laptops won me a senior job in the City of London in about 1992. (I didn't like it and quit a few years later, after a major motorbike crash made me re-assess life priorities.)
In that job I rolled out 10base-T and desktop Windows for Workgroups 3.11. That specific version, WfWf 3.11 (and not WfWg 3.1 or Windows 3.11, which were both different) contained the first version of what became VFAT, which led the way to FAT32 and Long File Names on FAT. It was a prototype of the 32-bit driver subsystem that enabled Windows 95.
And Win95 not only made the Win3 GUI irrelevant, it made DOS memory optimisation irrelevant too.
In the same City job, I also rolled out Windows NT 3.1 in production. Of course, a decade later, that rendered Windows 9x irrelevant.
☆
hulitu
4 hours ago
root
parent
next
[ - ]
[ x ]
> And Win95 not only made the Win3 GUI irrelevant, it made DOS memory optimisation irrelevant too.
Unless you wanted to play a DOS game. Then the fighting between DOS and Win 95 for the 640k began.
☆
Zardoz84
13 hours ago
parent
prev
next
[ - ]
[ x ]
I don't remember the exact number, but I remember that using memmaker and some manual fine-tuning, was on the 620-63X range of conventional RAM.
☆
486sx33
11 hours ago
parent
prev
next
[ - ]
[ x ]
We did special boot disks to strip out everything but what was needed for the game, but sometimes we still couldn’t make it One day I went to a friends house and he had like way more conventional memory in memtest! What the hell I spent hours and days getting 620kb
He was running Dr -dos
☆
lproven
11 hours ago
root
parent
next
[ - ]
[ x ]
> He was running Dr -dos
Yep, that made it a bit easier.
Still around, you know!
It's the kernel of SvarDOS.
☆
markus_zhang
10 hours ago
prev
next
[ - ]
I have to admit, DOS memory management is very fascinating to me as a very amateur kernel investigator. I have a book called “DOS beyond 640k” which describes all sorts of extensions people back in the 80s invented to get as much free memory as possible. The contents of course are irrelevant nowadays, but it is still interesting to read as a tech book.
☆
sqldba
8 hours ago
prev
next
[ - ]
There's a retail tool that lets you get a lot more memory below 1MB. 639K (625K free) conventional, 262K upper (177K free).
If you remember seeing how, you'll get a free virtual cookie.
☆
throw0101c
10 hours ago
prev
next
[ - ]
No discussion on the topic would be complete without QEMM:
☆
nnevatie
12 hours ago
prev
next
[ - ]
Good times. Our DOS game PaybackTime 2 was only capable of using conventional memory. That was a major reason for the game really not having any proper animations for its player characters.
☆
gschizas
13 hours ago
prev
next
[ - ]
'MZ' has been confirmed to be the initials of Mark Zbikowski, there's no question about it. It's not "Memory" + "Last".
☆
canucker2016
12 hours ago
parent
next
[ - ]
[ x ]
Given the MZ magic bytes in the EXE format header - see https://en.wikipedia.org/wiki/DOS_MZ_executable, I would have assumed an association with Mark Zbikowski as well.
The ARR is probably Aaron R Reynolds (also associated with the AARD code for detecting non-MSDOS environments), but you can't ask for his opinion since he passed about 20 years ago - https://www.reed.edu/reed-magazine/in-memoriam/obituaries/no....
Also https://en.wikipedia.org/wiki/AARD_code and a Raymond Chen story involving aaronr - https://devblogs.microsoft.com/oldnewthing/20190924-00/?p=10... and a pic of him with the Windows team - https://web.archive.org/web/20191014055254/https://community...
from another os2museum.com article about MS-DOS, https://www.os2museum.com/wp/dos/dos-3-0-3-2/
The development of DOS 3.0 was led by Mark Zbikowski and *Aaron Reynolds*, both experienced DOS 2.x programmers.☆
pwdisswordfishy
11 hours ago
parent
prev
next
[ - ]
[ x ]
Confirmed by a Hacker News rando. Seems legit.
☆
einr
11 hours ago
root
parent
next
[ - ]
[ x ]
How about "confirmed by Mark Zbikowski himself in a video interview"? Does that sound better?
https://youtu.be/c6yPoWrdjkU?si=hxvXTE6ZsdvJs5U9&t=1266
(roughly 21:06 into the video)
☆
fredoralive
11 hours ago
root
parent
next
[ - ]
[ x ]
That's talking about the MZ signature at the start of every DOS EXE executable (and therefore every Windows EXE as they have DOS stubs), not this additional use as markers in the DOS memory management code. Which probably is also Mark Zbikowski using his initials, but doesn't seem to be confirmed.
☆
einr
11 hours ago
root
parent
next
[ - ]
[ x ]
OK, fair enough!
☆
esafak
9 hours ago
prev
next
[ - ]
Lacking a discussion on protected mode; the means to access the 1MB+ area (up to 16MB in 286, and 4GB in 386 and later).
https://en.wikipedia.org/wiki/DOS_Protected_Mode_Interface https://en.wikipedia.org/wiki/Virtual_Control_Program_Interf...
I remember toying with DPMI in assembler.
☆
ubermonkey
9 hours ago
prev
next
[ - ]
Mmmm, flashbacks of complex sets of AUTOEXEC.BAT & CONFIG.SYS files that we'd swap in and out using batch files to support different memory configurations...
next
[ - ]