VOGONS


First post, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie

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 17, by elszgensa

User metadata
Rank Oldbie
Rank
Oldbie

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 2 of 17, by rmay635703

User metadata
Rank l33t
Rank
l33t

If the addresses are all at the top of the address range you could just use the Rlowe tool to limit it’s capacity.

Reply 3 of 17, 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 17, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie

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 17, by rmay635703

User metadata
Rank l33t
Rank
l33t
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 17, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie

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 17, by progman.exe

User metadata
Rank Member
Rank
Member

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 17, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie
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 17, by myne

User metadata
Rank l33t
Rank
l33t

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.

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 10 of 17, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie
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?

Reply 11 of 17, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

BIOS provide memory map of the system via
• Interrupt: INT 0x15
• Function (EAX / AX): 0xE820
if you find a way how to alter it (e.g. hooking int15 before boot) then every OS should read and obey the modified memory map. But the registry is also a nice trick-if it allows you to boot at least to run regedit 😀
DIMM mapping is not straighforward. It's 64b wide, sigle chip is usually 8b wide so 8chips x 8 makes 64b. Also DRAM chip has not simple linear adressing like SRAM but address is rather kinda 3D with row, column and bank address. Depens on memory controller how it maps... at least you can check if all memory errors are in closed group of bits, e.g. 11-15 would indicate 2nd chip connected to D15:8 so only one chip if faulty. If errors are spreaded widely over bits it woul indicate more faulty chips. I would fear that even if memtest localize some bad range it may getting worse over time and it coulda bring a lot of headaches in future as further chip cells will dying. Better would be replace faulty chip from some other bad module used as donor...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 12 of 17, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie

this 512mb sdram module held on as 256mb with crude partitioning for a few years, but then developed errors towards the start of the address range. as you say the way it's mapped it's still probably just 1 bad chip. it's retired and kept as a donor now.

Reply 13 of 17, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

You can try some hot air to torture the chips a bit and you will see if more errors develops. Once it happened to me that I desoldered some FPM DRAM chips made by LG from a module that works and solder them on my PCB design of parity SIMM and that chips died - a lot of errors occured. In normal case they survive swapping without a problem. So I guess there must been some internal problem that was just accelerated by high temp (I desolder at 330C air temp).

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 14 of 17, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

Also, just because RAM appears bad on one system, don't assume it's bad on all systems. I have had sticks with memtest errors despite jiggling and socket cleaning, then in another system, they work fine. I am assuming that it's something to do with refresh strength and marginal cells on a marginal strength board don't play nice. But put it in a board with a nice strong refresh signal and it's working perfect. Also worth mixing it up between AMD and Intel systems for some reason, while they have a central population of RAM they both work with, at either side of that, is RAM that only likes intel and RAM that only likes AMD. It's mostly noticeable from 1999 ish to 2012 ish.

But as far as the excluding bad on everything bits from faulty RAM goes, not much clue, I deep dived it around Vista times when the upgrade explosion spiked RAM prices for a bit, and badram was new to linux then, but nothing was coming up windows until it got implemented in later releases.

However, I seem to have recollection of someone doing a way to convert memtest list to a whole long list of EMM386 exceptions to be somewhat useful in DOS.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 15 of 17, by rasz_pl

User metadata
Rank l33t
Rank
l33t
RayeR wrote on Yesterday, 15:53:

was just accelerated by high temp (I desolder at 330C air temp).

Its good to bake whole boards (slightly over 100C for couple hours, electrolytic caps removed) before desoldering more precious chips, they do absorb moisture somehow and can either popcorn (modern bga ones) or just die without giving a hint

https://github.com/raszpl/sigrok-disk FM/MFM/RLL decoder
https://github.com/raszpl/FIC-486-GAC-2-Cache-Module (AT&T Globalyst)
https://github.com/raszpl/386RC-16 ram board
https://github.com/raszpl/Zenith_ZBIOS Zenith Z-386 MFM-300 ZBIOS disassembly

Reply 16 of 17, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie
rasz_pl wrote on Yesterday, 17:55:

they do absorb moisture somehow and can either popcorn (modern bga ones) or just die without giving a hint

You mean also plastic TQFP/PLCC/SOJ chips? I can imagine that BGA that use FR4 interposer can absorb moisture but plastic-epoxy package? Maybe if it has some micro-cracks... but in that case it may be just a question of time until it oxidize inside. BTW I have a thread about dead ET6000 VGA where the chip has some pins that behaves disconnected from silicon internally. I think it was dead before I messed with hot air there...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 17 of 17, by stanwebber

User metadata
Rank Oldbie
Rank
Oldbie

i could try the bad module in another pc-133 motherboard, but it would be the exact same brand & model except with raid (iwill kk266+). i don't have any other sdram systems--all my other retro boards are ddr.

i got the 512mb module as a matched set of 2 and the other stick is still going strong in the original system with a mismatched module of 7ns chips. bios is still set to cas2 with the fastest timings allowed, but i don't really overclock this system to know if i lost any ground with the replacement.