VOGONS


DIY Bios Modding guide Jan Steunebrink k6-2+/3+ 128gb

Topic actions

Reply 280 of 303, by Chkcpu

User metadata
Rank Oldbie
Rank
Oldbie
megatog615 wrote on 2025-08-21, 20:15:

Chkcpu... please help me with this stubborn BIOS ROM file!
https://theretroweb.com/motherboard/bios/t936 … 07053564709.zip

All I want to fix is HDD size so it's not stuck at 8GB max. Of course, I would very much be happy if I could get all of biospatcher's fixes working. I know biospatcher is slightly out of scope but I'm not sure if I could reliably hex edit this rom by myself.

Hi megatog615,

I will look into this BIOS issue and report back in your LBA48 PCI Option ROM? thread.

Cheers, Jan

CPU Identification utility
The Unofficial K6-2+ / K6-III+ page

Reply 281 of 303, by jakethompson1

User metadata
Rank l33t
Rank
l33t
myne wrote on 2025-08-22, 07:48:

second rom?

He has a system with onboard video, in which the system and video BIOS are combined on one ROM chip

Reply 282 of 303, by Chkcpu

User metadata
Rank Oldbie
Rank
Oldbie
jakethompson1 wrote on 2025-08-22, 17:51:
myne wrote on 2025-08-22, 07:48:

second rom?

He has a system with onboard video, in which the system and video BIOS are combined on one ROM chip

Hi Jakethompson1,

You are correct!
Indeed, I found the same and of course this is why CBROM got so confused! 😉

I’ve put up an explanation for the OP in his Re: LBA48 PCI Option ROM? thread.

Greetings, Jan

CPU Identification utility
The Unofficial K6-2+ / K6-III+ page

Reply 283 of 303, by jakethompson1

User metadata
Rank l33t
Rank
l33t
Chkcpu wrote on 2025-08-22, 18:30:
Hi Jakethompson1, […]
Show full quote
jakethompson1 wrote on 2025-08-22, 17:51:
myne wrote on 2025-08-22, 07:48:

second rom?

He has a system with onboard video, in which the system and video BIOS are combined on one ROM chip

Hi Jakethompson1,

You are correct!
Indeed, I found the same and of course this is why CBROM got so confused! 😉

I’ve put up an explanation for the OP in his Re: LBA48 PCI Option ROM? thread.

Greetings, Jan

As I think we've discussed before, I'm somewhat into these old BIOSes for which no known editing tools publicly exist, including some Phoenix 4.0x Re: Hacking/Replacing Phoenix Bios 4.04 on 486 board and AMI "Color" BIOS AMI Color BIOS (1993 and earlier) modification in hex editor

Are these later ones that use CBROM and BIOS Patcher, and so forth, structured enough that >8.4GB support, additional CPUIDs, etc. can be added with a program, or do you have to do a custom assembly patch, or dig by hand for unused space in the F000 runtime segment (when needed eg if the Int 13h handler needs changed), each time?

Occasionally there is interest in adding LBA (at least up to 8.4GB) to AMI "Color" BIOS without having to go to WinBIOS. LBA in "color" BIOS is somewhat rare, but among the differences between v4.8 and v4.9, here https://theretroweb.com/motherboards/s/efa-4dmu-hl3s#bios is LBA support. But so much shuffles around between those two versions that it isn't easy to isolate what changes AMI made to the 08/08/93 core to add LBA.

Reply 284 of 303, by Chkcpu

User metadata
Rank Oldbie
Rank
Oldbie

Hi Jakethompson1,

I have been following your postings with interest, especially about the AMI BIOS.
As my main interest is the Award BIOS, it is great to learn about details from “the other BIOS”. 😉

Many years ago, I did examine two AMI Color BIOSes in greater detail. These were for the Addtech 4GLX3 (011094) and the MSI MS-4134 (080893) boards.
This was in an attempt to improve CPU support (DX4/Am5x86), but I couldn’t finish these BIOS patches due to lack of AMI checksum knowledge. But now I know!

