anticipating carriage success

I finally rebuilt the entire mechanism using the fixes that worked in the partial test jigs, as described in the September 30th and October 30th posts.


Success! Here's a video that shows it correctly adding 5678 from the digit wheels to 0322 on the carriage, which produces 6000 by executing one direct carry and a two-level chain of anticipated carries. It's running at 500 milliseconds per time unit.


Well, I shouldn't call it a success yet, since it's not reliable. There are marginal clearances and motion stutters that have to be tracked down and fixed before it meets that bar. It will get a passing grade only when I can reliably compute an arbitrarily long sequence of Fibonacci numbers. 

Addition takes 18 time units. Here is the microprogram for it, which currently runs in a microprocessor and controls stepper motors, but eventually would run from the Babbage-style program barrel and control cams and rods to create the same lifting and rotating motions.

{"add", (const char *[]) { // add the number on A1 to F in 18 time units
         // assume "keepers top" and "keepers down" at the start
         "finger A1; mesh FC; mesh MPC A1; keepers up; unlock F delay; unlock A1 delay; unlock FP delay;",
         "giveoff A", "giveoff A", "giveoff A", "giveoff A", "giveoff A", "giveoff A", "giveoff A", "giveoff A", "giveoff A",
         "lock A1; lock FP delay;", // sequential locking
         "lock F; nofinger a; unmesh FC; unmesh MPC; carrywarn up;", // raise carry sector wheels
         "giveoff A; keepers bottom;", // support carry sector wheels
         "carrywarn down; unlock F delay;", // get wires out of the way and prepare to carry
         "carry add;", // do the carries, which may create additional warns
         "keepers top; lock F; setcarry nowarn;", // prepare to lower carry sectors, and reset all warns
         "keepers down; setcarry 9;", // force carry sectors to disengage, and restore wires to "add" pos'n
         "carry sub;", // restore carry sector position
         NULL  } }

Comments