diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 1037dee..0000000 --- a/Cargo.lock +++ /dev/null @@ -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", -] diff --git a/Cargo.toml b/Cargo.toml index 3f6b3b9..481588c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,11 +43,6 @@ name = "mos6502" bitflags = "2.3.3" log = "0.4.19" -[dependencies.num] -version = "0.4.0" -# no_std support -default-features = false - [features] decimal_mode = [] default = ["decimal_mode"] diff --git a/src/cpu.rs b/src/cpu.rs index ac5d2a6..ec1ef84 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -440,7 +440,7 @@ impl CPU { } (Instruction::PHP, OpInput::UseImplied) => { // Push status - let val = self.registers.status.bits(); + let val = self.registers.status.bits() | 0x30; self.push_on_stack(val); } (Instruction::PLA, OpInput::UseImplied) => { @@ -1088,7 +1088,6 @@ mod tests { use super::*; use crate::instruction::Nmos6502; use crate::memory::Memory as Ram; - use num::range_inclusive; #[test] fn dont_panic_for_overflow() { @@ -1247,6 +1246,16 @@ mod tests { 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] fn and_test() { let mut cpu = CPU::new(Ram::new(), Nmos6502); @@ -1678,8 +1687,8 @@ mod tests { fn exclusive_or_test() { let mut cpu = CPU::new(Ram::new(), Nmos6502); - for a_before in range_inclusive(0u8, 255u8) { - for val in range_inclusive(0u8, 255u8) { + for a_before in 0u8..=255u8 { + for val in 0u8..=255u8 { cpu.execute_instruction((Instruction::LDA, OpInput::UseImmediate(a_before))); cpu.exclusive_or(val); @@ -1706,8 +1715,8 @@ mod tests { fn inclusive_or_test() { let mut cpu = CPU::new(Ram::new(), Nmos6502); - for a_before in range_inclusive(0u8, 255u8) { - for val in range_inclusive(0u8, 255u8) { + for a_before in 0u8..=255u8 { + for val in 0u8..=255u8 { cpu.execute_instruction((Instruction::LDA, OpInput::UseImmediate(a_before))); cpu.inclusive_or(val); diff --git a/src/lib.rs b/src/lib.rs index 2f432ea..302a8c1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,8 +31,6 @@ #[macro_use] extern crate log; -extern crate num; - #[macro_use] extern crate bitflags;