jal wrote:
Quote:
The PUSH/POP problem where SP is (dec/inc)remented before or after the store/store.
That is
not a problem, that's an implementation choice.
It's
not an implementation choice - the wrong SP value is being pushed. The way around this is to replace all occurences of "push sp" with:
Code:
push bp
mov bp, sp
xchg bp, [bp]
The "pop sp" version should be obvious.
Quote:
Quote:
It is also common for BIOS implementors to use a buggy loading address for the boot sector (07C00:0000 instead of 0000:7C00) - they do translate to the same physical address but that is not always enough.
There is nothing "buggy" about using 07c00:0000 instead of 0000:7c00. And yes, that
is always the same physical addess in real mode (i.e. 7c000).
It
is a bug as many people on this forum will tell you - the BIOS Boot Specification specifically defines the address 0000:7C00h to make sure that code will
always work - the same physical address will
not be enough as a simple relative jump will screw everything over. A workaround is a workaround is a workaround.
Quote:
Quote:
I doubt anyone bothered to write a such a document.
Err... you really think that back when the 80286 was released nobody "bothered to write" a document explaining the differences?!
I meant officially. And to go through unofficial material is more often than not unreliable. I'm also missing the link in your post to such a list so you are obviously in a bad mood and randomly trying to start a flame with someone.
Quote:
I'm not sure what you were smoking when you write all this, l4b, but usually you're a lot more informative and closer to the truth. Please refrain from posting, especially when someone else (in this case Gigasoft) has already posted everything the OP needed to know.
In case you need glasses, my post came before Gigasoft's post. Before trying to start a flame with me please make sure you know what you're talking about, you troll.
And now, being less OT, there are also other differences - for instance:
- Divide exceptions in the 8086 will leave CS:IP pointing to the following instruction.
- after reset CS:IP = F000:FFF0 vs. the 8086 FFFF:0000, in order to allow sufficient code space to enter pmode without reloading CS.
- Do not rely on IDIV exceptions for quotients of 80H or 8000H. The 8086 will cause exception 0.
Hope I'm being informative enough this time.