I've been buying batches of relays off of ebay anytime they come up. It's generally about $25 per 100. I have accumulated 200 SPDT relays, 100 DPDT relays, and 100 4PDT relays which are hopefull enough to make a calculator out of. This calculator will be equally complex as a full relay computer, but should be more useful and interesting to demonstrate.
The calculator does math exactly like a person. It adds single digits at a time, and does long multiplication and division by multiplying one digit at a time or counting one digit at a time. The calculator is fundamentally BCD. It will also be capable of floating point multiplication and division and "shifting" point addition and subtraction. It operates by shifting digits from two of three 8 digit shift registers into one of three math units and shifting the result back in to any register. A sequencer made of relays will control data flow. I am almost guaranteed to run out of relays.
So it turns out I absolutely hate wiring diode arrays, and I would like to display all three registers, not just the input register and accumulator. (I was able to rework things to get it back down to three registers).
The seven segment LED display would require over 1000 diodes and I just don't care to do that.
So instead I've found a good deal on 24x IN-12B Nixie tubes and sockets and will use those instead. That eliminates the last few diodes and any semiconductors in the entire project.
In other news, I calculated that the core of the calculator, which can multiply two single digit numbers and then add another single digit number to the product, and then convert the binary result to BCD, will take 87 relays. It has a 34 relay latency that data has to propagate through. I measured the switching time of the relays I'm using in this part to be about 15ms, so it will take approximately half of a second for a signle digit calculation to take place.
This means that an addition or subtraction will take 4 seconds, a multiplication will take 4 seconds per multiplier digit (32 seconds for 8 digit x 8 digit) and a division, (which uses magnitude comparators, shifters, and counting subtraction) will take a maximum of 320 seconds (99999999/1) but will typically be much less.
I just wired and tested one diode array used for decoding the 1 of 10 signal to the what the seven segment displays need. It took a long time.
The parallel multiplier was going to use diode arrays as well, but I am not keen on using 40 relays and 768 diodes. I looked into the double dabble algorithm and it actually seems pretty simple to do with eight +3 adding circuits with no output carry. Best guess is maybe 60-80 relays for a parallel multiplier and double dabbler, which will also cut down the amount of relays required in the adder.
I'm hoping to make at least 4 single digit additions or multiplications per second, which would allow for a complete 8 digit by 8 digit addition to be made in 2 seconds and a multiplication to be made in 32 seconds.
Also I think I may need four registers, not three.
I currently have all of the DPDT relays laid out on a board that handles the decoder logic for the 7 segment displays. I'm cheating here and converting BCD to 1 of 10, and then using diodes to drive the segments. I just don't have enough relays to do it properly. The multiplier section and divider section will work the same way. (Binary parallel multipliers are actually easier to make than binary parallel adders, but making it BCD makes it impractical. I could make a binary to BCD converter but it would require either 8 parallel BCD adders or would take way too long to do any math).
The SPDT relays are laid out on a board in an arrangement of three 8x4 registers. Two of the registers can shift right with the help of some 4PDT relays not yet on the board, and the remaining register can shift left and right, to accommodate user input arriving with the most significant digit first. I have 2 digits worth of registers wired as a test, as well as one digit of the display.
A long time ago I built a one digit BCD adder using 19 relays. I expect to add three digits together with 36. The multiplier and divider will share something like 38 relays and more diodes than I want to think about right now. Hopefully I don't run out of relays, but I know I will. I always do.
I have schematics but I make the schematic after I make that part of the circuit for some weird reason so they will be delayed. Here is a glimpse of it though.
Using some sort of light table is really helpful to keep track of what all of the pins connect to. This is the backlight to an old monitor.