Path: ibmpcug!wendy.ibmpcug.co.uk!pipex!howland.reston.ans.net!cs.utexas.edu!not-for-mail
From: ting@teloquent.com (T. Hsu)
Newsgroups: rec.games.corewar
Subject: How do you do a vector-launch imp?
Date: 25 Apr 1995 12:37:10 -0500
Organization: UTexas Mail-to-News Gateway
Lines: 63
Sender: nobody@cs.utexas.edu
Message-ID: <199504251736.NAA00623@kei.teloquent.com>
NNTP-Posting-Host: news.cs.utexas.edu

From: carmstro@chs.cusd.claremont.edu (Chris Armstrong)
> Hi, I haven't been keeping up much with new techniques and stuff, and don't
> understand this vestor-launching code for imps.  How do you vector-launch
> an imp?

    djn.a @vector,#0
    jmp   @vector,{0
    jmp   @vector,}0
If you can work through any one of the above statements, you'll be able to
comprehend how vector launching works.  I wrote a more detailed explaination
in an old issue of The '94 Warrior by B.Thompson which can be found on
ftp.csua.berkeley.edu somewhere (probably in an aug94 or sep94 archive).

Below are the vector launching templates that I use for my own warriors.
They are working templates, so I question their use as learning aids.

ting@teloquent.com
;-----------------------------------------------------------------------------
;redcode-94
;name   Vector (3 point, 8 process spiral)
;author T.Hsu
;assert CORESIZE == 8000

imp_size    equ     2667                ; 3 point, 8 process imp spiral
imp_prc     equ     8

imp_A_fld   equ     imp+(imp_prc+1-2*cnt)*imp_size
imp_B_fld   equ     imp+(imp_prc+0-2*cnt)*imp_size
cnt         for     imp_prc/2
            jmp     imp_A_fld,imp_B_fld
            rof
imp_vector  spl     1              ,#0
            spl     1              ,#0
            spl     <0             ,#imp_vector
            djn.a   @(imp_vector-1),#0

imp         mov.i   #0,imp_size

            end     imp_vector
;-----------------------------------------------------------------------------
;redcode-94x
;name   Vector (13 point, 2 layer spiral)
;author T.Hsu
;assert CORESIZE == 55440 && VERSION >= 60

imp_size    equ     34117               ; 13 point, 2 layer imp spiral
imp_point   equ     26

A_fld       equ     imp+(imp_point+1-2*cnt)*imp_size
B_fld       equ     imp+(imp_point+0-2*cnt)*imp_size
cnt         for     (imp_point)/2
            jmp     A_fld,B_fld
            rof
imp_vector  spl     1              ,#0
            spl     1              ,#0
            mov.i   -1             ,#0
            mov.i   -1             ,#0
            spl     <0             ,#imp_vector
            djn.a   @(imp_vector-1),#0

imp         mov.i   #0,imp_size

            end     imp_vector