Files
RockOS/kernel/drivers/iso/iso.c
2026-06-24 13:30:23 -05:00

40 lines
1.0 KiB
C

#include "iso.h"
#include "drivers/ide/ide.h"
#include "lib/print.h"
#include "lib/memory.h"
uint8_t sector_buf[2048];
void read_iso(ide_device_t* dev) {
kprintf("Reading ISO Filesystem from CDROM Disk\n");
ide_read_blks(dev, 16, 1, sector_buf);
if (sector_buf[0] != 1) {
kprintf("Couldn't find PVD\n");
return;
}
iso_pvd_t pvd = *(iso_pvd_t*)sector_buf;
char pvd_identifier[6];
memcpy(pvd.header.identifier, pvd_identifier, 5);
pvd_identifier[5] = 0;
if (strcmp(pvd_identifier, "CD001") > 0) {
kprintf("Invalid PVD identifier\n");
return;
}
char system_identifier[33];
memcpy(&pvd.sys_ident[0], system_identifier, 32);
system_identifier[32] = 0;
if (strlen(system_identifier) > 0) {
kprintf("System Identifier: %s\n", system_identifier);
}
char volume_identifier[33];
memcpy(&pvd.volume_ident[0], volume_identifier, 32);
volume_identifier[32] = 0;
kprintf("Volume Identifier: %s\n", volume_identifier);
}