• Please review our updated Terms and Rules here

Windows 3.1 usage of EMS

nymetropolitans

Experienced Member
Joined
Apr 21, 2008
Messages
84
Location
LI NY
Possibly a dumb question, but I personally skipped right from the 286 Standard Mode era into Windows NT-based P3/P4 computing, so forgive my ignorance. Never got to play much with Win3x or Win9x and am now making up for time I missed...

Anyway, I'm about to pick up a Tandy 1000TL/2 and a 486 upgrade card. This is one of those "286XT" machines and only has space for 640k conventional and another 128k Extended Memory on board. The only option for further memory upgrades is hardware EMS. In Windows 3.1 386 Enhanced Mode, is EMS available to all applications (as XMS is) or just device drivers and those programs that specifically load themselves into it - as it is used in DOS? I have a pretty good grasp of how the hardware is actually implemented (mapping EMS into a 64K chunk of base memory) but the usage confuses me. From what I've read, Windows 3.0 is capable of functioning in this way though I've never seen anything that explicitly states 3.1 is as well.

I guess I'll figure it out one way or another, but I'd appreciate some advice before I drop coin on a gigantic old EMS board. Thanks!
 
I have about 3 of these so-called "286XT" motherboards (although they're not the Tandy model you have). Basically, they are 8088 motherboards with 286 CPU's. The 286 CPU can only operate in real mode. All the expansion slots are 8-bit only so no extended memory.

Also, software that needs a 286 to install and run (such as Windows 3.1) will not install, at least it would not install on any of my 286XT machines. It gave an error message of something like "Can't find A20 line!" and yes, it had the exclamation point in the error message.

You will have to run Windows 3.0 in real mode if you want to run Windows on one of these MB's.
 
I have about 3 of these so-called "286XT" motherboards (although they're not the Tandy model you have). Basically, they are 8088 motherboards with 286 CPU's. The 286 CPU can only operate in real mode. All the expansion slots are 8-bit only so no extended memory.

Also, software that needs a 286 to install and run (such as Windows 3.1) will not install, at least it would not install on any of my 286XT machines. It gave an error message of something like "Can't find A20 line!" and yes, it had the exclamation point in the error message.

You will have to run Windows 3.0 in real mode if you want to run Windows on one of these MB's.

Interesting, I ran into the same problem on a different Tandy 1000 - though with a similar 286/XT motherboard. Strangely enough, oldskool.org apparently has this same machine running Windows 3.1 without any problems.

From what I've read, the A20 line is what HIMEM.SYS uses to access the first 64k of upper memory and (I suppose) through it, all additional upper memory. Even though this is a 286 chip on an 8088 motherboard, it seems odd that they would specifically not include Standard Mode code? Wouldn't it not even really be a 286 at that point? I've got to assume that these chips do operate like normal 286s, but maybe require some different switches when loading the HIMEM.SYS driver. It doesn't make sense that they would function in a different way to begin with, but I guess it's not surprising.

There is no fundamental difference between the 1000RLX on oldskool.org, the 1000TL/2 I'm picking up later in the week or any other 286/XT hybrid. If it works on one, it should work on others - provided they do have memory above 640k. There is a 128k onboard upgrade for the TL/2, but I'm not sure if this can only be allocated for VRAM, or used as normal XMS with a different video card installed. Any other EMS would have to be an ISA expansion board...and now I'm wondering whether or not the computer would even be able to address it, nevermind whether or not Win3.1 can make use of it!

I guess I'll figure it all out when I start messing with it. Does anyone else have experience with these type of PCs?
 
I don't understand what you're saying. The RLX does use it's 286 correctly, with the exception that it doesn't have a 16-bit ISA slot. The machine at oldskool is running Win 3.1 in standard mode, the only mode that will run on a 286 with less than 2Mb of Extended memory.

Perhaps the problem you had with your RLX was that the mainboard was not fully populated with the 1Mb max of RAM? The standard was 512, with another 512 as an option for extra cost.

--T
 
Let me try and clarify even further.

For one thing, you're dealing with Tandy wierdnesses, i.e., more than one weirdness. The 286 is not implemented the same way on the TX/TL-series as it is in the RLX. The TX/TLs only use 20 address lines, but the RLX does use 24 lines on the mainboard only, not carried out to the ISA expansion slot, so the only memory it can see is the (up to) 1Mb on-board. (You could add an Expanded Memory board to the ISA slot, but that's a whole 'nother lesson).

Another problem you're running into is your understanding of the different kinds of memory. The TX/TLs do not have or use any Extended Memory, ant the extra 128Kb cannot even be used as Expanded Memory, only as a RAMdisk. For more info, see the currently ongoing discussion in this thread:

http://www.vintage-computer.com/vcforum/showthread.php?t=12251&highlight=emm386

And, yet another problem is the difference between Intel's definitions/nomenclature, and MicroSoft's. What Intel calls "286 Enhanced Mode" is not the same thing as what M$ means when it refers to "Windows Enhanced Mode", but that's another lengthy discussion that we'll get to eventually, if necessary.

--T
 
Last edited:
I definitely do not have such a good grasp of how EMS/XMS is used, just trying to figure it out. Not something I ever had to deal with when I used DOS on a daily basis. You'll have to bear with me as it's ALL new to me, I apologize!

So far, here's what I do understand...

1) "Expanded Memory" works by bank switching segments of itself into a 64K window within the Upper Memory Area (the 384K above 640K conventional memory installed) that is normally reserved for the BIOS, peripherals, etc.

2) "Extended Memory" refers to any RAM installed above the base 1MB conventional and can only be utilized by software on 286 machines and higher.

