diff --git a/tpfs/vol.c b/tpfs/vol.c index 9bd36c2a19b7fd3a28cc5a49d02934be9b4db2c2..239fe5f4d557f767c7da321147f741bf211277cc 100644 --- a/tpfs/vol.c +++ b/tpfs/vol.c @@ -29,4 +29,23 @@ void load_mbr() mbr.magic = MBR_MAGIC; mbr.nb_vols = 0; +} + +void save_mbr() +{ + int i; + unsigned char buffer[sizeof(mbr_t)]; + + buffer[0] = mbr.magic & 255; + buffer[1] = (mbr.magic >> 8) & 255; + buffer[2] = mbr.nb_vols; + for (i = 0; i < mbr.nb_vols; i++) + { + buffer[3 + (i * 4)] = mbr.vols[i].sector; + buffer[4 + (i * 4)] = mbr.vols[i].cylinder; + buffer[5 + (i * 4)] = mbr.vols[i].nb_sectors; + buffer[6 + (i * 4)] = mbr.vols[i].type; + } + + write_sector(0, 0, buffer); } \ No newline at end of file diff --git a/tpfs/vol.h b/tpfs/vol.h index af09f09b6bf6b61d94d52e70b2303e152214d99c..9f01df6d3c05b8dd7959465dbae17539d995902f 100644 --- a/tpfs/vol.h +++ b/tpfs/vol.h @@ -30,4 +30,6 @@ typedef struct mbr_s void load_mbr(void); +void save_mbr(void); + #endif // VOL_H