Fetch and Increment - Construction and Test

This is a bit of a landmark moment ... at least for the construction of my relay computer. For a long time now my blog posts have been leading up to the point where my computer will execute a program in memory without any further input from the user. Well, it's this post where that finally happens and all that stands in the way is a tweak to the sequencer and an addition to the controller unit. Here I'll just stick to the pictures (and a video of course) but the design of the sequencer/controller changes is covered in this previous post.

Right, let's start with the sequencer. We need to pull off two new pulses (A and B) from the 8-cycle finite state machine and with the changes in place the sequencer now looks like this:

You'll be forgiven for not spotting the changes straight away (doubly so if you've not been following my blog). The sequencer gains two LEDs to show the new pulses (on the lower card) but other than that it's just wire links. The two cards clos…

Incrementer Test

In my last two posts I covered the construction of the upper and lower incrementer cards. The lower card is a 16-bit half adder and the upper card is a 16-bit register. Together they form the incrementer unit as a whole which can add one to whichever value is currently on the address bus and then hold that value ready for pushing back out to the address bus. More often than not the incrementer will be used to push the program counter on one place but in theory it can be used to increment any value put on the address bus.

Here are the two incrementer cards side-by-side:

... and when stacked together they look like this ...

As in my other 'completion' blog posts I've put together a video which gives an overview of the incrementer and shows it in use:

With the incrementer unit now complete we're incredibly close to a computer that can step through a program held in memory. The last step is to update the sequencer and control units to implement the fetch and load cycle. Th…

Incrementer Construction (Part 2 of 2)

In my last post I covered the construction of the lower incrementer card which is effectively a 16-bit half adder. This time I'm going to cover constructing the upper card of the incrementer which is a 16-bit register that can hold on to the incremented value before pushing it back out to the address bus.

The backplane connectors and LEDs were soldered down in my last post but there's plenty more soldering to do. First up I can add the relay sockets, wire wrap posts and card interconnect wrap posts:

This time around I haven't soldered on the stacking header that connects the two cards together just yet as I've found it gets in the way when wire wrapping or can be damaged if I'm not careful. I'll solder this on just before I bring the two cards together to form the incrementer unit as a whole.

Next up I can solder down the ground and power rails on the back of the card:

Nothing too unusual here besides there being quite a lot of relays on this card and conseque…

Incrementer Construction (Part 1 of 2)

We're getting nearer and nearer to a computer that can run though a program in memory rather than just a single instruction ... we've got memory to hold the program and a program counter to point to the current instruction in memory. Now it's time to construct the 16-bit incrementer which will be used to advance the program counter on to point at the next instruction.

As the incrementer is spread over two cards I'll likewise spread the construction over two blog posts focussing this time on the lower card. Before that though I'll get a head start and solder down the LEDs and backplane connectors for both cards:

For the lower card there are 16 red LEDs which show whatever value is currently on the address bus plus one (and if nothing is on the address bus then it'll show a value of one). The upper card likewise has 16 red LEDs flanked by a yellow LED on the left and a green LED on the right. This is the register part of the incrementer so what these LEDs show i…

Memory Test

I've covered the construction of the upper and lower memory cards in my last two posts ... it's now time to bring those two cards together to form the memory unit proper and give it all a test.

Here's the upper card (in close up and at a rakish angle) ...

... and here's the lower memory card (at an equally rakish angle) ...

... and when sandwiched together here's how the memory unit as a whole looks:

As for all the cards constructed before it I can whip out my trusty breadboard to test the memory unit in isolation before hooking it up to the rest of the computer:

Here I've hooked the data bus up to the bar display but it can be switched over to the left hand DIP switches depending on whether I'm reading or setting a value from/to memory. The address bus comes over to the middle and right DIP switches. The eagle eyed of you out there might have noticed that leaves us four bits short of the full address bus but that's OK for testing purposes. Finally the…