I didn’t look for AMI’s approach to the LBA-assisted translation support then. Also when I started the BIOS patching hobby back 1994, most BIOSes already had translation support up to 8GB and I only had to take care of the occasional 2GB limit bugs.

When I later shifted my attention from 486 to Socket 7 BIOSes, again the main concern was fixing CPU support and that nasty Award 32GB HDD limit bug. So, adding translation to fix the 504MB limit, or adding the Int13h extensions to break the 8GB barrier was never something I got serious about. In addition, adding the Int 13h extensions is a huge change that is difficult to implement in an already assembled BIOS. But perhaps adding the LBA-assisted translation is doable. When I have some time, I will look into these EFA 4DMU BIOSes the get a feeling about what’s involved.

As apple_rom’s BIOS Patcher tool demonstrates, the later BIOSes from Award and AMI are structured enough to allow adding CPU support and bugfixes by a program.
Most bugs like the 32GB HDD limit and UDMA bugs, can be recognized by a unique bytes pattern. In the episodes of my DIY BIOS Modding guide in this thread, I indicate these offending string of bytes whenever possible. Adding CPU support can be a bit more challenging because of the many BIOS changes made over the years.
However, occasionally a rare or new bug requires to do a custom assembly patch. I once found a rare 300MHz CPU speed limit in only 2 Asus socket 7 BIOSes. And patches for jumperless socket 7 boards are particularly challenging due to the unique solutions used by each motherboard manufacturer.

I have been toying with the idea of writing a patcher tool myself but haven’t yet found a solution of how to handle the compressed BIOS.
In recent episodes I explained how to decompress and re-compress the Award BIOSes manually, but doing that from within a patching tool is a programming challenge I’ve yet to solve.
In apple_rom’s tool, he solved this by using external tools like CBROM and LHA to compress his patches. He also avoids patching the main BIOS component (that’s what I do with my manual patching method) by putting the patch code and data in separate modules and patching the BIOS in RAM during each boot-up.
So he only needed to decompress the modules where bugs may be hiding to scan for them.
I know the old UNAWARD tool uses the decompression engine of the BIOS itself, so this may be an option to solve the decompress hurdle. However it would be more elegant and user friendly to let the patching tool do both decompress and compress on its own.

Finding sufficient space in the E000h or F000h segment for the added code and data is usually not a problem. But after compression, all modules still have to fit in the available space. This is the limiting factor, especially on an 128KB BIOS.

Cheers, Jan

CPU Identification utility
The Unofficial K6-2+ / K6-III+ page

Reply 285 of 303, by myne

User metadata
Rank Oldbie
Rank
Oldbie

The way I understand rom.by's tool is that it makes and inserts an option rom with any updates and doesn't overwrite the existing code.

How exactly it takes precedence over the stock code, I don't know.

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 286 of 303, by Chkcpu

User metadata
Rank Oldbie
Rank
Oldbie
myne wrote on 2025-08-26, 03:44:

The way I understand rom.by's tool is that it makes and inserts an option rom with any updates and doesn't overwrite the existing code.

How exactly it takes precedence over the stock code, I don't know.

This is what I know about Romby’s BP tool v4.23 for the Award BIOS.
The tool indeed adds two compressed modules to the BIOS. One is named “start.tmp” and the other “modul.tmp”.

This BP tool contains a database with known binary signatures of code and data that needs improvement, and the blobs of code and data to patch them. After the scan phase, the selected patches are placed in modul.tmp, together with code to execute these patches in RAM later on. So the original compressed modules inside the BIOS flashchip are not changed in any way.

The start.tmp module is very small and only contains a far jump to the start address of modul.tmp. When the BIOS bootblock code decompresses all modules in RAM, also start.tmp and modul.tmp are placed in RAM. In the header of each module, the location in RAM where it has to be decompressed into, is indicated. The BP tool has selected an unused RAM location to store modul.tmp and has programed this locationin its header and in the far jump in start.tmp.

