Close
0%
0%

Gigatron TTL microcomputer

"Just because", a microcomputer that runs without a microprocessor

Similar projects worth following
In 1975 Wozniak famously designed the Breakout arcade game out of 44 simple chips, without using a microprocessor, simply because those weren't available to him at the time. When one year later the MOS 6502 and Zilog Z80 were launched, his Apple 1 started the microcomputer revolution. The debate still rages about which processor was the better one. But more interesting is to investigate if these devices were really necessary for the personal computer revolution at all: what would have happened if they had never appeared?

Update: For more info on the kit version of this project, check out: https://gigatron.io/?page_id=86

History followed one path
There were many other ways
It will always be like that

Can fewer than 40 old-skool TTL chips implement a multi-megahertz microcomputer with video and sound?

This project started as an exploration of what you can build from 30-40 simple logic chips. It has turned into a general purpose 8-bit microcomputer without any microprocessor driving it. I initially designed this on a breadboard, but last summer I converted it all to a small PCB. It has VGA-compatible 60 Hz video in 64 colors and can display full-screen images, scroll them and play sound. Soon it will be running games like Pac Man and Space Invaders. But just for fun, I'll keep everything compatible with the breadboard design.

This is what we have now:
• 8-bits system built out of 1970s TTL chips (74LS)
• 34 TTL ICs, or 930 logic gates, for the CPU proper
• No microcontroller and no complex chips (such as the 74181 ALU)
• Only simple ICs, such as AND/OR, 4-bit adders, multiplexers, registers and so on
• 6.3 MHz. Might be pushed to 8 MHz
• 32kB 70ns RAM
• Harvard architecture with EPROM for program/data
• Operates on 2.5W, or below 0.5W for the 74HCT version
• RISC with pipelining:  1 instructions per clock (sometimes 2...)
• Instruction decoding with diodes
• Nice instruction set: ADD/SUB/AND/OR/XOR, conditional jumps, many useful addressing modes
• 60Hz 64 color VGA and 4 sound channels bit-banged from software
• Designed and built on a solderless breadboard in 6 weeks

The build has become a contradiction of itself. To reduce the parts count, every hardware function is essentially software-defined: video, audio and I/O are all handled by software. Video at the pixel level. Audio at the sample level, in 4 channels. Even the applications themselves will be running in an interpreter (aka a virtual processor). Yet there is no microprocessor that runs any of that. And not only does it work, the board is smaller and faster than the microcomputers of the day, including the first IBM PC. Having no microprocessor might have been better than having any of the time :-)

Check the videos for the current capabilities. The HaD blog section has the full story in all detail, so don't miss that if you're interested.

Some concepts to ponder about before starting

  1. How many bits? 4, 8, 16, 32, ...
  2. Software-generated video or hardwired?
  3. Harvard or Von Neumann architecture?
  4. Single cycle or multi cycle? Pipelining?
  5. ALU chips or not?
  6. Sliced ALU or full width?

A rule of thumb is that a minimalistic four bit system can be done in 10 chips, an eight bitter needs no more than 20 chips and going to 16 bits roughly doubles that again. Not all units double in chip count, but by extending the buses you will also have need for more addressing modes for it all to make sense. For example, a four bitter might work fine with a 256 word memory and absolute addressing, but with larger memories you'll need ways to construct addresses dynamically. Also, add more chips if extra functionality is required, such as high speed, a stack pointer, interrupts, a custom ALU or video.

Simplest possible concept

One concept, probably the simplest, is to replace the TrinketPro from the earlier breadboard VGA from TTL and SRAM with a minimalistic 4-bit TTL CPU. We will then get a working system with around 25 chips, or about 30 if we make a custom ALU. It will indeed be good enough for Pac Man and Space Invaders, but that will then also be the limit: no chance at all to have any fast scrolling, fast color changes, smooth moving objects, large objects, etcetera. Upgrading the CPU part to 8-bits won't bring much, because there will still be a communication bottleneck between the two parts. For any more exciting video we will need more complexity in the video part. If we do both, we certainly end up with more than 40 chips. It is absolutely interesting to try out this 25 chip concept...

Read more »

Schematics.pdf

Circuit diagram

