WORM Solution
CALLING CARD
WORM row 8

Prerequisites
Unlocks
w37 solved
Active cores1, 2, 4, 7
Program lines30
DetailWORM row 8
Walkthrough
CALLING CARD: 6-digit frames; OUT = 1 if Luhn-valid else 0.
Luhn: double d0,d2,d4 (adjust >9 by -9), keep d1,d3,d5, sum 6, valid iff sum%10==0.
core0 reads a frame, doubles d0/d2/d4 via doubler core1, sums in ACC, sends sum DOWN.
core4 = ACC-buffered relay (link->link MOV drops a value if its write blocks, so we
stage through ACC). core8 = mod10==0 -> 1/0, then emit DOWN.
Rack Solution
# CALLING CARD: 6-digit frames; OUT = 1 if Luhn-valid else 0.
# Luhn: double d0,d2,d4 (adjust >9 by -9), keep d1,d3,d5, sum 6, valid iff sum%10==0.
# core0 reads a frame, doubles d0/d2/d4 via doubler core1, sums in ACC, sends sum DOWN.
# core4 = ACC-buffered relay (link->link MOV drops a value if its write blocks, so we
# stage through ACC). core8 = mod10==0 -> 1/0, then emit DOWN.
@1
MOV RIGHT, UP
MOV ACC, UP
ADD RIGHT
MOV RIGHT, UP
ADD UP
ADD RIGHT
MOV RIGHT, UP
ADD UP
ADD RIGHT
MOV DOWN, ACC
@2
MOV ACC, LEFT
ADD ACC
SUB 9
JG P
ADD 9
P: MOV LEFT, ACC
@4
MOV ACC, UP
MOV DOWN, ACC
@7
S: MOV ACC, UP
JZ Y
M: SUB 10
JZ Y
JG M
MOV DOWN, 0
JMP S
Y: MOV DOWN, 1