Core War FAQ (e)

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)
Date: 9 Jun 1995 14:45:26 GMT
Message-ID: 
Followup-To: rec.games.corewar
Reply-To: stst@vuse.vanderbilt.edu (Stefan Strack)
Organization: The Core War Newsletter
Expires: 8 Jul 1995 14:44:53 GMT
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.
Approved: news-answers-request@MIT.Edu
Lines: 968
Supersedes: 
NNTP-Posting-Host: bloom-picayune.mit.edu
X-Last-Updated: 1995/06/02
Notice: This is the plain text, not the html version of the FAQ
Originator: faqserv@bloom-picayune.MIT.EDU

Archive-name: games/corewar-faq
Last-Modified: 95/05/30
Version: 3.2

   These are the Frequently Asked Questions (and answers) from the Usenet
   newsgroup rec.games.corewar. A plain text version of this document is
   posted every two weeks. The hypertext version is available as
   
     _________________________________________________________________
   
Table of Contents

    1. What is Core War
    2. Is it Core War or Core Wars?
    3. Where can I find more information about Core War?
    4. Core War has changed since Dewdney's articles. Where do I get a
       copy of the current instruction set?
    5. What is ICWS'94? Which simulators support ICWS'94?
    6. What is the ICWS?
    7. What is TCWN?
    8. How do I join?
    9. What is the EBS?
   10. Where are the Core War archives?
   11. Where can I find a Core War system for ...?
   12. I do not have FTP. How do I get all this great stuff?
   13. I do not have access to Usenet. How do I post and receive news?
   14. Are there any Core War related WWW sites?
   15. When is the next tournament?
   16. What is KotH? How do I enter?
   17. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core?
   18. How does SLT (Skip if Less Than) work?
   19. What is the difference between in-register and in-memory
       evaluation?
   20. What does (expression or term of your choice) mean?
   21. Other questions?
       
   
     _________________________________________________________________
   
What is Core War?

   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 processes of the
   opposing program 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.
   
   [ToC]
     _________________________________________________________________
   
Is it "Core War" or "Core Wars"?

   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.
   
   [ToC]
     _________________________________________________________________
   
Where can I find more information about Core War?

   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.
   
   [ToC]
     _________________________________________________________________
   
Core War has changed since Dewdney's articles. Where do I get a copy of the
current instruction set?

   A draft of the official standard (ICWS'88) is available as
    . This document is formatted awkwardly and contains
   ambiguous statements. For a more approachable intro to Redcode, take a
   look at Mark Durham's tutorial,
   
   and
   .
   
   
   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@csua.berkeley.edu) is reportedly working on a
   beginner's introduction.
   
   [ToC]
     _________________________________________________________________
   
What is ICWS'94? Which simulators support ICWS'94?

   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. You can try out the new standard by
   submitting warriors to the '94 hills of the KotH servers. Two corewar
   systems currently support ICWS'94, pMARS (many platforms) and Redcoder
   (Mac), both available at ftp.csua.berkeley.edu.
   
   [ToC]
     _________________________________________________________________
   
What is the ICWS?

   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).
   
   [ToC]
     _________________________________________________________________
   
What is TCWN?

   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 files.
   
   [ToC]
     _________________________________________________________________
   
How do I join?

   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.
   
   [ToC]
     _________________________________________________________________
   
What is the EBS?

   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.
   
   [ToC]
     _________________________________________________________________
   
Where are the Core War archives?

   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
   
   (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@csua.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.
   
   The plain text version of this FAQ is automatically archived by
   news.answers.
   
   [ToC]
     _________________________________________________________________
   
Where can I find a Core War system for . . . ? 

   Core War systems are available via anonymous ftp from
   ftp.csua.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
    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 ftp.csua.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 ftp.csua.berkeley.edu:
   

    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 (without
                      extensions)
    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)
    pmars07s.zip    - portable system, ICWS'88 and '94, runs on UNIX,
                      PC, Mac, Amiga. C source archive
    pmars07s.tar.Z  - same as above
    pmars07.zip    - PC executables with graphics display, req 386+
    macpmars02.sit.hqx - pMARS executable for Mac (port of version 0.2)
                      buggy, no display
    MacpMARS.10.cpt.hqx - port of v0.6 for the Mac, with display and
                      debugger
    MacpMARS.10s.cpt.hqx - C source (MPW, ThinkC) for Mac frontend
    ApMARS03.lha    - pMARS executable for Amiga (port of version 0.3.1)
    wincor11.zip    - MS-Windows system, shareware ($15)

   
   
   [ToC]
     _________________________________________________________________
   
I do not have FTP. How do I get all this great stuff? 

   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.
   
   [ToC]
     _________________________________________________________________
   
I do not have access to Usenet. How do I post and receive news?

   To receive rec.games.corewar articles by email, join the COREWAR-L
   list run on the Stormking.Com list processor. To join, send the
   message

        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.
   
   [ToC]
     _________________________________________________________________
   
