Chainlock v02a is a paper/imp with an embedded vortex launch which entered the KOTH.org 94 hill on 17th November 2004 and reached age 133 before being pushed off on 3rd February 2006. Chainlock also survived 76 challenges on the 94nop hill.
;redcode-94nop
;name Chainlock v02a
;author G.Labarga
;strategy Q4.5->paper/imp
;assert CORESIZE==8000
;strategy 1. First test version
;strategy 2. well optimized
zero equ qbomb
qtab3 equ qbomb
qbomb dat >qoff , >qc2
dat 0,0
dat 0,0
dest1 equ 6065
;dest2 equ 4450
dec equ 5905
trail equ 6876
bstep equ 5353 ;-6
Plch: spl 1, <qb1
qtab2 spl 1, <qb2
spl 1, <qb3
spl @0,<dest1
mov }-1,>-1
head: spl #-1143,<dec
mov bmb,@igo
sub.f head,igo
igo: djn.f imp-(8*1143),{trail
bmb: dat {bstep,<1
imp: mov.i #1,1143
for 4
dat 0 , 0
rof
dat zero-1 , qa1
qtab1 dat zero-1 , qa2
for 17
dat 0 , 0
rof
for 14
dat 0 , 0
rof
for 14
dat 0 , 0
rof
;------- Q^4.5 ------
qc2 equ ((1+(qtab3-qptr)*qy)%CORESIZE)
qb1 equ ((1+(qtab2-1-qptr)*qy)%CORESIZE)
qb2 equ ((1+(qtab2-qptr)*qy)%CORESIZE)
qb3 equ ((1+(qtab2+1-qptr)*qy)%CORESIZE)
qa1 equ ((1+(qtab1-1-qptr)*qy)%CORESIZE)
qa2 equ ((1+(qtab1-qptr)*qy)%CORESIZE)
qz equ 2108
qy equ 243 ;qy*(qz-1)=1
;q0 mutation
qgo sne qptr+qz*qc2 , qptr+qz*qc2+qb2
seq <qtab3 , qptr+qz*(qc2-1)+qb2
jmp q0 , }q0
sne qptr+qz*qa2 , qptr+qz*qa2+qb2
seq <qtab1 , qptr+qz*(qa2-1)+qb2
jmp q0 , {q0
sne qptr+qz*qa1 , qptr+qz*qa1+qb2
seq <(qtab1-1) , qptr+qz*(qa1-1)+qb2
djn.a q0 , {q0
;q1 mutation
sne qptr+qz*qb3 , qptr+qz*qb3+qb3
seq <(qtab2+1) , qptr+qz*(qb3-1)+(qb3-1)
jmp q0 , }q1
sne qptr+qz*qb1 , qptr+qz*qb1+qb1
seq <(qtab2-1) , qptr+qz*(qb1-1)+(qb1-1)
jmp q0 , {q1
sne qptr+qz*qb2 , qptr+qz*qb2+qb2
seq <qtab2 , qptr+qz*(qb2-1)+(qb2-1)
jmp q0
;qz mutation
seq >qptr , qptr+qz+(qb2-1)
jmp q2 , <qptr
;q0 mutation
seq qptr+(qz+1)*(qc2-1),qptr+(qz+1)*(qc2-1)+(qb2-1)
jmp q0 , }q0
seq qptr+(qz+1)*(qa2-1),qptr+(qz+1)*(qa2-1)+(qb2-1)
jmp q0 , {q0
seq qptr+(qz+1)*(qa1-1),qptr+(qz+1)*(qa1-1)+(qb2-1)
djn.a q0 , {q0
jmz.f Plch , qptr+(qz+1)*(qb2-1)+(qb2-1)
qoff equ -86
qstep equ -7
qtime equ 19
q0 mul.b *2 , qptr
q2 sne {qtab1 , @qptr
q1 add.b qtab2 , qptr
mov qtab3 , @qptr
qptr mov qbomb , }qz
sub #qstep , qptr
djn -3 , #qtime
djn.f Plch , #0
end qgo