I am writing Sil0680 driver.
Chameleon 2.0 rc3 boot reports "EBIOS read error 0x42" 5 times about drives connected to Sil0680 IDE board with the latest BIOS. As the symptom is not related to hard drives, I suspected the boot source code and found biosfn.c's ebiosread ( request code = 0x42 ) has a problem.
According to BIOS specification, when carry flag is not set at return, the bios call was successful. However, the code just checks the value in bb.eax.r.h ( whether 0 or not ). The following code should be inserted before the check, I believe.
if(bb.flags.cf == 0)
bb.eax.r.h = 0;
Most BIOS seem to clear AH at successful call, but it is not guaranteed ( and SiliconImage BIOS doen't ).
Though I tried to build booter, I could not build it ( the size becomes smaller ).