3) In Real Mode operating systems like MS-DOS, XMS is emulated as EMS - which can only be utilized by loading the OS itself (and respective device drivers) into it, as well as applications specifically written to take advantage of it. DOS cannot load normal programs into anything except conventional memory.

4) Windows 3.0 run in Real Mode can load applications into EMS - however later versions (3.1 onward) can only utilize conventional and XMS natively through either Standard or 386 Enhanced Modes. This was essentially my initial question, but a few hours on Google and I've answered it myself.

5) The 128k RAM upgrade for the 1000TL series is neither EMS nor XMS - it's just additional RAM in the Upper Memory Area that the BIOS uses for video memory using the onboard graphics adapter. There is no method of utilizing this outside of it's intended purpose (ie: as a way to provide a 64k window for a LIM EMS compatible RAM board as I had initially thought possible).

Now, I'm still very confused on some other things...and I'll get to the Tandy specific stuff in just a minute, but knowing the basics would really help.

From reading through the thread you linked, it is my understanding that the XT cannot even use EMS to load device drivers into Upper Memory as can be done with later x86 CPUs, only used as a RAM disk or with software explicitly designed to use it (Lotus 1-2-3, Windows 3.0, etc.). Why is this? Is it purely because of the 16-bit address bus and 1MB limitation of the XT/286XT architecture - or is it because of the inability of the CPU to function in anything other than Real Mode? In the case of the 286XT, is the situation that the chip does in fact have a 24-bit address bus and the ability to operate in Protected Mode - but some kind of limitation on the XT motherboard is preventing it from doing so?

If the former is the case, and the 286XT chips are different from standard 286 CPUs, would replacing it with something like the 486 chip I've also ordered eliminate this barrier? I realize in my particular case, there is no room for additional memory on the motherboard beyond 640k so it's all theoretical. I'm just curious. Finally, is there any software solution to using an EMS board as XMS in conjunction with newer processors? I seriously doubt it....but who knows. Would this even be a possibility?

As for my own past experiences with the RLX - I had no idea that the CPU was a "real" 286, I thought it was basically identical to the TL/TX models in architecture. It was an "-HD" model, so 1MB was standard from the factory. We're going back ten years (or more) here, but thinking back it might be possible that I was trying to install Windows directly on top of the ROM-based Tandy DOS (3.3?) that came with the RLX which wouldn't have loaded HIMEM.SYS at all and possibly screwed up the install. Otherwise, maybe I just got a bunk machine from Radio Shack. I dunno...having DOS in ROM saved a ton of conventional memory and I don't ever recall any DOS programs having trouble on it. Hence, I've never even thought about EMS/XMS usage until now!

For anybody else in the same boat as me, this page was very helpful.
 
I definitely do not have such a good grasp of how EMS/XMS is used, just trying to figure it out. Not something I ever had to deal with when I used DOS on a daily basis. You'll have to bear with me as it's ALL new to me, I apologize!

