From 6b3796c9a0d3a2f1422bcbde4790c43417659722 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Tue, 16 Apr 2024 10:51:13 +1200 Subject: Update devices to match new specifications --- src/devices/math.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'src/devices/math.rs') diff --git a/src/devices/math.rs b/src/devices/math.rs index c8d2194..cefb572 100644 --- a/src/devices/math.rs +++ b/src/devices/math.rs @@ -1,10 +1,6 @@ pub struct MathDevice { pub operand_1: u16, pub operand_2: u16, - pub product_high: u16, - pub product_low: u16, - pub quotient: u16, - pub remainder: u16, } impl MathDevice { @@ -12,24 +8,24 @@ impl MathDevice { Self { operand_1: 0x0000, operand_2: 0x0000, - product_high: 0x0000, - product_low: 0x0000, - quotient: 0x0000, - remainder: 0x0000, } } - pub fn multiply(&mut self) { - let (low, high) = self.operand_1.widening_mul(self.operand_2); - self.product_high = high; - self.product_low = low; + pub fn multiply_high(&mut self) -> u16 { + let (_, high) = self.operand_1.widening_mul(self.operand_2); + return high; } - pub fn divide(&mut self) { - self.quotient = self.operand_1.checked_div(self.operand_2).unwrap_or(0); + pub fn multiply_low(&mut self) -> u16 { + let (low, _) = self.operand_1.widening_mul(self.operand_2); + return low; } - pub fn modulo(&mut self) { - self.remainder = self.operand_1.checked_rem(self.operand_2).unwrap_or(0); + pub fn divide(&mut self) -> u16 { + self.operand_1.checked_div(self.operand_2).unwrap_or(0) + } + + pub fn modulo(&mut self) -> u16 { + self.operand_1.checked_rem(self.operand_2).unwrap_or(0) } } -- cgit v1.2.3-70-g09d2