2016-10: This projet is now shelved. But you must have a look at #AMBAP: A Modest Bitslice Architecture Proposal, #YGREC16 - YG's 16bits Relay Electric Computer and #YGREC-РЭС15-bis because they are an extension of this project. How fun is that ?
After I started #Discrete YASEP then moved to lower tech in #Yet Another (Discrete) Clock, I continued my spiraling descent into history with #Clockwork germanium and with this project, I hope I've touched the bottom... (I've skipped the thermionic vacuum tubes for excellent reasons).
New ! More relay madness at #Relay-based projects
Unlike #RISC Relay CPU, I just want to show kids how computations can be performed mechanically. So let's make the craziest, most horrible contraption possible :-D "You see, kids, be happy we have transistors today. Can you imagine that electromechanical thing computing a Youtube video clip ???"
Why 16 bits ? 4 bits looks underwhelming (yet cool) It could be 8, could be 10 or 12 but 16 bits start to be meaningful, 0 to 65535, and that's the minimum used by real computers. And the design is not really dependent on the number of bits so hopefully, I would make a 20 bits version ("See, it can count to more than one million but it would kill the contacts !"). Besides, I have TIL311s (no #DYPLED yet but it will come) and hex rotary buttons so it makes a nice introduction to binary/hex codes.
The machine is made of 3 types of boards that are chained together:
- A boards: Input+Arithmetic+shift+register units that store and compute one nibble (4 bits wide, (see Bislice for 2 bits)
- B boards: A smaller version with just 4-bits shift+registers, used for MUL/DIV
- C board: the control board that generates all the necessary signals (see Sequencer design for the pulse generator)
Each board can be built separately, the only constraint is that there must be as many A and B boards. The design is scalable, it can work with 4, 8, 12, 16 bits data or more (the sequencer must be adapted for each case).
How to perform additions:
- Turn power on and press the CLEAR button (this will clear the accumulator, even though it should be clear on power-on)
- Turn the hexadecimal input knobs to select one number.
- Select the "ADD" mode and press the "MEM" button : the input value is transferred in the accumulator.
- Select a different input value, then press MEM again : the sum gets registered in the accumulator and displayed in hexadecimal.
- Repeat step 4) for all the numbers you want to add together
- For subtraction, switch to the SUB mode and continue as with 4)
I use a lot of electronic tricks found in http://relaysbc.sourceforge.net
https://web.cecs.pdx.edu/~harry/Relay/RelayPaper.htm is an excellent reference as well !
More references at Rationale and general idea
Logs:
1. Power supply
2. Freewheel diodes
3. SPDT×72
4. Glühbirnchen
5. Rationale and general idea
6. Power supplies (2)
7. Die Glühbirnchen sind da !
8. How can I make a low-frequency oscillator with a relay (or more ?)
9. The relays are here too !
10. A sick trick for the multiplies
11. The hexadecimal rotary switches
12. A slice of ALU
13. Signed or unsigned ?
14. Multiplication and Division
15. Save the relays !
16. Faster ripple
17. One bitslice
18. New slice
19. Bislice
20. 2 relays, 1 lamp
21. Bad vibes
22. Simple oscillator
23. Lamp-relay oscillator ?
24. Relay ring oscillator
25. Sequencer design
26. Start/Stop and other bugs
27. Where to find the parts ?
28. Change of strategy
You might find this design from the late 1940's/early 1950's gives you some ideas: it's basically a PLA - it implements any logic function using relays: http://history.dcs.ed.ac.uk/archive/docs/mechanized_reasoning_screenres.pdf