Path: 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: <games/corewar-faq_764330571@rtfm.mit.edu>
Followup-To: rec.games.corewar
Date: 6 Apr 1994 11:13:06 GMT
Organization: The Core War Newsletter
Lines: 593
Approved: news-answers-request@MIT.Edu
Expires: 5 May 1994 11:12:37 GMT
Message-ID: <games/corewar-faq_765630757@rtfm.mit.edu>
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/01/10
Originator: faqserv@bloom-picayune.MIT.EDU
Xref: bloom-beacon.mit.edu rec.games.corewar:1333 rec.answers:4776 news.answers:17730

Archive-name: games/corewar-faq
Last-modified: 1994/01/03
Version: 2.1.5

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    108
    a copy of the current instruction set?

 5. What is this ICWS'94?                                            122

 6. What is the ICWS?                                                138

 7. What is TCWN?                                                    148

 8. How do I join?                                                   156

 9. Are back issues of TCWNs available?                              173

10. What is the EBS?                                                 180

11. Where are the Core War archives?                                 196

12. Where can I find a Core War system for . . . ?                   214

13. I do not have ftp.  How do I get all of this great stuff?        262

14. I do not have access to Usenet.  How do I post and receive news? 269

15. When is the next tournament?                                     287

16. What is KOTH?  How do I enter?                                   296

17. Is it DAT 0, 0 or DAT #0, #0?  How do I compare to core?         440

18. How does SLT (Skip if Less Than) work?                           452

19. What does (expression or term of your choice) mean?              464

20. Other questions?                                                 592

---------------------------------------------------------------------

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 an anthology:

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

The Redcode language has changed somewhat since; 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)

---------------------------------------------------------------------

Q 5: What is this 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.draft.Z). You can try out the new standard by
submitting warriors to the experimental '94 KotH server (see Q16).
pMARS, a corewar system that implements ICWS'94 is 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 in preparation for the tenth 
anniversary of Core War in May of 1994 (see Q 5).  Its immediate
business will be to set up a Charter and establish its officers.

----------------------------------------------------------------------

A11: Where is the Core War archive?
Q11: 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 X-Window, IBM PC-compatible (sorry, no systems
specifically designed for MS-Windows yet), Macintosh, and Amiga
Core War systems available there.

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-10.hqx - corewar for the Mac
        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 runs the
                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 (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)
        pmars03s.zip    - portable system, ICWS'88 and '94, runs on UNIX,
                        PC, Mac, Amiga. C source archive
        pmars03s.tar.Z  - same as above
        pmars03.zip     - PC executables, graphics display version
        macpmars02.sit.hqx - pMARS executable for Mac
        ApMARS03.lha    - pMARS executable for Amiga

----------------------------------------------------------------------

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.

----------------------------------------------------------------------

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.

----------------------------------------------------------------------

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 provided by William Shubert (wms@iwarp.intel.com).  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.

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 the line ";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 <program name>" and ";author <your name>"
   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.

3) Mail this file to "wms@iwarp.intel.com".

4) Within a few minutes 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 you should get more mail telling you how your program
   performed against the current top 20 programs.  If no news arrives in an
   hour, 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.


MORE ON KOTH COREWAR IMPLEMENTATION
       Core size: 8000 instructions
   Max processes: 8000 per program
        Duration: After 80,000 cycles, a tie is declared.
Max entry length: 100 instructions

   Programs are guaranteed a 100 instruction block (inclusive of their
   warrior's instructions) without overlapping their opponent.


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.

Rule variants for "eXperimental" corewar:
The same as above but use ";redcode-x" to start your program.

Your program will be entered into a second tournament with slightly
different rules.  The rules are:
   - All addressing modes are allowed with all instructions.
   - There is an additional addressing mode, called "postincrement".  To use
     it try an instruction like "mov >5,6".
   - The maximum write distance is 250 instructions.  That is, every time
     your program tries to modify memory, the address is checked; if it is
     more than 250 instructions from the process doing the modify, then
     memory is left unchanged, but the instruction continues as normal.
   - A tie is not declared until 150,000 cycles per program have elapsed.

KotH runs on any Unix system with an X windows interface.  The source code
to KotH is available by email from William Shubert.  Write to him at
(wms@iwarp.intel.com) for a copy or get it by anonymous FTP from
soda.berkeley.edu in the pub/corewar/systems directory (see Q12).


STORMKING.COM KOTH:

A second KotH server is installed at stormking.com. Send your warrior to 
koth@stormking.com. Since this is an UUCP site, it may take a day before you 
get results back. There are currently five separate hills that you can select 
by starting your program with ;redcode, ;redcode-x ;redcode-icws, 
;redcode-94, or ;redcode-94x. ;redcode and ;redcode-x select hills with
rules of the regular and experimental hills at intel.com (see above).

;redcode-icws sends your warrior to the ICWS-hill. Rules here follow that of
the annual ICWS tournament, in short:

       Core size: 8192 instructions
   Max processes: 64 per program
        Duration: After 100,000 cycles, a tie is declared.
Max entry length: 300 instructions

;redcode-94 selects the experimental ICWS'94 (see Q 5 for more on this
proposed new standard). Core size, Max processes, etc. are identical to the
regular hills at stormking and intel.com.

