VOGONS


First post, by Lylat1an

User metadata
Rank Member
Rank
Member

I apologize if this has been asked before.

I'm trying to run a game in addition to a program that translates a gamepad to keyboard inputs.

The game works fine on its own, but running them together gives me an "Out of memory" error.

Is there a way to make them run in high memory to avoid this issue?

Reply 1 of 19, by BinaryDemon

User metadata
Rank Oldbie
Rank
Oldbie

You should be able to load your 'translation program' high. Maybe try QEMM or another 3rd party memory manager.

I doubt you want to load the game high, some games have their own protected mode extenders which give them access to all the available memory.

Check out DOSBox Distro:

https://sites.google.com/site/dosboxdistro/ [*]

a lightweight Linux distro (tinycore) which boots off a usb flash drive and goes straight to DOSBox.

Make your dos retrogaming experience portable!

Reply 2 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member
BinaryDemon wrote on 2020-03-15, 03:58:

You should be able to load your 'translation program' high. Maybe try QEMM or another 3rd party memory manager.

I doubt you want to load the game high, some games have their own protected mode extenders which give them access to all the available memory.

That sounds like it would work, but how do I do that?

Even with a 3rd party memory manager, wouldn't I still need to type something extra to tell the translator to load in an higher memory location?

Reply 3 of 19, by BinaryDemon

User metadata
Rank Oldbie
Rank
Oldbie

If your loading the translator program in autoexec.bat you can use LH or LOADHIGH in front of the executable path.

Check out DOSBox Distro:

https://sites.google.com/site/dosboxdistro/ [*]

a lightweight Linux distro (tinycore) which boots off a usb flash drive and goes straight to DOSBox.

Make your dos retrogaming experience portable!

Reply 5 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member

I'll try loading it in autoexec.bat tomorrow, too sleepy tonight.

Turns out I can't load the translator high because it is also a batch file.

If it helps, the translator is called SNESKey. I'm not seeing any documentation that addresses memory issues.

Reply 6 of 19, by derSammler

User metadata
Rank l33t
Rank
l33t

Then edit the batch file of the tool and add "LH" there for the .com or .exe it loads.

However, It's most likely too big anyway, as high memory is limited and you have probably some stuff sitting there already.

Why not post your config.sys, autoexec.bat, and the output of "mem /c /p" here? Much easier to help then.

Reply 7 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member
derSammler wrote on 2020-03-15, 08:32:

Then edit the batch file of the tool and add "LH" there for the .com or .exe it loads.

However, It's most likely too big anyway, as high memory is limited and you have probably some stuff sitting there already.

Why not post your config.sys, autoexec.bat, and the output of "mem /c /p" here? Much easier to help then.

Editing the batch file with LH breaks the file location. 🙁

I'm sure these files could use some cleaning up, but here they are:

