Store the RegisterBankState in a algbraic data type.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Fri, 30 Jan 2009 09:11:06 +0000 (10:11 +0100)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Fri, 30 Jan 2009 09:11:06 +0000 (10:11 +0100)
Alu.hs

diff --git a/Alu.hs b/Alu.hs
index 59e5fd521a9ac856bc489eafbbb4d04cfc2cf2a8..40f76220ade83a2116b6f0bb928e8853cff34863 100644 (file)
--- a/Alu.hs
+++ b/Alu.hs
@@ -14,30 +14,32 @@ program = [
             (High, High, DontCare) -- r1 = z (0)
           ]
 
-initial_state = ((Low, High), (), Low, Low)
+initial_state = (Regs Low High, (), Low, Low)
 
 -- Register bank
 
 type RegAddr = Bit
-type RegisterBankState = (Bit, Bit)
+--type RegisterBankState = (Bit, Bit)
+data RegisterBankState = Regs { r0, r1 :: Bit} deriving (Show)
+
 register_bank :: 
   (RegAddr, Bit, Bit) -> -- (addr, we, d)
   RegisterBankState -> -- s
   (RegisterBankState, Bit) -- (s', o)
 
 register_bank (Low, Low, _) s = -- Read r0
-  (s, fst s)
+  (s, r0 s)
 
 register_bank (High, Low, _) s = -- Read r1
-  (s, snd s)
+  (s, r1 s)
 
 register_bank (addr, High, d) s = -- Write
   (s', DontCare)
   where
-    (r0, r1) = s
+    Regs r0 r1 = s
     r0' = if addr == Low then d else r0
     r1' = if addr == High then d else r1
-    s' = (r0', r1')
+    s' = Regs r0' r1'
 
 -- ALU