How The IBM PC Went 8-Bit

If you were around when the IBM PC rolled out, two things probably caught you by surprise. One is that the company that made the Selectric put that ridiculous keyboard on it. The other was that it had an 8-bit CPU onboard.  It was actually even stranger than that. The PC sported an 8088 which was a 16-bit 8086 stripped down to an 8 bit external bus. You have to wonder what caused that, and [Steven Leibson] has a great post that explains what went down all those years ago.

Before the IBM PC, nearly all personal computers were 8-bit and had 16-bit address buses. Although 64K may have seemed enough for anyone, many realized that was going to be a brick wall fairly soon. So the answer was larger address buses and addressing modes.

Intel knew this and was working on the flagship iAPX 432. This was going to represent a radical departure from the 8080-series CPUs designed from the start for high-level languages like Ada. However, the radical design took longer than expected. The project started in 1976 but wouldn’t see the light of day until 1981. It was clear they needed something sooner, so the 8086 — a 16-bit processor clearly derived from the 8080 was born. Continue reading “How The IBM PC Went 8-Bit”

Emulating The IBM PC On An ESP32

The IBM PC spawned the basic architecture that grew into the dominant Wintel platform we know today. Once heavy, cumbersome and power thirsty, it’s a machine that you can now emulate on a single board with a cheap commodity microcontroller. That’s thanks to work from [Fabrizio Di Vittorio], who has shared a how-to on Youtube. 

The full playlist is quite something to watch, showing off a huge number of old-school PC applications and games running on the platform. There’s QBASIC, FreeDOS, Windows 3.0, and yes, of course, Flight Simulator. The latter game was actually considered somewhat of a de facto standard for PC compatibility in the 1980s, so the fact that the ESP32 can run it with [Fabrizio’s] code suggests he’s done well.

It’s amazingly complete, with the ESP32 handling everything from audio and video to sound output and keyboard and mouse inputs. It’s a testament to the capability of modern microcontrollers that this is such a simple feat in 2021.

We’ve seen the ESP32 emulate 8-bit gaming systems before, too. If you remember [Fabrizio’s] name, it’s probably from his excellent FabGL library. Videos after the break. Continue reading “Emulating The IBM PC On An ESP32”

The IBM PC That Broke IBM

It was the dawn of the personal computer age, a time when Apple IIs, Tandy TRS-80s, Commodore PETs, the Atari 400 and 800, and others had made significant inroads into schools and people’s homes. But IBM, whose name was synonymous with computers, was nowhere to be seen. And yet within a few years, the IBM PC would be the dominant player.

Those of us who were around at the time cherished one of those early non-IBM computers, and as the IBM PC came out, either respected it, looked down on it, or did both. But now, unless your desktop machine is a Mac, you probably own a computer that owes its basic design to the first IBM PC.

The Slow Moving Elephant

IBM System/360 Model 30 mainframe
IBM System/360 Model 30 mainframe by Dave Ross CC BY 2.0

In the 1960s and 1970s, the room-filling mainframe was the leading computing platform and the IBM System/360 held a strong position in that field. But sales in 1979 in the personal computer market were $150 million and were projected to increase 40% in 1980. That was enough for IBM to take notice. And they’d have to come up with something fast.

Fast, however, wasn’t something people felt IBM could do. Decisions were made through committees, resulting in such a slow decision process that one employee observed, “that it would take at least nine months to ship an empty box.” And one analyst famously said, “IBM bringing out a personal computer would be like teaching an elephant to tap dance.”

And yet, in just a few short years, IBM PCs dominated the personal computer market and the majority of today’s desktops can trace their design back to the first IBM PC. With even more built-in barriers which we cover below, how did the slow-moving elephant make this happen?

Continue reading “The IBM PC That Broke IBM”

Hackaday Prize Entry: A PC-XT Clone Powered By AVR

There is a high probability that the device on which you are reading this comes somehow loosely under the broad definition of a PC. The familiar x86 architecture with peripheral standards has trounced all its competitors over the years, to the extent that it is only in the mobile and tablet space of personal computing that it has not become dominant.

