1;redcode-94
2;name Behemot
3;author Michal Janeczek
4;strategy MiniQ^3 -> Stun bomber
5;assert CORESIZE==8000
6
7       org   qGo
8
9bStep  equ   2223
10bDrop  equ   382
11
12bDist  equ   3250
13bcOff  equ   51
14bgOff  equ   17
15
16bRun   equ   (bHit-bInc*bDrop)
17bGate  equ   (bClr-bgOff)
18bSpl   equ   (bHit-2*bInc)+1
19bJmp   equ   (bHit-2*bInc)-1
20bInc   equ   3*bStep
21
22bStart mov.i {0             , #0
23bLoop  mov   bSpl           , <bPtr
24       mov   bJmp           , *bPtr
25bPtr   mov   bRun-bStep     , @bRun+bStep+1
26bHit   add   *bEvac         , bPtr
27       mov   >bJmp          , @bPtr
28       jmz.a bLoop          , <bJmp
29bEvac  jmp   -bcOff         , <1-bcOff-bgOff
30
31bGo    spl   1              , bWipe+5
32bcDst  spl   1              , bDist+4+bEvac-bcOff
33       mov   <bGo           , <bbDst
34       mov   <bGo           , <bcDst
35       mov   <bBoot         , {bBoot
36       mov   <bBoot         , {bBoot
37bbDst  mov.i bGo            , #bDist+2+bSpl
38bBoot  jmp   >bDist+bEvac+1 , bEvac+1
39
40       spl   #bInc          , <bInc+1
41bClr   mov   bWipe          , >bGate
42       djn.f bClr           , >bGate
43bWipe  dat   <2667          , 2-bGate
44
45       jmp   bStep          , {1
46       mov   @0             , }-1
47       spl   #2             , -bStep
48
49       for   35
50       dat   0              , 0
51       rof
52
53qf     equ   qKil
54qs     equ   222
55qd     equ   322
56qi     equ   7
57qr     equ   11
58
59qGo    seq   qd+qf+qs       , qf+qs
60       jmp   qSki           , {qd+qf+qs+qi
61       seq   qd+qf+6*qs     , qf+6*qs
62       jmp   qFas           , {qd+qf+6*qs+qi
63       seq   qd+qf+5*qs     , qf+5*qs
64       jmp   qFas           , <qBmb
65       seq   qd+qf+7*qs     , qf+7*qs
66       jmp   qFas           , >qBmb
67       seq   qd+qf+9*qs     , qf+9*qs
68       djn   qFas           , {qFas
69       seq   qd+qf+10*qs    , qf+10*qs
70       jmp   qFas           , {qFas
71       seq   qd+qf+3*qs     , qf+3*qs
72       jmp   >qFas          , {qd+qf+3*qs+qi
73       seq   qd+qf+2*qs     , qf+2*qs
74       jmp   >qFas          , {qSlo
75       seq   qd+qf+4*qs     , qf+4*qs
76       jmp   >qFas          , }qSlo
77       seq   qd+qf+12*qs    , qf+12*qs
78       jmp   qSlo           , {qSlo
79       seq   qd+qf+15*qs    , qf+15*qs
80       jmp   qSlo           , <qBmb
81       seq   qd+qf+21*qs    , qf+21*qs
82       jmp   qSlo           , >qBmb
83       seq   qd+qf+24*qs    , qf+24*qs
84       jmp   qSlo           , }qSlo
85       seq   qd+qf+27*qs    , qf+27*qs
86       djn   qSlo           , {qFas
87       seq   qd+qf+30*qs    , qf+30*qs
88       jmp   qSlo           , {qFas
89       sne   qd+qf+18*qs    , qf+18*qs
90       jmz.f bGo            , qd+qf+18*qs-10
91qSlo   mul.ab #3            , qKil
92qFas   mul.b qBmb           , @qSlo
93qSki   sne   >3456          , @qKil
94       add   #qd            , qKil
95qLoo   mov   qBmb           , @qKil
96qKil   mov   qBmb           , *qs
97       sub   #qi            , qKil
98       djn   qLoo           , #qr
99       jmp   bGo            , >10
100qBmb   dat   {qi*qr-10      , {6
101
102       end
103
104