• Please review our updated Terms and Rules here

Windows 3.0 doesn't like dosdata=umb

ibmapc

Veteran Member
Joined
Apr 5, 2010
Messages
1,046
Location
Albany, OR USA
I've been running windows 3.0 on my "Hot Rodded" IBM 5155. Recently, with help from others, I've enabled UMB's and am able to load device drivers and tsr's in upper memory. When I include "dosdata=umb" in config.sys, Windows displays the error "Incorrect DOS version: DOS 3.1 or greater required." It then stops loading with the blue splash screen still up. Obviously, the DOS version is not the actual problem since I'm running PC DOS 7.0 . I've also tried different settings in "setver" with no change. I suspect Windows 3.0 is looking for the buffers or other data that is in UMB and gives up with the "bogus DOS version error" because it's looking in conventional memory. I would like to be able to run with "dosdata=umb", because 17k or more conventional memory is freed up. Can anyone think or a reasonable work around? Or am I pretty much out of luck?
 
Last edited:
Actually, Windows 3.0 runs decently on my 5155 with or without UMB. But to be honest, this thing is not quite "stock". I've got a V20 as well as a 80286 and 80287 buy way of an "AST HotShot 286" accelerator board running at 10 mhz. Of course the 286 is hindered by the 8 bit buss, but the board chaches all of the RAM including the UMB and I believe the path from the 286 to the cache is 16 bit, but I'm not sure. The only reason for trying to load dosdata in UMB is to free more BASE Memory, which is all that Windows has to work with since there is no ems or xms. Windows shows 373K free immediatly after loading, and it needs every bit of that, especially since Windows doesn't seem to release ram completely when a program has been terminated, which means that the longer it runs the less free memory that's available.
 
Do you mean dos=umb? Never heard of "dosdata" as a config.sys option... or is that PC-DOS 7 specific?

Though.... that's a 286 upgrade board in a 8088 right? If I'm not mistaken that board doesn't add any RAM and as such, there's no memory for UMB's in the first place as you're 'stuck' working in only 640k.

Even with that card, you're stuck in "real mode" since much like the XT 286 and certain 286 Tandy's there is no standard mode support... meaning you should be looking at windows 2.1 instead of 3.
 
Though.... that's a 286 upgrade board in a 8088 right? If I'm not mistaken that board doesn't add any RAM and as such, there's no memory for UMB's in the first place as you're 'stuck' working in only 640k.
Read my original post. I added UMB support. See this thread if you'd like to know how. As I said the "HotShot 286" provides Cache memory for all installed ram. My config sys starts with the following;

