Hacker News new | past | comments | ask | show | jobs | submit login
S80186: 16-bit 80186 compatible IP core (jamieiles.com)
166 points by jamieiles on Jan 13, 2018 | hide | past | web | favorite | 63 comments

Wow, trip down memory lane. My "starter" project when I joined Intel out of college was to be the Systems Validation engineer for the 80186. Unlike the 8086 it was this new fangled thing called a "system on chip" (SoC) which of course is what nearly everything is these days. And because Intel chose the peripherals to put "on chip" as it were they picked the ones they liked, and Microsoft obligingly wrote a version of MS-DOS that could use those peripherals. Critically though, they were not exactly like the set of peripherals the IBM PC used so while it was "cheaper" to put all the interface chips together with the CPU (saving power, board real estate, and time) it meant using the chip would never be "FlightSimulator" compatible (where MS Flight Sim was considered the acid test of whether or not a clone was a clone.). So much commercial software bypassed the BIOS and wrote directly to the peripherals that the 80186 never became very popular in the commercial sector. It did however have a pretty strong military presence and a lot of the customers who sent in bug reports would decline to describe their systems :-)

It did however have a pretty strong military presence...

The ground communications network for the Air Force DSP satellite program (boost phase missile warning) was built with 80186 processors. The hub routers were multi-processor systems with six 80186's or five 80186's and a 80386.

These systems were used to provide early warning of SCUD missile attacks during the first Gulf War. They were installed in 1988 and decommissioned in 2005.

Less amazing, but: some recent-model (non-current) ATMs used 80386s to control the hydraulics and motors for the cash dispenser. My guess is these ATMs were manufactured sometime starting around 2004 at the earliest.