CONFIG.SYS (USB drivers at the end didn't work right, commented them out until I figure out why)

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
BUFFERS=15,0
FILES=40
DOS=UMB
LASTDRIVE=F
FCBS=4,0
DOS=HIGH
;DOS=UMB
REM ** FILES=30
DEVICEHIGH /L:2,12048 =C:\DOS\SETVER.EXE
DOS=HIGH
;device=C:\USB\USBASPI.SYS /w /v
;device=C:\USB\NJ32DISK.sys


[common]
DEVICEHIGH /L:2,17200 =C:\CDROM\AOATAPI.SYS /D:IDECD000

AUTOEXEC.BAT

SET SOUND=C:\SB16
SET BLASTER=A220 I7 D1 H7 P330 T6
SET MIDI=SYNTH:1 MAP:E
C:\SB16\DIAGNOSE /S
C:\SB16\MIXERSET /P /Q
@ECHO OFF
LH /L:0 C:\DOS\SMARTDRV.EXE /X
PROMPT $p$g
PATH C:\DOS ;C:\SNESKEY
SET TEMP=C:\DOS
LH /L:2,27952 C:\DOS\MSCDEX.EXE /D:IDECD000
SET LMOUSE=C:\MOUSE
C:\MOUSE\MOUSE.EXE

MEM /C /P


Modules using memory below 1 MB:

Name Total = Conventional + Upper Memory
-------- ---------------- ---------------- ----------------
MSDOS 14,957 (15K) 14,957 (15K) 0 (0K)
HIMEM 1,168 (1K) 1,168 (1K) 0 (0K)
EMM386 3,120 (3K) 3,120 (3K) 0 (0K)
COMMAND 2,928 (3K) 2,928 (3K) 0 (0K)
SMARTDRV 29,024 (28K) 29,024 (28K) 0 (0K)
MOUSE 24,176 (24K) 24,176 (24K) 0 (0K)
SETVER 512 (1K) 0 (0K) 512 (1K)
AOATAPI 10,352 (10K) 0 (0K) 10,352 (10K)
MSCDEX 27,952 (27K) 0 (0K) 27,952 (27K)
Free 586,912 (573K) 573,680 (560K) 13,232 (13K)

Memory Summary:

Type of Memory Total = Used + Free
---------------- ---------- ---------- ----------
Conventional 649,216 75,536 573,680
Upper 52,048 38,816 13,232
Reserved 0 0 0
Extended (XMS)* 15,676,592 2,602,160 13,074,432
Press any key to continue . . .
---------------- ---------- ---------- ----------
Total memory 16,377,856 2,716,512 13,661,344

Total under 1 MB 701,264 114,352 586,912

Total Expanded (EMS) 16,056,320 (15,680K
Free Expanded (EMS)* 13,320,192 (13,008K

* EMM386 is using XMS memory to simulate EMS memory as needed.
Free EMS memory may change as free XMS memory changes.

Largest executable program size 573,424 (560K)
Largest free upper memory block 9,024 (9K)
MS-DOS is resident in the high memory area.

Reply 8 of 19, by derSammler

User metadata
Rank l33t
Rank
l33t

Wow, that's quite a mess. But anyway:

1. add "HIGHSCAN I=B000-B7FF" after the "RAM" parameter of EMM386
2. remove all "DOS=" lines and just add "DOS=HIGH,UMB" once
3. remove SMARTDRV.EXE
4. use CuteMouse instead of that MOUSE.EXE

This should give you about 50-60 kb more conventional memory.

Also, remove all that "/L:x,y" stuff. I guess you did run memmaker at some point?

Reply 9 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member
derSammler wrote on 2020-03-15, 18:13:
Wow, that's quite a mess. But anyway: […]
Show full quote

Wow, that's quite a mess. But anyway:

1. add "HIGHSCAN I=B000-B7FF" after the "RAM" parameter of EMM386
2. remove all "DOS=" lines and just add "DOS=HIGH,UMB" once
3. remove SMARTDRV.EXE
4. use CuteMouse instead of that MOUSE.EXE

This should give you about 50-60 kb more conventional memory.

Also, remove all that "/L:x,y" stuff. I guess you did run memmaker at some point?

Yes, I ran memmaker.

CuteMouse couldn't find my mouse, so I commented out the lines for both mouse programs and the game still won't load.

Last edited by Lylat1an on 2020-03-15, 23:52. Edited 1 time in total.

Reply 10 of 19, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Is there a way to load DOS games into high memory?

Yes, if you mean the range of 640KB to 1MB (aka adapter space, adapter's segment, Upper Memory Area/UMA).
Problem is, the term for that region varried. Both in time and space (country).

Originally, in English countries, that space was called "high memory". This was in the mid-1980s or so,
when people tried to make their old PCs make use of more system memory for DOS (conventional memory rather than UMBs).

At the time, with Hercules and CGA cards, it was possible to have 704 to 736KB (and beyond with other gfx hardware) of ordinary DOS memory,
provided the motherboard was configured that way..

A proof-of-concept video of mine can be seen at https://www.youtube.com/watch?v=8nMB8XvwUJo

Later, after XMS came out and Himem.sys was able to use 64KiB (-16bytes) above 1024KB -on ATs- to swap out DOS kernal,
it became "upper memory" (with free memory blocks called UMBs; Upper Memory Blocks).

In German speaking countries, for example, this was not adapted until the release of DOS 7 for several reasons.
In DOS 6.22, the Upper Memory Area (UMA) is erroneously called "Hoher Speicherbereich" (high memory location),
and the HMA (High Memory Area) is called "Oberer Speicherbereich" (upper memory location),
causing confusion with English speaking folks sometimes. Especially when they're around on English forums. 😉

More information:
https://de.wikipedia.org/wiki/High_Memory_Are … riffsverwirrung
Englisch Translation

"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 11 of 19, by derSammler

User metadata
Rank l33t
Rank
l33t
Lylat1an wrote on 2020-03-15, 23:51:

CuteMouse couldn't find my mouse, so I commented out the lines for both mouse programs and the game still won't load.

Did you do the other changes I suggested, too?

Reply 12 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member

Upon further investigation, the issue seems to be that the combination of the two programs are just too large to fit in conventional memory.

The game needs 560KB, SNESKey is 57KB, together they equal 617KB out of the 602KB total conventional memory available.

Is there a smaller alternative to SNESKey that will let me use a game controller to emulate a keyboard? Or a way to load SNESKey into a higher memory area?

Reply 14 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member
derSammler wrote on 2020-03-21, 22:10:

There's no issue getting 617 KB or even more. And you can load SNESKey into high memory.

Oh good, how can I do that?

I did use your suggestions, I also removed the USB lines and commented out the mouse lines.

I can post my new files if it will help.

Reply 15 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member

I rearranged DOS's Autoexec and Config files and now I have enough memory to load the two programs together in conventional memory.

Still, the game crashes sometimes saying it ran out of memory.

Reply 16 of 19, by digger

User metadata
Rank Oldbie
Rank
Oldbie
Jo22 wrote on 2020-03-15, 23:52:
In German speaking countries, for example, this was not adapted until the release of DOS 7 for several reasons. In DOS 6.22, the […]
Show full quote

In German speaking countries, for example, this was not adapted until the release of DOS 7 for several reasons.
In DOS 6.22, the Upper Memory Area (UMA) is erroneously called "Hoher Speicherbereich" (high memory location),
and the HMA (High Memory Area) is called "Oberer Speicherbereich" (upper memory location),
causing confusion with English speaking folks sometimes. Especially when they're around on English forums. 😉

First of all, to be fair, "upper" and "higher" are basically synomyms, so it would be hard to keep any distinction between the two when trying to translate both things literally. But why didn't those silly Germans just stick to the English acronyms, like we did in the Netherlands? Why unnecessarily add so many syllables, and introduce such confusion otherwise? ¯\_(ツ)_/¯

There was the HMA, and there were UMBs. Simple. And the fact that the former was in singular form with a definite article and the latter was plural, made the distinction even clearer. There was only one HMA, but there could be many UMBs, depending on the motherboard's chipset.

Reply 17 of 19, by Lylat1an

User metadata
Rank Member
Rank
Member

Well, since you bumped the thread...

Is there anything more I can do to increase the available conventional memory?

Attachments

  • Filename
    MEM.TXT
    File size
    1.73 KiB
    Downloads
    86 downloads
    File license
    Public domain
  • Filename
    CONFIG.txt
    File size
    220 Bytes
    Downloads
    74 downloads
    File license
    Public domain
  • Filename
    AUTOEXEC.TXT
    File size
    329 Bytes
    Downloads
    64 downloads
    File license
    Public domain

Reply 18 of 19, by K1n9_Duk3

User metadata
Rank Member
Rank
Member

It seems odd that your system only has 649,216 bytes of conventional memory in total. Conventional should be 655,360 bytes total, or at least that's what I get on my systems.

It might help if you could also tell us which game/program it is that you're trying to get to run in combination with that SNESKey utility.

Some games (like Catacomb 3-D, Commander Keen 4-6 and BioMenace) try to allocate additional XMS memory via UMBs and will not be able to use XMS at all as long as you have the line "DOS=UMB" or "DOS=HIGH,UMB" in your CONFIG.SYS. Allowing DOS to use UMBs means that MS-DOS will grab all available UMBs at startup, so the game can't use them. Without "DOS=UMB", however, you won't be able to load any drivers or TSRs into high memory. Unless your drivers and TSRs are filling your entire upper memory, you might get better results by letting the game use the UMBs and loading your drivers and TSRs into conventional memory.

The best solution for these games is to have either a dedicated boot disk or a boot menu with a matching entry. Remove anything that isn't absolutely necessary to get the game running (CD-ROM drivers, mouse drivers etc).

Reply 19 of 19, by CoffeeOne

User metadata
Rank Oldbie
Rank
Oldbie
Lylat1an wrote on 2020-04-06, 21:38:

Well, since you bumped the thread...

Is there anything more I can do to increase the available conventional memory?

If you don't need EMS, you can use EMM386.EXE NOEMS instead of EMM386.EXE RAM
That gives you more free RAM