@1
L: MOV UP, ACC
MOV ACC, RIGHT
MOV ACC, RIGHT
MOV ACC, DOWN
JEZ Z
MOV -1, DOWN
SWP
ADD 1
SWP
JMP L
Z: MOV 1, DOWN
SWP
MOV ACC, DOWN

@2
MOV 999, ACC
L: SUB LEFT
JGZ LO
ADD LEFT
JMP L
LO: MOV LEFT, ACC
JEZ DN
SAV
JMP L
DN: SWP
MOV ACC, DOWN

@3
L1: SUB UP
JRO UP
MOV ACC, DOWN
MOV RIGHT, ACC
SAV
MOV UP, ACC
L2: SWP
MOV ACC, DOWN
SWP
MOV ACC, DOWN
JEZ DN
SUB 1
MOV -2, DOWN
JMP L2
DN: MOV 1, DOWN

@5
MOV UP, ACC
L: ADD UP
ADD UP
JRO UP
MOV ACC, DOWN
