First post, by riplin
- Rank
- Newbie
Code here: https://github.com/riplin/hag/blob/main/resea … ios/86c764x.asm
Building with MASM will produce a 100% perfect duplicate of the original BIOS file. Original came from here: http://chukaev.ru54.com/video_en.htm - 86c764x1.zip
Hi folks,
So I disassembled the BIOS of an S3 Trio64. I wanted to see how the mode switch code worked and thought that disassembling and annotating the BIOS would be a nice way to figure this out (the programming manuals all glaze over this subject).
Some interesting things I found:
- The BIOS supports the Trio32 (86c732), Trio64 (86c764) and Trio64 (86c764x). That last one is a different stepping, but they apparently found it necessary to augment the chip's name.
- The BIOS supports both VLB and PCI.
- A lot of the code is just dealing with verifying and maintaining the BIOS Data Area.
It also has a built in beep function, so could be that sometimes the beeps you hear are from the video BIOS and not the system BIOS. Speaking of the system BIOS, it apparently also has a stock int 10h handler. One of the first things this bootstrap code does is call into that handler. Later on it sets up an int 42h handler that points in to the system BIOS as well and regularly calls in to that. I suspect that it's calling back in to the System int 10h handler to keep it in sync with itself? Not sure about this one yet.
Perhaps when this BIOS is fully annotated, it may be possible to patch it to fix the slowdown bug and maybe even add the missing VBE modes.
I'm still grinding through it, and I've probably made mistakes, if you spot any, please let me know! I already know that the draw rect and the image stuff isn't really that, it's the character set code and it's patching an character set. But when I was parsing through the data, it kind of looked like an image (this was before I had found the character sets right next to it).
Anyway, let me know what you think and if you want to help me out, please do! 😀