• Please review our updated Terms and Rules here

5150 Memory Expansion to 620kB - modern options?

1200XL M.U.L.E.

Experienced Member
Joined
May 9, 2021
Messages
84
Now I have a working floppy drive, a stable power supply, and XT<->AT keyboard adapter in my 5150 I would like to expand the 256kB onboard memory to 640kB with an expansion card.

Is there something modern available? eBay has a few older cards but I am hesitant to try these after my experience with the Chronograph RAMPORT that blew up my power supply.

Thanks!
 
I have one of those, and it's very neat. It expands base ram to 640KB and then you can configure 64, 128 or even 192 kb of UMB RAM. It depends on what expansion ROMs and videocard you use.

If you use CGA or MDA video, not EGA or VGA, you can go right past 640KB barrier to 704 or some such. You can then put all your drivers and part of DOS itself in upper memory.
 
Nice! My 5150 has a simple CGA card so it sound like I can get a bit more memory here.

I also see there is a 2MB card available. Does anyone have that installed in their 5150 or XT? I have no doubts it will work but I wonder if programs that would use the memory would end up grinding the computer to a near halt.
 
I also see there is a 2MB card available.

That is EMS card, a special type of memory that requires EMM.SYS driver from the vendor. It pages any 16KB blocks in a 64KB window in base 1MB of RAM, usually at location like D800. Very little software can use it. I'm aware of Lotus 1-2-3, Windows 3.0, Volkov Commander 4.99beta5 and most Borland products between 1988 and 1992 (Turbo Pascal 5-7, Turbo C 2.0, Turbo C++ 1.0 etc).

Unlike the 1MB card, it can't expand base memory to 640KB.
 
A few days ago I ordered the 1MB card from Texelec through their eBay site. It arrived today.

My 5150 has 256kB on it. I enabled memory starting from 0x4000h to 0xAFFFFh. That means I set SW1.5 through SW2.3 to ON. I am running MS-DOS 3.30 so I don't think I have a native tool to check total memory. However, I use PathMinder 4.10 as my DOS shell and it reports memory.

IMG-0935.jpg

Hooray! 640kB of RAM! :D :D

If I want to leverage the UMB then I will need to switch over to a higher DOS. That may be a project for another day. For now I am happy I have this upgrade.

Trixter - That was a very well made video! I really like how you presented the overall 1MB memory map. It was very clear to me. Thanks for sharing it!
 
I am running MS-DOS 3.30 so I don't think I have a native tool to check total memory.
CHKDSK shows the total and available memory.

If I want to leverage the UMB then I will need to switch over to a higher DOS.
Take a look at DOSMAX. It makes UMBs available on older DOS versions and can move the DOS kernel (and some data structures) to upper memory, too.
 
Hi Svenska !!

Thanks for the tip! It's been so long since I used these tools that I forgot all they can do.

IMG-0937.jpg

It looks like PathMinder uses about 4kB of RAM.

I did hear the reference to DOSMAX in the video posted by Trixter but for some reason I thought it only worked with higher versions of DOS. Maybe I was too excited watching the video and didn't catch all the details. Typical of me. :rolleyes: I will definitely give DOSMAX a try.
 
I know DOSMAX can theoretically provide UMBs for DOS versions less than 5.x, but I spent a few hours fiddling with trying to actually make it do useful things under 3.3 once and it was a pretty frustrating/futile experience.
 
Glad you enjoyed the video. Yes, DOSMAX was frustrating and inconsistent for me personally when I used it on DOS 3.x versions. 5.x and later, I got more out of it.
 
Hi trixster !!

I played around with DOSMAX a night or two ago but couldn't get it working. My first line in my CONFIG.SYS file is :
DEVICE=A:\DOSMAX.EXE /R+ /P+​

It complains there is no memory manager loaded. I made myself a MS-DOS 5.0 disk and tried HIMEM.SYS only to discover it requires a 286 or better processor.

Last night I found this thread :
That thread references a driver called USE!UMBS plus some other tools like CLEARMEM.SYS and TEST!UMB,EXE

