Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Yes, I wrote all of this manually. Yes, I know I'm insane.
- # labels were manually converted to addresses, hence the address number in every single comment.
- # [0 JEZ|instruction] 0 [2 intcode program start index=10] [3 brainfuck code start index] [4 instruction pointer] [5 data tape start index] [6 data pointer] [7 bracket count] [8 temp] [9 end]
- 1106,0,10,300,300,300,300,0,0,99,
- # INITIALIZATION:
- 9,6, # 10 11 set offset to data pointer
- 203,0, # 12 13 load string
- 101,1,5,5, # 14-17 increment data tape start index
- 101,1,6,6, # 18-21 increment data pointer
- 109,1, # 22 23 increment offset
- 1205,-1,12, # 24-26 jnz 12 - loop until we input null char
- 102,-1,6,8, # 27-30 negate data pointer
- 9,8, # 31 32 reset offset
- 9,4, # 33 34 set offset to instr pointer
- 101,1,5,5, # 35-38 increment data tape start index
- 101,1,6,6, # 39-42 increment data pointer
- # LOOP:
- 1206,0,9, # 43-45 exit if we've reached the end of the program
- 2101,0,0,0, # 46-49 store current instr in 0
- 102,-1,4,8, # 50-53 negate instr pointer
- 9,8, # 54-55 reset offset
- 9,6, # 56-57 set offset to data pointer
- 101,-62,0,8, # 58 cur instr == ">"
- 1005,8,74, # 62 JNZ NEXT
- 101,1,6,6, # 65 increment data pointer
- 109,1, # 69 increment offset
- 1106,0,END, # 71 JMP END
- 101,-60,0,8, # 74 cur instr == "<"
- 1005,8,90, # 78 JNZ NEXT
- 101,-1,6,6, # 81 decrement data pointer
- 109,-1, # 85 decrement offset
- 1106,0,END, # 87 JMP END
- 101,-43,0,8, # 90 cur instr == "+"
- 1005,8,104, # 94 JNZ NEXT
- 22101,1,0,0, # 97 increment value at data pointer
- 1106,0,END, # 101 JMP END
- 101,-45,0,8, # 104 cur instr == "-"
- 1005,8,118, # 108 JNZ NEXT
- 22101,-1,0,0, # 111 decrement value at data pointer
- 1106,0,END, # 115 JMP END
- 101,-46,0,8, # 118 cur instr == "."
- 1005,8,130, # 122 JNZ NEXT
- 204,0, # 125 output value at data pointer
- 1106,0,END, # 127 JMP END
- 101,-44,0,8, # 130 cur instr == ","
- 1005,8,142, # 134 JNZ NEXT
- 203,0, # 137 input value at data pointer
- 1106,0,END, # 139 JMP END
- 101,-44,0,8, # 142 cur instr == ","
- 1005,8,154, # 146 JNZ NEXT
- 203,0, # 149 input value at data pointer
- 1106,0,END, # 151 JMP END
- 101,-91,0,8, # 154 cur instr == "["
- 1005,8,167, # 158 JNZ NEXT
- 1206,0,LOOP_EXIT, # 161 JEZ LOOP_EXIT
- 1106,0,END, # 164 JMP END
- 101,-93,0,8, # 167 cur instr == "]"
- 1005,8,END, # 171 JNZ END
- 1205,0,LOOP_ENTER, # 174 JNZ LOOP_ENTER
- # END:
- 101,1,4,4, # 177 increment instruction pointer
- 102,-1,6,8, # 181 negate data pointer
- 9,8, # 185 reset offset
- 9,4, # 187 set offset to instr pointer
- 1106,0,LOOP, # 189 JMP LOOP
- # LOOP_EXIT
- 102,-1,6,8, # 192 negate data pointer
- 9,8, # 196 reset offset
- 9,4, # 198 set offset to instr pointer
- # LOOP_EXIT_TRACE
- 2101,0,0,0, # 200 store current instr in 0
- 101,-91,0,8, # 204 cur instr == "["
- 1005,8,218, # 208 JNZ NEXT
- 101,1,7,7, # 211 increment bracket count
- 1106,0,LOOP_EXIT_END, # 215 JMP LOOP_EXIT_END
- 101,-93,0,8, # 218 cur instr == "]"
- 1005,8,LOOP_EXIT_END, # 222 JNZ LOOP_EXIT_END
- 101,-1,7,7, # 225 decrement bracket count
- # LOOP_EXIT_END
- 101,1,4,4, # 229 increment instruction pointer
- 109,1, # 233 increment offset
- 1006,7,LOOP, # 235 JEZ loop count LOOP
- 1106,0,LOOP_EXIT_TRACE, # 238
- # LOOP_ENTER
- 102,-1,6,8, # 241 negate data pointer
- 9,8, # 245 reset offset
- 9,4, # 247 set offset to instr pointer
- # LOOP_ENTER_TRACE
- 2101,0,0,0, # 249 store current instr in 0
- 101,-91,0,8, # 253 cur instr == "["
- 1005,8,267, # 257 JNZ NEXT
- 101,1,7,7, # 260 increment bracket count
- 1106,0,LOOP_ENTER_END, # 264 JMP LOOP_ENTER_END
- 101,-93,0,8, # 267 cur instr == "]"
- 1005,8,LOOP_ENTER_END, # 271 JNZ LOOP_ENTER_END
- 101,-1,7,7, # 274 decrement bracket count
- # LOOP_ENTER_END
- 1006,7,LOOP, # 278 JEZ loop count LOOP
- 101,-1,4,4, # 281 decrement instruction pointer
- 109,-1, # 285 increment offset
- 1106,0,LOOP_ENTER_TRACE # 287
Add Comment
Please, Sign In to add comment