mirror of
https://github.com/mre/mos6502.git
synced 2025-02-26 18:29:14 +00:00
Some cleanup. Enable experimental 'if let' Rust language feature
This commit is contained in:
parent
7adc2bbcb4
commit
dae32caada
@ -254,6 +254,8 @@ impl AddressingMode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub type DecodedInstr = (Instruction, AMOut);
|
||||||
|
|
||||||
pub static g_opcodes: [Option<(Instruction, AddressingMode)>, ..256] = [
|
pub static g_opcodes: [Option<(Instruction, AddressingMode)>, ..256] = [
|
||||||
/*0x00*/ Some((BRK, Implied)),
|
/*0x00*/ Some((BRK, Implied)),
|
||||||
/*0x01*/ Some((ORA, IndexedIndirectX)),
|
/*0x01*/ Some((ORA, IndexedIndirectX)),
|
||||||
|
@ -25,6 +25,13 @@
|
|||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// JAM: 'if let' syntax is great for situations where want to match only a
|
||||||
|
// single pattern and ignore all others.
|
||||||
|
//
|
||||||
|
// if let Some(x) = foo() { ... }
|
||||||
|
//
|
||||||
|
#![feature(if_let)]
|
||||||
|
|
||||||
pub mod address;
|
pub mod address;
|
||||||
pub mod instruction;
|
pub mod instruction;
|
||||||
pub mod machine;
|
pub mod machine;
|
||||||
|
@ -29,6 +29,7 @@ use std::fmt;
|
|||||||
|
|
||||||
use address::{AddressDiff};
|
use address::{AddressDiff};
|
||||||
use instruction;
|
use instruction;
|
||||||
|
use instruction::{DecodedInstr};
|
||||||
use memory::Memory;
|
use memory::Memory;
|
||||||
use registers::{ Registers, Status, StatusArgs };
|
use registers::{ Registers, Status, StatusArgs };
|
||||||
use registers::{ ps_negative, ps_overflow, ps_zero, ps_carry };
|
use registers::{ ps_negative, ps_overflow, ps_zero, ps_carry };
|
||||||
@ -38,16 +39,6 @@ pub struct Machine {
|
|||||||
pub memory: Memory
|
pub memory: Memory
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type DecodedInstr = (instruction::Instruction, instruction::AMOut);
|
|
||||||
|
|
||||||
/*
|
|
||||||
impl Iterator<()> for Machine {
|
|
||||||
fn next(&mut self) -> Option<DecodedInstr> {
|
|
||||||
self.fetch_next_and_decode()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
impl Machine {
|
impl Machine {
|
||||||
pub fn new() -> Machine {
|
pub fn new() -> Machine {
|
||||||
Machine{
|
Machine{
|
||||||
@ -136,15 +127,13 @@ impl Machine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn run(&mut self) {
|
pub fn run(&mut self) {
|
||||||
while match self.fetch_next_and_decode() {
|
loop {
|
||||||
Some(decoded_instr) => {
|
if let Some(decoded_instr) = self.fetch_next_and_decode() {
|
||||||
self.execute_instruction(decoded_instr);
|
self.execute_instruction(decoded_instr);
|
||||||
true
|
} else {
|
||||||
},
|
break
|
||||||
None => {
|
|
||||||
false
|
|
||||||
}
|
}
|
||||||
} {}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_register_with_flags(register: &mut i8,
|
fn load_register_with_flags(register: &mut i8,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user