diff --git a/tpfs/vol.c b/tpfs/vol.c
index 8f5f430bcf8531d4b69ad8765b33bc4474dfb5c7..4386aa2d08418196c0c95e3b58c9ee4d707bea4b 100644
--- a/tpfs/vol.c
+++ b/tpfs/vol.c
@@ -11,7 +11,9 @@ void load_mbr()
     int i;
     unsigned char buffer[sizeof(mbr_t)];
 
-    read_sector(buffer, 0, 0);
+    /* read_sector(buffer, 0, 0); */
+    read_sector_n(buffer, 0, 0, sizeof(mbr_t));
+
     mbr.magic = buffer[0] + (buffer[1] << 8);
 
     if (mbr.magic == MBR_MAGIC)
@@ -21,7 +23,7 @@ void load_mbr()
         {
             mbr.vols[i].sector = buffer[3 + (i * 4)];
             mbr.vols[i].cylinder = buffer[4 + (i * 4)];
-            mbr.vols[i].nb_sectors = buffer[5 + (i * 4)];
+            mbr.vols[i].nb_blocs = buffer[5 + (i * 4)];
             mbr.vols[i].type = buffer[6 + (i * 4)];
         }
         return;
@@ -43,48 +45,58 @@ void save_mbr()
     {
         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[5 + (i * 4)] = mbr.vols[i].nb_blocs;
         buffer[6 + (i * 4)] = mbr.vols[i].type;
     }
 
     write_sector(0, 0, buffer);
 }
 
-unsigned int *get_sector_cylinder(unsigned int vol, unsigned int nbloc)
+void get_sector_cylinder(unsigned int vol, unsigned int nbloc, unsigned int *sector_cylinder)
 {
-    int sector_cylinder[2], absolute_nbloc;
+    int absolute_nbloc;
     vol_t volume;
 
     assert(vol < mbr.nb_vols);
     volume = mbr.vols[vol];
-    assert(nbloc < volume.nb_sectors);
+    assert(nbloc < volume.nb_blocs);
 
     absolute_nbloc = (volume.cylinder * HDA_MAXSECTOR + volume.sector + nbloc);
     sector_cylinder[0] = absolute_nbloc % HDA_MAXSECTOR;
     sector_cylinder[1] = absolute_nbloc / HDA_MAXCYLINDER;
-    return sector_cylinder;
 }
 
 void read_bloc(unsigned int vol, unsigned int nbloc, unsigned char *buffer)
 {
-    int sector_cylinder[2] = get_sector_cylinder(vol, nbloc); // [sector, cylinder]
+    unsigned int sector_cylinder[2];
+    get_sector_cylinder(vol, nbloc, sector_cylinder); /* [sector, cylinder] */
     read_sector(buffer, sector_cylinder[1], sector_cylinder[0]);
 }
 
-void write_bloc(unsigned int vol, unsigned int nbloc, const unsigned char *buffer)
+void write_bloc(unsigned int vol, unsigned int nbloc, unsigned char *buffer)
 {
-    int sector_cylinder[2] = get_sector_cylinder(vol, nbloc); // [sector, cylinder]
+    unsigned int sector_cylinder[2];
+    get_sector_cylinder(vol, nbloc, sector_cylinder); /* [sector, cylinder] */
     write_sector(sector_cylinder[1], sector_cylinder[0], buffer);
 }
 
 void format_vol(unsigned int vol)
 {
-    unsigned int nbloc;
+    unsigned int nbloc, sector_cylinder[2];
     vol_t volume = mbr.vols[vol];
 
-    for (nbloc = 0; nbloc < volume.nb_sectors; nbloc++)
+    for (nbloc = 0; nbloc < volume.nb_blocs; nbloc++)
     {
-        int sector_cylinder[2] = get_sector_cylinder(vol, nbloc);
+        get_sector_cylinder(vol, nbloc, sector_cylinder); /* [sector, cylinder] */
         format_sector(sector_cylinder[1], sector_cylinder[1], FMT_SIZE, FMT_DATA);
     }
+}
+
+void read_sector_n(unsigned char *buf, int cylinder, int sector, int size)
+{
+    int i;
+    unsigned char buffer[HDA_SECTORSIZE];
+    read_sector(buffer, cylinder, sector);
+    for (i = 0; i < size; i++)
+        buf[i] = buffer[i];
 }
\ No newline at end of file
diff --git a/tpfs/vol.h b/tpfs/vol.h
index e16cbe854be0ce12964a97254c66032e3b215e1e..27cccca7694656949fa1b74346aa06180e0bc2f0 100644
--- a/tpfs/vol.h
+++ b/tpfs/vol.h
@@ -2,38 +2,40 @@
 #define VOL_H
 
 #define VOLS_MAX 8
-#define MBR_MAGIC 0xCAFE // Savoir si le mbr a déjà été initialisé ou non
+#define MBR_MAGIC 0xCAFE /* Savoir si le mbr a déjà été initialisé ou non */
 #define FMT_DATA 0xCAFEBABE
 #define FMT_SIZE 0x1
 
-static mbr_t mbr;
-
 typedef enum
 {
     BASE,
     ANNEXE,
     OTHER
-} vtypes_t; // Volume type
+} vtypes_t; /* Volume type */
 
 typedef struct vol_s
 {
     unsigned int sector;
     unsigned int cylinder;
-    unsigned int nb_sectors;
+    unsigned int nb_blocs;
     vtypes_t type;
 } vol_t;
 
 typedef struct mbr_s
 {
     unsigned int magic;
-    unsigned int nb_vols; // nombre de volumes actuels
+    unsigned int nb_vols; /* nombre de volumes actuels */
     vol_t vols[VOLS_MAX];
 } mbr_t;
 
+mbr_t mbr;
+
 void load_mbr(void);
 void save_mbr(void);
-unsigned int *get_sector_cylinder(unsigned int vol, unsigned int nbloc);
+void get_sector_cylinder(unsigned int vol, unsigned int nbloc, unsigned int *sector_cylinder);
 void read_bloc(unsigned int vol, unsigned int nbloc, unsigned char *buffer);
-void write_bloc(unsigned int vol, unsigned int nbloc, const unsigned char *buffer);
+void write_bloc(unsigned int vol, unsigned int nbloc, unsigned char *buffer);
+
+void read_sector_n(unsigned char *buf, int cylinder, int sector, int size);
 
-#endif // VOL_H
+#endif