Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[94nop] Sputnik

30 views
Skip to first unread message

John Metcalf

unread,
Dec 27, 2015, 6:37:55 AM12/27/15
to
Sputnik is a 4 process satellite paper/clear which I wrote as a simple example. It seems to be scoring pretty well on 94nop - not sure how long it will last :-)

http://corewar.co.uk/sputnik.htm

;redcode-94nop
;name Sputnik
;author John Metcalf
;strategy qscan -> paper with satellite
;assert CORESIZE==8000

org qscan

step equ 3416
dist equ 1234
bpos equ satel+4-dist+1

sputnik spl 1, <1000 ; 4 parallel processes
spl 1, <2000

mov <boot, {boot
boot jmp bpos, paper+4

paper spl step
mov >paper, }paper
mov <launch, {launch
launch djn.f step+dist,{dist

satel spl #100, <2
mov.i #1, <1
djn satel, #1000

for 59
dat 0, 0
rof

qfac equ 369
qdec equ 3730 ; qdec = (1+qfac^-1) mod 8000

qa equ (qfac*(qtab0-1-qptr)+1)
qb equ (qfac*(qtab0-qptr)+1)
qc equ (qfac*(qtab1-1-qptr)+1)
qd equ (qfac*(qtab1-qptr)+1)
qe equ (qfac*(qtab1+1-qptr)+1)
qf equ (qfac*(qtab2-qptr)+1)

qtime equ 18
qstep equ -7
qgap equ 87

qdecode mul.b *q1, qptr
q0 sne <qtab0, @qptr
q1 add.b qtab1, qptr
q2 mov qtab2, @qptr
qptr mov qtab2, *qdec
add #qstep, qptr
djn q2, #qtime
jmp sputnik, qc
qtab1 dat 4000, qd
dat 4000, qe

qscan sne qptr+qdec*qe, qptr+qdec*qe+qe
seq <qtab1+1, qptr+qdec*(qe-1)+qe-1
jmp qdecode, }q1
sne qptr+qdec*qb, qptr+qdec*qb+qd
seq <qtab0, qptr+qdec*(qb-1)+qd
jmp qdecode, {qdecode
sne qptr+qdec*qa, qptr+qdec*qa+qd
seq <qtab0-1, qptr+qdec*(qa-1)+qd
djn.a qdecode, {qdecode
sne qptr+qdec*qf, qptr+qdec*qf+qd
seq <qtab2, qptr+qdec*(qf-1)+qd
jmp qdecode, }qdecode
sne qptr+qdec*qc, qptr+qdec*qc+qc
seq <qtab1-1, qptr+qdec*(qc-1)+qc-1
jmp qdecode, {q1
sne qptr+qdec*qd, qptr+qdec*qd+qd
seq <qtab1, qptr+qdec*(qd-1)+qd-1
jmp qdecode, qa
qtab0 jmp sputnik, qb
qtab2 dat qgap, qf

0 new messages