No need to apologize, it's not your fault that the manufacturers couldn't come together with some kinda standard naming conventions.
So far, here's what I do understand...

1) "Expanded Memory" works by bank switching segments of itself into a 64K window within the Upper Memory Area (the 384K above 640K conventional memory installed) that is normally reserved for the BIOS, peripherals, etc.

2) "Extended Memory" refers to any RAM installed above the base 1MB conventional and can only be utilized by software on 286 machines and higher.

You're good up to this point, however...

3) In Real Mode operating systems like MS-DOS, XMS is emulated as EMS - which can only be utilized by loading the OS itself (and respective device drivers) into it, as well as applications specifically written to take advantage of it. DOS cannot load normal programs into anything except conventional memory.

In Real Mode, There is no XMS, emulated or otherwise, Therefore, the OS cannot be located there. DOS can only be loaded in Conventional Memory in the absence of the HMA. If EMS is present, the EMS Manager may be loaded there, as well as some other programs, drivers, etc, but only if the EMS hardware and Manager software allow it and don't conflict with memory areas that are already reserved for other uses. In order for applications to take advantage of EMS, they must be written to do so.

4) Windows 3.0 run in Real Mode can load applications into EMS - however later versions (3.1 onward) can only utilize conventional and XMS natively through either Standard or 386 Enhanced Modes. This was essentially my initial question, but a few hours on Google and I've answered it myself.

Windows in Real Mode can load applications into EMS, and later versions can too, as well as using XMS, if it's available. Only Conventional & EMS can be used in Standard Mode, but in Enhanced Mode, All types of mem, Conventional, EMS & XMS can be used. When you install these later versions, the amount of RAM allocated for each type is defined by the user in the Setup program. Windows 3.1 (& later) has a memory manager program that allows XMS to emulate EMS (EMM386.EXE), but EMM cannot emulate XMS, you need the real thing. If you do have real EMS in your system, it can be used in the normal manner, without emulation.

5) The 128k RAM upgrade for the 1000TL series is neither EMS nor XMS - it's just additional RAM in the Upper Memory Area that the BIOS uses for video memory using the onboard graphics adapter. There is no method of utilizing this outside of it's intended purpose (ie: as a way to provide a 64k window for a LIM EMS compatible RAM board as I had initially thought possible).

True, the extra RAM in the 1000TL is neither EMS or XMS. It isn't video RAM either though. In Tandy's release of MS-DOS, there's a program that allows it to be used as a RAMdisk, nothing else. It cannot be used to locate the Page Frame foe EMS, this has to be located elsewhere. (The LIM 4.0 Manager allows the user to select the block of RAM for the Page Frame in case of conflict).

Now, I'm still very confused on some other things...and I'll get to the Tandy specific stuff in just a minute, but knowing the basics would really help.

No worries, everyone is a little confused by this point:wink:

From reading through the thread you linked, it is my understanding that the XT cannot even use EMS to load device drivers into Upper Memory as can be done with later x86 CPUs, only used as a RAM disk or with software explicitly designed to use it (Lotus 1-2-3, Windows 3.0, etc.). Why is this? Is it purely because of the 16-bit address bus and 1MB limitation of the XT/286XT architecture - or is it because of the inability of the CPU to function in anything other than Real Mode? In the case of the 286XT, is the situation that the chip does in fact have a 24-bit address bus and the ability to operate in Protected Mode - but some kind of limitation on the XT motherboard is preventing it from doing so?

