Infinite Hills
For Beginners
First Steps
For Beginners
> Home > The Corewar Newsletters > The '94 Warrior > Issue #6

April 18, 1994                                                        Issue #6

This newletter covers the current status of the ICWS '94 Draft hills,
and also attempts to keep up with the latest ideas in how the new standard
will affect corewars in general.  I hope you enjoy it!

If you are unfamiliar with the '94 draft standard, you can learn more about
it by reading the FAQ for this newsgroup.  In addition, the program pMARS
includes a highly recommended tutorial on the new standard.  Feel free
to send me e-mail if you have any difficulty finding either of them, if you
need to have a corewar item mailed to you, or if you have any other questions.

The FAQ is available through anonymous FTP to, as


There have been several changes since the last issue of _The_'94_Warrior_
came off the electronic presses.  With luck, I'll manage to get most of them.

The first big event is the addition of two (or three) new opcodes for
version 0.5 of pMARS.  It was recently downloaded to
(in the pub/corewar/incoming directory).  Even if you don't think you will
ever need to use SEQ, SNE, or NOP, there are a couple of bug fixes that make
it worth the effort to upgrade.

The another big event is the creation of a new hill server, "pizza".  "Pizza"
is operated by Thomas Davies, and he's doing a great job at it!  Most of the
programs residing at the "Intel KotH" and "stormking" have already managed to
migrate over, and there are several new programs on "pizza" as well.  The
"pizza" hills eliminate the major complaint users had with the "stormking"
hills:  you no longer need to wait a day or two to get back the results of a
warrior submission.  (The process of submitting a warrior to a hill on "pizza"
is covered in the latest FAQ for the newsgroup.  Send me
mail if you didn't receive a copy of it.)

Along with the creation of the "pizza" server came the passing of the Bill
Shubert's hill at Intel.  Thanks, Bill, for the many years you have used your
resources to allow the rest of us to hone our corewars skills.  The game has
improved greatly because of your efforts!

You'll also want to catch the first chapter of Steven Morrell's "MY FIRST
COREWAR BOOK".  It's on in the pub/corewar/incoming
directory as "chapter1.Z".  Even if Steven didn't mention my name in it and
he attended some school other than the University of Utah, I would still
recommend it.  It's that good!

For those of you developing warriors in large core sizes, the upgraded version
of Optima I mentioned in the last issue is now available on soda.  If you are
experimenting with different core sizes (like the small core on "pizza", this
program is a necessity.)

And, for those of you with a competitive streak, I would highly encourage you
to enter Stefan Strack's upcoming corewar tournament.  In case you missed the
announcement, here it is again:

  In the meantime, I am going to hold a double-elimination tournament with
  weekly rounds, just like the summer and fall tourneys of last year
  ( includes a rapport
  of this kind of tourney).

  Rules will alternate between '94 (coresize=8000) and '94x (coresize=55440)
  hill specs. If there's demand, I'll also throw in a pure '88 round. If there
  are enough participants, I'll divide them up into an A- and B-league
  (verterans and beginners).

  The submission deadline for round 1 is Friday, April 22nd. Rules are '94x
  (big) hill specs, and you may use the new opcodes. Your opponent in round 1
  will be chosen randomly. 

  And as though the fame was not enough incentive already, the tournament
  winner will receive a free ICWS membership and subscription to the
  newsletter for one year.

  -Stefan (

Just in case those prizes are not good enough for you, I will also throw in a
free one-year subscription to _The_'94_Warrior_ for the winner.  Seriously
though, Stefan always does a great job with his tournaments, and I heartily
recommend you give this one a try.

The ICWS '94 Draft Hill:

       Core size:	8000 instrucitons
   Max processes:	8000 per program
        Duration:	After 80,000 cycles, a tie is declared.
Max entry length:	100 instructions

The current ICWS '94 Draft hill:
 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  45/ 20/ 34 Der Zweite Blitzkrieg - 9      Mike Nonemacher     170      13
 2  47/ 31/ 21               Sauron v1.7     Michael Constant     163       3
 3  42/ 30/ 28           Killer instinct         Anders Ivner     154      64
 4  46/ 41/ 13              Dragon Spear             c w blue     151      63
 5  36/ 22/ 42                   Lucky 3        Stefan Strack     150      23
 6  43/ 36/ 21              Request v2.0     Brant D. Thomsen     149      61
 7  45/ 43/ 12             Iron Gate 1.5       Wayne Sheppard     148       7
 8  31/ 17/ 53                 Blue Funk       Steven Morrell     145      30
 9  33/ 21/ 46       Twimpede+/8000-E.2c              Jay Han     144      17
10  32/ 21/ 47         Imperfection v3.1     Michael Constant     142      15
11  34/ 26/ 40                     NC 94       Wayne Sheppard     142      43
12  31/ 24/ 44                    Splash              Jay Han     139       1
13  38/ 38/ 25                    NTA 94       Wayne Sheppard     137      51
14  40/ 43/ 17                      Test        Stefan Strack     137      26
15  40/ 42/ 18            Sylvester v1.0     Brant D. Thomsen     137      60
16  38/ 41/ 22            Fast Food v2.1     Brant D. Thomsen     134      58
17  34/ 34/ 32               Match Stick             c w blue     133      41
18  31/ 32/ 37          Little Flea v1.2     Michael Constant     129       5
19  38/ 49/ 13               Dagger v6.0     Michael Constant     126      67
20  32/ 45/ 23             Assassin v1.0     Michael Constant     119      20

For this issue, I was planning to post the results of both the "stormking" and
"pizza" '94 hills.  However, as I haven't gotten back the results of the
queries I sent to "stormking" almost four days ago, I decided to simply make
a clean switch to pizza this month.  Send any complaints to the editorial

I believe most of the programs that are on the '94 draft hill on "stormking"
have made it over to "pizza".  Next issue, after things have settled down a
little bit on the new hills, I will attempt to analyze what is happening.

The ICWS '94 Draft Experimental Hill:

       Core size:	55,440 instructions
   Max processes:	10,000 per program
        Duration:	After 500,000 cycles, a tie is declared.
Max entry length:	200 instructions

The current ICWS '94 Experimental (Big) hill:
 #  %W/ %L/ %T                      Name               Author   Score     Age
 1  49/ 15/ 36             Variation G-1              Jay Han     182       1
 2  47/ 15/ 38           Variation E-2.c              Jay Han     178      13
 3  44/ 16/ 39                  Splash 1              Jay Han     172       2
 4  45/ 22/ 32                  Lucky 13        Stefan Strack     168      43
 5  49/ 32/ 20             Request-55440     Brant D. Thomsen     165      37
 6  35/ 18/ 47         Imperfection v2.4     Michael Constant     153       8
 7  47/ 41/ 12                   Rave B4        Stefan Strack     153      29
 8  45/ 42/ 13                     Virus              Jay Han     148       3
 9  44/ 43/ 13                  bigproba        nandor sieben     145      41
10  42/ 46/ 12              Scanalyzer-W              Jay Han     138       4
11  42/ 46/ 13           Scanalyzer-V.3b              Jay Han     138      11
12  35/ 33/ 32             Big Flea v1.1     Michael Constant     137       7
13  38/ 46/ 15                amoeba v82 Richard van der Brug     131      18
14  38/ 47/ 15               Dagger v8.0     Michael Constant     130      24
15  38/ 46/ 16               Sunburst 33              Jay Han     130      31
16  30/ 31/ 38                 Nova-A.1b                  Jay     129      12
17  29/ 32/ 39                 Skimp 127              Jay Han     127      30
18  34/ 42/ 23               IceCube 1.4 Richard van der Brug     126      17
19  32/ 40/ 28                Veeble Jr.         T. H. Davies     125      27
20  36/ 51/ 13              Kill Imps!!!       Steven Morrell     121      26

The comments for the other hill apply here as well.


For today's hint, I will be using the source code to "Request v2.0"
for the 55440 size '94 hill.  "Request" is very similar to my earlier
"Distance" vampires (I know, I'm stuck in a rut ...) with the exception
that the fangs use indirect addressing instead of direct addressing to
send the processes to the pit.  By using a two line piece of code that 
contuously rewrites the reference value used by the fangs, I can "undo"
any damage caused by standard anti-vampire programs.

                                *   *   *

Writing code for a large coresize provides an interesting challenge.
Possibly the most frustrating thing about it is that it is hard to display
and analyze 55440 locations.  I find that, more than ever, I am forced to 
rely on other programs to help me generate the information I want for my
corewars warriors.

For instance, when I wanted to make the '94 version of my vampire "Request"
run in the 55440 coresize, I tried several things to make the process easier.
As you may have guessed by reading the last issue of _The_'94_Warrior_, one
of the first programs I used was "Optima" by Michael Constant.

This, however, was just the beginning.  Take a look at the following "c" code:

/* Determine coverage with different RedCode spacing for bombers */

#include <stdio.h>
#include <stdlib.h>

#define WIDTH 80

int main(int argc, char *argv[])
	long sp, coresize, first, step, lines = WIDTH+1, printed, count;
	int i, core[WIDTH];

	if (argc < 4 || argc > 5) {
		printf("\nUsage:  %s coresize step first [lines]\n", argv[0]);
		return 0;

	coresize = atol(argv[1]);
	step = atol(argv[2]);
	if(step < 0)
		step += coresize;
	first = atol(argv[3]);

	if(argc > 4)
		lines = atol(argv[4]);

	for(i = 0; i < WIDTH; i++)
		core[i] = 0;

	printed = 0;
	sp = first;
	count = 0;
	printf("%ld:\n", step);

	do {
		if(sp >= 0 && sp < WIDTH) {
			core[sp] = 1;
			for(i = 0; i < WIDTH; i++)
				if(i == first)
					printf("%c", core[i] ? '*' : ' ');

		sp += step;
		sp %= coresize;
	} while(sp != first && printed < lines);

	printf("\nMod: %ld\n", coresize / count);

	return 0;

This program simply takes an imaginary chunk of computer core with a given
starting point and step size, and plots how that piece of core will be hit
up as the bombing progresses.  Then I was able to simply take the pieces of
request and fit them into the spaces that were hit latest.
(Since my computer screen is 80 columns wide, I simply used that size of
core.  Feel free to change WIDTH as appropriate.)  In the output, the "@"
indicates the very first location bombed (if it is in the range printed).
Of course, you can also make that the last location bombed by simply adding
one step value to your starting value.

Also, take a look at the bootstrapping code itself.  By using the "FOR" macro,
and using the "SUB" statements in my bootstrapping code, it is trivial to
change the locations of the different parts of the vampire, because the 
distances between them are automatically computed by the boot-strapping code
based on the number of "DAT" statements between the segments.  I can even
change the order of the segments without touching my bootstrapping code; I
simply use the cut an paste tools in my editor to rearrange the segments as
I wanted them.

The end result:  a competitive program that I have never run inside of a 
size 55440 core.  Is this a good way to go about it?  I have no idea.  It is,
however, an excellent example about how much trouble some people will go to
to avoid a little bit of work.

                                *   *   *

;name Request-55440
;author Brant D. Thomsen
;strategy '94 Vampire
;strategy The latest program in my "quest"
;strategy to yield less wins to anti-vampiric programs.
;strategy Submitted: @date@

step	equ	9719
init	equ	(pit+1+step)

gate	equ	(jump-12)
decoy	equ	(gate-1+step)

FOR 132
	dat	#start*10, #1	; Provide a large decoy.

start	mov	jump, <dist

	sub	#jump-adder-1, dist

	mov	adder, <dist

	sub	#adder-pit-5, dist

	mov	pit+4, <dist
	mov	pit+3, <dist
	mov	pit+2, <dist
	mov	pit+1, <dist
	mov	pit, <dist

	sub	#pit-vamp-4, dist

	mov	vamp+3, <dist
	mov	vamp+2, <dist
	mov	vamp+1, <dist
	mov	vamp, <dist
	spl	@dist, <10000	; Start the vampire

	sub	#vamp-help-2, dist

	mov	help+1, <dist
	mov	help, <dist
	spl	@dist, <20000	; Send 2 processes to "help" so that will
	spl	@dist, <30000	; execute "MOV" once cycle.

	sub	#help-wimp-1, dist

	mov	wimp, <dist
	spl	@dist, <40000

	sub	#10000, dist	; Erase record of where boot-strapped.
dist	dat	#15501		; Then kill the process.

	; The following is the code for the program.
	; Spacing (for DATs between segments) is computed automatically.

jump	jmp	@decoy-init, init

	dat	#start*10, #1

	; Wimp is necessary so will still have a process when pit dies.
	; Runs no risk of starvation since no SPL in it.

wimp	jmp	#0, <gate

	dat	#start*10, #1

pit	mov	@8, <gate-1
	spl	#0, <gate
	spl	-2, <gate
	spl	-2, <gate
	djn.F	pit, >adder-2

	dat	#start*10, #1

help	mov	#pit-decoy, decoy
	jmp	help, <gate

	dat	#start*10, #1

adder	dat	<-step, <step

	dat	#start*10, #1

vamp	spl	#0, <gate
move	mov	@0, @jump
	add	adder, @move
	djn.F	-2, <-step

	end	start

Looking to the Future:

There promise to be some interesting times ahead for the '94 draft, the '94
hills, and _The_'94_Warrior_.  With the advent of the "pizza" hills, I have
no doubt that the number and quality of warriors on the '94 hills will
increase at an unprecedented rate.  (In fact, one could probably argue that
they already have.)  Of course, this also means that those of you who have
been putting off experimenting around with the new standard no longer have an
excuse!  (Well, not a _good_ excuse.)

If you have any comments or questions about the '94 hills or the '94
standard that you think might be of general interest, please let me know.

Good luck, and happy computing!

Brant D. Thomsen, Editor	   Snail mail:	1197 East 6290 South
(			Salt Lake City, UT  84121
University of Utah				U.S.A.
Brant D. Thomsen                  Man will occasionally stumble over the truth,
(   but most times he will pick himself up
University of Utah                and carry on.             - Winston Churchill
2002-2005 Logo C. Schmidt