An 8088 By Any Other Name
Come take a stroll down memory lane and learn a few things about microprocessors along the way with the Arduino8088 and an NEC V20.
In the early days of personal computing, the rules were still being written and Silicon Valley had something of a Wild West vibe to it. Garages and small office spaces became the breeding grounds for ideas that would eventually revolutionize the world. Companies like Apple, Microsoft, and Hewlett-Packard were just starting to find their footing, with their founders often working late into the night, fueled by caffeine and an unshakable belief in their visions.
The lack of established norms and regulations meant that risk-taking and creativity were not only encouraged but necessary. The tech landscape was uncharted territory, where intellectual property rights, venture capital, and startup culture were still in their infancy. Who owns the rights to software? Is it okay to copy that floppy? How about hardware designs? Answers to questions such as these had not yet been fully realized.
One of the most notable examples of this anything-goes atmosphere was NEC’s V20 microprocessor. It was not just inspired by the very popular Intel 8088 processor, it was pin-compatible. The V20 understood the same instruction set, so it could literally be dropped-in in place of an 8088, except it performed better and cost less. No, Intel did not approve of this, and no, they were not happy. But NEC did it anyway.
Aside from the history, the V20 is an interesting chip technologically. This 16-bit CPU provided a low-cost option for powering early PCs, and it also pulled in some functions from more advanced chips, like the Intel 80186 and 80286. So GitHub user dbalsom decided to take a deep dive into the operation of this chip, and fortunately for us, we can come along for the ride.
As a starting point, dbalsom created the Arduino8088 that makes it easy to experiment with an Intel 8088 or NEC V20 CPU with the help of an Arduino Due. Using the Arduino’s GPIO pins, one can put data on the address and data busses, and control the clock pulses and other signals that are sent to the CPU. This makes it possible to manually execute instructions on the CPU at the level of electrical signals, which allows one to deeply explore its capabilities.
For those unfamiliar with assembly language or the internals of a microprocessor, every CPU has an instruction set made up of instructions like ADD or JMP, for example. These instructions are also given binary representations so that they can be supplied to the chip via electrical signals on its pins. These instructions may also have operands, like a number to add to a register (internal storage within the CPU), or an address in memory to jump to before executing the next instruction.
In the write-up, dbalsom goes into detail about how these instructions work, and how to execute them. There are also a lot of tips that could help one to optimize performance, and some notes about peculiarities of the V20 processor. Is this knowledge relevant today? Well, not exactly. But if you want to learn more about microprocessors and computing, starting with an Intel Core i9 is not a great way to go. You have to learn to walk before you run, and a V20 is an excellent way to help you find your footing.