Some EMM boards/managers could use the upper memory area for device drivers, some not. The RAMdisk only limitation is a Tandy thing (and a few other manufacturers). OTOH, nearly all EMS boards would allow all or part of their memory to be used as a RAMdisk.
In order to use EMS (after it's installed and set up correctly) the app still has to be written to use it.
The 8086/8 is limited to 1Mb of RAM due to having only 8-bit addressing. That's why EMM has to fool the CPU into thinking it's looking at Conventional Memory all the time (which it is, actually). The 286, OTOH, has 16-bit, external architecture, but some manufacturers (like Tandy) didn't jack-in all of the address lines, making the chip essentially a very fast 8086. (Still operating as a 286 internally, but running into an I/O bottleneck). Tandy, et.al. just wanted to make a faster machine without going to the expense of implementing a full-blown AT-compatible. (There was a niche market for such machines, not everyone needed a more expensive AT class machine at the time). There is no difference in the chips, just the way they're hooked up to the board. The 286 itself is not limited to 1Mb, only the 8086/8 is.
Of course, to add to the confusion, IBM came out with a machine they called the XT-286, which was a fully At-compatible, basically stuffed into an XT form-factor case.

If the former is the case, and the 286XT chips are different from standard 286 CPUs, would replacing it with something like the 486 chip I've also ordered eliminate this barrier? I realize in my particular case, there is no room for additional memory on the motherboard beyond 640k so it's all theoretical. I'm just curious. Finally, is there any software solution to using an EMS board as XMS in conjunction with newer processors? I seriously doubt it....but who knows. Would this even be a possibility?

I'm not sure, I'm less familiar with the 286 - 486 upgrade, but I am sure that the 486 upgrade would still be limited to the 16-bit I/O of the 286 mainboard, rather than the 32-bit of the 486. Not sure of any other quirks tho. I don't even know if it can be done at all with one of the partially-crippled 286-on-a-8-bit-board rigs like the TL/TX, etc.

As for my own past experiences with the RLX - I had no idea that the CPU was a "real" 286, I thought it was basically identical to the TL/TX models in architecture. It was an "-HD" model, so 1MB was standard from the factory. We're going back ten years (or more) here, but thinking back it might be possible that I was trying to install Windows directly on top of the ROM-based Tandy DOS (3.3?) that came with the RLX which wouldn't have loaded HIMEM.SYS at all and possibly screwed up the install. Otherwise, maybe I just got a bunk machine from Radio Shack. I dunno...having DOS in ROM saved a ton of conventional memory and I don't ever recall any DOS programs having trouble on it. Hence, I've never even thought about EMS/XMS usage until now!

The RLX is a completely different animule. It's a 286 chip on a (mostly) 286 board. The 16-bit bus is implemented on the board, just not carried out to the ISA slot. All the communications between CPU and memory, as well as other components on the mainboard are via this 16-bit bus (sort of a local bus), which speeds things up even more.
For anybody else in the same boat as me, this page was very helpful.

Hope that answers most of your questions, but I'm sure we haven't covered everything. Anything else I can help with, holla at me.

--T
 
Last edited:
I definitely do not have such a good grasp of how EMS/XMS is used, just trying to figure it out. Not something I ever had to deal with when I used DOS on a daily basis. You'll have to bear with me as it's ALL new to me, I apologize!

Don't worry. I was there "in the day" and I could never figure it out either!

In some ways I do NOT miss those days.

Good explanation Terry! After 20 years, I almost understand it now :)

Tez
 
Don't worry. I was there "in the day" and I could never figure it out either!

In some ways I do NOT miss those days.

Good explanation Terry! After 20 years, I almost understand it now :)

Tez

Hmmn, mebbe if I stick these threads, it might save a lot of typing in the future...

--T
 
Hope that answers most of your questions, but I'm sure we haven't covered everything. Anything else I can help with, holla at me.

--T

Terry, you are truly a gentleman and a scholar! I've spent hours going on days reading and trying to wrap my head around this subject and your explanation is by far the most complete and easily understandable I've come across. Bravo!

You're right, though....there's still plenty I don't understand, but I'm getting there! I've got plenty more questions but it's late and I've got work in a few hours so they'll have to wait 'til later in the day.
 
If this is repetitive from other posts, I apologize, but I will provide a short answer. Windows 3.0 in real mode can access EMS, provided related device drivers are installed in the system. Because support for real mode was removed from 3.1, it cannot manage hardware EMS. However, some hardware memory boards had the capability to address all or part of their memory as extended memory, meaning 3.1 could run in standard mode and address that memory.
 
You win the "I resurrected a really old post" award - congratulations! xD

The machine in question in this post didn't support extended memory due to the lack of 16-bit ISA, apparently, according to the thread.
 
If you can get your hands on an AST 6pack plus card with 1 meg of memory it can and will do both EMS/XMS in a PC/XT. I had one in my old IBM-PC and ran a 2 node BBS using DesqView and QEMM.
 
Back
Top