VOGONS


First post, by Jed118

User metadata
Rank Oldbie
Rank
Oldbie

So I generally ignore youtube comments, but one response to a post I made got me furious.

When I was a kid, my first computer was a Deskpro 386/20e with a 42Mb *ugh* Conner drive and 640K of RAM. Actually, DOS and other diags only reported 639k. I'm 100% sure (no, I can bet my life, all my savings and project cars and each x86 computer that I have now) that the RAM count stopped at 640k.

I tried to upgrade it once with SIMMS but there weren't any. Only proprietary add in cards, which were WAY too expensive for me. Naturally, I had DOS 5 and Windows 3.1 (I'm 1 million percent sure it was 3.1, and not 3.0 - I didn't know what 3.0 was until we went through my friend's dad's stack of disks and I got my hands on 3.0 via 6 DD disks drilled out and reformatted to HD at the start of Grade 8, so two full years after I got the 386 with 3.1 on it - Those disks still work today BTW)

So, I'm being told that with 100% certainty that Windows 3.1 needs AT LEAST 1 MB RAM. I'm not near my software titles or official books as I am on vacation, but could someone confirm that it is possible (not that it is advisable) to run 3.1 on 640K? I know it would not run in Enhanced mode (that I discovered much later on an NCR 386 with 4Mb RAM) but Standard will run.

I would totally test this on my curent 386SX by disabling extended memory and running 3.1, but it is nowhere near me and will not be for a week.

Or else my childhood was a complete lie and my head implodes. Am I insane?

Youtube channel- The Kombinator
What's for sale? my eBay!

Reply 1 of 27, by RobertJ

User metadata
Rank Newbie
Rank
Newbie

I don't ever remember seeing a single 386 with just 640k of RAM. I don't even remember seeing a 286 with less than 1 meg. I do remember BIOS memory tests stopping at 640k RAM however and testing the extended memory separately. Could that be what you're remembering?

At any rate, Windows 3.1 system requirements:

Here is a list of Windows 3.1 system requirements:
100% IBM compatible computer.
80386 or higher processor aka a “386” system.
2MB or better RAM.
8MB Hard disk drive space.
3.5 inch or 5.25 inch floppy disc drive.
VGA video.
Keyboard and Mouse.
DOS 3.1 or higher.

8-bit Collection: 4 64Cs, 6 1541-IIs, 1 C128, 2 1571s, 1 C128DCR
Vintage DOS: Dell Optiplex G1, ATI Rage IIC, Sound Blaster CT4520, Thrustmaster FCS Mark II, Gravis PC GamePad
Monitor: Dell 20" 2007FPb

Reply 2 of 27, by konc

User metadata
Rank l33t
Rank
l33t

@RobertJ: It's not wise to copy-paste the first google result and present it as a fact.

In Windows 3.1 MS dropped real mode, so the minimum you could do is protected. Officially protected requires 1MB. Now I don't want to question your memory, nor will I say that windows never run on this machine. Maybe while officially requiring 1MB, they could just start. What I wanted to say is that because 1) Officially the minimum is 1MB and 2) I've never seen a 386 with <1MB RAM, if I had to bet on one thing, I'd still put my money on you remembering something wrongly.
I hope someone has a well documented answer though, better than my theories. But anyway, just because you sound soooo certain about it, you've made me want to try this!

Reply 3 of 27, by keenmaster486

User metadata
Rank l33t
Rank
l33t

If I'm right, there exists no AT-compatible machine with less than 1 MB of RAM. They all had 640K + HMA, which was 1MB in the end, some of the HMA reserved for video and system stuff - right? Unless I am also going insane.

World's foremost 486 enjoyer.

Reply 4 of 27, by Scali

User metadata
Rank l33t
Rank
l33t
keenmaster486 wrote:

If I'm right, there exists no AT-compatible machine with less than 1 MB of RAM. They all had 640K + HMA, which was 1MB in the end, some of the HMA reserved for video and system stuff - right? Unless I am also going insane.

