@0
MOV 999, ACC
SAV
L: MOV RIGHT, ACC
JEZ E
SWP
SUB RIGHT
JGZ U
ADD RIGHT
SAV
JMP L
U: MOV RIGHT, ACC
JMP L
E: SWP
MOV ACC, RIGHT

@1
L: MOV UP, ACC
JEZ Z
MOV ACC, LEFT
MOV ACC, LEFT
MOV ACC, LEFT
MOV 1, DOWN
MOV ACC, DOWN
MOV 1, RIGHT
JMP L
Z: MOV 0, LEFT
MOV 3, DOWN
MOV 2, RIGHT
MOV LEFT, ACC
MOV ACC, RIGHT

@2
L: ADD 1
JRO LEFT
JMP L
E: SAV
MOV LEFT, ACC
S: MOV ACC, DOWN
SWP
SUB 1
JEZ E2
SWP
ADD 1
JMP S
E2: MOV 0, DOWN

@3
L: JRO UP
ADD UP
JMP L
E: MOV ACC, DOWN
L2: MOV RIGHT, ACC
JEZ E2
MOV ACC, DOWN
MOV 1, DOWN
JMP L2
E2: MOV 0, DOWN
MOV 2, DOWN

@5
L: MOV UP, ACC
L2: SUB UP
JRO UP
JMP L2
E: NEG
MOV ACC, DOWN
