diff --git a/SD/picofs.c b/SD/picofs.c
index 9d7fd4c95ecd5cd173916f33a9f772cda964c9b9..b774cc814093c9e37980ca08e6a403b42f49efbb 100755
--- a/SD/picofs.c
+++ b/SD/picofs.c
@@ -51,20 +51,6 @@ void writeBlock(SD_info *sd, unsigned int numBlock, int offset, char *source, in
 
 }
 
-// void eraseSD(SD_info *sd){ //met des 0 partout dans la carte SD
-//     char zeros[BLOCK_SIZE];
-//     for(int i = 0; i< BLOCK_SIZE-1;i++){
-//         zeros[i] = '0';
-//     }
-//         zeros[BLOCK_SIZE-1] = '\0';
-//
-//     for (int blockNum = 0; blockNum < 5000; blockNum ++){
-//         //printf("erase\n");
-//         writeBlockSD(sd,blockNum,zeros);
-//     }
-//     return;
-// }
-
 void LS(SD_info *sd) {
     char buffer[MAX_FILENAME_LENGTH];
     int fileCount = 0;
@@ -154,11 +140,7 @@ void RM(SD_info *sd, char *filename) {
     }
 
     for (int blockNum = offset+1; blockNum < offset + 16; blockNum++) {
-        int startOffset = 0;
 
-        if (blockNum == offset) {
-            startOffset = MAX_FILENAME_LENGTH;
-        }
 
         //for (int chunkStart = startOffset; chunkStart < BLOCK_SIZE/2; chunkStart += CHUNK_SIZE) {
         //    int chunkSize = min(CHUNK_SIZE, BLOCK_SIZE/2 - chunkStart);
@@ -291,8 +273,17 @@ void TYPE(SD_info *sd, char *filename, char *data) {
             writeBlock(sd,blockNum, 0, filename, sizeFilename);
             placeFound = blockNum;
 
-            // Lire les données depuis l'entrée standard et écrire dans le fichier
+            //chercher où mettre les données du
             int dataBlockNum = findAvailableBlock(sd); // Premier bloc de données à partir du bloc 1040
+
+            char dataBlockNumBuffer[CHUNK_SIZE];
+            readBlock(sd, dataBlockNum, 0, dataBlockNumBuffer, CHUNK_SIZE);
+            while (dataBlockNumBuffer[0] != 0)
+            {
+                dataBlockNum++;
+                readBlock(sd, dataBlockNum, 0, dataBlockNumBuffer, CHUNK_SIZE);
+            }
+            
             int blockSizeUsed = 0; // Compteur d'octets dans le bloc actuel
 
             char chunkBuffer[CHUNK_SIZE];
@@ -316,7 +307,7 @@ void TYPE(SD_info *sd, char *filename, char *data) {
             } else {
                 offset = 0;
             }
-
+            
             writeBlock(sd,placeFound + index_description_block, offset + index_in_descrBlock*2, blockNumberBuffer, 2);
             index_in_descrBlock++;
 
@@ -356,7 +347,7 @@ void CAT(SD_info *sd, char *filename) {
     char filenameBuffer[MAX_FILENAME_LENGTH];
     char byteBuffer[CHUNK_SIZE];
     char dataBuffer[CHUNK_SIZE];
-    int offset;
+
     
     // Parcours des blocs réservés pour la description des fichiers (superbloc)
     for (int blockNum = 0; blockNum < MAX_BLOCKS_IN_SUPERBLOCK; blockNum += 16) {
@@ -368,29 +359,26 @@ void CAT(SD_info *sd, char *filename) {
             
             // Parcours les blocs de description
             for (int descrBlockNum=1; descrBlockNum<MAX_BLOCKS_PER_FILE_DESCRIPTION; descrBlockNum++) {
-                if (descrBlockNum==0) {
-                    offset=MAX_FILENAME_LENGTH;
-                } else {
-                    offset=0;
-                }
-                
-                // Lecture des octets deux par deux
-                for (int i=0; i<BLOCK_SIZE;i+=2) {
-                    readBlock(sd,descrBlockNum+blockNum, offset+i, byteBuffer, 2);
-                    printf("\nByte buffer: %s\n", byteBuffer);
-                    // Lire les numéros de blocs associés à ce fichier depuis les blocs de description
+            
+               // Lecture des octets deux par deux
+                //for (int i=0; i<BLOCK_SIZE;i+=2) {
+                    readBlock(sd,descrBlockNum+blockNum, 0, byteBuffer, 2);
+                    if (byteBuffer[0] == 0 && byteBuffer[1]== 0) return;
+                    
+                    // printf("\nByte buffer: %s\n", byteBuffer);
+                    //  Lire les numéros de blocs associés à ce fichier depuis les blocs de description
                     int dataBlockNum = reconstituteNumber(byteBuffer);
                     // Vérifier si le numéro de bloc est valide (non nul)
-                    if (dataBlockNum == 0) {
-                        return; // Fin du fichier
-                    }
+                    //if (dataBlockNum == 0) {
+                    //    return; // Fin du fichier
+                    //}
                     
                     //for (int chunkStart = 0; chunkStart < BLOCK_SIZE; chunkStart += CHUNK_SIZE) {
                         // Lire et afficher le contenu du bloc de données
-                        readBlock(sd,dataBlockNum, 0, dataBuffer, CHUNK_SIZE);
-                        printf("\n%s\n",dataBuffer);
+                    readBlock(sd,dataBlockNum, 0, dataBuffer, CHUNK_SIZE);
+                    printf("\n%s\n",dataBuffer);
                     //}
-                }
+                //}
             }
             
             return; // Fichier affiché, sortie de la fonction
@@ -508,11 +496,11 @@ int main(int argc, char *argv[]) {
     printf("taille=%ld\n\n",size);
 
     printf("Pico ordinateur OK\n\n");
-    // char current_cmd[CMD_SIZE + 1]; // +1 pour le caractère nul
+    
     erase(&sd,0,15000);
     current_cmd[0] = '\0'; // Initialise la chaîne vide
     printf("PicoOrdi>");
-    //eraseSD(&sd);
+
     while (1) {
 
         _delay_ms(10);