device=clearmem.sys d000 2000 (clearmem.sys is one of Chuck(G)'s creations)
device=use!umbs.sys (A memory handler that manages umbs without emm386 wich won't run on an XT)
dos=umb
dosdata=umb (loads the system tables, files= buffers= fcbs=, into upper memory. This is what prevents Windows from loading.)
files=20
buffers=10

Even with that card, you're stuck in "real mode" since much like the XT 286 and certain 286 Tandy's there is no standard mode support... meaning you should be looking at windows 2.1 instead of 3
Why downgrade to 2.1? I don't see any advantages over 3.0 in real mode. I know that it's not terribly usefull to run Windows on an XT(since there isn't a great deal of software that will run in Windows 3.0 in real mode). I guess I just enjoy the novalty of it.
 
Last edited:
Why downgrade to 2.1? I don't see any advantages over 3.0 in real mode. I know that it's not terribly usefull to run Windows on an XT(since there isn't a great deal of software that will run in Windows 3.0 in real mode). I guess I just enjoy the novalty of it.

Windows 2.1 uses much less memory than Win 3.1 real mode which will make a difference when you are memory constrained. Color icons, program manager, file manager, etc. all eat into your memory budget. If you must use Win 3 in real mode, try changing your shell to the MS-DOS Executive that was brought over from Win 2. That will give you room to run smaller apps alongside whatever big application you might find.

The other problem for Win 3 real mode is a lot of programs that seem to run didn't properly follow the real mode memory requirements of locking or wiring and then unlocking. Those programs will just sit there occupying huge blocks of ram and make it impossible for Windows to swap out unused code in order to run other programs effectively.
 
Have you considered a less resource hungry GUI such as PC Geos/GeoWorks?
I've been evaluating GeoWorks GEOS Ensemble 2.0. It looks pretty decenet, but it appears that it will not do "task switching" unless I install DR DOS 6.0. Can you reccomend which version of GEOS would run best on an old XT? Also, would you be able to recomend DR DOS version would be optimum?

Windows 2.1 uses much less memory than Win 3.1 real mode which will make a difference when you are memory constrained. Color icons, program manager, file manager, etc. all eat into your memory budget. If you must use Win 3 in real mode, try changing your shell to the MS-DOS Executive that was brought over from Win 2. That will give you room to run smaller apps alongside whatever big application you might find.

The other problem for Win 3 real mode is a lot of programs that seem to run didn't properly follow the real mode memory requirements of locking or wiring and then unlocking. Those programs will just sit there occupying huge blocks of ram and make it impossible for Windows to swap out unused code in order to run other programs effectively.

I guess I should check out Windows 2.1 then. To be honest I jumped from Version 1.0 to 3.0 . When 3.0 seemed to work I just figured that 2.1 would be a step backwards.
 
Last edited:
DR Dos 6 should do nicely if you need Dos task switching on a 286 and above. With your machine being a hybrid of sorts the may well be issues though. PC Geos task switches/multi tasks between its native apps just fine. Geoworks 2.x (do the 2.1 update though) is a bit slower than 1.x, but does have a few more native apps included. Not as many as Windows obviously. Both will run on an XT/286 class machine just fine. I found v1.x a lot more stable than later versions and it was certainly faster than Windows 3.0. There's a 256 colour video driver for GeoWorks Ens. 2.x if you have a decent VGA card in the machine. V 1.x is stuck on 16 colours not that it really matters if you have an EGA card.

For what it's worth I had GeoWorks 1.2 Pro loaded on a XT at one point with mono green on black background. Ran great and dot matrix output was almost laser/inkjet quality.

Just playing with DrDos and Geos on such an interesting machine as you've got may well encourage others to give it a shot.
 
Last edited:
Read my original post. I added UMB support. See this thread if you'd like to know how. As I said the "HotShot 286" provides Cache memory for all installed ram. My config sys starts with the following;
That really sounds like ice-skating uphill... I'd be shocked for even windows 2.x to not have issues with that configuration.

device=use!umbs.sys (A memory handler that manages umbs without emm386 wich won't run on an XT)
But the thing is, the mapping limitation/issues should NOT be resolved by the presence of the Hotshot 286 as it means you still lack the motherboard mapping -- that ROM change and presence of the memory doesn't change the physical board limitations... I'm surprised DOS even boots that way.

Why downgrade to 2.1? I don't see any advantages over 3.0 in real mode. I know that it's not terribly usefull to run Windows on an XT(since there isn't a great deal of software that will run in Windows 3.0 in real mode). I guess I just enjoy the novalty of it.
krebizfan covered the key points, I'd also pitch the disastrously bad PC-DOS 7 in the trash (no offense, but I've never had it be anything but garbage on anything less than a 386) and go with a bit leaner a DOS version like 3.3 or earlier... since that too would free up a bunch of memory.

There's a reason my Tandy's stick with Dos 2.11... nothing like booting up a 640k machine with a mouse driver and increased buffers loaded, and having the machine report 602,832 bytes free on pretty much stock hardware... though I've been playing with the idea of mapping in 96k into A000-B7FF like the PCJr guys do on my HX, to see if I can get 736k working; with 588k free there's not a whole lot of reason to bother.
 
krebizfan covered the key points, I'd also pitch the disastrously bad PC-DOS 7 in the trash (no offense, but I've never had it be anything but garbage on anything less than a 386) and go with a bit leaner a DOS version like 3.3 or earlier... since that too would free up a bunch of memory.
The problem here is not PC DOS 7. I have used it on many XT-class machines with excellent results. It has the smallest memory footprint of any PC/MS-DOS version since 3.3.

The problem is trying to use Windows 3.0 in Real Mode. Even on a 286, Real Mode is not actually useable for anything other than verifying that the GUI is working, and maybe for playing a game of Solitaire. If you want a fully functional GUI on an XT or slower 286, GEOS, GEM, or DeskMate would be a much better choice.
 
My $0.02: I have run PC DOS 7 (actually PC DOS 2000) on my XTs for several years and had no problems other than the already-known "long first DIR time" that affects all DOS versions on extremely slow machines ever since 6.x. I have an EMS board in my XT and use QRAM to map some RAM to use as UMBs. This has allowed me to load some TSRs high. I have also had no problems with this at all.

HOWEVER, I don't recommend actually trying to run Windows 3.0 in real mode. I've done it, and my reaction was thoroughly "meh". It can't load any program of any appreciable size. It is useful for the following three things only:

  1. Seeing what Windows 3.0 looks like
  2. Getting into a Windows 3.0 installation to fix things if Standard or Enhanced mode is crashing
  3. Running the little desk accessories that come with it
Really, that's it.

If you want to run something truly impressive for an 808x machine, I second the suggestions to run PC Geos, also known as GeoWorks Ensemble. A multitasking GUI environment that runs on any PC with any graphics card, 512K RAM, and a 10MB hard drive. All reaction is snappy and responsive. All output is resolution-independent, with the printer output matching the screen in what is essentially display postscript. (Even the 9-pin dot-matrix output was awesome, as it would overstrike four times (once, once with dots half-over, once with the platen advanced half a dot, and finally half-advanced half-over) with different detail per overstrike pass. While nothing is a substitute for finer dot pitch, the curves and edges looked amazing.)
 
Out or pure curiousity and not having used any version of PC Dos myself, but appreciate there are tools not included in MS Dos versions and vise versa, what happened to make version 7 free up as much memory as earlier MS/PC dos variants?

I don't have an XT class machine myself at the moment but I can understand why folk would use "period correct" Dos versions. I also understand some folk prefer one "brand" over the other.

Sorry for the thread hijack. Of course I could google it but I'm finding google rather tiring of late trying to "correct" my search requests.
 
Last edited:
PC DOS 7 frees up more memory than MS-DOS 6.x because it has a few more options regarding where file handles, buffers, and other DOS data can be located to. It also contains more tricks out of the box, such as using 12K of CGA RAM if you don't ever intend to run anything with graphics or multiple video pages. (Note that "frees more RAM than previous DOS versions" may mean in the "2k to 16k" range -- it's not mind-blowing, but sometimes every little bit helps.)

I use a combination of PC DOS 2000, hardware EMS, QRAM, and 4DOS (actually NDOS) to get 600K free RAM on my XT, which I wanted so that I could do most of my development and debugging inside a single IDE. I didn't choose PC DOS 2000 for its ram abilities though; I chose it because it was the last commercial DOS by IBM for IBM (it explicitly does support the original PC and XT which gives me an "oh, it's stock" warm fuzzy), and also because it contained Y2K fixes.

No DOS is really much better than the others in terms of core DOS functionality. The major differences between them are hard disk sizes supported, utilities bundled with the OS, and memory usage. The only DOSes you should really never use for day-to-day retrocomputing are DOS 1.x (lacks many functions that most software 1985+ need) and 4.0 (due to several bugs). 3.3 is a nice compromise between memory usage (takes up roughly 20K + size of command.com, doesn't take up too much space on a floppy) and hard disk support (for hard disks under 540MB) so that's why a lot of people recommend it for 808x systems.
 
Last edited:
No DOS is really much better than the others in terms of core DOS functionality. The major differences between them all hard disk sizes supported, utilities bundled with the OS, and memory usage. The only DOSes you should really never use for day-to-day retrocomputing are DOS 1.x (lacks many functions that most software 1985+ need) and 4.0 (due to several bugs). 3.3 is a nice compromise between memory usage (takes up roughly 20K + size of command.com, doesn't take up too much space on a floppy) and hard disk support (for hard disks under 540MB) so that's why a lot of people recommend it for 808x systems.
The original release of MS- and IBM DOS 5.0 was also buggy, but just like MS-DOS 4.00, I've never actually encountered it in the wild; I've only ever seen MS-DOS 4.01, MS-DOS 5.00A, or IBM DOS 5.02.

A surprising number of the DOS 6.x/7.0/2000 utilities will run in DOS 3.3, and for the few that don't (DEFRAG, SCANDISK, etc.), functional equivalents can be found in Norton Utilities. (Indeed, DEFRAG is nothing more than a renamed copy of Norton's SPEEDISK -- the NU 6.x version of which runs fine in DOS 3.3, even though DEFRAG doesn't.)
 
That really sounds like ice-skating uphill... I'd be shocked for even windows 2.x to not have issues with that configuration.
But the thing is, the mapping limitation/issues should NOT be resolved by the presence of the Hotshot 286 as it means you still lack the motherboard mapping -- that ROM change and presence of the memory doesn't change the physical board limitations... I'm surprised DOS even boots that way..
What "physical board limitations" are you referring to? The 8088 can and does address up to 1 megabyte of ram. I never said that the HotShot 286 was resolving memory mapping limitations(it just provides cache to boost performance). The mapping is being accomplished by the GAL in socket u44, replacing the original bipolar PROM. Chuck(G) helped with the programming of the GAL which maps UMB starting at paragraph D000 to EFFF, a grand total of 128K of upper memory. The USE!UMB.SYS driver tells DOS where the UMB is. All in all it works pretty well. No ice skates needed. The only issue I am having is that Windows 3.0 won't load when I include the DOSDATA=UMB statement in config.sys. DOS=UMB on its own doesn't cause any trouble with Windows. Since DOS can not be loaded high, because there is no memory above 1 Meg, I'm just trying to get as much into that 128k of UMB as possible. DOSDATA=UMB moves the system tables (Files=, Buffers=, Lastdrive=) into upper memory. This can free up 10 to 20k or more base memory.
 
I admire ibmapc's solution (add big ram and patch the rest!). Here's my solution using "off the shelf" parts: Intel Above Board for EMS, QRAM to make UMBs and manipulate the page frame, NDOS (4DOS) as a command-shell, and PC DOS 2000 (7)'s DOSDATA to load portions high. The result:

Code:
Modules using memory below 1Mb:


  Name           Total       =   Conventional   +   Upper Memory
  --------  ----------------   ----------------   ----------------
  SYSTEM      72,896   (71K)     46,384   (45K)     26,512   (26K)
  EMM            176    (0K)        176    (0K)          0    (0K)
  NDOS         4,208    (4K)      1,056    (1K)      3,152    (3K)
  SETVER         768    (1K)          0    (0K)        768    (1K)
  EXP8         3,504    (3K)          0    (0K)      3,504    (3K)
  FREE       637,856  (623K)    607,728  (593K)     30,128   (29K)


Memory summary:


  Type of Memory       Total    =     Used    +     Free
  ----------------  -----------   -----------   -----------
  Conventional          655,360        47,632       607,728
  Upper                  64,064        33,936        30,128
  Reserved              329,152       329,152             0
  Extended (XMS)              0             0             0
  ----------------  -----------   -----------   -----------
  Total memory        1,048,576       410,720       637,856


  Total under 1Mb       719,424        81,568       637,856


  Total Expanded (EMS)                  2,080,768   (2,032K)
  Free Expanded (EMS)                   1,916,928   (1,872K)


  Largest executable program size         607,712     (593K)
  Largest free upper memory block          29,680      (29K)

Using QRAM's LOADHI.COM, we can see how the UMBs were divided up:

Code:
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º Region     Area      Size      Status        º
º   1    E000 - E05A   1.4K    Used (QRAM)     º
º   1    E05B - E08D   0.7K    Used (SETVER)   º
º   1    E08E - E0EC   1.4K    Used (E090)     º
º   1    E0ED - E0FD   0.2K    Used (E0EE)     º
º   1    E0FE - E6D7    23K    Used (E0FF)     º
º   1    E6D8 - E704   0.6K    Used (E6D9)     º
º   1    E7CA - E7E5   0.4K    Available       º
º   1    E7E6 - E8C0   3.4K    Used (EXP8)     º
º   1    E8C1 - EFFF    28K    Available       º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

I assume the EXXX areas are the result of the DOSDATA= directive, especially since E0FF is 23K which matches the BUFFERS=45 I put into config.sys. EXP8 is my packet driver. The rest should be obvious.

The config.sys that makes things this way is:

Code:
DEVICE=c:\DRV\EMM.SYS PC 258 ND RD
DEVICE=C:\QRAM\QRAM.SYS R:2
DOS=umb
DOSDATA=UMB
DEVICE=c:\qram\loadhi.sys C:\PCDOS2K\setver.exe
FILES=30
BUFFERS=45
LASTDRIVE=H
stacks=0,0
shell=c:\ndos.com /e:768 /u
 
Here's my solution using "off the shelf" parts: Intel Above Board for EMS, QRAM to make UMBs and manipulate the page frame, NDOS (4DOS) as a command-shell, and PC DOS 2000 (7)'s DOSDATA to load portions high. The result:

Code:
Modules using memory below 1Mb:


  Name           Total       =   Conventional   +   Upper Memory
  --------  ----------------   ----------------   ----------------
  SYSTEM      72,896   (71K)     46,384   (45K)     26,512   (26K)
  EMM            176    (0K)        176    (0K)          0    (0K)
  NDOS         4,208    (4K)      1,056    (1K)      3,152    (3K)
  SETVER         768    (1K)          0    (0K)        768    (1K)
  EXP8         3,504    (3K)          0    (0K)      3,504    (3K)
  FREE       637,856  (623K)    607,728  (593K)     30,128   (29K)


Memory summary:


  Type of Memory       Total    =     Used    +     Free
  ----------------  -----------   -----------   -----------
  Conventional          655,360        47,632       607,728
  Upper                  64,064        33,936        30,128
  Reserved              329,152       329,152             0
  Extended (XMS)              0             0             0
  ----------------  -----------   -----------   -----------
  Total memory        1,048,576       410,720       637,856


  Total under 1Mb       719,424        81,568       637,856


  Total Expanded (EMS)                  2,080,768   (2,032K)
  Free Expanded (EMS)                   1,916,928   (1,872K)


  Largest executable program size         607,712     (593K)
  Largest free upper memory block          29,680      (29K)

That's pretty cool!
Here's the results of my configuration

Code:
config.sys

device=clearmem.sys d000 2000 ;clears memory that is not initialized durring post
device=use!umbs.sys                ;tells dos where the umb's are
dos=umb
dosdata=umb
shell=c:\dos\command.com /H/E:512 c:\dos\ /p
devicehigh=c:\hotshot\fdd.sys
devicehigh=c:\dos\setver.exe
devicehigh=c:\dos\ega.sys
files=30
buffers=20
lastdrive=z


Modules using memory below 1Mb:

  Name           Total       =   Conventional   +   Upper Memory
  --------  ----------------   ----------------   ----------------
  SYSTEM      63,936   (62K)     46,128   (45K)     17,808   (17K)
  USE!UMBS       256    (0K)        256    (0K)          0    (0K)
  FDD          1,440    (1K)          0    (0K)      1,440    (1K)
  SETVER         800    (1K)          0    (0K)        800    (1K)
  EGA          3,280    (3K)          0    (0K)      3,280    (3K)
  COMMAND      5,056    (5K)          0    (0K)      5,056    (5K)
  DOSKEY       3,952    (4K)          0    (0K)      3,952    (4K)
  EXP16        3,984    (4K)          0    (0K)      3,984    (4K)
  MOUSE        3,552    (3K)          0    (0K)      3,552    (3K)
  FREE       700,144  (684K)    608,960  (595K)     91,184   (89K)

Memory summary:

  Type of Memory       Total    =     Used    +     Free
  ----------------  -----------   -----------   -----------
  Conventional          655,360        46,400       608,960
  Upper                 131,056        39,872        91,184
  Reserved              262,160       262,160             0
  Extended (XMS)              0             0             0
  ----------------  -----------   -----------   -----------
  Total memory        1,048,576       348,432       700,144

  Total under 1Mb       786,416        86,272       700,144

  Largest executable program size         608,944     (595K)
  Largest free upper memory block          90,352      (88K)
 
Back
Top