Is there a matrix way to do an enigma style plugboard?

Go To Last Post
31 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi Everyone,

 

Someday I want to make a micro enigma cipher machine with an AVR.  It would have a display, small lampboard, small keyboard, and even a small plugboard you could connect up with some of those flexible breadboard wires.  For anyone who doesn't know what a plugboard is, it is basically 26 sockets (one for each letter of the alphabet) that you can swap with another of the 26 sockets.  So you can plug A into G, O into Q with a jumper wire.  Obviously if I used 26 i/o pins I could just set one to output and then read the other 25 to see if that one pin is connected to any others.  That would take 26 i/o pins though.  Is there another method or a matrix method that could be done to accomplish the same task with less i/o pins?

 

Thanks,

 

Alan

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'd think that any matrix keyboard arrangement would work.  Hmmm--many would be "made" at one time, so any multiplexing method would need diodes.

 

As the fun part of the project is the actual plugs/plugboards, and 50+ plugs and 25+ jumper wires will cost more than a couple bucks, why fuss with multiplexing?  100-pin AVR8s can be had inexpensively ('1690?  '3290?)

 

I'd have to think about the transformation and excitation sequence.

 

Back when I was your age, I often used surplus [tele]phone plug blocks to wire async terminals from offices to terminal servers.  I usually used 1/4" "stereo" (one plug wire per 3-wire connection), but also used "mono" (two plug wires per 4-wire connection).  Can that stuff still be had?  It gave a real retro rat's-nest look.  ;)

 

Perhaps nowadays one could pick up some kind of sound tech's board and re-wire?

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Surely, you need 52 IOs; or, rather 26 Outs and 26 Ins - and each Out must connect to exactly one In ?

 

Shift Registers might be a way to reduce MCU pin usage ...

 

Or, perhaps, Charlieplexing?

 

Although, nowadays, 52 IOs is quite easy to find on a single chip ...

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

theusch wrote:
many would be "made" at one time

Surely, they would all have to be "made" at once - you always need each and every input character to be encoded to exactly one output character!

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

You guys are right a 100 pin AVR is not that pricy.  I wondered it there was a technique to reduce it.

 

In a real enigma there are 52 sockets because they are using them as the electrical path for the signals.  In this example I don't need both directions for each connection, just a single connection to see what is connected to what.  So only 26 sockets total.  Each socket can be left open/unconnected or it can be connected to one other socket.  So if you connect A and Z with a single wire (13 wires maximum because each wire handles a pair of sockets), A is Z and Z is A.  Again I am not running the cipher through this connection, just using the connection to see what letters are swapped or not.  So without any matrix technique I could simply connect an i/o pin to each socket.  To see if A is connected to anything I could set all pins to input pullup enabled, then A to output low, then read the other 25 pins to see which 1 pin might be connected to A or whether A is open/unconnected.  I could then repeat this for all unknown letters, assuming A is connected to Z there is no need to test Z.  What I am curious of is if there is a better way to do it?  A way that involves less pins (but probably not less components!).  Perhaps there isn't.

Last Edited: Tue. Jun 2, 2015 - 03:27 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Oh, yeah-- I'd get some double-diode arrays to/from the rails at each I/O pin.  Along with at least a series resistor (and maybe also a tiny cap to Gnd between resistor and diodes/pin).

 

I guess I'd do what you mentioned for scanning -- excite each "source" pin one at a time, and read the "destination" ports.  Check that exactly one bit is made.  Repeat and build the source/destination masks.

 

26?  No numbers?  No spaces?  No period?  Gonna spell out all the attack coordinates?

 

