Sometimes it is a blessing to have some spare time on your hands, specially if you are a hacker with lots of ideas and skill to bring them to life. [Matt] was lucky enough to have all of that and recently completed an ambitious project 8 months in the making – a Non-Arduino powered by the giant of computing history – Intel’s 8086 processor. Luckily, [Matt] provides a link to describe what Non-Arduino actually means; it’s a board that is shield-compatible, but not Arduino IDE compatible.
He was driven by a desire to build a single board computer in the old style, specifically, one with a traditional local bus. In the early days, a System Development Kit for Intel’s emerging range of microprocessors would have involved a fair bit of discrete hardware, and software tools which were not all too easy to use.
Back in his den, [Matt] was grappling with his own set of challenges. The 8086 is a microprocessor, not a microcontroller like the AVR, so the software side of things are quite different. He quickly found himself locking horns with complex concepts such as assembly bootstrapping routines, linker scripts, code relocation, memory maps, vectors and so on. The hardware side of things was also difficult. But his goal was learning so he did not take any short cuts along the way.
[Matt] documented his project in detail, listing out the various microprocessors that run on his 8OD board, describing the software that makes it all run, linking to the schematics and source code. There’s also an interesting section on running Soviet era (USSR) microprocessor clones on the 8OD. He is still contemplating if it is worthwhile building this board in quantities, considering it uses some not so easy to source parts. If you are interested in contributing to the project, you could get lucky. [Matt] has a few spares of the prototypes which he is willing to loan out to anyone who can can convince him that they could add some value to the project.
http://www.youtube.com/watch?v=UStEvmk3bfM
Thanks for the tip, [Garrett]
This gave me a warm fuzzy feeling deep inside my brain. Awesome! I have a bucket full of old Intel chips – like the 8088, bunch of 286 chips etc, but sadly I do not have an 8086 chip. Not that I have the time to do anything with them.
To each their own. The x86 architecture evokes fingers across a chalkboard for me.
Genuinely cool!
Or he could have used an 8051, which is from the same era as the 8086, was designed as a Microcontroller and is still available from assorted manufacturers. You also don’t have to put up with the horror that is segmented memory.
I guess this is a project that you would either love or hate. To use an 8051 would defeat the purpose of this project.
He did consider several options, but stuck to 8086. He looked at 8088, 80186, 80188 and 8051.
How is the 8051 memory organisation, with 64KB code and 64KB xdata any better than the 8086 segmented memory ?
Really. I’d say the reason for considering 8051 is that it was actually a self-contained microcontroller requiring very little external glue logic.
I’d hardly call the 8051 external memory pointer model an improvement. Best thing about 8051 is it’s ability to do ORL and ANL. That’s OR Logical and ANd Logical for all the preverts in the room. My microprocessors professor preferred to do Sign EXtension on the 6809 though.
And doing a logical OR/AND isn’t even that exciting. You can do that with every other CPU too.
The RCA 1802 does offer the “SEX” instruction.
As a 13 year old dude at the time, I thought that was a great name for an instruction. Also: https://olduino.wordpress.com/about/
IMHO the bit addressable memory, PSW parity bit instructions are some of the saving grace of the 8051 that make it suck less. I have managed to implement serial bit shifting for both in and out using loop unrolling with the bit addressable memory. I would have to do a lot of register swapping as there is only 1 accumulator on a already slow architecture. (On a modern day part, I would use the SPI. :P)
It is very painful to do a block memory copy in external apace with the single DPTR (acts like 16-bit pointer register) in the original 8051. I think it took a huge block of instruction for sharing that pointer register between the source and destination. Most of the later chips added extra DPTR register(s).
I would not pick the 8051 and these days there are so much better alternatives.
Fantastic project!
Excellent. I call these OLDuinos and you can have a lot of fun with them. My example is based on the RCA 1802 but the 8086 is a worthy choice. For some ideas of what you can do with an olduino, look here: http://www.olduino.wordpress.com/about
long time since I heard anybody say RCA1802. Will have to check out your website and links!
The 80s just loved the number 8. 8088, 80186, 80188, 8051, 8 bits, *hits blunt*
Hey, you left out the Z80, Z8, etc. Come on now!
And the Fairchild F8 (or maybe that’s what you meant by Z8)
Nah I think the Z8 is some variant of the Z80… in fact, it’s a microcontroller by Zilog that has a similar instruction set to the Z80 but is very different internally. Thx, Internet!
Is the Fairchild F8 the one that’s like a PDP-8 CPU? Or PDP-11?
Well, the Hitachi H8 dates only back to the ’90’s (according to wikipedia)
Not in Detroit, in the 80’s the number 8 fell out of favor and was replaced by 6 and 4.
Especially the Mustang, the poor beast fell in love with the number 4 and it almost died.
That “Mustang”, was nothing more than a rebadged Mercury Capri! (Yecch!)
Not the 80’s, but Intel. The original was the 8008 upgrading the 4004, but then they stuck with 8’s for the 8080, 8085, 8048/9, the ones you list, 80286, 386, and 486. Then the marketing people stepped in.
I think the problem was that you can’t trademark a number, so AMD/Cyrix could just bring out their own chips with the same number. That stopped when Intel used the Pentium name.
Yes indeed you can get a trademark on a number.
Boeing has trademarks on 747, 737, 777, etc.
Mars Corp. has a trademark on the letter M (when it appears on candy)
The reason Intel failed to get trademarks is because they tried to get trademarks on numbers that had already been used as part numbers for electronic parts.
I believe there was even a threat of lawyers between Porsche (911) and Peugeot (10x, 20x, 40x etc) when Peugeot were in danger of up-versioning something to a Porsche-like number.
The number in question is “80586” which I don’t think was used anywhere prior to that.
So the geniuses in marketing, after doubtless many hours and thousands of dollars, came up with a name for their fifth-generation processor… Pentium! Meaning “five-thing”. Succeeded of course by Hexium and Septium, no I mean “Pentium II & III”. Honestly, seems like the giant brains in their chip design dept are somehow counterbalanced by the airheads that think the names up.
If it can boot up MS-DOS or FREEDOS then it could be interesting.
Lots and lots of interesting software development options for that old platform.
Yes, that’s pretty much the only excuse I can think of for reviving the ’86. Aside from having megatons of software written for it, the 8086 was kind of the low point in microprocessor evolution. Sure it was 16-bit, but it got there in a very awkward way. Back in that day, I worked on engineering workstations that used 68K series processors for the CPU and relegated 8086s to I/O processing!
The 8086 was a decent chip in it’s own right – a player in the field. There are still a lot of 80386’s used in embedded systems today. The 80186 is also used in embedded systems, though it was never generally used in PC’s.
So he built a sort of compact Turbo XT?
Neat, I’d like to see a Z80 and 6502 cores
This isn’t emulating the CPU, there’s an actual Intel 8086 chip plugged into the board.
Exactly
I think the 6502 and Z80 would present much the same problems and perhaps much the same solutions. Perhaps they would be a bit easier to do.
They, being 5 Volt CPU’s, would be difficult to find support chips for. In this one he used a Xilinx CPLD that is 5 Volt compatible. CPLD’s are much smaller than FPGA’s so they are limited to glue logic and less complex functions. They would be too small to fit in much by way of peripheral circuits. I can’t think of any current FPGA’s that can work with 5 Volts.
Not sure about the Z80, but you can still buy 6502 CPUs right now, and they’ll work with 3.3V, so these are easy to interface with an FPGA.
Yup. They have all sorts of cool features, thanks to the past 20 years, CMOS process, 14MHz primary clock, some instructions were shortened from the orginal 2 cycles to 1 cycle. I remember reading somewhere that Mensch wanted to do away with the zero-page addressing too but that would’ve killed the compatibility.
http://www.westerndesigncenter.com/wdc/boards.cfm I’m sooo tempted to drop a few bucks on a developer board… :)
I can’t quite promise a Z80 but confidence is high. Folks have been working on a credit-card sized Z80 system and I’ll for sure do an Olduino based on that if they ever stop fiddling with it. It was alive and well at the midwest vintage computer festival last fall https://farm6.staticflickr.com/5594/15061586629_2e62dd4f41_k.jpg What you see there is a two level board with a front panel on top, the Z80 and memory are below. The whole thing will fit into an altoids tin like this: http://hackaday.com/2010/08/19/lee-harts-memebership-card/
Even if you don’t care about the arduino compatibility thing, playing with these old CPUs is fun. Start bugging lee through http://www.sunrise-ev.com/membershipcard.htm to free the Altoids Z80!