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),
|
LD(OpcodeParameter),
|
||||||
LDD(OpcodeParameter),
|
LDD(OpcodeParameter),
|
||||||
LDI(OpcodeParameter),
|
LDI(OpcodeParameter),
|
||||||
// LDHL(OpcodeParameter),
|
LDHL(OpcodeParameter),
|
||||||
PUSH(Register),
|
PUSH(Register),
|
||||||
POP(Register),
|
POP(Register),
|
||||||
ADD(OpcodeParameter),
|
ADD(OpcodeParameter),
|
||||||
@ -1045,11 +1045,28 @@ impl CPU {
|
|||||||
self.registers.set_flag(FlagRegister::Substract, false);
|
self.registers.set_flag(FlagRegister::Substract, false);
|
||||||
self.registers.set_flag(FlagRegister::HalfCarry, 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
|
// Disable interrupts
|
||||||
Opcode::DI => {
|
Opcode::DI => {
|
||||||
self.registers.increment(Register::PC, 1);
|
self.registers.increment(Register::PC, 1);
|
||||||
bus.write(0xFFFF, 0x00); // Disable all interrupts
|
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),
|
Opcode::NOP => self.registers.increment(Register::PC, 1),
|
||||||
// _ => println!("Illegal instruction"),
|
// _ => println!("Illegal instruction"),
|
||||||
_ => {},
|
_ => {},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user