An 8-bit board/card based microcomputer project - Page 1
Forum section: electronics / projects

author: theworldbuilder
author_rank: Regular Contributor
timestamp: June 05, 2020, 11:50:51 am
content: Hello all,This is a personal project that I've been working on for quite a while now. It stemmed from my own interest in building, designing, and learning how a computer really works.I was never really intending to post about it or anything but with the growing interest over the last few years in retro tech and in retro microcomputers I think this could be of use and interest to other folks out there.What is the project?I wanted to start learning about and working with microcomputers. But when I went looking online for modern projects I found that all the existing projects, the SBCs and other card based designs, were very much processor and architecture specific.Now there's nothing wrong with this specificity, there are many good reasons for it. But what I wanted was something fairly general that I could tinker with and learn from.So in light of these needs I started to develop my own solution: A general architecture for an 8-bit board/card based microcomputer.That is; A general purpose 'motherboard' that you can plug other cards into like a MPU card, Memory card, and SIO card, to build a computer as you wish; most importantly these cards are all cross compatible with each other, no one card is bound to a specific architecture.I.E: cards aren't stuck only being able to talk to a z80 or a 6502 but instead can be used with both.What's the advantage of doing it this way?-The re-usability of the cards. With the same Memory, SIO and (eventually) graphics cards I can build a computer using a 6502 MPU card, and then swap out the 6502 MPU card for a Z80 MPU card, bank my ROMs to the Z80 code, set the memory locations of the cards and then off I go.And the disadvantages?-The MPU's are limited to a certain degree. By enforcing a general architecture certain MPU's will not be able to use all of their features like the Z80 and its advanced interrupt modes as an example. I am working on ways around this but at the moment it is not implemented.-The time taken to develop for a general architecture is much greater. This is the case because you simply have to check more stuff, is the decoding logic on a board going to work with the read and write cycles of different MPU's etc.Where is the project now?I currently have a 65C816 MPU card(being used exclusively in emulation mode), a Banked 32K ROM/128K RAM card, and a 68B50 SIO card. A Z80 MPU card is also on its way from JLCPCB. I also hope to get a 6809 MPU card done soon too.At the moment 4K Basic(OSI Basic), and TinyBasic have been ported to the system. I hope to get round to porting other Basic versions and other interesting software like GECKOS. Porting software is a nice short term task that can be done while other long term elements are being done in the background.As for my hardware focus at the minute it is developing an FPGA based graphics card for the system. This will be a long haul, and I'm expecting it to take well over a year to be developed to completion.RC2014?Since this is the one major question I see being posed I will answer it here. The short and honest answer is that it is a very good, mature, and popular project for good reason. But it's too tightly coupled to the Z80 architecture for my own needs.Thoughts, questions, opinions are all welcome.Also I would love more suggestions for interesting hardware cards I could add and software I could port for any MPU, like a sound card, ethernet/wifi support, CP/M, FUZIX.If people want more detail on elements of the project just ask, just please remember this is a project that is absolutely nowhere near completion and the current versions of the hardware may contain issues that have yet to be discovered and fixed so lots may changeThanks for reading!Edit:Attached is an image of the system as it is now.Grammar.

