[comp.misc] CORE WAR inquiry- has any =one heard of this thing?

dirk@laplace (dirksen bussiere) (05/29/91)

Around two years ago in SCIENTIFIC AMERICAN there was an article on a  
programming "game" known as CORE WARS.  The object seemed to be the creation of  
sentient programs that went around trying to trash one another.  Has anyone  
heard of this "game"?  If so, do you know where I can get ahold of the rules  
and the programs used to create the "programming environment".  My E-mail  
address is DIRK%HHVMS8@VENUS.YCC.YALE.EDU  .    Thank a lot.

                                  -Dirk Bussiere

gray@s5000.rsvl.unisys.com (Bill Gray x2128) (05/30/91)

dirk@laplace (dirksen bussiere) writes:

>Around two years ago in SCIENTIFIC AMERICAN there was an article on a  
>programming "game" known as CORE WARS. . .  Has anyone heard of this "game"?

>                                  -Dirk Bussiere

I read about it once a long time ago. . .  I think Nixon was president.

You have (at least) two small code warriors.  They alternate turns.  On each
turn, a code warrior a.) writes a prescribed amount of garbage into any
core location(s) it desires, and b.) copies itself into another location (if
it thinks that is a good tactical move).

Game is over when one code warrior overwrites enough of the other to disable
it.

The consequences of play on a production system are left as an exercise
for the reader.


Bill
-- 
: gray@rsvl.unisys.com                      :  If you think the Brady Bill     :
:                                           :  will reduce crime, I have a     :
: Unisys has enough problems without being  :  trout farm in Death Valley you  :
: blamed for my personal opinions.          :  may be interested in.           :

michaelb@wshb.csms.com ( WSHB Operations Eng) (05/31/91)

In article <194@s5000.rsvl.unisys.com> gray@s5000.rsvl.unisys.com (Bill Gray x2128) writes:
>dirk@laplace (dirksen bussiere) writes:
>
>>Around two years ago in SCIENTIFIC AMERICAN there was an article on a  
>>programming "game" known as CORE WARS. . .  Has anyone heard of this "game"?
>
>>                                  -Dirk Bussiere
>
>I read about it once a long time ago. . .  I think Nixon was president.

