• [88] Der Zweite Blitzkrieg 2021

    From John Metcalf@21:1/5 to All on Tue Dec 7 20:19:20 2021
    DZB is a stone/imp which held an ~8 point lead on the Intel 88 hill when
    it closed in April 1994. The original version scores pretty well on Koenigstuhl, despite using a classic qscan with a slow reaction.

    I was curious how it would score with a modern q^2, so I replaced the old
    qscan with the q^2 from Whirl. I didn't touch the stone/imp so it's still identical to Mike's original.

    The new version is currently in 5th place on the recursive 88-Koenigstuhl
    and 15th on the koth.org 88 hill:

    DZB 1994 | DZB 2021

    Score on Koenigstuhl | 154.89 | 170.19
    Score on Koth | 104.36 | 135.50

    Are the any other early warriors which would benefit from a modern q^2?



    ;redcode
    ;name Der Zweite Blitzkrieg 2021
    ;author Mike Nonemacher
    ;strategy quick-scan -> stone-spiral -> 2-pass coreclear -> gate
    ;assert CORESIZE==8000

    ; The stone/imp is identical to Mike's original
    ; I've replaced the old qscan with a modern qscan

    ; qscan - 36 scans in 48 instructions

    qfirst equ (qp2+2*qstep)
    qdist equ qfirst+qeee
    qstep equ (qeee*2)
    qeee equ 130

    qi equ 7
    qr equ 7

    qbomb dat <qi/2-qi*qr, <qi*qr-qi/2

    qa equ qstep*16
    qb equ qstep*5+2
    qc equ qstep*10
    qd equ qstep*2
    qe equ qstep*1

    qscan cmp qdist+qc, qfirst+qc
    jmp qfast, <qa
    cmp qdist+qe+qd, qfirst+qe+qd
    qp1 jmp <qfast, <qc
    qp2 cmp qdist, qfirst
    qp3 jmp qskip, <qe

    cmp qdist+qb, qfirst+qb
    q1 djn qfast, #qp1

    cmp qdist+qd+qc, qfirst+qd+qc
    jmp qslow, <qfirst+qd+qc+4
    cmp qdist+qd+qb, qfirst+qd+qb
    x1 jmp qslow, <q1
    cmp qdist+qc+qc, qfirst+qc+qc
    q2 djn qslow, #qp2
    cmp qdist+qd, qfirst+qd
    jmp qslow, <qfast
    cmp qdist+qa, qfirst+qa
    jmp q1, <q1

    cmp qdist+qa+qd, qfirst+qa+qd
    jmp x1, <q1
    cmp qdist+qc+qb, qfirst+qc+qb
    jmp q2, <q1
    cmp qdist+qe+qd+qc,qfirst+qe+qd+qc
    jmp qslower, <qfirst+qe+qd+qc+4
    cmp qdist+qe+qd+qb,qfirst+qe+qd+qb
    jmp qslower, <q1
    cmp qdist+qe+qc+qc,qfirst+qe+qc+qc
    jmp qslower, <q2
    cmp qdist+qd+qd+qc,qfirst+qd+qd+qc
    q3 djn qslower, #qp3
    cmp qdist+qe+qc, qfirst+qe+qc
    jmp <qfast, <q2
    cmp qdist+qd+qd, qfirst+qd+qd
    jmp <qfast, <q3
    cmp qdist+qd+qd+qb,qfirst+qd+qd+qb
    slt <q3, <q1

    jmz warr, qdist+qe+qd+qc+10

    qslower add @q3, @qslow
    qslow add @q2, qkil
    qfast add @q1, @qslow

    qskip cmp <qdist+qstep+50, @qkil
    jmp qloop, <1234

    add #qdist-qfirst, qkil
    qloop mov qbomb, @qkil
    qkil mov <qfirst+qstep+50, <qfirst
    sub #qi, @qloop
    djn qloop, #qr+2

    BOOT EQU 3405 ;Just picked this one at random
    C EQU 328 ;bombing increment - small, mod-8
    GVAL EQU -19 ;decrement for gate
    INCR EQU 20 ;offset of inc from stone
    PTR EQU -11 ;offset of ptr from stone+4
    I EQU 1232 ;offset of start of spiral from imp
    D EQU 1143 ;7-point spiral

    warr spl isp ;launch spiral
    mov gate, top+BOOT-1+PTR+GVAL ;set up 2-pass clear
    mov split, top+BOOT-4-19
    mov #-PTR-1,top+BOOT-1+PTR
    spl 1
    mov -1, 0
    spl 1 ;6 processes for bootstrap
    mov <src, <top
    top jmp @0, #BOOT+1
    imp mov 0, D
    split spl 0, <GVAL
    stone sub stone+INCR, 1
    mov <-19, 1
    jmp -2, <split+GVAL
    mov @PTR, <stone+INCR
    jump jmp -1, <GVAL-2
    gate dat <GVAL-1,#0
    isp mov imp, imp+I
    mov inc, top+BOOT-4+INCR
    spl 1
    spl 1
    spl 1
    mov -1, 0 ;generate 15 consecutive processes
    src spl 2, #jump+1
    jmp @0, imp+I
    add #D, -1
    inc dat #C, #-C
    END qscan

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)