VOGONS


First post, by Ampera

User metadata
Rank Oldbie
Rank
Oldbie

First off, making this perfectly clear I have 32 MB of memory, WAY more than enough to run Civ, it's got to be some sort of EMS/XMS/UMB whatever case that is problem, and I got no clue how to solve that.

First off, some specs:

Am486-DX4-100-SV8B @120Mhz (OC)

Diamond Stealth SE (Trio 32) 2MB

AWE32

2.5 GB, 2GB used over LBA WD Caviar (Forgot the model)

32MB FPM DRAM, cached with 256k cache.

EXP4045 by DataExpert/ExpertBoard

And my Autoexec.bat

SET SOUND=C:\DRIVERS\SBAWE32
SET BLASTER=A220 I5 D1 H5 P330 E620 T6
SET MIDI=SYNTH:1 MAP:E MODE:0
SET CTCM=C:\DRIVERS\CPNPMGR
C:\DRIVERS\SBAWE32\DIAGNOSE /S
C:\DRIVERS\SBAWE32\AWEUTIL /S
C:\DRIVERS\SBAWE32\MIXERSET /P /Q
C:\DRIVERS\CPNPMGR\CTCU /S
@ECHO OFF
SET PATH=C:\DOS;%PATH%
SET TEMP=C:\DOS
C:\DOS\MODE.COM CON CP PREP=((437) C:\DOS\ISO.CPI)
C:\DOS\MODE.COM CON CP SEL=437
C:\DOS\KEYB.COM US,,C:\DOS\KEYBOARD.SYS
C:\DOS\MOUSE.COM
C:\DOS\DOSKEY.COM
LH C:\DOS\MSCDEX.EXE /D:mscd001 /L:D

and my config.sys

REM ** FILES=30
BUFFERS=10
DOS=HIGH
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DRIVERS\CPNPMGR\CTCM.EXE
DEVICEHIGH=C:\DRIVERS\CD1.SYS /D:mscd001
DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\DOS\DISPLAY.SYS CON=(,,1)
FILES=40

I am running PC-DOS 2000 (PC-DOS 7) with an ISO font, however the exact same thing is infinitely reproducible in MS-DOS 6.22. I have tried some EMS stuff, but I am honestly unsure as to why it's not working. Games like Doom and Duke 3D work just fine, and they use way more than CIv.

The exact problem is a red screen appearing when I start Civ using VGA graphics and either OPL2/3 sounds or MT32 emulation over AWE32, with MT32 showing about 5000 of something free out of 8000 needed (KiB?) and OPL2/3 showing around 7500 (Not exact values). The game will run "Fine" using either mode, with the only noticeable issue being in the castle menu graphical issues with the parts pixelating in (some parts do not show), but I didn't play it extensively enough to know if there are any problems.

The point is how do I fix this, or is this some strange thing where it's gonna have enough memory, it just can't detect it? I have plenty of memory, TONS more than it should ever need (Heck the sound card probably has enough) so I don't really understand the issue. As I said, probably some EMS crap, DOS is just lovely with that, but I don't know how to fix it for this instance.

EDIT: I moved this from DOS to Marvin, I think this is the right place, but I am still confused about where stuff goes.

Last edited by Ampera on 2016-12-06, 07:11. Edited 1 time in total.

Reply 1 of 24, by firage

User metadata
Rank Oldbie
Rank
Oldbie

Uh, conventional memory makes for a long story. "MEM /C /P" at the DOS command prompt will give you an overview of the situation.

You're forgetting to load EMM386.EXE after HIMEM.SYS, and "DOS=HIGH" comes after.

Also to optimize you probably should trim some of the AWE32 stuff down to the essentials.

The DOS forum area may have probably been the correct one for this, although this is a pretty integral part of the retro PC.

My big-red-switch 486

Reply 2 of 24, by Ampera

User metadata
Rank Oldbie
Rank
Oldbie
firage wrote:
Uh, conventional memory makes for a long story. "MEM /C /P" at the DOS command prompt will give you an overview of the situation […]
Show full quote

Uh, conventional memory makes for a long story. "MEM /C /P" at the DOS command prompt will give you an overview of the situation.

You're forgetting to load EMM386.EXE after HIMEM.SYS, and "DOS=HIGH" comes after.

