コード例 #1
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def LOADV(operands):
    global registers
    R = operands[:4]
    XY = operands[4:]
    # util.safeSet(registers,
    #              util.getValFromBits(R),
    #              util.getValFromBits(XY))
    registers[util.getValFromBits(R)] = util.getValFromBits(XY)
コード例 #2
0
ファイル: internals.py プロジェクト: harrisi/on-being-better
def PRINT(operands):
    global memory, registers
    R = operands[:4] # register to probe
    XY = operands[4:] # memory cell to probe
    print('R' + str(util.getValFromBits(R)) +
          ': {:#010b}'.format(registers[util.getValFromBits(R)]) +
          '\nCell 0x{:02X}'.format(util.getValFromBits(XY)) +
          ': 0x{:02X}'.format(memory[util.getValFromBits(XY)]))
コード例 #3
0
ファイル: internals.py プロジェクト: harrisi/on-being-better
def ROTATE(operands): # bits 8-12 ignored
    global registers
    R = operands[:4]
    X = operands[8:]
    def rotateHelper(l, n):
        if n == 0:
            return l
        else:
            return rotateHelper([l[-1]] + l[:-1], n - 1)
    registers[util.getValFromBits(R)] = util.getValFromBits(
        rotateHelper(
            util.intToBits(registers[util.getValFromBits(R)], 8),
            util.getValFromBits(X)))
コード例 #4
0
ファイル: registers.py プロジェクト: harrisi/on-being-better
    def __setitem__(self, key, item):
        if type(key) is list:
            key = util.getValFromBits(key)
        if type(key) != int:
            sys.exit("""ERROR: Register must be integer value.
Value given: {}""".format(repr(key)))
        if not(0 <= key <= 0xF):
            sys.exit("ERROR: Register " + key + " out of range.")
        if not(-(2 ** 7) <= item <= ((2 ** 7) - 1)):
            print('*** WARNING: item out of range (overflow not yet implemented)')
        self.__dict__[key] = item
コード例 #5
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def XOR(operands):
    global registers
    R = operands[:4]
    S = operands[4:8]
    T = operands[8:]
    registers[util.getValFromBits(R)] = registers[util.getValFromBits(S)] ^ registers[util.getValFromBits(T)]
コード例 #6
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def ADDF(operands):  # floating-point
    global registers
    R = operands[:4]
    S = operands[4:8]
    T = operands[8:]
    registers[util.getValFromBits(R)] = registers[util.getValFromBits(S)] + registers[util.getValFromBits(T)]
コード例 #7
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def MOVE(operands):  # first four bits ignored
    global registers
    R = operands[4:8]
    S = operands[8:]
    registers[util.getValFromBits(R)] = registers[util.getValFromBits(S)]
コード例 #8
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def STORE(operands):
    global memory, registers
    R = operands[:4]
    XY = operands[4:]
    memory[util.getValFromBits(XY)] = registers[util.getValFromBits(R)]
コード例 #9
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def LOAD(operands):  # 12 bits as list
    global registers, memory
    R = operands[:4]
    XY = operands[4:]
    registers[util.getValFromBits(R)] = memory[util.getValFromBits(XY)]
コード例 #10
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def INT(operands):
    global memory, registers
    ih.handleInterupt(util.getValFromBits(operands), memory, registers)
コード例 #11
0
ファイル: internals.py プロジェクト: cascade256/appendixc
def JUMP(operands):
    global registers, PC
    R = operands[:4]
    XY = operands[4:]
    if registers[util.getValFromBits(R)] == registers[0]:
        PC = util.getValFromBits(XY)
コード例 #12
0
ファイル: registers.py プロジェクト: harrisi/on-being-better
 def __getitem__(self, key):
     if type(key) is list:
         key = util.getValFromBits(key)
     return self.__dict__[key]