I enabled all the memory on my Lo Tech 1MB card and ran TEST!UMB.EXE. That tool found lots of memory with the warning that it may be shared by devices. I suppose that says my Lo Tech 1MB card is working! Hooray!

Now I'm thinking I need to combine USE!UMB with DOSMAX. Could USE!UMB be my memory manager and DOSMAX be the tool that loads COMMAND.COM and other things into upper memory? Continuing with my MS-DOS 5.0 disk, the CONFIG.SYS file I am thinking of now would start out as:

DOS=HIGH
DEVICE=A:\USE!UMBS.SYS A000-AFFF
DEVICE=A:\DOSMAX.EXE /R+ /P+
SHELL=SHELLMAX.COM COMMAND.COM /P​

That's what I would like to try next - either tonight or tomorrow night when time allows again..

What does everything think? Will that work?
 
Now I'm thinking I need to combine USE!UMB with DOSMAX. Could USE!UMB be my memory manager and DOSMAX be the tool that loads COMMAND.COM and other things into upper memory?

Yes, USE!UMB.SYS is a vital piece of the puzzle here. DOSMAX itself doesn't "make available" to DOS upper memory, it relies on the APIs implemented by XMS and UMB management software to "discover" what memory pools are available to it. Basically USE!UMB.SYS implements within itself enough of a subset of HIMEM.SYS and EMS386.SYS (or the various equivalents of those) that DOSMAX can do the rest.

If you want a working example for upper memory configuration I have a copy of my configs.sys in the github repository for a few little dos shims. Just be aware of two things about my example:

1: It's set up to display a user menu to choose between configs, this syntax requires DOS 6 or later
2: I'm using IBM PC-DOS 7, which handily includes native support for loading DOS data structures and the resident part of command.com high, so ignore these lines:

DOSDATA=UMB

And... I think it's the /H? switch?, in the "SHELL=" specification for command.com. To get the resident part of command.com high in DOS 5 you'll have to use shellmax. (you'll notice I'm not using it.)