The original AT came with 256k or 512k. In fact, the motherboard couldn't even take more than 512k, so even if you just wanted 640k (the standardized maximum on XTs) you had to use an ISA card.
So there certainly are AT-compatible machines out there with less than 1 MB of RAM, since the original AT was one of them.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 5 of 27, by Matth79

User metadata
Rank Oldbie
Rank
Oldbie

If you have 1MB of modules, then the answer is to go into BIOS and turn the remaining 384k over from shadow to high - a lot of BIOSes allow that with 1MB only, and then that's enough to get into standard mode - that's the lowest I ever ran 3.1 on and just for testing

Reply 6 of 27, by Jed118

User metadata
Rank Oldbie
Rank
Oldbie

There were no modules. There was no BIOS. This was a mighty DeskPro!! If it had a meg of RAM, it shared most of the 384K with the integrated video board, but I seem to recall some kind of memory chips near the video display port.

On a side note, I have(had? technically I still have it) a 286/16 with 1 Mb RAM on it, and I did remove half the 44256k chips on it to put onto a video card, it booted up 512k and reported that as the maximum RAM (and ONLY RAM) on board. This 286 is from 1990, whereas The 386 SX 16 (clone that I own now) I have is from 1988. With a super complicated BIOS, at one time I mis-configured it and it did boot up with 512K RAM. I did not have Windows on the drive but as soon as I get the chance, I will try to re-create this condition.

Might I add that I did come across a similar DeskPro when I was working in a computer store and this one counted all the way up to 4096k so I ran MSD and it did report XMS memory. I remember opening it up and behold, a memory expansion card was fitted into an off-the-beaten-ISA path expansion slot - I remember looking at that and thinking that such a small thing cost so much money and would have made me very happy a short 4 years ago...

Youtube channel- The Kombinator
What's for sale? my eBay!

Reply 7 of 27, by Jo22

User metadata
Rank l33t++
Rank
l33t++

I did a few tests with PCem v13.1 with a generic 386SX setting.

Windows 3.1 refused to run with only 640KiB of RAM,
since Himem.sys was unable to load.

With 640KiB of base memory and 128KiB of extended memory,
both Himem.sys and Windows 3.1 loaded.

(Machine setting was 1152KiB, but BIOS reported 640KiB+128KiB only.
No UMBs were reported by MEM).

In theory, it could, perhaps, be possible to run it with even less, not sure.
Maybe 640KiB and 64KiB of extended memory (to enable A20 and access High Memory Area, HMA).

The question is, however, if that makes any sense. Windows is desperate for contiguous memory,
unless EMS is used, which only Win 3.0 in Real-Mode can use.

Or since I own no Deskpro, maybe it could have been possible that the computer in question
simply didn't count extended memory ? Some ATs had a related CMOS option, "Above 1MB Memoy Test".

I'm sorry, that's all I can say so far.

While I used Window 3.1 for many years, about all my PCs had 4MiB at least.
Including my very first 286 I got in the 90s.

As far as real hardware is concerned, my oldest AT compatible has 1MiB of RAM installed.
That's DIP memory, which I can't add/remove so easily. It can be configured as either 640KiB+384KiB
or 512KiB+512KiB. Windows 3.1 runs on that, too : http://youtu.be/zc2fVXozxwU

Attachments

  • pcem_no_himem.jpg
    Filename
    pcem_no_himem.jpg
    File size
    6.38 KiB
    Views
    3845 views
    File license
    Fair use/fair dealing exception
  • pcem_boot.jpg
    Filename
    pcem_boot.jpg
    File size
    28.68 KiB
    Views
    3845 views
    File license
    Fair use/fair dealing exception
  • pcem_w31.jpg
    Filename
    pcem_w31.jpg
    File size
    40.93 KiB
    Views
    3845 views
    File license
    Fair use/fair dealing exception

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 8 of 27, by Scali

User metadata
Rank l33t
Rank
l33t
Jo22 wrote:

The question is, however, if that makes any sense. Windows is desperate for contiguous memory,
unless EMS is used, which only Win 3.0 in Real-Mode can use.

