atebitemu 1.1.1

A MOS 6502 emulator
pub struct Memory(pub Vec<u8>);

impl Memory {
    pub fn new() -> Self {
        Self(vec![0u8; 65536])
    }

    pub fn load_at(&mut self, addr: u16, data: &[u8]) {
        let start = addr as usize;
        let end = (start + data.len()).min(65536);
        let len = end - start;

        self.0[start..end].copy_from_slice(&data[..len]);
    }

    pub fn write_u16(&mut self, addr: u16, val: u16) {
        self.0[addr as usize] = (val & 0xFF) as u8;
        self.0[(addr + 1) as usize] = (val >> 8) as u8;
    }
}