Ruud
Veteran Member
Hallo allemaal,
Out of curiosity I started to disassemble the Landmark ROMs for the PC/XT and AT. So far some parts went smooth and in some parts I have no idea what is going on exactly. At least I know now how the ROMs are able to use subroutines without needing RAM.
I have only done a little with the AT ROM. Two reasons:
- After the reset the first thing the AT does is updating the error counter on the screen. That completely flabbergasted me. The only reason I can think of that this happens is that an AT can be resetted by the 8042 if a program/user wants to return from the protected mode: the only way an AT can do that is through a reset. I can imagine that this mechanism is used by the ROM for its own purposes as well.
- Digging deeper and having a rough look, I found out that quite some parts are the same as the code of the PC/XT. I could save some time later by completing the PC/XT ROM first.
Because of the various troubles I ran into and being interested in having a diagnostic ROM with the complete source code, I have been thinking to write my own one. For the moment I would start with the PC/XT one because I'm familiar with the regular BIOS ROM. But it doesn't make sense inventing the wheel twice so my question is: has such a diagnostic ROM (with free source code) been developed before?
I'm not particularly fond of the display of the Landmark, IMHO it is a bit crowded. I rather would prefer a scrolling screen but then what to do with errors? I have some ideas regarding the layout and more, but I don't mind to get suggestions, ideas or even pieces of code. My work will be open source anyway.
FYI:
- I use NASM to assemble the result. The result won't be byte exact as the original due to the fact that NASM sometimes uses other code for certain instructions than the original assembler. I created a program that compares the new and original binary but discards equivalent codes. FYI: I created a BIN with NASM using the original IBM source code for the first PC and I had no problems whatever.
- The disassembler provided by NASM is bad IMHO, so I created my own one. So far it does it job good but it still has its flaws: I'm not familiar with specific 8087 and 80286 code so these sometimes come out wrong. 808386 and higher are not supported (yet).
Out of curiosity I started to disassemble the Landmark ROMs for the PC/XT and AT. So far some parts went smooth and in some parts I have no idea what is going on exactly. At least I know now how the ROMs are able to use subroutines without needing RAM.
I have only done a little with the AT ROM. Two reasons:
- After the reset the first thing the AT does is updating the error counter on the screen. That completely flabbergasted me. The only reason I can think of that this happens is that an AT can be resetted by the 8042 if a program/user wants to return from the protected mode: the only way an AT can do that is through a reset. I can imagine that this mechanism is used by the ROM for its own purposes as well.
- Digging deeper and having a rough look, I found out that quite some parts are the same as the code of the PC/XT. I could save some time later by completing the PC/XT ROM first.
Because of the various troubles I ran into and being interested in having a diagnostic ROM with the complete source code, I have been thinking to write my own one. For the moment I would start with the PC/XT one because I'm familiar with the regular BIOS ROM. But it doesn't make sense inventing the wheel twice so my question is: has such a diagnostic ROM (with free source code) been developed before?
I'm not particularly fond of the display of the Landmark, IMHO it is a bit crowded. I rather would prefer a scrolling screen but then what to do with errors? I have some ideas regarding the layout and more, but I don't mind to get suggestions, ideas or even pieces of code. My work will be open source anyway.
FYI:
- I use NASM to assemble the result. The result won't be byte exact as the original due to the fact that NASM sometimes uses other code for certain instructions than the original assembler. I created a program that compares the new and original binary but discards equivalent codes. FYI: I created a BIN with NASM using the original IBM source code for the first PC and I had no problems whatever.
- The disassembler provided by NASM is bad IMHO, so I created my own one. So far it does it job good but it still has its flaws: I'm not familiar with specific 8087 and 80286 code so these sometimes come out wrong. 808386 and higher are not supported (yet).