[How many channels did Enigma have?  Wikipedia here I come...

Each rotor was a disc approximately 10 cm (3.9 in) in diameter made from hard rubber or bakelite with 26 ... typically the 26 letters A–Z ...

Hmmm--

Enigma's security came from using several rotors in series (usually three or four) and the regular stepping movement of the rotors, thus implementing a polyalphabetic substitution cipher.

Simple substitution ciphers are easy to break, aren't they?]

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Something like this?

 

 

 

http://www.cryptomuseum.com/kits/

#1 This forum helps those that help themselves

#2 All grounds are not created equal

#3 How have you proved that your chip is running at xxMHz?

#4 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand." - Heater's ex-boss

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

alank2 wrote:
(13 wires maximum because each wire handles a pair of sockets), A is Z and Z is A

Right - so not actually like Enigma, then.

 

 Inside the body of the rotor, 26 wires connected each pin on one side to a contact on the other

Hence 26 'In' and 26 'Out'.

 

theusch wrote:
26?  No numbers?  No spaces?  No period?  Gonna spell out all the attack coordinates?

Indeed!

 

Quote:
Simple substitution ciphers are easy to break, aren't they?

And, if the substitutions are constrained in pairs, it's even easier!

 

But Enigma wasn't just a simple substitution;  the clever bit was that the wheels moved during the message - so the substitution changed during the message.

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
Last Edited: Tue. Jun 2, 2015 - 04:37 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:

Something like this?

http://www.cryptomuseum.com/kits/

 

Yep, but smaller.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:

Right - so not actually like Enigma, then.

 

Well, like enigma in that it will perform the same function, but unlike enigma in that it isn't part of the cipher circuit.  Similar to how there are no wheels and their task is done in software.

Last Edited: Tue. Jun 2, 2015 - 04:58 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yep, but smaller.

 Hmmm--we used to have RS232 breakout boxes, with DB25 connectors.  The good ones had jumper capability for all 25 wires.  That would get you most of the way there?

 

http://www.amazon.com/RS232-DB25...

https://www.google.com/search?q=...

http://www.dgtech.com/product/hd...

http://www.ebay.com/bhp/rs232-br...

 

37?  (telecom surplus...) http://www.ebay.com/itm/TTC-TELE...

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm planning on implementing the entire enigma machine cipher in software, so the display, the keyboard, the lampboard (led), and the plugboard will all be directly connected to the AVR and not each other.  I've got a few small graphic VFD's I picked up from Noritake when they had their 50% off sample sale last year so I'm thinking about using a small 144x16 graphic one to show the wheel positions and for commands/configuration.  I thought about using a 14 segment type display, but I can do a lot more with the graphic one.  The lampboard (led) is really there for decoration as I could use the display to indicate the letter, but I just like the idea of an led bouncing around on it like it did on the real thing using a bulb.

 

At its basic I want it to emulate as many of the various enigma machine variants.  On top of that for fun I'd like to add some features such as a 4 or 8 character history along with the ciphertext on the display, backspace capability, etc.  Leaving enigma behind I might also make it support a configuration that allows for more wheels, more characters such as space, period, linefeed, custom wheels, etc.  The problem with that is that it begins to leave enigma behind and I'm not sure how far I'd want to go from it.

 

My goal would be to make it be perhaps 12x15 cm or something similar, no case, just a pcb with some rubber legs.

 

There are people who have made a touch screen type enigma that is very modern, I don't want to go that far.  I'd like to have a real keyboard with smd buttons, a real light board with leds, a real plugboard you can plug and unplug wires into, etc.  The VFD is a bit of a departure though, but it gives me a lot more UI options.

Last Edited: Tue. Jun 2, 2015 - 06:06 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Edit before posting: I don't think standard matrix decoding would work in this case because the matrix changes. I think you are going to need 26 inputs and 26 outputs. I have included the matrix links because I looked them up.

 

Here is an example of how to detect multiple key presses on a matrix keyboard. It would add one diode for each jumper. Sorry, it's a app note for another 3 letter MCU.

 

https://electrosome.com/reading-...

 

Here is a another write-up:  http://www.dribin.org/dave/keybo...

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
I think you are going to need 26 inputs and 26 outputs.
I don't think so.

 

Remember that you can't plug two patch cords into one patch receptacle.

 

Each pin is connected to two things.  The first is a receptacle.  The second is the cathode of a diode.  The anode of that diode is connected to a patch cable.  The end of that patch cable can be inserted into the receptacle of any unpopulated receptacle.

 

As the OP already knows, reading the state of the patch is done by scanning in 26 steps.  For each step, one of the 26 pins is made an output low while the remaining 25 pins are made inputs with internal pull-up.  If the pin's diode + patch cable are inserted into another pin's receptacle, that other pin will read low.  All other pins will read high.  If all pins read high, the output low pin is either not connected to anything, or is connected to itself.  In fact, the two states can be considered identical.

 

Invalid states can be identified after a complete scan.  If a pin has been scanned and determined to be connected either to itself or not connected, but that pin reads low while scanning another pin, this would be an illegal state and that fact can be indicated to the operator.

 

The use of the diodes will preclude any multiple circuit paths which would make scanning difficult or impossible.

 

Take the simple case of a 3-letter alphabet:

 

A--|<|--A

B--|<|--C

C--|<|--B

 

During the first scan step A is output low.  B & C read as high, implying A is patched to itself or unpatched (which are semantically the same).

During the 2nd scan step B is output low.  A reads high, but C reads low.

During the 3rd scan step C is output low.  A reads high, but B reads low.

 

Here's an 'illegal' state:

 

A--|<|-- (unconnected)

B--|<|--A

C--|<|--C

 

During the first scan step A is output low.  B & C read as high (as before), implying A is patched to itself or unpatched (which are semantically the same).

During the 2nd scan step B is output low.  A reads low, but C reads high.  This contradicts the results of the first scan step.  Illegal state:

 

If you examine all of the permutations, I think you'll find that there is a unique result to identify all legal states, and at least one result to identify all remaining (i.e. illegal) states.

 

I don't believe there is a way of accomplishing this with less than N pins where N is the number of symbols.  This is an N-factorial problem, not a 2^N problem.

 

EDIT: hang on, I might have spoken too soon, without sitting down with paper and pencil

 

+------- A ---|<|---+
|                   |
|   +---------------+
|   |
|   +--- B ---|<|---+
|                   |
|   +---------------+
|   |
|   +--- C ---|<|---+
|                   |
+-------------------+

 

The above patch will not be readable.  When A is output low, B will be pulled down by A's diode, but then C will be pulled down through A's and B's diodes in series.

 

It would be impossible to distinguish the above patch from this one:

 

+------- A ---|<|---+
|                   |
|   +---------------+
|   |
|   +--- C ---|<|---+
|                   |
|   +---------------+
|   |
|   +--- B ---|<|---+
|                   |
+-------------------+

 

There may be hope.  With one diode, the voltage at an input pin will be pulled to GND+Vf.  For normal silicon diodes, Vf will be about 0.7V.  This will read as low.  Two diode drops will result in about 1.4V.  This will still read as low, even if Vcc=3.3V.  You could run the mcu at 1.8V, but this might complicate the design of the rest of the circuit.

 

However, if each diode is placed in series with a resistor, the voltage at an input pin will be higher.  If the series resistor is carefully selected so that one 'hop' through one resistor/diode pair is below the input-low threshold, but two hops through two resistor/diode pairs is above the input-high threshold, this could work, even with Vcc=5V.  The selection of the resistor would depend upon the value of the internal pull-up resistor.  You would want to create a voltage divider such that the voltage at PIN here:

 

    Vcc
     |
     |
     /
     \
     / internal
     \ pull-up
     /
     |
     |
     +-------------PIN
     |
     |
   -----
   \   /
    \ /
   -----
     |
     |
     /
     \
     / R
     \
     /
     |
     |
    GND

 

... is less than the input-low threshold, but the voltage at PIN here:

 

    Vcc
     |
     |
     /
     \
     / internal
     \ pullup
     /
     |
     |
     +-------------PIN
     |
     |
   -----
   \   /
    \ /
   -----
     |
     |
     /
     \
     / R
     \
     /
     |
     |
   -----
   \   /
    \ /
   -----
     |
     |
     /
     \
     / R
     \
     /
     |
     |
    GND

 

... is greater than the input-high threshold.

 

Since the internal pullup won't be the same from device to device, or even from pin to pin, you might be best to use an external pullup instead.

 

26 pins

26 diodes

26 series resistors

26 external pullups

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"Wisdom is always wont to arrive late, and to be a little approximate on first possession."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

Last Edited: Thu. Jun 4, 2015 - 04:23 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

joeymorin wrote:

 

Quote:

I think you are going to need 26 inputs and 26 outputs.

I don't think so.

I think you are correct. I looked up how the machine worked and you couldn't arbitrarily map one letter to any other. If "A" got changed to a "B" then "B" got changed to "A". They called this self-reciprocity. That means you only need 26 I/Os assuming they could be either inputs or outputs. You don't even need diodes in the circuit. Set one pin to an output, all others inputs with the internal pullup enabled. Twiddle the output pin to low, read the inputs and if one is low there is a pair of swapped letters.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Even without self-reciprocity, you'd only need 26 pins.

 

With self-reciprocity, you'd also still need diodes, if only to detect illegal states (including those which violate self-reciprocity).

 

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"Wisdom is always wont to arrive late, and to be a little approximate on first possession."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

joeymorin wrote:

With self-reciprocity, you'd also still need diodes, if only to detect illegal states (including those which violate self-reciprocity).

 

If you only have 26 pins, when "A" is plugged into "B" and therefore "B" is plugged into "A". I don't see how you could get illegal states and I don't think you can violate self-reciprocity in a 26 pin setup.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

joeymorin wrote:

A--|<|-- (unconnected)

B--|<|--A

C--|<|--C

 

A cannot be connected to B without B at the same time being connected to A.  A and B each have a single socket.  A jumper wire either connects them to each other or doesn't, right?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
A cannot be connected to B without B at the same time being connected to A.  A and B each have a single socket.  A jumper wire either connects them to each other or doesn't, right?
Look at my previous posts more carefully.

 

The jumper wire connects the diode from one pin to another pin.  The diode means that the connection is directional.  Plugging B's diode/wire into A is not the same as plugging A's diode/wire into B.

 

A to B, B to C, C to A.

A to C, C to B, B to A.

 

While both violate self-reciprocity, they are unique.

 

Even if you're trying to duplicate the Enigma's self-reciprocity, you need the diodes (and resistors as I've described) in order to identify states which violate self-reciprocity.

 

The alternative is to use 52 pins.

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"Wisdom is always wont to arrive late, and to be a little approximate on first possession."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'm not following.  For the plugboard, why use diodes at all?  If you just have 26 i/o pins, each one can or can't be connected to another one, you can scan them 1 at a time and see if they are connected to any of the other 25 or not connected at all right?  My original question was, could this type of thing be done in less than 26 pins similarly to how inputs (which are not paired but on or off independently) can be matrix'ed.  I'm not so sure any optimization can be done like a matrix though.  If you have to have 26 pins anyway, why add any additional components and just test each one to see if it is connected to one of the other 25?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well, apparently there is an add-on to the plug board called the UHR which does connect the plugboard in a non reciprocal way making the plugboard more like a "non-moving wheel" than the simple letter swapping device is normally is.  To implement that I believe it would take 26*2 pins.

 

I'm just going to drop the plug board from the project.  No messy wires under the keyboard to get around.  No tiny sockets to bend or wear.  No mess.  I'm going to implement it in software instead and allow the user to specify the pairs to be swapped such as AK EU GX, etc.  I can also support the UHR device in software if desired.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

If you really want to multiplex it I think it would be possible doing it similar to an LED array, except instead of LEDs you would use capacitors.  Getting the values would be kind of convoluted though...it'd go something like this:

 

Set row and column pins to ground to discharge all capacitors

Set all pins to input except the row and column pin for the letter being checked

Set row pin for current letter high

Allow ample time for the capacitor to charge

Set all row pins to input

Turn off pullup on row pin for current letter (Will be on since it was outputting high)

Set all column pins to output, set output low.

Read row pins to determine row of letter connection (will be 1-2 rows high, 1 if no connection or original and remapped letters in same row, 2 otherwise)

Set all column pins to input

Set all row pins to output, set output high.

Read column pins to determine column of letter connection (1-2 rows will be low, the rest high)

Repeat for each letter.

 

I *think* this would work with 11 pins for a simple letter pairing, and 15 pins if a letter is allowed to have a one way association if implemented as a 7x8 grid with two duplicate letter grids side by side, one for in and one for out, and the "out" grid  needing no capacitors.  But it sure does add a lot of complication.  If the pin count is such a concern, it might be easier to just use an atmega with more pins or use a separate slave atmega dedicated to only reading the pairings and reporting them back to the master.

Last Edited: Thu. Jun 4, 2015 - 10:27 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
I'm not following.  For the plugboard, why use diodes at all?
As I have described in post #14, this permits any arrangement of letters, not just reciprocal arrangements.

 

Even with reciprocity as a requirement, diodes are required for the plug-lead-and-socket layout I described.  Specifically, each pin/letter has both a socket and an attached plug lead.

 

Were you to use sockets only, and make connections with loose two-ended patch cords, then indeed self-reciprocity would be naturally enforced and diodes would not be required.

 

Quote:
Well, apparently there is an add-on to the plug board called the UHR which does connect the plugboard in a non reciprocal way making the plugboard more like a "non-moving wheel" than the simple letter swapping device is normally is.  To implement that I believe it would take 26*2 pins.
As I have explained, you would only need 26 pins, provided you also employed diodes and resistors.  Certainly it would be 'easier' with 52 pins, and as mentioned there are plenty of devices with sufficient I/O.

 

Quote:
I'm just going to drop the plug board from the project.  No messy wires under the keyboard to get around.  No tiny sockets to bend or wear.  No mess.  I'm going to implement it in software instead and allow the user to specify the pairs to be swapped such as AK EU GX, etc.  I can also support the UHR device in software if desired.
Sensible :)

 

Not as fun building the hardware, but perhaps more fun writing the software :)

 

 

