Implement writing registers
This commit is contained in:
@@ -145,6 +145,10 @@ extern "C" {
|
||||
fn vb_set_option(sim: *mut VB, key: VBOption, value: c_int);
|
||||
#[link_name = "vbSetPeer"]
|
||||
fn vb_set_peer(sim: *mut VB, peer: *mut VB);
|
||||
#[link_name = "vbSetProgramCounter"]
|
||||
fn vb_set_program_counter(sim: *mut VB, value: u32) -> u32;
|
||||
#[link_name = "vbSetProgramRegister"]
|
||||
fn vb_set_program_register(sim: *mut VB, index: c_uint, value: i32) -> i32;
|
||||
#[link_name = "vbSetReadCallback"]
|
||||
fn vb_set_read_callback(sim: *mut VB, callback: Option<OnRead>) -> Option<OnRead>;
|
||||
#[link_name = "vbSetSamples"]
|
||||
@@ -154,6 +158,8 @@ extern "C" {
|
||||
typ_: VBDataType,
|
||||
capacity: c_uint,
|
||||
) -> c_int;
|
||||
#[link_name = "vbSetSystemRegister"]
|
||||
fn vb_set_system_register(sim: *mut VB, index: c_uint, value: u32) -> u32;
|
||||
#[link_name = "vbSetUserData"]
|
||||
fn vb_set_user_data(sim: *mut VB, tag: *mut c_void);
|
||||
#[link_name = "vbSetWriteCallback"]
|
||||
@@ -447,6 +453,20 @@ impl Sim {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn write_register(&mut self, register: VBRegister, value: u32) {
|
||||
match register {
|
||||
VBRegister::Program(index) => unsafe {
|
||||
vb_set_program_register(self.sim, index, value as i32);
|
||||
},
|
||||
VBRegister::System(index) => unsafe {
|
||||
vb_set_system_register(self.sim, index, value);
|
||||
},
|
||||
VBRegister::PC => unsafe {
|
||||
vb_set_program_counter(self.sim, value);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub fn read_memory(&mut self, start: u32, length: usize, into: &mut Vec<u8>) {
|
||||
let mut address = start;
|
||||
for _ in 0..length {
|
||||
|
||||
Reference in New Issue
Block a user