(ATMs use a complex system of pressurized tubes to extract and move notes out of the bins. I think the idea is that the extra complexity fails more easily as a kind of canary, but I'm not sure.)

I've heard that the 8086/8088 were used in warheads as the guide computers from the radar and other bits. I'm curious how on-point this is.

Now I'm reminded of the story of the engineer who had to face a very tricky debugging scenario when dealing with the sensing/optics assembly for a missile... it didn't use heatsinks, because the production lifetime of the system was just enough seconds shorter than the overheating point that none were needed.

(Pretty sure I stumbled on that from here but I cannot possibly remember exactly where, sorry.)

Thus why the 80186 was mostly skipped in favour of the 80286, right?

Have a look at: http://zet.aluzina.org/index.php/Zet_processor which can actually run Dune 2: http://zet.aluzina.org/images/b/bd/Vga-4.jpg and more http://zet.aluzina.org/index.php/Pictures like MS Windows 3.0, MS DOS 6.22 etc. This runs on an older Altera DE1 (Cyclone III-based) board

The draw that this one gives me over the Zet processor (which btw is great and I've used it here and there in the past), is that Zet is not really maintained anymore. It's not a moving target, that's completely true, but S80x86 has the potential to hopefully do some neat things with 286's and 386's as well.

But for anybody looking for a quick-n-dirty deploy to a board solution, the Zet is fantastic and solid.

It should be noted that 186's aren't even remotely compatible with 286's and 386's. And implementing a 286/386/486 is actually much harder and more complex than say, an 8086. That's why most people stop their hobby project at 8086 or 286. Because it becomes much more work to accomplish and the fun/novelty dries up.

Probably the same applies to why there are several home brewed Z80s and 6502s around, but few to no home brewed 68020s. (-:

This is pretty cool. A PC with an 80186 CPU is a little weird, though; I don't think many of those actually existed. It seems like virtually everybody went straight from 8086 to 80286

The Tandy 2000 used an 80186; I still have mine in the attic. It ran MSDOS 2.11, but it was not BIOS-compatible with the IBM PC (which explains why it was a market failure, even though it was technically superior in many ways). For example, you could mod it to have 896KB of base RAM (compared to the usual 640KB) - I had this done to mine. You could do this because video memory was mapped to a different location than with IBM PC's (but consequently, programs that wrote directly to video memory for speed wouldn't run unaltered on the 2000). I got tired of dealing with the incompatibilities and got a 286 from CompuAdd a couple of years later.

The Tandy 2000 was one. It was a PC-ish, DOS-running machine that was more powerful than anything put out by IBM at the time, but not PC compatible. The 186 had additional on-chip hardware like timers, etc. that the 8086 (and 286 and subsequent chips) did not, and some of these were mapped to I/O address space that corresponded to different PC hardware, so building a fully PC compatible machine with a 186 was near impossible.

Forgoing PC compatibility was not without its advantages. The Tandy 2000 could have up to 768k of RAM -- and used all of it, the 640k limit being nonexistent. This made a huge difference in applications such as Lotus 1-2-3. The Tandy 2000 also featured a 640x400 color display option -- extremely high resolution for the time -- at an affordable price, making it attractive as a graphical workstation. Tandy 2000s were used in the design of Stars and Stripes 87, an America's Cup winning yacht, and were also used to prototype color display in Windows 1.0. So it was an important machine, despite fading into obscurity due to its lack of PC compatibility.

Sorry, I just frickin' love this machine and wish it were more remembered.

Actually, you could go up to 896KB - it was not officially supported by Tandy, but there was a guy in Washington who had a company called Envision Designs that did this.


I think I read about him first in Jerry Pournelle's coolumn in BYTE. So he modded my 2000 up to 896KB, and also added a disk controller and hard drive. Tandy eventually started selling cards with an 8087, which definitely helped with floating point stuff.

It was a wonderful machine. I first ran Turbo Pascal on it, did my first color Mandelbrot set. I had the color monitor and the inkjet printer. What is incredible is that for what I spent in 1984 dollars on all that stuff, adjusted for inflation, I could probably now get dual Xeons with 20 cores!

It was a very sad day when I realized that it was getting too hard to deal with the incompatibility with the IBM-PC standard. The video RAM (and 640 x 400 8-color graphics), the nonstandard floppy disks, the add-on cards (which could be installed without opening the case), ... Technical superiority isn't always conclusive.

The original BYTE review, for anyone who's interested:


Yeah, those tray-like expansion cards were neat. Too bad that idea never caught on, and there were only a few expansion cards (all by Tandy) available for the machine.

PC compatibility basically steamrolled over all that. Maybe it was seeing what happened with the 2000 that convinced me from an early age that PCs were going to conquer the world, and Macintosh and Amiga fanboys were next on the chopping block. I couldn't even guess then how right I'd be; not even game consoles avoided turning into cut-down, purpose-built PCs.

At the time, I was just disappointed that the only graphical game that actually worked with the 2000 was a specially ported Flight Simulator 1.0.

The latch-things that were supposed to secure the cards in the slots apparently didn't seat the cards tightly enough. My dealer finally just replaced them with screws after I complained a few times about the graphics card coming loose, resulting in a poor signal.

Compatibility has been great in some ways. But with standards in flux back then, there was more variety (and maybe fun) than there is now. Besides experiments like the 2000, there were things like machines with 2 different CPUs (the Commodore SuperPet had a 6502 and a 6809, and I think the DEC Rainbow had a Z80 and and 8088). There were so many 5.25" floppy formats you needed utilities like Xenocopy to convert among them (I think it fiddled with the drive controller to manipulate the drive heads).

With machines being simpler, you could fiddle a lot more. Many magazines published assembly language code for little games and utilities; for that matter, the computer section of a typical bookstore carried lots of books on assembly language. There were books on microcomputer system design, stuff about how things worked at the chip level. All gone.

I remember Flight Simulator. I couldn't believe it the first time I played it. Crashed the plane over and over ... There was a graphical paint program, and other graphical stuff which worked with the very slow mouse - in fact, I have a copy of an ad featuring Bill Gates in which he describes using the 2000 in designing the early versions of Windows.

I'm a bit surprised that in your list of dual-CPU systems you didn't mention Tandy's own Model 16 -- which was a TRS-80 Model II fitted with a 68000 daughtercard and up to 768KiB RAM for the secondary processor. It was the first Unix-capable desktop not to come out of Sun.

The RM Nimbus was 186-based (https://www.thenimbus.co.uk/range-of-nimbus-computers/PC-186) -- UK people might remember it as it was pretty popular in schools in the late 80s/early 90s. It wasn't fully PC compatible though.

UK people might remember it as it was pretty popular in schools in the late 80s/early 90s

The Nimbus was an absolute horrific trainwreck of a machine - RM were only able to supplant the far superior Acorn in schools due to backdoor shenanigans. Imagine the world now if kids who had grown up on Archimedes went into companies and started using that tech there, we would be 15-20 years ahead of where we are now technologically. Instead the geniuses at the department of education collectively shot us all in the face.

Prior to their purchase, I recall my dad spending some time trying to persuade my headmistress that the RM Nimbus was a bad choice and we should have "real PCs" in school instead. Unfortunately it turned out the powers that be had a contract with RM and the choice of machine was basically forced upon schools.

With that said, beyond the odd software incompatibilities, I found it an interesting system. Its BASIC was pretty good and it had a music chip integrated at a time when almost no machines had sound cards.

Anyone else remember "TRAINS"? :-D https://www.youtube.com/watch?v=cvwoPUqDCa4

Wow, that's a really cool game. A very imaginative use of limited video bandwidth.

Very interesting BIOSes, too.

Fascinating - I grew up in Ontario in the 80s where we had the ICONs at school which were also, I just learned, 80186-based:


Bloody horrible computers, those.

Absolutely... the slight incompatibilities meant they had to have RM specific versions of software IIRC.

They didn't have issues with Meltdown or Spectre though.

There wasn't any real reason to use the 80186 in a PC; it was meant for embedded devices. The only major feature that it had was some additional hardware for timers and DMA built in. Everything else was (more or less) architecturally the same as the 8086.

Probably the last series of 80186 PCs ever made were HP's 100LX / 200LX, a palmtop DOS based PDA that was released in the mid-'90s IIRC. It was an amazing little gadget for its time.

Those were compatible but actually used the NEC V20 processor. I have a 95LX, 100LX, a couple 200LX and I'm in the market for a 4MB 200LX and maybe the 1000CX (which lacks the built-in spreadsheet).

My other major hardware hobby project is a custom clone of a 100LX, based on a PIC32 running RetroBSD! Wire-wrapping tiny membrane keys is damned painful however so it’s been on the back burner for a while

Actually, I'm partly mistaken. The 95LX had the V20. The 100LX, 200LX, and 1000CX it seems had an Intel 80c186 codenamed "Hornet" which competed with the V20.

The ICON was a computer built specifically for use in schools, to fill a standard created by the Ontario Ministry of Education. It was based on the Intel 80186 CPU and ran an early version of QNX, a Unix-like operating system.


I cut my teeth on a "Siemens PC-D", a German variation on the IBM PC. Not quite compatible but almost.

It had an 80186, 1MB of RAM (extreme at the time) and many other niceties that a normal IBM PC didn't have. I think it even had an external MMU, at least it could run SINIX. Though there were UNIX clones like PC/IX and early XENIX versions that ran without MMU on stock IBM XTs, without protection obviously, so I'm not certain what the story with SINIX on the PC-D was.

Was that the one that came with a remote control to turn it on and off?

The Apricot Qi came with a remote for booting.


Certainly was an Apricot, and the does look like it and may well be it, but this was 1984/5, which predates the 300 release. That said, was working for government IT department in one of the regional electricity supply companies and do recall the kit was in for evaluation and we did get pre-release kit in to look at. Though we are talking 8086 CPU time-rame here.

But without a doubt though it was an apricot, thank you for that. I did have a quick look or older models it may of been, nothing could pindown for sure. Though pre-release eval kit back then was much more fun and creative than today's verbatim to release.

I don't think so... I mean, could be, but I somehow doubt it. This was around the middle of the 80s, by the way.

I'm holding one in my hand right now; the HP200.

There were others:


From your link:

The 80186 would have been a natural successor to the 8086 in personal computers. However, because its integrated hardware was incompatible with the hardware used in the original IBM PC, the 80286 was used as the successor instead in the IBM PC/AT.

In other words, the few "PCs" which did use a 186 weren't fully PC-compatible.

It was possible: "Being IBM PC/XT compatible and running MS-DOS 5.0 from ROM, the HP 200LX can run virtually any program that would run on a full-size PC compatible computer as long as the code is written for the Intel 8086, 8088 or 80186 CPU and can run using CGA graphics. It can also run programs written for the 80286 CPU, provided they do not require the use of protected mode.":


It is not that you cannot build 186-based PC-compatible computer, but on the other hand using 186 for PC is somewhat pointless because you cannot use most of things that 186 adds to 86/88 in order to remain PC compatible.

> A PC with an 80186 CPU is a little weird, though; I don't think many of those actually existed. It seems like virtually everybody went straight from 8086 to 80286

In the late 1980s, the network server on my high school computer classroom’s LAN was a ’186; the actual PCs were either 8086 or 8088 machines.

The 80186 was an 8086 integrated with some of the peripheral chips mainly used in embedded devices. You can still get some SBCs with 8018 compatible chips.

For some time 80186 was quite common in SCSI devices. I've seen large amounts of 5.25" (and larger) SCSI harddrives with 80186 and IIRC some RS/6000 workstations had 80186 in their SCSI controller (on MCA card).

It is one of the saner Intel's attempts at x86-compatible embedded CPU with integrated peripherals.

At school they have some 186 RM Nimbus PCs. You could use this "xmode" command to switch between PC compatible and whatever they were.

Yeah, I don't recall having seen 80186 on sale.

RM had a 186 based system, but the reason for 186 is that it's a relatively small delta over the 8086 vs 286!

Pretty cool as a design like this should be able to better preserve old system behavior than what DOSBox etc. can achieve.

Although it seems a bit slow side at 50 MHz, I guess it's not a pipelined design?

Not that original 80186 was pipelined either. :)

The 80286's I grew up using were between 4 and 12 MHz, depending on which model I was on and whether "Turbo" was enabled.

50 MHz is mid to low end 486 territory clock rate, which if it handles instructions as well (a big if) puts it squarely in the area of a lot of games.

If it isn't pipelined, then it'll probably be more like a 286 or 386 performance-wise. IIRC, Quake only had a smooth framerate on my 486DX-33 with floating-point support.

Quake should only have worked well on a Pentium because it could execute float instructions in parallel with CPU instructions, or something. At least Quake was unplayable on my 486DX (don't remember MHz, 66 or below). Even Doom was too slow.

FPGAs run an order of magnitude slower than an ASIC would. Most of this is due to routing delays unless you take great care and do a lot of it semi-manually. On the logic side you can't easily do a lot of the fun stuff like cycle stealing and using latches because the FPGA toolchains don't handle that well.

I don't know much. Just getting into FPGAs my self. But from my understanding you could swap out the crystal for a faster one. Most of the FPGA boards I am looking at only come with a 50mhz clock.

There is some complications around changing the clock. It seems to have to do with the complexity of the hdl you load into the FPGA. Many of the boards shipping with 50mhz crystal can easily do over 100mhz.

You wouldn’t swap out the crystal, you’d use the internal PLLs to generate whatever clock you want. Much easier!

And you are essentially correct, there is a maximum clock speed for any design, and it has to do with how complex your design is. Essentially, what’s the longest path in your design? Your clock must be slow enough to allow a change to propagate through that path. Pipelining shortens this path by creating registers along it, which are clocked by your clock. When a register is clocked, it stores the value in its input side, and outputs that value on the output side.

Generally speaking, what determines the "clock speed" for FPGAs is a combination of the design of the FPGA device plus the complexity of the design being implemented on it.

Let's imagine you design a CPU on an FPGA. One way to measure the speed of that design is to look at the speed of the slowest operation of that CPU. The clock needs to be set at the speed at which the slowest (most complex) operation can reliably run at.

Most modern FPGAs have a PLL (or DLL) implementation [0] which can multiply the external clock by some rational number. e.g. 50MHz external crystal clock is multiplied by 5/2 to obtain a 125MHz internal clock.

0. https://www.xilinx.com/support/documentation/user_guides/ug3...

The 80186 won't be able to play many games that you remember... it wasn't really PC compatible.

The 80186 was completely compatible to its predecessor. It's just that there weren't many IBM-compatible PCs which featured an 80186.

The core was compatible, but it came with built-in non-standard peripherals. It had a DMA controller, interrupt controller, and timer. None of these were PC compatible.

This particular one sounds like it has all of these, seeing how the webpage shows it running a bunch of DOS games.

I think he only duplicated the 80186 core (which itself was a bit different from the 8086 core and had a few more instructions), without adding the peripherals that came on-die on an actual 80186.

So neat. I was working on this exact thing at this exact time too. The massive draw for me was working with some companies that have a reliance on PC and PC/XT workstations with tight hardware resources and needing a simple way to swap out machines. Things like KM4821U memory (and several compatibles) are becoming harder to come by.

I'd love to merge some of my work in if I can find some spots. I truly believe that simply getting a new piece of compatible hardware is just as good as the option of upgrading your software and hardware. Just because we're all on 64-bit platforms doesn't mean that the shop down the street using needs to use it for their POS' either.

Also of tangential relation to this, but my old IBM PC with a 80186 a few years ago finally lost its 6V Lithium battery. I called IBM at that time, referenced 8286121 as the IBM replacement number on the front, and for a bit of money, they sent me a new-old-stock one. I was really blown away.

I just had a play going through the source and adding support for a board of my own, and if OP is reading this, I want to share my appreciation for how well this project is laid out. A lot of hardware projects are sort of spaghetti dishes, but this one is very well laid out, tested very well, and feels very clean to work with. Because this helps me with something I'm working on, I wanted to express my gratitude for that.

Thanks :)

> Intel Cyclone V

That's still weird to see; it's kind of like AMD Radeon was for a few years.

Next186 is a similar older project. It even has OPL sound


Very very cool.

Boys and girls, this is how you do a resume. :)

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact