diff options
author | Oxore <oxore@protonmail.com> | 2020-03-04 02:06:37 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2020-03-04 02:19:23 +0300 |
commit | 52b665108f6f2203df251eec273184b142ee2e16 (patch) | |
tree | 58703ea1a50960a10001cd737f9bb6ec3706bdcd /src/memory.rs | |
parent | e3bf2663362b7362569679bbbd15287e73a8ad2a (diff) |
Add Memory trait for Rom, refactor instantiating
Diffstat (limited to 'src/memory.rs')
-rw-r--r-- | src/memory.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/memory.rs b/src/memory.rs new file mode 100644 index 0000000..372a029 --- /dev/null +++ b/src/memory.rs @@ -0,0 +1,18 @@ +extern crate num_traits; + +pub trait Memory<Addr> + where Addr: Copy + core::ops::Add<Output = Addr> + num_traits::identities::One +{ + fn get(&self, a: Addr) -> u8; + + fn set(&mut self, a: Addr, v: u8); + + fn get_word(&self, a: Addr) -> u16 { + u16::from(self.get(a)) | (u16::from(self.get(a + Addr::one())) << 8) + } + + fn set_word(&mut self, a: Addr, v: u16) { + self.set(a, (v & 0xFF) as u8); + self.set(a + Addr::one(), (v >> 8) as u8) + } +} |