The 8088 in the original PC had only 20 address lines, good for 1 MB. The maximum address FFFF:FFFF addresses 0x10ffef, and this would silently wrap to 0x0ffef. When the 286 (with 24 address lines) was introduced, it had a real mode that was intended to be 100% compatible with the 8088. However, it failed to do this address truncation (a bug), and people found that there existed programs that actually depended on this truncation. Trying to achieve perfect compatibility, IBM invented a switch to enable/disable the 0x100000 address bit. Since the 8042 keyboard controller happened to have a spare pin, that was used to control the AND gate that disables this address bit. The signal is called A20, and if it is zero, bit 20 of all addresses is cleared.
Present
Why do we have to worry about this nonsense? Because by default the A20 address line is disabled at boot time, so the operating system has to find out how to enable it, and that may be nontrivial since the details depend on the chipset used.
Well, Professor Andrew S. Tanenbaum commented "if Intel had designed humans, we would have had some cr0 register to switch atavistic regression to chimp mode"
These were all business decisions more so than engineering ones. Calling Intel's engineers brain-dead is completely silly.
Cost has certainly been a major concern back in the days and explains many of the mediocre solutions that had to be devised (but still allowed personal computing to exist at all in the end.)
These were all business decisions more so than engineering ones. Calling Intel's engineers brain-dead is completely silly.
In the case of Intel and also those around at the time, these companies were pioneering technology
The original x86 architecture is like the width of two horses bums side by side.
Get UEFI hardware and forget about 16 bit modes
Yesterday I found a shocking fact: although the technical manuals speak of 16-bit registers (e.g. AX is { AH, AL}), in real mode, you can still access all the 32bit registers (e.g. EAX contains AX) if you use a prefix to your "move" instruction.
So, all of the 32-bit registers are usable by simply adding "0x66" to the beginning of any instruction, and it seems to work even on Cyrix CPUs.
I don't know if it's a hardware bug, but I am happy it's there
In the case of Intel and also those around at the time, these companies were pioneering technology
Motorola was a pioneering company as well as Intel, and if you look at m68000 there are issues as well. One regards the bus-error handling, which is unrecoverable by design (wrong), the other issue involves an instruction that leakages privileges between user mode and kernel mode (wrong).
Both are fixed with 68010, 68020, ... and note, 68k moved from 8bit (6800) to 32bit (68k) with the same problem you have in 80286: only 24 bits of physical addressing (68000), but note, the design was 32bit since the beginning, so this was not a problem when 68020 added 32 bits of physical addressing.
Intel ...
... let me understand, you have an 8086 CPU with 20bit of physical and logical addresses, and you think it's a good idea, while your CPU will grow over time and expand, to make a circuit in the next CPU, 80286, that disables some high address lines to make it back-compatible?
and, worse still, allowing a hardware bug like the Unreal Mode in every CPU they made? And since Unreal-Mode is known by software like DOS32 and Grub, why don't they consolidate it as a documented feature?
That's what I do find stupid and completely wrong.
That is not a bug. It is supposed to work that way.
[16 bit]
check_bz:
pusha
; Test magic number of the BZ header
mov eax, dword [hdraddr + 0x202]
cmp eax, 'HdrS' ; <-------------------------- yeah, 32bit, it works!
mov dx, msg_sys_error1
jne panic
; Test jump instruction is there
mov al, byte [kernseg * 0x10]
cmp al, 0xeb
mov dx, msg_sys_error2
jne panic
popa
ret
Dude ....
I HAVE a business, I said several times that I develop ICEs and debuggers, plus other stuff, and if x86 takes me 500 hours to develop something, while other architectures/platforms take 50 hours, I think I am right to say that x86 is bad, especially if customers don't pay enough!
(and they don't)
We are in the "programming section" of the forum, it's supposed to talk about software/hardware problems (the title is "Unrel Mode"), but instead, you see and focus on "ideal" crusades for which you have to feel to defend (with x86 fanboyism) something with zero technical background just to see if your useless bullshit can make your life better.
Frankly, it's a troll attitude, and if last time I gave you the benefit of the doubt, now I have enough: stay on my ignore list!
p.s.
you also like to offend people personally, which LOL, it's fine with you that I don't give a shit about filing lawsuits against random people on the internet as I have many more interests in my life that spending my time making bad blood with people like you.
While I'm not familiar with UK law, my comments while not directly intended to offend you, are protected free speech by the laws of the USA, and legally speaking you haven't got a leg to stand on, you can't sue somebody for offending you even if it was deliberate.