Total Downloads

2,593,412

Total Files

9,206

Latest Update

10

Programming Windows: IBM Defends the Original PC (Premium)

Posted July 21, 2019 | Dev | Hardware | IBM | Intel | Programming Windows | Windows


In Programming Windows: Wintel (Premium), I described how IBM decided to enter the personal computing market in 1980 and did so in less than a year by choosing open, inexpensive third-party hardware and software solutions. Key among the components IBM chose was the Intel 8088, a cost-reduced version of the 16-bit 8086.

As noted previously, the Intel 8088 and 8086 ran in a single operating mode called real mode and they utilized a 20-bit segmented memory address space which limited the amount of RAM to 1 MB (1024 KB). That seemed like a lot of memory in 1980/1981—the consumer-oriented personal computers of the day typically offered just 4 KB to 64 KB of RAM, for example—and IBM semi-arbitrarily segmented the available address space to accommodate different needs. The first 640 KB was available to any software running on the chipset (operating system plus an application, typically) while the remaining 384 KB was divvied up between the BIOS, video, and peripherals.

That last bit would bedevil IBM, PC clone makers, software makers like Microsoft, and users for years to come.

Intel first worked around the real mode weirdness by supporting up to 16 MB of RAM in protected mode, plus memory protection and management functionality, in its 16-bit 80286 processor. Bill Gates would decry this half-step as a “brain-dead” kludge that didn’t really solve the problems because it separated its memory into 256 KB segments that could only be accessed one at a time.

With the 80386, however, Intel finally delivered the chipset that PC industry needed, in part because it final sought design feedback from key players like Microsoft. The 386 was fully 32-bit and could address up to 4 GB of RAM. It provided a flat, non-segmented memory space. Better still, it could switch between real, protected, and its own 386 protected mode on the fly, and in the latter mode, it offered a virtual 8086 capability that allowed Windows to concurrently run multiple instances of MS-DOS applications simultaneously.

During this transition, Microsoft evolved Windows to support the new Intel chipset capabilities. Windows/286 specifically targeted the 80286 and its unique features, and Windows/386 did the same for the 80386; both were released in 1988. Windows 3.0, from 1990, could run in any mode supported by any Intel x86 processor, and would try to choose the best mode automatically; it also provided improved memory management when running on a 286 or 386. And then Windows 3.1, released in 1993, finally supported a true 32-bit 386 Enhanced Mode and up to 256 MB of RAM.

If you accept that Windows 3.1 finally pushed the PC past the issues that were created by IBM’s weird segmentation of the 8088 address space, then 12 years had elapsed. But if you feel that it wasn’t until 1995 and Windows 95, which required a 386 or better and its flat 32-bit memory space, then this fix took 14 years. Either way, that’s a long time.

So, I was curious to see whether IBM ever owned up to this mess.

History shows us that IBM sought to move past the technical limitations of MS-DOS by co-creating with Microsoft a new DOS, eventually called OS/2, that would first embrace the 80286 and then the 80386 and newer Intel processors, helping to move past real mode and into era defined by protected mode and then a full 32-bit address space. Likewise, we know that the IBM of the day—in a way of thinking that Microsoft later emulated—cared so much about its existing customers that it slowed the evolution of its platforms to accommodate those with older, less capable PCs. It also moved very slowly to ship new PCs—by then, under the brand PS/2—powered by 286 and 386 chips.

Right around this time, almost 10 years into the PC era, Byte Magazine published a 15th-anniversary issue in which it gathered over 60 of “the world’s most influential people in personal computing to predict the future [and] analyze the future.” This issue of our industry’s most important publication is fascinating on a number of levels. But a related article in the issue that discusses the creation of the original IBM PC, written by David J. Bradley, a member of the team that designed that machine, is just as fascinating.

Bradley allowed Byte to photograph and publish for the first time one of the first two IBM PC motherboards, front and back. (The other one was given to Microsoft so that it could create MS-DOS.)

That’s really cool. But I was even more interested to read Bradley’s defense of IBM using of the 8088 and of its decision to segment the PC’s access of the 8088 address space, creating the infamous 640 KB barrier. You know, the decisions that would dog an entire industry for 12-14 years.

IBM went the Intel x86 route because of its previous experience creating the DataMaster computer in 1987. That proto-PC was a one-piece design with a 12-inch monochrome display, two 5.25-inch floppy disk drives, and an 8-bit Intel 8085 CPU. The resulting machine “didn’t have the flexibility needed for a personal computer,” Bradley wrote. Because of the limitations of 8085’s 64 KB address space, IBM had to invent a paging mechanism that allowed the machine to address at least 256 KB of RAM. And in doing so, it became very familiar with the Intel architecture and supporting chipsets.

Like many personal computers of the day, the DataMaster included a built-in BASIC interpreter, though this wasn’t a Microsoft design but was rather the convergence of two IBM implementations. The delays in getting that converged BASIC completed delayed the release of DataMaster by a year.

“That experience taught us two things about getting a product to market rapidly,” he wrote. “We needed to use an existing BASIC, and we needed to streamline the IBM development process.

