diff -uN Work:DOWNLOADS/ZEsarUX-4.2/chardetect.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/chardetect.c
--- Work:DOWNLOADS/ZEsarUX-4.2/chardetect.c	2016-09-22 19:49:58 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/chardetect.c	2017-01-04 22:59:38 +0000
@@ -173,8 +173,9 @@
 
 	sprintf (buffer,"Detected routine at %d using %s method",reg_pc,trap_char_detection_routines_texto[trap_char_detection_routine_number]);
 	printf ("%s\n",buffer);
+	#if !defined(__MORPHOS__)
 	textspeech_print_speech(buffer);
-
+	#endif
 	if (scr_putpixel!=NULL) {
 		screen_print_splash_text_center(ESTILO_GUI_TINTA_NORMAL,ESTILO_GUI_PAPEL_NORMAL,buffer);
 	}
@@ -729,9 +730,9 @@
 	scr_detectedchar_print(c);
 	chardetect_x_position++;
 	
-
+	#if !defined(__MORPHOS__)
 	textspeech_add_character(c);	
-	
+	#endif
 	if (chardetect_line_width) {
 		if (chardetect_x_position>=chardetect_line_width) {
 			int saltar=0;
@@ -746,7 +747,9 @@
 			if (saltar) {
 				chardetect_x_position=0;
 				scr_detectedchar_print ('\n');
+				#if !defined(__MORPHOS__)
 				textspeech_add_speech_fifo();
+				#endif
 			}
 		}
 		
@@ -965,7 +968,9 @@
 				scr_detectedchar_print ('\n');
 				chardetect_x_position=0;
 			
+				#if !defined(__MORPHOS__)
 				textspeech_add_speech_fifo();
+				#endif
 			}
 			else {
 				//Si line width 0, meter un espacio al recibir un salto de linea
@@ -980,9 +985,9 @@
 			scr_detectedchar_print (8);
 			if (chardetect_x_position) chardetect_x_position--;
 
-
+				#if !defined(__MORPHOS__)
         		textspeech_add_character(c);
-
+				#endif
 			
 		}
 		
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/cpu.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/cpu.c
--- Work:DOWNLOADS/ZEsarUX-4.2/cpu.c	2016-12-01 20:33:29 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/cpu.c	2017-01-07 17:39:05 +0000
@@ -4168,6 +4168,7 @@
 				chardetect_second_trap_sum32.v=1;
 			}
 
+			#if !defined(__MORPHOS__)
 			else if (!strcmp(argv[puntero_parametro],"--textspeechprogram")) {
 				siguiente_parametro_argumento();
                                 textspeech_filter_program=argv[puntero_parametro];
@@ -4237,6 +4238,8 @@
 				}
 			}
 
+			#endif
+
                         else if (!strcmp(argv[puntero_parametro],"--tool-sox-path")) {
                                 siguiente_parametro_argumento();
                                 sprintf (external_tool_sox,"%s",argv[puntero_parametro]);
@@ -5425,12 +5428,14 @@
 
         scr_end_pantalla();
 
+
+	#if !defined(__MORPHOS__)
 	//Borrar archivos de speech en Windows
 	//Borrar archivo de lock
 	textspeech_borrar_archivo_windows_lock_file();
 	//Borrar archivo de speech
 	textspeech_borrar_archivo_windows_speech_file();
-
+	#endif
 
 
         exit(0);
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/menu.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/menu.c
--- Work:DOWNLOADS/ZEsarUX-4.2/menu.c	2016-12-03 17:19:56 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/menu.c	2017-01-07 17:39:10 +0000
@@ -81,6 +81,13 @@
 #include "superupgrade.h"
 
 
+#if defined(__MORPHOS__)
+	#include <proto/asl.h>
+	#include <proto/intuition.h>
+	#include <proto/dos.h>
+#endif
+
+
 #if defined(__APPLE__)
 	#include <sys/syslimits.h>
 
@@ -1137,8 +1144,9 @@
 	//Enviar a speech
 	char buf_speech[MAX_BUFFER_SPEECH+1];
 	sprintf (buf_speech,"Edit box: %s",string);
+	#if !defined(__MORPHOS__)
 	menu_textspeech_send_text(buf_speech);
-
+	#endif
 
 	z80_byte tecla;
 
@@ -1178,8 +1186,9 @@
 				//Enviar a speech letra pulsada
 				menu_speech_tecla_pulsada=0;
 			        sprintf (buf_speech,"%c",tecla);
+			        #if !defined(__MORPHOS__)
         			menu_textspeech_send_text(buf_speech);
-
+					#endif
 
 				if (i>=max_length_shown) offset_string++;
 
@@ -1196,8 +1205,9 @@
 
 				menu_speech_tecla_pulsada=0;
                                 sprintf (buf_speech,"%c",string[i]);
+                                #if !defined(__MORPHOS__)
                                 menu_textspeech_send_text(buf_speech);
-
+								#endif
 
                                 string[i]=0;
 				if (offset_string>0) {
@@ -2242,7 +2252,7 @@
 
 }
 
-
+#if !defined(__MORPHOS__)
 void menu_textspeech_send_text(char *texto)
 {
 
@@ -2316,8 +2326,9 @@
 	}
 
 
-
+	#if !defined(__MORPHOS__)
 	textspeech_print_speech(buf_speech);
+	#endif
 	//printf ("textspeech_print_speech: %s\n",buf_speech);
 
 	//hacemos que el timeout de tooltip se reinicie porque sino cuando se haya leido el menu, acabara saltando el timeout
@@ -2345,8 +2356,10 @@
 	all_interlace_scr_refresca_pantalla();
 
         do {
+        		#if !defined(__MORPHOS__)
                 if (textspeech_finalizado_hijo_speech() ) scrtextspeech_filter_run_pending();
-
+				#endif
+	
                 menu_cpu_core_loop();
                 acumulado=menu_da_todas_teclas();
 
@@ -2357,10 +2370,11 @@
                                 //int tecla=menu_get_pressed_key();
 
 				//de momento cualquier tecla anula speech
+				#if !defined(__MORPHOS__)
 				textspeech_empty_speech_fifo();
-
+				#endif
 				menu_speech_tecla_pulsada=1;
-
+				
                         }
 
 			//no hay tecla pulsada
@@ -2390,6 +2404,7 @@
 	menu_tooltip_counter=0;
 
 }
+#endif
 
 
 //escribe opcion de linea de texto
@@ -2456,8 +2471,9 @@
 			else menu_escribe_texto_ventana(0,y,tinta,papel,"x");
 		}
 	}
+	#if !defined(__MORPHOS__)
 	menu_textspeech_send_text(texto);
-
+	#endif
 }
 
 
@@ -2622,8 +2638,10 @@
 
         char buffer_titulo[100];
         sprintf (buffer_titulo,"Window: %s",titulo);
+        #if !defined(__MORPHOS__)
         menu_textspeech_send_text(buffer_titulo);
-
+		#endif
+		
         //Forzar que siempre suene
         //menu_speech_tecla_pulsada=0;
 
@@ -3251,9 +3269,9 @@
 			//Guardamos estado actual
 			int antes_menu_speech_tecla_pulsada=menu_speech_tecla_pulsada;
 			menu_speech_tecla_pulsada=0;
-
+			#if !defined(__MORPHOS__)
 			menu_textspeech_send_text(texto_opcion_activa);
-
+			#endif
 			//Restauro estado
 			//Pero si se ha pulsado tecla, no restaurar estado
 			//Esto sino provocaria que , por ejemplo, en la ventana de confirmar yes/no,
@@ -6494,7 +6512,7 @@
 
 
 	//empezamos de menos a mas
