VOGONS


First post, by stanwebber

User metadata
Rank Member
Rank
Member

it's getting difficult to find sticks of 512mb sdram (non-reg, non-ecc) with 6.5/7ns chips so i don't want to throw this one out because of a few bad memory addresses. the bad addresses are a non-issue for dos, but can i run this stick under win98se at full capacity minus the bad addresses?

what i am proposing i have been doing for years on a linux system using the grub_badram kernel boot parameter. is there a similar mechanism in win9x? i know emm386 has include/exclude parameters, but windows doesn't use emm386? right?

what about a parameter in system.ini? or something else more low level?

Reply 1 of 10, by elszgensa

User metadata
Rank Member
Rank
Member

TIL later versions of Windows actually support that, interesting.

Under 9x, maybe you could whip up some code that allocates those bad regions for itself (and then simply does nothing with them)? Might have to be on a driver level though, I don't think you have enough control for that from userspace. And you'd still be at risk until that code is loaded.

Reply 3 of 10, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

I faintly remember setting exclusions for addresses in system.INI but never bothered doing so for faulty memory since I would just replace it.

http://www.conradshome.com/win31/83435-6.php

I have no doubt there are plenty of people on forums like these hoarding memory, heck I've got a bag full to the brimm of various types I'll never use.

How To Ask Questions The Smart Way
Make your games work offline

Reply 4 of 10, by stanwebber

User metadata
Rank Member
Rank
Member

well damn, upon reviewing that document system.ini has the emminclude and emmexclude parameters, but only up to the efff address range which makes sense since emm386 only handles memory under 1mb. i guess if this is going to be workable at all it will have to be something to do with himem.sys.

Reply 5 of 10, by rmay635703

User metadata
Rank Oldbie
Rank
Oldbie
stanwebber wrote on 2024-02-29, 23:46:

well damn, upon reviewing that document system.ini has the emminclude and emmexclude parameters, but only up to the efff address range which makes sense since emm386 only handles memory under 1mb. i guess if this is going to be workable at all it will have to be something to do with himem.sys.

Rlowe has a modified himem that allows you to limit ram to any amount.

http://lonecrusader.x10host.com/rloew/limitmem.html

That’s the best you can do off the shelf, if all the failed addresses are in the top 128mb limit to 384

Limit DOS RAM memory (XMSDSK / HimemX / JemmEx), DOS RAM size limit

Last edited by rmay635703 on 2024-03-03, 20:37. Edited 1 time in total.

Reply 6 of 10, by stanwebber

User metadata
Rank Member
Rank
Member

it looks like limiting the max ram under win9x is what i'm going to have to do. unfortunately, the first failed address occurs near the start of the top 256mb so i'm going to lose half the stick of ram. still, the bottom 256mb still runs solid at cas2 with the fastest timings my motherboard will support.

is it sufficient to just add MaxPhysPage=10000 to system ini? i have the rloew patches for large ram and hdd applied if that makes any difference.

also, how are memory addresses allocated from the physical chips on a 16x256mbit stick of sdram? is the bottom 256mb completely on 1 physical side and the top 256mb on the opposite side? do the memory addresses start on the leftmost chip and end on the rightmost chip or is it interleaved?

Reply 7 of 10, by progman.exe

User metadata
Rank Newbie
Rank
Newbie

Can you put smaller sticks in before the 512? I know I don't understand the details, so sorry if this is standard internet confidence from ignorance 😀

Can you fit a 256meg DIMM in eg the first memory slot, then the duff 512? Machine starts counting with the 256 meg, then stops using RAM halfway through the 512. You get the maximum RAM possible, and use up a smaller stick.

And if the above works, then what about 2x 128meg, then the duff 512. Or more DIMMs by less megs, if you have enough RAM slots.

Reply 8 of 10, by stanwebber

User metadata
Rank Member
Rank
Member
progman.exe wrote on 2024-03-03, 18:09:

Can you put smaller sticks in before the 512

point of fact, i am already doing this. i just left out this detail to simplify my question for readers. i have 1 other stick of 8x128mbit 7ns sdram in dimm slot 0 and the bad 16x256mbit stick in dimm slot 1. i have multiple gb of sdram, but they are all 7.5/8ns chips. the difference in speed is around 70mb/sec for the faster 7ns ram.

Reply 9 of 10, by myne

User metadata
Rank Member
Rank
Member

There is a way to achieve it in 9x.
I actually found this thread because I'm playing around with it a bit right now.
Basically it (seems) to come down to this reg key:

[HKEY_LOCAL_MACHINE\Enum\HTREE\RESERVED\0]
"ForcedConfig"=hex:00,04,00,00,00,00,00,00,00,00,00,00

That is the default setting. I'm not promising anything, but I've had a play around with figuring out how the reg key 's data is formatted. Not that I have any idea.

To manually add a blocked range: device manager > "computer" > properties > reserve resources > memory

I added 0000A000-0000A001 as a reserved range.
The reg key changed to:
"ForcedConfig"=hex:00,04,00,00,00,00,00,00,2c,00,00,00,01,00,00,00,01,00,14,00,\
00,a0,00,00,01,a0,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00

It's hard to figure out the order there. I think it's actually backwards.
So let's change it to a weird one.
98765432-98765433

"ForcedConfig"=hex:00,04,00,00,00,00,00,00,2c,00,00,00,01,00,00,00,01,00,14,00,\
32,54,76,98,33,54,76,98,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00

And there it is. That wonderful forward-backward endianness many hex files seem to like.
But what does 2c,00,00,00,01,00,00,00,01,00,14,00 mean?

Ideally... if the collective (we) here can figure out the behaviour of that properly, a trivial script will convert the badram output of memtest86 into a reg key.
https://www.memtest86.com/blacklist-ram-badra … memorylist.html

I would assume there are some limitations to reserving blocks of bad memory, like no bad memory in the first 640k, or the various other reserved ranges, but I'm sure it would extend the life of a fair bit of otherwise "junk" ram.

Attachments

  • 9xbadram.JPG
    Filename
    9xbadram.JPG
    File size
    71.17 KiB
    Views
    107 views
    File license
    Public domain

Things I built:
Mechwarrior 2 installer for Windows 10/11 Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11 auto-install iso template (for vmware)

Reply 10 of 10, by stanwebber

User metadata
Rank Member
Rank
Member
myne wrote on 2024-04-07, 02:55:

Ideally... if the collective (we) here can figure out the behaviour of that properly, a trivial script will convert the badram output of memtest86 into a reg key.
https://www.memtest86.com/blacklist-ram-badra … memorylist.html

I would assume there are some limitations to reserving blocks of bad memory, like no bad memory in the first 640k, or the various other reserved ranges, but I'm sure it would extend the life of a fair bit of otherwise "junk" ram.

MaxPhysPage=10000 in system ini appears to be working sufficiently, but 'reserving' the memory addresses in win98 looks to be the definitive solution and would give me access to 384mb of ram above the 10000 cutoff point. this is my badram entry:

badram=0x30080300,0xf44c0704,0x30019010,0xf101901c,0x30203010,0xf0613118,0x32aa4000,0xf2aa4804,0x38011000,0xf9439004,0x30081800,0xf4385804,0x30010008,0xf7574018,0x30821000,0xf0c2180c,0x32092000,0xf219680c,0x32184400,0xf25c4400

is there some online calculator i could use to convert the start addresses and masks to address ranges?