Article 1754 of rec.games.corewar:
Path: hellgate.utah.edu!dog.ee.lbl.gov!network.ucsd.edu!usc!cs.utexas.edu!not-for-mail
From: wsheppar@st6000.sct.edu (Wayne Sheppard)
Newsgroups: rec.games.corewar
Subject: Subtraction coreclear
Date: 15 Apr 1993 01:43:03 -0500
Organization: UTexas Mail-to-News Gateway
Lines: 42
Sender: daemon@cs.utexas.edu
Message-ID: <9304150640.AA32984@st6000.sct.edu>
NNTP-Posting-Host: cs.utexas.edu
Subtraction coreclear, a new way to coreclear
Look at this:
;Name No ties allowed
mov <21,1+2234
sub 1,-1
jmp -2,-2234
After about 12,000 cycles, the move statement will decrement the
sub statement and it will look like this:
a mov <1,1212
b sub 1,-2
c jmp -2,-2234
As this runs, line c is subtracted from every location in the core.
Line b actually does the subtraction, while line a decrements
the pointer on line b.
This almost acts like a DAT coreclear. Instead of MOVing a DAT at every
location, line c is SUBtracted from every location.
After the mod-2 bombing gets done first, the only things left
(besides Paper and Imp) will be SPL 0. Sucker and other programs
use the SPL 0 in a self-splitting loop to keep you honest.
If the SPL 0 isn't on your bombing pattern, you need a coreclear
to eliminate him.
This is where the subtraction coreclear comes in. SPL 0
becomes SPL 2,2234. The process that was trapped by the
SPL statement now scurries away a dies.
I discovered this coreclear by accident, but since then
I noticed it in Andy Pierce's Twill and Matt Hasting's SNM.
Wayne Sheppard
wsheppar@st6000.sct.edu
PS: Coming soon, the code for Night Crawler