I saw another article about Core Wars about 5 months ago for something called
a "Core Wars Standard" which was to be compiled and made available.
I kept a copy of the article for a while and sent mail to the address,
but nothing was ever forthcoming. (Sorry, I can't find the address now.)
I seem to remember that the idea was a standardized set of op codes for a 
virtual CPU. The fact that the opponants were supposed to write their code 
in the machine language of the virtual CPU attests to the age of the idea. 

(I suppose there isn't any reason that an assembler for the opcodes couldn't 
be written. Then someone could write a c++ compiler for the thing, also. 
After that we could use the c++ compiler to port SVR4 to the virtual CPU. 
.... Guess that's getting a little carried away :-)) 

Anyway, the idea was that a standard would exist so I could 
develop my code on a Motorola box, you could develop yours on an Intel
box, and someone could have a contest on just any old box with everyone's
entry working correctly. This is beginning to sound like the chess program
tournaments.

Michael
-- 
Michael Batchelor--Systems/Operations Engineer #compliments and complaints
WSHB - An International Broadcast Station of   #   letterbox@csms.com
 The Christian Science Monitor Syndicate, Inc. #technical questions and reports
michaelb@wshb.csms.com         +1 803 625 5552 #   letterbox-tech@csms.com

kells@daimi.aau.dk (Kell S|nnichsen) (06/01/91)

dirk@laplace (dirksen bussiere) writes:

>Around two years ago in SCIENTIFIC AMERICAN there was an article on a  
>programming "game" known as CORE WARS.  The object seemed to be the creation of  
>sentient programs that went around trying to trash one another.  Has anyone  
>heard of this "game"?  If so, do you know where I can get ahold of the rules  
>and the programs used to create the "programming environment". My E-mail  
>address is DIRK%HHVMS8@VENUS.YCC.YALE.EDU  .    Thank a lot.

>                                  -Dirk Bussiere

Your E-mail address doesn't work!!

In february someone posted an article about COREWARS. I stored
it and for Dirk and other people interested, here it is:

-----------------------------oOo----------------------------------


Foreword:
In a Core War battle two programs written in the 
pseudo-assembly language REDCODE are run against each other 
on a simulation enviroment called MARS (Memory Array 
Redcode Simulator). The aim of each program is to bomb its 
opponent. Obviously the Warrior that survives and kills its 
foe first is the winner. The thrill of the game is, that 
many possible strategies such as defensive, self-repairing, 
small-but-quick and others can be programmed and of course 
it's great fun to compare your own warriors with those of 
your friends!

Disclaimer: Core War is not in the slightest way viruslike!



          The Core War Standards '88

                Proposed by
      The International Core War Society
               July 30, 1990
                  (Draft)

From the Redcode programmer's point of view, MARS is 
composed of four primary units: a read/write memory (RAM), 
a computing unit (ALU), two process cues (FIFO's), and the 
control unit (CU). There are no registers visible to the 
programmer; that is, memory is the only storage available 
for both instructions and data.

RAM: All Redcode instructions occupy exactly one memory 
location. Adressing in Redcode is relative, so it is best 
to think of memory as being composed as a circular list; an 
instructions that references memory adress zero is 
referring to itself. Every RAM location is initialised to 
the data pattern which corresponds to the instruction
'DAT 0 0' before loading any Core War Programs (elsewhere 
referred to as "warriors").

FIFO: A game of Core War is played by pitting two Redcode 
programs against eachother. Each attempts to force the 
other to fail by causing it to execute a "halt" 
instruction, (the DAT). During each machine cycle one 
instruction from each program is executed, always in the 
same order. It is thus necessary to maintain a program 
counter for each side. This is the purpose of the process 
queues. As will be seen, each side may consist of more than 
one process. This is why a FIFO and not a single register 
is necessary for each side. There are no upper or lower 
limits to the size of the FIFO's, save the minimum of one 
each, as battles cannot occur with less than two Core War 
programs.

ALU: The computing unit performs all the arithmetic and 
logical operations required by the Redcode instruction set, 
and the Control Unit, such as adding two operands or 
incrementing a program counter.

CU: As in any processor, the control unit has the 
responsibility of fetching, decoding and executing 
instructions. The control unit must also provide an 
interface to the MARS supervisor function (ZEUS). The 
supervisor may provide various support functions such as a 
Redcode debugger, graphics display, parameter control, 
etc., and is highly implementation specific.

Instruction Format:

A Redcode instruction has three fields: the opcode field 
and two operand fields, denoted as A and B. the contents of 
the opcode field specify the operation to be performed, and 
the adressing modes to be used in evaluating the operands. 
The operand fields may contain any number from zero to the 
memory size minus one. Currently, eleven Redcode 
instructions are defined. They are listed below, with a 
mnemonic and a short description for each.

DAT A B : remove executing process from process queue
MOV A B : move A to B
ADD A B : add A to B
SUB A B : subtract A from B
JMP A B : jump to A
JMZ A B : jump to A if B is zero
JMN A B : jump to A if B is not zero
CMP A B : if A equals B then skip the next instruction
SLT A B : if A is less than B then skip next instruction
DJN A B : decrement B; if B is not zero then jump to A
SPL A B : place A in the process queue

Adressing Modes:

There are currently four adressing modes defined: 
immediate, direct, indirect, and predecrement-indirect.
The default mode is direct. If no modifier symbol precedes 
an operand, the value of the operand is used as an offset 
from the memory location from which it was fetched. The 
resulting memory location is the source and/or destination 
of the data to be used by the instruction, or else is the 
destination for branching instructions.
An octothorpe (#) is used to introduce an immediate 
operand. The commemcial at sign (@) is used to introduce an 
indirect operand. The value of the operand is used as an 
offset, as it is with direct adressing. The B operand of 
the resulting memory adress is then used as an offset from 
the memory location from which it was fetched.
The less than sign (<) is used to introduce a predecrement 
indirect operand. The action is the same as with @ with the 
difference that the specified memory location is first 
decremented and then afterwards used as a pointer.

All theory is grey, here are some REDCODE examples:
(Mostly 8000 or 8192 is used as Core size and 20000-30000
as instruction maximum)

; Warrior Gnom

l: MOV p @p
   ADD #4 p
   JMP l
p: DAT p


; Warrior KISS

l:  MOV b1 <p
    MOV b2 <p
    JMN l p
    MOV #-16 p
z:  MOV k <p
    JMN z p
    MOV #-16 p
    JMP l
b1: JMP -1
b2: SPL 0
k:  DAT #0
p:  DAT #-16


; Warrior PLAGUE

   SPL k
   SPL k
l: ADD #24 p
   JMZ l @p
   MOV b @p
   MOV a <p
   ADD #1 p
   JMP l
   DAT #1
   DAT #2
   DAT #3
   DAT #4
p: DAT #5
k: MOV z <z
   JMP k
z: DAT #-16
b: JMP -1
a: SPL 0


-------------------------------oOo-----------------------------

``````````````````````````````````````'''''''''''''''''''''''''''''''''''''''''
    Kell S|nnichsen				Computer Science Dept.
    Aaboulevarden 59, 2. th.                    University of Aarhus.
    DK-8000  Aarhus C.                          
    Denmark					eMail: kells@daimi.aau.dk
    tlf.: 86 13 33 34

    Problems: 1) Things will never get back to normal.
	      2) They already have...

``````````````````````````````````````'''''''''''''''''''''''''''''''''''''''''

tczarnik@cup.portal.com (Tom A Czarnik) (06/02/91)

   I have an address, but the International Core War Society may have
moved. 
           Attn: William Buckley
           5712 Kern Drive
	   Huntington Beach, CA   92649-4535

From the reference source I have:

   Does the concept of worms and viruses fascinate you? There is a society 
of computer programmers just like you called the International Core Wars
Society (ICWS). They pit their programming skills in a game called Core 
Wars. CW is an outgrowth of a game called "Darwin" originally developed
in AT&T Bell Labs.
   CW works something like this: Two competitors write their own "warrior"
programs. These programs are loaded into a computer arena, or CW Coliseum.
The computer starts the game by equally dividing computer time between 
the two competitors.The two programs then compete for more computer time. 
A winner is declared when one program forces the computer to allot all of 
its time to that program. The other competitor is then "dead".
   In this anything-goes format, the software can reproduce, grab memory,
overwrite the other program or do just about anything it can to force the
other competitor out. These characteristics have direct analogies to worm
and virus programs.
   Does this sound like a childish game? Both the Soviet Academy of Science
and the Central Intelligence Agency don't think so; they are two in a long
and distinguished list of members. Annual competions are held that pit the
skills of some of the best programmers in the world

BTW: Bill Buckley is an expert on worms and viruses. He wrote the first worm
in 1985. And continues to write them for their educational value.


Tom Czarnik
tczarnik@cup.portal.com

asylvain@felix.UUCP (Alvin "the Chipmunk" Sylvain) (06/06/91)

Written in article <1991May29.150606.25121@cs.yale.edu>
    by dirk@laplace (dirksen bussiere):

> Around two years ago in SCIENTIFIC AMERICAN there was an article on a  
> programming "game" known as CORE WARS.  The object seemed to be the creation of  
> sentient programs that went around trying to trash one another.  Has anyone  
> heard of this "game"?  If so, do you know where I can get ahold of the rules  
> and the programs used to create the "programming environment".  My E-mail  
> address is DIRK%HHVMS8@VENUS.YCC.YALE.EDU  .    Thank a lot.

Heard of it, yes.  If no one else can help you, you can look up the
article in a library somewhere.  Get help from the Librarian if you have
to.  I wouldn't go so far as to call these programs "sentient," tho.
Some of the most effective ones proved to be the simplest, if I remember 
the article correctly.

I also wouldn't quote "game," because that's precisely what it is.  It
is not, as some would have you believe, the precursor to "viruses."
First off, the code is written in a pseudo-code, so real damage to the
machine or it's software is impossible.  This is natural, because how
else do you determine the winner?  Secondly, the game is played between
multiple players.  They write the software in the pseudo-code and load
it in the machine.  The player's who's entry grabs up the most core is
the winner.  Therefore, it's definately a game.

There are other versions available.  I know of one call "P-bots" or
something like that, where the players program the "robots" to destroy
each other in a software simulation.  The code for the "robots" is
similar to Pascal.  If you want to know where you can buy this, let 
me know.
--
Alvin ===== asylvain@felix.UUCP ===== hplabs!felix!asylvain ===== 
"hplabs!felix!asylvain"@uunet.uu.net
(I always try to respond to mail, if possible.  If you don't hear back 
from me, try changing "hplabs" to "ccicpg," "spsd," or "lawnet.")
DISCLAIMER: It's all in fun, folks, no flames intended.  Any similarity
between my opinion and that of my employer is purely coincidental and
sufficient reason to change my opinion, although I'll still be right.