Also to optimize you probably should trim some of the AWE32 stuff down to the essentials.

The DOS forum area may have probably been the correct one for this, although this is a pretty integral part of the retro PC.

No effect. My config.sys now looks like

REM ** FILES=30
BUFFERS=10
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE
DOS=HIGH
DEVICE=C:\DRIVERS\CPNPMGR\CTCM.EXE
DEVICEHIGH=C:\DRIVERS\CD1.SYS /D:mscd001
DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\DOS\DISPLAY.SYS CON=(,,1)
FILES=40

I also had this snippet verbatim in my MS-DOS 6.22 Config.SYS with the same effect.

DEVICE=C:\HIMEM.SYS
DOS=HIGH,UMB
DEVICE=C:\EMM386.EXE -NOEMS

where all DOS files are in the root directory (lazy install on my part)

and no effect, nor numerical difference in the screen.

As for this location, unless it's a severe crime against the forum, I'll leave it here. The DOS section is said to be for old games on new systems (VOGONS) and this is for legacy hardware, even though it doesn't say legacy games on legacy hardware. It's confusing to me, and this place seems a bit less barren than the DOS section, so I will leave it here for now.

Reply 3 of 24, by stamasd

User metadata
Rank l33t
Rank
l33t

Please post what "mem /c/p" shows. You can even save the output to a file to make things easier "mem/c >mem.txt" then post the contents of mem.txt

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 4 of 24, by Ampera

User metadata
Rank Oldbie
Rank
Oldbie

I split this up into two files, one showing it right after a fresh boot, and another showing it after loading the MT32 emulation from the AWE32

fresh boot

Modules using memory below 1Mb:

Name Total = Conventional + Upper Memory
-------- ---------------- ---------------- ----------------
IBMDOS 14,384 (14K) 14,384 (14K) 0 (0K)
HIMEM 816 (1K) 816 (1K) 0 (0K)
EMM386 4,992 (5K) 4,992 (5K) 0 (0K)
CD1 28,864 (28K) 28,864 (28K) 0 (0K)
DISPLAY 4,848 (5K) 4,848 (5K) 0 (0K)
COMMAND 2,656 (3K) 2,656 (3K) 0 (0K)
KEYB 6,416 (6K) 6,416 (6K) 0 (0K)
MOUSE 17,072 (17K) 17,072 (17K) 0 (0K)
DOSKEY 1,152 (1K) 1,152 (1K) 0 (0K)
MSCDEX 21,648 (21K) 21,648 (21K) 0 (0K)
FREE 552,512 (540K) 552,512 (540K) 0 (0K)

Memory summary:

Type of Memory Total = Used + Free
---------------- ----------- ----------- -----------
Conventional 655,360 102,848 552,512
Upper 0 0 0
Reserved 393,216 393,216 0
Extended (XMS) 32,505,856 545,792 31,960,064
---------------- ----------- ----------- -----------
Total memory 33,554,432 1,041,856 32,512,576

Total under 1Mb 655,360 102,848 552,512

Total Expanded (EMS) 32,833,536 (32,064K)
Free Expanded (EMS) 32,210,944 (31,456K)

Total Extended (XMS) 32,505,856 (31,744K)
Free Extended (XMS) 31,960,064 (31,211K)

Largest executable program size 552,208 (539K)
Largest free upper memory block 0 (0K)
Available space in High Memory Area 4,480 (4K)
PC DOS is resident in the high memory area.

after loading mt32

Modules using memory below 1Mb:

Name Total = Conventional + Upper Memory
-------- ---------------- ---------------- ----------------
IBMDOS 14,384 (14K) 14,384 (14K) 0 (0K)
HIMEM 816 (1K) 816 (1K) 0 (0K)
EMM386 4,992 (5K) 4,992 (5K) 0 (0K)
CD1 28,864 (28K) 28,864 (28K) 0 (0K)
DISPLAY 4,848 (5K) 4,848 (5K) 0 (0K)
COMMAND 2,656 (3K) 2,656 (3K) 0 (0K)
KEYB 6,416 (6K) 6,416 (6K) 0 (0K)
MOUSE 17,072 (17K) 17,072 (17K) 0 (0K)
DOSKEY 1,152 (1K) 1,152 (1K) 0 (0K)
MSCDEX 21,648 (21K) 21,648 (21K) 0 (0K)
AWEUTIL 29,968 (29K) 29,968 (29K) 0 (0K)
FREE 522,544 (510K) 522,544 (510K) 0 (0K)