Are there any Core War related WWW sites?

   You bet. Each of the two KotH sites sport a world-wide web server.
   Stormking's Core War page is ;
   pizza's is  . A third
   WWW site is in Koeln, Germany:
   . Last but
   not least, Stephen Beitzel's "Unofficial Core War Page" is
   .
   All site are in varying stages of construction, so it would be futile
   to list here what they have to offer.
   
   [ToC]
     _________________________________________________________________
   
When is the next tournament?

   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 and other types of tournaments are held
   frequently among readers of the newsgroup; watch there for
   announcements or contact me.
   
   [ToC]
     _________________________________________________________________
   
What is KotH? How do I enter?

   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
   (warrior) with special comment lines. You will receive a reply
   indicating how well your program did against the current top programs
   "on the hill".
   
   There are two styles of KotH tournaments, "classical" and
   "multi-warrior". The "classical" KotH is a one-on-one tournament, that
   is your warrior 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.
   
   In "multi-warrior" KotH, all warriors on the hill fight each other at
   the same time. Score calculation is a bit more complex than for the
   one-on-one tournament. Briefly, points are awarded based on how many
   warriors survive until the end of a round. A warrior that survives by
   itself gets more points than a warrior that survives together with
   other warriors. Points are calculated from the formula (W*W-1)/S,
   where W is the total number of warriors and S the number of surviving
   warriors. The pMARS documentation has more information on
   multi-warrior scoring.
   
   The idea for an email-based Core War server came from David Lee. The
   original KotH was developed and run by William Shubert at Intel
   starting in 1991, 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). Up until May '95, the two sites provided
   overlapping services, i.e. the some of the hill types were offered by
   both "pizza" and "stormking". To conserve resources, the different
   hill types are now divided up among the sites. The way you submit
   warriors to both KotHs is pretty much the same. Therefore, the entry
   rules described below apply to both "pizza" and "stormking" unless
   otherwise noted.
   
   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" (or ";redcode-94, etc., see
   below) 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 seven separate hills you can select by starting
   your program with ;redcode-b, ;redcode-94, ;redcode-94x, ;redcode,
   ;redcode-icws, ;redcode-94m or ;redcode-94xm. The former three run at
   "pizza", the latter four at "stormking". 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 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 (or 10) 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")
         hillsize: 20 warriors
           rounds: 100
         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")
         hillsize: 20 warriors
           rounds: 100
         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'94 Draft Hill Specs: (Accessed with ";redcode-94", available at
"pizza")
         hillsize: 20 warriors
           rounds: 100
         coresize: 8000
   max. processes: 8000
         duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
 minimum distance: 100
  instruction set: extended ICWS '94 Draft

ICWS'94 Beginner's Hill Specs: (Accessed with ";redcode-b", available
at "pizza")
         hillsize: 20 warriors
           rounds: 100
         coresize: 8000
   max. processes: 8000
         duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
 minimum distance: 100
  instruction set: extended ICWS '94 Draft
         max. age: after 100 successful challenges, warriors are retired.

ICWS'94 Experimental (Big) Hill Specs: (Accessed with ";redcode-94x",
available at "pizza")
         hillsize: 20 warriors
           rounds: 100
         coresize: 55440
   max. processes: 10000
         duration: after 500,000 cycles, a tie is declared.
max. entry length: 200
 minimum distance: 200
  instruction set: extended ICWS '94 Draft

ICWS'94 Draft Multi-Warrior Hill Specs: (Accessed with ";redcode-94m",
available at "stormking")
         hillsize: 10 warriors
           rounds: 200
         coresize: 8000
   max. processes: 8000
         duration: after 80,000 cycles, a tie is declared.
max. entry length: 100
 minimum distance: 100
  instruction set: extended ICWS '94 Draft

ICWS'94 Experimental (Big) Multi-Warrior Hill Specs:
(Accessed with ";redcode-94xm", available at "stormking")
         hillsize: 20 warriors
           rounds: 100
         coresize: 55440
   max. processes: 10000
         duration: after 500,000 cycles, a tie is declared.
max. entry length: 200
 minimum distance: 200
  instruction set: extended 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.
   
   At stormking, a message body with ";help" will return brief
   instructions. If you submit code containing a ";test" line, your
   warrior will be assembled but not actually pitted against the warriors
   on the hill.
   
   All hills run portable MARS (pMARS) version 0.7, a
   platform-independent corewar system available at
   ftp.csua.berkeley.edu.
   
   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

   
   
   [ToC]
     _________________________________________________________________
   
Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 

   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.
   
   [ToC]
     _________________________________________________________________
   
How does SLT (Skip if Less Than) work?

   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.
   
   [ToC]
     _________________________________________________________________
   
What is the difference between in-register and in-memory evaluation?

   These terms refer to the way instruction operands are evaluated. The
   '88 Redcode standard ICWS'88 is unclear about whether a simulator
   should "buffer" the result of A-operand evaluation before the
   B-operand is evaluated. Simulators that do buffer are said to use
   in-register evaluation, those that don't, in-memory evaluation.
   ICWS'94 clears this confusion by mandating in-register evaluation.
   Instructions that execute differently under these two forms of
   evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective
   address of the A-operand is modified by evaluation of the B-operand.
   This is best illustrated by an example:

   L1  mov b, mov.i #0,impsize

   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,  mov.i #0,impsize

   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.
          
   Optimal Constants
          (also optima-type constants) Bomb or scan increments chosen to
          cover core most effectively, i.e. leaving gaps of uniform size.
          Programs to calculate optimal constants and lists of optimal
          numbers are available at ftp.csua.berkeley.edu.
          
   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.
          
   Quick Scan
          2c scan of a set group of core locations with bombing if
          anything is found. Both of the following codes snips scan 16
          locations and check for a find. If anything is found, it is
          attacked, otherwise 16 more locations are scanned. Example:
          

     start
     s1 for 8    ;'88 scan
            cmp  start+100*s1, start+100*s1+4000  ;check two locations
            mov  #start+100*s1-found, found  ;they differ so set pointer
     rof
            jmn  attack,     found     ;if we have something, get it
     s2 for 8
            cmp  start+100*(s2+6), start+100*(s2+6)+4000
            mov  #start+100*(s2+6)-found, found
     rof
     found  jmz  moveme,  #0        ;skip attack if qscan found nothing
     attack cmp  @found,  start-1   ;does found points to empty space?
            add  #4000,   found     ;no, so point to correct location
            mov  start-1, @found    ;move a bomb
     moveme jmp  0,       0

   In ICWS'94, the quick scan code is more compact because of the SNE
          opcode:
          


     start       ;'94 scan
     s1 for 4
            sne  start+400*s1, start+400*s1+100  ;check two locations
            seq  start+400*s1+200, start+400*s1+300  ;check two locations
            mov  #start+400*s1-found, found  ;they differ so set pointer
     rof
            jmn  which,   found     ;if we have something, get it
     s2 for 4
            sne  start+400*(s2+4), start+400*(s2+4)+100
            seq  start+400*(s2+4)+200, start+400*(s2+4)+300
            mov  #start+400*(s2+4)-found-100, found
     rof
     found  jmz  moveme,  #0        ;skip attack if qscan found nothing
            add  #100,    -1        ;increment pointer till we get the
     which  jmn  -1,      @found    ;right place
            mov  start-1, @found    ;move a bomb
     moveme jmp  0,       0

   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.
          
   Silk
          A replicator which splits off a process to each new copy before
          actually copying the code. This allows it to replicate
          extremely quickly. This technique is only possible under the
          '94 draft, because it requires post-increment indirect
          addressing. Example:
          

                spl     1
                mov.i   -1,     0
                spl     1               ;generate 6 consecutive processes
    silk        spl     3620,   #0      ;split to new copy
                mov.i   >-1,    }-1     ;copy self to new location
                mov.i   bomb,   >2000   ;linear bombing
                mov.i   bomb,   }2042   ;A-indirect bombing for anti-vamp
                jmp     silk,   {silk   ;reset source pointer, make new copy
    bomb        dat.f   >2667,  >5334   ;anti-imp bomb

   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

   Two-Pass Core-Clear (also spl/dat Core-Clear)
          core clear that fills core first with SPL instructions, then
          with DATs. This is very effective in killing paper and certain
          imp-spiral variations.
          
   Vampire
          see Pit-Trapper.
          
   Vector Launch
          one of several means to start an imp-spiral running. As fast as
          Binary Launch, but requiring much less code. See also JMP/ADD
          Launch and Binary Launch. This example is one form of a Vector
          Launch:
          

    impsize   equ 2667
    example   spl 1                       ; extend by adding more spl 1's
              spl 1
              djn.a   @imp,#0             ; jmp @ a series of pointers
              dat     #0,imp+(3*impsize)
              dat     #0,imp+(2*impsize)
              dat     #0,imp+(1*impsize)
              dat     #0,imp+(0*impsize)
    imp       mov.i   #0,impsize

   
   
   [ToC]
     _________________________________________________________________
   
Other questions?

   Just ask in the rec.games.corewar newsgroup or contact me (address
   below). If you are shy, check out the Core War archives first to see
   if your question has been answered before.
   
   [ToC]
     _________________________________________________________________
   
Credits

   Additions, corrections, etc. to this document are solicited. Thanks in
   particular to the following people who have contributed major portions
   of this document: Paul Kline, Randy Graham.
   Mark Durham wrote the first version of the FAQ.
   
   The rec.games.corewar FAQ is Copyright 1995 and maintained by:
   

Stefan Strack, PhD                          stst@vuse.vanderbilt.edu
Institute for Developmental Neuroscience    stst@idnsun.gpct.vanderbilt.edu
Box 152 GPC                                 stracks@vuctrvax.bitnet
Vanderbilt University                       Voice: +615-343-0238
Nashville, TN 37203, USA                    FAX:   +615-343-0242

   
     _________________________________________________________________
   
   $Id: corewar-faq.html,v 3.2 1995/05/22 03:10:41 stst Exp stst $