The store location of start.tmp is a bit tricky because it needs to be executed before the start of POST so it can jump into modul.tmp to let it do its patchwork first.
Because the main system BIOS module “original.tmp” is always decompressed first, followed by the other modules, I believe start.tmp is injected into original.tmp at a location that it is executed before POST.
When modul.tmp has finished its patchwork, a far return instruction is executed to return control to the now patched original.tmp in RAM.

Rom.by also provided a roll-back feature to execute the unpatched BIOS.
The modul.tmp code checks for a depressed “-“ (minus) key on the numeric keypad, or a disconnected keyboard, and skips its patching when detecting either condition.

This approach it quite clever and works well when dealing with known bugs and know BIOS layout and structures. The above also explains why BP v4.23 only works on the compressed BIOS.

Cheers, Jan

CPU Identification utility
The Unofficial K6-2+ / K6-III+ page

Reply 287 of 303, by Repo Man11

User metadata
Rank l33t
Rank
l33t
Repo Man11 wrote on 2025-08-18, 03:05:
I also once tried the 2004 update CD which has all of the updates up to the year 2004, and that made no difference. […]
Show full quote
myne wrote on 2025-08-18, 01:56:

I'd just head to Windowsupdaterestored.com and scroll through the list looking for potential fixes.

And/or keep updating till there's nothing left

I also once tried the 2004 update CD which has all of the updates up to the year 2004, and that made no difference.

Installing Windows 2000 was smooth sailing, not one issue. But when I shut it down, once again...

Also, APM was not enabled by default, so I tried enabling it manually with the APM tab under Power Options. When I shut it down then, it goes to a blinking cursor in the upper left corner rather than the "It's now safe to shut down your computer" screen, and you still have to press the power button to shut it off.

I bought another pair of 64 meg SIMMs to bump it up to 256 in order to see if WinXP would be any different. And that has made another peculiarity of this board surface - it blue screens during setup with 256 megs of memory installed with both XP and 2000, but it passes Memtest86! After it initially passed Memtest, I thought the memory wasn't the issue, so I tried a different XP CD, a different ISO, different hard drive, different optical drives, then finally tried 2000 again only to see that it also would inevitably bluescreen or fail to copy a file with it as well.

It just occurred to me that I never tried disabling the motherboard's cache, which is worth a try since I'm using a K6-3+.

No, disabling the motherboard's cache made no difference, but dropping it back down to 128 megs of memory seems to have resolved the issue. Maybe the manufacturer didn't anticipate anyone trying to use this much ram without additional L2 cache (COAST) - or maybe it's some other quirk. No big deal, 128 is more than enough for Win98 and running 2000 or XP on this board would be silly - I'm just doing it as an experiment.

I successfully installed XP on it (version 2002 with SP1) and it runs surprisingly well and it handles 3D Mark 2000 better than Windows 2000 with SP4 did. But it is still too much for such an old machine, the performance penalty is about 300 points; about 2,100 with Win98 versus about 1,800 with XP.

After watching many YouTube videos about older computer hardware, YouTube began recommending videos about trains - are they trying to tell me something?

Reply 288 of 303, by adegn

User metadata
Rank Newbie
Rank
Newbie

I managed to create a tool that can read and write award bioses. It can extract and replace modules and the checksum is calculated based on checksum seed which is determined on load (contrary to awdbedit that has a hardcoded seed)
I tested it on a Mitac Award Bios 6.00PG and I was able to modify the system bios using a hex editor and replace it in the image - and boot the system without any checksum errors. It also loads and saves Award 4.51PG but I haven't yet tested with checksums.

Feel free to download it - or use the code like you like.

If anybody has a reasonable lzh compression algorithm in managed c#, let me hear from you. I used lzh-engine from awdbedit because I couldn't make one in managed code work.

https://github.com/adegn73/Awd/tree/master/Awd