"Experience is what enables you to recognise a mistake the second time you make it."

"Good judgement comes from experience.  Experience comes from bad judgement."

"Wisdom is always wont to arrive late, and to be a little approximate on first possession."

"When you hear hoofbeats, think horses, not unicorns."

"Fast.  Cheap.  Good.  Pick two."

"We see a lot of arses on handlebars around here." - [J Ekdahl]

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Wow, Alan, an interesting project!

 

I saw the U-505 Enigmas at the Chicago Science Center, and I think I saw another one in Wash. DC.

I was fascinated, the kids, not so much.

 

I didn't realize how many different models of Enigmas there are.

Many of them are described in Wiki Enigma, which has a rather lengthy, but very interesting, article on the subject.

 

Of equal interest was the list of Enigma software simulators, running on Java, JavaScript, Android, Arduino, Windows, Mac, etc.

It might be worth looking at some of the software projects already out there, as you further decide how to approach your project.

 

JC

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi JC,

 

I am too fascinated by Enigma - I could read about it for hours...

 

Here is a family tree of them (and this site has a lot of good pictures and other information too):

http://www.cryptomuseum.com/cryp...

 

My favorite java simulator is this one:

 

http://people.physik.hu-berlin.d...

 

There are so many interesting things about them, the changes they made to improve them, the mechanics of them, etc.

 

My heart wants to work on this, but I've got another project I need to finish first!  That probably happens to everyone!!

 

Thanks,

 

Alan

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Yes, I know this is an old Thread...

 

But I just watched the movie: The Imitation Game about Turing and the Enigma code breakers at Bletchley Park.

 

I thought it was a great movie.

 

Cliff will like it also, as Keira Knightley is one of the key actors in the movie.

 

JC

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

DocJC wrote:
Cliff will like it also
Indeed. :-)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

I can't recall if I ever posted a picture of the final result...

Attachment(s): 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Nice!

Click Link: Get Free Stock: Retire early! PM for strategy

share.robinhood.com/jamesc3274
stack gold/silver https://www.onegold.com/join/713...

 

 

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Wrap it up in a paradox and you’re done! Nice work. Love the multi-lingual power switch.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Kartman wrote:
Wrap it up in a paradox and you’re done! Nice work. Love the multi-lingual power switch.

 

Thanks - I had a good friend from Germany help me with the 4 letter abbreviations for the German language mode.  It gets a bit tough when you only have four characters!