• Please review our updated Terms and Rules here

Using PC XT ROM BASIC To Host XTIDE + BIOS Reverse Engineering Misc.

charlysan

Member
Joined
Apr 8, 2023
Messages
38
I haven't found any thread that describes this subject in detail, so decided to write a small wiki that covers the whole process.

And I have also included a section on how to reverse engineer an XT BIOS so that it can search for Option ROMs above 0xF600.



debug_juko.png



Feel free to comment or ask any questions.
 
Last edited:
Feel free to comment or ask any questions.
I know that the 'Introduction' is only an introduction, but beware that it is in error.

"Original IBM PC 5150 included a built-in version of BASIC interpreter, also referred to as Cassette BASIC, as part of the 40 KB total ROM. This version of BASIC was 32KB, and it was installed in a second ROM socket:"

Per [here], in the IBM 5150, Cassette BASIC is split over 4 ROM's, in sockets U29, U30, U31 and U32.

The outline drawing shown is that of an IBM 5160 motherboard, not an IBM 5150 motherboard, and the diagram is wrong.
Per [here], although the "ROM BASIC" (Cassette BASIC) code is 32 KB sized, it is actually split over both ROM's.
And if the BIOS ROM is a 1986 dated one, removing either ROM (both contain part of the BIOS) will result in a 'appears dead' motherboard.
 
Feel free to comment or ask any questions.
I found this in the other wiki "Hard disk emulation over serial port for PC XT clone using XTIDE";
0xA1 is the checksum, and it's duplicated because some cards (like mine) overrides the last byte of the ROM.

This is news to me. As far as I know, the only NIC with this problem is the 3Com 3C503 and it overrides the last two bytes. I have never seen anyone mention this being a problem with Intel EtherExpress cards. Can you clarify, please?
 
I found this in the other wiki "Hard disk emulation over serial port for PC XT clone using XTIDE";


This is news to me. As far as I know, the only NIC with this problem is the 3Com 3C503 and it overrides the last two bytes. I have never seen anyone mention this being a problem with Intel EtherExpress cards. Can you clarify, please?
I remember I had that issue when running those tests, but let me double check and I'll get back to you.
 
BTW, there is one assumption I did at the end of the wiki: "I didn't expect to see this. XTIDE code is located at 0xF800 and not in 0xF600 as it should be. But then I realized that this is due to ROM shadowing.". I will appreciate if somebody can confirm if I'm right about that. Thanks.
 
BTW, there is one assumption I did at the end of the wiki: "I didn't expect to see this. XTIDE code is located at 0xF800 and not in 0xF600 as it should be. But then I realized that this is due to ROM shadowing.". I will appreciate if somebody can confirm if I'm right about that. Thanks.
1. ROM shadowing is done to RAM (for the speed improvement). F8000 is not RAM.

2. It's been a while, but my understanding is that with ROM shadowing, the ROM code still appears to be at the original address. It's just that 'magic' is happening in the background (with the RAM being used for the purpose becoming unavailable to the OS).
 
BTW, there is one assumption I did at the end of the wiki: "I didn't expect to see this. XTIDE code is located at 0xF800 and not in 0xF600 as it should be. But then I realized that this is due to ROM shadowing.". I will appreciate if somebody can confirm if I'm right about that. Thanks.
I remember reading somewhere that some early implementation of ROM shadowing did move the range though I can't recall where I read that so I can't give specifics. With that said, I don't think any XT class computers had ROM shadowing - I believe that came later in the 286 era.
 
I remember reading somewhere that some early implementation of ROM shadowing did move the range though I can't recall where I read that so I can't give specifics. With that said, I don't think any XT class computers had ROM shadowing - I believe that came later in the 286 era.
I suspect that the ROM sockets on the OP's motherboard are sitting at addresses different to what the OP thinks they are.
 
I suspect that the ROM sockets on the OP's motherboard are sitting at addresses different to what the OP thinks they are.
I've just done a quick test and modified the BIOS to search for option ROMs up to F7000, and it didn't find it. So, I think this confirms your thoughts; the ROM just sits at F8000 on this board.
 
Back
Top