示例#1
0
def _and_a_value(processor, value):
    result = processor.main_registers['a'] & value
    processor.main_registers['a'] = result
    set_condition = processor.set_condition
    set_condition('s', result & 0b10000000 > 0)
    set_condition('z', result == 0)
    set_condition('h', True)
    set_condition('p', has_parity(result))
    set_condition('n', False)
    set_condition('c', False)
示例#2
0
def _and_a_value(processor, value):
    result = processor.main_registers['a'] & value
    processor.main_registers['a'] = result
    set_condition = processor.set_condition
    set_condition('s', result & 0b10000000 > 0)
    set_condition('z', result == 0)
    set_condition('h', True)
    set_condition('p', has_parity(result))
    set_condition('n', False)
    set_condition('c', False)
示例#3
0
文件: io.py 项目: alangibson27/qaopm
    def execute(self, processor, memory, pc):
        value = self.io.read(self.processor.main_registers['c'], self.processor.main_registers['b'])
        self.processor.main_registers[self.dest_reg] = value

        self.processor.set_condition('s', (value & 0b10000000) > 0)
        self.processor.set_condition('z', value == 0)
        self.processor.set_condition('h', False)
        self.processor.set_condition('p', has_parity(value))
        self.processor.set_condition('n', False)
        return 12, False, pc
示例#4
0
文件: io.py 项目: iohe/qaopm
    def execute(self, processor, memory, pc):
        value = self.io.read(self.processor.main_registers['c'],
                             self.processor.main_registers['b'])
        self.processor.main_registers[self.dest_reg] = value

        self.processor.set_condition('s', (value & 0b10000000) > 0)
        self.processor.set_condition('z', value == 0)
        self.processor.set_condition('h', False)
        self.processor.set_condition('p', has_parity(value))
        self.processor.set_condition('n', False)
        return 12, False, pc
示例#5
0
    def _daa_after_sub(processor, digits, fc, hc):
        if not fc and not hc:
            if digits[0] <= 0x9 and digits[1] <= 0x9:
                pass
        elif not fc and hc:
            if digits[0] <= 0x8 and digits[1] >= 0x6:
                processor.main_registers['a'] += 0xfa
        elif fc and not hc:
            if digits[0] >= 0x7 and digits[1] <= 0x9:
                processor.main_registers['a'] += 0xa0
                processor.set_condition('c', True)
        elif fc and hc:
            if digits[0] >= 0x6 and digits[1] >= 0x6:
                processor.main_registers['a'] += 0x9a
                processor.set_condition('c', True)

        processor.main_registers['a'] &= 0xff

        result = processor.main_registers['a']
        processor.set_condition('s', (result & 0b10000000) > 0)
        processor.set_condition('z', result == 0)
        processor.set_condition('p', has_parity(result))
示例#6
0
    def _daa_after_sub(processor, digits, fc, hc):
        if not fc and not hc:
            if digits[0] <= 0x9 and digits[1] <= 0x9:
                pass
        elif not fc and hc:
            if digits[0] <= 0x8 and digits[1] >= 0x6:
                processor.main_registers['a'] += 0xfa
        elif fc and not hc:
            if digits[0] >= 0x7 and digits[1] <= 0x9:
                processor.main_registers['a'] += 0xa0
                processor.set_condition('c', True)
        elif fc and hc:
            if digits[0] >= 0x6 and digits[1] >= 0x6:
                processor.main_registers['a'] += 0x9a
                processor.set_condition('c', True)

        processor.main_registers['a'] &= 0xff

        result = processor.main_registers['a']
        processor.set_condition('s', (result & 0b10000000) > 0)
        processor.set_condition('z', result == 0)
        processor.set_condition('p', has_parity(result))