def given_register_pair_contains_value(self, register_pair, value): if register_pair == 'sp': self.processor.special_registers['sp'] = value elif register_pair[0] == 'i': self.processor.index_registers[register_pair] = value else: high_byte, low_byte = high_low_pair(value) self.processor.main_registers[register_pair[0]] = high_byte self.processor.main_registers[register_pair[1]] = low_byte
def execute(self, processor, memory, pc): old_index = self.processor.index_registers[self.indexed_reg] self.processor.index_registers[self.indexed_reg] = big_endian_value([ self.memory[self.processor.special_registers['sp']], self.memory[0xffff & (self.processor.special_registers['sp'] + 1)] ]) high_byte, low_byte = high_low_pair(old_index) self.memory[0xffff & self.processor.special_registers['sp']] = low_byte self.memory[0xffff & (self.processor.special_registers['sp'] + 1)] = high_byte return 23, False, pc
def execute(self, processor, memory, pc): high_byte, low_byte = high_low_pair(self.processor.index_registers[self.indexed_reg]) self.processor.push_byte(high_byte) self.processor.push_byte(low_byte) return 15, False, pc
def given_alt_register_pair_contains_value(self, register_pair, value): high_byte, low_byte = high_low_pair(value) self.processor.alternate_registers[register_pair[0]] = high_byte self.processor.alternate_registers[register_pair[1]] = low_byte
def execute(self, processor, memory, pc): high_byte, low_byte = high_low_pair( self.processor.index_registers[self.indexed_reg]) self.processor.push_byte(high_byte) self.processor.push_byte(low_byte) return 15, False, pc
def execute(self, processor, memory, pc): dest_address, pc = fetch_word(memory, pc) high_byte, low_byte = high_low_pair(self.processor.index_registers[self.indexed_reg]) self.memory[0xffff & dest_address] = low_byte self.memory[0xffff & (dest_address + 1)] = high_byte return 20, False, pc