From b125ab17a06c44b078d03aa21f8f58b484bf0642 Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Wed, 6 Nov 2019 23:24:16 -0600 Subject: [PATCH] Fixed the flags to match 8085 and created the add and subtract methods --- register.py | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/register.py b/register.py index b3b46cd..3454aee 100644 --- a/register.py +++ b/register.py @@ -48,10 +48,41 @@ class Register: class Acumulator(Register): - positive_flag = False negative_flag = False zero_flag = False - carry = False + carry_flag = False + parity_flag = False - def add(self, register): + def set_flags(self): + self.negative_flag = False + self.zero_flag = False + + if self.get_signed() < 0: + self.negative_flag = True + if self.get() == 0: + self.zero_flag = True + v = self.get() + self.parity_flag = True + while v > 0: + if (v & 1) == 1: + self.parity_flag = not self.parity_flag + v >>= 1 + + def add(self, register: Register): + self.value += register.value + if self.value.bit_length() > self.n_bits: + self.carry_flag = True + self.trucate() + self.set_flags() + + def sub(self, register: Register): + self.negate() + self.add(register) + self.negate() + self.set_flags() + + def shift_right(self, through_carry=True): + pass + + def shift_left(self, through_carry=True): pass