Last edited by adegn on 2025-09-18, 18:40. Edited 1 time in total.

Reply 289 of 303, by myne

User metadata
Rank Oldbie
Rank
Oldbie

https://github.com/ryandrake08/lzhl

no?

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 291 of 303, by evanboonie

User metadata
Rank Newbie
Rank
Newbie
Chkcpu wrote on 2025-02-27, 19:55:

You may have noticed that I mainly patch Award BIOSes for Socket 7.
I did patch a few AMI BIOSes for K6-2+/III+ support, but for this AMI patch to work the BIOS already needs to have support for the regular K6-2/III.

Does this mean that an AMI Bios 6 (7/15/95) with no existing K6 support (won't even boot with an original K6 233) cannot be patched to add K6-2/III support? I'm asking because I'm doing a bunch of mods to an Apple PC comparability card (PCI model) and replacing its BIOS entirely will be rather difficult as it has a bunch of custom stuff in it for the PC card software. I was hoping that with a voltage adapter I could get a K6-2/III working on it. I have attached the BIOS in case it helps with answering this question.

Thanks!

Reply 292 of 303, by Chkcpu

User metadata
Rank Oldbie
Rank
Oldbie
evanboonie wrote on 2025-10-20, 05:50:
Chkcpu wrote on 2025-02-27, 19:55:

You may have noticed that I mainly patch Award BIOSes for Socket 7.
I did patch a few AMI BIOSes for K6-2+/III+ support, but for this AMI patch to work the BIOS already needs to have support for the regular K6-2/III.

Does this mean that an AMI Bios 6 (7/15/95) with no existing K6 support (won't even boot with an original K6 233) cannot be patched to add K6-2/III support? I'm asking because I'm doing a bunch of mods to an Apple PC comparability card (PCI model) and replacing its BIOS entirely will be rather difficult as it has a bunch of custom stuff in it for the PC card software. I was hoping that with a voltage adapter I could get a K6-2/III working on it. I have attached the BIOS in case it helps with answering this question.

Thanks!

Hi evanboonie,

That is quite a challenge you have there, getting a K6-2 to run on the Apple 1997 PC Compatibility Card!

Looking into the AMI BIOS9.ROM, I see this card uses the OPTi 557M Viper-M chipset. This is a 1995 chipset for socket 5 boards. But the BIOS9.ROM looks like it is from 1997 and it has the expected CPU support from that era: Intel Pentium and Pentium MMX, Cyrix 6x86 and 6x86MX, and AMD K5 and K6. So no support for any IDT WinChip.

The K6 support in this BIOS is only for the original K6 model 6, the 2.9V/3.2V Vcore models. The 2.2V K6 model 7 and all later K6(-2/III) models are not supported.

If your K6-233 is a 3.2V model 6, it is supported by the BIOS. But the BIOS also contains an Apple Compatibility BIOS v1.6.4 module that may prevent other than the original Pentium from running.
Although I’m just guessing here, it would be interesting to see if a Pentium MMX, Cx686MX, or AMD K5 work on this card. If you have one of these CPUs, please try.

Another issue may be the power supply. The K6-233 draws a lot more current than a Pentium 166/200. If you can lower the multiplier, you could test the K6-233 at 200 or 166MHz. At these speeds, this CPU will run fine at a lower 2.9V Vcore.

Now to answer your question, with basic K6 support it should be possible to add K6-2 support to this BIOS. But this is a lot of work, so please try the above CPU alternates first, so I know that the time spent on patching this BIOS is not waisted. 😉

Cheers, Jan

CPU Identification utility
The Unofficial K6-2+ / K6-III+ page

Reply 293 of 303, by evanboonie

User metadata
Rank Newbie
Rank
Newbie

Hi Jan, thanks for your reply! I have modded my card to include a socket 7 and lowered the core voltage from its stock 3.52V to 3.3V. It won't do split plane voltage without an adapter (which I don't currently have), so I haven't tested any of the lower voltage CPUs. The CPUs I have tested (all running at 3.3V, voltages below are their recommended values) and their results are as follows:

  1. IDT WinChip 2 200MHz (W2-3DEE200GSA, 3.52V):
    - Not Working. No boot. I assumed low voltage or lack of BIOS support.
  2. Cyrix MII 233MHz (M II-300GP, 2.9v):
    - Working! Ran quite hot even with the giant heat sink I have on it, seems like a real power hog.
  3. AMD K6 233MHz (AMD-K6-233ANR, 3.2V):
    - Not working. No boot.
  4. Intel Pentium MMX 233MHz (2.8V):
    - Working! I have even overclocked the bus to 80MHz and it runs at 280MHz without issue. Seems to stay quite cool with the big socket A cooler I have on it.

I hadn't thought about the power limit potentially impacting the K6 though. I have reverse engineered the VCORE regulation circuitry and it unfortunately uses trace resistance to set the current limit, so measuring it to determine what it is will be virtually impossible with the test equipment I currently have access to. The Cyrix seems like quite a power hungry chip (especially at 3.3V), so unless the K6 uses more, power may not be what is preventing it from booting.

I am buying a socket 7 voltage adapter that uses external 5V to generate VCORE, so I will report back with more CPU tests once that arrives (may be a week or two). I suppose I should also test my K6 in a known good Socket 7 motherboard to ensure it actually works to begin with. I didn't start with a known good CPU.

For now, I've also attached the Apple Compatibility BIOS extension which I believe it loads into the cards as well. Maybe that can reveal something? I've tried disassembling it, but I just don't know enough x86 assembly to make heads or tail of it (or even know if I'm using the dissasembler correctly).

