From news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!news.bbnplanet.com!cam-news-hub1.bbnplanet.com!uunet!in2.uu.net!165.254.2.52!news.new-york.net!news.stormking.com!PK6811S@ACAD.DRAKE.EDU Thu Jan 23 11:44:30 1997 Article: 6964 of rec.games.corewar Path: news-rocq.inria.fr!jussieu.fr!math.ohio-state.edu!howland.erols.net!news.bbnplanet.com!cam-news-hub1.bbnplanet.com!uunet!in2.uu.net!165.254.2.52!news.new-york.net!news.stormking.com!PK6811S@ACAD.DRAKE.EDU From: PK6811S@ACAD.DRAKE.EDU Newsgroups: rec.games.corewar Subject: Multi-Process Scanner Date: 23 Jan 1997 03:28:26 -0500 Organization: Storm King Ind. Inc. Lines: 73 Sender: server@news.stormking.com Distribution: world Message-ID: <01IEADBZD85I0036B6@ACAD.DRAKE.EDU> Reply-To: PK6811S@ACAD.DRAKE.EDU NNTP-Posting-Host: valhalla.stormking.com Originator: corewar-l@stormking.com Several times in the (ancient) past it was suggested that a scanner using multiple processes might be useful, either to pair with paper or imp or whatever. It didn't seem possible to write such a program, switching from scan mode to attack and back successfully just did not work. However, this is now possible using Blur's scan-directed spl-wiping technique. The trick is to have two loops, one incrementing the scanner and counting down to the clear - a two-instruction loop, the second continuous spl-wiping and f-scanning - also a two- instruction loop. Both loops have equal numbers of processes in them, and they execute alternately so - add/jmn/add/jmn/.etc.. When one of the scan processes falls through it is recycled to change the pointer address and then back into sequence in the loop. Doesn't seem to work well with a spiral though. No matter where I place the spiral, sooner or later it gets spl-wiped and the whole thing slows down. Maybe someone else can work it out. One of the advantages of a multi-process scanner is that when it is overrun by a short spiral it does not die. The two loops can be position anywhere, as long as they are protected from self-wiping. mScan is a slow scanner, but spl-directed wiping followed by a d-clear is very powerful. A test against Impfinity gives mScan a 43/35 advantage. Against CCPaper-2 mScan scores 45/40. Against The Machine :-P ;redcode-94 test ;name mScan ;author P.Kline ;assert CORESIZE == 8000 ;strategy multiprocess scanner mStep equ 45 ; mod-5, > (mScan-mGate+2) mProc equ 8 ; number of processes in each loop mIncr dat mStep ,mStep mGate dat 0 ,mStep*10 mPtr dat (mStep*11)+1-1 ,(mStep*11+mProc*mStep)+1 ; ; mPtr-A tracks mProc steps behind mPtr-B ; so when a process falls through the jmn.f ; check it can move mPtr-A to mGate ; for wiping for 8 dat 0,0 rof mAdd add mIncr ,mPtr ; step scanner mSync djn mAdd ,#2000 ; count down mSpl spl 0,0 mov mDat ,>mAdd ; d-clear djn.f -1 ,>mAdd mDat dat >5335 ,2-mAdd for 7 dat 0,0 rof mReset mov.ab mPtr ,mGate ; adjust pointer and get back in line mWipe1 mov mSpl ,>mGate ; continuous spl-wipe mScan jmz.f -1 ,@mPtr ; f-scan jmp mReset ; found something! for 46 dat 0,0 rof mStart spl 1,<500 ; create mProc processes spl 1,<600 spl 1,<600 spl mSync,<800 ; start scanning loops jmp mScan,>mGate end mStart Paul Kline pk6811s@acad.drake.edu