Index: console/console.c
===================================================================
--- console/console.c	(revision 5b6de816bdb718c9edeb5f25edbc83455acfa89b)
+++ console/console.c	(revision 390a6785ea4aaf73a4e68f73744671d047f1b0f0)
@@ -40,4 +40,5 @@
 #include <libadt/fifo.h>
 #include <screenbuffer.h>
+#include <sys/mman.h>
 
 #define CONSOLE_COUNT 12 
@@ -46,5 +47,5 @@
 #define NAME "CONSOLE"
 
-int active_console = 1;
+int active_console = 0;
 
 struct {
@@ -66,5 +67,6 @@
 
 connection_t connections[CONSOLE_COUNT];
-
+keyfield_t *interbuffer = NULL;
+	
 static int find_free_connection() 
 {
@@ -157,7 +159,4 @@
 	char c,d;
 	connection_t *conn;
-	keyfield_t *interbuffer = NULL;
-
-//	interbuffer = mmap(,, PROTO_READ|PROTO_WRITE, MAP_ANONYMOUS, , );	
 	
 	/* Ignore parameters, the connection is alread opened */
@@ -186,14 +185,23 @@
 
 				ipc_call_async(fb_info.phone, FB_CURSOR_VISIBILITY, 0, NULL, NULL); 
-				ipc_call_async_2(fb_info.phone, FB_CLEAR, 0, 0, NULL, NULL);
+		
+				if (interbuffer) {
+					for (i = 0; i < fb_info.cols * fb_info.rows; i++)
+						interbuffer[i] = conn->screenbuffer.buffer[i];	
+					ipc_call_sync(fb_info.phone, FB_DRAW_TEXT_DATA, 0, NULL);		
+				} else {
+
+					ipc_call_async_2(fb_info.phone, FB_CLEAR, 0, 0, NULL, NULL);
 				
-				for (i = 0; i < conn->screenbuffer.size_x; i++)
-					for (j = 0; j < conn->screenbuffer.size_y; j++) {
-						d = get_field_at(&(conn->screenbuffer),i, j)->character;
-						if (d && d != ' ')
-							ipc_call_async_3(fb_info.phone, FB_PUTCHAR, d, j, i, NULL, NULL);
-					}
-
-				ipc_call_async_2(fb_info.phone, FB_CURSOR_GOTO, conn->screenbuffer.position_y, conn->screenbuffer.position_x, NULL, NULL); 
+					
+					for (i = 0; i < conn->screenbuffer.size_x; i++)
+						for (j = 0; j < conn->screenbuffer.size_y; j++) {
+							d = get_field_at(&(conn->screenbuffer),i, j)->character;
+							if (d && d != ' ')
+								ipc_call_async_3(fb_info.phone, FB_PUTCHAR, d, j, i, NULL, NULL);
+						}
+
+					ipc_call_async_2(fb_info.phone, FB_CURSOR_GOTO, conn->screenbuffer.position_y, conn->screenbuffer.position_x, NULL, NULL); 
+				}
 				ipc_call_async(fb_info.phone, FB_CURSOR_VISIBILITY, 1, NULL, NULL); 
 
@@ -327,4 +335,15 @@
 	}
 	
+	if ((interbuffer = mmap(NULL, sizeof(keyfield_t) * fb_info.cols * fb_info.rows , PROTO_READ|PROTO_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, 0 ,0 )) != NULL) {
+		if (ipc_call_sync_3(fb_info.phone, IPC_M_AS_AREA_SEND, (ipcarg_t)interbuffer, 0, AS_AREA_READ | AS_AREA_CACHEABLE, NULL, NULL, NULL) != 0) {
+//			ipc_call_async_3(fb_info.phone, FB_PUTCHAR, '?', 10, 10, NULL, NULL);
+			munmap(interbuffer, sizeof(keyfield_t) * fb_info.cols * fb_info.rows);
+			interbuffer = NULL;
+		}
+/*	} else {
+		ipc_call_async_3(fb_info.phone, FB_PUTCHAR, '!', 10, 10, NULL, NULL);
+*/
+	}
+	
 	async_new_connection(phonehash, 0, NULL, keyboard_events);
 	
