1use crate::sm83::Sm83;
2
3impl Sm83 {
4    // SCF: Set carry flag
5    pub(super) fn scf(&mut self) {
6        self.registers.f.subtract = false;
7        self.registers.f.half_carry = false;
8        self.registers.f.carry = true;
9    }
10
11    // CCF: Complement carry flag
12    pub(super) fn ccf(&mut self) {
13        self.registers.f.subtract = false;
14        self.registers.f.half_carry = false;
15        self.registers.f.carry = !self.registers.f.carry;
16    }
17
18    // EI: Enable interrupts
19    pub(super) fn ei(&mut self) {
20        // EI has a 1-instruction delay before it takes effect, and if the next instruction is DI
21        // then it effectively cancels the EI.
22        self.state.pending_ime_set = true;
23    }
24
25    // DI: Disable interrupts
26    pub(super) fn di(&mut self) {
27        self.registers.ime = false;
28        self.state.pending_ime_set = false;
29    }
30}