1;redcode-94 quiet
2;name Uninvited
3;author John Metcalf
4;strategy Mini-Q^3 -> Stone / Delayed Imp
5;assert CORESIZE==8000
6
7     org qGo
8
9     sBoot equ (uPtr+2093)
10     iBoot equ (sBoot+uStp)
11
12pGo: spl   2,           >-200      ; 6 processes
13     spl   1,           >-350
14     spl   1,           {-500
15     mov   <uBmb,       {iPos      ; launch imp
16     mov   {sPtr,       {sPos      ; launch stone
17sPos:djn   sBoot+6,     #6         ; 5 processes for the stone
18iPos:jmp   iBoot+6,     >-650      ; and 1 process for the imp
19
20     uStp equ 703
21     uTim equ 1183
22
23     spl   #0,       #0
24uLp: mov   uBmb,     @uPtr
25uHit:sub.x #uStp*2,  @uLp
26uPtr:mov   {3582,    }uHit+2*uStp*uTim
27     djn.f @uHit,    }uPtr
28uBmb:dat   <uStp,    >1+6
29
30     iStep equ 2667                ; 3-point imps
31
32sPtr:djn   #0,          #5         ; wait a while
33iPmp:spl   #iImp,       >-20
34     sub.f #-iStep-1,   iJmp
35     mov   iImp,        }iPmp
36iJmp:jmp   iImp-2*(iStep+1),>iImp+2*iStep-1
37iImp:mov.i #iStep/2,    iStep
38
39     for   39
40     dat   0,0
41     rof
42
43     qf equ qKil
44     qs equ 222
45     qd equ 322
46     qi equ 7
47     qr equ 11
48
49;    -+)>] 0/1 cycles [(<+-
50
51qGo: seq   qd+qf+qs,    qf+qs      ; 1
52     djn.f qSki,        {qd+qf+qs+qi
53     seq   qd+qf+6*qs,  qf+6*qs    ; B
54     djn.f qFas,        {qd+qf+6*qs+qi
55     seq   qd+qf+5*qs,  qf+5*qs    ; B-1
56     jmp   qFas,        <qBmb
57     seq   qd+qf+7*qs,  qf+7*qs    ; B+1
58     jmp   qFas,        >qBmb
59     seq   qd+qf+9*qs,  qf+9*qs    ; A-1
60     djn   qFas,        {qFas
61     seq   qd+qf+10*qs, qf+10*qs   ; A
62     jmp   qFas,        {qFas
63
64;    -+>)] 2 cycles [(<+-
65
66     seq   qd+qf+3*qs,  qf+3*qs    ; C
67     djn.f >qFas,       {qd+qf+3*qs+qi
68     seq   qd+qf+2*qs,  qf+2*qs    ; C-1
69     jmp   >qFas,       {qSlo
70     seq   qd+qf+4*qs,  qf+4*qs    ; C+1
71     jmp   >qFas,       }qSlo
72     seq   qd+qf+12*qs, qf+12*qs   ; B*C-B
73     jmp   qSlo,        {qSlo
74     seq   qd+qf+15*qs, qf+15*qs   ; B*C-C
75     jmp   qSlo,        <qBmb
76     seq   qd+qf+21*qs, qf+21*qs   ; B*C+C
77     jmp   qSlo,        >qBmb
78     seq   qd+qf+24*qs, qf+24*qs   ; B*C+B
79     jmp   qSlo,        }qSlo
80     seq   qd+qf+27*qs, qf+27*qs   ; A*C-C
81     djn   qSlo,        {qFas
82     seq   qd+qf+30*qs, qf+30*qs   ; A*C
83     jmp   qSlo,        {qFas
84     sne   qd+qf+18*qs, qf+18*qs   ; B*C
85     jmz.f pGo,         qd+qf+18*qs-10
86
87qSlo:mul   #3,          qKil       ; C=3
88qFas:mul.b qBmb,        @qSlo
89qSki:sne   >qf+23*qs,   >qKil
90     add   #qd,         qKil
91qLoo:mov   *qKil,       <qKil
92qKil:mov   qBmb,        }qs
93     sub   #qi-1,       @qLoo
94     djn   qLoo,        #qr
95     djn.f pGo,         #10        ; A=10
96qBmb:dat   {qi*qr-10,   {6         ; B=6
97     end
98
99