The following describes the search/execution of BIOS extensions by the XT's POST.
Other computers are possibly identical in this part of the POST (for compatibility reasons).
20. POST - A search of the memory area from C800:0 to EF80:0 is done (in 2K blocks) for the BIOS extension ROM's that may be located on expansion cards.
When a BIOS extension ROM is found (first two bytes are 55AA), a checksum on it is done. If the checksum is incorrect then the segment of the faulty BIOS extension ROM and the word 'ROM' is displayed (eg. C800 ROM).
If the checksum is correct then the motherboard BIOS ROM hands control to the BIOS extension ROM found on the expansion card. BIOS extension ROM does whatever tests and initialisation that it wants and then returns control to the BIOS ROM on the IBM/XT motherboard. Some BIOS extension ROM's will display messages on the screen.
NOTE:Hard disk controllers for the IBM/XT have a BIOS extension ROM which is normally at C800:0 When control is passed to the controller's BIOS extension ROM, it will issue 1700 series error messages if it finds anything wrong.
Okay. You build your own expansion card containing a ROM that is mapped in memory to start somewhere between C800:0 and EF80:0 (on a 2K boundary). Obviously you must avoid a conflict with any existing BIOS extensions. You set the first two bytes of your ROM to 55AA and you alter the value of some dummy bytes so that the POST sees a correct checksum. That's a piece of cake. The other contents of the ROM will be the fun part.
Obviously it's not as easy as just putting DOS into your BIOS extension. And whatever your BIOS extension does, you must pass execution back to the POST so that:
1. execution of any other BIOS extensions happens, and
2. the remaining POST code runs (it does stuff like enable timer and keyboard interrupts).
However, if you did want your BIOS extension to load/boot DOS, I guess your BIOS extension could do the remaining POST tasks itself, then load/boot DOS. Problem with that is that different computers will have different 'remaining POST tasks'. Throw that idea out the window.
The last thing the XT POST does is invoke the bootstrap loader (via interrupt 19). Therefore maybe your BIOS extension could contain three 'bits' of code. The first bit is what executes when the POST passes execution to your BIOS extension. It simply alters the pointer that interrupt 19 uses to point to the second bit of code in your BIOS extension. In that way the remaining POST tasks get done. The second bit of code in your BIOS extension is a modified bootstrap loader to copy DOS (the third bit in your BIOS extension) from ROM to RAM, then pass execution to DOS.
Sounds simple, but I don't think it will be. There's a lot of research required.