The modern PC with its multi-core processor and 64-bit instruction set is a world away from its 16-bit ancestor from the early 1980s. Those early PCs were computers in the manner of the day, in which there were relatively few peripherals, and the microprocessor bus was exposed almost directly rather than through the abstractions and gatekeepers we’d expect to see today. The 8088 processor with an 8-bit external bus though is the primordial PC processor, and within reason you will find software written for DOS on those earliest IBM machines will often still run on your multiprocessor behemoth over a DOS-like layer on your present-day operating system. This 35-year-plus chain of mostly unbroken compatibility is both a remarkable feat of engineering and a millstone round the necks of modern PC hardware and OS developers.

Those early PCs have captured the attention of [esot.eric], who has come up with the interesting project of interfacing an AVR microcontroller to the 8088 system bus of one of those early PCs. Thus all those PC peripherals could be made to run under the control of something a little more up-to-date. When you consider that the 8088 ran at a modest 300KIPS and that the AVR is capable of running at a by comparison blisteringly fast 22MIPS, the idea was that it should be able to emulate an 8088 at the same speed as an original, if not faster. His progress makes for a long and fascinating read, so far he has accessed the PC’s 640KB of RAM reliably, talked to an ISA-bus parallel port, and made a CGA card produce colours and characters. Interestingly the AVR has the potential for speed enhancements not possible with an 8088, for example it can use its own internal UART with many fewer instructions than it would use to access the PC UART, and its internal Flash memory can contain the PC BIOS and read it a huge amount faster than a real BIOS ROM could be on real PC hardware.

In case you were wondering what use an 8088 PC could be put to, take a look at this impressive demo. Don’t have one yourself? Build one.

Emulating A Hard Drive With The Raspberry Pi

[Chris] recently moved a vintage IBM 5150 – the original PC – into his living room. While this might sound odd to people who are not part of the Hackaday readership, it actually makes a lot of sense; this PC is a great distraction-free writing workstation, vintage gaming machine, and looks really, really cool. It sat unused for a while, simply because [Chris] didn’t want to swap out piles of floppies, and he doesn’t have a hard drive or controller card for this machine. After reviewing what other retrocomputer fans have done in this situation, he emulated a hard drive with a Raspberry Pi.

The traditional solution to the ‘old PC without a hard drive’ problem is the XTIDE project. XTIDE is a controller card that translates relatively new IDE cards (or an emulated drive on another computer) as a hard drive on the vintage PC, just like a controller card would. Since a drive can be emulated by another computer, [Chris] grabbed the closest single board computer he had on hand, in this case a Raspberry Pi.

After burning an EPROM with XTIDE to drive an old network card, [Chris] set to work making the XTIDE software function on the Raspberry Pi side of things. The hardware on the modern side of the is just a Pi and a USB to RS232 adapter, set to a very low bitrate. Although the emulated drive is slow, it is relatively huge for computer of this era: 500 Megabytes of free space. It makes your head spin to think of how many vintage games and apps you can fit on that thing!

Demoing An 8088

The demoscene usually revolves around the Commodore 64, and when you compare the C64 hardware to other computers of a similar vintage, it’s easy to see why. There’s a complete three-voice synthesizer on a chip, the hardware allows for sprites, a ton of video pages, and there are an astounding sixteen colors, most of which look good. You’re not going to find many demos for the Apple II, because the graphics and sound are terrible. You’re also not going to find many demos for an original IBM PC from 1981, because for thirty years, the graphics and audio have been terrible.

8088 MPH by [Hornet], [CRTC], and [DESire], the winner of the recent 2015 Revision Demo compo just turned conventional wisdom on its head. It ran on a 4.77 MHz 8088 CPU – the same found in the original IBM PC. Graphics were provided via composite output by a particular IBM CGA card, and sound was a PC speaker beeper, beeping sixty times a second. Here’s a capture of the video.

Because of the extreme nature of this demo, it is unable to run on any emulator. While the initial development happened on modern machines with DOSbox, finishing the demo needed to happen on an IBM 5160, equivalent to the 5150, but much easier to find.

Despite the meager hardware and a CPU that reads a single byte in four cycles, effectively making this a 1.19 MHz CPU, the team produced all the usual demoscene visuals. There are moire patterns, bobbing text, rotated and scaled bitmaps, and an astonishing 1024-color mode that’s an amazing abuse of 80×25 text mode with NTSC colorburst turned on.

Below you can find a video of the demo, and another video of the audience reaction at the Revision compo.

Continue reading “Demoing An 8088”