Windows 3.0 has lower memory requirements anyway.
I ran 3.0 just fine on my Commodore PC10-III with 640k back in the day.
I wonder if 3.0 can run with less than that 😀

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 9 of 27, by idspispopd

User metadata
Rank Oldbie
Rank
Oldbie

winhistory.de has some crazy experiments with different Windows versions.
http://winhistory.de/more/386/winq.htm shows Windows 3.1 in Standard mode with 1024kB and Windows 3.0 in Real mode with 640kB.

The Deskpro 386/20e has 4MB installed per default, see
http://ps-2.kev009.com/ohlandl/PS2_MOST/ACROR … PAQ/2005024.PDF
This document only mentions 1MB and 4MB modules. I sincerely doubt that you can configure the machine with less than 1MB even if you wanted to.

Reply 10 of 27, by chinny22

User metadata
Rank l33t++
Rank
l33t++

If I had to guess, I would bet your memory remembers the 640KB memory test at post, but not any additional ram
Quick google seems to suggest 4MB was pretty standard for a Deskpro 386/20e

My memory did something similar I remembered my 486 originally came with MS-Dos 6.21 which was replaced by 6.22 when I deleted files I shouldn't have.
Years later I got the original install disks to find out it was PC-DOS 6.21 not MS

but maybe it really is as you remembered, I'm no Win3x/386 expert to say your definitely wrong

Reply 11 of 27, by Jo22

User metadata
Rank l33t++
Rank
l33t++
Scali wrote:

Windows 3.0 has lower memory requirements anyway.
I ran 3.0 just fine on my Commodore PC10-III with 640k back in the day.
I wonder if 3.0 can run with less than that 😀

