(mem, cod, ins)
| 86 | ins = run(mem, cod, ins) |
| 87 | |
| 88 | def run(mem, cod, ins): |
| 89 | global REG |
| 90 | # INS - 0 - moo |
| 91 | if ins == 0: |
| 92 | cod.dec() |
| 93 | cod.dec() |
| 94 | # INIT |
| 95 | level = 1 |
| 96 | temp = cod.get() |
| 97 | if temp == HLP['moo']: |
| 98 | level += 1 |
| 99 | elif temp == HLP['MOO']: |
| 100 | level -= 1 |
| 101 | while level: |
| 102 | # LOOP |
| 103 | cod.dec() |
| 104 | temp = cod.get() |
| 105 | if temp == HLP['moo']: |
| 106 | level += 1 |
| 107 | elif temp == HLP['MOO']: |
| 108 | level -= 1 |
| 109 | return HLP['MOO'] |
| 110 | # INS - 1 - mOo |
| 111 | elif ins == 1: |
| 112 | mem.dec() |
| 113 | cod.inc() |
| 114 | return cod.get() |
| 115 | # INS - 2 - moO |
| 116 | elif ins == 2: |
| 117 | mem.inc() |
| 118 | cod.inc() |
| 119 | return cod.get() |
| 120 | # INS - 3 - mOO |
| 121 | elif ins == 3: |
| 122 | temp = mem.get() |
| 123 | assert temp != 3 |
| 124 | if 0 <= temp < len(INS): |
| 125 | return run(mem, cod, temp) |
| 126 | else: |
| 127 | raise SystemExit |
| 128 | # INS - 4 - Moo |
| 129 | elif ins == 4: |
| 130 | temp = mem.get() |
| 131 | if temp: |
| 132 | sys.stdout.write(chr(temp & 0x7F)) |
| 133 | else: |
| 134 | char = get_char() |
| 135 | mem.set(ord(char) & 0x7F) |
| 136 | cod.inc() |
| 137 | return cod.get() |
| 138 | # INS - 5 - MOo |
| 139 | elif ins == 5: |
| 140 | mem.set(mem.get() - 1) |
| 141 | cod.inc() |
| 142 | return cod.get() |
| 143 | # INS - 6 - MoO |
| 144 | elif ins == 6: |
| 145 | mem.set(mem.get() + 1) |