Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # pylint: disable:E501
- from ram import RAM
- from operator import add, sub, mul, floordiv, mod
- inc = lambda x: x + 1
- dec = lambda x: x - 1
- class CPU:
- def __init__(self):
- self.registers = {'00': 0, '01': 0, '02': 0, '03': 0}
- self.IP = 0
- self.SP = int('0xBF', 16)
- self.SR = 0
- self.ram = RAM()
- self.table = {'A0': {'len': 2, 'op': add},
- 'A1': {'len': 2, 'op': sub},
- 'A2': {'len': 2, 'op': mul},
- 'A3': {'len': 2, 'op': floordiv},
- 'A4': {'len': 1, 'op': inc},
- 'A5': {'len': 1, 'op': dec},
- 'A6': {'len': 2, 'op': mod},
- 'B0': {'len': 2, 'op': add},
- 'B1': {'len': 2, 'op': sub},
- 'B2': {'len': 2, 'op': mul},
- 'B3': {'len': 2, 'op': floordiv},
- 'B6': {'len': 2, 'op': mod},
- 'C0': {'len': 1, 'op': },
- 'C1': {'len': 1, 'op': 'JZ'},
- 'C2': {'len': 1, 'op': 'JNZ'},
- 'C3': {'len': 1, 'op': 'JS'},
- 'C4': {'len': 1, 'op': 'JNS'},
- 'C5': {'len': 1, 'op': 'JO'},
- 'C6': {'len': 1, 'op': 'JNO'},
- 'D0': {'len': 2, 'op': 'MOV'},
- 'D1': {'len': 2, 'op': 'MOV'},
- 'D2': {'len': 2, 'op': 'MOV'},
- 'D3': {'len': 2, 'op': 'MOV'},
- 'D4': {'len': 2, 'op': 'MOV'},
- 'DA': {'len': 2, 'op': 'CMP'},
- 'DB': {'len': 2, 'op': 'CMP'},
- 'DC': {'len': 2, 'op': 'CMP'},
- 'E0': {'len': 1, 'op': 'PUSH'},
- 'E1': {'len': 1, 'op': 'POP'}}
- def fetch(self, loc):
- op = self.ram.get(loc)
- lookup = self.table[op]
- forward, func = lookup.values()
- args = [self.fetch(loc + i) for i in range()
Advertisement
Add Comment
Please, Sign In to add comment