コード例 #1
0
ファイル: functions.py プロジェクト: vsanse/8085_Emulator
def SUB(register):
    if not validate.validate_reg(register):
        print "Invalid Register: %s" % register
        exit(1)
    a = int(registers.reg["A"], 16)
    if register == "M":
        b = extras.getPair('H', 'L')
        if extras.chkMemory(b):
            b = int(registers.reg[register], 16)
        else:
            print " Invalid Memory:", b
            exit(1)
    else:
        b = int(registers.reg[register], 16)
    t = a - b
    a = int(extras.getLowerNibble(format(a, '0x')), 2)
    b = int(extras.getLowerNibble(format(b, '0x')), 2)
    if not validate.validate_data(t):
        print "\n////-----UnderFlow Detected----////\n"
        t = format(t, "02x")
        t = set_flags.setCarry(t)
        set_flags.setFlags(a, b, t, isAbnormalFlow=True)
        tmp = {"A": t[1:]}
    else:
        t = format(t, "02x")
        set_flags.setFlags(a, b, t)
        tmp = {"A": t}
        set_flags.setFlags(a, b, t)
    registers.reg.update(tmp)
コード例 #2
0
ファイル: functions.py プロジェクト: vsanse/8085_Emulator
def SUI(data):
    a = int(registers.reg['A'], 16)
    b = int(data, 16)
    res = a - b
    res = format(res, '02x')
    if not validate.validate_data(int(res, 16)):
        res = set_flags.setCarry(res)
        set_flags.setFlags(a, b, res, isAbnormalFlow=True)
    else:
        set_flags.setFlags(a, b, res)

    registers.reg['A'] = res
コード例 #3
0
ファイル: functions.py プロジェクト: vsanse/8085_Emulator
def DAD(reg1):
    if validate.validate_reg(reg1):
        c = 0
        try:
            reg2 = registers.reg_pair[reg1]
        except:
            print "invalid register pair", reg1
            exit(1)
        a = int(registers.reg[reg2], 16)
        res = int(registers.reg['L'], 16) + a
        if res > 255:
            c = 1
            res -= 256
        registers.reg['L'] = format(res, '02x')
        a = int(registers.reg[reg1], 16)
        res = int(registers.reg['H'], 16) + a + c
        res = format(res, '02x')
        if not validate.validate_data(int(res, 16)):
            res = set_flags.setCarry(res)
        registers.reg['H'] = res
    else:
        print 'invalid register pair:', reg1
        exit(1)