PDA

View Full Version : 5150 Memory addon



bettablue
February 12th, 2014, 11:57 AM
Is there a way to add more than 640 KB of RAM into a 5150?

I want to max out the usable memory of my 5150 to a full 1 Meg of RAM. I have seen this in the specs somewhere, but I don't remember where I saw it. I know it has to do with swapping some memory chips, but again, I don't know which ones. I have 640KB of RAM in my current configuration; 256 KB on the mother board, and 284 KB on an AST Six Pack Plus card. In addition to that, I have a generic looking board/upgrade with socketed chips with a total of 284KB of RAM. Can I take some of the chips from it, and replace some of the chips of lower values on the AST card?

I don't care to separate the upper memory, or anything like that. All I want is to max out the systems RAM to a full 1 Meg. That will allow me to load drivers for my backpack drive, and Norton Commander, among other things, without cutting into the 640 Kb the system would normally otherwise use for loading programs.

vwestlife
February 12th, 2014, 12:50 PM
Not unless you change the BIOS, because it reads the motherboard DIP switches to tell it what the RAM size is, and the DIP switches only go up to 640 KB. (Early model 5150s only went up to 544 KB because of a BIOS limitation.) There are three unused DIP switches left in the bank, so if you could tell it to read one of those extra switches, you could allow it to recognize a greater amount of RAM.

So if you modified the BIOS, you could use up to 736 KB with CGA, or up to 704 KB with MDA.

commodorejohn
February 12th, 2014, 12:55 PM
I'm curious, as someone with little knowledge of the PC's hardware implementation: isn't the RAM there (i.e. mapped into otherwise unfilled address space) whether the BIOS recognizes it or not? Seems like if that's the case, it'd be easier to trick DOS into recognizing it, or load device drivers directly to those addresses - I think DOS 6's MemMaker even had a facility to do exactly that.

Stone
February 12th, 2014, 12:56 PM
Oh, it's possible, but you're not going to like or want to to the mod:

http://www.vintage-computer.com/vcforum/showthread.php?15282-Upgrading-an-IBM-XT-to-640k&p=270651#post270651

SpidersWeb
February 12th, 2014, 01:30 PM
Depends on what type of memory you want.

Conventional
The 8088 can only address 1024KB - IBM cut it up 640KB RAM, 384KB reserved. Because that area is reserved, no matter how you add RAM above 640KB the BIOS will not even look for it. Right at the start of that reserved area is usually your video card (mono) or shortly after (704K) CGA. The Super XT BIOS at phatcode can be compiled to look for extra conventional, or I guess a driver could be written? But it does mean certain graphics cards can't be used. You'd still need to add extra RAM above 640KB but not digging in to video card space (same as UMB)

UMB
To make use of things like "DOS=UMB" (only available in later versions of DOS - 6 has it, can't remember if 5 does) which can result in a bit of bonus conventional memory that's actually usable after loading DOS, you can plop memory at addresses that aren't being used by devices. If I remember correctly there is an 8088 compatible UMB.COM around.

Adding RAM in weird places could become a lot easier with the Lo-tech 1Mb XT card that's being worked on - you just select which memory addresses you want RAM at.

EMS
From the user point of view, it's kind of like extended memory for 8088's. Quite a few programs like Windows and Lotus 1-2-3 etc can make good use of EMS. Unlike other methods, you can add megabytes of RAM. I have a pair of XT cards that can add up to 3Mb each. These require a LIM EMS driver be loaded at startup. For average games and messing about you probably wont have much use for this though - could be handy if you used Windows a bit.

pearce_jj
February 12th, 2014, 01:38 PM
The complexity of that mod is one of the reasons I designed this board (http://www.lo-tech.co.uk/wiki/Lo-tech_1MB_RAM_Board). The idea is that the 5150 could be stripped right back to 16KB on system board (or maybe 0KB; I don't know if that would work) and memory to 640KB (with appropriate BIOS) and UMB all provided from one, reliable board.

Then add my EMS board (http://www.lo-tech.co.uk/wiki/Lo-tech_2MB_EMS_Board) (if it works) and my XT-CFv3 (http://www.lo-tech.co.uk/wiki/XT-CFv3) (if I ever rework it to 3v3 logic) and you'd have full conventional RAM, 2MB EMS and 8GB 500KB/s fixed disk in a 5150 :)

Stone
February 12th, 2014, 02:31 PM
...and you'd have full conventional RAM, 2MB EMS and 8GB 500KB/s fixed disk in a 5150 :)Exactly! :-)

Now, why would you want that?

sergey
February 12th, 2014, 04:27 PM
If I am not mistaken IBM PC and IBM XT BIOS determines memory size using DIP switches settings, and not by scanning memory. It is technically possible to have the conventional memory go all the way to 704 KiB (if not using EGA/VGA video), but apparently it will require something to modify the memory size in 0400:0013 (and do that before loading DOS).

commodorejohn
February 12th, 2014, 05:27 PM
You could hack the boot sector to write the appropriate value, there's a handful of bytes' worth of empty space in there usually...

SpidersWeb
February 12th, 2014, 05:36 PM
If I am not mistaken IBM PC and IBM XT BIOS determines memory size using DIP switches settings, and not by scanning memory. It is technically possible to have the conventional memory go all the way to 704 KiB (if not using EGA/VGA video), but apparently it will require something to modify the memory size in 0400:0013 (and do that before loading DOS).

PC 5150 has memory switches, XT 5160 scans for memory.
Boot sector is a good idea or even an option ROM. Fiddly bit (from a user perspective) would be installing the extra 64Kb. but pearce's card should make that pretty easy.

pearce_jj
February 13th, 2014, 01:27 AM
Options ROM should be pretty straightforward if it's just a case of updating a known memory location.

bettablue
February 13th, 2014, 12:46 PM
These sound fantastic! Although I don't know how that would really work, I can see some definite advantages to adding up to 2 or maybe 3 MB worth of usable RAM. The possibilities are numerous and extensive, like adding more drivers for additional hardware without cutting into the memory required to run certain programs.

Are your boards ready for purchase? And, more importantly, would they work in MY particular system, with all of the 5150's expansion slots used and the only open slots left are in my 5161 expansion unit? I can see a slow down, but with these old systems, speed isn't really much of a factor.



The complexity of that mod is one of the reasons I designed this board (http://www.lo-tech.co.uk/wiki/Lo-tech_1MB_RAM_Board). The idea is that the 5150 could be stripped right back to 16KB on system board (or maybe 0KB; I don't know if that would work) and memory to 640KB (with appropriate BIOS) and UMB all provided from one, reliable board.

Then add my EMS board (http://www.lo-tech.co.uk/wiki/Lo-tech_2MB_EMS_Board) (if it works) and my XT-CFv3 (http://www.lo-tech.co.uk/wiki/XT-CFv3) (if I ever rework it to 3v3 logic) and you'd have full conventional RAM, 2MB EMS and 8GB 500KB/s fixed disk in a 5150 :)

commodorejohn
February 13th, 2014, 01:32 PM
These sound fantastic! Although I don't know how that would really work, I can see some definite advantages to adding up to 2 or maybe 3 MB worth of usable RAM. The possibilities are numerous and extensive, like adding more drivers for additional hardware without cutting into the memory required to run certain programs.
I wouldn't expect too much in that department - drivers pretty much by definition need to be actually resident in CPU address space; loading them high will at least get them out of conventional memory, but EMS isn't gonna be any help there since it relies on switching pages of a larger memory area into and out of the 1MB CPU address space. It can help give more memory to applications, but they have to be EMS-aware to begin with.

Still, every little bit helps...

Trixter
February 13th, 2014, 02:01 PM
I've written before (can't find the post at the moment) that people should not expect EMS to speed up much of anything on a 4.77MHz 8088 system. Instead, EMS on such a system serves to enable things that were previously impossible, such as very large spreadsheets in Lotus 1-2-3, or debugging larger programs in Turbo Pascal, or creating a very large print spooling buffer so that printing will return control to the system sooner.

If you have an extremely slow MFM hard drive, a disk cache in EMS can indeed speed things up a little, but the performance delta is not going to be mindblowing. On systems with an extremely fast disk controller, such as James' XT-CFv3, an EMS disk cache actually slows down disk accesses, as the (DMA) controller is faster at putting data in memory than the CPU can copy it from the EMS page frame.