BYTEINFO(OPCODE, "HULL", 'H', hull, NUMBER, NUMBER, NUMBER) // HULL - first command BYTEINFO(OPCODE, "PAR", 'p', par, OUTPUT, NUMBER, NUMBER) // PAR after HULL, before actual code BYTEINFO(OPCODE, "MUL", '*', mul, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "ADD", '+', add, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "SUB", '-', sub, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "DIV", '/', div, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "SET", ':', set, OUTPUT, INPUT, IGNORE) BYTEINFO(OPCODE, "EQ", '=', eq, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "LESS", '<', less, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "MORE", '>', more, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "NOT", '!', not_op, OUTPUT, INPUT, IGNORE) BYTEINFO(OPCODE, "OR", '|', or_op, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "AND", '&', and_op, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "XOR", 'x', xor_op, OUTPUT, INPUT, INPUT) BYTEINFO(OPCODE, "RAND", 'r', rand, OUTPUT, INPUT, INPUT) // random number between P1 and P2 - should we include p2? BYTEINFO(OPCODE, "SKIP", 's', skip, INPUT, IGNORE, IGNORE) // SKIP 1 skips the next instruction (4 bytes), SKIP 0 = NOP, SKIP 10 skips the next 10 instructions. P1 >= 0 BYTEINFO(OPCODE, "STOP", 'S', stop, IGNORE, IGNORE, IGNORE) // equivalent to SKIP infinite BYTEINFO(OPCODE, "ENGINE", 'e', engine, ENGINE, NIL, NIL) // ENGINE - if multiple ones are set, we choose randomly from the options given BYTEINFO(OPCODE, "HW", 'h', hardware, HARDWARE, IGNORE, IGNORE) BYTEINFO(OPCODE, "COMM", 'c', comm, COMM, IGNORE, IGNORE)