Xref: info.physics.utoronto.ca rec.games.corewar:3191 rec.answers:7305 news.answers:29101
Path: helios.physics.utoronto.ca!utcsri!utnut!cs.utexas.edu!howland.reston.ans.net!spool.mu.edu!bloom-beacon.mit.edu!senator-bedfellow.mit.edu!faqserv
From: stst@vuse.vanderbilt.edu (Stefan Strack)
Newsgroups: rec.games.corewar,rec.answers,news.answers
Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ)
Supersedes:
Followup-To: rec.games.corewar
Date: 13 Sep 1994 09:01:39 GMT
Organization: The Core War Newsletter
Lines: 651
Approved: news-answers-request@MIT.Edu
Expires: 12 Oct 1994 09:00:39 GMT
Message-ID:
Reply-To: stst@vuse.vanderbilt.edu (Stefan Strack)
NNTP-Posting-Host: bloom-picayune.mit.edu
Summary: This posting contains a list of Frequently Asked Questions
(and their answers) about the game Core War. It should be
read by anyone interested in posting to the rec.games.corewar
newsgroup or submitting warriors to the ongoing Core War
tournament - KotH.
X-Last-Updated: 1994/07/10
Originator: faqserv@bloom-picayune.MIT.EDU
Archive-name: games/corewar-faq
Last-modified: 1994/07/09
Version: 2.3.0
These are the Frequently Asked Questions (and answers) from the USENET
newsgroup rec.games.corewar. This FAQ list is also available by anonymous FTP
from rtfm.mit.edu as pub/usenet/news.answers/games/corewar-faq.Z.
TABLE OF CONTENTS Line
------------------------------------------------------------------------
1. What is Core War? 69
2. Is it Core War or Core Wars? 82
3. Where can I find more information about Core War? 90
4. Core War has changed since Dewdney's articles. Where do I get 116
a copy of the current instruction set?
5. What is ICWS'94? Which simulators support ICWS'94? 135
6. What is the ICWS? 152
7. What is TCWN? 162
8. How do I join? 170
9. Are back issues of TCWNs available? 187
10. What is the EBS? 194
11. Where are the Core War archives? 208
12. Where can I find a Core War system for . . . ? 226
13. I do not have ftp. How do I get all of this great stuff? 275
14. I do not have access to Usenet. How do I post and receive news? 285
15. When is the next tournament? 303
16. What is KotH? How do I enter? 314
17. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 483
18. How does SLT (Skip if Less Than) work? 495
19. What does (expression or term of your choice) mean? 507
20. Other questions? 650
---------------------------------------------------------------------
Q 1: What is Core War?
A 1: Core War is a game played by two or more programs (and vicariously
by their authors) written in an assembly language called Redcode and
run in a virtual computer called MARS (for Memory Array Redcode Simulator).
The object of the game is to cause all of the opposing programs to
terminate, leaving your program in sole posession of the machine.
There are Core War systems available for most computer platforms.
Redcode has been standardized by the ICWS, and is therefore transportable
between all standard Core War systems.
----------------------------------------------------------------------
Q 2: Is it "Core War" or "Core Wars"?
A 2: Both terms are used. Early references were to Core War. Later
references seem to use Core Wars. I prefer "Core War" to refer to
the game in general, "core wars" to refer to more than one specific
battle.
----------------------------------------------------------------------
Q 3: Where can I find more information about Core War?
A 3: Core War was first described in the "Core War Guidelines" of March,
1984 by D. G. Jones and A. K. Dewdney of the Department of Computer
Science at The University of Western Ontario (Canada). Dewdney wrote
several "Computer Recreations" articles in "Scientific American" which
discussed Core War, starting with the May 1984 article. Those articles
are contained in two anthologies:
Author: Dewdney, A. K.
Title: The Armchair Universe: An Exploration of Computer Worlds
Published: New York: W. H. Freeman (c) 1988
ISBN: 0-7167-1939-8
Library of Congress Call Number: QA76.6 .D517 1988
Author: Dewdney, A. K.
Title: The Magic Machine: A Handbook of Computer Sorcery
Published: New York: W. H. Freeman (c) 1990
ISBN: 0-7167-2125-2 (Hardcover), 0-7167-2144-9 (Paperback)
Library of Congress Call Number: QA76.6 .D5173 1990
A.K. Dewdney's articles are still the most readable introduction to
Core War, even though the Redcode dialect described in there is no
longer current (see Q 4).
---------------------------------------------------------------------
Q 4: Core War has changed since Dewdney's articles. Where do I get a
copy of the current instruction set?
A 4: A draft of the official standard (ICWS'88) is available by anonymous
FTP from the Core War archives (soda.berkeley.edu) as
pub/corewar/documents/standards/redcode-icws-88.Z
This document is formatted awkwardly and contains ambiguous statements. For a
more approachable intro to Redcode, take a look at
pub/corewar/documents/tutorial.1.Z
tutorial.2.Z
(See also Q11)
Steven Morrell (morrell@math.utah.edu) is preparing a more practically
oriented Redcode tutorial that discusses different warrior classes with lots
of example code. Mail him for a preliminary version. Michael Constant (mconst@
soda.berkeley.edu) is reportedly working on a beginner's introduction.
---------------------------------------------------------------------
Q 5: What is ICWS'94? Which simulators support ICWS'94?
A 5: There is an ongoing discussion about future enhancements to the
Redcode language. A proposed new standard, dubbed ICWS'94, is currently
being evaluated. A major change is the addition of "instruction modifiers"
that allow instructions to modify A-field, B-field or both. Also new is a
post-increment indirect addressing mode and unrestricted opcode and
addressing mode combination ("no illegal instructions"). ICWS'94 is
backwards compatible; i.e. ICWS'88 warriors will run correctly on an
ICWS'94 system. Take a look at the ICWS'94 draft for more information
(soda.berkeley.edu pub/corewar/documents/icws94.0202.Z). You can try out
the new standard by submitting warriors to the '94 hills of the KotH
servers (see Q16). Two corewar systems currently support ICWS'94,
pMARS (various platforms) and Redcoder (Mac), both available at soda (see
Q12).
---------------------------------------------------------------------
Q 6: What is the ICWS?
A 6: About one year after Core War first appeared in Sci-Am, the
"International Core War Society" (ICWS) was established. Since that
time, the ICWS has been responsible for the creation and maintenance
of Core War standards and the running of Core War tournaments. There
have been six annual tournaments and two standards (ICWS'86 and
ICWS'88).
---------------------------------------------------------------------
Q 7: What is TCWN?
A 7: Since March of 1987, "The Core War Newsletter" (TCWN) has been the
official newsletter of the ICWS. It is published quarterly and recent
issues are also available as Encapsulated PostScript on soda.berkeley.edu
(see Q9).
---------------------------------------------------------------------
Q 8: How do I join?
A 8: For more information about joining the ICWS (which includes a
subscription to TCWN), or to contribute an article, review, cartoon, letter,
joke, rumor, etc. to TCWN, please contact:
Jon Newman
13824 NE 87th Street
Redmond, WA 98052-1959
email: jonn@microsoft.com (Note: Microsoft has NO affiliation with
Core War. Jon Newman just happens
to work there, and we want to keep
it that way!)
Current annual dues are $15.00 in US currency.
----------------------------------------------------------------------
Q 9: Are back issues of TCWN available?
A 9: Recent issues can be found on soda.berkeley.edu (see Q11).
Older issues (up to Winter 1991) are also available (see the next TCWN
for details).
---------------------------------------------------------------------
Q10: What is the EBS?
A10: The Electronic Branch Section (EBS) of the ICWS is a group of
Core War enthusiasts with access to electronic mail. There are no fees
associated with being a member of the EBS, and members do reap some of
the benefits of full ICWS membership without the expense. For instance,
the ten best warriors submitted to the EBS tournament are entered
into the annual ICWS tournament. All EBS business is conducted in the
rec.games.corewar newsgroup.
The current goal of the EBS is to be at the forefront of Core War by writing
and implementing new standards and test suites (see Q 5).
----------------------------------------------------------------------
Q11: Where is the Core War archive?
A11: Many documents such as the guidelines and the ICWS standards
along with previous tournament Redcode entries and complete Core War
systems are available via anonymous ftp from soda.berkeley.edu
(128.32.149.19) in the /pub/corewar directories. Also, most of past
rec.games.corewar postings (including Redcode source listings) are
archived there. Jon Blow (blojo@soda.berkeley.edu) is the archive
administrator. When uploading to /pub/corewar/incoming, ask Jon to move
your upload to the appropriate directory and announce it on the net.
Much of what is available on soda is also available on the German archive
at iraun1.ira.uka.de (129.13.10.90) in the /pub/X11/corewars directory.
This FAQ is automatically archived by news.answers. See the header for
the current archive name and news.answers for how to get it.
----------------------------------------------------------------------
Q12: Where can I find a Core War system for . . . ?
A12: Core War systems are available via anonymous ftp from
soda.berkeley.edu in the pub/corewar/systems directory. Currently, there are
UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available
there. It is a good idea to check pub/corewar/incoming for program updates
first.
CAUTION! There are many, many Core War systems available which are NOT
ICWS'88 (or even ICWS'86) compatible available at various archive sites
other than soda.berkeley.edu. Generally, the older the program - the less
likely it will be ICWS compatible.
Reviews of Core War systems would be greatly appreciated in the newsgroup
and in the newsletter.
Below is a not necessarily complete or up-to-date list of what's available
at soda:
MADgic41.lzh - corewar for the Amiga, v4.1
MAD4041.lzh - older version?
MAD50B.lha - corewar for the Amiga, beta version 5.0
Redcoder-21.hqx - corewar for the Mac, supports ICWS'88 and '94
core-11.hqx - corewar for the Mac
core-wars-simulator.hqx - same as core-11.hqx?
corewar_unix_x11.tar.Z - corewar for UNIX/X-windows, ICWS'86 but
not ICWS'88 compatible
koth31.tar.Z - corewar for UNIX/X-windows. This program ran the
former KotH server at intel.com
koth.shar.Z - older version
kothpc.zip - port of older version of KotH to the PC
deluxe20c.tar.Z - corewar for UNIX (broken X-windows or curses) and PC
mars.tar.Z - corewar for UNIX, likely not ICWS'88 compatible
icons.zip - corewar icons for MS-Windows
macrored.zip - a redcode macro-preprocessor (PC)
c88v49.zip - PC corewar, textmode display
mars88.zip - PC corewar, graphics mode display
corwp302.zip - PC corewar, textmode display, slowish
mercury2.zip - PC corewar written in assembly, fast!
mtourn11.zip - tournament scheduler for mercury (req. 4DOS)
pmars06s.zip - portable system, ICWS'88 and '94, runs on UNIX,
PC, Mac, Amiga. C source archive
pmars06s.tar.Z - same as above
pmars06.zip - PC executables with graphics display, req 386+
macpmars02.sit.hqx - pMARS executable for Mac (port of version 0.2)
ApMARS03.lha - pMARS executable for Amiga (port of version 0.3.1)
wincor11.zip - MS-Windows system, shareware ($15)
----------------------------------------------------------------------
Q13: I do not have ftp. How do I get all of this great stuff?
A13: There is an ftp email server at ftpmail@decwrl.dec.com. Send
email with a subject and body text of "help" (without the quotes) for
more information on its usage. If you don't have access to the net at all,
send me a 3.5 '' diskette in a self-addressed disk mailer with postage and
I will mail it back with an image of the Core War archives in PC format.
My address is at the end of this post.
----------------------------------------------------------------------
Q14: I do not have access to Usenet. How do I post and receive news?
A14: To receive rec.games.corewar articles by email, join the COREWAR-L
list run on the Stormking.Com ListProcessor. To join, send:
SUB COREWAR-L FirstName LastName
to:
LISTPROC@STORMKING.COM
You can send mail to corewar-l@stormking.com to post even if you are not
a member of the list. Responsible for the listserver is Scott J. Ellentuch
(tuc@stormking.com).
Another server that allows you to post (but not receive) articles is
available. Email your post to rec-games-corewar@cs.utexas.edu and it will be
automatically posted for you.
----------------------------------------------------------------------
Q15: When is the next tournament?
A15: The ICWS holds an annual tournament. Traditionally, the deadline
for entering is the 15th of December.
The EBS usually holds a preliminary tournament around the 15th of November
and sends the top finishers on to the ICWS tournament.
Informal double-elimination tournaments are held frequently among readers of
the newsgroup; watch there for announcements or contact me.
----------------------------------------------------------------------
Q16: What is KotH? How do I enter?
A16: King Of The Hill (KotH) is an ongoing Core War tournament
available to anyone with email. You enter by submitting via email a Redcode
program with special comment lines. You will receive a reply indicating how
well your program did against the current top twenty programs "on the hill".
Your program will play 100 battles against each of the 20 other programs
currently on the Hill. You receive 3 points for each win and 1 point for each
tie. (The existing programs do not replay each other, but their previous
battles are recalled.) All scores are updated to reflect your battles and all
21 programs are ranked from high to low. If you are number 21 you are pushed
off the Hill, if you are higher than 21 someone else is pushed off.
The original KotH was developed and run by William Shubert at Intel, and
discontinued after almost three years of service. Currently, KotHs based on
Bill's UNIX scripts but offering a wider variety of hills are are running at
two sites: "koth@stormking.com" is maintained by Scott J. Ellentuch
(tuc@stormking.com) and "pizza@ecst.csuchico.edu" by Thomas H. Davies
(sd@ecst.csuchico.edu). Both KotHs provide very similar services and are
therefore covered together. The principal difference is that "pizza" has a
much faster internet connection than "stormking".
Entry rules for King of the Hill Corewar:
1) Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that
a comma (",") is required between two arguments.
2) Put a line starting with ";redcode" at the top of your program.
This MUST be the first line. Anything before it will be lost. If
you wish to receive mail on every new entrant, use ";redcode
verbose". Otherwise you will only receive mail if a challenger
makes it onto the hill. Use ";redcode quiet" if you wish to
receive mail only when you get shoved off the hill. (Also, see 5
below).
Additionally, adding ";name " and ";author "
will be helpful in the performance reports. Do NOT have a line
beginning with ";address" in your code; this will confuse the mail daemon
and you won't get mail back.
In addition, it would be nice if you have lines beginning with
";strategy" that describe the algorithm you use.
There are currently six separate hills you can select by starting your
program with ;redcode, ;redcode-x, ;redcode-icws, ;redcode-b, ;redcode-94,
or ;redcode-94x. More information on these hills is listed below.
3) Mail this file to "koth@stormking.com" or "pizza@ecst.csuchico.edu".
"Pizza" requires a subject of "koth" (use the -s flag on most mailers).
4) Within a few minutes (or the next day for "stormking") you should get mail
back telling you whether your program assembled correctly or not. If it
did assemble correctly, sit back and wait; if not, make the change
required and re-submit.
5) In an hour or so (or the next day for "stormking") you should get more
mail telling you how your program performed against the current top 20
programs. If no news arrives during that time, don't worry; entries are
put in a queue and run through the tournament one at a time. A backlog
may develop. Be patient.
If your program makes it onto the hill, you will get mail every time a
new program makes it onto the hill. If this is too much mail, you can use
";redcode quiet" when you first mail in your program; then you will only
get mail when you make it on the top 20 list or when you are knocked off.
Using ";redcode verbose" will give you even more mail; here you get mail
every time a new challenger arrives, even if they don't make it onto the
top 20 list.
Often programmers want to try out slight variations in their programs.
If you already have a program named "foo V1.0" on the hill, adding the
line ";kill foo" to a new program will automatically bump foo 1.0 off the
hill. Just ";kill" will remove all of your programs when you submit the
new one. The server kills programs by assigning an impossibly low score;
it may therefore take another successful challenge before a killed program
is actually removed from the hill.
SAMPLE ENTRY:
;redcode
;name Dwarf
;author A. K. Dewdney
;strategy Throw DAT bombs around memory, hitting every 4th memory cell.
;strategy This program was presented in the first Corewar article.
bomb DAT #0
dwarf ADD #4, bomb
MOV bomb, @bomb
JMP dwarf
END dwarf ; Programs start at the first line unless
; an "END start" pseudo-op appears to indicate
; the first logical instruction. Also, nothing
; after the END instruction will be assembled.
Here are the Specs for the various hills:
ICWS'88 Standard Hill Specs: (Accessed with ";redcode", available at
"stormking" and "pizza")
coresize: 8000
max. processes: 8000
duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
minimum distance: 100
instruction set: ICWS '88
ICWS Annual Tournament Hill Specs: (Accessed with ";redcode-icws",
available at "stormking" only)
coresize: 8192 instructions
max. processes: 8000 per program
duration: After 100,000 cycles, a tie is declared.
max. entry length: 300
minimum distance: 300
instruction set: ICWS '88
ICWS'88 Experimental (Small) Hill Specs: (Accessed with ";redcode-x",
available at "pizza" only)
coresize: 4096
max. processes: 32
duration: after 65,536 cycles, a tie is declared.
max. entry length: 64
minimum distance: 64
instruction set: ICWS '88
ICWS'94 Draft Hill Specs: (Accessed with ";redcode-94", available at
"stormking" and "pizza")
coresize: 8000
max. processes: 8000
duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
minimum distance: 100
instruction set: ICWS '94 Draft
ICWS'94 Beginner's Hill Specs: (Accessed with ";redcode-b", available
at "pizza" only)
coresize: 8000
max. processes: 8000
duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
minimum distance: 100
instruction set: ICWS '94 Draft
ICWS'94 Experimental (Big) Hill Specs: (Accessed with ";redcode-94x",
available at "stormking" and "pizza")
coresize: 55440
max. processes: 10000
duration: after 500,000 cycles, a tie is declared.
max. entry length: 200
minimum distance: 200
instruction set: ICWS '94 Draft
If you just want to get a status report without actually challenging the
hills, send email with ";status" as the message body (and don't forget
"Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject:
koth help" you will receive instructions that may be more up to date than
those contained in this document.
All hills run portable MARS (pMARS) version 0.6, a platform-independent
corewar system available at soda (see Q12).
The '94 and '94x hills allow three experimental opcodes and
addressing modes currently not covered in the ICWS'94 draft document:
SEQ - Skip if EQual (synonym for CMP)
SNE - Skip if Not Equal
NOP - (No OPeration)
* - indirect using A-field as pointer
{ - predecrement indirect using A-field
} - postincrement indirect using A-field
----------------------------------------------------------------------
Q17: Is it DAT 0, 0 or DAT #0, #0? How do I compare to core?
A17: Core is initialized to DAT 0, 0. This is an "illegal" instruction
under ICWS'88 rules and strictly compliant assemblers (such as KotH or
pmars -8) will not let you write a DAT 0, 0 instruction - only DAT #0, #0.
So this begs the question, how to compare something to see if it is empty
core. The answer is, most likely the instruction before your first
instruction and the instruction after your last instruction are both DAT
0, 0. You can use them, or any other likely unmodified instructions, for
comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction.
----------------------------------------------------------------------
Q18: How does SLT (Skip if Less Than) work?
A18: SLT gives some people trouble because of the way modular arithmetic
works. It is important to note that all negative numbers are converted
to positive numbers before a battles begins. Example: (-1) becomes
(M - 1) where M is the memory size.
Once you realize that all numbers are treated as positive, it is clear
what is meant by "less than". It should also be clear that no number is
less than zero.
----------------------------------------------------------------------
Q19: What does (expression or term of your choice) mean?
A19: Here is a selected glossary of terms. If you have a definition and/or
term you wish to see here, please send it to me.
(References to an X-like program mean that the term X is derived from the
specific program X and has become a generic term).
Bootstrapping - Strategy of copying the active portion of the program
away from the initial location, leaving a decoy behind and
making the relocated program as small as possible.
B-Scanners - Scanners which only recognize non-zero B-fields.
example add #10,scan
scan jmz example,10
C - Measure of speed, equal to one location per cycle. Speed of light.
CMP-Scanner - A Scanner which uses a CMP instruction to look for opponents.
example add step,scan
scan cmp 10,30
jmp attack
jmp example
step dat #20,#20
Color - Property of bombs making them visible to scanners, causing them
to attack useless locations, thus slowing them down.
example dat #100
Core-Clear - code that sequentially overwrites core with DAT instructions;
usually the last part of a program.
Decoys - Bogus or unused instructions meant to slow down Scanners.
Typically, DATs with non-zero B-fields.
DJN-Stream (also DJN-Train) - Using a DJN command to rapidly decrement core
locations.
example . . .
. . .
djn example,<4000
Dwarf - the prototypical small bomber.
Gate-busting - (also gate-crashing) technique to "interweave" a
decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard
one to overrun imp-gates.
Hybrids - warriors that combine two or more of the basic strategies,
either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone).
Imp - Program which only uses the MOV instruction.
example MOV 0, 1
or
example MOV 0, 2
MOV 0, 2
Imp-Gate - A location in core which is bombed or decremented continuously
so that an Imp can not pass. Also used to describe the program-code
which maintains the gate.
example ...
...
SPL 0,