A Bios Modification Journey

After several years being almost in total darkness in my quest for bios knowledge, finally this is the right time to look back what I've achieved so far and put some marks on events which I think remarkable. This is important since today is my moment of glory in this process.

  1. May 2002 was the first time I began to realize what could be done to patch my BIOS. At that time what I was aware of was about an ISA ROM patch, unfortunately due to lack of knowledge, I was a bit stuck and rely to other people's tool to do the mod (NVidia Bios Editor). Also, around that timeframe I was relying on WPCRSET and WPCREDIT from h.Oda to do the patch testing using driver, before incorporating it into the BIOS. Only several months later I was able to build my own tool which then named Explochip which was actually an abbreviation for chip explorer.
  2. November 2002 was the first time I have a stable BIOS patch for my machine, that have been tested thoroughly. It used the ISA ROM technique. Explochip was also still in development stage, along with development and testing of my hardware monitoring software called DoctorPC. The patch that I developed was tested using my own custom built windows 2000/XP driver and a special Linux script (which invoke PCITweak program during boot), before it's incorporated into the BIOS patch.
  3. March 2003 was also a remarkable time. As that was the first time I release my BIOS modification technique to the public through http://www.overclockerindo.com website in Bahasa Indonesia. While the older "quick hack" version was still in http://forums.biosmods.com. As I can remember (I forgot the exact time), at the same timeframe Mike Tedder a.k.a bpoint developed the Award Bios Editor (Awdbedit) and the Awardmod project (which also helped in my modification trick) was also still in heavy development but already function as expected to my bios. After successful with the ISA ROM trick, I decided to use my spare time learning windows driver development. At that time Explochip was already working, but it's still ugly in terms of coding style, so I decided to learn a bit about software engineering and development in windows and linux platform. The result was quite suprising. I made a stepper motor control software for both Linux and Windows with a "current amplifier" circuit which I designed myself. I was successful in controlling the stepper motor. But at the same time I really gone frustated by a nasty win32API GUI bug that hog my DoctorPC software, so I decided to rebuild the software using MFC and it worked flawlessly, but I was still unimpressed by the solution.
  4. May 2003. Two months gone and I decided to make a "quick and dirty" article on how to build windows 2000/XP driver and release it at http://www.overclockerindo.com in Bahasa Indonesia. Unfortunately, until now, it has no english counterpart :(. Explochip was still in VERY SLOW development due to all the functionality I need already been meet. Along with the article I also made Explochip source code available for download. In the same month I really interested in the expansion ROM operating system development which I conducted myself since I had 64 Kbyte flashrom laying around waiting to be "abused >:)". This was the main reason I suspended explochip development. DoctorPC was already usable in my machine with no silly bug, so I keep it that way. At the end of the month, Expansion ROM OS was still in infancy and buggy. Due to trip to Bali, I couldn't test my latest code, but I brought the source code during the trip and tried to figure out where the bug laid in my code. Upon the trip I realized some possible solution. But as of back from the trip and trying all the possibility that I figured out during the trip, I was still stuck and no documentation available at all :( . I've searched through the web for clues, but no explanation on how to build a ROM based OS in x86 architecture. Actually some company already done it but of course it's propietary, so I had to figure it out myself. After two weeks contemplating, I found the bug. It laid in the GDT addressing scheme and a "bug" due to nasm which was not working as I expected before, my logic was already right. Only after several days analyzing the resulting binary code from nasm, I was able to figure out what's wrong. After patching the bug and being able to switch to Protected Mode, I suspended the Expansion Rom OS project and switched back to explochip. The reason was, from that point on, I'd be able to do whatever I want with the Expansion ROM OS development and I also need to learn a lot more to be able to continue the project. The next 6 months were busy months, so I didn't do a lot things about these hobby project, only cosmetic patches to Explochip and DoctorPC.
  5. As of December 2003 - January 2004 I learned a lot (informally) about OS development and software engineering. No remarkable BIOS modification during the time, but what I learned during that time was invaluable in the next couple of months.
  6. As of March 2004 (probably beginning of April 2004, I didn't remember the exact time), the expansion ROM OS project continued. Since I owned two machine as testbed at that time, I decided to buy another NIC to test the OS code. Due to lack of suitable flashrom chip supply in my city, I was stucked for several days in one of my machine. Then I decided to hack a PCI card which already had flashrom with it (an old SCSI controller), in the hope that the mainboard BIOS would be fooled by my tricks. Amazing!!!, it was working as what I expected. But there's a bug that was only being revealed at later weeks.
  7. End of April 2004. Due to bug that I encountered in March-April 2004, I decided to get my hands dirty again in BIOS modification. I decided to do modification in my mainboard system BIOS (a.k.a original.tmp), after 1 and half weeks trying every tricks known to me, I managed to achieve my goal :D. At later weeks (beginning of May), I wrote it down and published it in my humble website in May 8th 2004.
  8. 2nd-3rd week of June 2004. I was doing a more scientific approach to BIOS modification. I'll explain later about this when I have time to write an article about it >:) .

-- Note that all my hobby project mentioned here is completely in search for knowledge, not for commercial purposes --

written 21:45 June 20th 2004 by Darmawan MS a.k.a Pinczakko a.k.a maman

Some worth quotes :
" Human knowledge belongs to the world " -- Teddy, from the movie Antitrust
" I'm here now since I'm standing in the shoulder of giants " -- Isaac Newton
" Here we are, back in the days when men were men and they build their own device driver" -- Linus Torvalds
" Cogito ergo sum " -- Descartes
" Nature speaks in the language of mathematics " -- Galileo Galilei