Good news, it seems to run with about 425KiB of free RAM, so 512KiB and DOS 3.x should have worked. 😀
(DOSBox UMB/EMS*/XMS false, 3x loadfix, nc small;*W3 can't use it anyway. Needs large EMS model.)

w300a_425kb.png
Filename
w300a_425kb.png
File size
5.94 KiB
Views
3760 views
File comment
Windows 3.00a
File license
Fair use/fair dealing exception

I did another test in PCem with 3.1, too. In order to waste some more RAM I ran two normal instances of Norton Commander
and got 364KB of conventional memory. Free UMBs/XMS memory was not available:

I loaded Himem as himem.sys /int15=64, which in theory should have reduced XMS by 64KiB of RAM, too.
XMS was effectivly reduced to the HMA only (64KiB-16bytes, used by DOS kernal because of DOS=HIGH).

UMA was listed as Adapter RAM/ROM space of 257KiB size, but was not available as UMBs.
Perhaps it was reserved as shadow memory. MEM /C /P reported no usage of UMBs.

With this setting, Windows 3.1 started up and reported 38KiB free.
Needless to say there was no memory left to run any application. 😀

"Insufficient memory to run this application.
Quit one or more Windows applications and then try again."

Attachments

  • pcem_nc_364.png
    Filename
    pcem_nc_364.png
    File size
    50.45 KiB
    Views
    3760 views
    File comment
    Got 364KB of conventional memory
    File license
    Fair use/fair dealing exception
  • pcem_win31_364.png
    Filename
    pcem_win31_364.png
    File size
    17.44 KiB
    Views
    3760 views
    File comment
    Windows 3.1 starts up and reports 38KiB free
    File license
    Fair use/fair dealing exception

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 12 of 27, by derSammler

User metadata
Rank l33t
Rank
l33t

Lots of stuff written here, but the answer is rather simple: Windows 3.1 requires himem.sys to be loaded. If you can't load himem.sys because you don't have XMS memory, you can't load Windows 3.1 either. That's where the requirement for 1 MB RAM comes from. It really doesn't need that amount of memory, but after 640 KB, that's the next bigger memory configuration (at least common one) with XMS memory so you can use himem.sys.

Reply 13 of 27, by Jed118

User metadata
Rank Oldbie
Rank
Oldbie

Now that you've all jogged my memory (as it were) a little, I can say that HIMEM.SYS did some things on the computer but I recall some error message as well. Something about HMA (?) Perhaps it was my ineptitude at deciphering error messages (at 11 years of age) or the corrosive effects of time on human recollections over a 25 year span, but I do recall the computer stopping at 640K count. I've owned (and still do) several Compaq computers that counted up to 1024k, 2048, and higher (currently a LTE 4/25 with 12Mb RAM)

I will have to re-configure my 386SX at home with 4Mb down to 640K (or lower?) and try this out for myself. For reference, it was almost the same as this:

DSCN5752.JPG

Except mine was actually a 386, not like the 486 here.

I appreciate the archaeological dig that this post has created: I will attempt to back up my findings on real hardware. I thank you all for your testing and input so far!

Youtube channel- The Kombinator
What's for sale? my eBay!

Reply 14 of 27, by Jed118

User metadata
Rank Oldbie
Rank
Oldbie

So, I've made a pretty comprehensive video of me trying to run it on a 386SX with just 640KB of RAM (editing now, should be up over the weekend) but the overall answer is: NO

It seems that I didn't remember correctly, but after some meditation and HIMEM.SYS errors I was getting on the present-day computer, it jogged my memory and I seem to more clearly remember that, yes, the Compaq did have 1024K of RAM.

I'll post up the results on youtube as soon as I find time to edit them.

Youtube channel- The Kombinator
What's for sale? my eBay!

Reply 15 of 27, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Thanks, for the feedback, Jedi118. I'm looking forward to the video! 😀
Speaking of memories, I think I can speak for all of us when I say that we all went through this, too.

In case of DOS memory managment and DOS for itself, things are often not like they seem.
In the past, both DOS and Windows were released through different channels, modified by OEMs, etc.

To give an example, Windows 3.0 got patched to work on PC/XT systems with a 386 upgrade.
That board was called the "Inboard 386" and didn't really change the nature of the host.

All limitations, like only one DMA and IRQ controller remained. If rumors were true,
some users even managed to grab some of the patched system files and transplanted them into Windows 3.1.

-

Memory Managment is another beast. Extended Memory is not quite the same as XMS memory.
As derSammler pointed out, all Windows 3.1 needs is Himem.sys, an XMS manager.

The difference between Extended Memory and XMS is not easily described in a few words.
In essence, Extended Memory is the memory that begins above 1024KiB.

Strictly speaking, the High Memory Area (HMA), which DOS can load a part of its own kernal into,
is also Extended Memory already.

Extended Memory (but not XMS) can be accessed by the PC/AT-BIOS.
It provides a service routine, interrupt 15 hex, function 87 hex (link) that's accessible in real-mode.
Early programs from the 1980s used that function to access more, "extended" memory on a PC/AT system.
That's why Himem.sys has a parameter (/INT15=) to specifiy the amount of memory to be reserved.

To make things even more complicated, XMS memory also *works* on systems
based on the 808x processors, unlike Extended Memory.

Reason is, that a direct access to Extended Memory requires protected-mode
(which the PC/AT-BIOS also takes care of when providing its own INT15 interface).
But XMS, in contrast, provides memory rather indirectly.

The interfaces can -in theory- provide memory that is not physically part of the system.
XMS, for example, is provided in such a fashion in the PCE emulator.

This is comparable to Expanded Memory (EMS). The biggest difference is, though,
that EMS re-maps memory and uses pointers/pages (bankswitching-method from the CP/M age).
XMS doesn't remap memory, it copies memory blockwise to and from its source (often Extended Memory).

What they have in common is, that they both rely on a memory managersoftware.
That's why they can both be emulated (EMM286 is a good example).
The difficulty of XMS emulation for one lies in its use of the 286's 24-Bit addressing,
and emulation of the A20 specific stuff.

-

Okay, so why am I telling this ?
Well, what I wrote was meant to demonstrate that things sometimes are more complex than they seem at first glance.
In your case, it could have been possible (though unlikely) that your Compaq's had an odd memory configuration.

If the memory was provided by chipset or a dedicated memory board, it could have been possible that your
machine still had Extended Memory, even though it lacked, well, Extended Memory. Sounds odd, I know. 😉

But things like this happened in the past already.
As I wrote in an older thread, there was an Extended Memory emulator (not XMS).
It replaced the INT15 handler of the PC/AT-BIOS I described above.

In theory, this would have allowed Himem.sys to provide XMS and thus Windows to load,
even though neither your mainboard, nor its PC/AT-BIOS had controll over/or access to Extended Memory.

Anyway, as derSammler said, all Windows 3.1 really wants is Himem.sys.
If it or another compatible XMS manager loads, -for whatever reason-, Windows 3.1 will, too.

Edit: Typos fixed, picture added.

Attachments

  • pce_xms.gif
    Filename
    pce_xms.gif
    File size
    17.4 KiB
    Views
    3610 views
    File comment
    PCE, XMS, UMA, 8088
    File license
    Fair use/fair dealing exception

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 16 of 27, by Scali

User metadata
Rank l33t
Rank
l33t
Jo22 wrote:

The difference between Extended Memory and XMS is not easily described in a few words.

Perhaps I can help.
Extended memory is the name of the physical memory above the 1 MB boundary (so memory that is only available on CPUs with a larger address space than the 20-bit range of the original 8086/8088).
XMS is a standard, an API to interface with extended memory. HIMEM.SYS is the most common implementation of this API. It is basically a driver that provides some basic functions to applications so they can use this memory. Regular 16-bit applications can normally only use the standard 20-bit address range of the 8086/8088, also known as 'real mode'. HIMEM.SYS allows real mode applications to use extended memory.

Jo22 wrote:

Strictly speaking, the High Memory Area (HMA), which DOS can load a part of its own kernal into,
is also Extended Memory already.

Yes, HMA is the result of a 'quirk' of the x86 architecture:
On a real 8086/8088 CPU, you only have 20 address bits. This means that memory addresses wrap around at 1 MB.
In real-mode, an address is constructed of a 16-bit segment and a 16-bit offset value like this:
physical address = (segment*16) + offset

This means that the highest possible segment is 65535, so the highest possible address is:
(65535*16) + 65535 = 1114095
But 1 MB is only 1024*1024 = 1048576 bytes, which is the maximum that a 20-bit address range can give.
So there are 1114095-1048575 = 65520 bytes that you can address with the segment/offset addresses, that do not 'fit' in 20-bit addresses.
A 286 or higher has more than 20 bits, and they allow you to disable this 'wraparound', so this block of 65520 bytes (almost 64k) is accessible.
This is what is meant by the 'A20 line'.
The block is known as the 'High memory area', and can be used without any memory managers, because you can just use standard segment/offset addresses to reach it (when the A20 line is enabled, so there is no wraparound).

Jo22 wrote:

To make things even more complicated, XMS memory also *works* on systems
based on the 808x processors, unlike Extended Memory.

Yes, it is possible to implement the XMS API on any system, since the API is compatible with real mode.
In practice I don't know of any 808x systems that actually provided some kind of extended memory and an XMS driver however.
On 808x systems, EMS was more or less the 'standard' for extra memory. In theory you could write an XMS driver for EMS memory I suppose (EMS is an older technology, XMS didn't exist until 286es were commonplace, since XMS was specifically designed for the on-board extended memory on 286 and newer systems).

Jo22 wrote:

This is comparable to Expanded Memory (EMS). The biggest difference is, though,
that EMS re-maps memory and uses pointers/pages (bankswitching-method from the CP/M age).

Yes, EMS is a way to get around the 20-bit address range limitation of the 808x.
So the memory on an EMS expansion board was not mapped to any physical addresses. Instead you could map a 'window' or 'bank' of the memory of up to 64k into the 20-bit address range.

Jo22 wrote:

XMS doesn't remap memory, it copies memory blockwise to and from its source (often Extended Memory).

Yes, this is why early software even on 286/386 systems still preferred EMS memory: it was more efficient in certain cases. If you just wanted a 64k buffer for DMA for example, then EMS worked very well, while this was not possible with XMS.
However, that is assuming real EMS (which certain 286/386 chipsets supported natively). When using EMM386, you use the v86 mode of the 386 to emulate EMS hardware, which has a lot of overhead. Real EMS is much faster than EMM386.
However, because real EMS hardware was not very popular on 286/386 systems, XMS became the preferred way of using memory beyond 640k in real mode.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 17 of 27, by timb.us

User metadata
Rank Newbie
Rank
Newbie
Jed118 wrote:

So, I've made a pretty comprehensive video of me trying to run it on a 386SX with just 640KB of RAM (editing now, should be up over the weekend) but the overall answer is: NO

It seems that I didn't remember correctly, but after some meditation and HIMEM.SYS errors I was getting on the present-day computer, it jogged my memory and I seem to more clearly remember that, yes, the Compaq did have 1024K of RAM.

I'll post up the results on youtube as soon as I find time to edit them.

FWIW my Compaq 286 has 1MB of RAM and only counts to 640K during POST. I have a 386SX with an AMI BIOS that does this as well. It wasn’t uncommon (since the 384K address range between 640K and 1024K is reserved) for certain BIOS to do this.

Any sufficiently advanced technology is indistinguishable from magic. (E.g., Cheez Whiz, RF, Hot Dogs)

Reply 18 of 27, by CrossBow777

User metadata
Rank Member
Rank
Member

I owned a Memorex/Telex 7045 - 286-16mhz system in the late 80s early 90s that came with windows 3.1 disks and it would install, and it did run. But only in what was called Real mode and not protected mode. I later used to put windows 3.11 on it as well from time to time.

So the requirement for a 386 for windows 3.1 is bogus. It clearly installed and ran with my sound blaster active and later my 2x CD rom I installed as well. Or at least with windows 3.11 I had the CD-rom working. I remember Kings Quest 7 being the first main reason for me to even finally keep windows 95 installed alongside my DOS 6.22 on my first 486 I finally bought in '94.

g883j7-2.png
Midi Modules: MT-32 (OLD), MT-200, MT-300, MT-90S, MT-90U, SD-20

Reply 19 of 27, by Jed118

User metadata
Rank Oldbie
Rank
Oldbie

However, Intel, consistent with their intentions for the processor's usage, provided an easy way to switch into protected mode on the 80286 but no easy way to switch back to real mode. Before the 386 the only way to switch from protected mode back to real mode was to reset the processor; after a reset it always starts up in real mode to be compatible with earlier x86 CPUs back to the 8086. Resetting the processor does not clear the system's RAM, so this, while awkward and inefficient, is actually feasible. From protected mode, the processor's state is saved in memory, then the processor is reset, restarts in real mode, and executes some real mode code to restore the saved state from memory. It can then run other real mode code until the program is ready to switch back to protected mode. The switch to real mode is costly in terms of time, but this technique allows protected mode programs to use services such as BIOS, which runs entirely in real mode (having been designed originally for the 8088-based IBM Personal Computer model (machine type) 5150).

This looks like some debug level *ish.

I tried win /r and it would not take. If there's a version of Windows 3.1 out there that will run real mode, goddamnit I'll redo the experiment, but to be completely honest, I'm going with the notion that my Compaq 386/20e actually had 1Mb RAM on it and I simply forgot it. More and more things are pointing to that, internally and externally.

Deep down I still seem to recall that of the 30+ systems I resuscitated in Grade 7 and 8 (1994-1995), I had installed Windows 3.1 on at least a single 286. That was so long ago and I did not have a long connection with those systems, so I cannot be sure. Aside from dismantling them all and organizing the cards/mobos in order of XT/AT and up, and then inter-testing the parts to get working systems, hooking them up to booting drives and working monitors, putting them into cases that kind of matched the era, and then redistributing them to classes, I can't be sure. What I wouldn't give to observe one day of my work back then...

Youtube channel- The Kombinator
What's for sale? my eBay!