1;redcode-94 test
2;name RotF Copy
3;author Robert Macrae
4;strategy q^4 -> silkish/imp after David Moore / Ben Ford
5;assert (CORESIZE==8000)
6
7; Endless agonising, and I came back to the first version. Oh well, at
8; least I learned to code a P^3, though it never quite beat this 8-/
9
10
11iHOP	equ	(2667)
12iINC	equ	(-iHOP-1)
13iORG	equ	(spin+630)
14iOFF	equ	(iORG+iINC)
15
16qf	equ	qptr
17qs1	equ	(-120)
18qs2	equ	(-240)
19qd	equ	4000
20qi	equ	7
21qr	equ	13
22qo	equ	(qi*qr-(qi/2))
23
24
25wimp  jmp   #0,         #0
26
27    for 10
28      dat 0,0
29    rof
30
31	dat	#  15,	#  10	; A, D
32qtab	dat	#   7,	#   4	; B, E
33	dat	#  13,	#  11	; C, F
34qbmb	dat	<   1,	<  qo
35qinc	dat	#  qd,	#  qd
36
37qfas	mul.f	 qtab,	 qptr	; decode
38qfnd	sne	*qptr,	@qptr
39	add	 qinc,	 qptr
40	sne	>3456,	@qptr
41	mov.x	 qptr,	 qptr
42qloo	mov	 qbmb,	@qptr	; .5c negative bomber
43qptr	mov	< qs2,	@ qs1
44	sub.x	#  qi,	 qptr
45	djn	 qloo,	#  qr
46	jmp	 boot,	>1234
47
48qscan	sne	qf+ 1*qs2,	qf+ 1*qs1
49	seq	qf+ 1*qs2+qd,	qf+ 1*qs1+qd	; 1, 1
50	jmp	qfnd,	{qf+ 1*qs2+qd+qi
51	sne	qf+ 8*qs2,	qf+ 4*qs1
52	seq	qf+ 8*qs2+qd,	qf+ 4*qs1+qd	; B+1, E
53	jmp	qfas,	}qtab
54	sne	qf+ 7*qs2,	qf+ 5*qs1
55	seq	qf+ 7*qs2+qd,	qf+ 5*qs1+qd	; B, E+1
56	jmp	qfas,	>qtab
57	sne	qf+ 6*qs2,	qf+ 3*qs1
58	seq	qf+ 6*qs2+qd,	qf+ 3*qs1+qd	; B-1, E-1
59	djn.f	qfas,	qtab
60	sne	qf+13*qs2,	qf+11*qs1
61	seq	qf+13*qs2+qd,	qf+11*qs1+qd	; C, F
62	jmp	qfas,	}qfas
63	sne	qf+15*qs2,	qf+10*qs1
64	seq	qf+15*qs2+qd,	qf+10*qs1+qd	; A, D
65	jmp	qfas,	{qfas
66	sne	qf+14*qs2,	qf+ 9*qs1
67	seq	qf+14*qs2+qd,	qf+ 9*qs1+qd	; A-1, D-1
68	djn.f	qfas,	{qfas
69      jmp   boot
70
71    for 25
72      dat 0,0
73    rof
74
75d2    equ 1143
76TSTEP equ 1751
77bstep equ 1819 ;2283 ;1997
78bootto equ 1700-(80+15)*4-1
79
80boot    spl     wimp,   }-500
81
82;-------------------------
83; Silk with Imps from ROTF
84;-------------------------
85
86impy equ 2667
87aaa  equ 1880
88bbb  equ 2050
89ccc  equ  240
90
91        spl 1, >-600
92table2  spl 1, >-700
93        spl 1, >-800
94        mov <1, {1
95        spl ccc+paper+8, paper+8
96
97paper   spl  @0, >aaa
98        mov }-1, >-1
99        spl  @0, >bbb
100        mov }-1, >-1
101        spl  @0, <2668
102        mov }-1, >-1
103        mov.i #2*aaa, }-aaa
104        mov.i #bbb, impy
105
106
107        end	    qscan
108
109