Reply 294 of 303, by evanboonie

User metadata
Rank Newbie
Rank
Newbie

I have confirmed that the K6 233 is a working CPU. I tested it in my "daily driver" socket 7 machine at 200MHz (100MHz * 2) as that was the closest I could get it based on the settings the board is willing to boot with. So it is either power or something in the custom BIOS code that is preventing it from working in the PC card. If we take the power figures on cpu-world at face value and treat the CPU like a simple resistor, the power consumption would look like the following at 3.3V:

  • Pentium MMX 233: 9.3W-25.4W
  • Cyrix MII 233: 14.8W-24.6W
  • K6 233: 17.5W-29.2W

So the K6 really is the most power hungry of the three. I'll test it in the PC card again when I have access to the voltage adapter.

Reply 295 of 303, by Sphere478

User metadata
Rank l33t++
Rank
l33t++
evanboonie wrote on 2025-10-21, 01:28:
Hi Jan, thanks for your reply! I have modded my card to include a socket 7 and lowered the core voltage from its stock 3.52V to […]
Show full quote

Hi Jan, thanks for your reply! I have modded my card to include a socket 7 and lowered the core voltage from its stock 3.52V to 3.3V. It won't do split plane voltage without an adapter (which I don't currently have), so I haven't tested any of the lower voltage CPUs. The CPUs I have tested (all running at 3.3V, voltages below are their recommended values) and their results are as follows:

  1. IDT WinChip 2 200MHz (W2-3DEE200GSA, 3.52V):
    - Not Working. No boot. I assumed low voltage or lack of BIOS support.
  2. Cyrix MII 233MHz (M II-300GP, 2.9v):
    - Working! Ran quite hot even with the giant heat sink I have on it, seems like a real power hog.
  3. AMD K6 233MHz (AMD-K6-233ANR, 3.2V):
    - Not working. No boot.
  4. Intel Pentium MMX 233MHz (2.8V):
    - Working! I have even overclocked the bus to 80MHz and it runs at 280MHz without issue. Seems to stay quite cool with the big socket A cooler I have on it.