Obviously, IBM solved the first problem by approach Microsoft for a BASIC interpreter for its first PC. And it solved the typical IBM development process issue by creating that PC as a skunkworks project that bypassed the mothership and used open, off-the-shelf, and third-party components. (Well, mostly. The original IBM PC used the same keyboard as the DataMaster, Bradley says.)

As for the 8088, IBM knew that it needed to use a 16-bit processor to gain access to a large address space: The 64 KB address limit of the 8085 “had to be overcome.” That processor, and the peripherals that would come with the PC, needed to be available immediately. And IBM couldn’t afford a long learning process: It needed a “system with a DMA controller, an interrupt controller, timers, and parallel ports,” and they all needed to be familiar.

Given its experience with the 8085, IBM would need to use the Intel 8088 or 8086, both of which were more modern, 16-bit descendants of the 8085.

“We chose the 8088 because of its 8-bit bus,” Bradley claimed. (Emphasis mine.) “The smaller bus saved money in the areas of RAM, ROM, and logic for the simple system. A bonus we got from using this Intel processor was the numeric coprocessor [which was a separate chip]. The 8087 [numeric processor] gave the 8088 a fast partner for floating-point calculations. But since the 8087 wasn’t yet available when the PC was announced, we simply left an empty socket on the board and didn’t disclose a use for it.”

The first IBM PC came with 16 MB of RAM and it could be expandable to 64 KB on the system board. Using expansion cards, you could get up to 256 KB of RAM, which Bradley says was “an impressive amount for a personal computer at that time.”

He was right. The leading personal computers of the day were all 8-bit designs that shipped with considerably less RAM than that. The Apple II, for example, maxed out at 48 MB. And later 8-bit designs pushed the limit with 64 MB and, eventually, 128 MB of RAM.

But what about that weird, seemingly arbitrary 640 KB limitation for DOS?

“The 8088 has an address space of 1 MB,” Bradley explained. “We reserved the upper 128 KB for ROM on the system board. We wanted the video memory on the display adapters to be in the processor address space, so we reserved a 128 KB section of memory for them. Finally, we reserved 128 KB of memory for ROM or RAM on other adapter cards. At the time, we thought those allocations were generous.”

For the math averse, 128 + 128 + 128 is 384. And when you subtract 384 KB of RAM from the 1 MB (1024 KB) address space supported by the 8088, you’re left with … wait for it … 640 KB of RAM.

“Since the capacity of the original IBM PC was 256 KB of RAM, and the norm for systems of that time was 64 KB, we felt comfortable with the design,” Bradley continued. “Although 640 KB did become a limitation, so did the other reserved areas. I don’t think there was a better way of arranging the memory that would have made a difference.”

Bradley also comments about the supporting chips that further helped the 8088 in the original IBM PC, like the DMA (direct memory access) that sped I/O performance, the interrupt controller that supported type ahead, and the three-channel timer/counter that helped the machine tell time (at least while it was powered on). And the bus architecture that, yes, was based on the design from the DataMaster and was, arguably, one of the IBM PC’s strongest selling points: A machine that could be updated, seemingly infinitely.

“One thing we didn’t foresee when we defined the system bus was the proliferation of adapter cards for the PC,” he noted. “Although the variety turned out to be a good thing because it gave customers a wide choice of options, we hadn’t allowed enough I/0 addresses for all the cards that eventually were developed. Original expansion cards decoded only a 10-bit address, and many cards used 8 or 16 addresses. Consequently, almost every card ended up with a set of switches to select the I/0 address it would respond to and the interrupt line it would use in a given system. While the DIP switches were workable, they required the user to review all the documentation every time another card had to be installed. The answer was a programmable method of device selection, which was one of the reasons for the change to the Micro Channel architecture in the PS/2 family.”

That’s a bit disingenuous: IBM’s move to MCA was driven by its desire to seize control of the PC industry from the clone makers that had copied IBM’s designs. But the technical need was certainly there, and clone makers responded to MCA with an open 32-bit bus design called EISA that provided the same benefits but without IBM’s expensive licensing costs. That IBM later supported EISA too is, perhaps, ironic.

Whatever. Bradley’s description of how and why the original IBM PC was designed is certainly credible and it’s a more logical explanation than I had expected. And it’s a story that deserves to be told.

“When we first began development of the IBM PC, we didn’t appreciate the potential of the product,” he concluded. “The company originally estimated it would market a total of about 250,000 units over a five-year period. As it turned out, there were some months when we built and sold nearly that many systems. IBM has since delivered millions of PCs to the marketplace. The sales estimates may have been faulty, but the product certainly wasn’t. I’m very happy to have been a part of it.”

Tagged with , ,



Source link

')
ankara escort çankaya escort çankaya escort escort bayan çankaya istanbul rus escort eryaman escort ankara escort kızılay escort istanbul escort ankara escort ankara escort escort ankara istanbul rus Escort atasehir Escort beylikduzu Escort Ankara Escort malatya Escort kuşadası Escort gaziantep Escort izmir Escort