author: MK14
author_rank: Super Contributor
timestamp: June 05, 2020, 01:24:33 pm
content: Quote from: theworldbuilder on June 05, 2020, 11:50:51 amWhat about the 8 bit (external bused), versions of 16/32 bit processors, such as the Intel 8088 and Motorola 68008. Both of which come with various interesting (to at least some), software options.E.g. CP/M-86 on the 8088, without the full hassle of making it properly hardware/software PC like. Or make that board PC compatible (I'm not sure of all the work involved, so take care, as I think it is fair amount of work). Because PC compatibility, of that 8 bit system (which could run at 4.77 MHz original speed, or 10/12MHz (can't remember the max, it could be 16 MHz) ), would open up the huge software base of PCs, such as DOS, and its relatively huge software base.Your FPGA card, could then do CGA/EGA/MDA/VGA as desired.NOT doing the above, is also sensible. As it means sticking to the simpler, old 8-bit systems. Anyway, Z80 (or 8080) CP/M, gives a big software base, so no real need for the 16/32 bitters.One final word, the 16/32 systems with 8 bit buses, can access much more memory. Which also can be a factor. As an FPGA graphics card, on something limited to 64K of ram (or more if banking is used), limits the usefulness and/or software you can use with it.E.g. Amiga/Atari 68K or Sinclair QL (68008), but of course there are other hardware requirements, for doing such systems.You really sound like you want software which basically runs on bare 68008's, rather than stuff which needs lots of complicated hardware to go with it (e.g. Amiga).There are also forgotten/neglected, older 8 bit microprocessors. Such as the Motorola 6800 series, Cosmac Elf 1802, National Semiconductors SC/MP (Scamp) 8 bit microprocessors, and many others.Such as the original (generally considered the first) 8 bit cpu, the Intel 8008 (hard to do, as its 18 pins, forces a 3 way muliplexed bus, which is somewhat hard to implement).tl;drI'm feature creeping your project out of existence. Ignore me. (I'm jesting, but on the other hand, you need to be practical about how long things take, and what you want to achieve in a given timescale). You could consider the >8 biters internally, as possible long term future goals, if you want.

author: theworldbuilder
author_rank: Regular Contributor
timestamp: June 05, 2020, 02:06:23 pm
content: First of all thanks for the response!QuoteThis is something that I have come across and thought about, I would very much like to work with them, and the plan at the moment is to see this 8 bit architecture out to a mature state where most of the main boards are completed and then work on a 16/32 bit system using ISA as the bus standard.The bus standard for the system I'm using is strictly 8-bit and designed so I can build it at home without much expense using stripboard. I'll attach it as a .pdf to this post if anyone has any interest in it.QuoteThis is also a driving force as to why I'm sticking with 8-bit for the time being, and why I think this might be useful project for others, 8-bit is simple in a practical sense, but the likes of a Z80 as you mentioned still has a huge software base around it.QuoteAnother good point, and my thoughts on this would be to give the graphics card its own video RAM and perhaps also giving the configuration option to use system RAM as both configurations would have their uses, and modern FPGA's are plenty capable.QuoteThis is something I've thought about too and is definitely something I will be doing a deep dive on. Getting other 8-bit MPU and working with them is in a way a big part of this project. I would love the get the 6800 series, namely the 6809, up and going and I would also love to get the 1802 going on the system, although from what reading I've done on the 1802 it might be a little bit more complicated to implement into a general system like this.Again thanks for the response!For everyone:I've attached the bus standard I'm using and the corresponding pin descriptions .pdf docs I use.

author: MK14
author_rank: Super Contributor
timestamp: June 05, 2020, 02:27:49 pm
content: You seem to want feedback, so some quick comments on the bus signals.What about a WAIT line (it can have other names) ?Even if you intend for there never to be wait states. It can be useful while debugging, slowing the system down on purpose and/or using slower peripheral chips, than would otherwise be allowed (given the clock frequency). Or even trying/using slower devices.I.e. You can pause the cpu, while leaving the clock still running.You may use later versions of the cpus, which might run at 14MHz (6502 varients) or 20MHz (Z80). Those clock frequencies would be too high, for older peripheral chips. Hence the need for wait states.It would be nice if it said the voltage standard, as regards the inputs and output. I.e. TTL (I suspect that is what you intend), or CMOS levels ?

author: theworldbuilder
author_rank: Regular Contributor
timestamp: June 05, 2020, 02:40:35 pm
content: QuoteThis is actually relates to one of my first mistakes that I have revised in an updated version of my 65C816 MPU board. I had simply left the pin unconnected in the version of the board I currently have. Not what I should have done.I consider the WAIT pin to be more of a debug signal and so what I have done is added that signal to a header on the 65C816 MPU board. I should have done this in the first place. You make the very valid point of why it is needed.This was my learning of the lesson to always breakout unused pins to a header, always.QuoteAnother good point, the standard is indeed TTL as that is what the MPU's are compatible with. All logic chips used are HTC. Updated my table and doc!Thanks again!

author: theworldbuilder
author_rank: Regular Contributor
timestamp: January 04, 2021, 11:37:32 pm
content: So, it's been a while eh?Since my last post I haven't actually got to work on this project a huge amount.I haven't been doing nothing however.I have been spending a lot of time working on another project developing an FPGA based HDMI output 'GPU' board that I can build into a video card for this project.Update from my last postI have successfully tested the Z80 boards I got made up. I also ported Z80 tiny basic, ported by Doug Gabbard of Retro Depo here:https://retrodepot.net/?p=274So where does that leave the project at the moment?I currently have a ROM/RAM board and SIO board that I can successfully use with different processors.The next MPU up is the 6309. I need to finish up the PCB for this sucker, which is actually quite like the 65C816 board as both processors need some of the same external decoding logic in order to interface with the bus properly.I'm also going to start working on a DUAL SIO board using PLCC SIOs which are still available on Mouser. Like this guy:https://www.mouser.ie/ProductDetail/MaxLinear/ST16C550CJ44-F/?qs=H%252BP%2FcHWii3fpg1n0Abxi8w%3D%3DGoing forward I'm actually going to start making posts about each individual board I have designed, how it functions, what I was aiming for in my design, etc.So if you are are into designing your own retro micro-computers hopefully some of these circuits will be useful to you!Naming the project.I was trying to think of a better name for the project and while "Card based uComputer" is accurate it doesn't exactly roll off the tongue."BB uComputer" (BoardBased uComputer) was another name that popped into my head but I'm not sure I like it.BB-8 for "8-bit board based computer" anyone? Sounds very familiar though...Anyone got any name suggestions better than mine? I've set a pretty low bar

author: MK14
author_rank: Super Contributor
timestamp: January 04, 2021, 11:49:14 pm
content: Quote from: theworldbuilder on January 04, 2021, 11:37:32 pmCard Assortment of Many Different Integrated Generic SystemsC.A.M.D.I.G.S. or Camdigs or even CAMDIGS-8

author: theworldbuilder
author_rank: Regular Contributor
timestamp: January 04, 2021, 11:54:52 pm
content: Quote from: MK14 on January 04, 2021, 11:49:14 pmOh dear, I have to admit I do love thisGot a giggle out of me.And it's certainly better than my offerings

author: rstofer
author_rank: Super Contributor
timestamp: January 05, 2021, 12:57:36 am
content: Due to the disparity in control signals among the many candidate CPUs, I don't see how the 'bus' can be universal without adding glue logic on each card, perhaps in the form of a CPLD.My approach is to build up the components in an HDL and implement the entire system in an FPGA. I can be quite deliberate in separating the logic of the components while still creating a 'bus' that works with the given architecture. But that's just me... I got into FPGAs specifically to recreate an entire system, notably the IBM1130. I have separate components for the CPU, Card Reader, Line Printer, Plotter, Keyboard and Typewriter. In theory, I could invent a new peripheral and just add it to the bus. I have a DMA controller with a port per device.http://ibm1130.org/I have a few versions of the RC2014 project and a couple of them are running CP/M. I still have my old Altair 8800 and a CompuPro 6MHz Z80 Industrial system along with an ez80 50 MHz incantation and a couple of FPGA versions, one of which is dedicated to PacMan. The S-100 bus used on the early machines in less than optimal but it does work.For a project as described by the OP, maybe a review of the S-100 bus or the Intel Intellect Bus would be useful but it seems to me that the timing for a bus with 6800 devices would be different than a system using 8080/Z80 devices.

author: gcewing
author_rank: Regular Contributor
timestamp: January 05, 2021, 03:41:44 am
content: You could call it the NTSC-8 - Never Twice the Same CPU!

author: MK14
author_rank: Super Contributor
timestamp: January 05, 2021, 05:38:54 am
content: TotallyRidiculousUnity ofMultipleProcessors===>> T.R.U.M.P. = TRUMP = Trump = Trump8Or:BinaryInstructionedDuke-box ofElectronic von-Neumann-processors===>> B.I.D.E.N. = BIDEN = Biden = Biden8

author: MK14
author_rank: Super Contributor
timestamp: January 05, 2021, 06:07:26 am
content: Maker'sMetalMickieMagicMultiplicity ofManyMicroprocessors &Microcomputers= The 8 M's = M8

author: MK14
author_rank: Super Contributor
timestamp: January 05, 2021, 06:27:37 am
content: Quote from: gcewing on January 05, 2021, 03:41:44 amOr alternatively:You could call it thePAL-8- Processor Assortment Lucky-DIP-8Where DIP = Dual Inline Package

author: theworldbuilder
author_rank: Regular Contributor
timestamp: January 05, 2021, 06:54:13 pm
content: Quote from: rstofer on January 05, 2021, 12:57:36 amYou are absolutely correct. Each CPU has it's own interface and control lines. So how in the hell do we get a 'general' or 'universal' bus from this?The approach I took was to distill out the most common and basic control lines that can also be generated easily from a CPU using simple glue logic if they're not immediately available.The bus ismost similarto a Z80 bus, this more happened by accident than was intentional.Since this means that more proprietary signals like "M1" from the Z80 don't exist on the bus this does remove the capability to use the Z80's advanced interrupt responses, instead having to use a general ISR.For what I want to do this is a price that I can afford to pay.You also rightfully pointed out that the timings for 6800 inherited CPUs will be different from the Z80/8080 CPUs.What I did here was try to design the BUS and the cards around the common aspects of the timings.I.E. In a write cycle both 8080 and 6800 invalidate the Write control line before invalidating the data bus.This is basically the only way to write to memory chips and is probably why the timings are identical here.The same goes for the read cycles.Even though the cycles and functionality of the processors are completely different you can build a card that works of the common aspects of the read/write cycles.Quote from: rstofer on January 05, 2021, 12:57:36 amWhy don't I use an FPGA?This is a really valid question, FPGA's are brilliant, really powerful tools. Plenty powerful enough to implement an 8-bit system as I'm describing it.So why not use one?I simply really enjoy having tangible hardware. I can write Verilog/VHDL reasonably well. (I'm actually working on an FPGA based "GPU" for this project here:https://www.eevblog.com/forum/projects/120757gpu-fpga-project/)But there is just some caveman itch that real hardware scratches that FPGA's don't do for me.I enjoy the soldering and having to implement a system with all the space and cost limitations that real hardware entails.I wish I could give a better answer but at least it's an honest one

author: theworldbuilder
author_rank: Regular Contributor
timestamp: January 05, 2021, 06:58:07 pm
content: Quote from: gcewing on January 05, 2021, 03:41:44 amQuote from: MK14 on January 05, 2021, 05:38:54 amQuote from: MK14 on January 05, 2021, 06:07:26 amQuote from: MK14 on January 05, 2021, 06:27:37 amI don't think I've laughed quite as much at an electronics thread beforeThank you both very much for the lockdown laughs!I quite like the 'MMMMMMMM uComputer'

author: MK14
author_rank: Super Contributor
timestamp: January 05, 2021, 08:12:06 pm
content: Quote from: theworldbuilder on January 05, 2021, 06:54:13 pmAlthough it wasn't me who asked those questions, I fully understand and agree with your excellent answer!The thing is, with people's "Vintage/Retro Computer" itches, standard anti-itch cream, over-the-counter medicines, also 'don't seem to hit the right spot'.Different people, have had different experiences, of the huge development in computers, we have seen in our lifetimes. Different ages, locations, backgrounds (what was affordable), interests, etc etc.Completely or partially, change what we each think of as a "Computer".If you are old enough, or well read on the development of computers. We have gone from a very small number of typically mainframe computers, which cost millions or more pounds/dollars, needed room fulls of equipment, man power, experts in white coats, huge amounts of electricity, and were amazingly slow (by today's standards).Would break down regularly, and almost everyone, would never actually encounter a real life computer, or know how to program or use one.These days, there is probably more computer power in ones disposable credit card (I have been led to understand, that for security reasons, the security chip built into most credit cards, these days, probably has more computer power built into it, perhaps hundreds of MIPs, then was available in the entire world, for some readers of this message, or at least forum).I like emulators, but they don't seem to be 'real enough', e.g. timings wise, so I also prefer real hardware.Also I agree, FPGAs, seem to be cheating, as they seem to be a sort of half-way house, between a modern cpu emulating the old cpu/computer, and having the real hardware.I suppose it is a bit like, making a retro/vintage audio transistor amplifier, for speakers.Real discrete transistors is fine, but using op-amps or IC power amplifiers, seems to be cheating and/or more like using FPGAs.But FPGAs are not that bad, as for VERY rare cpus. They are probably the only realistic way, you are going to be able to play with such old processors. I.e. There are open-cores available, but the old cpus are rarer than hens teeth.

