Implement interrupt

This commit is contained in:
Quentin Legot 2023-03-01 17:18:45 +01:00
parent b39e56b9c4
commit 4dae299008
2 changed files with 39 additions and 1 deletions

View 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
}

View File

@ -2,7 +2,7 @@ pub mod machine;
pub mod decode;
pub mod print;
pub mod mem_cmp;
pub mod interrupt;
pub mod global {