R.O.M.E.68000: A New Vision for the Core Wars

Work in Progress
Last Update: January 1, 1999

Welcome to the R.0.M.E.68000 Home Page

This hypertextual document contains some information about the R.O.M.E.68000, a new system for the game called Core War. This game was first described by A. K. Dewdney in Scientific American.


What is the R.O.M.E.68000?

R.O.M.E.68000 is the name for a new vision of the Core Wars. It is not simply a new release of the classical Redcode originally described by Dewdney and already gone through many revisions and refinements, but a new system, with a new virtual processor, new Redcode-like assembly language, and new overall architecture; it is by no means backward compatible with existing Redcode, because it is based on a totally new design. Its name itself, borrowed from the MC68000 microprocessor, was chosen to emphasize its revolutionary nature: as you know, the designers of this celebrated processor broke any compatibility line with its predecessors, remaining in this way free to define its architecture with great elegance and consistency. The same principle inspired the development of the R.O.M.E.68000: I don't know whether the outcome is up to the effort spent, but the ambition was indeed to design a system whose neat and admirable architecture were comparable to that of the famous CPU. You will find the R.O.M.E.68000 much more powerful than any previous CW system.

A Briefing on the R.O.M.E.68000

If you are interested in the subject, you will find in the following lines a little supplement of information.

Explanation of the Name

R.O.M.E. is an acronym for Redcode Obeying Microprocessor Emulator, but above all is a tribute to the city where I was born; 68000, as I have already said, is in honour of the MC68000 microprocessor, whose elegant architecture inspired the design of this virtual machine. When this project was first conceived, the idea I had in mind was to create ``the 68000 of the Core Wars'', and this became at once the slogan of the whole enterprise!


The R.O.M.E.68000 initiative started in 1988 with two observations:

  1. The first world championship of the International Core Wars Society (the only one I had heard of) had been won by a program named Mice, made up of just a dozen of instructions, that didn't seem to go much far from those ``tiny and stupid'' programs (like Dwarf) that used to keep Core Wars to a low level of excitement.

  2. The original Core Wars standard had been designed in the early 80's for a typical home computer with a memory of 64 K or less, but in the course of the decade the amount of memory currently installed also in cheap computers had grown over 512 K; this made it possible to enlarge the size of the memory array (i.e., the core) and also the size of its locations (i.e., of the instruction word).

My idea was to exploit the possibilities offered by the progress in memory capacity to develop a more powerful version of the Redcode assembly language. In particular, I wanted to increase the number of instructions and addressing modes, and also to make it more difficult to localize a big program in the core. I originally planned to implement the R.O.M.E.68000 system on a Sinclair QL computer with a memory expansion; this machine, made in the UK, has 640 K of RAM and a 68008 microprocessor. I calculated to reserve 512 K to hold the memory array, and this led me to fix two basic values in the design of my processor, the word length (or width) and the size of the addressing space. This is what I decided: the R.O.M.E.68000 has an addressing space of 65536 locations, each of which holds a 64-bits word; in order to address those locations, 16-bits operands are needed, two of which leave 32 bits free for other purposes; of these 32 bits, 16 are used to hold the opcode, and we'll see later what the other 16 are left for.

R.O.M.E.68000 Manual

I (Gustavo Mezzetti) am writing a manual which describes the R.O.M.E.68000 system; here you can see a copy of its summary.


This document proposes a completely new standard for the Core Wars, which is not compatible with any existing I.C.W.S. system. A new ``redcode'' language is defined, which supports, among other things, manipulation of a block of many locations with a single instruction, powerful and ductile addressing modes, and complex multitasking features; at the same time, the virtual processor that executes this code is described. We specify also the behaviour that an assembler converting source redcode into object code (executable by the virtual processor) must obey, and the directives it must have. Also, many examples are given, and a major sample program is listed and commented. In other words, this book is for the R.O.M.E.68000 system what the classical articles by A. K. Dewdney in Scientific American were for the Core Wars that you already know (note that you should really have read them before attempting to read this book).

How to Download the R.O.M.E.68000 Manual

The downloadable manual is not yet available, because I'm still writing it! If you want to see a pre-pre-...-preliminary version containing only the first four chapters (of the twelwe which I have planned), ask me through e-mail. Please note that those four chapters were written years ago, and that I cannot foresee when I'll have time to continue to write.

January 1, 1999. The online manual has been updated: it now contains all the first four chapters. Please note that it should still be considered as an experimental version.

Gustavo MEZZETTI  /  mezzetti@math.unipd.it