Adobe Portable Document Format - 1.41 MB - 05/26/2018 at 17:44

Preview
Download

2018-HaD-Belgrade-GigatronTTL.pdf

2018 Hackaday Belgrade presentation

Adobe Portable Document Format - 23.71 MB - 05/26/2018 at 15:40

Preview
Download

Block-diagram.pdf

Modules, buses and control signals

Adobe Portable Document Format - 150.57 kB - 04/14/2018 at 20:12

Preview
Download

GCL-grammar.xhtml

EBNF and railroad diagrams for Gigatron Command Language

xhtml+xml - 66.74 kB - 03/12/2018 at 15:29

Download

LICENSE

2-clause BSD license

license - 1.30 kB - 02/27/2018 at 20:45

Download

View all 6 files

  • WOZ monitor on TTL

    Marcel van Kervinck6 days ago 0 comments

    I've ported the Apple-1 built-in monitor program: WozMon.gcl

    The original is 254 bytes, my version is $254 bytes . About half of that is for terminal output (character printing). The Apple-1 had dedicated hardware for that... With this, all original Apple-1 firmware has been ported to the Gigatron :-)

    Now you can inspect memory locations, write to them and execute code.

    Tutorials for the original WozMon, such as this nice one, are applicable as I tried to deviate as little as possible from the original: the differences are essentially cosmetic or slightly improved usability. The Gigatron-specific differences are:

    •     Welcome message is "*** WozMon" instead of error prompt ('\')
    •     Can use lowercase as well as uppercase for hex letters
    •     Delete shows effect on screen, no need for '_' (RUBOUT)
    •     Always print address at start of line in block examine mode
    •     Input buffer has the same size as screen width
    •     Executed code can go back to monitor with RET instruction ($ff)
    •     Faster screen update, and cursor symbol instead of '@'
    •     A bit more careful with empty lines

  • Little cheating Babel fish

    Marcel van Kervinck06/07/2018 at 21:59 2 comments

    There are several methods brewing for hooking up a keyboard. The one most in line with the system is WattSekunde's four chip design for a matrix keyboard interface. But such keyboards might be hard to find, while PS/2 keyboards are still easy to get. But their protocol is convoluted and it is unclear how to handle that with a few simple logic chips. So... we cheat!

    PS/2 is simply too modern, and we need a time machine to translate its fast and complex signals to the simple signals that the Gigatron will understand. The ATtiny85 will be our Babel fish.

    To get some idea: the ATtiny85 must be configured to run at 8 MHz to do its magic. 1 MHz won't be good enough to catch and transfer simple key strokes. Here is the system in action:

  • Belgrade 2018 presentation

    Marcel van Kervinck05/26/2018 at 15:53 0 comments

    Proud to present at the Belgrade conference today. I uploaded my slides here.

  • Clickety-clack

    Marcel van Kervinck05/10/2018 at 14:32 0 comments

    Using an Arduino Uno to handle the PS/2 protocol. Computer is still running stock ROM v1. The Arduino is abusing the Loader application to inject a Terminal application. To reduce cable clutter, the computer is now also supplying power to both peripherals.

  • And then there were sprites

    Marcel van Kervinck05/05/2018 at 15:18 0 comments

  • EEVblog Dave Jones trying to kill a Gigatron

    Marcel van Kervinck05/05/2018 at 00:00 1 comment

    Dave's third Gigatron-featured video in a row. This time he is trying to slaughter it, but the Gigatron doesn't cave in. Go Gigatron Go! \o/

  • Ozzie build

    Marcel van Kervinck05/01/2018 at 12:22 0 comments

    Woke up this morning and wondered where those new kit orders suddenly came from. It turned out that right at that moment Dave Jones was building a board in a Youtube live stream with many hundreds of viewers looking on. I caught the last half hour or so. I couldn't stand the suspense when he was searching for a cable. He didn't use the manual, skipped all tests, still it worked 1st time. "This is disappointing, there is nothing to troubleshoot!". Greatest compliment ever! THANK YOU

    Edit: the live soldering turned out to be a prelude to more to come. The Gigatron is now honoured with an official EEVblog episode! We’re truly and utterly flattered.

  • It's a-LIFE

    Marcel van Kervinck05/01/2018 at 00:31 1 comment

    The real progress is that this was loaded as a precompiled *.gt1 file. Gt1 is the newly defined object file format for vCPU programs. The code running, life3.gt1 was created by at67 on the other side of the world using his own assembler and tested in an emulator. This is my test to see if the file can be loaded and executed on actual hardware, and it works! So we now have a standard for exchanging Gigatron programs!

  • Gigatron as TV Typewriter

    Marcel van Kervinck04/22/2018 at 16:53 0 comments

    The video shows how an Arduino can be hooked up and pretend to be an ASCII keyboard. No EPROM change is needed. After powering the Arduino, it takes over control by resetting the Gigatron, navigating the menu and starting Loader. It fakes game controller signals to do that. Then it pushes a tiny precompiled Terminal program into the RAM. From there on, it sends simple ASCII codes which the board dutifully displays. This is step 1 towards interacting with the system for direct hacking.

    The source code for the sketch is in GitHub. Hookup is with 4 male-to-female jumper wires.

    P.S: At the third test in the video the stream stops because the power bank that drives the Arduino was already empty :-)

  • 1 year later, a new Gigatron is born every day

    Marcel van Kervinck03/31/2018 at 09:28 3 comments

    It is amazing to start getting almost daily reports back from all over the world of new Gigatrons seeing the light of day. This project started one year ago here on HaD with no more than a bunch of empty breadboards and some chips. Without any clue if the crazy minimalistic concept would be viable, and no clue on how the ALU or control unit were going to work. Thanks for your pictures and please keep sending them in!

    For reference I took this breadboard photo on March 31, 2017. It accurately portrays the project status of exactly one year ago today:

View all 57 project logs

Enjoy this project?

Share

Discussions

edsjac wrote 05/30/2018 at 20:52 point

Really nice and interesting project! Open source Hardware and Software. 

Many people can use it to learn in-depth how computers works.

Thank you very much for sharing!

  Are you sure? yes | no

Marcel van Kervinck wrote 05/30/2018 at 21:38 point

Thanks! This project has been a blast, and still is...

  Are you sure? yes | no

Marcel van Kervinck wrote 05/27/2018 at 23:47 point

It turns out there is a Gigatron Service centre in Belgrade. How cool is that! https://forum.gigatron.io/viewtopic.php?p=115#p115

  Are you sure? yes | no

Marcel van Kervinck wrote 05/14/2018 at 11:48 point

We have kicked off a Gigatron user forum: https://forum.gigatron.io

  Are you sure? yes | no

hosabike wrote 05/04/2018 at 11:17 point

Hello. I have a small question for creators. This design seems damn effective and useful, but I still have to wonder: why exactly something like this wasn't built in late 60/early 70 despite TTL logic was avaiable since 1966?

  Are you sure? yes | no

Marcel van Kervinck wrote 05/08/2018 at 23:12 point

Two reasons. First but not foremost is that the RISC architecture was not recognised as commercially viable until much later, like 1985 or so. Doing RISC drops your component count by an order of magnitude. Second is that the real hero in this design is the RAM chip. That chip allows for software to do a lot of stuff you would normally do with circuitry. Dating it: if the design were to be retrofitted for slower TV signals of the day, something like this might have existed around 1985 considering part availability. (Mind: slowest VGA speed = 4x TV speed). The CPU-part could still be made from early 1970s logic. The total system would have been expensive because 32KB SRAM (not DRAM) at that time was expensive.

I have scored some amazingly cool milspec SRAM chips from eBay that are from 1988. They *WORK* in the VGA version! In fact they are already 3 times faster than required for that (25ns while 70ns needed). They must have cost a fortune back then.  I did go through a lot of old BYTE magazine's component ads: you can't find such amazingly fast specs in the commercial offerings at the time... Nothing even close.

  Are you sure? yes | no

hosabike wrote 05/09/2018 at 07:33 point

Thank you very much for your answer, Marcel. So, it was virtually impossible to build in 70s, wasn't it? May be use magnetic core memory instead?

About TV signal - may be it's possible to DIY assemble a simple display device with Gigatron resolution 160*120 (even monochrome) on the 80's technologies? This would solve a TV problem.

And the second question. How hard is it to code BASIC interpreter on this machine? It does have it's own assembler, AFAIK.

The same question applies to OS.

  Are you sure? yes | no

Julian wrote 05/24/2018 at 03:15 point

"First but not foremost is that the RISC architecture was not recognised as commercially viable until much later, like 1985 or so."  --- I suspect you're right about this, despite the fact that the clearly *were* people in the industry who knew this was the best approach.  Seymour Cray had been building designs that were effectively RISC systems and which dominated the high performance computing world from the mid 60s right up to the end of the 80s, but nobody else really seemed to understand what lesson to learn from that.

"Second is that the real hero in this design is the RAM chip.  [...] The total system would have been expensive because 32KB SRAM (not DRAM) at that time was expensive."

For reference of how expensive: I found an advert from Dec 1981 (which would probably have been about the last date a machine like this could have launched and been commercially successful -- any later and it'd have to compete with the C64) that priced 70ns SRAM at $30/4kilobits, so you'd be looking at about $2000 worth of RAM to build this machine at the time.  That said, I wonder how well it would work with, say, 8KB of fast SRAM for critical parts of the system and 16-64KB of slow DRAM for bulk storage, which would put the build cost at approximately the same price as the retail cost of a C64 at launch.

  Are you sure? yes | no

Marcel van Kervinck wrote 05/10/2018 at 00:01 point

With pure 1970s components the CPU section could certainly be built using 74LS parts, but something else has to be done around the RAM. At least make it DRAM, slow down the clock to match (which might be ok for slower TV signals). It is difficult to really go back to that era, because RAM chips of those days are practically unavailable now. So it will look a bit different, but either way still be expensive for the 32KB RAM capacity (even if it were DRAM).

About BASIC: it is just a lot of work. Microsoft could become a company precisely because they had done a BASIC and the microcomputers of the day needed it. This project is a bit in the same state. Unfortunately, Bill Gates is doing different things nowadays! There is a proper assembler already written by user at67 on GitHub. It does both the 8-bit native instruction set as the 16-bit vCPU instruction set.

You want several steps:

- Direct or indirect keyboard hookup. Indirect is easy, but a bit cheating. Direct hookup is a harder nut to crack (at least: if you want to stay with the minimalistic spirit of the rest of the system. If not, just use the Arduino).

- BASIC parser/interpreter. Several weeks of full time effort for an "integer basic".

- Some kind of screen editor

If you go all the way, you need to add:

- Floating point package

- Program save capability. (Load is already there.).

  Are you sure? yes | no

hosabike wrote 05/10/2018 at 18:05 point

Thanks again. So is it possible to code some network drivers to connect this thing to Internet? At least it seems capable to support some kind of relatively easy protocols like IRC or whatever.

  Are you sure? yes | no

Marcel van Kervinck wrote 05/24/2018 at 07:07 point

@Julian : I'm interested in that 1981 reference to 70 ns SRAM, because it helps date this project. Do you have a URL or can you scan a copy for me if it is from a magazine?

  Are you sure? yes | no

Bob wrote 04/20/2018 at 15:23 point

Kit worked great, placing the chips in position on the foam like that simplified things hugely and the build manual was very clear - my only soldering error was leaving one pin unsoldered which resulted in a strange offset on the VGA signal, till I spotted it.  I'd be keen to learn more about exactly why it is that for instance this clump of 74xx chips are the ALU and that clump are a register, etc - once that kind of info is made available it could be a great teaching resource along the lines of the excellent Elements of Computer Systems / From NAND to Tetris (https://www.amazon.co.uk/Elements-Computing-Systems-Building-Principles/dp/0262640686) which @monsonite once pointed me towards.

Might I suggest Google Groups as a quick & easy way to get a forum community up?

  Are you sure? yes | no

Marcel van Kervinck wrote 05/10/2018 at 00:24 point

Hi Bob, sorry I missed your update, but I think I saw it on Twitter :-)

We recognise the usefulness for a forum, but we're super busy so we're really in need of helping hands here, otherwise it isn't going to happen anytime soon. If somebody starts one and I like it, I will join threads I'm interested in. I have to say that I find Google Groups disappointing from user point of view, and for this project there are builders and tweakers/hackers and those threads shouldn't mix. The bbCode type of forums are so much nicer in presentation, and they can support two sections under one roof: Assembly and Hacking (no need to divide it up further, I would be against that).

But then also beggars can't be choosers. Now some programming discussions happen on GitHub for example.

  Are you sure? yes | no

Bob wrote 05/10/2018 at 00:46 point

Google Goups seems to work fine for other similar kits / kit makers e.g Oscar Vermeulen's awesome PiDP-8/i is here https://groups.google.com/forum/#!forum/pidp-8 and soon to be joined by PiDP-11/70 here https://groups.google.com/forum/#!forum/pidp-11, Spencer Owen's excellent Z80 kit RC2014 is here https://groups.google.com/forum/#!forum/rc2014-z80, Chris Davis' Altair-Duino is here https://groups.google.com/forum/#!forum/altair-duino, Julz' Forth-based Fignition is here https://groups.google.com/forum/#!forum/fignition, etc - I imagine a number of your customers / readers are, like me, already denizens of these places.

  Are you sure? yes | no

Marcel van Kervinck wrote 05/10/2018 at 01:03 point

I'm aware. Let me say I have just have no real positive experiences with Google Groups. The groups I know and sometimes check out feel disconnected to me and the overview and content presentation is poor, as if it is still running on Usenet. Also no inline images, no markup. I find it frustrating to use for technical content, and therefore groups is not something I would personally frequently checkout and become like a home.

  Are you sure? yes | no

Marcel van Kervinck wrote 05/10/2018 at 08:21 point

We could be looking into bbPress as forum plugin for on the main site... Any experiences with that? Good or bad?

  Are you sure? yes | no

Marcel van Kervinck wrote 05/12/2018 at 19:56 point

We're looking at phpBB now... Either self-hosted, or we're going for a rental scheme.

  Are you sure? yes | no

lion mclionhead wrote 04/14/2018 at 20:41 point

Interesting video from 8bit guy.  It's sort of extraordinary that the gigatron outperforms a VIC 20 using only discrete logic gates for a CPU, but the trick is using modern memory chips & cost.  If it just drove a serial port instead of driving a CRT, it could run much more powerful demos.  8 bit guy was hard on it because he only saw the default firmware spending all its clockcycles driving the CRT.  

  Are you sure? yes | no

Marcel van Kervinck wrote 04/14/2018 at 21:02 point

We absolutely love his episode! We don't think he is hard on it at all... He presents the project in a superb manner. As he mentions at the end, the programmability is a matter of software, and it is the next phase of the project. The Apple-1 didn't come with a built-in BASIC either, for the same reason: it takes time to build a software environment.

  Are you sure? yes | no

Ruud van Falier wrote 03/27/2018 at 09:57 point

Such a cool project and also very extensive!
Ordered the kit and built it this week: https://twitter.com/BrruuD/status/978355534033227777/photo/1

Now for diving into the mechanics and figuring out how everything works exactly :-)

  Are you sure? yes | no

Marcel van Kervinck wrote 03/27/2018 at 10:18 point

So cool to see it work!

  Are you sure? yes | no

Stuart Longland wrote 02/24/2018 at 21:47 point

I'm guessing the tail end of "On The Turning Away" heard in the bouncing ball video is an artefact of something playing elsewhere in the background and not being played by the computer itself?

Still, damn good effort for purely TTL.

  Are you sure? yes | no

Marcel van Kervinck wrote 02/24/2018 at 21:52 point

Thanks :-) It can make proper bleeping sounds though. It has 4-bits sound output (16 levels) and the default loop squeezes 4 software channels through that. They can synthesise pulse, triangle, sawtooth, etc. It sounds crappy but charming, just right!

  Are you sure? yes | no

Stuart Longland wrote 02/24/2018 at 21:56 point

Given a lot of music was constructed with those four primitives… that's probably just fine.  The SID chip does similar with 3 voices.

My only concern here is look out for the DMCA trolls, while it's clear to us (and anyone with intelligence) that the music is just co-incidentally playing in the background … some lawyer might have a momentary lapse of reason and declare the entire video a derivative work. :-)

  Are you sure? yes | no

Marcel van Kervinck wrote 12/26/2017 at 07:12 point

