diff options
| author | LLLL Colonq <llll@colonq> | 2025-06-01 19:07:25 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2025-06-01 19:07:25 -0400 |
| commit | 4bc8bd58e6f9a6ca509d4e6869ba10c65145775d (patch) | |
| tree | 5bc97cc01e737f9cacba1f7c13570ce7846acf36 /fig-emulator-gb/src/Fig/Emulator/GB/Bus.hs | |
| parent | f95d9bbde51ee26468177b2d34c669d9689fbea4 (diff) | |
Remove fig-emulator-gb
Diffstat (limited to 'fig-emulator-gb/src/Fig/Emulator/GB/Bus.hs')
| -rw-r--r-- | fig-emulator-gb/src/Fig/Emulator/GB/Bus.hs | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/fig-emulator-gb/src/Fig/Emulator/GB/Bus.hs b/fig-emulator-gb/src/Fig/Emulator/GB/Bus.hs deleted file mode 100644 index 2b71f2f..0000000 --- a/fig-emulator-gb/src/Fig/Emulator/GB/Bus.hs +++ /dev/null @@ -1,48 +0,0 @@ -module Fig.Emulator.GB.Bus - ( Addr(..) - , Component(..) - , Bus(..) - , update - , write - , read - ) where - -import Fig.Prelude - -import Numeric (showHex) - -import qualified Data.List as List -import Data.Word (Word16, Word8) - -newtype Addr = Addr { unAddr :: Word16 } - deriving (Show, Num, Eq, Ord) -instance Pretty Addr where - pretty (Addr w) = "$" <> pack (showHex w "") - -data Component = forall (s :: Type). Component - { compState :: !s - , compMatches :: !(Addr -> Bool) - , compUpdate :: !(s -> Word16 -> IO s) - , compWrite :: !(s -> Addr -> Word8 -> IO s) - , compRead :: !(s -> Addr -> IO Word8) - } - -newtype Bus = Bus { busComponents :: [Component] } - -update :: Word16 -> Bus -> IO Bus -update t b = Bus <$> forM (busComponents b) \Component{..} -> do - s <- compUpdate compState t - pure Component { compState = s, ..} - -write :: Bus -> Addr -> Word8 -> IO Bus -write b a v = Bus <$> forM (busComponents b) \c@Component{..} -> - if compMatches a - then do - s <- compWrite compState a v - pure Component { compState = s, ..} - else pure c - -read :: Bus -> Addr -> IO (Maybe Word8) -read b a = case List.find (`compMatches` a) $ busComponents b of - Nothing -> pure Nothing - Just Component{..} -> Just <$> compRead compState a |
