4

I know this question may sound a little odd...

My Juko XT is a "1MB" XT machine. And I actually saw that number in its POST process. However, 384KB of its physical memory are not mapped to upper memory area. I can use the 384KB as a RAM drive only.

The 384KB RAM drive is too small and useless. If it could be changed to UMB, it would be much more useful. Is there a utilty that supports XT class machines and creates UMBs by mapping part of HDD to upper memory?

3
  • 1
    IIRC himem.sys driver (add it to the config.sys if we are talking about MS-DOS) was for exactly that but do not know if it works on XT ... if not there might be alternatives also the 384KB has nothing to do with HDD ... its just that ramdrive can use it the high memory can be used to store drivers devicehigh from config.sys and also load TSR's and normal programs that supports it using lh command see the linked answer for example of both ...
    – Spektre
    Commented Jan 8, 2023 at 8:08
  • 1
    Please, no arguing in questions, especially not putting up new ones and replying to answers. This confuses future readers even more. Use comments and/or open new questions (which then should be to the point.
    – Raffzahn
    Commented Jan 8, 2023 at 16:19
  • @Raffzahn Sorry, I modified my question to its original form.
    – Sung
    Commented Jan 8, 2023 at 16:52

1 Answer 1

15

Probably not much else you can do with that RAM.

You say the RAM “is” a RAM drive. It’s far more likely that there is extra RAM on the motherboard and that there is a RAM Drive driver installed that uses that RAM. This answer somewhat follows that assumption.

An XT-class machine uses an 8088 or 8086 processor which can only access exactly(*1) 1 MB worth of addresses. Those addresses can be assigned to either RAM or ROM at the computer manufacturer’s whim(*2).

The convention established by IBM on the original IBM PC was that the first 640KB of addresses were reserved for general use RAM (but might be partially vacant), and the remaining 384KB were reserved for a combination of ROM (BIOS and expansion cards) and video RAM, in a bit of a patchwork.

Some “DOS” machines (meaning, not necessarily intended to be 100% IBM PC compatible) have creative ways to map extra RAM chips somewhere in the upper 384KB address area. But very little of that was “standard”. Your best hope is that some machines could stretch the main RAM area above 640KB by maybe 64KB or 128KB by having ROM and Video RAM packed more tightly towards the top, and that RAM would usually be directly useable by programs. You will have to see if your computer’s BIOS configuration or utilities allow you to configure some of the RAM that way.

Other than that, for any meaningful amount of extra RAM, the PC would have to use a bank swapping scheme using a small (16KB? 32KB? 64KB?) address window somewhere in the upper 384KB addresses, and talk to the extra RAM in pieces. Such RAM could not be used directly by programs unless they where “in the secret” (knew about the banking scheme and were willing to work with it).

The only standard bank swapping scheme was the LIM/EMS specification. If your extra RAM has an EMS driver, certain programs (most notably Lotus 1-2-3) could talk to that driver to use the extra RAM. A somewhat proprietary PC architecture might come with specialty software (some kind of “office suite” for example) that was “in the secret” on the proprietary scheme and could use the extra RAM as well.

The point is that (other than LIM/EMS) there was no standard way to add RAM beyond 640KB. Programs that wanted to use extra RAM had to know about the proprietary scheme.

The following veers more into my personal opinion; some might disagree: I think portraying to have more than 640KB of RAM on an XT-class machine was for all intents and purposes a marketing gimmick. RAM prices had come down to the point were it was practical to add the chips to the motherboard, but there was no realistic way to make the memory do something really useful. Even EMS was only supported by a few expensive programs like Lotus 1-2-3 or AutoCAD. Manufacturers had to find a purpose for the extra RAM, and RAM disks were a solution, mostly novelties with limited usefulness that gave the RAM a purpose - any purpose.

In summary: extra RAM beyond 640KB on an XT-class machine had very limited usefulness. It could only be used for specialty purposes like proprietary RAM Disks, by other proprietary software, or by certain sophisticated programs like Lotus 1-2-3 and then only if the computer came with an EMS driver.

Finally, the UMB scheme in MSDOS works by using the features of 386-class CPUs (in coordination with EMM386.EXE) to map extended memory (physically wired to addresses above the 1MB mark) to holes in the patchwork of addresses in the 384KB block. There is no such thing as “memory physically wired to above the 1MB mark” or “386-features” on an XT-class machine, so you can’t use DOS’s UMB support. Unless your PC comes with proprietary software that does something similar by bank switching, there is nothing else you can do.

(*1) An AT-class machine (80286 and later) could (somewhat by accident) access an additional 64kb addresses (minus 16 bytes) above the 1MB mark without too many hoops; look up “A20 line” and “HMA”. Not so for the 8086/8088.

(*2) The bottom addresses almost certainly need to be RAM because that’s where the Interrupt Vector Table lives, although you could imagine some kind of limited embedded system where the vectors are hardcoded in ROM. The last few bytes must be ROM (at least initially) because that’s where the CPU starts executing instructions when it’s reset (but could conceivably be remapped dynamically to RAM after boot). In principle, all the other address ranges could be assigned arbitrarily by the manufacturer, but the basic IBM PC scheme was quickly adopted as a de facto standard for personal computers.

1
  • I believe there were some chipsets provided EMS natively, and a utility such as QRAM could then turn that into UMBs.
    – Neil
    Commented Jan 9, 2023 at 10:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .