The ghosts of computing past

As some of you have expressed and interest in the computer project I’m doing I though I’d start with a bit of history of the past projects that led to this point…

Like a lot of us I guess, I get nostalgic for what seem like the simpler times of yore. In my case this manifest as a yearning for the early 80s computers of my youth. Not for the games, or those specific computers per se, but for the tinkering with a soldering iron and trying to write programs to squeeze every ounce of speed and memory out of such limited systems.

So ten years ago I decided to start making my own computer, the sort of thing that I would have loved to make in my teenage years if I had the money. I didn’t eschew the modern world completely however. Rather than using pencil and paper as I once had, I used programs on my PC to draw the schematic and manually lay out the PCB. And instead of the Maplin catalogue I had a global e-commerce system to source components.

After buying a UV light box, some standard 160x100mm blank PCBs and the appropriate chemicals I was etching my first board, learning in the process how to align the images on both sides to match up within a fraction of a millimetre. For drilling the holes I had bought a Dremil and it’s crappy half plastic drill press, which was so flexible it kept breaking the tiny drill bits and made precision near impossible. But after all this I had my first little board I could base a system on, with a Z80 microprocessor, some RAM, a ROM and a 2 bit interface I could connect to my PC. Oh, and the board had a couple of blinking LEDs, proper computers must have blinkenlights. :slight_smile:

Writing this, I’m getting all nostalgic for 10 years ago and am cursing the fact that I threw out these first few PCBs only this spring.

By the time I had added a proper RS232 serial port to my system as a second PCB I realised I had definitely got the bug and my ambition was growing. Wanting a more professional look, I bought a load of parts to construct a smart desktop 19-inch rack system, and for better quality PCBs, a German made all metal drill and press, some chemicals for tinning the copper traces, and a load of teeny-tiny rivets (0.6mm diameter).

These rivets are to join traces on both sides of a PCB and the tool for inserting them cost several hundred quid, which I begrudged paying. Thinking back I’m remembering a rainy day on a Lake District holiday with Mrs Mouse where she did some knitting or something and I sat at the kitchen table trying to pick up individual rivets with a tweezer, turning them round to insert them, then using a centre punch and gentle hammer tap to fix them. Certainly a sense of achievement when you complete the hundred or more needed for each PCB.

Over a period of several years I built an ever expanding system, learning in practice what I already knew from theory, that high speed electrical signals don’t travel neatly in wires. Instead they reflect off ends, resonate like a bell and leak between each other. To troubleshoot these issues I had to splash the cash on a cheap (£600!) fast oscilloscope.

There came a point when I thought I know how I could have done this better so started again from scratch. Finally, five years after the journey start I had this.

That has a Z80 CPU, 1 megabyte of RAM with an MMU, a hard disk and compact flash for storage, and a couple of USB serial ports to connect to my PC, plus some other miscellaneous circuits. Conspicuously lacking are keyboard, video and sound.

I’ve never been much bothered by sound, though I did tinker with a design for multi channel digital sound, to have something like the Fairlight CMI. For keyboard and display I have my PC acting as a ‘dumb’ terminal via USB. It didn’t seem to be worth the effort to make a real keyboard interface, but I do wish I had built a video card. I didn’t want to use the single chip display controllers used in things like the BBC micro or the first IBM PC, I wanted something more of my own design, built from scratch, and better :slight_smile: . I have a completed design for this, but even stacking 2 PCB’s on top of each other it was impossible to get everything to fit and connected up. I even started ‘cheating’ by designing with surface mount chips to see if that made things easier, it didn’t. (Looking again now at the revision history, I came back to this design only a couple of years ago and got the PCBs mostly done for a 3 board version using old DIL packaged ICs. Think I got demotivated or distracted by the next project.)

So much for all this hardware talk, I hear you say, but what can it do, what software does it run? I guess the logical choice would have been to get an operating system like CP/M running and access all the software available for that (there is some appeal in playing Zork or learning Fortran that way). However, my intention was for this to be all my own work from the ground up, starting by writing a Z80 assembler in Z80 assembly on my PC to bootstrap the process. Once my assembler could assemble itself I knew it was mostly bug free and set about using it to write a boot monitor, then a multitasking operating system. Nothing particularly radical about it’s structure, and the filesystem was inspired by Linux’s ext2 format. There is something I find satisfying about implementing a written specification, so for system utilities I set about implement an essential subset of POSIX utilities, including a Borne shell, all in Z80 assembler of course!

I do think I’ve missed out though by not using an old operating system like CP/M, what I’ve done makes it feels too much like my modern PC. Though I guess, the project has always been about the process of creating not the using of the final thing.

Coming in part 2, back to the 70s…

7 Likes

Between you and @iron this is now the most interesting site I know of on the internet. :grin: And then there’s all the motorcycles, too!

5 Likes

And the various travelogues, surely :innocent::joy:

4 Likes

Absolutely - all things motorcycles, including the travelogues, definitely! :grinning_face:

2 Likes

And then there’s me, struggling to sort out an Ad blocker on my iPad…. :thinking:

3 Likes

And, perhaps, ‘dat little auld fella’ riding a humungous, brightly liveried Beemer and finding a whole new purpose in the pleasure of motorcycling …?

1 Like

Well Brown Mouse, ALL of that has completely gone over my head. But I wish you well and thanks for sharing. It takes all sorts of us to make a forum/world…

5 Likes

Having grown up long before computers were a thing, I’m quite proud of myself for having learned to use one at all. (Not that one could go through life these days without one.) But as for being able to design and build one, wow… And doing it for fun…!

5 Likes

Likewise. I sat all of my professional examinations in the days before the personal calculator and the choice was log tables or a 10” slide rule. I chose the latter. On a visit to the Science museum in West Ken with my eldest son when he was in his teens there, in one of the display cases, was my slide rule! :rofl:

4 Likes

Part 2 - Back to the 70s

A couple of years ago the YouTube algorithm pointed me in the direction of someone building an 8-bit CPU using logic ICs. Designing CPUs was another thing I played at during my younger years, so after binge watching the video series to that date I was quite enthused to do something myself. Especially appealing was the realisation that you could order custom PCBs from China for not any more cost that doing it yourself, and not have to do all that tedious drilling and riveting! Don’t get me wrong, it was vary satisfying doing that on my previous projects but it was a case of: been there, done that, lets move on.

I set about designing PCBs and at the same time wrote a C++ program to simulate them, to check they would work when built. Six months later I decided I needed to rethink things and starting over again, so it was nearly a year after starting before I had a complete simulation of the CPU and the design for some of the PCBs done. Time to order some of those PCBs and start soldering!

So I could test the boards I also made an interface circuit to connect to a PC. Now my simulation program could control the real PCBs and I had a working system that was a mix of simulation and hardware. Over about 9 months I made and designed more of the PCBs until I had a working CPU in hardware.

This is built using new low power versions of the 74 series logic chips that appeared in the early 70s. You could pop them out their sockets and replace them with 70s parts and it should work. The only thing I cheated on was the memory chips as I used larger capacity fast static RAM chips from the late 80s. You can’t buy new the old style chips, and they are difficult to interface to. Besides, the newer chips let my CPU run a lot faster, at 12MHz with memory access taking only one cycle it’s about as fast as an early 80’s PC :slight_smile:

I built it as a 8-bit CPU but you end up having some 16-bit circuits for operating on memory addresses. I’d done this by doubling up some of the PCBs (they are made in multiples of 5 so had handy spares). However, this size of PCB limited the number of connections they could have between each other, meaning the memory connections ended up with a separate ribbon cable. Not very satisfactory. Time for version 2…

Now I wasn’t having to make PCBs by hand, there was no reason to restrict their size. So I decided to upgrade from 3U to 6U size, and whilst I was at it, make it fully 16-bit internally. (Still 8-bit memory and instruction size). This is the current state, with just two of the larger PCBs done.

At the start of this year I was struggling with the design of the 3rd PCB and motivation was dwindling, that’s when I let myself get distracted and started to think about a new project. Back to the 60s…

6 Likes

What spanners have you been using: Whitworth, A/F or metric?

5 Likes

Tiny metric ones.

6 Likes

This put me in mind of a talk I saw online recently.

1 Like

Here’s another ghost that someone is trying to resurrect. Scroll to the bottom of the blog post if you know what you’re doing with FPGAs. :slightly_smiling_face:

FPGAs seem more like software programming to me, Verliog even reminds me of C. Got nothing against programming, made a living from software, now want to get back to my hardware roots :slight_smile: There’s lots of YouTube channels of people repairing old kit. Two I follow are Usagi Electric and Adrian’s Digital Basement.

1 Like

Been reading about this recently (pretending to understand) is this your next hardwiring project?

Not come across Core Rope memory before, seen the read/write magnetic core memory, friend’s father had one sitting on the mantelpiece when I was a kid, made an interesting piece of art. Almost unreal seeing 1mm dimeter sized ferrite beads threading on wires in a big grid.
No something I’d want to attempt to make from scratch, even assuming you could get the beads.

Though thinking about it, once I have my next project up and running it could really do with something oldschool for memory storage. Was thinking about doing something with the mechanics of a compact cassette to make some tape storage, but for RAM there isn’t really an alternative to core memory I believe.

2 Likes

Part 3

To bring things up to date, so to speak, we’re heading back to the 60s…

One of the YouTube channels I follow is Usagi Electric who built a one-bit vacuum tube computer with a home made paper tape reader.

He has also bought, borrowed or been gifted various old computers from the 50s through 80s which he’s been repairing. What the guy lacks in technical knowledge he makes up for in enthusiasm and ability to act as a focus for a community of nerds.

Anyway, between the vacuum tube computers of the 50s and the logic IC computers of the 70s there was a window in the 60s where the state-of-the-art computers used circuits with individual transistors. When Usagi Electric started working on one of these it peaked my interest in doing something similar. I remember reading a decade or so ago about someone who made an enormous CPU from transistors and thought how cool it was.

At the time I thought such a thing was totally infeasible for me to do as I was thinking about having to hand make all those PCBs. Now however I can economically get PCBs made for me, perhaps I could do something, hmm…

The old transistor computers were based on the same idea as the vacuum tube versions, having germanium diodes to connect their inputs but instead of using a vacuum tube as the switch they used a transistor. This is known as Diode-Transistor Logic (DTL). It’s a very simple circuit but with nuances if you want to make it fast and reliable, so after a little conflicting online research I decided to experiment with some real circuits. I ordered a selection of transistors and diodes that should be amongst the fastest, filtering also by price as I knew I would be buying them by the thousands! Then when they arrived it was time to get out the breadboard and measure some circuit behaviours.

Once I had worked out what I thought were the best combination of component types and values I soldered some up on a prototyping board, to see how they behaved when connected to each other. The same simple logic circuit (a NAND gate) can be repeated thousands of time to make any digital computer but for size and cost efficiency you can made a different circuit, a ‘flip-flop’, for circuits that need to remember the value of a bit. That’s the wider circuit at the bottom of the board.

Now I was confident I had the correct choice for components to use it was time to stock up, to make sure I have supplies. Especially as one of the diode types is end-of-life for the version that comes with proper wires that you poke though PCB holes. As I found when starting 10 years ago, they’re stopping production of a lot of through-hole components, it’s all surface mount only.

If you’re curious as to cost, a reel of 4000 diodes or a box of 2000 transistors costs about a hundred quid each. There’s other components to get too, but I’m less worried about supplies of those going away so will get them as needed.

The computer Usagi Electric is working on has a few hundred circuit boards about the size of a hand, with about a 10 transistor circuits of each. These are all plugged into a row of connectors side-by-side and those connectors are joined by wire-wrap, literally wrapping wire around one connector pin then across to the next. Two banks of these are hinged together so they close like a book, this is not something I want to do!

My design is to do it the same way as previous projects, that is use large PCBs with lots of components on and have them plugged into connectors on a backplane. (A long PCB holding rows of sockets where the pins are all connected across to adjacent connectors.)

Most processors of all vintages have some common functional units so I started by designing boards for two of these. First one was for the ‘registers’, these are the storage for the data values the processor is currently using. It’s basically a whole load of my flip flops circuits to store six 8-bit values (what would fit on a PCB) together with circuits to enable values to be read and written.

The other board is for doing things with those values, like adding them together or testing if they are the same, this is an Arithmetic Logic Unit (ALU). I started by designing this on pencil and paper, trying to make it as simple and fast as possible. I knew I was reinventing the wheel and realised that not only could I not improve on the wheel, mine still had some square edges, so I decided to cheat. I used the logic layout from a chip designed in 1970 and famous enough to have it’s own Wikipedia page. My board has the circuits equivalent to two of these 4-bit chips, making an 8-bit ALU. I took me a month to get things to fit and look neat. (When doing things I try and consider visual aesthetics, elegance of design, and speed of performance of finished board.)

Finally, last week I ordered the PCBs from a factory in China and they are arriving today, 8 days later…

4 Likes

When the PCBs arrived I set about soldering up the first two logic gates. Two of the types of diodes I had bought were in an unusual blue rather than the traditional red glass, and the TDK capacitors I had used for experiments were similarly blue, rather than the more usual tan/orange colour. So I had decided to embrace the colour theme and changed resistor types as well, and ordered PCBs with blue solder resist.

Testing these two gates showed they were far slower than my prototype was but I couldn’t find anything I had done wrong. So I did more gates with some components not soldered in, just poking through the holes enough to make contact, then proceed to experiment with different resistor and capacitor values. After two days I concluded that that the problem was simply the load put on the circuits by the PCB tracks.

I’d got this far so thought I’d complete enough gates to do the full circuit for a single bit of the ALU and could check that 1+1 gave the correct answer of 10 (binary not decimal numbers remember :slight_smile: ).

As this project was going to involve a massive amount of repetitive work I wanted to get the ergonomics and workflow right. I made a little former out of an old PCB so I could bend multiple component leads in one go, also getting a nice consistent curve, I like neatness. :slight_smile: Then poked them through PCBs.

I had bought a sheet of carbon fibre felt, sold as heat shielding when welding, and I could put this on top of the components so I could turn the PCB over without them falling out whilst soldering them.

Once I had this first bit done, I set about testing it using the interface I’d made to connect to my PC. This checked all combinations of inputs for all the dozen or so operations the circuit could do (not just addition) and showed that it all worked (hurray) if rather slowly and a little flakily (boo).

There now followed a couple of frustrating weeks where I got good at unsoldering components to swap them and doing more experiments to understand more fully what was going on.

One of the answers to the speed problem was solved in the tradition manner of adding more power, specificity doubling the current in each logic gate.

The other significant change was to undo a design decisions that was done to increase speed. That worked by stealing some current from the input to help drive the output, which in a system with lots of connected parts was sort of like robbing Peter to pay Paul.

Finally I now have one half of an ALU PCB done, a full 4-bits that operates at less than half the speed I’d hoped, but I’m happy enough, it is what it is.

Ultimately, if I complete this project it will be a 24- or 32-bit system but I’ll stop at 8-bits until I have most of the system working and know I’ve not headed in the wrong direction. For now though, I’m going to move on to the other kind of PCB I have, the Register File, which stores numbers that the ALU can use.

5 Likes

Colour coordinated circuitry. Fashion meets technology. :grin:

Loving this thread, btw.

1 Like