Memory summary:

Type of Memory Total = Used + Free
---------------- ----------- ----------- -----------
Conventional 655,360 132,816 522,544
Upper 0 0 0
Reserved 393,216 393,216 0
Extended (XMS) 32,505,856 545,792 31,960,064
---------------- ----------- ----------- -----------
Total memory 33,554,432 1,071,824 32,482,608

Total under 1Mb 655,360 132,816 522,544

Total Expanded (EMS) 32,833,536 (32,064K)
Free Expanded (EMS) 32,210,944 (31,456K)

Total Extended (XMS) 32,505,856 (31,744K)
Free Extended (XMS) 31,960,064 (31,211K)

Largest executable program size 521,744 (510K)
Largest free upper memory block 0 (0K)
Available space in High Memory Area 4,480 (4K)
PC DOS is resident in the high memory area.

I can definitely see the lack of UMB and only 4k available in the HMA, but I don't know what this means or how to fix it.

Reply 5 of 24, by firage

User metadata
Rank Oldbie
Rank
Oldbie

Something is using all the memory in the space between 640K and 1MB, and it shouldn't be just EMM386.EXE's EMS frame. I found a couple such incidents reported here on Vogons, where this was caused by a Virus.DOS.Major.1644 infection, but in those cases there was also 30K of conventional memory unaccounted for which isn't happening here. It could also just be the BIOS using it all for video shadow RAM or something; there are options to disable shadowing there.

Edit: Actually it's probably the missing UMB parameter with "DOS=HIGH"?

Last edited by firage on 2016-12-06, 04:38. Edited 1 time in total.

My big-red-switch 486

Reply 7 of 24, by firage

User metadata
Rank Oldbie
Rank
Oldbie

You said you already had this in another configuration, but try mem /c /p with the parameters "DOS=HIGH,UMB" and "DEVICE=C:\DOS\EMM386.EXE NOEMS" in there.

The goal would be to free up at least 70K+ more conventional memory by loading drivers high.

My big-red-switch 486

Reply 8 of 24, by Ampera

User metadata
Rank Oldbie
Rank
Oldbie

Wow, actually that fixed it. And I did have that exact line in the previous MS-DOS 6.22 install. HOWEVER, it was before loading EMM386, not after, maybe that changes things?

Either way here is my mem now, again in two files, one after a fresh boot, one with MT32 EMU loaded.

Fresh:

Modules using memory below 1Mb:

Name Total = Conventional + Upper Memory
-------- ---------------- ---------------- ----------------
SYSTEM 14,400 (14K) 14,368 (14K) 32 (0K)
HIMEM 816 (1K) 816 (1K) 0 (0K)
EMM386 2,368 (2K) 2,368 (2K) 0 (0K)
DISPLAY 4,848 (5K) 4,848 (5K) 0 (0K)
COMMAND 2,656 (3K) 2,656 (3K) 0 (0K)
KEYB 6,416 (6K) 6,416 (6K) 0 (0K)
MOUSE 17,072 (17K) 17,072 (17K) 0 (0K)
DOSKEY 1,152 (1K) 1,152 (1K) 0 (0K)
CD1 28,864 (28K) 0 (0K) 28,864 (28K)
MSCDEX 21,648 (21K) 0 (0K) 21,648 (21K)
FREE 716,288 (700K) 605,648 (591K) 110,640 (108K)

Memory summary:

Type of Memory Total = Used + Free
---------------- ----------- ----------- -----------
Conventional 655,360 49,712 605,648
Upper 161,184 50,544 110,640
Reserved 232,032 232,032 0
Extended (XMS) 32,505,856 439,296 32,066,560
---------------- ----------- ----------- -----------
Total memory 33,554,432 771,584 32,782,848

Total under 1Mb 816,544 100,256 716,288

Total Extended (XMS) 32,505,856 (31,744K)
Free Extended (XMS) 32,066,560 (31,315K)

Largest executable program size 605,344 (591K)
Largest free upper memory block 110,432 (108K)
Available space in High Memory Area 4,480 (4K)
PC DOS is resident in the high memory area.

With MT32 EMU:

Modules using memory below 1Mb:

Name Total = Conventional + Upper Memory
-------- ---------------- ---------------- ----------------
SYSTEM 14,400 (14K) 14,368 (14K) 32 (0K)
HIMEM 816 (1K) 816 (1K) 0 (0K)
EMM386 2,368 (2K) 2,368 (2K) 0 (0K)
DISPLAY 4,848 (5K) 4,848 (5K) 0 (0K)
COMMAND 2,656 (3K) 2,656 (3K) 0 (0K)
KEYB 6,416 (6K) 6,416 (6K) 0 (0K)
MOUSE 17,072 (17K) 17,072 (17K) 0 (0K)
DOSKEY 1,152 (1K) 1,152 (1K) 0 (0K)
CD1 28,864 (28K) 0 (0K) 28,864 (28K)
MSCDEX 21,648 (21K) 0 (0K) 21,648 (21K)
FREE 716,288 (700K) 605,648 (591K) 110,640 (108K)

Memory summary:

Type of Memory Total = Used + Free
---------------- ----------- ----------- -----------
Conventional 655,360 49,712 605,648
Upper 161,184 50,544 110,640
Reserved 232,032 232,032 0
Extended (XMS) 32,505,856 439,296 32,066,560
---------------- ----------- ----------- -----------
Total memory 33,554,432 771,584 32,782,848

Total under 1Mb 816,544 100,256 716,288

Total Extended (XMS) 32,505,856 (31,744K)
Free Extended (XMS) 32,066,560 (31,315K)

Largest executable program size 605,344 (591K)
Largest free upper memory block 110,432 (108K)
Available space in High Memory Area 4,480 (4K)
PC DOS is resident in the high memory area.

Glad it works tho, I guess Civ doesn't use UMB or XMS and need conventional memory only? Idk, thanks for helping.

Reply 9 of 24, by yawetaG

User metadata
Rank Oldbie
Rank
Oldbie
Ampera wrote:

Glad it works tho, I guess Civ doesn't use UMB or XMS and need conventional memory only? Idk, thanks for helping.

Many DOS games need at least 540K of conventional memory to work. By the looks of it, your original configuration without MT32 EMU was just 1K under that...

Reply 10 of 24, by firage

User metadata
Rank Oldbie
Rank
Oldbie

591K will do for most, but a few things want up to 600K even, and EMS too. There's plenty of upper memory left to load AWEUTIL high and enable EMS when needed; it should still leave some 15K for moving some of the smaller drivers high.

My big-red-switch 486

Reply 13 of 24, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Getting a handle on memory management will be useful for other titles as well. Start by looking at the BIOS, as mentioned.

All hail the Great Capacitor Brand Finder

Reply 14 of 24, by stamasd

User metadata
Rank l33t
Rank
l33t

You can try to lh mouse.com as well, that'll give you some extra conventional memory, 16K or so. Or at least use a smaller driver like cutemouse if it works for you.

I/O, I/O,
It's off to disk I go,
With a bit and a byte
And a read and a write,
I/O, I/O

Reply 16 of 24, by firage

User metadata
Rank Oldbie
Rank
Oldbie

EMM386 is going to eat up 64K of upper memory when its EMS emulation is enabled. Still very manageable. But if you threw in SMARTDrive with all the rest, things would start getting crowded for these fat default drivers. 😀

Last edited by firage on 2016-12-07, 05:50. Edited 1 time in total.

My big-red-switch 486

Reply 17 of 24, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

I recommend using DEVICEHIGH for everything but HIMEM and EMM386 in your CONFIG.SYS

All hail the Great Capacitor Brand Finder

Reply 18 of 24, by Ampera

User metadata
Rank Oldbie
Rank
Oldbie

ATM, I am only really gonna be gaining about 30k or so of conventional memory by doing this, I already have plenty and Civ isn't complaining anymore (GREAT game, AWE32's MT-32 emulation is AWESOME considering what it is). I am seeing around 610k free conventional memory, with the MT-32 emulation loading into UMB, I think I'm fine fn, thanks for all the help and suggestions.

Reply 19 of 24, by gdjacobs

User metadata
Rank l33t++
Rank
l33t++

Fair enough. 610k is fine. However, there's no reason not to load as much high as possible.

All hail the Great Capacitor Brand Finder