3 ms·
The original mistake was made by the IBM engineers that came up with that memory map. They reserved a few bytes at the beginning and then a bunch of bytes at th
by guelo 10y ago
The original mistake was made by the IBM engineers that came up with that memory map. They reserved a few bytes at the beginning and then a bunch of bytes at the end. That really makes no sense. They could have avoided all the pain that followed by putting all the reserved space in a contiguous block at the beginning. Maybe they thought it was easier for application programmers to use smaller address numbers? Or maybe it was due to some hardware shortcut, which wouldn't be surprising considering they had already taken the shortcut of using the 8088 instead of 8086. This kind of story is repeated whenever temporary hacks turn into massive successes, for example Javascript's limitations that still haunt us today. If you dig down into these histories you almost always find that it's not the engineers' fault but shortsighted managers.
- zwieback 10y agoI thought it was because it's easier to decode a few upper address lines on the bus so each peripheral is cheaper and easier to build. If you put the hardware addresses in the lower address space you'd have to decode the entire address to see if the access is on your card. I think the real problem was that people didn't want to let go of DOS. OS/2 1.x was a fine OS, especially from 1.2 onward and it ran great on a 286.
- mschaef 10y agoOS/2 may have been fine in the abstract, but set in the context of the time, it left a lot to be desired. Not only did it require a bunch of extra (expensive) memory, it also required new the purchase of new software to take advantage of that memory. (Otherwise it was just a hobbled version of DOS via the compat. box.) Combine that with the $3K SDK cost and the deliberately incompatible PM, there were good reasons it was a hard sell.
- Zardoz84 10y agoOne of the big fails of OS/2 was the IBM never had the desire that it would ran on any PC clone. They priorize doing something similar what does Apple with OSX on lesser degree. In other words, there was few drivers for hardware that wasn't on a PS/2 computer. Add to the mix the non cheap SDK...
- yuhong 10y agoMicrosoft was responsible for licensing it to other OEMs back in OS/2 1.x. Of course, this was before MS turned the the OS/2 2.0 project into an entire fiasco that is now one of my favorite topics.
- Someone 10y ago"If you put the hardware addresses in the lower address space you'd have to decode the entire address to see if the access is on your card." That is incorrect. If your card has a block of 2^n bytes of memory, you need to check the (in this case) 20-n uppercut bits of an address to check whether it is in 'your' address range, whatever block your card is assigned to. Checking whether that is all zeroes isn't easier than checking whether it is, say, 42. And I don't think people were attached to DOS; they were attached to their (expensive!) programs and those required DOS. OS/2 tried to support those programs, but wasn't perfect, and even if it,did, it didn't give those programs more memory.
- zwieback 10y agoYeah, I guess that's true. You always have to decode all the "other" address lines regardless.
- astrodust 10y agoThe real flaw was not where they put it, but that it was immobile, the whole block was "reserved". If they made a few tweaks that allowed peripherals to slot into different spots using some kind of negotiation over the ISA bus this could have been avoided, but that was also way too sophisticated for what was a quick prototype.
- pwg 10y agoThe 8088 CPU requires that its reset vector be placed at the top of its 1MB address space [1]. So even if the IBM engineers had wanted to put all the reserved space at the bottom, there still would have been a tiny "reserved" hole right at the 1MB barrier due to the design of the chip. So with the requirement of the physical CPU hardware for a small reserved space at the top of the (at the time) maximum addressable range resulting in a non-linear memory map anyway, putting other reserved stuff (ROM, I/O memory, etc.) up there was not so much of a bad idea at the time. They clustered the "ROM stuff" up there along with the required reset vector. Also, remember, hindsight is 20/20. The IBM engineer's in Boca Raton, in 1979 to 1981 [2], designing what became the IBM-PC likely had no idea just how big of an industry wide impact their choices were going to eventually have. [1] https://en.wikipedia.org/wiki/Reset_vector https://en.wikipedia.org/wiki/Reset_vector [2] https://en.wikipedia.org/wiki/IBM_Personal_Computer https://en.wikipedia.org/wiki/IBM_Personal_Computer (released Aug. 12, 1981, so the design was created some length before that date, 1979-1981 is a guesstimate)