This *all* said: If you have memory mapped from A000-AFFF there are other programs floating around, like "704k", that instead of loading DOS high bump up the top of DOS memory directly and thus give you 704k contiguous space, so if this is all the memory you have this might actually be a more direct way to give you more memory. (And bumping the top of contiguous memory to 704K works fine with DOS 3, if that's also something you care about.) I think in theory you can even stack these with loading DOS high if you also have upper memory above C000, so you end up with both a giant TPA *and* being able to load drivers high.
 
If you have memory mapped from A000-AFFF there are other programs floating around, like "704k", that instead of loading DOS high bump up the top of DOS memory directly and thus give you 704k contiguous space, so if this is all the memory you have this might actually be a more direct way to give you more memory. (And bumping the top of contiguous memory to 704K works fine with DOS 3, if that's also something you care about.)
What's the point of having 704k conventional memory? I mean, apart from showing people that you have that much free on your system?

Since 640k was hard-coded, no software made for DOS will use or require more conventional memory. Having UMB is way more useful.
 
What's the point of having 704k conventional memory? I mean, apart from showing people that you have that much free on your system?

Since 640k was hard-coded, no software made for DOS will use or require more conventional memory. Having UMB is way more useful.

There was DOS software that would work in configurations with more than 640 KB of conventional memory. The MS linker was rather infamous in needing extra. DesqView could make use of that. I think some word processors would happily use up to whatever address was available. The downside was the limited graphics ability and since graphical programs tended to be the ones that needed increased memory, the benefits were less than might have been.
 
Since 640k was hard-coded, no software made for DOS will use or require more conventional memory. Having UMB is way more useful.

That is not true, at least strictly speaking. There's a value in the BIOS data area that says what the top of available memory for DOS programs, and it's the canonical way for programs to know how much memory they can use. DOS itself loads in the lowest memory available, as do (most) drivers (if they're *not* being relocated high). So unlike, say, CP/M, where most of the time programs expected the bottom of RAM to be a constant 0100h and the OS stashed itself at the top of the TPA, DOS programs load at some variable starting address, which is easy on the 8086 because the segment registers allow fairly arbitrary relative addressing without having to use some kind of relocation routine in the loader. (Which was needed with many older 8-bit CPUs.) So unless a program is specifically making assumptions the algorithm is:

whatever DOS says the end of memory is - the start of memory after the resident parts of DOS = available memory for me

The hard deal-breakers that start coming into play is when you get to B0000 (MDA) or B8000 (CGA), since most PC-DOS programs write directly to video memory. Clearly you can't set the end of memory higher than those points on PC hardware. (Although there were options in programs like QEMM to just be stupid and relocate the text buffer hella high, compatibility be damned. There are ways to set up contiguous DOS memory up to almost 900K, although only a small subset of programs that use BIOS calls exclusively for video output will work under those circumstances.)

Note that a very important point about this: if you did have some kind of program that *assumes* the end of possible memory is the 640k mark and chooses *not* to go with the "official" value(*) then it's setting itself up for disaster because there are circumstances where the top of memory in a machine with 640k of physical memory is *not* the end of available memory. 286 and higher machines often use 1K of memory off the top for an Extended BIOS Data Area; if you tromp all over this you're going to wreck things. (Also note that "full operating mode" on XTIDE does this on 8088 machines, which is why it's generally disabled on, say, Tandy 1000s, where the top of memory will move depending on what video mode you're in.) TL;DR, making assumptions is stupid, so a program that's not stupid should be able to use 704k contiguous if there's not a good reason for it not to be able to use it.

Good reasons why you can't use 704K:

1: You have an EGA or VGA card. (or something else that wants the A page.)
2: You have a system BIOS or add-on card that sets up an extended data area that can't be relocated higher.

Minus those two things it's a perfectly valid strategy, especially if you're really stuck on pre-MS-DOS 5.

(* Do you have an example of a program that's hard-coded to expect the end of DOS to be exactly 640k? What happens if you run this on an AT with a EBDA?)
 
Last edited:
To further beat this dead horse: here's a screenshot of my Tandy 1000 which has 96K of upper memory (in which DOS is loaded high, alongside device drivers) and a VGA card with Quarterdeck's "VIDRAM.COM" loaded. This program can use the actual RAM on your VGA card (slow on a fast machine) or if you have EMS 4.0/a 386 or better it can use "real" RAM to backfill your memory up to the 736K mark. With PC-DOS 7 loaded high I get about 631K conventional free, with VIDRAM it's 725K:

Click image for larger version  Name:	736k.jpg Views:	0 Size:	53.9 KB ID:	1230668

The big bummer is with this software you can't use CGA graphics modes, only text. But I can't say I've actually run into any text mode software that has a problem with this. (Not that I've run a ton, but...) For the aforementioned example of using a compiler or something this is could be a genuinely useful option, which is why this software exists. (Quarterdeck put a fair amount of thought into it too, I believe it's actually capable of relocating a resident Extended BIOS Data Area if it exists, and it'll put it back when you want to go back to 640k mode.)

Bonus for something like a 5150 that has a real CGA card and is using "real" RAM for that backfill: the no graphics modes only restriction won't apply.
 
As far as the story goes... for a very long time, Microsoft internally relied on a S-100 based 8086 computer because of its full 1024 KB conventional memory (all hardware was accessed through I/O ports). It was used to link the linker itself.

Source: Tim Patersons blog, http://dosmandrivel.blogspot.com/2007/11/first-dos-machine.html

This was also true of several DOS PC-incompatibles--you had the entire addressing range to yourself. One such system I worked with even disabled the boot ROM after loading. You still needed an io.sys, but you didn't have to reference ROM.
 
Now I have a working floppy drive, a stable power supply, and XT<->AT keyboard adapter in my 5150 I would like to expand the 256kB onboard memory to 640kB with an expansion card.

Is there something modern available? eBay has a few older cards but I am hesitant to try these after my experience with the Chronograph RAMPORT that blew up my power supply.

Thanks!

I switched to the modern MicroRAM from Monotech after my old LAVA memory board died. Their newest version can piggyback to their XT-IDE Deluxe if you want CF Card/IDE support with both taking up only one slot. When I bought mine they didn't offer the piggyback memory option so I soldered in a ribbon connecting them as I didn't have any extra slots.
 
Back
Top