;redcode-94x selects the experimental '94 or simply "Big Hill". Here the core
size is 55440, a number with many small factors, that might lead to more
complex warriors. Like the '94 hill, the '94x hill supports the ICWS'94
dialect. Here all parameters:

       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

All hills at stormking.com except for the x-hill run portable MARS, a
platform-independent corewar system available at soda (see Q12).

The contact person is for this server is Scott J. Ellentuch
(tuc@stormking.com). Please send all bug reports, inquiries, etc. to him and
me (stst@vuse.vanderbilt.edu).

----------------------------------------------------------------------

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)
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.

----------------------------------------------------------------------

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.

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, <example
                     DAT <example, #0

Imp-Ring - A minimal Imp-Spiral.
            d        EQU (coresize+1)/3
            A        MOV 0,d   ; copy self to B
            B        MOV 0,d   ; copy self to C
            C        MOV 0,d   ; copy self to A+1

Imp-Spiral - An Imp-like program with two or more processes supporting
   each other.  A three-point spiral, with six processes running in this
   sequence:
            d        EQU (coresize+1)/3
            A        MOV 0,d   ; copy self to B
            B        MOV 0,d   ; copy self to C
            C        MOV 0,d   ; copy self to A+1
            A+1      MOV 0,d   ; copy self to B+1
            B+1      MOV 0,d   ; copy self to C+1
            C+1      MOV 0,d   ; copy self to A+2

Incendiary Bomb - A type of Stun bomb which creates a SPL 0 carpet.
           example   SPL 0, 8
                     MOV -1, <-1

Mirror - see reflection

On-axis  -
Off-axis - On-axis scanners compare two locations M/2 apart, where M
   is the memory size.  Off-axis scanners use some other separation.

Paper - A Paper-like program.  One which replicates itself many times.
   Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy.

Pit-Trapper - (also Slaver, Vampire).  A program which enslaves another.
   Usually accomplished by bombing with JMPs to a SPL 0 pit with an
   optional core-clear routine.

Reflection - Copy of a program or program part, positioned to make
   the active program invisible to a CMP-scanner.

Replicator - Generic for Paper.  A program which makes many copies of
   itself, each copy also making copies.

Self-Splitting - Strategy of amplifying the number of processes executing
   a piece of code.
           example   SPL 0
           loop      ADD #10, example
                     MOV example, @example
                     JMP loop

Scanner - A program which searches through core for an opponent rather
   than bombing blindly.

Scissors - A program designed to beat replicators, usually a (B-field
   scanning) vampire.  Part of the Paper-Scissors-Stone analogy.

Self-Repair - Ability of a program to fix it's own code after attack.

Slaver - see Pit-Trapper.

Stealth - Property of programs, or program parts, which are invisible
   to scanners, accomplished by using zero B-fields and reflections.

Stone - A Stone-like program designed to be a small bomber.  Part of the
   Paper-Scissors-Stone analogy.

Stun - A type of bomb which makes the opponent multiply useless processes,
   thus slowing it down.  Example is referred to as a spl-jmp bomb.
          example spl 0
                  jmp -1

Vampire - See Pit-Trapper.

----------------------------------------------------------------------

Q20: Other questions?
A20: Just ask in the rec.games.corewar newsgroup or contact me (address
below). If you are shy, check out the Core War archives on soda first to
see if your question has been answered before (see Q11).

----------------------------------------------------------------------

Additions/Corrections/etc. to this document are solicited.
The rec.games.corewar FAQ has been started by Mark Durham and is being
maintained by:

Stefan Strack, PhD                      stst@vuse.vanderbilt.edu
Dept. Pharmacology, 424 MRB             stracks@vuctrvax.bitnet
Vanderbilt Univ. Medical Center         Voice: +615-322-4890
Nashville, TN 37232-6600, USA           FAX:   +615-343-6532
