diff -ur orig/apps/settings.c apps/settings.c
--- orig/apps/settings.c	Mon Jul 15 21:55:15 2002
+++ apps/settings.c	Thu Jul 18 14:29:45 2002
@@ -209,7 +209,8 @@
     
     rtc_config_block[0xe] = (unsigned char)
         ((global_settings.playlist_shuffle & 1) |
-         ((global_settings.mp3filter & 1) << 1));
+         ((global_settings.mp3filter & 1) << 1) |
+         ((global_settings.sort_case & 1) << 2));
 
     rtc_config_block[0xf] = (unsigned char)
         ((global_settings.scroll_speed << 3) |
@@ -266,8 +267,9 @@
         if (rtc_config_block[0xe] != 0xFF) {
             global_settings.playlist_shuffle = rtc_config_block[0xe] & 1;
             global_settings.mp3filter = (rtc_config_block[0xe] >> 1) & 1;
+            global_settings.sort_case = (rtc_config_block[0xe] >> 2) & 1;
         }
-    
+        
         c = rtc_config_block[0xf] >> 3;
         if (c != 31)
             global_settings.scroll_speed = c;
@@ -303,6 +305,7 @@
     global_settings.backlight   = DEFAULT_BACKLIGHT_SETTING;
     global_settings.wps_display = DEFAULT_WPS_DISPLAY;
     global_settings.mp3filter   = true;
+    global_settings.sort_case   = false;
     global_settings.playlist_shuffle = false;
     global_settings.total_boots = 0;
     global_settings.total_uptime = 0;
diff -ur orig/apps/settings.h apps/settings.h
--- orig/apps/settings.h	Mon Jul 15 14:02:12 2002
+++ apps/settings.h	Thu Jul 18 15:13:58 2002
@@ -52,8 +52,9 @@
 
     /* misc options */
 
-    int loop_playlist; /* do we return to top of playlist at end?            */
-    bool mp3filter;
+    int loop_playlist; /* do we return to top of playlist at end?  */
+    bool mp3filter;    /* only display mp3/m3u files and dirs in directory? */
+    bool sort_case;    /* dir sort order: 0=case insensitive, 1=sensitive */
     int scroll_speed;  /* long texts scrolling speed: 1-20 */
     bool playlist_shuffle;
 
Only in apps: settings.h~
diff -ur orig/apps/settings_menu.c apps/settings_menu.c
--- orig/apps/settings_menu.c	Mon Jul 15 14:02:12 2002
+++ apps/settings_menu.c	Thu Jul 18 15:10:45 2002
@@ -43,6 +43,11 @@
     set_bool( "[MP3/M3U filter]", &global_settings.mp3filter );
 }
 
+static void sort_case(void)
+{
+    set_bool( "[Sort case sensitive]", &global_settings.sort_case );
+}
+
 static void backlight_timer(void)
 {
     set_int( "[Backlight]", "s", &global_settings.backlight, 
@@ -68,6 +73,7 @@
     struct menu_items items[] = {
         { "Shuffle",         shuffle         }, 
         { "MP3/M3U filter",  mp3_filter      },
+        { "Sort mode",       sort_case       },
         { "Backlight Timer", backlight_timer },
         { "Scroll speed",    scroll_speed    },  
         { "While Playing",   wps_set },
Only in apps: settings_menu.c~
diff -ur orig/apps/tree.c apps/tree.c
--- orig/apps/tree.c	Wed Jul 17 14:25:04 2002
+++ apps/tree.c	Thu Jul 18 14:53:59 2002
@@ -114,7 +114,10 @@
     struct entry* e2 = *(struct entry**)p2;
     
     if (( e1->attr & ATTR_DIRECTORY ) == ( e2->attr & ATTR_DIRECTORY ))
-        return strncasecmp(e1->name, e2->name, TREE_MAX_FILENAMELEN);
+        if (global_settings.sort_case)
+            return strncmp(e1->name, e2->name, TREE_MAX_FILENAMELEN);
+        else
+            return strncasecmp(e1->name, e2->name, TREE_MAX_FILENAMELEN);
     else 
         return ( e2->attr & ATTR_DIRECTORY ) - ( e1->attr & ATTR_DIRECTORY );
 }
