Beispiel #1
0
 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
Beispiel #2
0
    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
Beispiel #3
0
 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
Beispiel #4
0
 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
Beispiel #5
0
 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
Beispiel #6
0
 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