author: theworldbuilder
author_rank: Regular Contributor
timestamp: January 17, 2021, 11:18:36 pm
content: Alright so let's get an info post made about this project.First up:The Bus StandardPinout1 - +5V2 - GND3 - RESET4 - CLOCK5 - IRQ6 - NMI7 - MREQ8 - IORQ9 - BUSRQ10 - BUSACK11 - RD12 - WR13 - A014 - A115 - A216 - A317 - A418 - A519 - A620 - A721 - A822 - A923 - A1024 - A1125 - A1226 - A1327 - A1428 - A1529 - D030 - D131 - D232 - D333 - D434 - D535 - D636 - D7Design ConsiderationsHow did I end up with this bus?Why do the control signals look more like those of a Z80?This is simply because it's easier to go from Z80 control signals to those of the 6800 lineage than it is to go the other direction.This means it's easier to hook up devices built for both styles of control lines.What about HALT, WAIT, RDY, M1, or any other such signals from a processor?Well they simply weren't critical and I wanted to build this bus on a piece of easy to find strip board. This gave a hard space constraint on the number of signals I could use.I also didn't want to be dealing with proprietary signals like M1 as trying to replicate these across different processors was going to be next to impossible.I've also attached a doc with a signal description for each signal. This gives a more detailed description for each signal.What do I think of the bus?I think I managed to achieve what I was going for.This is about as universal as it will get for an 8-bit bus standard.Each processor I want to interface to the bus really only requires a minimal amount decoding logic to do so.PCB DesignUnfortunately I haven't gotten around to putting together a PCB for a backplane yet.The stripboard version I currently have is doing its job well enough for now!Mini project updateThe 63C09 processor card is ready to be ordered and will hopefully be on its way to me in the coming weeks!What card to work on next?? Probably the uGPU HDMI display board as the uGPU is basically ready to go!I've also had my eye on the 8085/6502 as the next process I might make a board for. Although another processor board is probably a while away!