Fix SRL and SRA
This commit is contained in:
parent
4a1b335887
commit
fbffa7dccb
10
src/cpu.rs
10
src/cpu.rs
@ -209,7 +209,7 @@ impl CPU {
|
|||||||
}
|
}
|
||||||
let v: u8 = self.get_8bit_reg(reg_id);
|
let v: u8 = self.get_8bit_reg(reg_id);
|
||||||
self.set_clear_flag(FLAG_C, v & 1 > 0);
|
self.set_clear_flag(FLAG_C, v & 1 > 0);
|
||||||
self.set_8bit_reg(reg_id, v >> 1);
|
self.set_8bit_reg(reg_id, v >> 1 | v & 0x80);
|
||||||
},
|
},
|
||||||
0x30 ... 0x37 => {
|
0x30 ... 0x37 => {
|
||||||
let reg_id = (instruction - 0x30) as usize;
|
let reg_id = (instruction - 0x30) as usize;
|
||||||
@ -225,8 +225,14 @@ impl CPU {
|
|||||||
println!("SRL {}", REG_NAMES[reg_id]);
|
println!("SRL {}", REG_NAMES[reg_id]);
|
||||||
}
|
}
|
||||||
let v: u8 = self.get_8bit_reg(reg_id);
|
let v: u8 = self.get_8bit_reg(reg_id);
|
||||||
self.set_8bit_reg(reg_id, v << 1);
|
self.set_8bit_reg(reg_id, v >> 1);
|
||||||
|
self.set_clear_flag(FLAG_C, v & 1);
|
||||||
|
self.clear_flag(FLAG_N);
|
||||||
|
self.clear_flag(FLAG_H);
|
||||||
|
self.set_clear_flag(FLAG_Z, (v & 0xFE) == 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Bits
|
||||||
0x40 ... 0x47 => {
|
0x40 ... 0x47 => {
|
||||||
// Test 0th bit
|
// Test 0th bit
|
||||||
let reg_id = (instruction - 0x40) as usize;
|
let reg_id = (instruction - 0x40) as usize;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user