Designing a 68K Single Board Computer
bigmessowires.com
bigmessowires.com
Easy to code for, very nice instruction set, linear memory model able to address lots of RAM, memory mapped IO, what else was there to wish for. And yet, IBM picked X86. Beats me. The 6809 would have been a better choice for a micro than the 8086 was.
Writing boot ROM code for the 68K [at Atari, not IBM...] was a lot of fun. For instance, the first thing we needed to do, before we could use any RAM, was to size the available RAM; this code ran a little memory test using just the 16 registers (and no stack, of course). Didn't take long to write, but it was a neat little puzzle.
Writing embedded software is neat. I still get a rush when a new design wakes up and prints out "Hello world!" on a serial port, and on the ST it was way cool when the floppy drive did its first seek.
"Hey guys, watch this!"
Grknnnnkknknkg
Little things. :-)
Don't know if you could do CPLD initialization with the same constraints, but it doesn't seem that hard . . . :-)
Motorola seemed to run out of 68K gas in the late 1980s. Maybe they were distracted? They developed the 88000 RISC, and at Apple we actually had some NuBus boards that we were urged to write software for, but that effort wasn't terribly well organized and ultimately fizzled (one fine day we were told to immediately rip out all our 88K dev boards and return them. Something contractual probably fell apart, and we guessed that some lawyers had gone non-linear...)
That's a good markup, and it doesn't seem to do anything that a regular rack mounted intel box couldn't do. It probably has some reserve in terms of IO and reliability but for the spot where it's sitting it is total overkill (ancient ERP system only running on that hardware).
I recommend Frank Soltis' books about it, although they are very expensive. For example an earlier edition is http://www.amazon.com/Inside-As-400-Frank-Soltis/dp/18824191...
As an example there is extreme backwards compatibility, pervasive database, single address space (a different meaning of virtual memory than you are used to), sharing, tagged and protected pointers, clustering etc.
Considerably cheaper than comparable and even slower PC clones too.
So this was for the Atari ST? I was at MWC when that came out and it was a hacker's delight.
An 8-bit CPU with a 64K address space, compared to a 16-bit one with 1MB? The 6809 is more comparable to the Z80.
As for why 68K didn't make it, at the time it was just too "big" and expensive of a processor for the market IBM wanted to target with the PC - more powerful than the 6502 and Z80/8085 systems that were common at the time, but not at the level of minicomputers.
Interesting article about this here: http://trixter.oldskool.org/2012/12/27/the-ibm-pc-5150-what-...
When the PC was designed the 68K was already available, my point is that even a 6809 would have been a better choice, given that the 8086 was 8 bits external and memory never went over 256K for the original PC, easily addressed using 16 banks of 16K.
Anyway, it hardly matters but the 8086 was a weird choice, the explanation elsewhere that they chose it over the 68K because it was considered 'too powerful' makes pretty good sense.
"They went to Microsoft for the operating system (QDOS, renamed PC-DOS and later sold by Microsoft as MS-DOS) and to Intel ® for its 8088 processor."
hw risks: When will the chip be ready? Will it work, are there any engineering samples, eval boards? How long will my hw engr learn the new design rules for the new chip?
sw risks: Is my favorite RTOS (Linux ports ) available? How stable is the port? Are my software engineers familiar with the system? In not, how long would it take?
Each of the risk listed can add a lot time and money to the project.
And while that may sound old school, it's not. When I was coming up, every time we talked old school someone would bring up paper tape and punched cards which totally predate me. I wonder where those people are now!
I once met this university professor - he is the husband of a friend of my mother's, they had trouble with their computer, I fixed it, and while we sat there, we talked, and he told me that he had in the 1980s a colleague down the hall who carried data around on paper tape.
During my training, I knew this guy who still had a stack of punched cards sitting on his desk he used to take notes.
Sigh Some part of me is really glad I can now carry gigabytes of data on a flash drive smaller than my finger, but another part of me wants to have been there.
Once the 386 came out things started looking up but the 8086 and 80286 years were painful.
Of course the 68K is still super popular in its Coldfire incarnation.
I worked only briefly with the 6809 from the compiler side. Reminded me a lot of the pdp-11 instruction set.
It sounds like a nice project, although I personally almost can't consider a 68K-based hobby computer without graphics. :) Of course graphics isn't trivial, so I totally understand the design.
This part:
> A CPLD is strongly preferred over an FPGA, because the CPLD’s configuration is held in its internal non-volatile memory. An FPGA’s configuration is RAM-based, so it would require something else to configure it every time the board boots up.
Actually isn't true anymore, there's at least one FPGA family with built-in flash: Lattice's MachXO2 family (http://www.latticesemi.com/Products/FPGAandCPLD/MachXO2.aspx).
I often feel that Apple's jump to PowerPC was not worth it. Losing hand-written assembly was a major blow and took Apple out of gaming for years because no Mac port came even close to the optimized innermost loops of games like Descent. I remember running games on a friend’s 486 at full speed that only got 10 fps on my 60 MHz PowerPC. Those were bleak years. Luckily video cards eventually leveled the playing field (but brought their own issues, which we still struggle with until DSP instructions are brought on-chip the way the FPU was).
I still have all my original reference material, and this book, http://www.amazon.com/MC68000-Assembly-Language-Systems-Prog... was one of my favorite computer books ever--I devoured that thing.
I still actually reference that book, and a couple others of that era, regarding microcontroller interfacing, even though I've moved on to Arduinos, RPis, and the bazillion other incredible SoCs I embed into stuff all the time now.
ucLinux doesn't need an MMU - that's its reason for existing.
MWC was a seriously bright bunch of guys.
It sounds as if maybe aims to be commercial, which sounds ... I don't know, like a hard sell these days.
It would be so awesome to pair it with some graphics processor in a suitable FPGA and ... uh ... write demos, I guess. :)
Here are photos of my system: http://imgur.com/a/jS42c
I don't recall the specs exactly, but it was 6 MHz CPU clock speed, something like 4K of EEPROM and 2K of static RAM, and two serial ports.
We almost weren't allowed to do this, because in prior years there had always been a few general purpose systems, and they wanted people to try something that hadn't been done to death. However, those were all 8-bit systems. This was the first year they had obtained some 16-bit processors, and decided those were sufficiently different that they would let us get away with general purpose systems.
Some of the part choices might seem odd. That was due to cost. They gave us the 68Ks, and I think we got the EEPROM and static RAM from them, too. Everything else was on our dime, which meant there was a lot of scrounging around at surplus stores to find things that fit into a broke student budget.
One design feature I really liked was the way we did the serial port connectors. Note that the connection to the board uses a standard DIP socket. That has two advantages:
1. It was cheap!
2. It is NOT a keyed connector. That allowed plugging it in two ways. We wired them up so that both worked, but one was equivalent to inserting a null modem.
My friend's system had a funny problem. His and mine should have worked identically, since they were the same design and same layout. However, for some reason his serial ports would not run faster than 2400 bps, whereas mine went up to at least 19200 (the speed of the fastest terminal we had access to). If he tried to go faster, some characters would work, and some would not.
It turns out that when he went to the EE stockroom to buy bypass capacitors for the serial lines, the stockroom gave him the wrong capacitors. They were much much much larger than they were supposed to be, and so were filtering out as line noise frequencies that were low enough to affect the data. If a character only had a couple 0/1 or 1/0 transitions, not too close together, it would work. If it had more, or they were too close together, it got messed up.
There was also an hilarious incident with the development system. The EEPROM burner was hooked up to some HP system. The 68K cross assembler ran on Caltech's IBM 360. So, we'd write our assembly code on the VAX, then there was a process to submit it to be cross assembled on the 360, then you could go to the HP and download it from the 360 and burn it into EEPROM.
There were strict orders to delete your files from the HP as soon as you burned your EEPROM, because the disk was near full. The thing had been there a long time, and was full of junk from old projects, and no one knew what was really junk (such as past student files) that could be deleted, and what might be someone's research files. The space crunch on the machine was starting to get very annoying.
Also, no one really knew much about the OS on the HP. Everyone just learned a set of commands by rote to transfer files, burn EEPROMs, and things like that.
One fine day, I happened to notice that there was a place in all the commands that manipulated my files that a "1" or an "A" (I forget which) appeared near the file name. Curious as to what it might mean, I tried copying a file but changing that to a "2" (or "B") for the destination, and it worked. I then asked for a listing, again using "2" (or "B"), and there was my file, alone on an empty disk.
I had discovered that there were actually TWO drives in the computer--and the second was empty (except for my file)! So...a bunch of (allegedly) bright people at Caltech had spent months, or even years, struggling with low disk space in the lab, and all that time there was an empty second disk in the computer...wow