-	if (y1<y2) {
+	if (y1 < y2) {
 		yorigen=y1;
 		ydestino=y2;
 	}
@@ -8866,7 +8884,7 @@
 			int eprom_flash_valida=0;
 			int tipo_tarjeta=-1;
 			char *tipos_tarjeta[]={"APP","FIL","MIX"};
-			int type;
+			int type = 0;
 
 			//Si no hay slot insertado
 			if (z88_memory_slots[slot].size==0) {
@@ -11334,7 +11352,9 @@
 
 	//Forzar que siempre suene en speech
 	menu_speech_tecla_pulsada=0;
+	#if !defined(__MORPHOS__)
 	menu_textspeech_send_text(textospeech);
+	#endif
 }
 
 void menu_onscreen_keyboard_dibuja_cursor(void)
@@ -11447,14 +11467,17 @@
 
 			//No queremos que se envie cada linea a speech
 			z80_bit old_textspeech_also_send_menu;
+			#if !defined(__MORPHOS__)
 			old_textspeech_also_send_menu.v=textspeech_also_send_menu.v;
 			textspeech_also_send_menu.v=0;
-
+			#endif
 	        	menu_escribe_linea_opcion(linea++,-1,1,textoventana);
 
 			//Restaurar parametro speech
+			#if !defined(__MORPHOS__)
 			textspeech_also_send_menu.v=old_textspeech_also_send_menu.v;
-
+			#endif
+			
 			linea++;
 		}
 
@@ -12186,11 +12209,11 @@
 	filesel_item *itemanterior;
 
 
-#ifndef MINGW
-	n = scandir(".", &namelist, menu_filesel_filter_func, menu_filesel_alphasort);
+#if !defined(__MORPHOS__)
+	n = scandir("PROGDIR:", &namelist, menu_filesel_filter_func, menu_filesel_alphasort);
 #else
 	//alternativa scandir, creada por mi
-	n = scandir_mingw(".", &namelist, menu_filesel_filter_func, menu_filesel_alphasort);
+	n = scandir_mingw("PROGDIR:", &namelist, menu_filesel_filter_func, menu_filesel_alphasort);
 #endif
 
     if (n < 0) debug_printf (VERBOSE_ERR,"Error scandir");
@@ -14984,7 +15007,7 @@
 
 }
 
