//! Disposable first/last sector reads and out-of-capacity refusal. use super::*; pub fn run(boot: &BootData, allocator: &mut memory::FrameAllocator) -> Result<(), &'static str> { let mut disk = virtio_ro_turkfs::RoDisk::open( boot, allocator, "TURKOS/OS/K1505-GET")?; let last_lba = disk.capacity().checked_sub(1).ok_or("k1505-empty-disk")?; if disk.capacity() != 2048 { return Err("k1505-disk-capacity"); } disk.reject_outside_without_publish()?; let mut first = [0xa5u8; 512]; let mut last = [0xa5u8; 512]; disk.read(0, &mut first)?; disk.read(last_lba, &mut last)?; if first.iter().any(|&byte| byte != 0) || last.iter().any(|&byte| byte != 0) { return Err("k1505-read-data"); } disk.close(allocator)?; write_line("TURKOS/OS/K1505-GEOMETRY: FIRST=0 LAST=2047 OUTSIDE=REJECTED GETS=2 DATA=ZERO OWNERS=0 FRAMES=RETURNED"); Ok(()) }