mirror of https://github.com/mre/mos6502.git
refactor away some casts
This commit is contained in:
parent
7579cd5d24
commit
fe4422359d
31
src/cpu.rs
31
src/cpu.rs
|
@ -610,29 +610,18 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_flags_from_i8(status: &mut Status, value: i8) {
|
const fn value_is_negative(value: u8) -> bool {
|
||||||
let is_zero = value == 0;
|
value > 127
|
||||||
let is_negative = value < 0;
|
|
||||||
|
|
||||||
status.set_with_mask(
|
|
||||||
Status::PS_ZERO | Status::PS_NEGATIVE,
|
|
||||||
Status::new(StatusArgs {
|
|
||||||
zero: is_zero,
|
|
||||||
negative: is_negative,
|
|
||||||
..StatusArgs::none()
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_flags_from_u8(status: &mut Status, value: u8) {
|
fn set_flags_from_u8(status: &mut Status, value: u8) {
|
||||||
let is_zero = value == 0;
|
let is_zero = value == 0;
|
||||||
let is_negative = value > 127;
|
|
||||||
|
|
||||||
status.set_with_mask(
|
status.set_with_mask(
|
||||||
Status::PS_ZERO | Status::PS_NEGATIVE,
|
Status::PS_ZERO | Status::PS_NEGATIVE,
|
||||||
Status::new(StatusArgs {
|
Status::new(StatusArgs {
|
||||||
zero: is_zero,
|
zero: is_zero,
|
||||||
negative: is_negative,
|
negative: Self::value_is_negative(value),
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
@ -650,7 +639,7 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
CPU::<M, V>::set_flags_from_i8(status, *p_val as i8);
|
CPU::<M, V>::set_flags_from_u8(status, *p_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn shift_right_with_flags(p_val: &mut u8, status: &mut Status) {
|
fn shift_right_with_flags(p_val: &mut u8, status: &mut Status) {
|
||||||
|
@ -664,7 +653,7 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
CPU::<M, V>::set_flags_from_i8(status, *p_val as i8);
|
CPU::<M, V>::set_flags_from_u8(status, *p_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rotate_left_with_flags(p_val: &mut u8, status: &mut Status) {
|
fn rotate_left_with_flags(p_val: &mut u8, status: &mut Status) {
|
||||||
|
@ -680,7 +669,7 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
CPU::<M, V>::set_flags_from_i8(status, *p_val as i8);
|
CPU::<M, V>::set_flags_from_u8(status, *p_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rotate_right_with_flags(p_val: &mut u8, status: &mut Status) {
|
fn rotate_right_with_flags(p_val: &mut u8, status: &mut Status) {
|
||||||
|
@ -696,7 +685,7 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
CPU::<M, V>::set_flags_from_i8(status, *p_val as i8);
|
CPU::<M, V>::set_flags_from_u8(status, *p_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_u8_with_flags(mem: &mut u8, status: &mut Status, value: u8) {
|
fn set_u8_with_flags(mem: &mut u8, status: &mut Status, value: u8) {
|
||||||
|
@ -917,13 +906,12 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
let value_new = val.wrapping_add(1);
|
let value_new = val.wrapping_add(1);
|
||||||
*val = value_new;
|
*val = value_new;
|
||||||
|
|
||||||
let is_negative = (value_new as i8) < 0;
|
|
||||||
let is_zero = value_new == 0;
|
let is_zero = value_new == 0;
|
||||||
|
|
||||||
flags.set_with_mask(
|
flags.set_with_mask(
|
||||||
Status::PS_NEGATIVE | Status::PS_ZERO,
|
Status::PS_NEGATIVE | Status::PS_ZERO,
|
||||||
Status::new(StatusArgs {
|
Status::new(StatusArgs {
|
||||||
negative: is_negative,
|
negative: Self::value_is_negative(value_new),
|
||||||
zero: is_zero,
|
zero: is_zero,
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
|
@ -934,13 +922,12 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
||||||
let value_new = val.wrapping_sub(1);
|
let value_new = val.wrapping_sub(1);
|
||||||
*val = value_new;
|
*val = value_new;
|
||||||
|
|
||||||
let is_negative = (value_new as i8) < 0;
|
|
||||||
let is_zero = value_new == 0;
|
let is_zero = value_new == 0;
|
||||||
|
|
||||||
flags.set_with_mask(
|
flags.set_with_mask(
|
||||||
Status::PS_NEGATIVE | Status::PS_ZERO,
|
Status::PS_NEGATIVE | Status::PS_ZERO,
|
||||||
Status::new(StatusArgs {
|
Status::new(StatusArgs {
|
||||||
negative: is_negative,
|
negative: Self::value_is_negative(value_new),
|
||||||
zero: is_zero,
|
zero: is_zero,
|
||||||
..StatusArgs::none()
|
..StatusArgs::none()
|
||||||
}),
|
}),
|
||||||
|
|
Loading…
Reference in New Issue