mirror of
https://github.com/mre/mos6502.git
synced 2024-11-28 22:51:26 +00:00
Make code more idiomatic (#61)
This commit is contained in:
parent
113f95afba
commit
c3438c14e7
16
src/cpu.rs
16
src/cpu.rs
@ -93,7 +93,7 @@ impl CPU {
|
|||||||
}
|
}
|
||||||
(Instruction::AND, OpInput::UseAddress(addr)) => {
|
(Instruction::AND, OpInput::UseAddress(addr)) => {
|
||||||
let val = self.memory.get_byte(addr) as i8;
|
let val = self.memory.get_byte(addr) as i8;
|
||||||
self.and(val as i8);
|
self.and(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
(Instruction::ASL, OpInput::UseImplied) => {
|
(Instruction::ASL, OpInput::UseImplied) => {
|
||||||
@ -369,10 +369,10 @@ impl CPU {
|
|||||||
self.memory.set_byte(addr, self.registers.accumulator as u8);
|
self.memory.set_byte(addr, self.registers.accumulator as u8);
|
||||||
}
|
}
|
||||||
(Instruction::STX, OpInput::UseAddress(addr)) => {
|
(Instruction::STX, OpInput::UseAddress(addr)) => {
|
||||||
self.memory.set_byte(addr, self.registers.index_x as u8);
|
self.memory.set_byte(addr, self.registers.index_x);
|
||||||
}
|
}
|
||||||
(Instruction::STY, OpInput::UseAddress(addr)) => {
|
(Instruction::STY, OpInput::UseAddress(addr)) => {
|
||||||
self.memory.set_byte(addr, self.registers.index_y as u8);
|
self.memory.set_byte(addr, self.registers.index_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
(Instruction::TAX, OpInput::UseImplied) => {
|
(Instruction::TAX, OpInput::UseImplied) => {
|
||||||
@ -396,7 +396,7 @@ impl CPU {
|
|||||||
// NOT set the zero and negative flags. (Because the target
|
// NOT set the zero and negative flags. (Because the target
|
||||||
// is the stack pointer)
|
// is the stack pointer)
|
||||||
let val = self.registers.index_x;
|
let val = self.registers.index_x;
|
||||||
self.registers.stack_pointer = StackPointer(val as u8);
|
self.registers.stack_pointer = StackPointer(val);
|
||||||
}
|
}
|
||||||
(Instruction::TYA, OpInput::UseImplied) => {
|
(Instruction::TYA, OpInput::UseImplied) => {
|
||||||
let val = self.registers.index_y;
|
let val = self.registers.index_y;
|
||||||
@ -564,7 +564,7 @@ impl CPU {
|
|||||||
0x00
|
0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
let bcd2: i8 = if (a_after.wrapping_add(bcd1) as u8 & 0xf0) as u8 > 0x90 {
|
let bcd2: i8 = if (a_after.wrapping_add(bcd1) as u8 & 0xf0) > 0x90 {
|
||||||
0x60
|
0x60
|
||||||
} else {
|
} else {
|
||||||
0x00
|
0x00
|
||||||
@ -642,7 +642,7 @@ impl CPU {
|
|||||||
0x00
|
0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
let bcd2: i8 = if (a_after.wrapping_sub(bcd1) as u8 & 0xf0) as u8 > 0x90 {
|
let bcd2: i8 = if (a_after.wrapping_sub(bcd1) as u8 & 0xf0) > 0x90 {
|
||||||
0x60
|
0x60
|
||||||
} else {
|
} else {
|
||||||
0x00
|
0x00
|
||||||
@ -761,13 +761,13 @@ impl CPU {
|
|||||||
// ...
|
// ...
|
||||||
// The N flag contains most significant bit of the subtraction result.
|
// The N flag contains most significant bit of the subtraction result.
|
||||||
fn compare(&mut self, r: i8, val: u8) {
|
fn compare(&mut self, r: i8, val: u8) {
|
||||||
if r as u8 >= val as u8 {
|
if r as u8 >= val {
|
||||||
self.registers.status.insert(Status::PS_CARRY);
|
self.registers.status.insert(Status::PS_CARRY);
|
||||||
} else {
|
} else {
|
||||||
self.registers.status.remove(Status::PS_CARRY);
|
self.registers.status.remove(Status::PS_CARRY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if r as i8 == val as i8 {
|
if r == val as i8 {
|
||||||
self.registers.status.insert(Status::PS_ZERO);
|
self.registers.status.insert(Status::PS_ZERO);
|
||||||
} else {
|
} else {
|
||||||
self.registers.status.remove(Status::PS_ZERO);
|
self.registers.status.remove(Status::PS_ZERO);
|
||||||
|
@ -166,8 +166,8 @@ impl AddressingMode {
|
|||||||
pub fn process(self, cpu: &CPU, arr: &[u8]) -> OpInput {
|
pub fn process(self, cpu: &CPU, arr: &[u8]) -> OpInput {
|
||||||
debug_assert!(arr.len() == self.extra_bytes() as usize);
|
debug_assert!(arr.len() == self.extra_bytes() as usize);
|
||||||
|
|
||||||
let x = cpu.registers.index_x as u8;
|
let x = cpu.registers.index_x;
|
||||||
let y = cpu.registers.index_y as u8;
|
let y = cpu.registers.index_y;
|
||||||
|
|
||||||
let memory = &cpu.memory;
|
let memory = &cpu.memory;
|
||||||
|
|
||||||
|
@ -70,21 +70,6 @@ bitflags! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Status {
|
impl Status {
|
||||||
pub fn default() -> Status {
|
|
||||||
// TODO akeeton: Revisit these defaults.
|
|
||||||
|
|
||||||
Status::new(StatusArgs {
|
|
||||||
negative: false,
|
|
||||||
overflow: false,
|
|
||||||
unused: true,
|
|
||||||
brk: false,
|
|
||||||
decimal_mode: false,
|
|
||||||
disable_interrupts: true,
|
|
||||||
zero: false,
|
|
||||||
carry: false,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn new(
|
pub fn new(
|
||||||
StatusArgs {
|
StatusArgs {
|
||||||
negative,
|
negative,
|
||||||
@ -140,6 +125,22 @@ impl Status {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for Status {
|
||||||
|
fn default() -> Self {
|
||||||
|
// TODO akeeton: Revisit these defaults.
|
||||||
|
Status::new(StatusArgs {
|
||||||
|
negative: false,
|
||||||
|
overflow: false,
|
||||||
|
unused: true,
|
||||||
|
brk: false,
|
||||||
|
decimal_mode: false,
|
||||||
|
disable_interrupts: true,
|
||||||
|
zero: false,
|
||||||
|
carry: false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
|
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
|
||||||
pub struct StackPointer(pub u8);
|
pub struct StackPointer(pub u8);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user