I hadn't thought about the power limit potentially impacting the K6 though. I have reverse engineered the VCORE regulation circuitry and it unfortunately uses trace resistance to set the current limit, so measuring it to determine what it is will be virtually impossible with the test equipment I currently have access to. The Cyrix seems like quite a power hungry chip (especially at 3.3V), so unless the K6 uses more, power may not be what is preventing it from booting.

I am buying a socket 7 voltage adapter that uses external 5V to generate VCORE, so I will report back with more CPU tests once that arrives (may be a week or two). I suppose I should also test my K6 in a known good Socket 7 motherboard to ensure it actually works to begin with. I didn't start with a known good CPU.

For now, I've also attached the Apple Compatibility BIOS extension which I believe it loads into the cards as well. Maybe that can reveal something? I've tried disassembling it, but I just don't know enough x86 assembly to make heads or tail of it (or even know if I'm using the dissasembler correctly).

There is an adapter project in my signature btw.

I bet a 200mmx overdrive would work well in this.

The 233 anr is probably the fastest spec match. Voltage wise.

I hate seeing 2.8v cpus ran at 3.3v

There is also the cyrix 366 2.9v but they are kinda rare. Would be a shame if you damaged it with 3.3+v

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 296 of 303, by evanboonie

User metadata
Rank Newbie
Rank
Newbie
Sphere478 wrote on 2025-10-22, 04:14:
There is an adapter project in my signature btw. […]
Show full quote

There is an adapter project in my signature btw.

I bet a 200mmx overdrive would work well in this.

The 233 anr is probably the fastest spec match. Voltage wise.

I hate seeing 2.8v cpus ran at 3.3v

There is also the cyrix 366 2.9v but they are kinda rare. Would be a shame if you damaged it with 3.3+v

I saw your adapter project and it it looks great! I did actually look into it, but ended up going with a vintage adapter from another collector as the build/vs buy cost in my case was about the same.

I promise that no Pentium MMXs were harmed in the process of my research into this card. I looked at the Pentium MMX datasheet and it listed its absolute maximum voltage at 3.7V, so I figured it should be safe to run with a big heatsink for my 20 minute period to test the limits of overclocking. I don't plan on running it in there at 3.3V long-term. I forgot to mention, but I do have a 200mmx overdrive that works fine in this card.

While I'm waiting on my voltage adapter, I've also been attempting to get a Rage 3D Pro working on the card as it has the same pinout as the Mach64 it shipped with. I found a PCI Rage card with EDO memory that I thought would be a good candidate. Using AMIBCP (Where can I find "AMIBCP" (for DOS) ?), I was able to delete and replace the original embedded VBIOS with the one I extracted from the PCI card. Sadly, this attempt did not work and video never initializes, so further research is needed here. I've detailed my progress on that mod over on 68kmla: https://68kmla.org/bb/index.php?threads/x86-c … -10#post-574229

Reply 298 of 303, by evanboonie

User metadata
Rank Newbie
Rank
Newbie
Sphere478 wrote on 2025-10-24, 02:13:

Can you post pics? Does the card expose its pci bus with an expansion port?

Sure thing, I'll attach photos here. This isn't the exact card I've soldered the 3D Rage Pro on, but the socket mod is on there and it is the same model. The glare in the picture hides the text, but the connector below the 82C558M is labeled "XD Expansion" and was used for a serial+parallel expansion card sold by Apple back in the day. I don't have one, but based on pictures I have determined that the serial/parallel card used an ISA based controller on its own power-only PCI card with a ribbon cable to connect to the 🤣 Expansion port. So there should at least be enough of the ISA bus exposed here to possibly build out an adapter and hook up a POST card... I have no idea what type of connector that is though, the only marking on it is "B509". I'll start toning it out and see what I find. Both ISA and PCI run through the 82C558M, so it should be a relatively straightforward search.

Reply 299 of 303, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

If there was PCI I would say to try to make an adapter to a radeon 9250. But with ISA, the onboard would be better.

You may be able to boge wire attach a breakout for pci still though if you tap into enough of the legs, pins, and traces.

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)