1
0
mirror of https://github.com/mre/mos6502.git synced 2024-11-28 22:51:26 +00:00

whitespace

This commit is contained in:
Sam M W 2021-01-27 20:31:36 +00:00
parent 153f8e4bd7
commit 3844a730f0

View File

@ -567,56 +567,45 @@ impl CPU {
} }
// TODO: Implement binary-coded decimal // TODO: Implement binary-coded decimal
fn subtract_with_carry(&mut self, value: i8) { fn subtract_with_carry(&mut self, value: i8) {
if self.registers.status.contains(Status::PS_DECIMAL_MODE) { // A - M - (1 - C)
debug!(
"binary-coded decimal not implemented for \
subtract_with_carry"
);
} else {
// A - M - (1 - C)
// nc -- 'not carry' // nc -- 'not carry'
let nc: i8 = if self.registers.status.contains(Status::PS_CARRY) { let nc: i8 = if self.registers.status.contains(Status::PS_CARRY) {
0 0
} else { } else {
1 1
}; };
let a_before: i8 = self.registers.accumulator; let a_before: i8 = self.registers.accumulator;
let a_after = a_before.wrapping_sub(value).wrapping_sub(nc); let a_after = a_before.wrapping_sub(value).wrapping_sub(nc);
// The carry flag is set on unsigned overflow. // The carry flag is set on unsigned overflow.
let did_carry = (a_after as u8) > (a_before as u8); let did_carry = (a_after as u8) > (a_before as u8);
// The overflow flag is set on two's-complement overflow. // The overflow flag is set on two's-complement overflow.
// //
// range of A is -128 to 127 // range of A is -128 to 127
// range of - M - (1 - C) is -128 to 128 // range of - M - (1 - C) is -128 to 128
// -(127 + 1) to -(-128 + 0) // -(127 + 1) to -(-128 + 0)
// //
let over = let over =
((nc == 0 && value < 0) || (nc == 1 && value < -1)) && a_before >= 0 && a_after < 0; ((nc == 0 && value < 0) || (nc == 1 && value < -1)) && a_before >= 0 && a_after < 0;
let under = (a_before < 0) && (-value - nc < 0) && a_after >= 0; let under = (a_before < 0) && (-value - nc < 0) && a_after >= 0;
let did_overflow = over || under; let did_overflow = over || under;
let mask = Status::PS_CARRY | Status::PS_OVERFLOW; let mask = Status::PS_CARRY | Status::PS_OVERFLOW;
self.registers.status.set_with_mask( self.registers.status.set_with_mask(
mask, mask,
Status::new(StatusArgs { Status::new(StatusArgs { carry: did_carry, overflow: did_overflow, ..StatusArgs::none() }),
carry: did_carry, );
overflow: did_overflow,
..StatusArgs::none()
}),
);
self.load_accumulator(a_after); self.load_accumulator(a_after);
} }
}
fn decrement_memory(&mut self, addr: Address) { fn decrement_memory(&mut self, addr: Address) {
let value_new = self.memory.get_byte(addr).wrapping_sub(1); let value_new = self.memory.get_byte(addr).wrapping_sub(1);