I feel there is more room left in the design, probably more scans can be added, but I don't think longer qscaning is worth it. I'll keep tinkering around with it and probably clean it up a little and use formular instead of raw values in the future.
And to 'prove the point' that more scans can be added, here is a different version that has 43 lines (if you include the tables) and it scans a whopping 36 positions all spaced at least 100 apart (as good as it gets). However, more scans isn't always
what you want, the added lines are SEQ/JMP pairs that take up space. It might be possible to squize in another SNE/SEQ/JMP pair, that would probably be useful in this case. But in general, adding more scans doesn't automatically cause a better score,
because you're adding more lines.
;redcode-94nop
;name ForJohn.C
;author Roy van Rijn
;strategy For John with a new qscan
;strategy 43 lines, 36 scans
;assert 1
qb1 equ 7379
qb2 equ 2627
qb3 equ 6913
qa1 equ 7598
qa2 equ 4115
qc1 equ 4957
qgap equ 1457
qz equ 104
qgo
sne.i qptr + 3528 , qptr+4985
seq.i <tab , qptr+3424
jmp dec , }dec ;tab*qz
sne.i qptr+6192 , qptr+7649
seq.i <(tab2-1) , qptr+6088
djn.a dec , {dec ;(tab2-1)*qz
sne.i qptr+3960 , qptr+5417
seq.i >(tab2) , qptr+5521
jmp dec , {dec ;tab2*qz
sne.i qptr+6952 , qptr+409
seq.i <(qbomb+1) , qptr+305
jmp dec , }qptr ; (qbomb+1)*qz
sne.i qptr+7416 , qptr+873
seq.i <(qbomb-1) , qptr+769
jmp dec , {qptr ; (qbomb-1)*qz
seq.i qptr+7208 , qptr+665
djn.b dec , {qptr ;(--(qbomb-1))*(qz)
seq.i qptr+3730 , qptr+5187
jmp dec , >qptr
sne.i qptr+1208 , qptr+2665
seq.i <(qbomb) , qptr+1104
tab jmp *-7 , qc1 ; also used as qstep
seq.i qptr+1000 , qptr+2457
jmp dec,<qbomb
seq.i <qptr , qptr+1560
jmp dec+1
seq.i qptr+3852, qptr+5309
jmp dec,<qptr
seq.i qptr+556,qptr+2013
djn.f dec,qptr
bDist1 equ 394;525;4178
bDist2 equ 7956;945;3018
wGo spl 1 , }qb1
qbomb spl 1 , }qb2
spl 1 , }qb3
mov {pap2 , {1
pBoot1 spl bDist1 , }1218
mov {pap , {1
pBoot2 jmp bDist2 , }1131
for 7
dat 0 , 0
rof
dat }qoff , qa1
tab2 dat }qoff , qa2
for 10
dat 0 , 0
rof
iStep equ 1143
pStep equ 2863;1500
sStep equ 866;95
pap2 spl @8 , <pStep
mov.i }-1 , >-1
pStone spl #0
mov bomb , >ptr
add.x imp , ptr
ptr jmp imp-iStep*8 , >sStep-6
bomb dat >1 , }1
imp mov.i #sStep-1 , iStep
for 13
dat 0 , 0
rof
pStep1 equ 697;6963
pStep2 equ 3446;4657
pStep3 equ 1188;1899
sStep1 equ 3845;3552
sStep2 equ 2662;1393
sStep3 equ 6547;6676
pap spl @8 , }pStep1
mov.i }-1 , >-1
spl @0 , >pStep2
mov.i }-1 , >-1
mov.i #sStep1 , {1
mov.i sStep2 , }sStep3
mov.i {-4 , <1
jmz.a @0 , pStep3
for 7
dat 0 , 0
rof
qoff equ -87
qstep equ -7
qtime equ 19
dec mul.b *qptr , qptr
zero equ qgo-1
sne.i zero , @qptr
add.ab #qgap , qptr
mov.i tab2 , @1
qptr mov.i >qbomb , }qz
sub.ab tab , qptr
djn -3 , #qtime
jmp wGo , <855
end qgo
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)