PROGRAM_START_TO ENTRY@O_BRANCH FLAG [0/2] LOAD_FLAG; FLAG [1/2] C2FLAG; FLAG [1/5] C5FLAG; FLAG [1/2] EXIT_FLAG; FLAG [1/2] ROT_REG0_FLAG; FLAG [1/2] OPR_CON0_FLAG; ROUTINE O_BRANCH{ # checking next trit ROT_REG0_PRE: REV JMP NEXT ROT_REG0_FLAG ROT_REG0: ROT REG0 REV_ROT0: REV ROT # initializing CON0 ROT CON1 CON1: 1111111111t REV ROT OPR_CON0: NEXT OPR_CON0_FLAG OPR CON0 REV_OPR0: REV OPR ENTRY: REG0_LOAD: # loading REG0 into A by op(CON2,op(CON2,REG0) ROT CON2 CON2: 2222222222t REV ROT OPR REG0 REG0: 0000002210t IF ROT_REG0_FLAG BRANCH REV_ROT0 NEXT ROT_REG0_FLAG REV OPR IF LOAD_FLAG BRANCH REG0_LOAD # executing op(REG0,CON0) OPR CON0 CON0: 0000000000t IF OPR_CON0_FLAG BRANCH REV_OPR0 NEXT OPR_CON0_FLAG REV OPR # doing op(op(REG0,CON0),P21) OPR O_BRANCH O_BRANCH: 2222222221t SKIP LABEL1 NEXT EXIT_FLAG # if least trit of REG0 is non zero SKIP O_CHECK # if least trit of REG0 is zero LABEL1: REV OPR JMP O_BRANCH O_CHECK: REV JMP IF EXIT_FLAG BRANCH EXIT NEXT EXIT_FLAG # 10 times repetition by flags with cycle 5 and cycle 2 IF C5FLAG BRANCH LABEL2 SKIP NEXT_CHECK LABEL2: IF C2FLAG BRANCH REG0_is_0 NEXT_CHECK: JMP ROT_REG0_PRE # go for next trit REG0_is_0: ROT K K: 0000022100t REV ROT OUTPUT DUP REV OUTPUT END EXIT: REV JMP ROT a a: 0000101210t REV ROT OUTPUT DUP REV OUTPUT END }