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 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();
|
||||
|
||||
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);
|
||||
|
@ -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,9 +53,19 @@ 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),
|
||||
|
0
test/disk.txt
Normal file
0
test/disk.txt
Normal file
Loading…
x
Reference in New Issue
Block a user