Index: firmware/fat/pff_file.c
===================================================================
--- firmware/fat/pff_file.c	(revision 63)
+++ firmware/fat/pff_file.c	(revision 64)
@@ -52,6 +52,7 @@
 		{
 			*dir++ = *path++;
 		}
+		--dir;
 	}
 
 	*dir = '\0';
@@ -63,6 +64,11 @@
 	return file_of(&file->path[0]);
 }
 
+char const * file_path(struct SimpleFile * file)
+{
+	return &file->path[0];
+}
+
 void file_init(struct SimpleFile * file)
 {
 	file->path[0] = '\0';
Index: firmware/fileselector.c
===================================================================
--- firmware/fileselector.c	(revision 63)
+++ firmware/fileselector.c	(revision 64)
@@ -32,7 +32,14 @@
 void file_selector(struct SimpleFile * file)
 {
 	char dir[MAX_PATH_LENGTH];
-	dir_of(&dir[0],file_name(file));
+	if (file_name(file)[0] == '\0')
+	{
+		strcpy(&dir[0],"/atari800/user");
+	}
+	else
+	{
+		dir_of(&dir[0],file_path(file));
+	}
 	for (;;)
 	{
 		struct SimpleDirEntry * entry = dir_entries_filtered(dir,filter);
Index: firmware/main.c
===================================================================
--- firmware/main.c	(revision 63)
+++ firmware/main.c	(revision 64)
@@ -58,10 +58,10 @@
 BIT_REG(,0x7,8,ram_select,zpu_out1)
 BIT_REG(,0x3f,11,rom_select,zpu_out1)
 
-BIT_REG_RO(,0x1,4,hotkey_softboot,zpu_in1)
-BIT_REG_RO(,0x1,5,hotkey_coldboot,zpu_in1)
-BIT_REG_RO(,0x1,6,hotkey_fileselect,zpu_in1)
-BIT_REG_RO(,0x1,7,hotkey_settings,zpu_in1)
+BIT_REG_RO(,0x1,8,hotkey_softboot,zpu_in1)
+BIT_REG_RO(,0x1,9,hotkey_coldboot,zpu_in1)
+BIT_REG_RO(,0x1,10,hotkey_fileselect,zpu_in1)
+BIT_REG_RO(,0x1,11,hotkey_settings,zpu_in1)
 
 void
 wait_us(int unsigned num)
@@ -215,7 +215,8 @@
 	baseaddr = (unsigned char volatile *)(40000 + atari_regbase);
 	set_reset_6502(1);
 	set_turbo_6502(1);
-	set_rom_select(1);
+	set_rom_select(2);
+	set_ram_select(2);
 
 	init_printf(0, char_out);
 
@@ -227,7 +228,7 @@
 		init_drive_emulator();
 
 		
-		struct SimpleDirEntry * entries = dir_entries("");
+		struct SimpleDirEntry * entries = dir_entries("/system/rom/atari800");
 		
 		loadrom_indir(entries,"xlorig.rom",0x4000, (void *)0x704000);
 		loadrom_indir(entries,"xlhias.rom",0x4000, (void *)0x708000);
@@ -235,6 +236,7 @@
 		loadrom_indir(entries,"osbhias.rom",0x4000, (void *)0x710000);
 		loadrom_indir(entries,"osborig.rom",0x2800, (void *)0x715800);
 		loadrom_indir(entries,"osaorig.rom",0x2800, (void *)0x719800);
+
 		loadrom_indir(entries,"ataribas.rom",0x2000,(void *)0x700000);
 
 		//ROM = xlorig.rom,0x4000, (void *)0x704000
Index: firmware/simplefile.h
===================================================================
--- firmware/simplefile.h	(revision 63)
+++ firmware/simplefile.h	(revision 64)
@@ -10,6 +10,7 @@
 
 void file_init(struct SimpleFile * file);
 
+char const * file_path(struct SimpleFile * file);
 char const * file_name(struct SimpleFile * file);
 enum SimpleFileStatus file_read(struct SimpleFile * file, void * buffer, int bytes, int * bytesread);
 enum SimpleFileStatus file_seek(struct SimpleFile * file, int offsetFromStart);
Index: firmware/test_file.c
===================================================================
--- firmware/test_file.c	(revision 63)
+++ firmware/test_file.c	(revision 64)
@@ -94,7 +94,7 @@
 
 	fprintf(stderr,"\n\n");
 
-	entry = dir_entries("/UAE4ALL");
+	entry = dir_entries("/atari800");
 	while (entry)
 	{
 		fprintf(stderr, "Path:%s", dir_path(entry));
@@ -107,7 +107,7 @@
 
 	fprintf(stderr,"\n\n");
 
-	entry = dir_entries("/UAE4ALL/DATA");
+	entry = dir_entries("/atari800/user");
 	while (entry)
 	{
 		fprintf(stderr, "Path:%s", dir_path(entry));
@@ -191,7 +191,9 @@
 
 	{
 		printf("WTF\n");
-		struct SimpleDirEntry * entries = dir_entries("");
+		struct SimpleDirEntry * entries = dir_entries("/system/rom/atari800");
+		entries = dir_next(entries);
+		printf("WTF:%s\n",dir_filename(entries));
 		
 		loadrom_indir(entries,"xlorig.rom",0x4000, (void *)0x704000);
 		loadrom_indir(entries,"xlhias.rom",0x4000, (void *)0x708000);
@@ -202,11 +204,12 @@
 		loadrom_indir(entries,"ataribas.rom",0x2000,(void *)0x700000);
 	}
 
-	entry = dir_entries("/DCIM");
-	entry = dir_next(entry);
-	fprintf(stderr, " Name:%s", dir_filename(entry));
+	//entry = dir_entries("/atari800/user");
+	//entry = dir_next(entry);
+	//fprintf(stderr, " Name:%s", dir_filename(entry));
 	struct SimpleFile * file = alloca(file_struct_size());
-	file_open_dir(entry,file);
+	file_open_name("/atari800/user/acid800.atr",file);
+	fprintf(stderr, "XXX Name:%s", file_name(file));
 	file_selector(file);
 
 	return 0;
