the driver and disk are working

This commit is contained in:
amaury 2023-03-16 17:16:24 +01:00
parent 4c81f0591a
commit edf593cbf8
4 changed files with 27 additions and 19 deletions

View File

@ -32,18 +32,20 @@ fn main() {
let mut drv_disk = DrvDisk::init_drv_disk(disk); let mut drv_disk = DrvDisk::init_drv_disk(disk);
let mut data = Vec::new(); 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<u8> = Vec::new(); let mut data2: Vec<u8> = Vec::new();
drv_disk.write_sector(0, &mut data); 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 { for value in data2 {
print!("success"); println!("BYTE: {}", value);
}else {
print!("fail");
} }
System::freeze(system); System::freeze(system);

View File

@ -5,12 +5,11 @@ use std::io::prelude::*;
use std::fs::File; use std::fs::File;
use std::io::SeekFrom; use std::io::SeekFrom;
use libc::close;
pub const SECTORS_PER_TRACK : i32 = 32; pub const SECTORS_PER_TRACK : i32 = 32;
pub const NUM_TRACKS : i32 = 64; pub const NUM_TRACKS : i32 = 64;
pub const NUM_SECTORS : i32 = SECTORS_PER_TRACK * NUM_TRACKS; 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 struct Disk {
pub last_selector : i32, pub last_selector : i32,
@ -35,14 +34,12 @@ impl Disk {
panic!("sector_number isn't right"); 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))?; f.seek(SeekFrom::Start((sector_number * SECTOR_SIZE) as u64))?;
let mut reader = BufReader::new(f); let mut buffer = [0; SECTOR_SIZE as usize];
f.read(&mut buffer)?;
match reader.read(data) { for byte in buffer {
Ok(_) => println!("Data has been read successfully"), data.push(byte);
Err(e) => println!("{:?}", e),
_ => ()
} }
Ok(()) Ok(())
@ -56,14 +53,24 @@ impl Disk {
panic!("sector_number isn't right"); 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))?; 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 { match res {
Ok(_) => println!("Data written successfully"), Ok(_) => println!("Data written successfully"),
Err(e) => println!("{:?}", e), Err(e) => println!("{:?}", e),
_ => () _ => ()
} }
Ok(()) Ok(())
} }

View File

@ -1 +0,0 @@


0
test/disk.txt Normal file
View File