;redcode-94b ;name Vampirism 1.2 ;author Philip Kendall ;strategy Scan with vamp bombs -> spl / repeated dat clear ;strategy 1.2: improved the bomb ;strategy : erased all boot pointers ;strategy : improved the djn-stream ;kill Vampirism ;assert CORESIZE==8000 SCAN1 equ (loop+3*STEP) SEP equ 12 STEP equ 42 STREAM equ (-400+loop) ; this was a bug in 1.1 CSTART equ (pit-ptr) GATE equ (loop-1) BOOT equ 2000 ; how far to boot main code FBOOT equ 2000 ; how much further to boot fang LENGTH equ (last-loop+1) ; how much code to boot loop add.f step,scan ; the scanner scan cmp.i SCAN1,SCAN1-SEP slt.a #(last-scan+SEP),scan djn.f loop,ptr ; spl/repeated dat coreclear mov.i *ptr,>ptr mov.i *ptr,>ptr djn.f clear,GATE ; first line acts as a trigger wash stp.ab #231,#1 spl.a pit,>wash spl.a pit,>GATE spl.a pit,>GATE last jmp.a pit,>GATE fang jmp.a (pit-FBOOT),0 start dummy for LENGTH ; boot most of code mov.i }bptr,>bptr rof add.ab #FBOOT,bptr ; boot the fang mov.i }bptr,>bptr go spl.a (scan+BOOT),<(GATE+BOOT); start the scanner going sub.f bptr,bptr ; erase the boot pointers sub.f go,go bptr dat.f loop,(loop+BOOT) ; and kill the boot process rubbish for (MAXLENGTH-CURLINE) ; fill up space dat.f {(rubbish+100),>((rubbish+100)*2) rof end start