-
+#if !defined(__MORPHOS__)
 void menu_textspeech_filter_program(MENU_ITEM_PARAMETERS)
 {
 
@@ -15048,7 +15071,9 @@
         if (ret==1) {
 
                 textspeech_filter_program=menu_buffer_textspeech_filter_program;
+                	#if !defined(__MORPHOS__)
 					textspeech_filter_program_check_spaces();
+					#endif
 			}
 
 		else {
@@ -15123,7 +15148,9 @@
         if (ret==1) {
 
                 textspeech_stop_filter_program=menu_buffer_textspeech_stop_filter_program;
+                						#if !defined(__MORPHOS__)
                                         textspeech_stop_filter_program_check_spaces();
+                                        #endif
                         }
 
                 else {
@@ -15135,15 +15162,17 @@
 
 }
 
+
 void menu_textspeech_filter_timeout(MENU_ITEM_PARAMETERS)
 {
 
        int valor;
 
         char string_value[3];
-
+		
+		#if !defined(__MORPHOS__)
         sprintf (string_value,"%d",textspeech_timeout_no_enter);
-
+		#endif
 
         menu_ventana_scanf("Timeout (0=never)",string_value,3);
 
@@ -15261,7 +15290,7 @@
         } while ( (item_seleccionado.tipo_opcion&MENU_OPCION_ESC)==0 && retorno_menu!=MENU_RETORNO_ESC && !salir_todos_menus);
 
 }
-
+#endif
 
 void menu_interface_fullscreen(MENU_ITEM_PARAMETERS)
 {
@@ -15902,8 +15931,9 @@
 			menu_add_item_menu_tooltip(array_menu_interface_settings,"Settings on capture print character routines");
 			menu_add_item_menu_ayuda(array_menu_interface_settings,"Settings on capture print character routines");
 
-
+			#if !defined(__MORPHOS__)
 			menu_add_item_menu_format(array_menu_interface_settings,MENU_OPCION_NORMAL,menu_textspeech,NULL,"~~Text to speech");
+			#endif
 			menu_add_item_menu_shortcut(array_menu_interface_settings,'t');
 			menu_add_item_menu_tooltip(array_menu_interface_settings,"Specify a script or program to send all text generated, "
 						"from Spectrum display or emulator menu, "
@@ -18294,11 +18324,15 @@
 
 	if (primera_linea_a_speech) {
 		menu_speech_tecla_pulsada=0;
+		#if !defined(__MORPHOS__)
 		menu_textspeech_send_text(buffer_lineas[primera_linea]);
+		#endif
 	}
 	if (ultima_linea_a_speech) {
 		menu_speech_tecla_pulsada=0;
+		#if !defined(__MORPHOS__)
 		menu_textspeech_send_text(buffer_lineas[i+primera_linea-1]);
+		#endif
 	}
 
 
@@ -20260,10 +20294,10 @@
 	//stdout y simpletext no
 	if (!strcmp(scr_driver_name,"stdout")) return;
 	if (!strcmp(scr_driver_name,"simpletext")) return;
-
+	#if !defined(__MORPHOS__)
 	textspeech_print_speech(texto_welcome);
 	textspeech_print_speech(texto_esc_menu);
-
+	#endif
 }
 
 void reset_splash_text(void)
@@ -20528,9 +20562,9 @@
                         //Guardamos estado actual
                         int antes_menu_speech_tecla_pulsada=menu_speech_tecla_pulsada;
                         menu_speech_tecla_pulsada=0;
-
+						#if !defined(__MORPHOS__)
                         menu_textspeech_send_text(texto_opcion_activa);
-
+						#endif
                         //Restauro estado
                         //Pero si se ha pulsado tecla, no restaurar estado
                         //Esto sino provocaria que , por ejemplo, en la ventana de confirmar yes/no,
@@ -20871,7 +20905,7 @@
 	return 0;
 }
 
-
+#if !defined(__MORPHOS__)
 void menu_textspeech_say_current_directory(void)
 {
 
@@ -20885,16 +20919,50 @@
 
 	//Quiero que siempre se escuche
 	menu_speech_tecla_pulsada=0;
+	#if !defined(__MORPHOS__)
 	menu_textspeech_send_text(buffer_texto);
+	#endif
 }
-
+#endif
 
 //Retorna 1 si seleccionado archivo. Retorna 0 si sale con ESC
 //Si seleccionado archivo, lo guarda en variable *archivo
 //Si sale con ESC, devuelve en menu_filesel_last_directory_seen ultimo directorio
 int menu_filesel(char *titulo,char *filtros[],char *archivo)
 {
+	#if defined(__MORPHOS__)
+	struct FileRequester *filereq = NULL;
+	filereq = AllocAslRequestTags( ASL_FileRequest, ASL_Hail, "Open File", (struct TagItem *)TAG_DONE);
+	if(AslRequestTags(filereq,
+							ASLFR_InitialLeftEdge, 20,
+							ASLFR_InitialTopEdge, 20,
+							ASLFR_InitialWidth, 300,
+							ASLFR_InitialHeight, 350,
+							ASLFR_InitialDrawer, menu_filesel_last_directory_seen,
+							ASLFR_InitialPattern, "(#?.tap|#?.z80|#?.sna)",
+							ASLFR_PositiveText, "Load",
+							ASLFR_DoPatterns, TRUE,
+							(struct TagItem *)TAG_DONE))
+	{
+		char zxfile[200];
+		strcpy(zxfile, (char *)filereq->rf_Dir);		
+		AddPart(zxfile, (char *)filereq->rf_File, 200);
+		strcpy(archivo,  zxfile);
+		strcpy(menu_filesel_last_directory_seen , filereq->rf_Dir);
+		return 1;
+	}
+	else
+	{
+		//strcpy(menu_filesel_last_directory_seen , filereq->rf_Dir);
+		return 0;
+	}
 
+	if(filereq) FreeAslRequest(filereq);
+
+	
+	
+	
+	#else
 	//En el caso de stdout es mucho mas simple
         if (!strcmp(scr_driver_name,"stdout")) {
 		printf ("%s :\n",titulo);
@@ -20937,8 +21005,9 @@
 	//menu_active_item_primera_vez=1;
 
 	//Decir directorio activo
+	#if !defined(__MORPHOS__)
 	menu_textspeech_say_current_directory();
-
+	#endif
 	do {
 		menu_speech_tecla_pulsada=0;
 		menu_active_item_primera_vez=1;
@@ -21016,8 +21085,9 @@
 					        //Decir directorio activo
 						//Esperar a liberar tecla si no la tecla invalida el speech
 						menu_espera_no_tecla();
+							#if !defined(__MORPHOS__)
 					        menu_textspeech_say_current_directory();
-
+							#endif
 
 					}
 
@@ -21167,8 +21237,9 @@
 						        //Decir directorio activo
 							//Esperar a liberar tecla si no la tecla invalida el speech
 							menu_espera_no_tecla();
+								#if !defined(__MORPHOS__)
 						        menu_textspeech_say_current_directory();
-
+								#endif
 						}
 
 						else {
@@ -21299,7 +21370,7 @@
 	//Aqui no se va a llegar nunca
 	//cls_menu_overlay();
         //menu_espera_no_tecla();
-
+	#endif
 
 }
 
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/screen.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/screen.c
--- Work:DOWNLOADS/ZEsarUX-4.2/screen.c	2016-12-01 20:33:29 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/screen.c	2017-01-05 13:42:51 +0000
@@ -170,37 +170,76 @@
 //int *spectrum_colortable_normal;
 int spectrum_colortable_normal[EMULATOR_TOTAL_PALETTE_COLOURS];
 
-//Tabla con los colores reales del Spectrum. Formato RGB
-const int spectrum_colortable_original[16] =
-{
-
-0x000000,  //negro
-0x0000CD,  //azul
-0xCD0000,  //rojo
-0xCD00CD,  //magenta
-0x00CD00,  //verde
-0x00CDCD,  //cyan
-0xCDCD00,  //amarillo
-0xCDCDCD,  //blanco
-
-0x000000,
-0x0000FF,
-0xFF0000,
-0xFF00FF,
-0x00FF00,
-0x00FFFF,
-0xFFFF00,
-0xFFFFFF
-
-};
-
-//Tabla con los colores reales del Z88. Formato RGB
-const int z88_colortable_original[4]={
-0x461B7D, //Enabled pixel
-0x90B0A7, //Grey enabled pixel
-0xD2E0B9, //Empty pixel when screen is switched on
-0xE0E0E0 //Empty pixel when screen is switched off
-};
+/*
+#if defined(__MORPHOS__)
+	//Tabla con los colores reales del Spectrum. Formato BGR
+	const int spectrum_colortable_original[16] =
+	{
+
+	0x000000FF,  //negro
+	0xCD0000FF,  //azul
+	0x0000CDFF,  //rojo
+	0xCD00CDFF,  //magenta
+	0x00CD00FF,  //verde
+	0xCDCD00FF,  //cyan
+	0x00CDCDFF,  //amarillo
+	0xCDCDCDFF,  //blanco
+
+	0x000000FF,
+	0xFF0000FF,
+	0x0000FFFF,
+	0xFF00FFFF,
+	0x00FF00FF,
+	0xFFFF00FF,
+	0x00FFFFFF,
+	0xFFFFFFFF
+
+	};
+
+	//Tabla con los colores reales del Z88. Formato RGB
+	const int z88_colortable_original[4]={
+	0x7D1B46FF, //Enabled pixel
+	0xA7B090FF, //Grey enabled pixel
+	0xB9E0D2FF, //Empty pixel when screen is switched on
+	0xE0E0E0FF //Empty pixel when screen is switched off
+	};
+
+#else
+*/
+	//Tabla con los colores reales del Spectrum. Formato RGB
+	const int spectrum_colortable_original[16] =
+	{
+
+	0x000000,  //negro
+	0x0000CD,  //azul
+	0xCD0000,  //rojo
+	0xCD00CD,  //magenta
+	0x00CD00,  //verde
+	0x00CDCD,  //cyan
+	0xCDCD00,  //amarillo
+	0xCDCDCD,  //blanco
+
+	0x000000,
+	0x0000FF,
+	0xFF0000,
+	0xFF00FF,
+	0x00FF00,
+	0x00FFFF,
+	0xFFFF00,
+	0xFFFFFF
+
+	};
+
+	//Tabla con los colores reales del Z88. Formato RGB
+	const int z88_colortable_original[4]={
+	0x461B7D, //Enabled pixel
+	0x90B0A7, //Grey enabled pixel
+	0xD2E0B9, //Empty pixel when screen is switched on
+	0xE0E0E0 //Empty pixel when screen is switched off
+	};
+
+//#endif
+
 
 //ubicacion en el array de colores de los de Z88
 //ver screen.h, Z88_PXCOLON, etc
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/scrsdl.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/scrsdl.c
--- Work:DOWNLOADS/ZEsarUX-4.2/scrsdl.c	2016-04-21 19:13:49 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/scrsdl.c	2017-01-05 21:59:00 +0000
@@ -71,10 +71,16 @@
 
 
 	debug_printf (VERBOSE_DEBUG,"Creating window %d X %d",screen_get_window_size_width_zoom_border_en(),screen_get_window_size_height_zoom_border_en() );
-
-        sdl_screen = SDL_SetVideoMode(screen_get_window_size_width_zoom_border_en(),
-                                      screen_get_window_size_height_zoom_border_en(),
-                                        32, flags);
+		#if defined(__MORPHOS__)
+			//algunos equipos de MorphOS no soportan 32bits
+			sdl_screen = SDL_SetVideoMode(screen_get_window_size_width_zoom_border_en(),
+        	                              screen_get_window_size_height_zoom_border_en(),
+        	                                32, flags);
+        #else
+        	sdl_screen = SDL_SetVideoMode(screen_get_window_size_width_zoom_border_en(),
+        	                              screen_get_window_size_height_zoom_border_en(),
+        	                                32, flags);
+        #endif
         if ( sdl_screen == NULL ) {
                 return 1;
         }
@@ -98,10 +104,34 @@
 }
 
 
-
 void scrsdl_putpixel(int x,int y,unsigned int color)
 {
 
+	#if defined(__MORPHOS__)
+		
+		//CREO�QUE�MORPHOS�USA�BGRA asi que habra que hacer conversion de paletas
+		Uint8 *p = (Uint8 *)sdl_screen->pixels + y * sdl_screen->pitch + x * 4;
+
+               
+       	//escribir de golpe los 24 bits.
+       	unsigned int color32=spectrum_colortable[color];
+       	//agregar alpha
+        color32 |=0xFF000000;
+        //y escribir
+                
+        //Aqui aplico el parche. Obtengo los 4 componentes por separado y luego los mezclo
+		unsigned char r,g,b,a;
+		a=0xFF;
+		r=(color32>>16)&0xFF;
+		g=(color32>>8)&0xFF;
+		b=(color32)&0xFF;
+
+		//Aqui los mezclo: BGRA
+		color32=(b<<24)|(g<<16)|(r<<8)|a;                
+
+		*(Uint32 *)p = color32;
+	
+	#else
 		Uint8 *p = (Uint8 *)sdl_screen->pixels + y * sdl_screen->pitch + x * 4;
 
                 
@@ -112,6 +142,8 @@
                 //y escribir
 
 		*(Uint32 *)p = color32;
+	
+	#endif
 }
 
 
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/timer.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/timer.c
--- Work:DOWNLOADS/ZEsarUX-4.2/timer.c	2016-12-01 20:33:30 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/timer.c	2017-01-04 23:43:02 +0000
@@ -466,7 +466,7 @@
 	                                menu_segundo_contador_teclas_repeticion--;
 				}
 			}
