ZXS: Rename Memory to RAM
authorLucian Mogosanu <lucian.mogosanu@gmail.com>
Sat, 13 Dec 2014 16:50:19 +0000 (18:50 +0200)
committerLucian Mogosanu <lucian.mogosanu@gmail.com>
Sat, 13 Dec 2014 16:50:24 +0000 (18:50 +0200)
because "Memory" is too generic, as we will also have I/O memory for
example. This commit also drops the Show instance from ZXST, I wish I
could solve this somehow in the future.

src/ZXS/Machine.hs
src/ZXS/Memory.hs [deleted file]
src/ZXS/RAM.hs [new file with mode: 0644]

index 7237ebf..f43cd26 100644 (file)
@@ -5,14 +5,14 @@ import Control.Monad.State
 import Control.Applicative (Applicative)
 
 import Z80.CPU
-import ZXS.Memory
+import ZXS.RAM
 
 data Spectrum = Spectrum
   { zxCPU     :: CPU
-  , zxMemory  :: Memory
+  , zxMainMem :: RAM
   -- TODO: there's other stuff to add, but this will be done after
   -- the scaffolding is in place.
-  } deriving (Show, Eq)
+  } deriving Eq
 
 -- the ZXS transformer
 newtype ZXST m a = ZXST { unZXST :: StateT Spectrum m a }
diff --git a/src/ZXS/Memory.hs b/src/ZXS/Memory.hs
deleted file mode 100644 (file)
index f64ecd1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-module ZXS.Memory where
-
-import Data.Array.MArray
-import Data.Array.IO
-import Data.Word
-import Data.Bits
-
-type Memory = IOArray Word16 Word8
-
-memGetByte :: Memory -> Word16 -> IO Word8
-memGetByte = readArray
-
-memGetWord :: Memory -> Word16 -> IO Word16
-memGetWord mem addr = do
-  lb <- memGetByte mem addr
-  hb <- memGetByte mem (addr + 1)
-  let low = fromIntegral lb
-      high = fromIntegral hb `shiftL` 8
-  return $ high .|. low
-
-memSetByte :: Memory -> Word16 -> Word8 -> IO ()
-memSetByte = writeArray
-
-memSetWord :: Memory -> Word16 -> Word16 -> IO ()
-memSetWord mem addr w = memSetByte mem addr lb >> memSetByte mem (addr + 1) hb
-  where
-  lb = fromIntegral w
-  hb = fromIntegral $ w `shiftR` 8
-
-memModifyByte :: Memory -> Word16 -> (Word8 -> Word8) -> IO ()
-memModifyByte mem addr f = do
-  b <- memGetByte mem addr
-  memSetByte mem addr $ f b
-
-memModifyWord :: Memory -> Word16 -> (Word16 -> Word16) -> IO ()
-memModifyWord mem addr f = do
-  w <- memGetWord mem addr
-  memSetWord mem addr $ f w
-
-romMem :: IO Memory
-romMem = newListArray (0x0000, 0x3fff) $ repeat 0
diff --git a/src/ZXS/RAM.hs b/src/ZXS/RAM.hs
new file mode 100644 (file)
index 0000000..9a755d5
--- /dev/null
@@ -0,0 +1,41 @@
+module ZXS.RAM where
+
+import Data.Array.MArray
+import Data.Array.IO
+import Data.Word
+import Data.Bits
+
+type RAM = IOArray Word16 Word8
+
+ramGetByte :: RAM -> Word16 -> IO Word8
+ramGetByte = readArray
+
+ramGetWord :: RAM -> Word16 -> IO Word16
+ramGetWord ram addr = do
+  lb <- ramGetByte ram addr
+  hb <- ramGetByte ram (addr + 1)
+  let low = fromIntegral lb
+      high = fromIntegral hb `shiftL` 8
+  return $ high .|. low
+
+ramSetByte :: RAM -> Word16 -> Word8 -> IO ()
+ramSetByte = writeArray
+
+ramSetWord :: RAM -> Word16 -> Word16 -> IO ()
+ramSetWord ram addr w = ramSetByte ram addr lb >> ramSetByte ram (addr + 1) hb
+  where
+  lb = fromIntegral w
+  hb = fromIntegral $ w `shiftR` 8
+
+ramModifyByte :: RAM -> Word16 -> (Word8 -> Word8) -> IO ()
+ramModifyByte ram addr f = do
+  b <- ramGetByte ram addr
+  ramSetByte ram addr $ f b
+
+ramModifyWord :: RAM -> Word16 -> (Word16 -> Word16) -> IO ()
+ramModifyWord ram addr f = do
+  w <- ramGetWord ram addr
+  ramSetWord ram addr $ f w
+
+romMem :: IO RAM
+romMem = newListArray (0x0000, 0x3fff) $ repeat 0