Anyone attending 34C3 in Leipzig this week: we will be strolling around, and of course we'll bring Gigatron prototypes!

  Are you sure? yes | no

monsonite wrote 11/08/2017 at 18:28 point

Hi Marcel,

Great work!  Faster, simpler and cheaper than the original IBM PC - love it!

Is there a schematic available for your design?  I'm interested in the final approach you took for your ALU.

Interested to hear some more about the virtual machine you hinted upon.

I have shared your work with anycpu.org

Well Done

Ken

  Are you sure? yes | no

Marcel van Kervinck wrote 11/08/2017 at 19:10 point

The full schematic might appear in some later stage as it is quite a mess in need of serious cleanup and I'm working on software the upcoming weeks. But the ALU is described adequately elsewhere: the "Logic" stage comes from here  http://www.6502.org/users/dieter/a1/a1_4.htm  (bottom of the page) and the ALU uses two of those with two 4-bit adders, as described here: http://www.6502.org/users/dieter/a1/a1_6.htm  except that my design does without the 3rd stage that only provides right-shifting. So in total it is 8x'153 and 2x'283 with 5 control signals going in. Dieter's pages suggest that you need 8 signals, but most of them have the same value for the common operations. The carry-out goes back into the condition decoder where it acts as an allzero-indicator during jumps. There is no flags register as it costs too many chips for too little added value. I do right-shifting in software using the "single-instruction subroutine" technique described in the log on pipelining. This computer doesn't need shifting that much because the graphics layout is 1 byte = 1 pixel.

  Are you sure? yes | no

monsonite wrote 11/11/2017 at 18:33 point

Hi Marcel,

I'm suitably impressed with the elegance of your design that I have taken time to transcribe it to EagleCAD, so that I can get a better understanding of the control and data paths.

After pondering your Control Unit schematic for an hour yesterday lunchtime, and how it decodes the ALU instructions and generates the various addressing modes and jumps, I was happy that I could figure from the bus and dataflow diagram how most of the rest of it worked. 

Now that the bulk of the design is captured, I'm figuring out a way of using an ATmega1284 as an easy to update ROMulator device, running code from faster RAM and a way of extending by adding more VRAM.

When you consider that the first Sinclair ZX80 machine took 18 TTL chips, plus Z80, ROM and RAM to create a monochrome TV picture of 32 x 24 8x8 characters, for just another 18 chips they could have replaced the Z80 and had something that produced colour graphics and ran at 4 or 5 times the speed.

regards

Ken

  Are you sure? yes | no

Justin Davis wrote 01/02/2018 at 16:51 point

I don't think schematics are ever really "finished", but the schematic that the layout was made from would be most helpful even if it is a mess.  I would like to see them because I would like to try to recreate it in an FPGA.  You could post them now, and then replacement them with a cleaned up version once you have it finished.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 10/28/2017 at 12:41 point

Amazinger :-D

  Are you sure? yes | no

f4hdk wrote 05/26/2017 at 11:34 point

I like it! 

Every homebrew computer should have video output, even made with TTL!

Have you seen my project? It is quite similar (custom CPU architecture, video output) even if I used an FPGA  instead of TTL components.

https://hackaday.io/project/18206-a2z-computer

It's fully documented and open source. 

And welcome on the "homebrew CPU Webring" !

  Are you sure? yes | no

Marcel van Kervinck wrote 05/26/2017 at 13:52 point

Nice! FPGA's are a step up for me. Clearly the TTL and the RAM size are limiting my video resolution, but it is also cute in its own way.

  Are you sure? yes | no

Peabody1929 wrote 04/01/2017 at 18:46 point

Consider one or two AMD2901 or a single CY7C115/116/117 -> More computer, fewer chips.

  Are you sure? yes | no

Marcel van Kervinck wrote 04/02/2017 at 20:09 point

Thanks. I can find the first. I do have ALU chips available, I just don't feel like using them in this build. Do you have data sheets for the second series? I have trouble finding out what it is. Some memory? I plan on using 62256 for RAM and 2x AT28C256 for ROM, with a possibility to extend the memory using the AT27C1024.

  Are you sure? yes | no

Big Boy Pete wrote 03/31/2017 at 18:19 point

Good luck Marcel.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates