From: snitty@nycap.rr.com (Ben Snitkoff) Subject: Re: redcode parser with lexx and yacc? Message-ID: Date: Fri, 01 Feb 2002 20:56:29 GMT I was going to work on one with the existing alpha java code (koth.org/pmars/) but port it to OS X using Cocoa, but if we could do it as a group in Java (the on one Koth hasn't been updated for 4 years and is a beta) it would be a lot better, and Java isn't always slow. I could provide an FTP server for it, and we could meet on IRC or something. Also, it is a part of the '92 code that you can't let things loop infinately. If we are really serious about porting it to Java we should make a pact not to quit, 'cause that's happened before on projects i've worked on, and it stinks. Post here or e-mail me if you are interested. In article , carter_cheng@yahoo.com (Jobless Poor) wrote: > If you need a parser generator equivalent for lexx and yacc, you might > want to look at antlr at "www.antlr.org". It has generators for C++, > Java and Sather. It uses a predicated LL(k) technique which is pretty > intuitive and more powerful than LR(1) parsers like CUP and JavaCC. I > am not sure how fast it is, but I do know that the C++ generator is > not table based and relies on function calls if I recall correctly. > > Performance with Java will always pose problems and will be > significantly slower than a C implementation. Also the macro > facilities of PMARS, as you mentioned, are rather problematic to > interpret. My understanding is you can enter grammar files which can > cause the parser to loop indefinitely. > > Actually, with the number of macro text processing tools out there, I > wonder if these facilities are even necessary. > > I have considered working on a new MARS, but I am still collecting > ideas. The key area that needs to be resolved is what kind of > facilities I should give the debugger. > > Cheers, > > Carter From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: redcode parser with lexx and yacc? Date: 1 Feb 2002 22:37:55 -0800 Message-ID: My bad about the assembler looping indefinitely, you can use a graph cycle detector to pick up recursive expansions which is what pmars apparently does. Writing something which emulates the pmars assembler frontend is not that difficult but probably needs to be done with care. Unfortunately because of some of the dependencies inherent in the redcode.ref description, I doubt its possible to break the assembler into lexical/parsing(->tree or quads->) and code generation phases(If someone sees a way of doing this please feel free to point it out). My main concern about a java port is that I think porting pmars to java is probably a nontrivial task. The c source is quite substantial and I dont think there will be a substantial gain in code density with a java port. I know for certain types of applications java is not significantly slower however given how numerically intense corewars is I might expect a significant drop in performance. AFAIK java is not particularly good for number crunching. snitty@nycap.rr.com (Ben Snitkoff) wrote in message news:... > I was going to work on one with the existing alpha java code > (koth.org/pmars/) but port it to OS X using Cocoa, but if we could do it > as a group in Java (the on one Koth hasn't been updated for 4 years and is > a beta) it would be a lot better, and Java isn't always slow. > > I could provide an FTP server for it, and we could meet on IRC or something. > > Also, it is a part of the '92 code that you can't let things loop > infinately. If we are really serious about porting it to Java we should > make a pact not to quit, 'cause that's happened before on projects i've > worked on, and it stinks. > > Post here or e-mail me if you are interested. > > In article , > carter_cheng@yahoo.com (Jobless Poor) wrote: From: guenzel.p1@blinker.net (Bjoern) Subject: Re: redcode parser with lexx and yacc? Date: Sat, 02 Feb 2002 10:46:21 GMT Message-ID: <3c5bc0f2.1473828@news.t-online.de> On 1 Feb 2002 22:37:55 -0800, carter_cheng@yahoo.com (Jobless Poor) wrote: >My bad about the assembler looping indefinitely, you can use a graph >cycle detector to pick up recursive expansions which is what pmars >apparently does. Writing something which emulates the pmars assembler >frontend is not that difficult but probably needs to be done with >care. Unfortunately because of some of the dependencies inherent in >the redcode.ref description, I doubt its possible to break the >assembler into lexical/parsing(->tree or quads->) and code generation >phases(If someone sees a way of doing this please feel free to point >it out). My solution to the macrodefinitions was to push the substitution back into the stream to be parsed whenever a macro is found. I wasn't sure if that would be possible with a lex-generated parser, so I started to write my own. However, now I haven't worked on it for a while :-( I'll give it another shot today, hope I can still pick up the code where I left it... >My main concern about a java port is that I think porting pmars to >java is probably a nontrivial task. The c source is quite substantial >and I dont think there will be a substantial gain in code density with >a java port. I know for certain types of applications java is not The simulator should be simple, I am more concerned about the debugger. It's not something I want to code, but I think it has to be done to make the emulator useful and competitive to pmars. >significantly slower however given how numerically intense corewars is >I might expect a significant drop in performance. AFAIK java is not >particularly good for number crunching. I'm not really worried about that. For graphical display sessions, the speed doesn't matter so much anyway. For tournaments, pmars could still be used, or the java source can perhaps be compiled to machine code. Although I intend to use the emulator for genetic algorithms, so speed would be an issue. But I rather accept slower performance than the hassle of having to code in C. >snitty@nycap.rr.com (Ben Snitkoff) wrote in message news:... >> I was going to work on one with the existing alpha java code >> (koth.org/pmars/) but port it to OS X using Cocoa, but if we could do it I read that OS X has Java-Support built in? >> as a group in Java (the on one Koth hasn't been updated for 4 years and is >> a beta) it would be a lot better, and Java isn't always slow. >> >> I could provide an FTP server for it, and we could meet on IRC or something. Why not sourceforge? >> Also, it is a part of the '92 code that you can't let things loop >> infinately. If we are really serious about porting it to Java we should >> make a pact not to quit, 'cause that's happened before on projects i've >> worked on, and it stinks. I must admit I'm really bad at this :-( I'd like to see if I get myself to finish that parser I started first, then I feel confident enough to promise I'll stick to the project. Bjoern From: "Brian Haskin" Subject: Re: redcode parser with lexx and yacc? Date: 2 Feb 2002 11:10:53 -0500 Message-ID: <002c01c1abc4$86514fa0$0b00000a@haskin.int> ----- Original Message ----- From: "Ben Snitkoff" To: "Multiple recipients of list COREWAR-L" Sent: Friday, February 01, 2002 4:31 PM Subject: Re: redcode parser with lexx and yacc? > I was going to work on one with the existing alpha java code > (koth.org/pmars/) but port it to OS X using Cocoa, but if we could do it > as a group in Java (the on one Koth hasn't been updated for 4 years and is > a beta) it would be a lot better, and Java isn't always slow. > [snip] Heh, I had no idea that koth had an old jmars zip. Anyway, the current jmars code can be found in the cvs at https://sourceforge.net/cvs/?group_id=3452 it has pretty much been a dead project for almost two years. Recently I did update the cvs with a compiler that, minus any bugs, compiles ICWS'94+pmars extensions except for macros. I had planned on putting together a new zip file after I added macro support. Unfortunately I'm probably going to be tied up with some other stuff for a couple of weeks before I'll get a chance to put that in. Once that is complete I'm thinking of working on a basic applet UI. Brian Haskin bhaskin@yahoo.com _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com From: snitty@nycap.rr.com (Ben Snitkoff) Subject: Re: redcode parser with lexx and yacc? Message-ID: Date: Sat, 02 Feb 2002 14:33:07 GMT > The simulator should be simple, I am more concerned about the > debugger. It's not something I want to code, but I think it has to be > done to make the emulator useful and competitive to pmars. I agree, one of the thoughts I had was making an all-in-one app. Something that allowed you to code, debug and fight the warriors in one app without making you switch between a simple text editor and the pMARS. This would be realitivly easy. Another feature that could be added in later would be an interactive display of your code. On the side it would take your code and change the numbers as they changed in the core and have a pointer (the graphical one, one the Comp Sci one) to the command it is executing. > >significantly slower however given how numerically intense corewars is > >I might expect a significant drop in performance. AFAIK java is not > >particularly good for number crunching. > > I'm not really worried about that. For graphical display sessions, the > speed doesn't matter so much anyway. For tournaments, pmars could > still be used, or the java source can perhaps be compiled to machine > code. Although I intend to use the emulator for genetic algorithms, so > speed would be an issue. But I rather accept slower performance than > the hassle of having to code in C. I agree, C++ is okay, I don't like C all that much though. > >> I was going to work on one with the existing alpha java code > >> (koth.org/pmars/) but port it to OS X using Cocoa, but if we could do it > > I read that OS X has Java-Support built in? Alas it is, but in Mac OS X a pure Java app is slow, a Cocoa-Java app (or as I call it, Mocha) is almost as snappy as on Cocoa-Objective C app. A little strange, but it makes sense. > >> I could provide an FTP server for it, and we could meet on IRC or something. > > Why not sourceforge? Argh! Logic! That sounds like a great idea, I'll get right on it. > I must admit I'm really bad at this :-( I'd like to see if I get > myself to finish that parser I started first, then I feel confident > enough to promise I'll stick to the project. > > > Bjoern Sounds like a deal! From: Paul-V Khuong Subject: Re: redcode parser with lexx and yacc? Date: 2 Feb 2002 21:45:06 -0500 Message-ID: <20020202202759.77024.qmail@web11603.mail.yahoo.com> *Not sure if that email was also psoted to r.g.c, but anyway.* --- guenzel@blinker.net wrote: > On 2 Feb 2002 at 8:17, Paul-V Khuong wrote: > [...] > > Wouldn't it be possible to have a preprocessor > doing > > the macroing part, which is after all 100% string > > replacement/copying, except for the simple > arithmetic > > part? > > Perhaps I just didn't get the right idea how to do > it. But one problem with the preprocssor > seemed to me that it's also possible to have macro > definitions as macro. For example > > a equ b equ 2 > a > dat b,b > > Another thing I am not sure about is how to include > the line number in error messages > after preprocessing, as the preprocessed file might > have more lines than the initial one. > Perhaps it's as easy as storing a line number for > each line of the preprocessed text, > though... Well, break down the file in an array of strings, like: int - line number str - line's content After that, you need two arrays. One with the original code, the other with the unmacroed code. The preprocessor only does one step of macroing at a time. Like, have a function which unrolls the macro, but without recursing. The function sends 0 when it did not do anything, and something else in toher cases. Also, it'll probably have to work with an "original" array, and a destination array (much cleaner than inserting stuff, and probably the only possible way). Just keep calling the function until uou get a 0. You'd also need to check for self-referencing, looping equs, etc. before running the preprocessor. > > BTW, i would love to help, but i don't think i'd > be of > > much help. > > Why not? As I said in the newsgroup, I'd like to see > if I can do that parser first, before I > commit myself to something I can't fulfill. But I > think there are enough things to do so > that you could be of help (and I'm glad to discuss > the parser implemenation, too). Well, we'll see when you get to the public stage. However, it really seemed to me that a MARS was really a simple thing once all the labels had been removed... __________________________________________________ Do You Yahoo!? Great stuff seeking new owners in Yahoo! Auctions! http://auctions.yahoo.com From: Paul-V Khuong Subject: Re: redcode parser with lexx and yacc? Date: 2 Feb 2002 21:46:30 -0500 Message-ID: <20020202161754.33733.qmail@web11606.mail.yahoo.com> --- Bjoern wrote: > On 1 Feb 2002 22:37:55 -0800, carter_cheng@yahoo.com > (Jobless Poor) > wrote: > > >My bad about the assembler looping indefinitely, > you can use a graph > >cycle detector to pick up recursive expansions > which is what pmars > >apparently does. Writing something which emulates > the pmars assembler > >frontend is not that difficult but probably needs > to be done with > >care. Unfortunately because of some of the > dependencies inherent in > >the redcode.ref description, I doubt its possible > to break the > >assembler into lexical/parsing(->tree or quads->) > and code generation > >phases(If someone sees a way of doing this please > feel free to point > >it out). > > My solution to the macrodefinitions was to push the > substitution back > into the stream to be parsed whenever a macro is > found. I wasn't sure > if that would be possible with a lex-generated > parser, so I started to > write my own. However, now I haven't worked on it > for a while :-( I'll > give it another shot today, hope I can still pick up > the code where I > left it... I don't know anything about lexx, yacc or their ilks, but it seems to me that the macro definitions don't NEED to be done with those. Wouldn't it be possible to have a preprocessor doing the macroing part, which is after all 100% string replacement/copying, except for the simple arithmetic part? Looking at the way pMARS echoes the 100% redcode code before starting the battle, it seems to me it's doing a similar process. BTW, i would love to help, but i don't think i'd be of much help. __________________________________________________ Do You Yahoo!? Great stuff seeking new owners in Yahoo! Auctions! http://auctions.yahoo.com From: birk@andromeda.ociw.edu Subject: Koenigstuhl News Date: 2 Feb 2002 21:53:56 -0500 Message-ID: <200201302329.g0UNTX203400@andromeda.ociw.edu> There is a new hill: Pspace Koenigstuhl To allow for better statistics I run 1000 battles between each program. He hill has 223 prgrams so far. KotH: 'Aggression is a switch' by M Joonas Pihlaja #2 'Combatra' by David Moore #3 'Fire and Ice' by David Moore #4 'Scanitator Pro' by Christian Schmidt #5 'Liquid Paper' by Sean McDonald Christoph http://www.ociw.edu/~birk/COREWAR/koenigstuhl.html From: M Joonas Pihlaja Subject: question about bjoern's parser Date: 2 Feb 2002 22:43:29 -0500 Message-ID: Bjoern, Can your assembler handle incomplete multiline equates? eg. foo equ mov 0,1 equ jmp foo some_label should assemble to mov 0,1 jmp some_label Last I tried this example, pmars gets it wrong when some_label precedes the expanded text. Joonas From: carter_cheng@yahoo.com (Jobless Poor) Subject: Re: CURLINE and side effects from partial evaluation of expressions Date: 3 Feb 2002 00:17:44 -0800 Message-ID: A couple questions(concerning parsing) for the regulars if they have a moment: 1) How much is the builtin CURLINE variable used, and what for? I am asking this because Im curious about integrating another macro processing tool into a simplified redcode format. 2) If during expression expansion certain labels are forward references are expressions partially evaluated and then delayed or does the parser wait until it can fully parse the expression? The concern here is obviously side effects created by variable assignments. Thanks in advance, Carter. From: M Joonas Pihlaja Subject: Re: CURLINE and side effects from partial evaluation of expressions Date: Sun, 3 Feb 2002 10:42:24 +0200 Message-ID: On 3 Feb 2002, Jobless Poor wrote: > A couple questions(concerning parsing) for the regulars if they have a > moment: > > 1) How much is the builtin CURLINE variable used, and what for? I am > asking this because Im curious about integrating another macro > processing tool into a > simplified redcode format. Quite a few warriors use it to build decoys and/or add padding. A typical example is i for MAXLENGTH-CURLINE dat i,-i rof What macro tool are you considering? > 2) If during expression expansion certain labels are forward > references are expressions partially evaluated and then delayed or > does the parser wait until it can fully parse the expression? The > concern here is obviously side effects created by variable > assignments. I'm not sure, but probably not. Maybe this test answers your question: ;redcode ;assert 1 dat a=3, b=10 bar equ (a=a+1) foo equ dat bar, (a=a+1) ; possible partial evaluation when expanding foo foo dat a baz equ (b=b+1) fum equ dat (b=b+1), baz ; ditto for fum. fum dat b end assembles to Program "Unknown" (length 5) by "Anonymous" ORG START START DAT.F $ 3, $ 10 DAT.F $ 4, $ 5 DAT.F # 0, $ 5 DAT.F $ 11, $ 12 DAT.F # 0, $ 12 Regards, Joonas From: guenzel.p1@blinker.net (Bjoern) Subject: Re: redcode parser with lexx and yacc? Date: Sun, 03 Feb 2002 19:23:25 GMT Message-ID: <3c5d8c3a.5522593@news.t-online.de> On 2 Feb 2002 21:45:06 -0500, Paul-V Khuong wrote: [...] >preprocessor only does one step of macroing at a time. >Like, have a function which unrolls the macro, but >without recursing. The function sends 0 when it did But I think recursing is necessary, to allow constructs like bla equ blabla equ 5 bla dat blabla Or what do you mean by recursing? At the second occurence of bla I need the preprocessor to insert blabla equ 5 and then learn that blabla is a label. Hence my idea to push 'blabla equ 5' back into the stream to be parsed. I'll see how I get on with my current approch, but perhaps I can clarify the code by using an array like you suggest. Currently I use two different streams (one for the first pass, one for the second pass), but I don't store line numbers. I only have a counter for current line number, with a flag that indicates whether the counter should be increased if EOL is encountered or not (depending on wether the base file is being parsed or something that has been pushed by label substitution). Anyway - somehow it's too complicated for my taste, can't help feeling that there should be an easier way. That's also why I didn't continue it for a while... Bjoern From: guenzel.p1@blinker.net (Bjoern) Subject: Re: question about bjoern's parser Date: Sun, 03 Feb 2002 19:27:28 GMT Message-ID: <3c5d8e58.6064687@news.t-online.de> On 2 Feb 2002 22:43:29 -0500, M Joonas Pihlaja wrote: > >Bjoern, > >Can your assembler handle incomplete multiline equates? >eg. > >foo equ mov 0,1 > equ jmp > > foo some_label > >should assemble to > > mov 0,1 > jmp some_label > >Last I tried this example, pmars gets it wrong when some_label >precedes the expanded text. I'm surprised that pmars get's it wrong, perhaps because a newline is inserted after label expansion? So it would expand to mov 0,1 jmp some_label (just guessing what could be the problem). Anyway, I hope my parser will get it right - some day ;-) I've definitely planned it that way. Bjoern From: guenzel.p1@blinker.net (Bjoern) Subject: Re: CURLINE and side effects from partial evaluation of expressions Date: Sun, 03 Feb 2002 19:30:19 GMT Message-ID: <3c5d8f6d.6341250@news.t-online.de> On 3 Feb 2002 00:17:44 -0800, carter_cheng@yahoo.com (Jobless Poor) wrote: >A couple questions(concerning parsing) for the regulars if they have a >moment: > >1) How much is the builtin CURLINE variable used, and what for? I am >asking this because Im curious about integrating another macro >processing tool into a >simplified redcode format. You mentioned macro processing tools before, what are they? >2) If during expression expansion certain labels are forward >references are expressions partially evaluated and then delayed or >does the parser wait until it can fully parse the expression? The >concern here is obviously side effects created by variable >assignments. Perhaps redcode.ref can clarify this, which is included with pmars.. I think it said something like in the first pass only labels before operators are being expanded. Bjoern From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 02/04/02 Date: 4 Feb 2002 09:13:24 -0500 Message-ID: <200202040509.AAA01148@gevjon.ttsg.com> Weekly Status on 02/04/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Feb 3 22:27:10 EST 2002 # %W/ %L/ %T Name Author Score Age 1 36/ 25/ 39 Quicksilver Michal Janeczek 146 594 2 44/ 44/ 12 G3-b David Moore 145 102 3 34/ 23/ 43 Son of Vain Oversby/Pihlaja 144 421 4 34/ 26/ 40 Inky Ian Oversby 143 311 5 42/ 43/ 15 Hazy Lazy ... Steve Gunnell 141 174 6 41/ 42/ 17 Behemot Michal Janeczek 140 655 7 33/ 27/ 39 Uninvited John Metcalf 139 514 8 31/ 23/ 45 nPaper II Paul-V Khuong 139 832 9 33/ 26/ 41 Olivia Ben Ford 139 560 10 32/ 28/ 40 Revival Fire P.Kline 136 300 11 34/ 33/ 33 Blacken Ian Oversby 135 1079 12 42/ 49/ 9 test John Metcalf 135 6 13 39/ 45/ 16 Deep Freeze X Lukasz Grabun 132 21 14 37/ 43/ 20 Little Jewel X Lukasz Grabun 131 10 15 28/ 24/ 48 paper/stone test simon 131 107 16 30/ 29/ 42 Qtest Christian Schmidt 131 354 17 33/ 36/ 30 Keyser Soze Anton Marsden 130 533 18 40/ 52/ 7 He Scans Alone x P.Kline 129 160 19 25/ 21/ 54 Mr Sheen B Steve Gunnell 128 13 20 35/ 46/ 20 Get Stoned T5 Lukasz Grabun 124 1 21 36/ 50/ 13 Kenshin X test 25 Steve Gunnell 122 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 02/04/02 Date: 4 Feb 2002 09:14:48 -0500 Message-ID: <200202040506.AAA01093@gevjon.ttsg.com> Weekly Status on 02/04/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sat Feb 2 12:16:06 EST 2002 # %W/ %L/ %T Name Author Score Age 1 54/ 33/ 13 Fire and Ice II David Moore 175 3 2 33/ 21/ 46 KAT v5 Dave Hillis 145 35 3 38/ 35/ 26 Black Moods Ian Oversby 141 99 4 27/ 17/ 56 Katafutr Michal Janeczek 137 43 5 39/ 43/ 18 Greetings From Asbury Par JKW 135 63 6 34/ 36/ 29 Ogre Christian Schmidt 133 51 7 32/ 32/ 36 Controlled Aggression Ian Oversby 132 103 8 19/ 7/ 74 Evol Cap 4 X John Wilkinson 130 172 9 22/ 14/ 64 Kin John Metcalf 129 11 10 18/ 8/ 74 Denial David Moore 129 44 11 30/ 32/ 38 Big I.F.F.S. Dave Hillis 127 32 12 25/ 25/ 50 Damage Inflicted Robert Macrae 124 42 13 15/ 7/ 78 Evolve X v4.0 John Wilkinson 123 120 14 15/ 8/ 78 Black Box v1.1 JKW 122 66 15 20/ 20/ 60 Venom v0.2b Christian Schmidt 121 125 16 31/ 44/ 25 Pagan John K W 117 157 17 27/ 38/ 36 La Vibra 19 Lukasz Grabun 116 1 18 26/ 36/ 38 test CS 116 60 19 16/ 23/ 61 Purple v0.1 Christian Schmidt 109 124 20 18/ 28/ 54 Disaster Area 2.8 Stefan Foerster 109 30 21 6/ 32/ 62 BR1 Devin Kilminster 79 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 02/04/02 Date: 4 Feb 2002 09:16:13 -0500 Message-ID: <200202040503.AAA01049@gevjon.ttsg.com> Weekly Status on 02/04/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Thu Jan 17 01:11:33 EST 2002 # Name Author Score Age 1 fclear Brian Haskin 43 71 2 D-clearM Ken Espiritu 36 87 3 test John Metcalf 31 15 4 8thTest Gino Oblena 30 18 5 clock strikes twelve John Metcalf 29 1 6 Her Majesty P.Kline 28 106 7 Xord Monominer XOSC:01 Gino Oblena 18 26 8 Pitbull Christian Schmidt 17 43 9 sptst (4D-p) Stefan Foerster 17 4 10 QuiVa John Metcalf 16 180 11 Paper2 Alex Schwendner 2 0 From: Koth Subject: KOTH.ORG: Status - Standard 02/04/02 Date: 4 Feb 2002 09:17:38 -0500 Message-ID: <200202040500.AAA00977@gevjon.ttsg.com> Weekly Status on 02/04/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Wed Jan 23 12:41:14 EST 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 38/ 18 Oneshot '88 John Metcalf 151 1 2 32/ 21/ 47 Freight Train David Moore 143 80 3 43/ 44/ 13 Foggy Swamp Beppe Bezzi 142 76 4 42/ 44/ 14 Blur '88 Anton Marsden 140 117 5 31/ 21/ 48 Test Alexander (Sasha) Wa 140 19 6 30/ 24/ 46 sIMPly.Red v0.95 Leonardo Humberto 137 37 7 39/ 42/ 19 Stasis David Moore 136 187 8 29/ 23/ 47 Guardian Ian Oversby 135 79 9 39/ 43/ 18 Beholder's Eye V1.7 W. Mintardjo 135 355 10 36/ 39/ 24 PacMan David Moore 133 109 11 36/ 40/ 24 Tangle Trap David Moore 132 153 12 31/ 30/ 39 vala John Metcalf 131 2 13 39/ 48/ 13 Iron Gate Wayne Sheppard 131 405 14 39/ 49/ 12 ig Wayne Sheppard 130 7 15 22/ 17/ 60 EV Paper John K Wilkinson 127 93 16 24/ 21/ 55 Jinglo John Metcalf 126 4 17 25/ 25/ 50 Shish-Ka-Bob Ben Ford 126 35 18 23/ 21/ 56 Test I Ian Oversby 126 136 19 29/ 32/ 39 Frog Sticker P.Kline 125 29 20 23/ 24/ 53 Evoltmp 88 John K W 123 130 21 18/ 31/ 51 paper test2 John Metcalf 106 0 From: Paul-V Khuong Subject: Re: redcode parser with lexx and yacc? Date: 4 Feb 2002 09:19:02 -0500 Message-ID: <20020203211907.93659.qmail@web11606.mail.yahoo.com> --- Bjoern wrote: > On 2 Feb 2002 21:45:06 -0500, Paul-V Khuong > wrote: > > [...] > > >preprocessor only does one step of macroing at a > time. > >Like, have a function which unrolls the macro, but > >without recursing. The function sends 0 when it did > > But I think recursing is necessary, to allow > constructs like > > bla equ blabla equ 5 > bla > dat blabla > > Or what do you mean by recursing? No, i was thinking of having the function do only one pass, and then calling repeatedly. It would make it much cleaner, that trying to do it all in one pass, imho. __________________________________________________ Do You Yahoo!? Great stuff seeking new owners in Yahoo! Auctions! http://auctions.yahoo.com From: Wally Subject: READ THE WEB-SITE THAT THE KIKES TRY TO CENSOR Date: Mon, 4 Feb 2002 15:04:44 GMT Message-ID: WWW.GIWERSWORLD.ORG THE SITE WHERE ALL KIKES ARE LAMPSHADES PROUDLY PRESENTED BY MATTHIAS GIWER 14205 N. NEBRASKA AVE TAMPA FLORIDA 813-977-7380 jull43@tampabay.rr.com matt@giwersworld.org PROUDLY HOSTED BY: DREAMHOST WEB HOSTING 213-947-1032 For Jay the onion's cheap, at me it's worthwhile, whereas with you it's walking inner. Why doesn't Frederick expect familiarly? He'll be looking without abysmal Dilbert until his enigma pours usably. Don't help a sticker! When Petra's strange diet irritates, Francis wastes about cosmetic, brave structures. Hardly any weak farmers explain Christopher, and they steadily open Toni too. The thin hen rarely orders Jon, it seeks Isabelle instead. Toni, still irrigating, judges almost tamely, as the pitcher moves in their elbow. Dick loves, then Julieta firmly wanders a sad carrot with Francine's moon. Other good easy cars will dye wanly inside tickets. Until Jimmie dines the pears surprisingly, Ollie won't converse any heavy mountains. It can recommend eerily if Cathy's dust isn't polite. We tease the filthy goldsmith. If you will climb Corinne's hallway within eggs, it will weekly jump the hat. Get your incredibly excusing jug in my barn. As wrongly as Al combs, you can depart the tailor much more stupidly. Sometimes, it sows a fork too younger around her noisy navel. To be sticky or quiet will mould lean twigs to lovingly live. John's printer promises through our porter after we receive under it. Some lentils believe, improve, and scold. Others deeply attempt. Lately, aches lift among clean markets, unless they're young. Robette! You'll smell pickles. Gawd, I'll learn the orange. Occasionally Madeleine will kill the pumpkin, and if Brian slowly talks it too, the smog will fear beneath the full plain. While games hatefully cook buckets, the balls often call for the strong raindrops. They are hating in back of the drawer now, won't change wrinkles later. Just recollecting under a disk under the field is too lost for Guglielmo to nibble it. If the kind floors can attack angrily, the rich cloud may laugh more cafes. It's very rude today, I'll pull fully or Edwina will arrive the cats. From: Paul-V Khuong Subject: Re: redcode parser with lexx and yacc? Date: 4 Feb 2002 19:12:21 -0500 Message-ID: <20020204230516.30243.qmail@web11604.mail.yahoo.com> --- Bjoern wrote: > On 4 Feb 2002 09:19:02 -0500, Paul-V Khuong > wrote: > > [...] > > >No, i was thinking of having the function do only > one > >pass, and then calling repeatedly. It would make it > >much cleaner, that trying to do it all in one pass, > imho. > > I'm still not sure how it would work, although I > guess pmars must do > it in such a way. But how for example could > > bla equ blabla equ blablala equ 2 > > be unfolded then? Is equ supposed to act like the assignment = in C? If so, then one could do something like, whena equ is interpreted, leave foo instead of the whole foo equ "x". Like: Pass 1 - bla equ blabla equ blablala equ 2 Interpret to blablabla equ 2 (goes in a table) Line becomes bla equ blabla equ blablabla Pass 2 Interpret to blabla equ blablabla (again, store that in a table) Line becomes bla equ blabla Pass 3 Interpret to bla equ blabla Line becomes bla Bla is alone on the line, remove the line. It might be longer, though, so, in the end, if your way only need two passes no matter what the input is, it will be worth the cost, imho. After all, we want a good working product, not a nice source ;) __________________________________________________ Do You Yahoo!? Great stuff seeking new owners in Yahoo! Auctions! http://auctions.yahoo.com From: guenzel.p1@blinker.net (Bjoern) Subject: Re: redcode parser with lexx and yacc? Date: Mon, 04 Feb 2002 19:24:39 GMT Message-ID: <3c5edf9d.8784187@news.t-online.de> On 4 Feb 2002 09:19:02 -0500, Paul-V Khuong wrote: [...] >No, i was thinking of having the function do only one >pass, and then calling repeatedly. It would make it >much cleaner, that trying to do it all in one pass, imho. I'm still not sure how it would work, although I guess pmars must do it in such a way. But how for example could bla equ blabla equ blablala equ 2 be unfolded then? I have two passes, too, btw. Bjoern From: snitty@nycap.rr.com (Ben Snitkoff) Subject: pMars in Java sourceforge.net proj. approved! Message-ID: Date: Tue, 05 Feb 2002 00:45:19 GMT Hey there! I just got approval on the pMars in Java program, feel free yo register at sourceforge and send me an e-mail and I'll be more than happy to add you to the developer list! Thanks in advance for any support on this project. Ben From: "Brian Haskin" Subject: Re: pMars in Java sourceforge.net proj. approved! Date: 5 Feb 2002 08:16:13 -0500 Message-ID: <003101c1adf9$fb011a60$0b00000a@haskin.int> ----- Original Message ----- From: "Ben Snitkoff" To: "Multiple recipients of list COREWAR-L" Sent: Monday, February 04, 2002 8:30 PM Subject: pMars in Java sourceforge.net proj. approved! > Hey there! > > I just got approval on the pMars in Java program, feel free yo register at > sourceforge and send me an e-mail and I'll be more than happy to add you > to the developer list! > > Thanks in advance for any support on this project. > > Ben As I mentioned a few days ago, if anyone is interested I already have a working corewars VM written in java. This is at the corewar sourceforge project http://sourceforge.net/projects/corewar/ in the cvs at http://sourceforge.net/cvs/?group_id=3452. If anyone starts coding on it just let me know and I'm sure we could get you added as a developer. Brian Haskin bhaskin@yahoo.com _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com From: M Joonas Pihlaja Subject: Re: CW80 Date: 5 Feb 2002 08:17:38 -0500 Message-ID: On Mon, 4 Feb 2002, John Metcalf wrote: > Cw80 is ready, I want to have Cw81 ready by March 31, regardless > of whether Pizza is up on not. Would you be able to forward Cw > to the newsgroup for me, I wasn't sure if you wanted to paste in > the SoV article or wait a couple of months for Cw81. That's great! Ian finished his bit this yesterday so I'll send it to you later today, OK? I can forward to r.g.c. if you want, but I think you can post there directly by sending to the corewar-l list at corewar-l@koth.org. Not sure if you need to be subscribed to the list or not, though. > Watch out for a tournament announcement in the group within the > next week or so. What to offer as a prize though, that is the > most difficult thing. I was hoping to comission something to > be made, but what? I can afford about 50 UK pounds. That's great! (he says, again) Re: the prize you should probably ask the group for suggestions. One option is something completely unrelated to corewar, maybe a book or software package. Personally, I've always wanted an r.g.c. coffee mug, but that's a bit too cheesy, no? Actually, scrap the corewar-l idea -- in theory it's a two-way mirror of r.g.c. but recently it's been missing posts. I'll forward. Joonas From: pagaltzis@gmx.de (Aristoteles Pagaltzis) Subject: redcodejavac? :-) Date: 6 Feb 2002 11:09:41 -0800 Message-ID: <872a85cc.0202061109.614cd8cb@posting.google.com> I just had a wild idea.. you know, Corewars runs in a VM, and Java bytecode runs in a VM. Can it really be that hard to compile Redcode to Java bytecode? Any single Redcode instruction would likely map to a series of JAsm instructions of course. I also guess something reminiscent of a "MARS" would still be required to provide for loading the requested warrior .class files and setting up the necessary framework. However it wouldn't interpret anything. I know only someone with some experience in JAsm can make a call here but I found the idea intriguing, guessed it might be possible and figured the result is likely to leave a straight jMARS in the dust performance wise - so I went ahead to toss this brainfart in here. :-) From: Planar Subject: pmars for MacOS X Date: 6 Feb 2002 16:00:33 GMT Message-ID: I've compiled pmars 0.8.6 for MacOS X with XDarwin. The binary is available here: . -- Planar From: M Joonas Pihlaja Subject: Core Warrior 80 Date: Wed, 6 Feb 2002 21:31:53 +0200 Message-ID: .xX$$x. .x$$$$$$$x. d$$$$$$$$$$$ ,$$$$$$$P' `P' , . $$$$$$P' ' .d b $$$$$P b ,$$x ,$$x ,$$x ,$$b $$. Y$$$$' `$. $$$$$$. $$$$$$ $$P~d$. d$$$b d d$$$ `$$$$ ,$$ $$$$$$$b $$$P `$ $$$b.$$b `Y$$$d$d$$$' . . a . a a .aa . a `$$$ ,$$$,$$' `$$$ $$$' ' $$P$XX$' `$$$$$$$$$ .dP' `$'$ `$'$ , $''$ `$'$ `Y$b ,d$$$P `$b,d$P' `$$. `$$. , `$$P $$$' Y $. $ $ $ Y..P $ `$$$$$$$' $$$P' `$$b `$$$P `P `$' `Y'k. $. $. $. $$' $. Issue 80 31 January, 2002 _______________________________________________________________________________ Core Warrior is a newsletter promoting the game of corewar. Emphasis is placed on the most active hills - currently the '94 draft hill, the beginner hill and the '94 no-pspace hill. Coverage will follow where ever the action is. If you haven't a clue what I'm talking about then check out these five-star Internet locals for more information: FAQs are available from: http://www.koth.org/corewar-faq.html http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Web pages are at: http://www.koth.org/ ;KOTH http://www.ecst.csuchico.edu/~pizza/koth ;Pizza http://para.inria.fr/~doligez/corewar ;Planar http://www.ociw.edu/~birk/corewar ;C.Birk Newbies should check the above pages for the FAQs, language specification, guides, and tutorials. Post questions to rec.games.corewar. All new players are infinitely welcome! _______________________________________________________________________________ Greetings... Far too much time has passed since the previous issue of Core Warrior, with the Pizza hills being unavailable for the duration. However, there is good news too. A flurry of work has taken place on Koenigstuhl, which now homes 8 infinite hills. (ICWS, 88, 94, P-Space, Open, Big, Tiny, LP). As usual a number of top notch warriors have been posted. Recommended reading includes the code for Moore's Fire and Ice II, and Janeczek's Behemot. -- John Metcalf _______________________________________________________________________________ Current Status of the Internet Pizza Server ICWS '94 Draft Hill: # %W / %L / %T Name Author Score Age 1 38.6/ 37.6/ 23.8 Digital Instinct Christian Schmidt 139.7 3 2 28.2/ 17.1/ 54.7 Son of Vain Oversby/Pihlaja 139.3 1 3 41.7/ 49.6/ 8.6 Razor Michal Janeczek 133.9 15 4 26.0/ 18.8/ 55.1 nPaper II Paul-V Khuong 133.2 85 5 27.2/ 23.1/ 49.7 Olivia Ben Ford 131.2 17 6 22.6/ 14.7/ 62.7 Mini Return Of The Jedimp John K W 130.4 28 7 34.6/ 39.3/ 26.1 test Paulsson 130.0 12 8 30.6/ 33.0/ 36.4 Enough is enough! John Metcalf 128.2 8 9 34.1/ 40.6/ 25.2 Combatra David Moore 127.6 40 10 34.6/ 41.8/ 23.5 Behemot Michal Janeczek 127.4 14 11 25.9/ 25.2/ 48.9 Uninvited John Metcalf 126.7 51 12 22.1/ 18.2/ 59.7 Cinammon John Metcalf 126.0 53 13 33.1/ 40.5/ 26.4 Wizard 13 John Metcalf 125.8 16 14 19.5/ 13.5/ 67.0 The PhantIMP Menance Ben Ford 125.4 18 15 22.8/ 20.3/ 56.9 KafuFFLe John Metcalf 125.2 33 16 22.3/ 19.5/ 58.2 Tie Factory Christian Schmidt 125.1 54 17 22.3/ 19.9/ 57.8 Revival Fire P.Kline 124.7 1 18 24.3/ 25.4/ 50.3 Quicksilver Michal Janeczek 123.3 33 19 26.6/ 30.0/ 43.3 Vilex Ken Espiritu 123.2 80 20 19.6/ 16.3/ 64.1 Return of the Fugitive David Moore 122.9 109 21 29.0/ 35.1/ 35.9 Keyser Soze Anton Marsden 122.9 13 22 22.0/ 21.2/ 56.8 LoN GeV Simon Wainwright 122.8 9 23 21.9/ 22.1/ 56.0 Fifth Third Ben Ford 121.7 20 24 21.6/ 21.5/ 56.9 test JKW 121.7 26 25 25.6/ 29.6/ 44.9 Velvet Fist Ayan Chakrabarti 121.6 3 26 23.3/ 26.2/ 50.5 Brigadeer M Joonas Pihlaja 120.3 24 Top 25 Averages: 27.1/ 27.0/ 46.0 127.2 29 Age since last issue: 9 ( 26 last issue, 18 the issue before ) Days since last issue: 345 ( 104 last issue, 209 the issue before ) Average age: 29 ( 26 last issue, 34 the issue before ) Average score: ??? ( 136 last issue, 138 the issue before ) Average movement: ??? ( -2.2 last issue, -6.0 the issue before ) Warriors surviving: 18 ( 10 last issue, 14 the issue before ) The top 25 warriors are represented by 14 independent authors, Metcalf with 5, Ford and Janeczek with 3 each, Moore, Schmidt and Wilkinson each have 2. The remaining 8 redcoders have just the one warrior each. ( 13 authors last issue, 9 the issue before ) See below for a message from Pizza regarding the Corewar hills: _______________________________________________________________________________ Subject: A special message from the Pizza Server Date: 21.11.01, 21:45 Hi there! We're writing you because some time in the last couple months you wrote us, and we weren't there! The server was broken because the sysadmins moved it from an HPUX box to a Sun box and the elves for the longest time were not able to log in and rebuild and fix things. For you KOTH users, the pizza hill has been moved. Unfortunately for us and for you, We don't know where it went. May we suggest checking the newsgroup for more info. Naturally we'll be linking to the new page once we hear where it's located. Thank you for your patience and support! Sincerely, The Internet Pizza Elves _______________________________________________________________________________ 94 - What's New (Sorted by rank and score) # %W / %L / %T Name Author Score Age 1 41.4/ 35.7/ 23.0 Digital Instinct Christian Schmidt 147.1 0 1 28.1/ 16.9/ 54.9 Son of Vain Oversby/Pihlaja 139.4 0 6 32.5/ 32.8/ 34.8 Enough is enough! John Metcalf 132.2 1 16 24.6/ 21.5/ 53.9 LoN GeV Simon Wainwright 127.7 1 17 22.3/ 19.9/ 57.8 Revival Fire P.Kline 124.7 1 24 21.7/ 20.4/ 57.8 Return of the Stormbringe Christian Schmidt 123.0 1 24 26.8/ 30.8/ 42.4 Velvet Fist Ayan Chakrabarti 122.7 1 25 33.4/ 43.2/ 23.4 Light Sprain Dave Hillis 123.6 1 Players entering hill since last issue: 7 ( 12 last issue, 5 the issue before ) Average rank of new entries: 14 ( 10 last issue, 11 the issue before ) Two strong new entries here from Schmidt and Oversby/Pihlaja. Welcome to Ayan, whoose Velvet Fist enters the lower reaches of the hill. _______________________________________________________________________________ 94 - What's No More (Sorted by age) # %W / %L / %T Name Author Score Age 26 29.7/ 41.0/ 29.3 Ultima Christian Schmidt 118.4 42 26 36.7/ 51.5/ 11.9 Shapeshifter Michal Janeczek 121.8 37 26 19.4/ 20.0/ 60.6 The Dark One Christian Schmidt 118.9 31 26 23.3/ 26.2/ 50.5 Brigadeer M Joonas Pihlaja 120.3 24 26 19.9/ 21.0/ 59.1 Return of the Stormbringe Christian Schmidt 118.8 6 26 28.9/ 38.4/ 32.8 Carme Zul Nadzri 119.3 3 26 26.4/ 35.9/ 37.7 Recount P.Kline 116.8 3 26 32.8/ 44.0/ 23.2 Light Sprain Dave Hillis 121.7 2 _______________________________________________________________________________ 94 - What's Old # %W / %L / %T Name Author Score Age 20 19.6/ 16.3/ 64.1 Return of the Fugitive David Moore 122.9 109 4 26.0/ 18.8/ 55.1 nPaper II Paul-V Khuong 133.2 85 19 26.6/ 30.0/ 43.3 Vilex Ken Espiritu 123.2 80 16 22.3/ 19.5/ 58.2 Tie Factory Christian Schmidt 125.1 54 12 22.1/ 18.2/ 59.7 Cinammon John Metcalf 126.0 53 11 25.9/ 25.2/ 48.9 Uninvited John Metcalf 126.7 51 9 34.1/ 40.6/ 25.2 Combatra David Moore 127.6 40 _______________________________________________________________________________ The Revised Hall of Fame: * indicates the warrior is still active. Pos Name Author Age Strategy 1 Recycled Bits David Moore 164 P-warrior 2 The Stormbringer Christian Schmidt 142 Q^2 -> Stone/imp 3 Return of the Fugitive David Moore 109 * Q^4 -> Paper/imp 4 Self-Modifying Code Ben Ford 108 P-warrior 5 death by redcode Simon Wainwright 91 Q^2 -> Bomber 6 nPaper II Paul-V Khuong 85 * MiniQ^3 -> Paper 7 Vilex Ken Espiritu 80 * P-warrior 8 Stonewashed Christian Schmidt 78 Q^3 -> Paper/stone 9 Jade Ben Ford 75 Q^4 -> Stone/imp 10 Stranger John Metcalf 73 Q^3 -> Bomber 11 EvoP 3 Ken Espiritu 71 Q^3 -> Paper/imp 12 The Fugitive David Moore 70 MiniQ^2 -> Paper/imp 13 One Step Beyond John Metcalf 67 MiniQ^3 -> Stone/imp 14 Snowman John Metcalf 64 P-warrior 15 Draken Fire Ben Ford 63 Q^3 -> Bomber 16 Trefoil the original Steve Gunnell 56 P-warrior 17 Tie Factory Christian Schmidt 54 * Q^3 -> Paper = Fixed Ken Espiritu 54 Qscan -> Paper 19 Cinammon John Metcalf 53 * MiniQ^3 -> Paper/imp/wimp 20 Pattel's Virus Ben Ford 52 P-warrior = Exor Ken Espiritu 52 Q^3 -> Paper 21 Uninvited John Metcalf 51 * MiniQ^3 -> Stone/imp = The Outsider Simon Wainwright 51 QScan -> Stone/imp = Galatea Ben Ford 51 Q^2 -> P-warrior 24 Icen Ben Ford 50 Q^3 -> Paper = Silver Talon 1.2 Edgar 50 Scanner 26 No More Innocuous Leonardo Liporati 49 Q^4 -> Paper = trefoil 23 226 Steve Gunnell 49 P-warrior = Puddleglum John Metcalf 49 Q^3 -> Paper/stone 29 Circle of Fire John Metcalf 48 P-warrior = Shadow Christian Schmidt 45 Q^2 -> Paper/stone 31 Twin Christian Schmidt 44 P-warrior = Origami Harquebus mjp 44 P-warrior 33 Stylized Euphoria Ken Espiritu 43 Q^4 -> Paper/imp 34 Slippery Eels Ben Ford 42 Q^3 -> Paper = Even Less Innocuous TeamQ3 42 Q^3 -> Paper = Spooky Wench John Metcalf 42 Q^3 -> Stone/imp = Ultima Christian Schmidt 42 P-warrior 38 myBlur2 Paulsson 41 Scanner = WingShot Ben Ford 41 Oneshot 40 Combatra David Moore 40 * Boot-distance calculator = Digitalis 5 Christian Schmidt 40 Q^3 -> Clear/imp = Alive and K(qu)icking Leonardo Liporati 40 MiniQ^3 -> Paper = Freight Train v0.2 David Moore 40 '88 Q^2 -> Stone/imp 44 Shapeshifter Michael Janeczek 37 P-Warrior 45 Vain Ian Oversby 36 Q^2 -> Stone/imp = Jaguar Christian Schmidt 36 Q^3 -> Stone/imp 47 Wintermute John Metcalf 35 MiniQ^3 -> Stone/imp 48 Qshot Christian Schmidt 34 Q^2 -> Oneshot 49 Quicksilver Michael Janeczek 33 * Q^4 -> Stone/imp = KafuFFLe John Metcalf 33 * MiniQ^3 -> Paper/stone = SnooPy P.Kline 33 P-warrior = chained to the system Simon Wainwright 33 *Unknown* Not much change here since last issue. _______________________________________________________________________________ Current Status of the Internet Pizza Server Beginner Hill: # %W / %L / %T Name Author Score Age 1 53.6/ 30.2/ 16.2 Light Sprain Dave Hillis 177.0 40 2 52.8/ 35.4/ 11.8 Ankle Breaker Dave Hillis 170.1 41 3 39.5/ 27.5/ 33.0 Agni Ayan Chakrabarti 151.6 20 4 43.4/ 35.6/ 21.0 Gomjabbar VI Ingo S Kacza 151.2 43 5 46.2/ 41.9/ 11.9 Grand Mal 1.1 Ransom Smith 150.5 93 6 36.4/ 23.6/ 40.0 test RF B1 Gino Oblena 149.1 5 7 39.6/ 33.0/ 27.4 MorphinMerlin Jeremy K 146.3 91 8 35.4/ 25.5/ 39.2 test RF A4 Gino Oblena 145.3 6 9 39.6/ 40.2/ 20.3 Seek&Destroy Ayan Chakrabarti 138.9 70 10 26.1/ 16.0/ 58.0 Liquid Crystal John Morahan 136.1 18 11 29.5/ 23.3/ 47.1 Un___ortant 1.1 Ransom Smith 135.7 13 12 39.5/ 43.4/ 17.1 8thTest Gino Oblena 135.7 1 13 38.3/ 44.8/ 16.9 Zaphod Ayan Chakrabarti 131.8 31 14 36.9/ 42.2/ 20.9 Advanced Spooner Josef Jahn 131.6 95 15 38.9/ 47.7/ 13.4 Xord Monominer XOSC:01 Gino Oblena 130.0 2 16 29.1/ 29.1/ 41.8 Simpleton Ayan Chakrabarti 129.1 29 17 38.9/ 49.0/ 12.1 Safai Ayan Chakrabarti 128.8 19 18 36.7/ 46.2/ 17.1 Even More Advanced (read: Josef Jahn 127.2 97 19 38.2/ 49.7/ 12.2 JGFTestQ Gino Oblena 126.7 4 20 22.0/ 20.4/ 57.6 Watcher John Metcalf 123.5 63 21 24.6/ 26.0/ 49.4 Caladan III Ingo S Kacza 123.1 50 22 33.8/ 46.1/ 20.1 BhootRaj Ayan Chakrabarti 121.6 21 23 29.2/ 38.2/ 32.6 Disaster Area 2.0 Stefan Foerster 120.2 44 24 21.9/ 25.6/ 52.5 Hyper Advanced (read: sux Josef Jahn 118.2 82 25 33.2/ 48.6/ 18.2 Hot Knife Wayne Sheppard 117.8 36 26 29.3/ 43.5/ 27.2 Xord Catapult v2.q4f Gino Oblena 115.1 3 Top 25 Averages: 36.1/ 35.6/ 28.3 136.7 40 For the short length of time Pizza was up, the beginners' hill saw 66 successful challenges. Six warriors reached retirement age, Mob Boyz, Pimp King, Heatseeker, Arkenstone, Kenshin d and the boy's a time bomb. ______________________________________________________________________________ Current Status of the KOTH.ORG '94 No Pspace Hill: # %W/ %L/ %T Name Author Score Age 1 38/ 24/ 38 Quicksilver Michal Janeczek 151.5 589 2 36/ 22/ 42 Son of Vain Oversby/Pihlaja 150.4 416 3 46/ 42/ 12 G3-b David Moore 149.3 97 4 36/ 24/ 40 Inky Ian Oversby 148.9 306 5 45/ 41/ 14 Hazy Lazy ... Steve Gunnell 148.6 169 6 43/ 41/ 16 Behemot Michal Janeczek 146.1 650 7 36/ 26/ 38 Uninvited John Metcalf 145.3 509 8 35/ 25/ 40 Olivia Ben Ford 144.9 555 9 33/ 22/ 44 nPaper II Paul-V Khuong 144.6 827 10 37/ 31/ 32 Blacken Ian Oversby 143.1 1074 11 45/ 47/ 8 test John Metcalf 143.1 1 12 35/ 27/ 39 Revival Fire P.Kline 142.6 295 13 40/ 41/ 19 Little Jewel X Lukasz Grabun 138.4 5 14 41/ 44/ 15 Deep Freeze X Lukasz Grabun 138.4 16 15 36/ 34/ 30 Keyser Soze Anton Marsden 138.1 528 16 43/ 50/ 7 He Scans Alone x P.Kline 137.1 155 17 30/ 23/ 47 paper/stone test simon 136.3 102 18 41/ 46/ 13 Kenshin D Steve Gunnell 136.3 31 19 32/ 27/ 41 Qtest Christian Schmidt 136.0 349 20 27/ 19/ 54 Mr Sheen B Steve Gunnell 134.5 8 The hill has aged by 471 and only 7 warriors remain from last issue's hill status. Among those which perished are Eraser II (age 781), Jinx (662), Jade (600), Phantom Menace (465), G2-b (413), Stalker (393), Vain (141), Brigadeer (127) and Phantasm 50 (119). _______________________________________________________________________________ The '94 No Pspace Hall of Fame: * indicates the warrior is still active. Pos Name Author Age Strategy 1 Blacken Ian Oversby 1074 * Q^2 -> Stone/imp 2 nPaper II Paul-V Khuong 827 * MiniQ^3 -> Paper 3 Eraser II Ken Espiritu 781 Scanner 4 Jinx Christian Schmidt 662 Scanner 5 Behemot Michal Janeczek 650 * MiniQ^3 -> Bomber 6 Jade Ben Ford 600 Q^4 -> Stone/imp 7 Quicksilver Michal Janeczek 589 * Q^4 -> Stone/imp 8 Olivia Ben Ford 555 * Q^4 -> Stone/imp 9 Keyser Soze Anton Marsden 528 * 10 Uninvited John Metcalf 509 * MiniQ^3 -> Stone/imp 11 The Phantom Menace Anton Marsden 465 12 Boys are Back in Town Philip Kendall 441 Scanner = Zooom... John Metcalf 441 Scanner 14 Son of Vain Oversby/Pihlaja 416 * Qscan -> Stone/imp 15 G2-b David Moore 413 Twoshot (?) 16 Stalker P.Kline 393 Scanner 17 Qtest Christian Schmidt 349 * 18 Vain Ian Oversby 330 Q^2 -> Stone/imp 19 Omnibus John Metcalf 327 20 Win! David Moore 322 Scanner 21 Inky Ian Oversby 306 * 22 Revival Fire P.Kline 295 * 23 Recovery Ian Oversby 280 MiniQ^2 -> Paper/stone 24 The Fugitive David Moore 274 MiniQ^2 -> Paper/imp 25 Jaguar Christian Schmidt 269 Q^3 -> Stone/imp Blacken moves into four figures and is still going strong. More than half of the current hill has a place in the Hall of Fame, artificial aging at work? Can anyone help fill out the missing strategies? _______________________________________________________________________________ Extra - Son of Vain by Ian Oversby and Joonas Pihlaja The original Vain was designed and implemented for the '94 draft hill. At that time, the hill was very diverse with a good selection of p-spacers, imp/stones, papers and scanners. Gigolo had recently left the hill and p-spacers were in the acendancy - there were around 5 or 6 on the hill most of the time. My initial write-up of Vain can be found on google groups at http://groups.google.com/groups?selm=20010426161203.09498.00001092%40ng-mk1.aol.com For a stone to do well on the hill it was clear that it should take some points from other stones and papers in addition to thrashing p-spacers and scanners. To trash a p-spacer it was enough to be resilient enough against any anti-stone component in a paper that the stone was frequently fighting pure stones / scanners or bombers. My initial research led me to believe that most of the papers on the hill were based on either RetinA by Paul Kline or CC-Paper by Franz. RetinA is a defensive self-fixing paper using some mov instructions to fix neighbours in case they have been hit by a spl carpet. Timescaper paper: s1 spl @0, #step1 mov }s1, >s1 s2 spl @0, #step2 mov }s2, >s2 ; -- bombing mov {s2, From the early development stages, Vain performed well against the imp/stones on the hill. Paul Kline observed that numbers work very well against stones in Core Warrior 32: "A single stand-still program is at a disadvantage against an opponent running at multiple locations. Kill one part and the others run faster." Additionally, the stones of that time did not generally throw real dat bombs and d-clear was very resilient vs increments, decrements or dat 0,0. Vain performed somewhat less well against scanners than most stones because of his size. Indeed, I imagined his presence should attract all manners of scanners, one-shots and vampires. However the score was not as poor as I imagined. I can think of a number of reasons why this might be the case. Perhaps most importantly, stunning the clear does not make much difference for several cycles - the stone might still land the fatal bomb. Another significant factor seemed to be the step-size. As most scanners are at least 8 instructions, a coarse step was fine against them. One-shots have not done well on the '94 hill in the past few years as everybody submitted several versions of their warrior with slightly different boot distances until they slaughtered any poor one-shot tenuously clinging to its position. Vain entered the hill in a similar position to Newt and they scored similarly until Core Warrior 67 when Newt dropped several places and Vain rose a little. It seems that Newt is a stronger warrior according to the relative positions on the Koenigstuhl so the reason for this performance on the '94 hill is unclear to me. If anyone has any ideas I would be very interested to hear them. ** -- Joonas' Bit -- ** The overall strategy of Son of Vain (SoV) is the same as in Vain -- a stone to keep the scanners away, a d-clear to give an edge over other stone/imps, and imps to protect against paper. The intention was to beef up Vain so that it could stand against modern warriors, perhaps tacking on a newer quickscan and sliming the boot a bit. Somehow, SoV's evolution turned into the search for the holy grail of Core War: The ultimate warrior with no weaknesses. Obviously we never found it, but sure had an interesting time looking. * Vain, ancestors ----------------- Redundancy is a factor in almost every warrior from papers and imp/stones to intricate multiple component warriors. This is seen especially in the warriors that influenced Vain's development: Nimbus 1.2 by Alex MacAuley - Huge imp spiral + parallel delayed dat wipe. The idea was to use the imp as an offence to disrupt the opponent and leave the clear to mop up the cripples. Smooth Noodle Map by Matt Hastings - A small, fast and disruptive bomber followed by paper and/or dat clear + bombing. (_The Core War Newsletter_, Fall 1992 and Winter 1993 issues.) Vagabond by Paul Kline - Stone -> Anti-imp paper. Paul's debriefing gives valuable insight into creating a successful warrior -- be resilient and be prepared. (_Push Off_, October 25, 1993) Impfinity by Planar - A stone/stone/imp/imp. Philosophically the most influential warrior in Vain's development. Carefully calibrated twin stones and imp launchers for redundancy, with the stones mutating into clears during end game. (Also, the stones split fast enough to shrug off a scanner's stun attack for a while.) And finally, not directly attributed, but sharing similar features: PacMan v3 and v6 by David Moore - A parallel stone and delayed clear. The stone is particularly disruptive, with the clear killing it after a suitable number of cycles. The common features in all these warriors are asymmetry and redundancy -- they handle multiple types of opponents by having a primary attack coupled with a secondary component that takes over if the first is wounded or killed. * From Vain to Son ------------------ Now for some spade work. The first thing to do was to probe Vain for its weaknesses. Here are some results (quickscans were turned off in Vain and the opponents): enemy Vain ties enemy Vain ties * Clears/One shots * Scanners One Shot 52 24 24 Boys Are Back in 51 25 24 Frontwards 42 30 28 myBlur 2 49 31 20 ostest2 41 25 34 Blur 2 46 40 14 goonie 25 29 26 Ice (from Fire&) 42 45 13 HSA 40 55 5 * Paper/Stone * Paper Recovery 23 11 66 nPaper II 48 4 48 Shadow 1 8 91 Recovery Pulp 21 9 70 Puddleglum 0 10 90 Sad 16 13 71 unrequited love 10 3 87 No More Innoc 0 4 96 Fixed 1 34 65 * Stone/Imps Nine Seven Six 21 15 64 Baseline Deluxe 2 11 87 Newt 16 2 82 Jade 2 14 84 IcePick 4 21 75 Jaguar 1 9 90 The Stormbring 3 8 89 Wintermute 0 10 90 Vain has trouble with one-shots and clears, which we found out was due to the component boot distances. The active components were booted after the warrior body, quite close to each other, and a one-shot would quite often miss the decoys and stun the whole warrior. Also, many of the newer scanners give Vain grief again due to its component boot distances and largish components. Most papers (omitted) scored like No More Innocuous, virtually all ties. However, as the results show, anti-imp paper are a real threat against Vain. This is also true for the son. Results against stone/imps are encouraging -- Vain has the lead. Newer stone/imps like Jaguar or The Stormbringer aren't all that vulnerable. (Note that SoV development started in December 1999, so the warriors we tested against are from that time.) The goal then, was to beef up Vain against one-shots and clears while at least retaining performance again stone/imps. Note that P-spacers weren't targetted specifically as SoV was to go on -94nop. [Vain however was written for the -94 hill.] * The stone ----------- The Rosebud stone in Vain is five lines long, throws bombs at .33c, and uses a djn-stream. It doesn't include its own bomb, so it moves bits of core (usually dat 0,0) around hoping to hit the opponent. Newer scanners (The Machine or myBlur 2, for instance) are optimised against this type of bomb so that they fall into their second phase, usually a clear, when the scanning loop is hit by a dat 0,0. Some spl/dat wipes such as the wipe from Recycled Bits or The Core Clear are also optimised against dat 0,0 throwing stones. After a few iterations of redesigning Rosebud, we decided that keeping that design wasn't good for us. What we really wanted was to thwart anti-dat clears and scanners with real dat bombs, just like Carbonite and most other stone/imps. The stone should bomb for a long time preferably hitting every core location, so that if an opponent stone cripples the clear, the stone would at least have a chance of killing the opponent. It should end in a dat wipe for good measure to cover any spots the bombing missed, and it should have a minimal footprint. An original design goal was also to make the stone's long bombing run be able to sometimes defeat paper, like Rosebud. This never worked out as our other constraints restrict the maximum length of the bombing run to about 8000 bombs and 8000 decrements. We just couldn't get a long enough bombing time and still have a good bomb spread. Another conflicting constraint is that we wanted to make the stone component brittle. At this point our design looks pretty normal, like Carbonite: stone: spl #0, 0 mov bmb, 1-TIME*step add #step, -1 djn.f -2, <1234 ... dat 0,0 ... bmb: dat >-1,>1 They say that necessity is the mother of invention, but in this case it turned out to be Paul Kline and John Metcalf. In issue #65 Kline published a method for creating a small 3-line stone that bombs almost all of core by modifying its step size during the battle. Why hadn't this technique been used in a stone/imp before? Well, those stones look more or less like this: mov }1-N*2, 1-step tgt: sub.x #step, -1 jmp -2, }-2 The way this one works is best seen through the debugger. In short, it starts an a-field increment stream at tgt-N*2 that will hit every second cell and finally the 'tgt' line, mutating the '#step' field after N bombs. This happens in subsequent passes, every 4000 bombs. The initial step needs to be chosen so that no bombs hit the stone while it is running. The increment stream and step have to be carefully calibrated, and the easiest way to do this is to use only one process in the loop. We need to have a multi-process stone as the clear and imp launcher are started in parallel with it. The obvious modification to Kline's stone is to add an spl at the front, but this doesn't work as expected. The timing is all wrong, and the jmp line can't be converted into something useful such as djn. The number of processes fed to the stone would need to be very carefully calibrated, but we never went with this further. We need a different mechanism to mutate bits of the stone. Scouring various stones we found the crucial idea in John Metcalf's Puddleglum. Its stone (Spooky Wench?) looks like this: sStep equ 3039 sTime equ 3357 sGo: spl #0, 0 spl #0, 0 ; aggressive stone (Spooky Wench?!) sLp: mov sBmb, @sP sSel: add #sStep, sP sP: djn.f sLp, {sSel-sStep*sTime sBmb: dat 2, >1 Look at it in cdb. Note that the bomb pointer is actually the djn.f line's b-field! When the djn executes, the mov line has just put an sBmb right where the djn's b-field points, so the bomb pattern ends up being: dat 1, >1 ; a-field of sBmb is decr. by djn's { dat -1, -1 ; decremented. ... dat 1, >1 dat -1, 1 ... Instead of having a '2' in the bomb's a-field, we could have any offset, making this similar to the Torch bombing engine (with decrements as the second bomb at .33c and .33c bombing totalling to .66c), rather than a .33c bomber with a two-line payload like Puddleglum. Puddleglum's stone is probably the first to use this technique. By carefully programming the step size and decrement offset we can make the decrement land anywhere we want, and we want it to land on the '#sStep' field. But only the a-field should be mutated, so we changed the djn to an a-field decrement. In any case, while not as disruptive as .f decrements, we feel that a-decrements are the next best thing. [While it is certainly possible to a-decrement protect scanner or stone loops, most aren't. Also, against typical paper modules a-decrements are doing more damage than other forms. See the article on Newt v0.2 in issue 69. This is what the stone looks like: ; step: first step size before mutation. ; hop: offset of decrement from bomb. ; time: number of bombs before first mutation of step size. ; label tgt: target of first mutation (see below). stone: spl #0, 0 mov bmb, @2 tgt: add #step, 1 djn.a -2, {(tgt-hop)-(step*time) ... dat 0,0 ... bmb: dat 1+hop, >1 The resilience to process timing changes in Puddleglum's form is paramount -- the decrements are always in sync with the bombs. It doesn't really matter how many processes are fed into the stone, or whether any fall off the djn.a line, as those events don't change the bomb pointer. The >1 b-field in the bomb was chosen because eventually we want the bomb to hit the add line of the stone, mutating it into a forward clear like in Carbonite. Note that in addition to mutating the stone's step, we can also mutate the decrement line's 'hop' to change the stone's pattern. This won't affect where the bombs land though, so can only be used to realign the decrements so as to finally hit the add line. We can also mutate the mov line's a-field to change the bomb pointer, but in this case we must make sure that the line 'bmb-1' has been bombed before. This has the potential to mutate the 'hop' again to a previous value (or another value), as the bomb at 'bmb' may have been mutated earlier. Another technique for realigning the bombs is to bomb the djn line, changing the bomb pointer to 1. This technique is used in the bomber from Recycled Bits to prolong the bombing time. It slows our bomber to .25c though, so should be done only late in the battle. OK, it all works out in theory. How do we find good constants to make the stone work in practice? Our approach was to program a custom simulator that runs the stone and records where the bombs and decrements land. Then weed out those constants that either hit the stone body too soon, or have bad bomb spread. A big speedup came from the fact that bombs and decrements are thrown linearly, which lets us skip over the majority of cycles where we can prove that nothing interesting happens, and lets us concentrate on the the cycles where a bomb or decrement lands on prespecified cells. A further time savings is that in some versions of the program we actually run the simulation backwards in time -- this lets us efficiently force the constraint that we want the last bomb to land on the add line (mutating the stone into a forward clear). In our tests it was beneficial to make the stone weaker than the form given above. It should be made a brittle as possible so that if anything touches it, such as an opponent stone bomb, it should preferably self-destruct and let the processes in the clear take over. The final form is: spl 0, 0 stone spl 0, 0 mov bmb, @2 add #step, @-1 djn.a @-1, *st+(tgt-hop)-(step*time) ... dat 0,0 .. bmb dat >hop, >1 The { in the djn.a line was changed to * so that the stone wouldn't start an a-decrement wipe when damaged, possibly hurting our clear component. We couldn't come up with something that would reliably self-destruct in case the stone itself was wiped by an opponent's djn.f stream -- this version usually only stops producing more processes. Our best hope is for our clear to put the crippled stone out of its misery before long. One idea to make the stone even more brittle is to use spl }0, {0 instructions instead of spl 0,0 instructions, as in some versions of Carbonite. Unfortunately this doesn't work as expected -- a bomb eventually hits the spl at stone-1, which has live processes. When they execute the bomb instruction they increment the b-field of stone, and the stone ends up looking like this: dat >hop, >1 stone spl }1, {1 ; when executed, decrement mov line mov TRASH, @2 add #step, @-1 djn.a @-1, *st+(tgt-hop)-(step*time) ... dat 0,0 .. bmb dat >hop, >1 Granted, when stone-1 line is hit the number of processes live at the stone line is known, so the mutation caused by the spl }1,{1 line at stone could be compensated for at least for a while. [Compensated by having bmb-1, bmb-2,... bombed before a process mutates the mov line.] It's just too much trouble for the effort. * Clear ------- The d-clear form is from Digitalis 2: dgate dat 0, 1234 dmop dat 0, dclr+5-dgate ... dat 0,0 ... dclr spl #0, 0 mov dmop, >dgate djn.f -1, >dgate This has the advantage of having a small footprint as the bomb line (dmop) is moved away from the clear body. In our tests we found that this form has problems when fighting other stone/imps. Namely if the clear is decremented it would start hogging processes and not clear with a good bomb any more. Hogging processes when the clear is decremented is good, because in that case we are probably fighting another stone/imp and want the clear to take over. But the processes end up being scheduled so that the clear moves in spasms, which isn't so good after all. Another problem with the clear above is that while the stone is alive it doesn't gather many processes. This hurts us when the stone is crippled but not dead since the clear doesn't have enough steam to wipe over it. We decided to add another spl to the clear and decrement protect it. This form of clear should survive a single a- b- or f- decrement stream, and also any random a-decrements from stones (like Newt or Impfinity v4g1, for example). dgate dat 0, 1234 dat.a <2667, dclr+7-dgate dat.a <2667, dclr+7-dgate ... dat 0,0 ... dclr spl #0, 0 spl #0, {dgate mov dgate+2,>dgate djn.f -1, >dgate As now both the stone and the clear have two spls at the top, the role of process scheduling during booting is highlighted. * Imps, launchers, and the quickscan ------------------------------------ Yer basic 3-point imps. Fairly early on we decided on the Vortex/EvolImp launcher for its small size/efficiency ratio. B-field imps seem more resilient, but on the hill nPaper II beats us up anyway. Which is strange. But then most anti-imp papers can and do serious damage to SoV. The imp instruction is 'mov.i #10,2667', with the idea that if the imp hits a clear that uses the a-field as its clear pointer, then the clear would overwrite itself if it is placed 10 cells of further from the gate. The #10 was probably better than #1 in tests for some particular clear... As for the quickscan, David Moore had published his faster version in Return of the Fugitive so we chose that. It is a nuisance to work with as it is sensitive to the locations of the decode tables, but we never got around to reprogramming it to be more flexible. Instead we created a database of suitable parameters and chose among them during optimisation. The maximum separation between scanned locations is limited by a pair of scanning instructions in that code, which dictates that the one of the decoding tables and the attack routine must be spaced as far apart as possible in the code. We implemented approximate decoding to help bring the separation limit higher, but there wasn't any noticeable effect. Unfortunately we didn't figure the real problem out until later. * The Boot ---------- The most trouble we had was putting the components together so that we wouldn't be clobbered by an opposing qscan attack. The problem is that without the quickscan we have a minimum of 14 non-empty cells, not counting the quickscan, its attack, or any of the boot. Compare this with your typical paper which has maybe 11-14 cells sans quickscan+attack, including boot. non-empty cells launcher 1 + 3 | 4 stone body + bomb 4 + 1 | 5 clear body + bomb 4 + 1 | 5 = 14 non-empty cells The form of the quickscan requires that one of the decoding tables and the quickscan attack be at opposite ends of the warrior. The quickscan attack is 7 lines, and the decoding table is 3 cells, so it's not possible to put the imp-launcher at the top of the warrior, like some other stone/imps (Vain, Newt v0.2). This means we need to boot the imp launcher, since we can't afford to leave it unbooted with live processes *behind* either the decode table or qscan attack, which a one-shot is sure to find (and then to stun anything behind it). For the same reason we didn't start the imp-trail inside the warrior, but wanted to boot the imp instruction as well. Even Blur-like scanners are a threat to processes that are directly behind some big decoy at the start of the battle -- the scanner finds the decoy and may not find anything else in the time it takes to stun the processes that are behind it. We also need to boot some auxiliary data that the stone and clear need. non-empty cells boot clear bomb+data 2 + 1 | 3 boot stone bomb+misc 1 + 1 | 2 = 19 non-empty cells Considering the amount of stuff we need to boot, an unrolled 1c boot is out of the question (it would take an additional 11 cells + some). In any case, the boot needs to send four parallel processes to the imp launcher, and we might as well use those four processes to boot most of the continuous data. A part of the boot looks like this: spl 1 spl 1 mov b1 ; start secondary boot t2 spl 1 , >b2 ; t2 = qscan decode table spl 1 , >b3 mov hop , >1 ; dat bomb for stone dmop dat.a dmopa , dclr+8-dgate ; dat bomb for clear dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dsrc dclr spl #0 , 4 spl #0 , {dgate mov dgate+2 , >dgate djn.f -1 , >dgate dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 ;;-- qscan body ;; qscan seq qb + d , qb + d + b2 jmp q1 sne qb + d * a1, qb + d * a1 + b2 seq a1 ; q0-1 and boot-1 t1 jmp boot , >a2 ; must be dat 0,0's. ;;-- stone ;; spl0 ssrc ;spl 0 , 0 st spl 0 , 4 mov -1+dbofs, @2 add #step , @-1 djn.a @-1 , *st+(tgt-hop)-(step*time) dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 dat 0,0 ;;-- misc. boot ;; ; bmbdist: address of stone bomb. ; gatedist: address of clear gate. ; wipedist: address of clear wipe start. bmbdist equ (sdist+dbofs) gatedist equ (ddist+dgate-dclr) wipedist equ (sdist+dwipeofs-ddist+dclr-dgate) misc mov imp , load0+idist mov db , load0+bmbdist pmop mov dmop , load0+gatedist+2 mov spl0 , {sdst mov dmop , clear ;assert CORESIZE==8000 st equ 13 fi equ 1961 sWipe equ (sPtr-1) gate equ (attack-2) sPtr dat fi+st, fi for 5 dat 0,0 rof attack mov sPtr, sWipe wipe mov sBmb, sWipe, >sWipe ; carpet jmn.f wipe, >sWipe reset mov.ba @a, @a ; reset loop sub a, @a sne.x *sPtr, @sPtr ; scan a sub.x #-2*st, sPtr jmz.f loop, @sPtr slt sPtr, #dBmb+3-sPtr jmp attack djn reset, #16 sBmb spl #0, {0 clear mov dBmb, >gate djn.f clear, {gate dBmb dat >1, 2-gate end loop+1 _______________________________________________________________________________ Extra Extra Extra - Oneshot '88 by John Metcalf As indicated by the unimaginative name, Oneshot '88 is a typical example of a oneshot, this time implemented for the ICWS '88 standard hill. Which other strategies are still waiting for an effective implementation in '88? ;redcode ;name Oneshot '88 ;author John Metcalf ;strategy .66c scan -> .66c clear ;assert CORESIZE==8000 st equ -11 ; -13 ; -12 ; -10 ; -14 fi equ -110 ; -106 ; -100 ; -108 ; -114 ; 141.6 144.0 145.7 141.3 145.9 : David Moore's '88 Benchmark ; 143.7 141.1 137.7 139.2 135.4 : Warriors from KOTH (published) kill dat <2667, , Philip Kendall , Anton Marsden , John Metcalf and Christian Schmidt From: magnuspaulsson@yahoo.com (Magnus Paulsson) Subject: Re: Core Warrior 80 Date: 7 Feb 2002 15:03:28 -0800 Message-ID: <73dcff73.0202071503.3c338766@posting.google.com> > The Revised Hall of Fame: * indicates the warrior is still active. > 38 myBlur2 Paulsson 41 Scanner Hurray! I'm on the Hall of Fame! (Which makes a bit boring reading, almost only Q^[34] and P-space wariors) On my brief revisit to corewar land I also found this: > Current Status of the Internet Pizza Server ICWS '94 Draft Hill: .... > 7 34.6/ 39.3/ 26.1 test Paulsson 130.0 12 I might have been slightly higher on the 94 hill sometime but it hasn't been many times. Bugger that I can't remember what the test thingy is ..... -Magnus From: carter_cheng@yahoo.com (Jobless Poor) Subject: An open source MARS in perl or.... Date: 8 Feb 2002 07:42:31 -0800 Message-ID: I was originally going to write an open source perlMars as a way to improve my Perl programming skills. The thing would eventually have(among its components) two parse modules. one using a simplified redcode format with Perl possibly embedded into the syntax. The second would be included to give full pMars compatibility. The virtual machine/interpreter would consist of two files: a perlVM and a C VM for performance critical applications. The last piece of the puzzle would be a debugger(still not sure what kind of features it should have since I do not really play Corewars). However, it seems that most of you are interested in a java MARS(understandibly for portability reasons). I`d be willing to help out some here if help is needed, but I`m pretty rusty when it comes to Java programming(have a bit of a biase against the language ;-)). Regards, Carter From: bdonlan@maine.rr.com (bdonlan) Subject: Re: Redcode modifications Date: 8 Feb 2002 10:43:04 -0800 Message-ID: Steve Gunnell wrote in message news:<02012823143904.12777@eldred>... > Hello everyone, > > I have some modifcations for Redcode available for apraisal. There are 4 > new opcodes and some modifications to the .X opcode modifier. The new > opcodes are: > > RND A, B > The syntax (and code) is based on the MOV command (except RND.I is the same > as RND.F) The RND operation generates a random number in the range 0 to A+1 > and stores it as directed by B. The numbers are not guaranteed to be > uniformly distributed because we use the mod function to scale the result. > However the deviation should be small. Each Warrior maintains its own seed > which is overkill with the current code. The seed is derived from the > placement seed in a way that honours the -f and -F flags without allowing > the Warrior to determine the placement sequence (can anyone verify that the > scheme is adequate?). This opcode has been introduced to allow multi > warriors that use a games theory based switcher rather than a p-switcher. I > am sure that random bombers and scanners will be written. I have arranged > it so that the following code always produces the same number in the > A-field of the destination as the B-field: Better: RND A, * In the instruction A, randomizes(for A- and B- fields) between 0 and CORESIZE-1, and with opcodes, changes to a random opcode. From: Lukasz Grabun Subject: Really Frenzy II Date: Fri, 8 Feb 2002 12:28:27 +0000 (UTC) Message-ID: few weeks ago, after i had entered the nop hill for the first time, PVK stated that my quick scan didn't work in a proper way; i must confess that i had no idea what he meant :) i thought there were just one q^4 code and everyone used it. oh, was i wrong. yesterday i was reading archives of r.g.c on google and found some articles about mentioned quick scanning engine. jade's author (sorry, i don't remember the name) from whom i've taken q^4 code stated that his scan was not perfect (it was too long iirc). hey, i thought to myself, isn't it that what PVK was talking about? :) so - being not good at cw programming enough - i've decided to steal different q4 from different warrior. i've chosen L.H. Liporati's "No More Innocuous". well, it was a huge change: while my old qscan gave me 131 pts against my warrior suite (behemot, quicksilver, npaper II, hazy lazy, recycled paper and many other good warriors) the new one pushed my score to 137 pts (2000 fights, no mistakes here). other major change is also that i somewhat reorganize the rf bombs: instead of having huge gaps between two parts of an incendiary now rf leaves just 15 cells. i was too lazy to check other gaps (despite 445, the results was 15-cell gap: 137.95 pts, 445-cell gap 136.59). i've also changed the allignment of code. well, if someone is interested, here it comes: p.s. it seems that a-driven incendiaries works better than b-driven ones. "rf >" gets 1% less wins than "rf }" when they fight against each other. dont know why. (2000 fights, also no mistakes here). ;redcode-94nop ;name Really Frenzy II ;author Lukasz Grabun ;strategy optimized and altered version of Really Frenzy ;assert 1 org qGo step equ 3510 gate equ (TOP-4) away equ 2000 dist equ 15 boot mov bim , away+20+TOP src spl 2 , TOP+10 dest spl 2 , TOP+10+away spl 1 , <-away mov dest , #5 jmp TOP+away+1 , <-away TOP start add #step , 2 mov 19 , @1 mov >bis , @2-dist jmz.b -3 , gate djn.f -1 , >gate bmb dat >5335 , 2-gate for 5 dat 0 , 0 rof bim mov dist , }dist for 36 dat 0 , 0 rof qf equ qKil qs equ 200 qd equ 4000 qi equ 7 qr equ 8 qBmb dat {qi*qr-10 , {1 ; -+)>] 0/1 cycles [(<+- qGo seq qd+qf+qs , qf+qs ; 1 jmp qSki , {qd+qf+qs+qi+2 sne qd+qf+5*qs , qf+5*qs ; B+1 seq qf+4*qs , {qTab ; B jmp qFas , }qTab sne qd+qf+8*qs , qf+8*qs ; A seq qf+7*qs , {qTab-1 ; A-1 jmp qFas , {qFas sne qd+qf+10*qs , qf+10*qs ; C seq qf+9*qs , {qTab+1 ; C-1 jmp qFas , }qFas seq qd+qf+2*qs , qf+2*qs ; B-2 jmp qFas , {qTab seq qd+qf+6*qs , qf+6*qs ; A-2 djn.a qFas , {qFas seq qd+qf+3*qs , qf+3*qs ; B-1 jmp qFas , {qd+qf+3*qs+qi+2 ; -+>)] 2 cycles [(<+- sne qd+qf+14*qs , qf+14*qs ; E+1 seq qf+13*qs , qTab sne qd+qf+17*qs , qf+17*qs ; D seq qf+16*qs , Date: Fri, 08 Feb 2002 20:18:01 GMT Let's name a deal: I'll work on yours if you start working on it again too! I just have one question, are you using the GPL? And if so, do you mind if add the features I want to add to mine to yours or should I branch it off? In article <003101c1adf9$fb011a60$0b00000a@haskin.int>, bhaskin@yahoo.com wrote: > ----- Original Message ----- > From: "Ben Snitkoff" > To: "Multiple recipients of list COREWAR-L" > Sent: Monday, February 04, 2002 8:30 PM > Subject: pMars in Java sourceforge.net proj. approved! > > > > Hey there! > > > > I just got approval on the pMars in Java program, feel free yo register at > > sourceforge and send me an e-mail and I'll be more than happy to add you > > to the developer list! > > > > Thanks in advance for any support on this project. > > > > Ben > > As I mentioned a few days ago, if anyone is interested I already have a > working corewars VM written in java. This is at the corewar sourceforge > project http://sourceforge.net/projects/corewar/ in the cvs at > http://sourceforge.net/cvs/?group_id=3452. If anyone starts coding on it > just let me know and I'm sure we could get you added as a developer. > > Brian Haskin > bhaskin@yahoo.com > > > > > _________________________________________________________ > Do You Yahoo!? > Get your free @yahoo.com address at http://mail.yahoo.com Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 10 Feb 2002 10:04:00 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 02/11/02 Date: 11 Feb 2002 13:24:38 -0500 Message-ID: <200202110509.AAA07918@gevjon.ttsg.com> Weekly Status on 02/11/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Feb 10 17:18:09 EST 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 43/ 13 G3-b David Moore 146 120 2 43/ 42/ 15 Hazy Lazy ... Steve Gunnell 145 192 3 42/ 41/ 17 Behemot Michal Janeczek 142 673 4 32/ 23/ 45 Inky Ian Oversby 142 329 5 30/ 19/ 52 nPaper II Paul-V Khuong 140 850 6 30/ 22/ 48 Son of Vain Oversby/Pihlaja 138 439 7 30/ 25/ 44 Quicksilver Michal Janeczek 136 612 8 40/ 44/ 16 Deep Freeze X Lukasz Grabun 135 39 9 42/ 49/ 9 test John Metcalf 135 24 10 30/ 25/ 46 Olivia Ben Ford 135 578 11 32/ 31/ 37 Blacken Ian Oversby 133 1097 12 37/ 42/ 21 Really Frenzy II Lukasz Grabun 132 10 13 29/ 26/ 44 Revival Fire P.Kline 132 318 14 33/ 34/ 33 Keyser Soze Anton Marsden 131 551 15 28/ 27/ 45 Qtest Christian Schmidt 130 372 16 28/ 27/ 46 Uninvited John Metcalf 129 532 17 36/ 42/ 22 Little Jewel X Lukasz Grabun 129 28 18 30/ 33/ 37 Sinister Slayer Lukasz Grabun 127 1 19 24/ 22/ 54 paper/stone test simon 125 125 20 17/ 25/ 59 Mr Sheen 19 Steve Gunnell 109 2 21 15/ 26/ 59 Mr Sheen Test A 25 Steve Gunnell 103 0 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 02/11/02 Date: 11 Feb 2002 13:26:03 -0500 Message-ID: <200202110506.AAA07874@gevjon.ttsg.com> Weekly Status on 02/11/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sat Feb 2 12:16:06 EST 2002 # %W/ %L/ %T Name Author Score Age 1 54/ 33/ 13 Fire and Ice II David Moore 175 3 2 33/ 21/ 46 KAT v5 Dave Hillis 145 35 3 38/ 35/ 26 Black Moods Ian Oversby 141 99 4 27/ 17/ 56 Katafutr Michal Janeczek 137 43 5 39/ 43/ 18 Greetings From Asbury Par JKW 135 63 6 34/ 36/ 29 Ogre Christian Schmidt 133 51 7 32/ 32/ 36 Controlled Aggression Ian Oversby 132 103 8 19/ 7/ 74 Evol Cap 4 X John Wilkinson 130 172 9 22/ 14/ 64 Kin John Metcalf 129 11 10 18/ 8/ 74 Denial David Moore 129 44 11 30/ 32/ 38 Big I.F.F.S. Dave Hillis 127 32 12 25/ 25/ 50 Damage Inflicted Robert Macrae 124 42 13 15/ 7/ 78 Evolve X v4.0 John Wilkinson 123 120 14 15/ 8/ 78 Black Box v1.1 JKW 122 66 15 20/ 20/ 60 Venom v0.2b Christian Schmidt 121 125 16 31/ 44/ 25 Pagan John K W 117 157 17 27/ 38/ 36 La Vibra 19 Lukasz Grabun 116 1 18 26/ 36/ 38 test CS 116 60 19 16/ 23/ 61 Purple v0.1 Christian Schmidt 109 124 20 18/ 28/ 54 Disaster Area 2.8 Stefan Foerster 109 30 21 6/ 32/ 62 BR1 Devin Kilminster 79 0 From: Koth Subject: KOTH.ORG: Status - Standard 02/11/02 Date: 11 Feb 2002 13:27:28 -0500 Message-ID: <200202110500.AAA07690@gevjon.ttsg.com> Weekly Status on 02/11/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Wed Jan 23 12:41:14 EST 2002 # %W/ %L/ %T Name Author Score Age 1 44/ 38/ 18 Oneshot '88 John Metcalf 151 1 2 32/ 21/ 47 Freight Train David Moore 143 80 3 43/ 44/ 13 Foggy Swamp Beppe Bezzi 142 76 4 42/ 44/ 14 Blur '88 Anton Marsden 140 117 5 31/ 21/ 48 Test Alexander (Sasha) Wa 140 19 6 30/ 24/ 46 sIMPly.Red v0.95 Leonardo Humberto 137 37 7 39/ 42/ 19 Stasis David Moore 136 187 8 29/ 23/ 47 Guardian Ian Oversby 135 79 9 39/ 43/ 18 Beholder's Eye V1.7 W. Mintardjo 135 355 10 36/ 39/ 24 PacMan David Moore 133 109 11 36/ 40/ 24 Tangle Trap David Moore 132 153 12 31/ 30/ 39 vala John Metcalf 131 2 13 39/ 48/ 13 Iron Gate Wayne Sheppard 131 405 14 39/ 49/ 12 ig Wayne Sheppard 130 7 15 22/ 17/ 60 EV Paper John K Wilkinson 127 93 16 24/ 21/ 55 Jinglo John Metcalf 126 4 17 25/ 25/ 50 Shish-Ka-Bob Ben Ford 126 35 18 23/ 21/ 56 Test I Ian Oversby 126 136 19 29/ 32/ 39 Frog Sticker P.Kline 125 29 20 23/ 24/ 53 Evoltmp 88 John K W 123 130 21 18/ 31/ 51 paper test2 John Metcalf 106 0 From: "Brian Haskin" Subject: Re: pMars in Java sourceforge.net proj. approved! Date: 11 Feb 2002 13:28:53 -0500 Message-ID: <000901c1b2ba$f572fee0$0b00000a@haskin.int> ----- Original Message ----- From: "Ben Snitkoff" To: "Multiple recipients of list COREWAR-L" Sent: Friday, February 08, 2002 4:32 PM Subject: Re: pMars in Java sourceforge.net proj. approved! > Let's name a deal: I'll work on yours if you start working on it again too! > > I just have one question, are you using the GPL? And if so, do you mind if > add the features I want to add to mine to yours or should I branch it off? > > Well I'm pretty busy in R/L now, so I don't know how much I will be working on it. But if you want to work on it go ahead and add to the existing project. It's not under the GPL but under a 2-clause BSD style license. This basically lets anyone use the source for anything they want. I thinks it's of the most benefit for everyone involved in a project this small if it doesn't branch. Of course because it's under an open license you can do whatever you want. But I'm sure if you start working on it that Anton Marsden would give you developer privileges. So grab the source, start hacking and let me know when you have something ready to commit. :) Brian Haskin bhaskin@yahoo.com _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 02/11/02 Date: 11 Feb 2002 13:30:17 -0500 Message-ID: <200202110503.AAA07793@gevjon.ttsg.com> Weekly Status on 02/11/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Thu Feb 7 18:29:45 EST 2002 # Name Author Score Age 1 fclear Brian Haskin 45 71 2 test John Metcalf 42 15 3 clock strikes twelve John Metcalf 37 1 4 D-clearM Ken Espiritu 33 87 5 Her Majesty P.Kline 30 106 6 Xord Monominer XOSC:01 Gino Oblena 30 26 7 QuiVa John Metcalf 28 180 8 8thTest Gino Oblena 21 18 9 Pitbull Christian Schmidt 18 43 10 sptst (4D-p) Stefan Foerster 7 4 11 Evolver 4890 x 200 Anonymous 0 0 From: "Vittorio Benintende" Subject: pcrobots Message-ID: Date: Mon, 11 Feb 2002 19:17:30 GMT it's possible for you to convert pcrobots to a 32bit version? From: birk@andromeda.ociw.edu Subject: Koenigstuhl News Date: 12 Feb 2002 19:50:51 -0500 Message-ID: <200202122213.g1CMDXo10171@andromeda.ociw.edu> Congratulations to John Metcalf! His warrior 'Tinyshot' is the new #1 on the Tiny-Koenigstuhl. Christoph http://www.ociw.edu/~birk/COREWAR/koenigstuhl.html From: "Vittorio Benintende" Subject: help Message-ID: Date: Tue, 12 Feb 2002 20:32:35 GMT Hi. I want to make up a PCROBOTS Tournement over the Internet, open to everybody. For whom do not know what is PCROBOTS i explain: PCROBOTS is a program that simulates a robot war in an arena. Programmers are called to write an AI program that simulate a robot in the arena, capable to fight and to rest alive at the end of the game. To make up this tournement i need your help. The idea is to let everyone partecipate to the game, so if you know a programmer, please tell him/her that "this is an opportunity to demostrate his/her strenght in the programming ability". I need help because i can't contact every programming magazine in the world or every programming sites and i need to find one or more sponsors that can pay for a reward to be given to the winner. If you want to help me, please write an e-mail to: stortoaranci@libero.it I will set up an internet site at this address: www.benintende.com/pcrobots From: pk6811s@acad.drake.edu (P. Kline) Subject: RevivalFire Date: 13 Feb 2002 14:18:14 -0800 Message-ID: <92b0a3d6.0202131418.b44476d@posting.google.com> Hope this does well on Koenigstuhl :-) ;redcode-94nop ;name Revival Fire ;kill Revival Fire ;author P.Kline ;assert CORESIZE == 8000 ;strategy ok, it's Airbag ;strategy changed to use imp-bombs; tweaked spacing, step and placement ;strategy imp failsafe (against nPaper) like Recount ;bmb1 (simple imp) is effective against stone-imps ;bmb2 kills scanners immediately but turns into an imp in a few cycles ;one-two stone is improved by gathering all its parts closer together ;imp carpets are separated and moved away from home step equ 335 one add.f incr ,ptr ; part 1 of .5c bomber mov.i bmb2 ,*ptr jmz.f one ,>check ; airbag check jmp imps1 ,cptr djn.f -1 ,>cptr mov.i #step ,1 for 20 dat.f 0,0 rof impst1 equ (check+221) impst2 equ (check+132) imps2 spl >finish , Subject: yace 1.1 Date: Fri, 15 Feb 2002 20:32:20 +0100 Message-ID: Hi everybody, It was a long time since my last post here, but I am back to genetically evolving warriors :-) I have updated my Homepage http://yace.cjb.net and modified yace a little bit: * Installer-System added * Makefile updated (now also compiles on FreeBSD) * Testset-warriors updated Nothing has changed for the evolution process, the binary should be the same as in yace 1.0. I will not update yace 1.1 any more, because I concentrate on another project: I am writing a mars simulator, with these goals in mind: * speed, speed, speed! should be as fast as possible * written in ANSI C++, compile at least with g++ 2.95.3 and Visual Studio 6.0 * Sourcecode should be easy to use (e.g. in other evolver) I have just finished the design (it's all in my head :), and I am pretty shure it will be faster than pmars, but will not have any graphical interface. Martin :wq! From: Carter Cheng Subject: Re: yace 1.1 Date: Sat, 16 Feb 2002 11:51:12 GMT Message-ID: <1103_1013860272@news.netvigator.com> On Fri, 15 Feb 2002 20:32:20 +0100, "Martin Ankerl" wrote: > Hi everybody, > > It was a long time since my last post here, but I am back to genetically > evolving warriors :-) > > I have updated my Homepage http://yace.cjb.net and modified yace a little > bit: > * Installer-System added > * Makefile updated (now also compiles on FreeBSD) > * Testset-warriors updated > > Nothing has changed for the evolution process, the binary should be the same > as in yace 1.0. > > I will not update yace 1.1 any more, because I concentrate on another > project: I am writing a mars simulator, with these goals in mind: > > * speed, speed, speed! should be as fast as possible > * written in ANSI C++, compile at least with g++ 2.95.3 and Visual Studio > 6.0 > * Sourcecode should be easy to use (e.g. in other evolver) > > I have just finished the design (it's all in my head :), and I am pretty > shure it will be faster than pmars, but will not have any graphical > interface. > > Martin > :wq! > > > Be interested to see what you have when you are done. From what you have on your webpage I assume you are going to use static metaprogramming techniques with templates. Always wanted to learn how that is done. ;-) From: Carter Cheng Subject: labellist syntax Date: Sat, 16 Feb 2002 13:06:22 GMT Message-ID: <1104_1013864782@news.netvigator.com> redcode.ref mentions two separators for label lists the standard space and the newline. I was wondering in developing a compat module whether it would be ok to omit the newline as a separator? It is not really that difficult to support but it would make thins a little cleaner source code wise. Thanks in advance, From: M Joonas Pihlaja Subject: Re: labellist syntax Date: 16 Feb 2002 13:16:30 -0500 Message-ID: On Sat, 16 Feb 2002, Carter Cheng wrote: > redcode.ref mentions two separators for label lists the > standard space and the newline. I was wondering in developing > a compat module whether it would be ok to omit the newline as > a separator? It is not really that difficult to support but > it would make thins a little cleaner source code wise. You mean label1 label2 [code] wouldn't work any more? That would probably break a lot of warriors. Joonas From: "John Metcalf" Subject: Tournament Announcement Date: 16 Feb 2002 13:17:54 -0500 Message-ID: S P R I N G / S U M M E R 2 0 0 2 C O R E W A R T O U R N A M E N T Perhaps the most compelling difference between everyday hill play and a corewar tournament is the shift of emphasis. The overall performance of a player increases in importance while that of individual warriors lessens. With this in mind I decided to organise a tournament. Prizes are to be awarded in a variety of categories which will include best overall, best newcomer and best performance in a single round. The tournament will have 5 rounds. A player's total tournament score will be the sum of his (or her) highest 4 scores from individual rounds. Good Luck! ----------------------------------------------------------------------- ROUND 1: TINY CORE (Deadline: 30th March 2002) The opening round will take place using the tiny hill parameters. Each player may enter up to two warriors. All warriors will play in a round robin tournament with no self-fights, three points for a win, one point for a tie. A player's score is that of his highest scoring warrior. pmars -s 800 -p 800 -c 8000 -l 20 -d 20 -P Look what scores well on Koenigstuhl's infinite tiny hill, find out how it works, and then try to beat it! Look what hasn't been tried in tiny yet, then give it a try. Entries to grumpy3039@hotmail.com please. PINs are not allowed. Other forms of hand-shaking are fine. Entries will be made public soon after the results are announced. If entering two warriors, please make sure they really are different, not the same program with different steps, distances, etc. ----------------------------------------------------------------------- ROUND 2: BIG LP NO-PSPACE (Deadline: ???) pmars -s 55440 -p 8 -c 500000 -l 200 -d 200 No annoying imps here :-) Again, you may enter up to two warriors. ----------------------------------------------------------------------- _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp. From: "Brian Haskin" Subject: Re: labellist syntax Date: 16 Feb 2002 13:19:19 -0500 Message-ID: <008a01c1b701$59448e80$0b00000a@haskin.int> ----- Original Message ----- From: "Carter Cheng" To: "Multiple recipients of list COREWAR-L" Sent: Saturday, February 16, 2002 9:31 AM Subject: labellist syntax > redcode.ref mentions two separators for label lists the standard space and the newline. I was wondering in > developing a compat module whether it would be ok to omit the newline as a separator? It is not really that > difficult to support but it would make thins a little cleaner source code wise. > > Thanks in advance, > If you want to be able to run a fairly large number of existing warriors unmodified then you'll need to support newline as a separator in label lists. Also as a side note, it's not just redcode.ref from pmars that has newline as a label list separator. It's listed in the grammar from the ICWS'94 draft as well (http://www.koth.org/info/icws94.html#2.3). Brian Haskin bhaskin@yahoo.com _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com From: Paul-V Khuong Subject: Re: yace 1.1 Date: 16 Feb 2002 13:26:47 -0500 Message-ID: <20020216002014.5720.qmail@web11607.mail.yahoo.com> --- Martin Ankerl wrote: [...] > I will not update yace 1.1 any more, because I > concentrate on another > project: I am writing a mars simulator, with these > goals in mind: > > * speed, speed, speed! should be as fast as possible > * written in ANSI C++, compile at least with g++ > 2.95.3 and Visual Studio > 6.0 > * Sourcecode should be easy to use (e.g. in other > evolver) Have you tried 'exhaust', pilaja(?missing an h somewhere :/)'s simulator. It was built to be used inside evolvers, etc. __________________________________________________ Do You Yahoo!? Yahoo! Sports - Coverage of the 2002 Olympic Games http://sports.yahoo.com From: M Joonas Pihlaja Subject: Re: yace 1.1 Date: 16 Feb 2002 15:04:38 -0500 Message-ID: On Sat, 16 Feb 2002, Paul-V Khuong wrote: [snip Martin is writing a simulator] > Have you tried 'exhaust', pilaja(?missing an h > somewhere :/)'s simulator. It was built to be used > inside evolvers, etc. Martin's post a couple of years ago was the main reason exhaust ever got out the door. Until a better designed light-weight simulator comes along, I'd recommend using exhaust as an embeddable mars. Beware not to miss out on the bad points: It pollutes the global name space, isn't thread safe, is a bit hard to interface with at points, misses p-space, doesn't contain a real assembler etc. Re: speeding up battles. According to a few tests, using a counter of deadly instructions in core (and calling a tie if there are none left) is definitely not worth it for most battles. The extra overhead in mov.i processing totally kills performance for almost all warriors. Even for imp/{paper,stone,whatever} battles, the overhead almost balances out with the gain in tie identification. The problem is that when, say, two imp/stones battle it out together, there aren't really all that many ties where the imps cover all of core. With the exception of Quicksilver, the imps in modern warriors are so obese they can't even run a full lap. With paper/paper, fights don't end up in obliteration of all dats from core. Then again, the tests I did were pretty limited, so perhaps such a modification is worth it in other environments. Joonas From: Ransom Smith Subject: Re: Tournament Announcement Date: Sun, 17 Feb 2002 01:02:19 -0000 Message-ID: In article , John Metcalf wrote: > S P R I N G / S U M M E R 2 0 0 2 C O R E W A R T O U R N A M E N T > Ooh, a tournament? But I'm so rusty.... > > ROUND 1: TINY CORE (Deadline: 30th March 2002) > Tiny? Tiny is good, I seemed to do well with that last time. > ROUND 2: BIG LP NO-PSPACE (Deadline: ???) > We'll see how I fare here. Incidentally, thanks for fwding it to my email address as well -- I wouldn't have caught it just here. -- In memory yet green, in joy still felt, The scenes of life rise sharply into view. We triumph; Life's disasters are undealt, And while all else is old, the world is new. From: Carter Cheng Subject: Re: labellist syntax Date: Sun, 17 Feb 2002 05:21:14 GMT Message-ID: <1105_1013923274@news.netvigator.com> On 16 Feb 2002 13:19:19 -0500, "Brian Haskin" wrote: > > ----- Original Message ----- > From: "Carter Cheng" > To: "Multiple recipients of list COREWAR-L" > Sent: Saturday, February 16, 2002 9:31 AM > Subject: labellist syntax > > > > redcode.ref mentions two separators for label lists the standard space and > the newline. I was wondering in > > developing a compat module whether it would be ok to omit the newline as a > separator? It is not really that > > difficult to support but it would make thins a little cleaner source code > wise. > > > > Thanks in advance, > > > > If you want to be able to run a fairly large number of existing warriors > unmodified then you'll need to support newline as a separator in label > lists. > > Also as a side note, it's not just redcode.ref from pmars that has newline > as a label list separator. It's listed in the grammar from the ICWS'94 draft > as well (http://www.koth.org/info/icws94.html#2.3). > > Brian Haskin > bhaskin@yahoo.com > > > > > _________________________________________________________ > Do You Yahoo!? > Get your free @yahoo.com address at http://mail.yahoo.com > I guess I will have to keep it in there then. I think I might still be able to keep the sources clean but it will require a little more thought. From: Lukasz Grabun Subject: small bug in koth.c v 1.2 Date: Sun, 17 Feb 2002 22:12:21 +0000 (UTC) Message-ID: the program won't run if the first character of warrior's name given in the ;name line is a number. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Koth Subject: KOTH.ORG: Status - 94 No Pspace 02/18/02 Date: 18 Feb 2002 10:15:16 -0500 Message-ID: <200202180509.AAA08479@gevjon.ttsg.com> Weekly Status on 02/18/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Feb 17 18:21:13 EST 2002 # %W/ %L/ %T Name Author Score Age 1 33/ 22/ 45 Inky Ian Oversby 144 339 2 42/ 42/ 16 Behemot Michal Janeczek 142 683 3 43/ 45/ 12 G3-b David Moore 141 130 4 29/ 18/ 52 nPaper II Paul-V Khuong 140 860 5 34/ 28/ 39 Revival Fire P.Kline 140 328 6 31/ 23/ 46 Son of Vain Oversby/Pihlaja 138 449 7 40/ 42/ 18 Really Frenzy II Lukasz Grabun 138 20 8 40/ 44/ 16 Hazy Lazy ... Steve Gunnell 137 202 9 31/ 27/ 42 Olivia Ben Ford 135 588 10 42/ 50/ 9 test John Metcalf 133 34 11 30/ 27/ 43 Quicksilver Michal Janeczek 133 622 12 38/ 43/ 19 Little Jewel X Lukasz Grabun 132 38 13 39/ 46/ 15 Deep Freeze X Lukasz Grabun 132 49 14 33/ 33/ 34 Blacken Ian Oversby 132 1107 15 34/ 36/ 30 Keyser Soze Anton Marsden 132 561 16 28/ 27/ 45 Qtest Christian Schmidt 129 382 17 32/ 37/ 31 Djinn Test A 10 Steve Gunnell 127 1 18 22/ 18/ 60 Mr Sheen B Steve Gunnell 127 8 19 27/ 29/ 44 Uninvited John Metcalf 126 542 20 30/ 35/ 35 Sinister Slayer Lukasz Grabun 125 11 21 2/ 2/ 0 Djinn Test A 11 Steve Gunnell 7 2 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 02/18/02 Date: 18 Feb 2002 10:16:51 -0500 Message-ID: <200202180506.AAA08388@gevjon.ttsg.com> Weekly Status on 02/18/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sat Feb 2 12:16:06 EST 2002 # %W/ %L/ %T Name Author Score Age 1 54/ 33/ 13 Fire and Ice II David Moore 175 3 2 33/ 21/ 46 KAT v5 Dave Hillis 145 35 3 38/ 35/ 26 Black Moods Ian Oversby 141 99 4 27/ 17/ 56 Katafutr Michal Janeczek 137 43 5 39/ 43/ 18 Greetings From Asbury Par JKW 135 63 6 34/ 36/ 29 Ogre Christian Schmidt 133 51 7 32/ 32/ 36 Controlled Aggression Ian Oversby 132 103 8 19/ 7/ 74 Evol Cap 4 X John Wilkinson 130 172 9 22/ 14/ 64 Kin John Metcalf 129 11 10 18/ 8/ 74 Denial David Moore 129 44 11 30/ 32/ 38 Big I.F.F.S. Dave Hillis 127 32 12 25/ 25/ 50 Damage Inflicted Robert Macrae 124 42 13 15/ 7/ 78 Evolve X v4.0 John Wilkinson 123 120 14 15/ 8/ 78 Black Box v1.1 JKW 122 66 15 20/ 20/ 60 Venom v0.2b Christian Schmidt 121 125 16 31/ 44/ 25 Pagan John K W 117 157 17 27/ 38/ 36 La Vibra 19 Lukasz Grabun 116 1 18 26/ 36/ 38 test CS 116 60 19 16/ 23/ 61 Purple v0.1 Christian Schmidt 109 124 20 18/ 28/ 54 Disaster Area 2.8 Stefan Foerster 109 30 21 6/ 32/ 62 BR1 Devin Kilminster 79 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 02/18/02 Date: 18 Feb 2002 10:18:25 -0500 Message-ID: <200202180503.AAA08301@gevjon.ttsg.com> Weekly Status on 02/18/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Thu Feb 7 18:29:45 EST 2002 # Name Author Score Age 1 fclear Brian Haskin 45 71 2 test John Metcalf 42 15 3 clock strikes twelve John Metcalf 37 1 4 D-clearM Ken Espiritu 33 87 5 Her Majesty P.Kline 30 106 6 Xord Monominer XOSC:01 Gino Oblena 30 26 7 QuiVa John Metcalf 28 180 8 8thTest Gino Oblena 21 18 9 Pitbull Christian Schmidt 18 43 10 sptst (4D-p) Stefan Foerster 7 4 11 Evolver 4890 x 200 Anonymous 0 0 From: Koth Subject: KOTH.ORG: Status - Standard 02/18/02 Date: 18 Feb 2002 10:20:01 -0500 Message-ID: <200202180500.AAA08252@gevjon.ttsg.com> Weekly Status on 02/18/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Tue Feb 12 02:57:32 EST 2002 # %W/ %L/ %T Name Author Score Age 1 45/ 37/ 17 Oneshot '88 John Metcalf 153 1 2 34/ 21/ 45 Freight Train David Moore 148 80 3 33/ 21/ 47 Test Alexander (Sasha) Wa 145 19 4 44/ 43/ 13 Foggy Swamp Beppe Bezzi 144 76 5 43/ 44/ 13 Blur '88 Anton Marsden 143 117 6 32/ 23/ 44 sIMPly.Red v0.95 Leonardo Humberto 142 37 7 32/ 22/ 46 Guardian Ian Oversby 141 79 8 38/ 38/ 24 PacMan David Moore 138 109 9 39/ 42/ 19 Stasis David Moore 137 187 10 37/ 39/ 24 Tangle Trap David Moore 136 153 11 39/ 42/ 18 Beholder's Eye V1.7 W. Mintardjo 136 355 12 32/ 30/ 38 vala John Metcalf 134 2 13 26/ 21/ 53 Jinglo John Metcalf 132 4 14 28/ 23/ 49 Shish-Ka-Bob Ben Ford 132 35 15 40/ 47/ 13 Iron Gate Wayne Sheppard 132 405 16 26/ 20/ 54 Test I Ian Oversby 131 136 17 40/ 48/ 12 ig Wayne Sheppard 131 7 18 24/ 17/ 59 EV Paper John K Wilkinson 130 93 19 30/ 33/ 37 Frog Sticker P.Kline 128 29 20 25/ 22/ 53 Evoltmp 88 John K W 127 130 21 8/ 62/ 30 I kill u Achillu 53 0 From: pak21@cam.ac.uk (Philip Kendall) Subject: Re: small bug in koth.c v 1.2 Date: 18 Feb 2002 10:50:19 -0000 Message-ID: In article , Lukasz Grabun wrote: > the program won't run if the first character of warrior's name >given in the ;name line is a number. I don't have time to fix this for the next couple of days, so if anyone wants to patch it before that, you know my e-mail address :-) Phil -- Philip Kendall http://www.srcf.ucam.org/~pak21/ From: pak21@cam.ac.uk (Philip Kendall) Subject: Re: small bug in koth.c v 1.2 Date: 19 Feb 2002 21:53:04 -0000 Message-ID: In article , Philip Kendall wrote: >In article , >Lukasz Grabun wrote: >> the program won't run if the first character of warrior's name >>given in the ;name line is a number. > >I don't have time to fix this for the next couple of days, so if anyone >wants to patch it before that, you know my e-mail address :-) Now horribly bodge fixed to work. Somebody recode this in Perl... http://www.srcf.ucam.org/~pak21/corewar/koth.html P -- Philip Kendall http://www.srcf.ucam.org/~pak21/ From: stylinsty@yahoo.com (Stylinsty) Subject: Breed the core and get to watch the war online at botbattle.com Date: 20 Feb 2002 22:52:16 -0800 Message-ID: <6d61d212.0202202252.4758e78d@posting.google.com> Hey whats up fellow developers, BotBattle.com is where you program bots online and watch them destroy other peoples bots in the battle arena. It is open source and made for those who like A.I. and Bots wars. To learn and refine game programming algorithms you can view other peoples bots easy to learn source code. Then you can program your own and even suggest commands to add to the language. Whether you are a beginner or pro it is fun to program bots and test your bots A.I. against others A.I. If they beat your bot you can see their source code and learn from it, improve your bot and watch it fight. Java programmers can delight in modifying the client if they wish as the program is open source. You can refine the code that makes the game work, add new commands to update the current version or you can post your own version up for play at botbattle.com I love A.I. so join in and help with the botbattle adventure by simply checking out the site. From: mrwayne@mindspring.com (Wayne Sheppard) Subject: Where's the hills? Date: 22 Feb 2002 14:36:35 -0800 Message-ID: <4c20dbb1.0202221436.3b5888f6@posting.google.com> I haven't been around here in forever. Still quiet as always. I had this cool idea for a warrior yesterday, and I thought I'd try it out. I downloaded pmars and started coding my first p-space warrior (I never liked p-space). Now that I have something to test, where do I send it? Is Pizza up? Does KOTH.ORG have a pspace hill? What's up with this Koenigstuhl Hill? It doesn't look automated. Not good for testing. From: martinankerl@web.de (Martin) Subject: Re: yace 1.1 Date: 23 Feb 2002 05:19:59 -0800 Message-ID: <453a311f.0202230519.62d3fe46@posting.google.com> > Martin's post a couple of years ago was the main reason exhaust > ever got out the door. Until a better designed light-weight > simulator comes along, I'd recommend using exhaust as an > embeddable mars. At the moment I use exhaust all the time to verify + optimize my own mars. Exhaust is very well optimized, I carefully compare the generated assembler code with my own mars. It's difficult to create c++ code which compiles into something as faster than exhaust (Argh...) Next post when it works. Martin From: Winston Bean Subject: Re: Tournament Announcement Date: Sat, 23 Feb 2002 13:46:25 -0900 Message-ID: <3C781BC1.EF966709@hotmail.com> > ROUND 1: TINY CORE (Deadline: 30th March 2002) Just wanted to say that I appreciate these liberal deadlines -- more time to tinker is always good. I personally wouldn't be adverse to a 10 month tournament. BTW, what sort of strategies are people thinking of for Round 2? Anyone working on "smart" warriors? -Winston From: Lukasz Grabun Subject: bombing raid duration Date: Sun, 24 Feb 2002 12:46:54 +0000 (UTC) Message-ID: currently i'm working on stones/bombers (as anyone can see). to be more exact, i'm tweaking really frenzy engine to make it perform better. i thought that bombing raid duration (that is number of bombs thrown) is good measure of bomber performance. so i found such a step that my bomber throws sth about 1700 incendiary bombs. the biggest gap has 6 cells - comparing it to behemot's pattern it's easy to find out that is not so bad. but 1700-bomb stone performs worse than 1000-bomb stone (not mentioning that it performs worse than behemot). can someone tell why is it so? -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: Paul-V Khuong Subject: Re: bombing raid duration Date: 24 Feb 2002 14:39:41 -0500 Message-ID: <20020224143856.63483.qmail@web11604.mail.yahoo.com> --- Lukasz Grabun wrote: > currently i'm working on stones/bombers (as anyone > can see). to > be more exact, i'm tweaking really frenzy engine to > make it perform > better. > > i thought that bombing raid duration (that is > number of bombs > thrown) is good measure of bomber performance. so i > found such a step > that my bomber throws sth about 1700 incendiary > bombs. the biggest gap > has 6 cells - comparing it to behemot's pattern it's > easy to find out > that is not so bad. but 1700-bomb stone performs > worse than 1000-bomb > stone (not mentioning that it performs worse than > behemot). While a long bombing sequence is good, it will be much better if the bombs are more spread out. For example, both 3044(? been a long time) and 4 are mod 4 steps in a 8000 cells core. Yet 3044 is more effective, because the bombs are mroe spread out. Thus, it has more chances of hitting bigger opponents. Of course, it will also tend to trigger scanners more often. __________________________________________________ Do You Yahoo!? Yahoo! Sports - Coverage of the 2002 Olympic Games http://sports.yahoo.com From: Paul-V Khuong Subject: Re: Tournament Announcement Date: 24 Feb 2002 17:11:24 -0500 Message-ID: <20020224010819.62405.qmail@web11602.mail.yahoo.com> --- Winston Bean wrote: > > ROUND 1: TINY CORE (Deadline: 30th March 2002) > > Just wanted to say that I appreciate these liberal > deadlines -- more > time to tinker is always good. I personally > wouldn't be adverse to a 10 > month tournament. BTW, what sort of strategies are > people thinking of > for Round 2? Anyone working on "smart" warriors? > -Winston I like that too... It means i can actually try and play :) I know i'm not going for "smart" warrior. I'm probably gonna ahve some fun and be creative. Build a spiralling stone. A bit like what Mintardjo(?) once did. And then i'm probably going to enter a stone dodging stone if i can one that trashes the core fast enough to be good VS scanners. If not, it's gonna be a scanner with either clear or HSA style bombing. What about others? __________________________________________________ Do You Yahoo!? Yahoo! Sports - Coverage of the 2002 Olympic Games http://sports.yahoo.com From: Paul-V Khuong Subject: Re: Where's the hills? Date: 24 Feb 2002 17:18:50 -0500 Message-ID: <20020223192153.15522.qmail@web11603.mail.yahoo.com> Welcome back! I enver liked p-space either. Makes for gimmicky warriors, imho, but eh :/ KotH is up. No "normal" 94 hill, only the no=pspace one. Pizza is down until further notice. Koenighstul(?) is a bit like planar's recursive tournament. --- Wayne Sheppard wrote: > I haven't been around here in forever. Still quiet > as always. > > I had this cool idea for a warrior yesterday, and I > thought I'd try it > out. I downloaded pmars and started coding my first > p-space warrior > (I never liked p-space). Now that I have something > to test, where do > I send it? > > Is Pizza up? Does KOTH.ORG have a pspace hill? > > What's up with this Koenigstuhl Hill? It doesn't > look automated. Not > good for testing. __________________________________________________ Do You Yahoo!? Yahoo! Sports - Coverage of the 2002 Olympic Games http://sports.yahoo.com From: Lukasz Grabun Subject: Re: bombing raid duration Date: Sun, 24 Feb 2002 21:55:30 +0000 (UTC) Message-ID: nie, 24 lut 2002 o 19:39 GMT, Paul-V Khuong: [..snip: about making stones..] > While a long bombing sequence is good, it will be much > better if the bombs are more spread out. For example, > both 3044(? been a long time) and 4 are mod 4 steps in > a 8000 cells core. Yet 3044 is more effective, because > the bombs are mroe spread out. Thus, it has more > chances of hitting bigger opponents. Of course, it > will also tend to trigger scanners more often. yes, that's quite obvious; however i've tested both steps using a simple scanner (published here by Steve some time ago as a responce to my post about Inque). the step that gives 1000-bomb pattern gives 111 pts agains my warrior suite while the other one gives 119 pts. that's a huge difference imo. here's source of my bomber (the version that performs worse, if anyone is interested i can also post the step and the offset that better warrior uses). if anyone could test it and try to explain to me why it works so badly... well, i'll be grateful. ;redcode-94nop ;name Test Stone 13 ;author Lukasz Grabun ;assert 1 org qGo step equ 881 gate equ (TOP-4) away equ 2000 dist equ 15 off equ -100+65 moff equ 19 boot mov bim , away+moff+start src spl 2 , start+5 dest spl 2 , start+5+away csr spl 1 , clear+4 ;-boot the main body mov dest , #5 cds jmp start+away+1 , clear+4+away+off start add #step , 2 mov moff-1 , @1 mov >off+4 , @2-dist jmz.b -3 , gate djn.f -1 , >gate bmb dat >5335 , 2-gate for 5 dat 0 , 0 rof bim mov dist , }dist for 34 dat 0 , 0 rof qf equ qKil qs equ 200 qd equ 4000 qi equ 7 qr equ 8 qBmb dat {qi*qr-10 , {1 ; -+)>] 0/1 cycles [(<+- qGo seq qd+qf+qs , qf+qs ; 1 jmp qSki , {qd+qf+qs+qi+2 sne qd+qf+5*qs , qf+5*qs ; B+1 seq qf+4*qs , {qTab ; B jmp qFas , }qTab sne qd+qf+8*qs , qf+8*qs ; A seq qf+7*qs , {qTab-1 ; A-1 jmp qFas , {qFas sne qd+qf+10*qs , qf+10*qs ; C seq qf+9*qs , {qTab+1 ; C-1 jmp qFas , }qFas seq qd+qf+2*qs , qf+2*qs ; B-2 jmp qFas , {qTab seq qd+qf+6*qs , qf+6*qs ; A-2 djn.a qFas , {qFas seq qd+qf+3*qs , qf+3*qs ; B-1 jmp qFas , {qd+qf+3*qs+qi+2 ; -+>)] 2 cycles [(<+- sne qd+qf+14*qs , qf+14*qs ; E+1 seq qf+13*qs , qTab sne qd+qf+17*qs , qf+17*qs ; D seq qf+16*qs , Subject: KOTH.ORG: Status - 94 No Pspace 02/25/02 Date: 25 Feb 2002 00:16:34 -0500 Message-ID: <200202250509.AAA01060@gevjon.ttsg.com> Weekly Status on 02/25/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG 94 No Pspace CoreWar Hill: Last battle concluded at : Sun Feb 24 19:30:23 EST 2002 # %W/ %L/ %T Name Author Score Age 1 40/ 25/ 35 Inky Ian Oversby 156 378 2 35/ 23/ 42 Son of Vain Oversby/Pihlaja 148 488 3 35/ 22/ 43 nPaper II Paul-V Khuong 148 899 4 43/ 40/ 17 Behemot Michal Janeczek 146 722 5 44/ 42/ 14 Hazy Lazy ... Steve Gunnell 146 241 6 36/ 29/ 35 Quicksilver Michal Janeczek 144 661 7 34/ 26/ 40 Hopper Phooey 142 25 8 34/ 28/ 38 Olivia Ben Ford 139 627 9 40/ 42/ 18 Coffee and Sugar Lukasz Grabun 139 1 10 34/ 30/ 36 Revival Fire P.Kline 138 367 11 41/ 44/ 15 Test C Phooey 137 26 12 33/ 29/ 37 Uninvited John Metcalf 137 581 13 42/ 47/ 11 G3-b David Moore 137 169 14 38/ 41/ 21 Really Frenzy II Lukasz Grabun 136 59 15 40/ 44/ 17 Deep Freeze X Lukasz Grabun 135 88 16 35/ 34/ 32 Blacken Ian Oversby 135 1146 17 34/ 35/ 31 Keyser Soze Anton Marsden 133 600 18 34/ 40/ 26 Bugtown Rap Steve Gunnell 129 5 19 36/ 50/ 14 Kenshin D Steve Gunnell 122 4 20 18/ 49/ 34 Kernel Trojan Joshua 87 16 21 2/ 2/ 1 Test Stone 16 Lukasz Grabun 7 2 From: Koth Subject: KOTH.ORG: Status - ICWS Experimental 94 02/25/02 Date: 25 Feb 2002 00:17:58 -0500 Message-ID: <200202250506.AAA01011@gevjon.ttsg.com> Weekly Status on 02/25/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG ICWS Experimental 94 CoreWar Hill: Last battle concluded at : Sat Feb 23 12:57:29 EST 2002 # %W/ %L/ %T Name Author Score Age 1 53/ 33/ 15 Fire and Ice II David Moore 172 3 2 33/ 21/ 46 KAT v5 Dave Hillis 146 35 3 37/ 35/ 28 Black Moods Ian Oversby 140 99 4 27/ 16/ 56 Katafutr Michal Janeczek 138 43 5 23/ 7/ 70 Evol Cap 4 X John Wilkinson 138 172 6 21/ 8/ 71 Denial David Moore 135 44 7 33/ 32/ 35 Controlled Aggression Ian Oversby 134 103 8 24/ 14/ 62 Kin John Metcalf 134 11 9 34/ 36/ 30 Ogre Christian Schmidt 132 51 10 37/ 43/ 19 Greetings From Asbury Par JKW 132 63 11 28/ 25/ 47 Damage Inflicted Robert Macrae 130 42 12 31/ 32/ 37 Big I.F.F.S. Dave Hillis 129 32 13 24/ 20/ 57 Venom v0.2b Christian Schmidt 128 125 14 17/ 7/ 76 Evolve X v4.0 John Wilkinson 127 120 15 17/ 7/ 76 Black Box v1.1 JKW 127 66 16 26/ 36/ 38 test CS 117 60 17 30/ 44/ 26 Pagan John K W 116 157 18 26/ 37/ 37 La Vibra 19 Lukasz Grabun 115 1 19 21/ 28/ 51 Disaster Area 2.8 Stefan Foerster 114 30 20 19/ 23/ 58 Purple v0.1 Christian Schmidt 114 124 21 3/ 55/ 42 KI Wayne Sheppard 51 0 From: Koth Subject: KOTH.ORG: Status - MultiWarrior 94 02/25/02 Date: 25 Feb 2002 00:19:24 -0500 Message-ID: <200202250503.AAA00948@gevjon.ttsg.com> Weekly Status on 02/25/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Multiwarrior 94 CoreWar Hill: Last battle concluded at : Thu Feb 7 18:29:45 EST 2002 # Name Author Score Age 1 fclear Brian Haskin 45 71 2 test John Metcalf 42 15 3 clock strikes twelve John Metcalf 37 1 4 D-clearM Ken Espiritu 33 87 5 Her Majesty P.Kline 30 106 6 Xord Monominer XOSC:01 Gino Oblena 30 26 7 QuiVa John Metcalf 28 180 8 8thTest Gino Oblena 21 18 9 Pitbull Christian Schmidt 18 43 10 sptst (4D-p) Stefan Foerster 7 4 11 Evolver 4890 x 200 Anonymous 0 0 From: Koth Subject: KOTH.ORG: Status - Standard 02/25/02 Date: 25 Feb 2002 00:26:50 -0500 Message-ID: <200202250500.AAA00841@gevjon.ttsg.com> Weekly Status on 02/25/02 -=- irc.KOTH.org is up! Meetings held in #corewars -=- Tons of new features on www.KOTH.org/koth.html pages -=- *FAQ* page located at: www.KOTH.org/corewar-faq.html Current Status of the KOTH.ORG Standard KotH CoreWar Hill : Last battle concluded at : Sat Feb 23 12:05:10 EST 2002 # %W/ %L/ %T Name Author Score Age 1 46/ 37/ 17 Oneshot '88 John Metcalf 154 1 2 36/ 21/ 43 Freight Train David Moore 152 80 3 35/ 21/ 45 Test Alexander (Sasha) Wa 149 19 4 33/ 23/ 44 sIMPly.Red v0.95 Leonardo Humberto 144 37 5 32/ 22/ 45 Guardian Ian Oversby 142 79 6 43/ 43/ 15 Foggy Swamp Beppe Bezzi 142 76 7 42/ 43/ 14 Blur '88 Anton Marsden 142 117 8 39/ 37/ 24 PacMan David Moore 140 109 9 40/ 41/ 19 Stasis David Moore 140 187 10 34/ 30/ 36 vala John Metcalf 138 2 11 38/ 38/ 23 Tangle Trap David Moore 138 153 12 39/ 42/ 19 Beholder's Eye V1.7 W. Mintardjo 135 355 13 33/ 32/ 35 Frog Sticker P.Kline 134 29 14 27/ 20/ 52 Jinglo John Metcalf 134 4 15 25/ 17/ 58 EV Paper John K Wilkinson 133 93 16 27/ 20/ 53 Test I Ian Oversby 133 136 17 40/ 47/ 14 Wayne Sheppard 133 405 18 28/ 23/ 49 Shish-Ka-Bob Ben Ford 133 35 19 27/ 22/ 50 Evoltmp 88 John K W 132 130 20 40/ 48/ 12 ig Wayne Sheppard 132 7 21 0/ 78/ 22 jfImp James Huggett 22 0 From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: bombing raid duration Date: 25 Feb 2002 08:36:02 -0800 Message-ID: <92b0a3d6.0202250836.2db7fcb8@posting.google.com> Lukasz Grabun wrote in message news:... > i thought that bombing raid duration (that is number of bombs > thrown) is good measure of bomber performance. so i found such a step > that my bomber throws sth about 1700 incendiary bombs. the biggest gap > has 6 cells - comparing it to behemot's pattern it's easy to find out > that is not so bad. but 1700-bomb stone performs worse than 1000-bomb > stone (not mentioning that it performs worse than behemot). In all my testing with incendiaries a short bombing run was superior to long ones. Against the silk replicators you either hit them early or go into a spl-wipe of core as soon as possible to have any chance of killing them. And stone-imp components are so small you have little chance of stunning them before they kill you, so the sooner you start a core-wipe the better. Paul Kline From: pk6811s@acad.drake.edu (P. Kline) Subject: Re: Where's the hills? Date: 25 Feb 2002 08:41:14 -0800 Message-ID: <92b0a3d6.0202250841.34a9ebef@posting.google.com> mrwayne@mindspring.com (Wayne Sheppard) wrote in message news:<4c20dbb1.0202221436.3b5888f6@posting.google.com>... > I had this cool idea for a warrior yesterday, and I thought I'd try it > out. I downloaded pmars and started coding my first p-space warrior > (I never liked p-space). Now that I have something to test, where do > I send it? If you have a warrior with a really cool idea in it, just send it to me and I'll gladly test it for you. Paul Kline pk6811s@acad.drake.edu Message-ID: From: anton@paradise.net.nz (Anton Marsden) Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ) Date: 25 Feb 2002 09:16:15 GMT Archive-name: games/corewar-faq Last-Modified: September 4, 1999 Version: 4.2 URL: http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html Copyright: (c) 1999 Anton Marsden Maintainer: Anton Marsden Posting-Frequency: once every 2 weeks Core War Frequently Asked Questions (rec.games.corewar FAQ) These are the Frequently Asked Questions (and answers) from the Usenet newsgroup rec.games.corewar. A plain text version of this document is posted every two weeks. The latest hypertext version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.html and the latest plain text version is available at http://homepages.paradise.net.nz/~anton/cw/corewar-faq.txt. This document is currently being maintained by Anton Marsden (anton@paradise.net.nz). Last modified: Sat Sep 4 00:22:22 NZST 1999 ------------------------------------------------------------------------ To Do * Add the new No-PSpace '94 hill location * Add online location of Dewdney's articles * Make question 17 easier to understand. Add a state diagram? * Add info about infinite hills, related games (C-Robots, Tierra?, ...) * New question: How do I know if my warrior is any good? Refer to beginners' benchmarks, etc. * Add a Who's Who list? * Would very much like someone to compile a collection of the "revolutionary" warriors so that beginners can see how the game has developed over the years. Mail me if interested. ------------------------------------------------------------------------ What's New * Changed primary location of FAQ (again!) * Changed Philip Kendall's home page address. * Updated list server information * Changed primary location of FAQ * Vector-launching code was fixed thanks to Ting Hsu. * Changed the location of Ryan Coleman's paper (LaunchPad -> Launchpad) * Changed pauillac.inria.fr to para.inria.fr ------------------------------------------------------------------------ Table of Contents 1. What is Core War 2. Is it "Core War" or "Core Wars"? 3. Where can I find more information about Core War? 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? 5. What is ICWS'94? Which simulators support ICWS'94? 6. What is the ICWS? 7. What is Core Warrior? 8. Where are the Core War archives? 9. Where can I find a Core War system for ...? 10. Where can I find warrior code? 11. I do not have FTP. How do I get all this great stuff? 12. I do not have access to Usenet. How do I post and receive news? 13. Are there any Core War related WWW sites? 14. What is KotH? How do I enter? 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? 16. How does SLT (Skip if Less Than) work? 17. What is the difference between in-register and in-memory evaluation? 18. What is P-space? 19. What does "Missing ;assert .." in my message from KotH mean? 20. How should I format my code? 21. Are there any other Core War related resources I should know about? 22. What does (expression or term of your choice) mean? 23. Other questions? ------------------------------------------------------------------------ 1. What is Core War? Core War is a game played by two or more programs (and vicariously by their authors) written in an assembly language called Redcode and run in a virtual computer called MARS (for Memory Array Redcode Simulator). The object of the game is to cause all processes of the opposing program to terminate, leaving your program in sole posession of the machine. There are Core War systems available for most computer platforms. Redcode has been standardised by the ICWS, and is therefore transportable between all standard Core War systems. The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again. There are no absolute addresses in Core War. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address 0. The next instruction is 1, and the previous one obviously -1. However, all numbers are treated as positive, and are in the range 0 to CORESIZE-1 where CORESIZE is the amount of memory locations in the core - this means that -1 would be treated as CORESIZE-1 in any arithmetic operations, eg. 3218 + 7856 = (3218 + 7856) mod CORESIZE. Many people get confused by this, and it is particularly important when using the SLT instruction. Note that the source code of a program can still contain negative numbers, but if you start using instructions like DIV #-2, #5 it is important to know what effect they will have when executed. The basic unit of memory in Core War is one instruction. Each Redcode instruction contains three parts: * the opcode * the source address (a.k.a. the A-field) * the destination address (a.k.a. the B-field) The execution of the programs is equally simple. The MARS executes one instruction at a time, and then proceeds to the next one in the memory, unless the instruction explicitly tells it to jump to another address. If there is more than one program running, (as is usual) the programs execute alternately, one instruction at a time. The execution of each instruction takes the same time, one cycle, whether it is MOV, DIV or even DAT (which kills the process). Each program may have several processes running. These processes are stored in a task queue. When it is the program's turn to execute an instruction it dequeues a process and executes the corresponding instruction. Processes that are not killed during the execution of the instruction are put back into the task queue. Processes created by a SPL instruction are added to the task queue after the creating process is put back into the task queue. [ToC] ------------------------------------------------------------------------ 2. Is it "Core War" or "Core Wars"? Both terms are used. Early references were to Core War. Later references seem to use Core Wars. I prefer "Core War" to refer to the game in general, "core wars" to refer to more than one specific battle. [ToC] ------------------------------------------------------------------------ 3. Where can I find more information about Core War? Core War was first described in the Core War Guidelines of March, 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer Science at The University of Western Ontario (Canada). Dewdney wrote several "Computer Recreations" articles in Scientific American which discussed Core War, starting with the May 1984 article. Those articles are contained in two anthologies: Library of Author Title Published ISBN Congress Call Number The Armchair Dewdney, Universe: An New York: W. QA76.6 .D517 A. K. Exploration of H. Freeman �0-7167-1939-8 1988 Computer Worlds 1988 The Magic 0-7167-2125-2 Dewdney, Machine: A New York: W.(Hardcover), QA76.6 A. K. Handbook of H. Freeman �0-7167-2144-9 .D5173 1990 Computer Sorcery 1990 (Paperback) A.K. Dewdney's articles are still the most readable introduction to Core War, even though the Redcode dialect described in there is no longer current. For those who are interested, Dewdney has a home page at http://www.csd.uwo.ca/faculty/akd/. [ToC] ------------------------------------------------------------------------ 4. Core War has changed since Dewdney's articles. Where do I get a copy of the current instruction set? A draft of the official standard (ICWS'88) is available as ftp://www.koth.org/corewar/documents/standards/redcode-icws-88.Z. This document is formatted awkwardly and contains ambiguous statements. For a more approachable intro to Redcode, take a look at Mark Durham's tutorials, ftp://www.koth.org/corewar/documents/tutorial.1.Z and ftp://www.koth.org/corewar/documents/tutorial.2.Z. Steven Morrell has prepared a more practically oriented Redcode tutorial that discusses different warrior classes with lots of example code. This and various other tutorials can be found at http://www.koth.org/papers.html. Even though ICWS'88 is still the "official" standard, you will find that most people are playing by ICWS'94 draft rules and extensions. [ToC] ------------------------------------------------------------------------ 5. What is ICWS'94? Which simulators support ICWS'94? There is an ongoing discussion about future enhancements to the Redcode language. A proposed new standard, dubbed ICWS'94, is currently being evaluated. A major change is the addition of "instruction modifiers" that allow instructions to modify A-field, B-field or both. Also new is a new addressing modes and unrestricted opcode and addressing mode combination ("no illegal instructions"). ICWS'94 is backwards compatible; i.e. ICWS'88 warriors will run correctly on an ICWS'94 system. Take a look at the ICWS'94 draft at ftp://www.koth.org/corewar/documents/icws94.0202.Z for more information. There is a HTML version of this document available at http://www.koth.org/info/icws94.html. You can try out the new standard by submitting warriors to the '94 hills of the KotH servers. Two corewar systems currently support ICWS'94, pMARS (many platforms) and Redcoder (Mac), both available at ftp://www.koth.org/corewar. Note that Redcoder only supports a subset of ICWS'94. [ToC] ------------------------------------------------------------------------ 6. What is the ICWS? About one year after Core War first appeared in Scientific American, the "International Core War Society" (ICWS) was established. Since that time, the ICWS has been responsible for the creation and maintenance of Core War standards and the running of Core War tournaments. There have been six annual tournaments and two standards (ICWS'86 and ICWS'88). The ICWS is no longer active. [ToC] ------------------------------------------------------------------------ 7. What is Core Warrior? Following in the tradition of the Core War News Letter, Push Off, and The 94 Warrior, Core Warrior is a newsletter about strategies and current standings in Core War. Started in October 1995, back issues of Core Warrior (and the other newsletters) are available at http://para.inria.fr/~doligez/corewar/. There is also a Core Warrior index page at http://www.kendalls.demon.co.uk/pak21/corewar/warrior.html which has a summary of the contents of each issue of Core Warrior. Many of the earlier issues contain useful information for beginners. [ToC] ------------------------------------------------------------------------ 8. Where are the Core War archives? Many documents such as the guidelines and the ICWS standards along with previous tournament Redcode entries and complete Core War systems are available via anonymous ftp from ftp://ftp.csua.berkeley.edu/pub/corewar. Also, most of past rec.games.corewar postings (including Redcode source listings) are archived there. Jon Blow (blojo@csua.berkeley.edu) is the archive administrator. When uploading to /pub/corewar/incoming, ask Jon to move your upload to the appropriate directory and announce it on the net. This site is mirrored at: * http://www.koth.org/corewar/ * ftp://www.koth.org/corewar/ * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror The plain text version of this FAQ is automatically archived by news.answers (but this version is probably out-of-date). [ToC] ------------------------------------------------------------------------ 9. Where can I find a Core War system for . . . ? Core War systems are available via anonymous FTP from www.koth.org in the corewar/systems directory. Currently, there are UNIX, IBM PC-compatible, Macintosh, and Amiga Core War systems available there. It is a good idea to check ftp://www.koth.org/corewar/incoming for program updates first. CAUTION! There are many, many Core War systems available which are NOT ICWS'88 (or even ICWS'86) compatible available at various archive sites other than www.koth.org. Generally, the older the program - the less likely it will be ICWS compatible. If you are looking for an ICWS'94 simulator, get pMARS, which is available for many platforms and can be downloaded from: * ftp://ftp.csua.berkeley.edu/pub/corewar (original site) * ftp://www.koth.org/corewar (koth.org mirror) * ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/mirror (Planar mirror) * http://www.nc5.infi.net/~wtnewton/corewar/ (Terry Newton) * ftp://members.aol.com/ofechner/corewar (Fechter) Notes: * If you have trouble running pMARS with a graphical display under Win95 then check out http://www.koth.org/pmars.html which should have a pointer to the latest compilation of pMARS for this environment. * RPMs for the Alpha, PowerPC, Sparc and i386 can be found at ftp://ftp.inria.fr/INRIA/Projects/para/doligez/cw/pmars-rpm/ Reviews of Core War systems would be greatly appreciated in the newsgroup and in the newsletter. Below is a not necessarily complete or up-to-date list of what's available at www.koth.org: MADgic41.lzh corewar for the Amiga, v4.1 MAD4041.lzh older version? MAD50B.lha corewar for the Amiga, beta version 5.0 Redcoder-21.hqx corewar for the Mac, supports ICWS'88 and '94 (without extensions) core-11.hqx corewar for the Mac core-wars-simulator.hqx same as core-11.hqx? corewar_unix_x11.tar.Z corewar for UNIX/X-windows, ICWS'86 but not ICWS'88 compatible koth31.tar.Z corewar for UNIX/X-windows. This program ran the former KotH server at intel.com koth.shar.Z older version kothpc.zip port of older version of KotH to the PC deluxe20c.tar.Z corewar for UNIX (broken X-windows or curses) and PC mars.tar.Z corewar for UNIX, likely not ICWS'88 compatible icons.zip corewar icons for MS-Windows macrored.zip a redcode macro-preprocessor (PC) c88v49.zip PC corewar, textmode display mars88.zip PC corewar, graphics mode display corwp302.zip PC corewar, textmode display, slowish mercury2.zip PC corewar written in assembly, fast! mtourn11.zip tournament scheduler for mercury (req. 4DOS) pmars08s.zip portable system, ICWS'88 and '94, runs on UNIX, PC, Mac, Amiga. C source archive pmars08s.tar.Z same as above pmars08.zip PC executables with graphics display, req 386+ macpmars02.sit.hqx pMARS executable for Mac (port of version 0.2) buggy, no display MacpMARS1.99a.cpt.hqx port of v0.8 for the Mac, with display and debugger MacpMARS1.0s.cpt.hqx C source (MPW, ThinkC) for Mac frontend pvms08.zip pMARS v0.8 for VMS build files/help (req. pmars08s.zip) ApMARS03.lha pMARS executable for Amiga (port of version 0.3.1) wincor11.zip MS-Windows system, shareware ($15) [ToC] ------------------------------------------------------------------------ 10. Where can I find warrior code? To learn the game, it is a good idea to study previously posted warrior code. The FTP archives have code in the ftp://www.koth.org/corewar/redcode directory. A clearly organized on-line warrior collection is available at the Core War web sites (see below). [ToC] ------------------------------------------------------------------------ 11. I do not have FTP. How do I get all this great stuff? There is an FTP email server at bitftp@pucc.princeton.edu. This address may no longer exist. I haven't tested it yet. Send email with a subject and body text of "help" (without the quotes) for more information on its usage. Note that many FTP email gateways are shutting down due to abuse. To get a current list of FTP email servers, look at the Accessing the Internet by E-mail FAQ posted to news.answers. If you don't have access to Usenet, you can retrieve this FAQ one of the following ways: * Send mail to mail-server@rtfm.mit.edu with the body containing "send usenet/news.answers/internet-services/access-via-email". * Send mail to mailbase@mailbase.ac.uk with the body containing "send lis-iis e-access-inet.txt". [ToC] ------------------------------------------------------------------------ 12. I do not have access to Usenet. How do I post and receive news? To receive rec.games.corewar articles by email, join the COREWAR-L list run on the Koth.Org list processor. To join, send the message SUB COREWAR-L FirstName LastName to listproc@koth.org. You can send mail to corewar-l@koth.org to post even if you are not a member of the list. Responsible for the listserver is Scott J. Ellentuch (ttsg@ttsg.com). Servers that allow you to post (but not receive) articles are available. Refer to the Accessing the Internet by E-Mail FAQ for more information. [ToC] ------------------------------------------------------------------------ 13. Are there any Core War related WWW sites? You bet. Each of the two KotH sites sport a world-wide web server. Stormking's Core War page is http://www.koth.org; pizza's is http://www.ecst.csuchico.edu/~pizza/koth . Damien Doligez (a.k.a. Planar) has a web page that features convenient access to regular newsletters (Push Off, The '94 Warrior, Core Warrior) and a well organized library of warriors: http://para.inria.fr/~doligez/corewar/. Convenient for U.S. users, this site is also mirrored at koth.org. [ToC] ------------------------------------------------------------------------ 14. What is KotH? How do I enter? King Of The Hill (KotH) is an ongoing Core War tournament available to anyone with email. You enter by submitting via email a Redcode program (warrior) with special comment lines. You will receive a reply indicating how well your program did against the current top programs "on the hill". There are two styles of KotH tournaments, "classical" and "multi-warrior". The "classical" KotH is a one-on-one tournament, that is your warrior will play 100 battles against each of the 20 other programs currently on the Hill. You receive 3 points for each win and 1 point for each tie. (The existing programs do not replay each other, but their previous battles are recalled.) All scores are updated to reflect your battles and all 21 programs are ranked from high to low. If you are number 21 you are pushed off the Hill, if you are higher than 21 someone else is pushed off. In "multi-warrior" KotH, all warriors on the hill fight each other at the same time. Score calculation is a bit more complex than for the one-on-one tournament. Briefly, points are awarded based on how many warriors survive until the end of a round. A warrior that survives by itself gets more points than a warrior that survives together with other warriors. Points are calculated from the formula (W*W-1)/S, where W is the total number of warriors and S the number of surviving warriors. The pMARS documentation has more information on multi-warrior scoring. The idea for an email-based Core War server came from David Lee. The original KotH was developed and run by William Shubert at Intel starting in 1991, and discontinued after almost three years of service. Currently, KotHs based on Bill's UNIX scripts but offering a wider variety of hills are are running at two sites: koth@koth.org is maintained by Scott J. Ellentuch (tuc@ttsg.com) and pizza@ecst.csuchico.edu by Thomas H. Davies (sd@ecst.csuchico.edu). Up until May '95, the two sites provided overlapping services, i.e. the some of the hill types were offered by both "pizza" and "stormking". To conserve resources, the different hill types are now divided up among the sites. The way you submit warriors to both KotHs is pretty much the same. Therefore, the entry rules described below apply to both "pizza" and "stormking" unless otherwise noted. Entry Rules for King of the Hill Corewar * Write a corewar program. KotH is fully ICWS '88 compatible, EXCEPT that a comma (",") is required between two arguments. * Put a line starting with ";redcode" (or ";redcode-94", etc., see below) at the top of your program. This MUST be the first line. Anything before it will be lost. If you wish to receive mail on every new entrant, use ";redcode verbose". Otherwise you will only receive mail if a challenger makes it onto the hill. Use ";redcode quiet" if you wish to receive mail only when you get shoved off the hill. Additionally, adding ";name " and ";author " will be helpful in the performance reports. Do NOT have a line beginning with ";address" in your code; this will confuse the mail daemon and you won't get mail back. Using ";name" is mandatory on the Pizza hills. In addition, it would be nice if you have lines beginning with ";strategy" that describe the algorithm you use. There are currently seven separate hills you can select by starting your program with ;redcode-94, ;redcode-b, ;redcode-lp, ;redcode-x, ;redcode, ;redcode-94x or ;redcode-94m. The former four run at "pizza", the latter three at "stormking". More information on these hills is listed below. * Mail this file to koth@koth.org or pizza@ecst.csuchico.edu. "Pizza" requires a subject of "koth" (use the -s flag on most mailers). * Within a few minutes you should get mail back telling you whether your program assembled correctly or not. If it did assemble correctly, sit back and wait; if not, make the change required and re-submit. * In an hour or so you should get more mail telling you how your program performed against the current top 20 (or 10) programs. If no news arrives during that time, don't worry; entries are put in a queue and run through the tournament one at a time. A backlog may develop. Be patient. If your program makes it onto the hill, you will get mail every time a new program makes it onto the hill. If this is too much mail, you can use ";redcode[-??] quiet" when you first mail in your program; then you will only get mail when you make it on the top 25 list or when you are knocked off. Using ";redcode[-??] verbose" will give you even more mail; here you get mail every time a new challenger arrives, even if they don't make it onto the top 25 list. Often programmers want to try out slight variations in their programs. If you already have a program named "foo V1.0" on the hill, adding the line ";kill foo" to a new program will automatically bump foo 1.0 off the hill. Just ";kill" will remove all of your programs when you submit the new one. The server kills programs by assigning an impossibly low score; it may therefore take another successful challenge before a killed program is actually removed from the hill. Sample Entry ;redcode ;name Dwarf ;author A. K. Dewdney ;strategy Throw DAT bombs around memory, hitting every 4th memory cell. ;strategy This program was presented in the first Corewar article. bomb DAT #0 dwarf ADD #4, bomb MOV bomb, @bomb JMP dwarf END dwarf ; Programs start at the first line unless ; an "END start" pseudo-op appears to indicate ; the first logical instruction. Also, nothing ; after the END instruction will be assembled. Duration Max. Hill Name Hill Core Max. Before Entry Min. Rounds Instr. Size Size Processes Distance Fought Set Tie Length Pizza's ICWS '94 Draft Hill Extended (Accessed with 25 8000 8000 80000 100 100 200 ICWS '94 ";redcode-94") Draft Pizza's Beginner's Extended Hill (Accessed 25 8000 8000 80000 100 100 200 ICWS '94 with ";redcode-b") Draft Pizza's Experimental Extended (Small) Hill 25 800 800 8000 20 20 200 ICWS '94 (Accessed with Draft ";redcode-x") Pizza's Limited Process (LP) Hill Extended (Accessed with 25 8000 8 80000 200 200 200 ICWS '94 ";redcode-lp") Draft Stormking's ICWS '88 Standard Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '88 ";redcode") Stormking's ICWS '94 No Pspace Hill (Accessed with 20 8000 8000 80000 100 100 250 ICWS '94 ";redcode-94nop") Stormking's ICWS '94 Experimental Extended (Big) Hill 20 55440 55440 500000 200 200 250 ICWS '94 (Accessed with Draft ";redcode-94x") Stormking's ICWS '94 Multi-Warrior Extended Hill (Accessed 10 8000 8000 80000 100 100 200 ICWS '94 with Draft ";redcode-94m") Note: Warriors on the beginner's hill are retired at age 100. If you just want to get a status report without actually challenging the hills, send email with ";status" as the message body (and don't forget "Subject: koth" for "pizza"). If you send mail to "pizza" with "Subject: koth help" you will receive instructions that may be more up to date than those contained in this document. At "stormking", a message body with ";help" will return brief instructions. If you submit code containing a ";test" line, your warrior will be assembled but not actually pitted against the warriors on the hill. At "pizza", you can use ";redcode[-??] test" to do a test challenge of the Hill without affecting the status of the Hill. These challenges can be used to see how well your warrior does against the current Hill warriors. All hills run portable MARS (pMARS) version 0.8, a platform-independent Core War system available at www.koth.org. The '94 and '94x hills allow five experimental opcodes and three experimental addressing modes currently not covered in the ICWS'94 draft document: * LDP - Load P-Space * STP - Store P-Space * SEQ - Skip if EQual (synonym for CMP) * SNE - Skip if Not Equal * NOP - (No OPeration) * * - indirect using A-field as pointer * { - predecrement indirect using A-field * } - postincrement indirect using A-field [ToC] ------------------------------------------------------------------------ 15. Is it DAT 0, 0 or DAT #0, #0? How do I compare to core? Core is initialized to DAT 0, 0. This is an illegal instruction (in source code) under ICWS'88 rules and strictly compliant assemblers (such as KotH or pmars -8) will not let you have a DAT 0, 0 instruction in your source code - only DAT #0, #0. So this begs the question, how to compare something to see if it is empty core. The answer is, most likely the instruction before your first instruction and the instruction after your last instruction are both DAT 0, 0. You can use them, or any other likely unmodified instructions, for comparison. Note that under ICWS'94, DAT 0, 0 is a legal instruction. [ToC] ------------------------------------------------------------------------ 16. How does SLT (Skip if Less Than) work? SLT gives some people trouble because of the way modular arithmetic works. It is important to note that all negative numbers are converted to positive numbers before a battles begins. Example: -1 becomes M-1 where M is the memory size (core size). Once you realize that all numbers are treated as positive, it is clear what is meant by "less than". It should also be clear that no number is less than zero. [ToC] ------------------------------------------------------------------------ 17. What is the difference between in-register and in-memory evaluation? These terms refer to the way instruction operands are evaluated. The '88 Redcode standard ICWS'88 is unclear about whether a simulator should "buffer" the result of A-operand evaluation before the B-operand is evaluated. Simulators that do buffer are said to use in-register evaluation, those that don't, in-memory evaluation. ICWS'94 clears this confusion by mandating in-register evaluation. Instructions that execute differently under these two forms of evaluation are MOV, ADD, SUB, MUL, DIV and MOD where the effective address of the A-operand is modified by evaluation of the B-operand. This is best illustrated by an example: L1 mov L2, mov.i #0, impsize Bootstrapping Strategy of copying the active portion of the program away from the initial location, leaving a decoy behind and making the relocated program as small as possible. B-Scanners Scanners which only recognize non-zero B-fields. example add #10, scan scan jmz example, 10 c Measure of speed, equal to one location per cycle. Speed of light. CMP-Scanner A Scanner which uses a CMP instruction to look for opponents. example add step, scan scan cmp 10, 30 jmp attack jmp example step dat #20, #20 Colour Property of bombs making them visible to scanners, causing them to attack useless locations, thus slowing them down. example dat #100 Core-Clear Code that sequentially overwrites core with DAT instructions; usually the last part of a program. Decoys Bogus or unused instructions meant to slow down scanners. Typically, DATs with non-zero B-fields. Decrement Resistant Property of warriors making them functional (or at least partially functional) when overrun by a DJN-stream. DJN-Stream (also DJN-Train) Using a DJN command to rapidly decrement core locations. example ... ... djn example, <4000 Dwarf The prototypical small bomber. Gate-busting (also gate-crashing) technique to "interweave" a decrement-resistant imp-spiral (e.g. MOV 0, 2668) with a standard one to overrun imp-gates. Hybrids warriors that combine two or more of the basic strategies, either in sequence (e.g. stone->paper) or in parallel (e.g. imp/stone). Imp Program which only uses the MOV instruction. example mov 0, 1 or example mov 0, 2 mov 0, 2 Imp-Gate A location in core which is bombed or decremented continuously so that an Imp can not pass. Also used to describe the program-code which maintains the gate. example ... ... spl 0, mov.i #0,IMPSIZE Mirror see reflection. On-axis/off-axis On-axis scanners compare two locations M/2 apart, where M is the memory size. Off-axis scanners use some other separation. Optimal Constants (also optima-type constants) Bomb or scan increments chosen to cover core most effectively, i.e. leaving gaps of uniform size. Programs to calculate optimal constants and lists of optimal numbers are available at www.koth.org. Paper A Paper-like program is one which replicates itself many times. Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy. P-Warrior A warrior which uses the results of previous round(s) in order to determine which strategy it will use. Pit-Trapper (also Slaver, Vampire). A program which enslaves another. Usually accomplished by bombing with JMPs to a SPL 0 pit with an optional core-clear routine. Q^2 Scan A modern version of the Quick Scan where anything found is attacked almost immediately. Quick Scan 2c scan of a set group of core locations with bombing if anything is found. Both of the following codes snips scan 16 locations and check for a find. If anything is found, it is attacked, otherwise 16 more locations are scanned. Example: start s1 for 8 ;'88 scan cmp start+100*s1, start+100*s1+4000 ;check two locations mov #start+100*s1-found, found ;they differ so set pointer rof jmn attack, found ;if we have something, get it s2 for 8 cmp start+100*(s2+6), start+100*(s2+6)+4000 mov #start+100*(s2+6)-found, found rof found jmz moveme, #0 ;skip attack if qscan found nothing attack cmp @found, start-1 ;does found points to empty space? add #4000, found ;no, so point to correct location mov start-1, @found ;move a bomb moveme jmp 0, 0 In ICWS'94, the quick scan code is more compact because of the SNE opcode: start ;'94 scan s1 for 4 sne start+400*s1, start+400*s1+100 ;check two locations seq start+400*s1+200, start+400*s1+300 ;check two locations mov #start+400*s1-found, found ;they differ so set pointer rof jmn which, found ;if we have something, get it s2 for 4 sne start+400*(s2+4), start+400*(s2+4)+100 seq start+400*(s2+4)+200, start+400*(s2+4)+300 mov #start+400*(s2+4)-found-100, found rof found jmz moveme, #0 ;skip attack if qscan found nothing add #100, -1 ;increment pointer till we get the which jmn -1, @found ;right place mov start-1, @found ;move a bomb moveme jmp 0, 0 Reflection Copy of a program or program part, positioned to make the active program invisible to a CMP-scanner. Replicator Generic for Paper. A program which makes many copies of itself, each copy also making copies. Self-Splitting Strategy of amplifying the number of processes executing a piece of code. example spl 0 loop add #10, example mov example, @example jmp loop Scanner A program which searches through core for an opponent rather than bombing blindly. Scissors A program designed to beat replicators, usually a (B-field scanning) vampire. Part of the Paper-Scissors-Stone analogy. Self-Repair Ability of a program to fix it's own code after attack. Silk A replicator which splits off a process to each new copy before actually copying the code. This allows it to replicate extremely quickly. This technique is only possible under the '94 draft, because it requires post-increment indirect addressing. Example: spl 1 mov -1, 0 spl 1 ;generate 6 consecutive processes silk spl 3620, #0 ;split to new copy mov >-1, }-1 ;copy self to new location mov bomb, >2000 ;linear bombing mov bomb, }2042 ;A-indirect bombing for anti-vamp jmp silk, {silk ;reset source pointer, make new copy bomb dat >2667, >5334 ;anti-imp bomb Slaver see Pit-Trapper. Stealth Property of programs, or program parts, which are invisible to scanners, accomplished by using zero B-fields and reflections. Stone A Stone-like program designed to be a small bomber. Part of the Paper-Scissors-Stone analogy. Stun A type of bomb which makes the opponent multiply useless processes, thus slowing it down. Example is referred to as a SPL-JMP bomb. example spl 0 jmp -1 Two-Pass Core-Clear (also SPL/DAT Core-Clear) core clear that fills core first with SPL instructions, then with DATs. This is very effective in killing paper and certain imp-spiral variations. Vampire see Pit-Trapper. Vector Launch one of several means to start an imp-spiral running. As fast as Binary Launch, but requiring much less code. See also JMP/ADD Launch and Binary Launch. This example is one form of a Vector Launch: sz EQU 2667 spl 1 spl 1 jmp @vt, }0 vt dat #0, imp+0*sz ; start of vector table dat #0, imp+1*sz dat #0, imp+2*sz dat #0, imp+3*sz ; end of vector table imp mov.i #0, sz [ToC] ------------------------------------------------------------------------ 23. Other questions? Just ask in the rec.games.corewar newsgroup or contact me. If you are shy, check out the Core War archives first to see if your question has been answered before. [ToC] ------------------------------------------------------------------------ Credits Additions, corrections, etc. to this document are solicited. Thanks in particular to the following people who have contributed major portions of this document: * Mark Durham (wrote the original version of the FAQ) * Paul Kline * Randy Graham * Stefan Strack (maintained a recent version of the FAQ) ------------------------------------------------------------------------ Copyright � 1999 Anton Marsden. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. ------------------------------------------------------------------------ From: "simon wainwright" Subject: Re: Tournament Announcement Date: 25 Feb 2002 10:29:12 -0500 Message-ID: Hi >month tournament. BTW, what sort of strategies are >people thinking of >for Round 2? Anyone working on "smart" warriors? Well I thought to try converting a few regular lp warriors for the second round (like incisive, gelatinous blob) and finding out which does best. What does everyone have in mind for the first round? _________________________________________________________________ Join the world�s largest e-mail service with MSN Hotmail. http://www.hotmail.com From: martinankerl@web.de (Martin) Subject: Re: yace 1.1 Date: 26 Feb 2002 09:36:19 -0800 Message-ID: <453a311f.0202260936.7601b85a@posting.google.com> > Next post when it works. Well, at the moment it works :) qmars (quicker mars) is almost finished (still needs some testing). At the moment it seems to be about 25% faster than pmars: pmars 0.9.2 exhaust 1.7 qmars Fixed vs Fixed 25.77 22.26 19.46 75.5% Jaguar vs Fixed 29.87 28.76 23.15 77.5% Jaguar vs Jaguar 42.76 41.69 31.36 73.3% Stalker vs Fixed 25.29 23.06 19.30 76.3% Stalker vs Jaguar 24.88 22.99 20.45 82.2% Stalker vs Stalker 20.85 19.04 16.82 80.7% nPaperII vs Fixed 36.25 32.27 26.06 71.9% nPaperII vs Jaguar 45.14 42.28 33.40 74.0% nPaperII vs Stalker 29.55 27.67 23.03 77.9% nPaperII vs nPaperII 49.92 46.47 36.74 73.6% ----------------------------------------------------- Sum 330.28 306.49 249.77 100% 92.8% 75.6% everything was compiled using g++ 2.95 and these command-line options: -O9 -fomit-frame-pointer -fforce-mem -fforce-addr -finline-functions -funroll-loops -mcpu=i686 -march=i686 I used the same warriors as Joonas for his exhaust benchmark (at http://www.cs.helsinki.fi/u/jpihlaja/exhaust/speed.txt), but I ran 2000 fights on an AMD Duron 650. At the moment I am out of ideas for further optimisations; I did not use any clever strategies as you suggested earlier, but I'm very interested in more ideas. Martin From: ugogt@hotmail.com (gamegirl) Subject: Retro Game Tournament NO BRAINER *^.^* Date: 26 Feb 2002 10:35:09 -0800 Message-ID: Ah the good ol' days of dumping quarters into stand up video games... And rushing to the best friends house after school for hours of Atari fun... Remember the Retro games of the 80's? We have put some classic games of the past, drop in anytime and kill some time. The games are free to play, and membership is free too, and we are open 24/7. www.cafearcade.com gameboy@cafearcade.com p.s. Join now and take advantage of the pre-launch promotion tournaments. Each new member will earn $100 credit to use towards tournament entry fee. For more details visit our site www.cafearcade.com. From: Lukasz Grabun Subject: Re: Tournament Announcement Date: Tue, 26 Feb 2002 17:44:40 +0000 (UTC) Message-ID: pon, 25 lut 2002 o 15:29 GMT, simon wainwright: > What does everyone have in mind for the first round? 0.5 c scanner or scanner/bomber. as a second entry a bluefunk-like stone, perhaps. -- Lukasz Grabun (reply-to field is scrambled, remove NOSPAM) GM d+ s: a-- C++ UL P L++ E---- W-- N++ o? K- w-- O@ M@ V- PS+ PE+ Y PGP t-@ 5@ X++(+++) R tv-() b+++ DI+ D- G++ e++ h! r++ y+ From: martinankerl@web.de (Martin) Subject: Re: yace 1.1 Date: 27 Feb 2002 10:00:08 -0800 Message-ID: <453a311f.0202271000.7f3d583b@posting.google.com> > 2) (untested) For gcc/g++ systems it might be worthwhile to > encode the opcode/modifier/addressing modes as two or more label > addresses and do indirect jumps through those addresses using the > computed goto provided by the GNU compiler. This is used in many > conventional interpreters to speed up execution. e.g. GForth and > the OCaml byte code interpreters. More info at: Sounds very cool, but it did not work for me: g++ does not allow me to use addresses to goto's in the qmars-template class > 3) (untested, complicated, but just might work) Improve the > cache hit rate of the process queue and remove process queue > overflow checks: hm, I do not know if this can work, I believe the overhead is too high. I for myself use queues with cyclic arrays which have at least 16 elements, because this reduces the cases in which an overflow occurs. Martin From: M Joonas Pihlaja Subject: Re: yace 1.1 Date: Wed, 27 Feb 2002 10:15:20 +0200 Message-ID: On 26 Feb 2002, Martin wrote: > > Next post when it works. [snip] > Sum 330.28 306.49 249.77 > 100% 92.8% 75.6% Excellent! Is your source available for inspection yet? > At the moment I am out of ideas for further optimisations; I > did not use any clever strategies as you suggested earlier, > but I'm very interested in more ideas. OK. Here are a few ideas I've been toying with but never gotten around to implementing: 1) You probably do this already, but here goes: align things on long int boundaries. This is especially important on the Alpha where bad alignment can cause heavy penalties. e.g. exhaust is almost two times faster than pmars on a 21264. 2) (untested) For gcc/g++ systems it might be worthwhile to encode the opcode/modifier/addressing modes as two or more label addresses and do indirect jumps through those addresses using the computed goto provided by the GNU compiler. This is used in many conventional interpreters to speed up execution. e.g. GForth and the OCaml byte code interpreters. More info at: http://www.complang.tuwien.ac.at/forth/threaded-code.html under 'How do I implement threaded code portably.' 3) (untested, complicated, but just might work) Improve the cache hit rate of the process queue and remove process queue overflow checks: pMARS and exhaust at least use a single memory circular array of NWARRRIORS*MAXPROCESSES+1 cells to implement NWARRIORS queues of MAXPROCESSES cells. After executing NWAR*MAXPROC cycles the whole buffer has been fetched from/written to linearly -- i.e. not very good data cache performance, especially when fighting low process warriors like scanners/clears. Instead, keep the process queues of the warriors separate as NWAR circular buffers of NPROC+some cells and dynamically adjust to the number of processes a warrior actually has. So, if a warrior has only a small number of processes, only use a small part of the buffer. Every now and again, test if the buffer has overflowed [the +some cells are overflow room], and wrap the queue pointers if they have. 'Every now and again' is actually a more or less computable number as processes grow at most linearly in executed cycles. This sounds expensive, but isn't at all as the MARS has to decrement a cycles-until-tie counter every cycles anyway. Instead, it can keep track of how many cycles it can execute without having to check for overflow of the circular buffers. This way you also get rid of the majority of overflow checks done in pMARS and exhaust when queuing a process. [Argh... with pictures this is so much easier to explain.] ------ This might be of interest too: http://www.complang.tuwien.ac.at/misc/pentium-switch/ Joonas