The original instruction set, designed and implemented by Tom Ray. This instruction set was literally designed only to run a single program, the original 80 instruction ``ancestor''. As a consequence of this narrow design criteria, this instruction set has several obvious deficiencies: There is no method of moving information between the CPU registers and the RAM memory (soup). There is no mechanism for input/output. Only two inter-register moves are available, although this limitation can be overcome by using the stack to move data between registers (as is done in instruction set 4). There are no options for the control of the positioning in memory of the daughter cells (only the ``first fit'' technique is used). There are no facilities to support multi-cellularity. These deficiencies were addressed in the creation of instruction sets two through four.
No Operations: 2 nop0 nop1 Memory Movement: 11 pushax (push AX onto stack) pushbx (push BX onto stack) pushcx (push CX onto stack) pushdx (push DX onto stack) popax (pop from stack into AX) popbx (pop from stack into BX) popcx (pop from stack into CX) popdx (pop from stack into DX) movcd (DX = CX) movab (BX = AX) movii (move from ram [BX] to ram [AX]) Calculation: 9 sub_ab (CX = AX - BX) sub_ac (AX = AX - CX) inc_a (increment AX) inc_b (increment BX) inc_c (increment CX) dec_c (decrement CX) zero (zero CX) not0 (flip low order bit of CX) shl (shift left all bits of CX) Instruction Pointer Manipulation: 5 ifz (if CX == 0 execute next instruction, otherwise, skip it) jmp (jump to template) jmpb (jump backwards to template) call (push IP onto the stack, jump to template) ret (pop the stack into the IP) Biological and Sensory: 5 adr (search outward for template, put address in AX, template size in CX) adrb (search backward for template, put address in AX, template size in CX) adrf (search forward for template, put address in AX, template size in CX) mal (allocate amount of space specified in CX) divide (cell division) Total: 32