mirror of
https://github.com/FranLMSP/rmg-001.git
synced 2025-02-23 11:41:33 +00:00
Last interrupt instructions
This commit is contained in:
parent
ff9fd48190
commit
b6b7e7bf73
19
src/cpu.rs
19
src/cpu.rs
@ -222,7 +222,7 @@ pub enum Opcode {
|
||||
LD(OpcodeParameter),
|
||||
LDD(OpcodeParameter),
|
||||
LDI(OpcodeParameter),
|
||||
// LDHL(OpcodeParameter),
|
||||
LDHL(OpcodeParameter),
|
||||
PUSH(Register),
|
||||
POP(Register),
|
||||
ADD(OpcodeParameter),
|
||||
@ -1045,11 +1045,28 @@ impl CPU {
|
||||
self.registers.set_flag(FlagRegister::Substract, false);
|
||||
self.registers.set_flag(FlagRegister::HalfCarry, false);
|
||||
},
|
||||
// Enable interrupts
|
||||
Opcode::EI => {
|
||||
self.registers.increment(Register::PC, 1);
|
||||
bus.write(0xFFFF, 0xFF); // Disable all interrupts
|
||||
},
|
||||
// Disable interrupts
|
||||
Opcode::DI => {
|
||||
self.registers.increment(Register::PC, 1);
|
||||
bus.write(0xFFFF, 0x00); // Disable all interrupts
|
||||
},
|
||||
// Same as enabling interrupts and then executing RET
|
||||
Opcode::RETI => {
|
||||
self.exec(Opcode::EI, bus);
|
||||
self.exec(Opcode::RET(OpcodeParameter::NoParam), bus);
|
||||
},
|
||||
// WIP
|
||||
Opcode::HALT => {
|
||||
self.registers.increment(Register::PC, 1);
|
||||
},
|
||||
Opcode::STOP => {
|
||||
self.registers.increment(Register::PC, 2);
|
||||
},
|
||||
Opcode::NOP => self.registers.increment(Register::PC, 1),
|
||||
// _ => println!("Illegal instruction"),
|
||||
_ => {},
|
||||
|
Loading…
x
Reference in New Issue
Block a user