the driver and disk are working
This commit is contained in:
parent
4c81f0591a
commit
edf593cbf8
14
src/main.rs
14
src/main.rs
@ -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);
|
||||||
|
@ -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(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
0
test/disk.txt
Normal file
0
test/disk.txt
Normal file
Loading…
x
Reference in New Issue
Block a user