From edf593cbf87db223ff0facc87df9b58915be4376 Mon Sep 17 00:00:00 2001 From: amaury Date: Thu, 16 Mar 2023 17:16:24 +0100 Subject: [PATCH] the driver and disk are working --- src/main.rs | 14 ++++++++------ src/simulator/disk.rs | 31 +++++++++++++++++++------------ test/disk | 1 - test/disk.txt | 0 4 files changed, 27 insertions(+), 19 deletions(-) delete mode 100644 test/disk create mode 100644 test/disk.txt diff --git a/src/main.rs b/src/main.rs index a14cf47..efeab9e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,18 +32,20 @@ fn main() { let mut drv_disk = DrvDisk::init_drv_disk(disk); let mut data = Vec::new(); - data.push(1); data.push(1); data.push(1); + data.push(0 as u8); data.push(0 as u8); data.push(0 as u8); data.push(0 as u8); + + let mut data1 = Vec::new(); + data1.push(1 as u8); data1.push(1 as u8); data1.push(1 as u8); data1.push(1 as u8); let mut data2: Vec = Vec::new(); drv_disk.write_sector(0, &mut data); + drv_disk.write_sector(1, &mut data1); - drv_disk.read_sector(0, &mut data2); + drv_disk.read_sector(1, &mut data2); - if data == data2 { - print!("success"); - }else { - print!("fail"); + for value in data2 { + println!("BYTE: {}", value); } System::freeze(system); diff --git a/src/simulator/disk.rs b/src/simulator/disk.rs index 6e0cbf7..8c213c6 100644 --- a/src/simulator/disk.rs +++ b/src/simulator/disk.rs @@ -5,12 +5,11 @@ use std::io::prelude::*; use std::fs::File; use std::io::SeekFrom; -use libc::close; pub const SECTORS_PER_TRACK : i32 = 32; pub const NUM_TRACKS : i32 = 64; pub const NUM_SECTORS : i32 = SECTORS_PER_TRACK * NUM_TRACKS; -pub const SECTOR_SIZE : i32 = 128; +pub const SECTOR_SIZE : i32 = 4; pub struct Disk { pub last_selector : i32, @@ -35,14 +34,12 @@ impl Disk { panic!("sector_number isn't right"); } - let mut f = File::open("test/disk")?; + let mut f = File::open("test/disk.txt")?; f.seek(SeekFrom::Start((sector_number * SECTOR_SIZE) as u64))?; - let mut reader = BufReader::new(f); - - match reader.read(data) { - Ok(_) => println!("Data has been read successfully"), - Err(e) => println!("{:?}", e), - _ => () + let mut buffer = [0; SECTOR_SIZE as usize]; + f.read(&mut buffer)?; + for byte in buffer { + data.push(byte); } Ok(()) @@ -56,14 +53,24 @@ impl Disk { panic!("sector_number isn't right"); } - let mut f = File::create("test/disk")?; + let mut f = File::create("test/disk.txt")?; f.seek(SeekFrom::Start((sector_number * SECTOR_SIZE) as u64))?; - let res = f.write(data); + let mut i = 0; + let mut buff = Vec::new(); + for value in data { + buff.push(*value); + i = i+1; + if i >= SECTOR_SIZE { + break; + } + } + + let res = f.write(&buff); match res { Ok(_) => println!("Data written successfully"), Err(e) => println!("{:?}", e), _ => () - } + } Ok(()) } diff --git a/test/disk b/test/disk deleted file mode 100644 index e7d1ed7..0000000 --- a/test/disk +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/disk.txt b/test/disk.txt new file mode 100644 index 0000000..e69de29