Sign in

Ken Shirriff

@righto.com
6.4K followers 297 following 454 posts

Computer history. Reverse-engineering old chips. Restored Apollo Guidance Computer, Alto. Ex-Google, Sun, Msft. So-called boffin.

PostsRepliesMedia
Ken Shirriff @righto.com · 26/09/2026
The text for the micro-instruction is my interpretation, since I don't know how Intel expressed the micro-instructions. In the ROM, the instruction is 16 bits: jump op, offset, and condition. I could have said "JMP +0b 3e", but a verbose description makes it easier to understand.
130
Ken Shirriff @righto.com · 26/09/2026
Credits: I've been working on this with the members of the "Opcode Collective", especially Smartest Blob and @gloriouscow.bsky.social, who used ML to convert ROM images to microcode data and extensively analyzed the contents. 7/7
1421
Ken Shirriff @righto.com · 26/09/2026
For details on how the 8087 calculates tangents by using the CORDIC algorithm combined with polynomials, see my latest article: www.righto.com/2026/09/8087...
righto.com
Reverse-engineering the vintage Intel 8087's tangent algorithm: more than CORDIC
I hope you're not tired of the 8087, because I have another article about Intel's floating-point chip. 1 In 1980, Intel introduced the 8087...
1514
Ken Shirriff @righto.com · 26/09/2026
The 8087 chip implements its algorithms in microcode, specialized low-level code inside the chip. By examining the microcode ROM under a microscope, the Opcode Collective extracted the bits and I reverse-engineered the algorithm.
A close-up of the 8087's microcode ROM under the microscope. The photo shows columns of doped silicon (pink) crossed by polysilicon lines to form transistors. Circular markings are contacts between the silicon and the metal layer (which I removed with acid). The 8087's ROM is unusual: it uses four transistor sizes, so it stores two bits per transistor, twice the density of a regular ROM.
Part of my reverse-engineered listing of the FPTAN function. It consists of low-level micro-instructions such as "st(0) -> tmpA" and "stackPtr--", along with my comments.
2353
Ken Shirriff @righto.com · 26/09/2026
CORDIC became popular, especially in scientific calculators. The 8087 chip uses CORDIC, but goes further, also using a polynomial ratio to get more accuracy. The simple function 3x/(3-x^2) (blue) is surprisingly close to the tangent (red), better than a Taylor series (green).
A graph showing three curves. The blue curve is very close to the red curve and the green curve is considerably worse.
1351
Ken Shirriff @righto.com · 26/09/2026
Usually, rotating a vector by an angle requires complicated math. But for some special angles, the calculation requires just shifts and adds, easy to do in hardware. The CORDIC algorithm breaks down an angle into special angles (using a table), does quick vector rotations, producing the trig answer.
1313
Ken Shirriff @righto.com · 26/09/2026
Back in 1956, the Mach-2 B-58 Hustler had an analog navigation computer. It wasn't accurate enough, so they built a digital replacement. Sines and cosines are easy in analog, but needed a new digital algorithm. They invented the CORDIC algorithm and built the 134-pound CORDIC computer.
A B-58A Hustler aircraft on display in San Antonio, Texas. The aircraft is a sleek silver plane with a black nose. It has four jet engines under the wings. Under the fuselage, a long pod held extra fuel and a nuclear bomb.A vintage back-and-white photo of the CORDIC II computer. It is a gray box with sloped sides and circuit cards inside. A smaller box on top holds the drum storage and has cables attached.
2394
Ken Shirriff @righto.com · 26/09/2026
How do computers calculate complicated trig functions such as tangent? I took a look at Intel's 8087 floating-point chip under the microscope to find out. The chip combines two techniques to evaluate the tan function quickly and accurately: polynomials and an algorithm called CORDIC...
A die photo of the 8087 chip under a microscope shows complex patterns from its transistors and wiring. The middle of the chip holds the microcode ROM, while the bottom half of the chip is the datapath that performs calculations. Zooming in on the datapath shows various functional blocks, which appear as rectangles with different textures. Important functional blocks are labeled: exponent ROM, constant ROM, shifter, adder, registers, and so forth.
216036
Ken Shirriff @righto.com · 13/09/2026
That was me too :-) www.righto.com/2024/12/this...
righto.com
Intel's $475 million error: the silicon behind the Pentium division bug
In 1993, Intel released the high-performance Pentium processor, the start of the long-running Pentium line. The Pentium had many improvement...
2100
Ken Shirriff @righto.com · 12/09/2026
Credits: I've been working on this with the members of the "Opcode Collective", especially Smartest Blob and @gloriouscow.bsky.social , who converted the ROM images to microcode data and extensively analyzed the contents.
0590
Ken Shirriff @righto.com · 12/09/2026
The 8087's microcode is too complicated and low-level to explain here. For details, see my latest article: www.righto.com/2026/09/8087...
righto.com
Microcode in Intel's 8087 floating-point chip: the scale instruction
In the 1970s, floating-point arithmetic was a mess. Computer manufacturers had a dozen incompatible arithmetic standards. Moreover, floating...
1592
Ken Shirriff @righto.com · 12/09/2026
I can now explain the microcode for an instruction called FSCALE that scales a number by a power of 2. It sounds simple, but the 8087 has an appalling number of special cases: positive and negative 0, two infinities, four rounding modes, three number sizes, six exceptions... so the code is complex.
A short excerpt of the microcode for FSCALE. It has low-level instructions that look a lot like assembly language such as "jmp #0776 if tmpA:tag ZERO".
1520
Ken Shirriff @righto.com · 12/09/2026
Knowing the contents of the 8087's microcode is just the first step; we've been working for months to assign meaning to the 0s and 1s. I've been reverse-engineering the circuitry in the 8087, units such as an adder, shifter, and registers, to understand what the microcode is doing.
A close-up of the bottom region of the 8087's silicon die. This shows the circuitry that performs arithmetic on 80-bit floating-point numbers. I've highlighted key functional blocks. One large block is the shifter, which can shift the bits of a number left or right by an arbitrary amount. The adder, in the middle, does integer arithmetic; it is the heart of the chip. To the right, registers hold numbers. At this resolution, the different functional blocks have different textures, but the circuitry isn't visible.
1470
Ken Shirriff @righto.com · 12/09/2026
Zooming in on the microcode storage ROM, you can see the individual transistors, the pinkish blobs. The 8087 is very unusual, using four transistor sizes, giving it double density: 2 bits per transistor. The Opcode Collective examined all 13184 transistors, revealing the 0s and 1s of the microcode.
A close-up of the 8087's microcode ROM, showing 77 transistors in a grid, pinkish blobs of doped silicon. A transistor is formed where a vertical polysilicon line crosses a horizontal stripe of doped silicon.
1460
Ken Shirriff @righto.com · 12/09/2026
Under a microscope, you can see the circuitry of the 8087. The 8087 performs its calculations using low-level software called microcode, stored in the large ROM in the middle. Along with the "Opcode Collective", I'm trying to understand the algorithms in the microcode, from addition to arctangents.
A die photo of the 8087 showing the rectangular silicon die, about 5mm × 6mm. The image is dark reddish-brown, with black and white regions. Complex patterns are visible, mostly rectangular regions with various textures. Thick white lines in various regions are metal on top of the chip, carrying power to all parts of the chip. Around the edges of the die, 40 thin back wires are bond wires, connecting the die to the external pins. A few text labels indicate major functional blocks, such as the microcode ROM.
1471
Ken Shirriff @righto.com · 12/09/2026
In 1980, Intel introduced the 8087 floating-point coprocessor chip. Plugging this chip into your IBM PC made math 100 times faster, good for CAD and spreadsheets. I opened up the chip to reverse-engineer exactly how it does complicated calculations. Let's take a look inside...
The integrated circuit is a black ceramic rectangle with 40 metal pins sticking out, in two rows. (This is known as a DIP, a Dual Inline Package.) It has three rows of text: "D8087-1", a cryptic version label, and then the copyright line with a big lower-case I, INTEL m c 1980 1984. The m and c are in circles for the mask-work symbol and the copyright symbol. The chip has a small semicircular notch on the left side, indicating its orientation. The package consists of two thin ceramic layers, bonded together with a gray substance; the metal pins stick out from this gray substance. The ceramic package is important to me because tapping the gray layer with a chisel will cause the two layers to separate, revealing the silicon die inside. In contrast, most chips are in epoxy packages, which are very difficult to open, usually requiring strong acids.
722349
Ken Shirriff @righto.com · 01/09/2026
It took a lot of research to find materials that had a sufficiently square hysteresis curve and other properties. The book "Memories that Shaped an Industry" describes this research in detail.
010
Ken Shirriff @righto.com · 30/08/2026
This computer is from 1980, so DRAM existed at the time. Space systems were slower to move to semiconductor memory because core memory was nonvolatile (kept its contents without power) and was resistant to radiation. The Space Shuttle didn't switch from core to semiconductor memory until 1991.
090
Ken Shirriff @righto.com · 30/08/2026
Correction: I said that the core stack was 32 KB. Each board is 32 KB, so there are 128 KB in total.
0190
Ken Shirriff @righto.com · 30/08/2026
Credits: thanks to Steve Jurvetson for letting me disassemble the computer. Core close-up photo from @curiousmarc.bsky.social. Core diagram from Digital Computer Components and Circuits, 1957.
2300
Ken Shirriff @righto.com · 30/08/2026
For more on the Spacelab computer and its core memory system, see my latest article: www.righto.com/2026/08/spac...
righto.com
Cores in space: The core memory module from a 1980 Spacelab computer
Spacelab was a reusable laboratory that could be carried in the Space Shuttle's cargo bay, providing lab space for astronauts and experiment...
1333
Ken Shirriff @righto.com · 30/08/2026
This photo shows the computer with one of its logic boards removed. The core memory occupies the right third of the computer. The round military-style connectors on the front of the computer connected to other systems on Spacelab. CIMSA was the manufacturer.
The computer is a shiny metal box, roughly the size of a toaster oven. It has two handles on the front, as well as six round military-style connectors. The computer is labeled "cimsa", the manufacturer. I took the top of the computer, so you can see the 36 circuit boards inside. The photo shows a close-up of one of the circuit boards. The board contains 28 rectangular integrated circuits. Three of the integrated circuits are much larger than the others.
1260
Ken Shirriff @righto.com · 30/08/2026
The core memory stack has two driver boards that generate the high-current pulses through the X and Y wires. The boards are crammed with integrated circuits that were specially designed for core memory systems.
A large circuit board crammed with about 100 integrated circuits (standard rectangular DIP chips).  There are also various resistors, capacitors, and other components. The board is divided into 8 sections by a metal frame. It has large blue connectors on either end.
1240
Ken Shirriff @righto.com · 30/08/2026
Core memories usually have an "inhibit" wire for writing data back. The core memory board uses a more complicated "2½D" design, which eliminates the inhibit wire. Three wires—X, Y, and sense—go through each core. The sense wires cross each other in the middle; this reduces the noise they pick up.
A close-up of the sense lines. The 16 sense lines in the middle are green, while the sense lines above and below (as well as the X lines) are copper. The sense lines cross, while the X lines continue horizontally. The large circles are vias through the board.
1271
Ken Shirriff @righto.com · 30/08/2026
The core memory is arranged with 16 horizontal lines of cores to store each of the 18 bits in a word. This photo shows how the tiny wires from the core plane are soldered to the much larger traces on the circuit board.
A close-up of the board. The cores are visible on the left. The horizontal wires through the cores are soldered to the board and connected with winding traces. Some traces go to the connector on the right, while other traces have circular vias that go to the other side of the board.
1271
Ken Shirriff @righto.com · 30/08/2026
The back side of each core memory board is crammed with chips. 18 sense amplifier chips (yellow) provide 18 bits of output (16 bits+parity+storage protection). A multitude of diode modules are connected to the core plane's vertical wires (red) and horizontal wires (blue).
A large rectangular circuit board. It has blue 160-pin connectors at either end. The board holds about 100 rectangular diode modules, surface-mounted chips, as well as 18 sense amplifier chips and 9 resistor modules. The board has numerous circular vias, connections to the core wiring on the other side. Regions of the board are highlighted with blue, red, green, and yellow lines.
2300
Ken Shirriff @righto.com · 30/08/2026
Spacelab used three French-built minicomputers, model Mitra 125 MS. This photo shows the core memory stack in front of the computer. (The computer looks empty because I removed the circuit boards for analysis.) The computer is surprisingly heavy; it has a lot of metal for conduction cooling.
The core memory stack in front of the computer. The computer is a metal box with U-handles on the front for installation. The core memory stack is mounted on a metal plate that forms one side of the computer. A metal plate on top of the memory stack helps with cooling.
1343
Ken Shirriff @righto.com · 30/08/2026
Each tiny ring can be magnetized clockwise or counterclockwise to store a 0 or 1. Putting a current through an X wire and a Y wire in the grid magnetizes the core where the two wires cross. Special magnetic materials ensure that the other cores are unaffected. The sense wire reads out the data.
A diagram showing a three-by-three grid of circular cores. There are three horizontal X wires and three horizontal Y wires forming the grid. An X wire and a Y wire are energized, flipping the core at the intersection of the two wires. A sense wire is threaded through all the cores.
2261
Ken Shirriff @righto.com · 30/08/2026
Magnetic core memory uses tiny ferrite rings, one for each bit of storage. The rings are arranged in a grid, with tiny copper wires threaded vertically and horizontally to select a core. To read a value, the green "sense" wire snakes through all the cores. Each ring is 32 mils (0.8mm) in diameter.
A close-up of the core plane, showing the tiny cores stacked into a grid. Each core is a gray ring with three wires threaded through it. (The cores are viewed edge-on, so you can't see the hole in the core.) Tiny copper wires run horizontally and vertically through the cores. At the bottom, half of the copper wires form a U-loop. A green wire loops through the core. Printed-circuit board traces are visible underneath the wiring; these traces are much wider than the cores and the core wiring. Some of the traces contain large holes, vias to the other side of the board.
Photo courtesy of CuriousMarc.
1321
Ken Shirriff @righto.com · 30/08/2026
Before semiconductor RAM, most computers used magnetic core memory. This is the 32 KB core stack from the computer on Spacelab, the Space Shuttle's experimental laboratory. Let's take a closer look...
The core stack from the Spacelab computer. This is a stack of six rectangular circuit boards, joined by blue connectors on each end. The cores are visible on the top board. The 294,912 cores are way too small to see; there are eight large reddish-brown squares, each holding a region of cores. 18 reddish and greenish stripes are slightly visible, showing regions for the 18 bits of storage.
218345
Ken Shirriff @righto.com · 31/07/2026
Credits: thanks to Robert Garner for the tube module and @CuriousMarc for electronics support. IBM 604 image from Ed Thelen: ed-thelen.org/comp-hist/IB... Vacuum tube diagram from IBM 604 manual: bitsavers.org/pdf/ibm/604/... IBM ad from Wikimedia: commons.wikimedia.org/wiki/File:IB...
ed-thelen.org
IBM-604
0220
Ken Shirriff @righto.com · 31/07/2026
For more information on the tube module, including circuit diagrams, see my latest article: www.righto.com/2026/07/ibm-...
righto.com
Energizing a vacuum-tube flip-flop module from a 1948 IBM system
In 1948, IBM introduced the 604 Electronic Calculating Punch. This machine was a programmable calculator, about the size of a double refrige...
1411
Ken Shirriff @righto.com · 31/07/2026
The IBM 604 calculator used about 1300 tubes and rented for $550 a month. It was a very popular system with over 5600 units produced. IBM advertised it as equivalent to 150 engineers.
A 1951 advertisement for the IBM 604, describing how the system was like having 150 extra engineers. The image shows rows of engineers using slide rules. At the bottom is a photo of the IBM 604 and its associated card reader, with a man standing next to the units. 

The text says:
An IBM Electronic Calculator speeds through thousands of intricate computations so quickly that on many complex problems it's like having 150 EXTRA Engineers.
No longer must valuable engineering personnel ... now in critical shortage . . . spend priceless creative time at routine repetitive figuring.
Thousands of IBM Electronic Business Machines... vital to our nation's defense... are at work for science, industry, and the armed forces, in laboratories, factories, and offices, helping to meet urgent demands for greater production.

From Fortune, December 1951 via Wikimedia, scanned by Michael Holley.
3381
Ken Shirriff @righto.com · 31/07/2026
I've powered up the trigger module in this video. It is switched on or off by two inputs and remembers its state until switched again. I push two buttons to turn it on or off, and its state is displayed by two vintage neon bulbs. This may seem trivial, but it is a key component of computers.
1280
Ken Shirriff @righto.com · 31/07/2026
The tube module uses a "dual triode" tube, two amplifiers in one glass tube. In the first photo, the two vertical dark rectangles are the two plates. The second photo shows the tube powered up, with the heaters glowing orange at the top and bottom.
A type 2033 vacuum tube. This is a glass cylinder about 5 cm tall, with seven metal pins at the bottom. The glass cylinder is closed at the top, forming a point. Inside the tube, metal structures are visible, with wires connected to the pins at the bottom.The glass vacuum tube powered up. At the top and bottom, glowing orange spots are visible: the heaters. Most of the heater is hidden inside the other structures of the tube, so only these small glowing spots are visible.
1230
Ken Shirriff @righto.com · 31/07/2026
Before transistors, vacuum tubes were widely used as switches and ampifiers. A heater heats up the cathode, which emits electrons. They are attracted to the plate, causing current to flow. A negative voltage on the grid blocks the electrons, controlling the current flow.
A drawing showing the components of a triode vacuum tube: heater, cathode, grid, and plate, mounted in an evacuated glass envelope.

From IBM 604 Customer Engineering manual.
1220
Ken Shirriff @righto.com · 31/07/2026
This module was part of IBM's 604 Electronic Calculating Punch. It read 100 punch cards a minute, performed calculations that were specified by a wiring panel, and punched the results on cards. In the lower left, you can see rows of tube modules with their handles sticking out.
The IBM 604 Electronic Calculating Punch is a gray metal box about the size of a double refrigerator. The side panel is removed, showing rows of tube modules and other electronics inside. More tube modules are under metal covers. The system has lights and buttons on the front. Photo from Ed Thelen's IBM 604 page.
1280
Ken Shirriff @righto.com · 31/07/2026
This vacuum tube module was used in an IBM programmable calculator from 1948. This module, called a "trigger", stored one bit of information. Let's take a closer look and see the module operate.
A cylindrical tube module. It consists of a U-shaped metal frame forming a handle, with a vacuum tube and some electronic components (resistors and capacitors) mounted on insulating disks. At the bottom of the module, nine metal pins allow the module to be plugged into a socket.
111021
Ken Shirriff @righto.com · 28/06/2026
Yes, that's how the redundancy worked during ascent and landing. It gets complicated, though, because they used different configurations at other times to free up computers for other uses. The backup computer, by the way, had completely independent software so a bug couldn't kill all the computers.
0140
Ken Shirriff @righto.com · 28/06/2026
The Space Shuttle's networks were 1 megabit per second over twisted pair. The networks were very similar to the popular MIL-STD-1553. The Shuttle's networks were designed before the 1553 standard was done, so there are some differences such as 24-bit words instead of 16.
0170
Ken Shirriff @righto.com · 28/06/2026
Credits: IOP boards provided by Richard, 4 Pi board from @tubetime.bsky.social. Photo of the IOP and CPU courtesy of RR Auction. IOP documentation from Mike Stewart. Exploded diagram from ibiblio.org/apollo/Shutt...
ibiblio.org
0240
Ken Shirriff @righto.com · 28/06/2026
Want more photos? Or more info, such as how the I/O processor implements 25 virtual processors with two instruction sets on top of a single physical processor? See my latest article: www.righto.com/2026/06/spac...
righto.com
Examining circuit boards from the Space Shuttle's I/O Processor
The Space Shuttle's five 1 general-purpose computers played a critical role in each flight: controlling the engines, monitoring thousands o...
1381
Ken Shirriff @righto.com · 28/06/2026
This diagram shows how the circuit boards (called pages) were plugged into the I/O Processor's aluminum-alloy case. For storage, the system used magnetic core memory, larger pages at the back. This system didn't use a microprocessor; it was built from 11 logic pages crammed with simple chips.
This is a black-and-white exploded drawing, with many labels. To summarize, the boards were inserted in the box vertically, tightly packed front-to-back.
1300
Ken Shirriff @righto.com · 28/06/2026
IBM had a series of aerospace computers called System/4 Pi. These computers all used standard-sized boards (top). Except that the I/O Processor's boards (bottom) were one inch wider. I guess they needed the extra space for more circuitry.
Two circuit boards. The bottom one is the interface board seen earlier. The top board is a standard 4 Pi board. It looks very similar with five rows of flat-pack integrated circuits, a metal frame, two green connectors, and thumbscrews. But the bottom board is one inch wider and the connector has 120 pins instead of 98.
1310
Ken Shirriff @righto.com · 28/06/2026
The second board is memory (PROM), holding microcode for the I/O Processor, which is a (very strange) computer, independent of the CPU. Each gold-lidded chip holds 2K bits in tiny metal fuses. The chip is programmed by blowing the fuse for each 1 bit, literally burning the PROM.
The second board, same as in the first message. It has standard DIP (dual-inline package) integrated circuits. Most of them are white ceramic with gold lids, interspersed with regular black integrated circuits. The chips are mostly arranged in three rows, but three integrated circuits are arranged horizontally.
1330
Ken Shirriff @righto.com · 28/06/2026
First board is a network interface. Each side is identical and supports two networks. The IBM hybrid module (right) contains tiny transistors, resistors, etc. to handle the analog stuff. The golden Motorola chips format bits to transmit and receive them. The other chips are mostly shift registers.
The other side of the network board; it looks just like the previous photo with four large golden chips, a square golden hybrid module, and rows of tiny black chips. It has a 120-pin green connector at the bottom, but much of the plastic is broken, as often happens with these connectors.
2310
Ken Shirriff @righto.com · 28/06/2026
The Space Shuttle had five general-purpose computers that controlled, monitored, and navigated the Shuttle. Each computer consisted of two boxes: the CPU (right) and the I/O Processor (IOP, left). The IOP connected the computer to 24 high-speed networks. Let's look at two boards from the IOP... 1/N
Two rectangular aluminum-alloy boxes, each about 10″ × 7.5″ × 22.5″. Each box has two rectangular handles on the front, as well as multiple round military-style connectors. Each box is marked "Caution: weight over 45 pounds."Two circuit boards, crammed with chips. Each board is 9"×3.5" with a metal frame and thumbscrews on either side. Each board has a green 120-pin connector at the bottom; the connector on the top board is broken.

The top board is a network interface board. It is dominated by four large golden integrated circuits as well a large golden hybrid module. The rest of the board has five rows of tiny black flat-pack integrated circuits, each smaller than a fingernail. There are a few discrete components: resistors, capacitors, inductors, transformers.

The second board has standard DIP (dual-inline package) integrated circuits. Most of them are white ceramic with gold lids, interspersed with regular black integrated circuits. The chips are mostly arranged in three rows, but three integrated circuits are arranged horizontally.
413427
Ken Shirriff @righto.com · 13/06/2026
Sorry, I misread the message that I responded to. I was going to delete my response, but you had already replied. My apologies.
020
Ken Shirriff @righto.com · 13/06/2026
The 8087 patent goes into a fair bit of detail on the algorithms. Square root is essentially the same as long square root by hand, except in binary. It's like long division but you keep appending blocks of two bits. patents.google.com/patent/USRE3...
patents.google.com
USRE33629E - Numeric data processor - Google Patents
A floating point, integrated, arithmetic circuit is organized around a file format having a floating point numeric domain exceeding that of any single or double precision floating point numbers, long ...
0100
Ken Shirriff @righto.com · 13/06/2026
For full details, see my latest article: www.righto.com/2026/06/inte...
righto.com
The adder at the heart of Intel's 8087 floating-point chip
In 1980, Intel released the Intel 8087 floating-point coprocessor, a chip that could make math up to 100 times faster. As well as arithmetic...
0373