I've been looking into this and I think I've found the problem.
The system BIOS calculates the checksum but only for the second half of the BIOS. The first half appears to not be checksummed at all. It contains the BIOS Setup program only so it has 20 KB of free space (which is where XUB is patched in).
There is also a second checksum calculation for a smaller range in the second half of the BIOS. I'm not sure why they did that. Truth be told, there's a lot of strange things in this BIOS. For example, there are lots of junk instructions which ultimately do nothing intertwined with valid
code and the only reason I can think of why they would do that is to confuse anyone trying to reverse engineer the BIOS.
Anyway, since I changed the option ROM scan in the second half of the BIOS and put the other change to compensate for that in the first half, immediately after XUB, the checksum was still wrong. A POST card would display code 3 in this case.
So here's what I've done instead.
FIRST.BIN is 12 KB. Was previously called BEFORE.BIN and was 16 KB.
FF.BIN has been shortened to 2 KB. Was previously 10 KB.
LAST.BIN is 32 KB. Was previously called AFTER.BIN and was 38 KB. Confused yet?
PTCHLAST.BIN is a patched copy of LAST.BIN with only two bytes changed: the option ROM scan at offset 8D8Eh has been extended to search for option ROMs up to segment F800h. The original BIOS only searched up to segment F000h for obvious reasons. A NOP (90h) used for padding at offset 8E48h has been changed to 88h to compensate for that.
This means that you can now do this to create a copy of the original system BIOS in ORIGINAL.BIN;
Code:
copy/b FIRST.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+FF.BIN+LAST.BIN ORIGINAL.BIN
That is 12 KB + 10 * 2 KB + 32 KB = 64 KB
Or you can create a BIOS with *any* valid option ROM BIOS included (not just XTIDE Universal BIOS) and even combine several option ROM BIOSes as long as their total combined size do not exceed 20 KB.
For example, I created a BIOS with a 10 KB r621 XUB at segment F400h (XUB obviously needs to be configured, padded and checksummed with XTIDECFG before doing this);
Code:
copy/b FIRST.BIN+FF.BIN+FF.BIN+ide_atl.bin+FF.BIN+FF.BIN+FF.BIN+PTCHLAST.BIN C1ROMXUB.BIN
The included XUB is just a regular Large AT-build configured to have one standard 16-bit controller that do not use IRQs (for maximum performance under DOS). You might want to do additional configuration changes such as changing the boot menu color scheme or disabling slave drive detection (assuming there's no room for two drives in these machines). Or you might want to create an entirely new custom BIOS with only the modules you want/need some time in the future.
All of this plus the updated IDA Pro database (reflecting the original BIOS) is included in the attached zip-file.
I hope it works this time and apologies for the extremely long wait.