rustfmt cleanup

This commit is contained in:
2025-07-06 13:38:55 -04:00
parent cf14804df2
commit b9242b1943
39 changed files with 1695 additions and 551 deletions
+3 -3
View File
@@ -1,9 +1,9 @@
// This is the GUI for the BenEater PC
use beneater::parts::backplane::Backplane;
use beneater::parts::ben_eater_pc::BenEaterPC;
use beneater::parts::cpu_display::CpuDisplay;
use macroquad::prelude::*;
use macroquad::telemetry::frame;
use beneater::parts::ben_eater_pc::BenEaterPC;
use beneater::parts::backplane::Backplane;
#[macroquad::main("Ben Eaters PC")]
async fn main() {
println!("Taxation is Theft");
@@ -21,7 +21,7 @@ async fn main() {
draw_text("Ben Eater", 20.0, 20.0, 30.0, BLACK);
dm.render(20.0, 40.0);
// CpuDisplay::render(&computer.cpu, 20.0, 120.0);
// CpuDisplay::render(&computer.cpu, 20.0, 120.0);
frame_number += 1;
+1 -1
View File
@@ -1,5 +1,5 @@
use std::fs;
use core::constants::constants_system::SIZE_32KB;
use std::fs;
fn main() {
// make the rom data in memory.
+8 -5
View File
@@ -1,20 +1,24 @@
use beneater::parts::backplane::Backplane;
use core::constants::constants_isa_op::*;
use core::constants::constants_system::*;
use std::fs;
use std::ops::Index;
use beneater::parts::backplane::Backplane;
use core::constants::constants_system::*;
use core::constants::constants_isa_op::*;
fn main() {
println!("Taxation is Theft");
let mut backplane = Backplane::new();
backplane.load_rom();
println!("Backplane is live.");
let mut new_program = [0x00u8; SIZE_32KB];
new_program[(OFFSET_RESET_VECTOR - SIZE_32KB as u16) as usize] = 0x00;
new_program[(OFFSET_RESET_VECTOR + 1 - SIZE_32KB as u16) as usize] = 0x60;
println!("Set offset in rom...");
println!("VALUE AT OFFSET_RESET_VECTOR = 0x{:02x} ", new_program[(OFFSET_RESET_VECTOR - SIZE_32KB as u16) as usize]);
println!(
"VALUE AT OFFSET_RESET_VECTOR = 0x{:02x} ",
new_program[(OFFSET_RESET_VECTOR - SIZE_32KB as u16) as usize]
);
// println!("{:?}", new_program);
backplane.rom.program(&new_program);
@@ -22,5 +26,4 @@ fn main() {
backplane.memory[0x6000] = ISA_OP_LDA_I;
backplane.memory[0x6001] = 0xab;
backplane.tick();
}
+2 -2
View File
@@ -1,9 +1,9 @@
pub struct AddressBus {
pub address: u16
pub address: u16,
}
impl AddressBus {
pub fn new() -> Self {
AddressBus { address: 0x0000 }
}
}
}
+89 -32
View File
@@ -1,15 +1,27 @@
use core::mos6502cpu::Mos6502Cpu;
use crate::parts::mos6522_peripheral::Mos6522Peripheral;
use crate::parts::via6522::VIA6522;
use core::constants::constants_system::*;
use core::mos6502cpu::Mos6502Cpu;
use core::periph::at28c256::At28C256;
use core::periph::rom_chip::RomChip;
/// Backplane
///
/// A Backplane hold and coordinates the cpu with the
/// rest of the peripherals.
///
/// This system has
/// -> VIA6522 for peripherals
/// -> 322KB RAM
/// -> 32KB ROM
pub struct Backplane {
// pub for dev
pub cpu: Mos6502Cpu,
pub via: VIA6522,
pub memory: Box<[u8; SIZE_64KB]>,
pub rom: At28C256
pub memory: Box<[u8; SIZE_32KB]>,
pub rom: At28C256,
data_bus: u8,
address_bus: u16
}
impl Backplane {
@@ -17,8 +29,10 @@ impl Backplane {
Backplane {
cpu: Mos6502Cpu::default(),
via: VIA6522::default(),
memory: Box::new([0x00; SIZE_64KB]),
rom: At28C256::default()
memory: Box::new([0x00; SIZE_32KB]),
rom: At28C256::default(),
data_bus: 0x00,
address_bus: 0x0000
}
}
@@ -26,48 +40,91 @@ impl Backplane {
self.rom.program(to_load);
}
pub fn tick(&mut self) {
// is the CPU in read or write state
let address = self.cpu.address_bus();
let data = self.cpu.data_bus();
self.address_bus = self.cpu.address_bus();
self.data_bus = self.cpu.data_bus();
let rw = self.cpu.read_signal;
println!("- TICK START:");
println!("| CPU: Address: 0b{address:016b} Data: 0b{data:08b} CPU RW: {rw}");
println!("| CPU: Address: 0b{:016b} Data: 0b{:08b} CPU RW: {rw}", self.address_bus, self.data_bus);
// via state
println!("| VIA 0b{:08b}/0b{:08b}/0b{:08b}/0b{:08b}/",
println!(
"| VIA 0b{:08b}/0b{:08b}/0b{:08b}/0b{:08b}/",
self.via.read(VIA6522_ORA),
self.via.read(VIA6522_ORA),
self.via.read(VIA6522_DDRB),
self.via.read(VIA6522_DDRA),
);
println!("| LCD");
match address {
/// VIA
0x6000..0x6010 => {
if self.cpu.read_signal {
self.cpu.set_data_bus(self.via.read((address - 0x6000) as u8));
} else {
self.via.write((address - 0x6000) as u8, self.cpu.data_bus());
// if we are reading
if rw {
println!("CPU HAS SET READ FLAG FOR ADDRESS {address:04x} with data 0x{data:02x}");
match self.address_bus {
0x0000..=0x3fff => {
// read from ram
},
0x4000..=0x7fff => {
// read from ROM
}
self.via.tick();
}
/// RAM
0x0000..=0x3fff => {
if self.cpu.read_signal {
self.cpu.set_data_bus(self.memory[address as usize]);
} else {
self.memory[address as usize] = data;
_ => {
println!("READ OUTSIDE DATA RANGE");
}
}
/// ROM
0x4000..=0x7fff => {
self.rom.read(&(address - 0x4000));
}
/// The ether. Scarrrrrrrryyyy......
_ => {
println!("Lost READ:?{} to {:04x}", self.cpu.read_signal, address);
} else {
println!("CPU HAS SET WRITE FLAG FOR ADDRESS 0x{address:04x} with data 0x{data:02x}");
match self.address_bus {
0x6000..=0x600f => {
self.via.write((self.address_bus - 0x6000) as u8, self.data_bus);
},
0x0000..=0x3fff => {
self.memory[self.address_bus] = self.data_bus;
}
_ => {
println!("ATTEMPT TO WRITE OUTSIDE OF MEMORY");
}
}
}
//
//
// match address {
// /// VIA
// 0x6000..=0x600f => {
// if self.cpu.read_signal {
// self.cpu
// .set_data_bus(self.via.read((address - 0x6000) as u8));
// } else {
// self.via
// .write((address - 0x6000) as u8, self.cpu.data_bus());
// }
// self.via.tick();
// }
// /// RAM
// 0x0000..=0x3fff => {
// if self.cpu.read_signal {
// self.cpu.set_data_bus(self.memory[address as usize]);
// } else {
// self.memory[address as usize] = data;
// }
// }
// /// ROM
// 0x4000..=0x7fff => {
// println!("ROM READ AT {address:04x} / ROM OFFSET {:04x}", address - 0x4000);
// self.rom.read(&(address - 0x4000));
// }
// /// The ether. Scarrrrrrrryyyy......
// _ => {
// println!("XXXXLost READ:?{} to {:04x}", self.cpu.read_signal, address);
// }
// }
println!("- TICK DONE");
}
}
}
+5 -5
View File
@@ -1,10 +1,10 @@
use crate::parts::clock::Clock;
use core::constants::constants_system::*;
use core::mos6502cpu::Mos6502Cpu;
use std::fs;
use std::fs::File;
use std::io::{BufReader, Read};
use std::path::Path;
use crate::parts::clock::Clock;
use core::mos6502cpu::Mos6502Cpu;
use core::constants::constants_system::*;
pub struct BenEaterPC {
clock: Clock,
@@ -19,11 +19,11 @@ impl BenEaterPC {
println!("New BENEATERPC");
BenEaterPC {
clock: Clock::new(),
cpu: Mos6502Cpu::default()
cpu: Mos6502Cpu::default(),
}
}
pub fn tick_system(&mut self) {
pub fn tick_system(&mut self) {
self.cpu.tick();
if self.cpu.microcode_step == 0 {
// tick the clock.
+2 -5
View File
@@ -1,13 +1,10 @@
pub struct Clock {
ticks: u32
ticks: u32,
}
impl Clock {
pub fn new() -> Self {
Clock {
ticks: 0
}
Clock { ticks: 0 }
}
pub fn tick(&mut self) {
+37 -7
View File
@@ -1,7 +1,7 @@
use core::mos6502cpu::Mos6502Cpu;
use macroquad::color::{BLACK, Color};
use macroquad::prelude::*;
use macroquad::text::draw_text;
use core::mos6502cpu::Mos6502Cpu;
pub struct CpuDisplay {}
impl CpuDisplay {
@@ -12,11 +12,41 @@ impl CpuDisplay {
// ...build the interface
Self::draw_square(x_offset, y_offset, x_offset + 300.0, y_offset + 85.0, BLACK);
draw_text(format!("PC: 0x{:04x} / {}", pc, pc).as_str(), x_offset + 5.0, y_offset + 18.0, 15.0, BLACK);
draw_text(format!("A: 0x{:02x} X: 0x{:02x} Y: 0x{:02x}", a, x, y).as_str(), x_offset + 5.0, y_offset + 35.0, 15.0, BLACK);
draw_text(format!("Address: {:016b} | {:04x}", address_bus, address_bus).as_str(), x_offset + 5.0, y_offset + 55.0, 15.0, BLACK);
draw_text(format!("Data: {:08b} | {:02x}", data_bus, data_bus).as_str(), x_offset + 5.0, y_offset + 75.0, 15.0, BLACK);
draw_text(format!("MS: {:02x}", microsteps_remaining).as_str(), x_offset + 5.0, y_offset + 95.0, 15.0, BLACK);
draw_text(
format!("PC: 0x{:04x} / {}", pc, pc).as_str(),
x_offset + 5.0,
y_offset + 18.0,
15.0,
BLACK,
);
draw_text(
format!("A: 0x{:02x} X: 0x{:02x} Y: 0x{:02x}", a, x, y).as_str(),
x_offset + 5.0,
y_offset + 35.0,
15.0,
BLACK,
);
draw_text(
format!("Address: {:016b} | {:04x}", address_bus, address_bus).as_str(),
x_offset + 5.0,
y_offset + 55.0,
15.0,
BLACK,
);
draw_text(
format!("Data: {:08b} | {:02x}", data_bus, data_bus).as_str(),
x_offset + 5.0,
y_offset + 75.0,
15.0,
BLACK,
);
draw_text(
format!("MS: {:02x}", microsteps_remaining).as_str(),
x_offset + 5.0,
y_offset + 95.0,
15.0,
BLACK,
);
}
fn draw_square(x1: f32, y1: f32, x2: f32, y2: f32, color: Color) {
@@ -26,4 +56,4 @@ impl CpuDisplay {
draw_line(x1, y2, x2, y2, 1.0, color);
draw_line(x2, y1, x2, y2, 1.0, color);
}
}
}
+2 -2
View File
@@ -1,9 +1,9 @@
pub struct DataBus {
pub data: u8
pub data: u8,
}
impl DataBus {
pub fn new() -> Self {
DataBus { data: 0x00 }
}
}
}
+2 -2
View File
@@ -1,5 +1,5 @@
use std::time::{Duration, Instant};
use crate::parts::mos6522_peripheral::Mos6522Peripheral;
use std::time::{Duration, Instant};
#[derive(Debug)]
pub struct HD44780 {
@@ -46,7 +46,7 @@ impl Mos6522Peripheral for HD44780 {
self.write_control_lines(
control & 1 << 2 == 0,
control & 1 << 1 == 0,
control & 1 == 0
control & 1 == 0,
);
}
+8 -8
View File
@@ -1,10 +1,10 @@
pub mod clock;
pub mod ben_eater_pc;
pub mod via6522;
pub mod display_matrix;
pub mod address_bus;
pub mod data_bus;
pub mod cpu_display;
pub mod ram_display;
pub mod mos6522_peripheral;
pub mod backplane;
pub mod ben_eater_pc;
pub mod clock;
pub mod cpu_display;
pub mod data_bus;
pub mod display_matrix;
pub mod mos6522_peripheral;
pub mod ram_display;
pub mod via6522;
+8 -3
View File
@@ -4,10 +4,15 @@ pub struct RamDisplay {}
impl RamDisplay {
pub fn render(ram: &Box<[u8]>, x_offset: f32, y_offset: f32) {
Self::draw_square(x_offset, y_offset, x_offset + 200.0, y_offset + 300.0, BLACK);
Self::draw_square(
x_offset,
y_offset,
x_offset + 200.0,
y_offset + 300.0,
BLACK,
);
draw_text("RAM", x_offset + 5.0, y_offset + 5.0, 15.0, BLACK);
}
fn draw_square(x1: f32, y1: f32, x2: f32, y2: f32, color: Color) {
@@ -17,4 +22,4 @@ impl RamDisplay {
draw_line(x1, y2, x2, y2, 1.0, color);
draw_line(x2, y1, x2, y2, 1.0, color);
}
}
}
-1
View File
@@ -57,7 +57,6 @@ impl VIA6522 {
}
}
pub fn read(&self, addr: u8) -> u8 {
match (addr & 0x0F) {
VIA6522_ORB => self.orb,