<div dir="ltr"><div><div>Thank you very much for solving this riddle!<br>And one more question for Rudolf: please tell, are you using atomDis utility to disassemble atombios into C code? Or there are some other special tools, which probably have more recent versions? (latest version of atomDis is already 4 years old...)<br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 3 June 2015 at 20:27, Rudolf Marek <span dir="ltr"><<a href="mailto:r.marek@assembler.cz" target="_blank">r.marek@assembler.cz</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
First byte after IBM is usually a checksum. So in fact only two bytes differ.<br>
Now you may ask what it is... and it is a IOBASE :)<br>
<br>
typedef struct _ATOM_ROM_HEADER<br>
{<br>
ATOM_COMMON_TABLE_HEADER sHeader;<br>
UCHAR> uaFirmWareSignature[4]; /*Signature to distinguish between Atombios<br>
and non-atombios,atombios should init it as "ATOM", don't change the position */<br>
USHORT usBiosRuntimeSegmentAddress;<br>
USHORT usProtectedModeInfoOffset;<br>
USHORT usConfigFilenameOffset;<br>
USHORT usCRC_BlockOffset;<br>
USHORT usBIOS_BootupMessageOffset;<br>
USHORT usInt10Offset;<br>
USHORT usPciBusDevInitCode;<br>
USHORT usIoBaseAddress; <---------------this changes<br>
<br>
I guess IOBASE of PCI device changes also...<br>
<br>
USHORT usSubsystemVendorID;<br>
USHORT usSubsystemID;<br>
USHORT usPCI_InfoOffset;.<br>
USHORT usMasterCommandTableOffset; /*Offset for SW to get all command table<br>
offsets, Don't change the position */<br>
USHORT usMasterDataTableOffset; /*Offset for SW to get all data table<br>
offsets, Don't change the position */<br>
UCHAR ucExtendedFunctionCode;<br>
UCHAR ucReserved;<br>
}ATOM_ROM_HEADER;<br>
<br>
You can use atomDis to dump it I guess (Did not check if it dumps also the header.<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Rudolf<br>
</font></span></blockquote></div><br></div>