// Check if it's a math function if ((IR & 0x80) == 0x80) { // Process the operation switch (IR&0x70) { case 0x00: // AND function destination = destination & source; break; case 0x10: switch(IR & 0x0f) { case 0: memory[MAR]|=memory[MAR]; break; case 1: memory[MAR]|=ACC; break; case 2: memory[MAR]|=memory[Old_PC+1]; break; case 3: memory[MAR] |= memory[((memory[Old_PC + 1] << 8) + memory[Old_PC + 2])]; break; case 4: ACC|=memory[MAR]; break; case 5: ACC|=ACC; break; case 6: ACC|=memory[Old_PC+1]; break; case 7: ACC|=memory[((memory[Old_PC + 1] << 8) + memory[Old_PC + 2])]; break; case 8: MAR|=(memory[MAR] << 8) + memory[MAR+1]; break; case 9: MAR|=ACC; break; case 0xa: MAR|=(memory[Old_PC+1] << 8) + memory[Old_PC+2]; break; case 0xb: int address = ((memory[Old_PC + 1] << 8) + memory[Old_PC + 2]); MAR|=(memory[address] << 8) + memory[address+1]; break; case 0xc: memory[((memory[Old_PC + 1] << 8) + memory[Old_PC + 2])]|=memory[MAR]; break; case 9: memory[((memory[Old_PC + 1] << 8) + memory[Old_PC + 2])]|=ACC; break; case 0xa: // Don't worry about this case memory[((memory[Old_PC + 1] << 8) + memory[Old_PC + 2])]|=memory[Old_PC+3]; break; case 0xb: // Don't worry about this case int address = ((memory[Old_PC + 3] << 8) + memory[Old_PC + 4]); // Don't worry about this case memory[((memory[Old_PC + 1] << 8) + memory[Old_PC + 2])]|=(memory[address] << 8) + memory[address+1]; break; } case 0x20: case 0x30: case 0x40: case 0x50: case 0x60: case 0x70: default: } } // Check if this is a memory function else if ((IR & 0xf0) == 0) { } // Check branch function else if ((IR & 0xF8) == 0x10) { } // Otherwise, it's a special opcode or an illegal opcode else { } Within