Implement interrupt
This commit is contained in:
parent
621b0568b0
commit
e4db7ec96b
38
src/simulator/interrupt.rs
Normal file
38
src/simulator/interrupt.rs
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
|
||||
struct Interrupt {
|
||||
level: InterruptStatus
|
||||
}
|
||||
|
||||
impl Interrupt {
|
||||
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
level: InterruptStatus::InterruptOff
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_status(&mut self, newStatus: InterruptStatus) -> InterruptStatus {
|
||||
let old = self.level;
|
||||
self.level = newStatus;
|
||||
if newStatus == InterruptStatus::InterruptOn && old == InterruptStatus::InterruptOff {
|
||||
self.one_tick(1);
|
||||
}
|
||||
old
|
||||
}
|
||||
|
||||
fn one_tick(&self, nb_cycle: i32) {
|
||||
todo!();
|
||||
}
|
||||
|
||||
pub fn get_status(&self) -> InterruptStatus {
|
||||
self.level
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Clone, Copy)]
|
||||
pub enum InterruptStatus {
|
||||
InterruptOff,
|
||||
InterruptOn
|
||||
}
|
@ -3,6 +3,7 @@ pub mod decode;
|
||||
pub mod print;
|
||||
pub mod mem_cmp;
|
||||
pub mod loader;
|
||||
pub mod interrupt;
|
||||
|
||||
pub mod global {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user