1README for pMARS version 0.9.0 - portable corewar system with ICWS'94 extensions 2 3____________________ 4What is Core War? 5 6 Core War is a game in which two or more virus-like programs fight against 7 each other in a simulated memory space or core. Core War programs are 8 written in an assembly language called Redcode which is interpreted by a 9 Core War simulator or MARS (Memory Array Redcode Simulator). The object of 10 the game is to prevent the other program(s) from executing. For more 11 information about Core War check out the usenet newsgroup rec.games.corewar 12 and its FAQ list ftp://rtfm.mit.edu/pub/usenet/games/corewar-faq 13 or go to http://www.koth.org/. 14 15____________________ 16pMARS highlights 17 18 * portable, run it on your Mac at home or VAX at work 19 * free and comes with source 20 * core displays for DOS, Mac and UNIX 21 * implements a new redcode dialect, ICWS'94, while remaining compatible 22 with ICWS'88 23 * powerful redcode extensions: multi-line EQUates, FOR/ROF text repetition 24 * one of the fastest simulators written in a high level language 25 * full-featured, programmable debugger 26 * runs the automated tournament "KotH" at http://www.koth.org and 27 http://www.ecst.csuchico.edu/~pizza/koth/ and the annual ICWS tournaments 28 29____________________ 30Documentation 31 32 pmars.6 is the nroff-source for UNIX man pages. You can install it in 33 /usr/man/man6 for use with the UNIX "man" command or format it with nroff 34 -man. pmars.doc contains man pages without control characters that have 35 been formatted for printing. 36 37 doc/primer.94 and doc/primer.cdb contain short introductions to the ICWS'94 38 draft and the cdb debugger respectively. redcode.ref is a quick reference to 39 the redcode syntax supported by pMARS. CONTRIB has guidelines for porting 40 pMARS to new platforms and contributing new display code. 41 42____________________ 43Compiling the source 44 45 There are a number of C preprocessor symbols that control which version 46 of pMARS is compiled. To enable an option, include -DSYMBOLNAME in CFLAGS 47 of the makefile or uncomment the relevant section in config.h. 48 49 GRAPHX 50 This option enables a platform-specific graphical core display. 51 52 SERVER 53 Disables the debugger for a non-interactive tournament version. The 54 pMARS program that runs the KotH email tournaments is compiled with 55 SERVER enabled. 56 57 EXT94 58 Enables the experimental opcodes SEQ, SNE and NOP, as well as the 59 A-field relative addressing modes *, {, and }. This option should 60 usually be enabled. EXT94 also enables the P-space extensions LDP, 61 STP and PIN. 62 63 SMALLMEM 64 makes all addresses 16-bit as opposed to the usual 32-bit wide. This 65 limits core size to 65535, but also drastically reduces the memory 66 footprint of the program. We found that SMALLMEM reduces the 67 simulation speed of pMARS on most CPUs, with the exception of those 68 with a very small primary cache. 69 70 There are other compile directives described in config.h, in particular 71 some that fine-tune the UNIX curses display. 72 73 pMARS has been tested with various ANSI and non-ANSI C compilers. If 74 you can't get it to run or you had to change the source extensively, 75 contact the authors with a full description of the problems and 76 diffs to the source if applicable. 77 78____________________ 79Platforms 80 81 UNIX 82 A standard UNIX makefile is provided. If you specify the GRAPHX 83 directive, a character-based display using the curses library is 84 built. On some systems, it may be necessary to remove -ltermcap from 85 the LIB variable in the makefile. 86 87 UNIX/X11 88 If you specify the XWINGRAPHX directive, the X-Windows display 89 version of pMARS is compiled. You also need to change the link 90 library by uncommenting the "LIB = -lX11" line in makefile. X11 91 pMARS has a few new command line options that are described in 92 pmars.doc. 93 94 LINUX 95 The Linux/SVGA version of pMARS has been derived from the DOS 96 graphical version and therefore should behave very much like that 97 one. 98 99 Some notes for compiling the Linux/SVGA version: 100 * You will need the Linux SVGA library (libvga) version 1.12 or above 101 to compile pMARS for Linux (it may work with older libraries, but 102 I have not had an opportunity to test it). 103 * If you #define GRAPHX in config.h or in the makefile, the graphical 104 version will automatically be built unless you explicitely 105 specify CURSESGRAPHX. 106 * You will have to link with -lvgagl -lvga. makefile already contains 107 a sample definition of LIB with these libraries. 108 * The code assumes that Function keys etc. map to the 'standard' 109 escape sequences. pMARS will not recognize these keys otherwise. 110 * You need root privileges for the SVGA library, so either run pMARS 111 as root, or a better solution is to set the SUID bit of the 112 executable (do the following with root privileges). 113 # chown root pmars 114 # chmod u+s pmars 115 * The code assumes your mouse is available via /dev/mouse. This is 116 usually a link to the 'real' mouse interface, e.g. on my system: 117 # cd /dev 118 # ls -l mouse 119 lrwxrwxrwx 1 root root 5 Mar 2 00:22 mouse -> ttyS0 120 * The second digit of the the argument to -v indicates (just like in 121 the DOS version) the graphics mode: 122 1 ... 640x480 with 256 colors 123 2 ... 800x600 with 256 colors 124 3 ...1024x768 with 256 colors 125 6 ... 320x200 with 256 colors 126 all other digits will result in the 640x480x256 mode. 127 128 Deficiencies/bugs of the Linux/SVGA version: 129 * Currently, the following keys are recognized by pMARS: F1-F10, the 130 cursor keys, insert, delete, home, end, page up and page down, 131 and Alt-a to Alt-z. 132 * The result of a fight is printed to the console after returning 133 from the graphical display -- only the last two lines or so are 134 not visible until you press <return>. 135 * Bug reports are welcome - just drop a note to m.maierhofer@ieee.org 136 137 DOS 138 You will need the free 32-bit DOS compiler DJGPP - a DOS port of gcc - 139 and ndmake or some other make program. pMARS also compiles with the 140 16-bit DOS compilers of the Borland/Turbo C family, but the maximum 141 number of warriors is limited to 8 because of memory constraints. 142 143 The GRAPHX compile directive enables the combined VGA/textmode 144 display of pmarsv.exe. You can enable the graphics and textmode 145 displays selectively with the DOSGRXGRAPHX and DOSTXTGRAPHX 146 directives. If you so desire, you can even link in a curses display 147 using the PDCurses library by specifying the CURSESGRAPHX directive. 148 149 MAC 150 The Mac GUI version of pMARS, MacpMARS, will compile with Think C 151 and MPW C, possibly others. Source code for the interface/display of 152 MacpMARS as well as instructions on how to make the executable are 153 in MacpMARS*s.cpt.hqx. The GUI code has not been updated for v0.7 of 154 pMARS yet, so you need the base archive for v0.6 (pmars06s.zip). 155 156 VMS 157 pvms*s.zip contains command files to build pMARS for VMS flavors. You 158 need DEC C; VAX C will not work. This file also contains a complete VMS 159 help system. 160 161 OTHERS 162 pMARS should compile with Borland C++ for OS/2, although we haven't 163 tried it. The OS/2 version currently doesn't have a core display. 164 pMARS has also been reported to compile on Amigas. 165 166____________________ 167Language support 168 169 All strings are contained in the file str_eng.c for easy translation into 170 languages other than english. If you would like to see pMARS speak your 171 native tongue, translate the strings and send the file to us. We will then 172 include the new str_???.c in the next release and might even release the 173 foreign language binaries. 174 175$Id: README,v 1.1.1.1 2000/08/31 10:22:56 iltzu Exp $ 176