~Master FLIPFLOP controller ~V1 KEY INPUT ~V2 MAIN CASE ~V3 final feed cuttoff ~V4 fast feed cut off ~V5 current adjusted feed (feed-preact) ~V6 current preact ~V7 current fast cut off (feed - fast feed) ~V8 SCRATCH ~V9 zero range tolerance ~V10 zero tol. delay ~V11 auto tare enable ~V12 auto print enable ~V13 spare ~V14 MIN ZERO TOL ~V15 discharge delay ~V16 cut off type 0=cascade 1=sequencial ~V17 MAX ZERO TOL ~V18 return password/START status ~V19 delay after cut off ~V20 RETURN START STATUS ~V22 EDIT DECIMAL ~V23 discharge enable ~V50 Preact ready ~V51 Preact size ~V52 Preact adjust ~V53 Preact pointer ~V54-V64 Preact queue ~V65 scrap ~V66 scrap ~V67 accumulator ENABLE ~V68 ACCUMULATOR ~V69 MOTION TOLERANCE ~V70 ready for resume ~V71 WHO'S RUNNING ~V72 STOPPED SENT ~OUT 5 FAST FEED ~OUT 6 FINAL FEED ~OUT 7 DISCHARGE ~OUT 8 spare ~OUT 10 SPARE ~OUT 20 spare ~OUT 40 SPARE ~OUT 80 spare ~ ~IN 1 START ~IN 2 STOP ~IN 3 spare ~ ~ D10. V70=0 V72=0 m=V69 iV22 > 3 { V22=0 } V16=0 V2=0 ~init case V1=0 ~init key input f1=0 ~background cut offs disabled f2=0 iV53>63 { V53=54 ~init preact pointer if out of range } L5 ~lock enter key D11. f1=0 f2=0 U1 U2 U4 iV70=0 { P1@"READY"@ } e { P1@"START=RESUME F4=ABORT"@ } V1=K ~read keypad to variable 1 CV1 ~go to case assigned by variable 1 [ c256. b c0. x2. b c4. V70=0 ~SEND START AND STOP (RESUME) OXX11XXXX d5 OXX00XXXX b c6. x19. iV18=1 { U7 ~unlock keypad } b c9. x19. iV18=1 { x9. } b ] iI2=1 ~stop off { V72=0 O00000000 ~all off remove stop from slave iI1=0 ~if start input 0 & stop=1 start { L7 iV70=0 { ~start x13. iV18=1 { V2=0 iV71=1 ~IF STARTING ONE SKIP CASE 0 { V2=1 } G15. ~start the sequence } } e { ~resume x21. G15. } } } e { ~insure all off- send stop to slave O00010000 iV72=0 ~insure slave sees stop { d20 V72=1 } } G11. D15. iI2=0 { V70=1 ~SET RESUME ~send stop to slave O00010000 d20 ~make sure slave sees stop ~remove slave stop OXXX0XXXX G11. ~CHECK FOR STOP } CV2 [ c0. iV71=2 ~IS SCALE B RUNNING { iI4=1 ~IS SCALE B (DONE) { iW1V14 { x1. ~START SCALE A V71=1 ~MARK A RUNNING P1@"STARTING A"@ } e { iI3=1 { ~can B start OXX1XXXXX P1@"STARTING B"@ V71=2 d20 OXX0XXXXX ~REMOVE START } e { P1@"PLACE BOX ON A"@ } } } e { iI3=1 { ~can B start OXX1XXXXX P1@"STARTING B"@ V71=2 d20 OXX0XXXXX ~REMOVE START } e { P1@"CLEAR SCALES"@ } } } e { P1@"WAITING FOR B"@ } } e { ~Scale a is too full to start iI3=1 { ~can B start OXX1XXXXX P1@"STARTING B"@ V71=2 d20 OXX0XXXXX ~REMOVE START } e { iW1V14 { x1. ~START SCALE A V71=1 ~MARK A RUNNING P1@"STARTING A"@ } e { P1@"PLACE BOX ON A"@ } } e { P1@"CLEAR SCALES"@ } } } b c1. (V2++) b c2. (V2++) b c3. iV11=1 { iW1V14 ~is there a box { V18=1 V71=1 ~MARK A RUNNING P1@"STARTING A"@ } e { P1@"PLACE BOX ON A"@ iI3=1 ~if slave is ready start slave 1 is slave ready { OXX1XXXXX V71=2 ~MARK B RUNNING P1@"STARTING B"@ V18=1 d30 OXX0XXXXX } } } e { iI3=1 ~if slave is ready start slave 1 is slave ready { OXX1XXXXX V71=2 ~MARK B RUNNING P1@"STARTING B"@ V18=1 d30 OXX0XXXXX } e { ~no one can start P1@"CLEAR SCALES"@ } } E ~ ~ E ~end program