Breaking the DOS 640k barrier on 8086 and 80286 systems

preview_player
Показать описание
Most people who grew up with MS-DOS on 16-bit 8086 and 80286 CPUs learned about the 640K limit and accepted it -- but you may be surprised to know that 640K isn't the actual limit. In this video, I explain why the 640K limit is a myth, and how you can break past it using a variety of methods that don't require EMM386 or an 80386 CPU.

Chapters:

00:00 Intro
00:51 Benefits
01:43 The IBM PC Memory Map
02:48 The orthodox procedure
04:09 What are Upper Memory Blocks?
04:53 Orthodox procedure continued
06:46 An Unorthodox procedure
09:34 Q&A
11:31 DOScember

Hardware and software mentioned in this video:

==========

This video was a part of #DOScember ! Here's the #doscember official playlist:

Also check out these other #doscember participating Channels:

==========

Thanks to winworldpc for supplying some software, and to Mike Brutman for boot sector patch ideas.

Contact info:
Twitter: @MobyGamer
Рекомендации по теме
Комментарии
Автор

fascinating stuff. i never knew you could go beyond 640k. excellent video Jim !

ModernVintageGamer
Автор

In the fall of 1986, I installed my first Novell NetWare 86 non-dedicated server hosted on an HP Vectra. This was an early version of Novell Netware that was targeted at the PC XT level machines. It did not support extended memory of the 80286 nor the recently released expanded memory specification (EMS).

The non-dedicated nature of NetWare 86 allowed the server code to run in background so the computer could also be used as a workstation. We had sold this as a 4 node ArcNet network to run Microsoft Word, which at this time was a DOS only program.The problem was the server didn’t have quite enough memory to run Word after NetWare 86 was running.

I was able to get an 8-bit memory board that had selectable addressing placing and additional 64K at 0xA000. I know that the 8-bit memory would slow down the 16-bit machine, but we were desperate in those pre-Internet days.

Since MS DOS 3.2 wouldn’t use the extra RAM automatically, I wrote a short program that was run in the AUTOEXEC.BAT that did the following:

- If the ROM BIOS reported > 640K do nothing and exit. The amount of installed RAM was stored by the BIOS in memory location 0040:0013.
- Test to see if and how much RAM existed in the 64K block at 0xA000.
- If no extra memory was installed then do nothing and exit.
- Otherwise update the total memory value in BIOS location 0040:0013 and do a warm reset. A warm reset was done by storing 0x1234 in location 0040:72 and calling the reset vector. The 0x1234 would tell the BIOS not to test the memory during the reboot leaving the altered total in place.
-MS DOS would use the new memory value showing 704K of total RAM.

This was not the most robust code, but it worked extremely well in this installation and ran for several years until they upgraded the network to NetWare 286 a few years later and relegated the old sever to a regular workstation. Fortunately we didn’t notice any speed issues using the 8-bit RAM.

richshealer
Автор

As a matter of fact, DOSBox-X has options to allow more than 640KB in this way, if you use machine=cgaonly, machine=mda, machine=hercules, though without emulating EMS in this way.

thegreatcodeholio
Автор

The production values in this video are insane. In a good way. I appreciate the attention to detail as much as I appreciate the perfectly symmetrical alignment of all your gear in the background. And not many other people can casually include incidental footage of their own rare memory expansion cards. Very interesting video.

BrassicGamer
Автор

Sure could have used this video 30 years ago!

All jokes aside this is an interesting fact I did not know was a possibility without some extreme measures. Thanks for the video. Cheers.

Eremon
Автор

Yes, fiddeling with Autoexec.bat and Config.sys. Those were the days. Was so happy getting WIng Commander running on my 80286

lucius
Автор

Very informative. I've used QEMM 8 on my Packard Bell and having more free conventional RAM was the best feeling.

RetroPCUser
Автор

I don't even remember subbing to this chan, but I'm glad I did. Good vid!

hiimcody
Автор

Zenith's 8088 PC systems (Z148, Z158, etc.) advertised supporting up to 768K of RAM in what they called "non-compatible mode". Do you know anything about that? I suspect it has something to do with their older non-PC-compatible Z100 systems, but the brochures and listed specs don't mention anything about Z100 compatibility. I'll have to try making a Z100 MS-DOS boot disk and seeing if my Z148 will attempt to load it.

vwestlife
Автор

Ahhh, takes me back to the days when I worked on customer support, making Boot Disks for Wing Commander and Ultima The good old days of computers..

CenterpointConnect
Автор

Wow. I wish I knew about this back in the 90s!
Really interesting stuff. First video of yours I've found, thanks to DOScember! Instant sub. :)

osgrov
Автор

you should be proud of everything you do. it's great stuff!

ITVOIP
Автор

Great Video! I started with the TRS-80 in 1977 and went from BASIC to APL, Z-80 and 8080 Assembly, and a few other languages. Also, in my 20s, I worked at a Radio Shack Computer Center in Atlanta, where we started with models 2, 3, 4, 12, and 16, and went on to the PC Compatibles, Tandy 1000, 1200, and 2000. This is very informative and interesting, and your presentation is excellent. I subscribed immediately.

antonnym
Автор

Excellent Video Jim! I've been playing around with moving my Leading Edge Model D back to MDA, so this is timely.

geoffpool
Автор

I think did this with a High Mem Floppy I purchased at a software convention - but I remember getting 720k out of these at college. Thanks for the upload.

zarrahkat
Автор

This is some hardcore memory management! Thats one of the messiest parts of DOS.

Breakfast_of_Champions
Автор

Very informative video and well made. Although most of this is goes beyond the available memory in my head, I'm sure it will be very helpful for many others

TheRetroChannel
Автор

A very long time ago, I did similar to this. 486 DX2 66. I was not smart, but just used qemm. In one or 2 configurations. I do remember that I had 710k of free base memory for Doom with a mouse driver, cd access, DOS high, and HMA opened.
After I went pentium (AMD) and did not look back.

Michael_Brock
Автор

Wow, you managed to unfuck my brain about DOS memory. Thanks for that!

superilu
Автор

amazing content! still remember the days when we struggled to load a mouse driver and run the software!

infamousJohn_thedoc