Merge branch 'mre:master' into variety

This commit is contained in:
omarandlorraine 2023-10-30 20:01:55 +00:00 committed by GitHub
commit 4c58753283
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 106 deletions

93
Cargo.lock generated
View File

@ -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",
]

View File

@ -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"]

View File

@ -440,7 +440,7 @@ impl<M: Bus, V: Variant> CPU<M, V> {
}
(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);

View File

@ -31,8 +31,6 @@
#[macro_use]
extern crate log;
extern crate num;
#[macro_use]
extern crate bitflags;