-
+		#if !defined(__MORPHOS__)
         //Si hay texto ahi acumulado pero no se ha recibido salto de linea, al cabo de un segundo, saltar
         if (textspeech_filter_program!=NULL) {
 	        scrtextspeech_filter_counter++;
@@ -480,11 +480,14 @@
 		                debug_printf (VERBOSE_DEBUG,"Forcing sending filter text although there is no carriage return");
         		        textspeech_add_speech_fifo();
 		        }
+		    
 
 		}
+		
 	}
+		#endif
 
-
+	#if !defined(__MORPHOS__)
 	if (textspeech_filter_program!=NULL) {
 
 	        //Si hay pendiente speech
@@ -495,6 +498,7 @@
                         scrtextspeech_filter_run_pending();
                 }
         }
+	#endif
 
 			//Cosas que suceden cada 1 segundo
                         if (contador_segundo>=1000) {
@@ -584,7 +588,8 @@
                                         }
                                 }
 
-
+							
+				#if !defined(__MORPHOS__)
 				//temporizador de impresion para escribir texto filter en pantalla
 				if (textspeech_operating_counter) {
 					textspeech_operating_counter--;
@@ -592,6 +597,7 @@
 						textspeech_clear_operating();
 					}
 				}
+				#endif
 
 
 
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/utils.c Work:DOWNLOADS/ZEsarUX-4.2-MOS/utils.c
--- Work:DOWNLOADS/ZEsarUX-4.2/utils.c	2016-12-01 20:33:30 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/utils.c	2017-01-05 15:08:56 +0000
@@ -4308,9 +4308,10 @@
                                         blink_kbd_a8 &= (255-64);
 					cpc_keyboard_table[0] &= (255-64);
 
+					#if !defined(__MORPHOS__)
 					//Avisar de envio enter especial para rutinas de speech, para que envien sonido
 					textspeech_send_new_line();
-
+					#endif
                                 }
 
                                 else {
@@ -4771,7 +4772,9 @@
 
 			//F4 pulsado. Volcar pantalla a speech
 			case UTIL_KEY_F4:
+				#if !defined(__MORPHOS__)
 				if (pressrelease) textspeech_enviar_speech_pantalla();
+				#endif
 			break;
 
                         //F5 pulsado
@@ -4827,9 +4830,10 @@
 					cpc_keyboard_table[8] &=(255-4);
 					puerto_teclado_sam_f7f9 &= (255-32);
 
+									#if !defined(__MORPHOS__)
 	                                //Vaciamos cola speech
         	                        textspeech_empty_speech_fifo();
-
+									#endif
 
 				}
 				else {
diff -uN Work:DOWNLOADS/ZEsarUX-4.2/utils.h Work:DOWNLOADS/ZEsarUX-4.2-MOS/utils.h
--- Work:DOWNLOADS/ZEsarUX-4.2/utils.h	2016-10-03 19:16:24 +0000
+++ Work:DOWNLOADS/ZEsarUX-4.2-MOS/utils.h	2017-01-05 07:50:14 +0000
@@ -34,6 +34,12 @@
 #define NAME_MAX MAX_PATH
 #endif
 
+
+#if defined(__MORPHOS__)
+		#define PATH_MAX 5000
+		#define NAME_MAX 5000
+#endif
+
 extern void util_get_file_extension(char *filename,char *extension);
 extern void util_get_file_no_directory(char *filename,char *file_no_dir);
 extern void util_get_file_without_extension(char *filename,char *filename_without_extension);
