CPU Opcodes for the Intel i4004

In case you need them.

Nib 1Nib 2Nib 3Nib 4MnemonicDesc
00000000--NOPNo operation.
0001CCCCAAAAAAAAJCNJumps to specified ROM address (within the ROM containing this JCN instruction) if condition CCCC is true.
0010RRR0DDDDDDDDFIMStore immediate date in specified register pair RRR.
0010RRR1--SRCSend Register Control. Send the register pair to ROM and RAM as an address for memory access.
0011RRR0--FINFetch data indirect from ROM. Send the first register pair as a address, storing the result in register pair RRR.
0011RRR1--JINJump indirect. Use register pair RRR as address.
0100AAAAAAAAAAAAJUNJump unconditionally and absolutly.
0101AAAAAAAAAAAAJMSJump unconditionally, but store PC in the call stack first.
0110RRRR--INCIncrement the register RRRR.
0111RRRRAAAAAAAAISZIncrement register RRRR, then jump to the specified address unless result is zero.
1000RRRR--ADDAdd register RRRR to the Acc with carry.
1001RRRR--SUBSubtract register RRRR from the Acc with borrow.
1010RRRR--LDMove register RRRR to Acc.
1011RRRR--XCHExchange register RRRR and Acc.
1100DDDD--BBLReturn the PC to it's original value (stored in the call stack) and load data DDDD to Acc.
1101DDDD--LDMLoad data DDDD to Acc.
11100000--WRMWrites the contents of Acc to memory at the previously selected Address.
11100001--WMPWrites the contents of Acc to the previously selected RAM output port.
11100010--WRRWrites the contents of Acc to memory at the previously ROM output port.
11100011--WPMWrites the contents of Acc to read/write program memory at the previously selected Address. (Used with 4008/4009 or 4289 only)
11100100--WR0Writes the contents of Acc to memory at the previously RAM status character 0.
11100101--WR1Writes the contents of Acc to memory at the previously RAM status character 1.
11100110--WR2Writes the contents of Acc to memory at the previously RAM status character 2.
11100111--WR3Writes the contents of Acc to memory at the previously RAM status character 3.
11101000--SBMSubtract nibble in memory from Acc with borrow.
11101001--RDMMoves nibble in memory to Acc.
11101010--RDRMoves data in ROM input port to Acc.
11101011--ADMAdd nibble in memory to Acc with Carry.
11101100--RD0Reads the previously selected RAM status character 0 into accumulator.
11101101--RD1Reads the previously selected RAM status character 1 into accumulator.
11101110--RD2Reads the previously selected RAM status character 2 into accumulator.
11101111--RD3Reads the previously selected RAM status character 3 into accumulator.
11110000--CLBClear Acc and Carry flag.
11110001--CLCClear Carry flag.
11110010--IACIncrements the Acc.
11110011--CMCInverts the carry flag.
11110100--CMAInverts the Acc.
11110101--RALRotate Acc and Carry flag left.
11110110--RARRotate Acc and Carry flag right.
11110111--TCCMove carry to Acc and clear carry.
11111000--DACDecrement Acc.
11111001--TCSSubtract carry from Acc, clear carry.
11111010--STCSet carry to 1.
11111011--DAADecimal Adjust Accumulator. Basically just adds 6 to the accumulator if the carry flag is set. Intended for use after arithmetic instructions.
11111100--KBPConverts the contents of the accumulator from a one out of four code to a binary code. (0001 => 0000, 0010 => 0001, 0100 => 0010, 1000 => 0011, all else => 1111).
11111101--DCLChanges memory bank to the contents of the 3 least significant bits of the accumulator.

For the condition codes used for the JCN instruction:
The least significant bit jumps if the test signal is 1.
The next one jumps if the carry flag is 1.
The next one jumps if Acc is equal to 0.
The last one inverts the jumping criteria. For example, Condition 2, (equivilent to JC today) becomes condition 10 (equivilent to JNC today).