mirror of
https://github.com/mre/mos6502.git
synced 2024-09-27 19:56:34 +00:00
Merge branch 'mre:master' into variety
This commit is contained in:
commit
4c58753283
93
Cargo.lock
generated
93
Cargo.lock
generated
@ -1,93 +0,0 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
|
||||||
# It is not intended for manual editing.
|
|
||||||
version = 3
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "autocfg"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bitflags"
|
|
||||||
version = "2.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "log"
|
|
||||||
version = "0.4.20"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mos6502"
|
|
||||||
version = "0.5.0"
|
|
||||||
dependencies = [
|
|
||||||
"bitflags",
|
|
||||||
"log",
|
|
||||||
"num",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
|
|
||||||
dependencies = [
|
|
||||||
"num-complex",
|
|
||||||
"num-integer",
|
|
||||||
"num-iter",
|
|
||||||
"num-rational",
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-complex"
|
|
||||||
version = "0.4.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
|
|
||||||
dependencies = [
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-integer"
|
|
||||||
version = "0.1.45"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-iter"
|
|
||||||
version = "0.1.43"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"num-integer",
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-rational"
|
|
||||||
version = "0.4.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"num-integer",
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "num-traits"
|
|
||||||
version = "0.2.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
@ -43,11 +43,6 @@ name = "mos6502"
|
|||||||
bitflags = "2.3.3"
|
bitflags = "2.3.3"
|
||||||
log = "0.4.19"
|
log = "0.4.19"
|
||||||
|
|
||||||
[dependencies.num]
|
|
||||||
version = "0.4.0"
|
|
||||||
# no_std support
|
|
||||||
default-features = false
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
decimal_mode = []
|
decimal_mode = []
|
||||||
default = ["decimal_mode"]
|
default = ["decimal_mode"]
|
||||||
|
21
src/cpu.rs
21
src/cpu.rs
@ -440,7 +440,7 @@ impl<M: Bus, V: Variant> CPU<M, V> {
|
|||||||
}
|
}
|
||||||
(Instruction::PHP, OpInput::UseImplied) => {
|
(Instruction::PHP, OpInput::UseImplied) => {
|
||||||
// Push status
|
// Push status
|
||||||
let val = self.registers.status.bits();
|
let val = self.registers.status.bits() | 0x30;
|
||||||
self.push_on_stack(val);
|
self.push_on_stack(val);
|
||||||
}
|
}
|
||||||
(Instruction::PLA, OpInput::UseImplied) => {
|
(Instruction::PLA, OpInput::UseImplied) => {
|
||||||
@ -1088,7 +1088,6 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
use crate::instruction::Nmos6502;
|
use crate::instruction::Nmos6502;
|
||||||
use crate::memory::Memory as Ram;
|
use crate::memory::Memory as Ram;
|
||||||
use num::range_inclusive;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn dont_panic_for_overflow() {
|
fn dont_panic_for_overflow() {
|
||||||
@ -1247,6 +1246,16 @@ mod tests {
|
|||||||
assert!(cpu.registers.status.contains(Status::PS_CARRY));
|
assert!(cpu.registers.status.contains(Status::PS_CARRY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn php_sets_bits_4_and_5() {
|
||||||
|
let mut cpu = CPU::new(Ram::new());
|
||||||
|
cpu.execute_instruction((Instruction::PHP, OpInput::UseImplied));
|
||||||
|
cpu.execute_instruction((Instruction::PLA, OpInput::UseImplied));
|
||||||
|
cpu.execute_instruction((Instruction::AND, OpInput::UseImmediate(0x30)));
|
||||||
|
|
||||||
|
assert_eq!(cpu.registers.accumulator, 0x30);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn and_test() {
|
fn and_test() {
|
||||||
let mut cpu = CPU::new(Ram::new(), Nmos6502);
|
let mut cpu = CPU::new(Ram::new(), Nmos6502);
|
||||||
@ -1678,8 +1687,8 @@ mod tests {
|
|||||||
fn exclusive_or_test() {
|
fn exclusive_or_test() {
|
||||||
let mut cpu = CPU::new(Ram::new(), Nmos6502);
|
let mut cpu = CPU::new(Ram::new(), Nmos6502);
|
||||||
|
|
||||||
for a_before in range_inclusive(0u8, 255u8) {
|
for a_before in 0u8..=255u8 {
|
||||||
for val in range_inclusive(0u8, 255u8) {
|
for val in 0u8..=255u8 {
|
||||||
cpu.execute_instruction((Instruction::LDA, OpInput::UseImmediate(a_before)));
|
cpu.execute_instruction((Instruction::LDA, OpInput::UseImmediate(a_before)));
|
||||||
|
|
||||||
cpu.exclusive_or(val);
|
cpu.exclusive_or(val);
|
||||||
@ -1706,8 +1715,8 @@ mod tests {
|
|||||||
fn inclusive_or_test() {
|
fn inclusive_or_test() {
|
||||||
let mut cpu = CPU::new(Ram::new(), Nmos6502);
|
let mut cpu = CPU::new(Ram::new(), Nmos6502);
|
||||||
|
|
||||||
for a_before in range_inclusive(0u8, 255u8) {
|
for a_before in 0u8..=255u8 {
|
||||||
for val in range_inclusive(0u8, 255u8) {
|
for val in 0u8..=255u8 {
|
||||||
cpu.execute_instruction((Instruction::LDA, OpInput::UseImmediate(a_before)));
|
cpu.execute_instruction((Instruction::LDA, OpInput::UseImmediate(a_before)));
|
||||||
|
|
||||||
cpu.inclusive_or(val);
|
cpu.inclusive_or(val);
|
||||||
|
@ -31,8 +31,6 @@
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate log;
|
extern crate log;
|
||||||
|
|
||||||
extern crate num;
|
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate bitflags;
|
extern crate bitflags;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user