Start work on UART driver

This is incomplete and not working (tested in MAME only so far)
diff --git a/contiki-vsmile/Makefile b/contiki-vsmile/Makefile
index 9c42d1e..b0113fb 100644
--- a/contiki-vsmile/Makefile
+++ b/contiki-vsmile/Makefile
@@ -1,6 +1,6 @@
 #####################################################################
 #																	 
-#	Created by u'nSP IDE V4.0.0		21:22:21	09/21/21
+#	Created by u'nSP IDE V4.0.0		22:11:18	09/21/21
 #
 #####################################################################
 
diff --git a/contiki-vsmile/contiki-vsmile.lik b/contiki-vsmile/contiki-vsmile.lik
index 1889c91..7506b01 100644
--- a/contiki-vsmile/contiki-vsmile.lik
+++ b/contiki-vsmile/contiki-vsmile.lik
@@ -33,45 +33,43 @@
 ;Align: IRAM in "arg.obj" with 0 
 ;Locate: IRAM in "conio.obj" at A086  linkat 187 
 ;Align: IRAM in "conio.obj" with 0 
-;Locate: IRAM in "ctk-arch.obj" at AC89  linkat D8A 
-;Align: IRAM in "ctk-arch.obj" with 0 
-;Locate: IRAM in "petsciiconv.obj" at AC8A  linkat D8B 
+;Locate: IRAM in "petsciiconv.obj" at AC89  linkat D8A 
 ;Align: IRAM in "petsciiconv.obj" with 0 
-;Locate: IRAM in "program-handler.obj" at AD0D  linkat E0E 
+;Locate: IRAM in "program-handler.obj" at AD0C  linkat E0D 
 ;Align: IRAM in "program-handler.obj" with 0 
-;Locate: IRAM in "about.obj" at AD3A  linkat E3B 
+;Locate: IRAM in "about.obj" at AD39  linkat E3A 
 ;Align: IRAM in "about.obj" with 0 
-;Locate: IRAM in "welcome.obj" at ADDA  linkat EDB 
+;Locate: IRAM in "welcome.obj" at ADD9  linkat EDA 
 ;Align: IRAM in "welcome.obj" with 0 
 ;Locate: CODE in "contiki-main.obj" at 9E6B 
 ;Align: CODE in "contiki-main.obj" with 0 
-;Locate: CODE in "strncmp.obj" at 9BFF 
+;Locate: CODE in "strncmp.obj" at 9C03 
 ;Align: CODE in "strncmp.obj" with 0 
 ;Locate: CODE in "ctk.obj" at 829B 
 ;Align: CODE in "ctk.obj" with 0 
 ;Locate: CODE in "ctk-conio.obj" at 8DE5 
 ;Align: CODE in "ctk-conio.obj" with 0 
-;Locate: CODE in "ek.obj" at 9727 
+;Locate: CODE in "ek.obj" at 972B 
 ;Align: CODE in "ek.obj" with 0 
-;Locate: CODE in "ek-service.obj" at 9C8A 
+;Locate: CODE in "ek-service.obj" at 9C8E 
 ;Align: CODE in "ek-service.obj" with 0 
 ;Locate: CODE in "arg.obj" at 9ED5 
 ;Align: CODE in "arg.obj" with 0 
 ;Locate: CODE in "conio.obj" at 9465 
 ;Align: CODE in "conio.obj" with 0 
-;Locate: CODE in "ctk-arch.obj" at 9E15 
+;Locate: CODE in "ctk-arch.obj" at 9E19 
 ;Align: CODE in "ctk-arch.obj" with 0 
-;Locate: CODE in "timer.obj" at 9D10 
+;Locate: CODE in "timer.obj" at 9D14 
 ;Align: CODE in "timer.obj" with 0 
-;Locate: CODE in "petsciiconv.obj" at 9D94 
+;Locate: CODE in "petsciiconv.obj" at 9D98 
 ;Align: CODE in "petsciiconv.obj" with 0 
-;Locate: CODE in "program-handler.obj" at 9ABC 
+;Locate: CODE in "program-handler.obj" at 9AC0 
 ;Align: CODE in "program-handler.obj" with 0 
 ;Locate: about_init_ptsec in "about-dsc.obj" at 8299 
 ;Align: about_init_ptsec in "about-dsc.obj" with 0 
-;Locate: CODE in "about.obj" at 99E0 
+;Locate: CODE in "about.obj" at 99E4 
 ;Align: CODE in "about.obj" with 0 
-;Locate: CODE in "welcome.obj" at 9B67 
+;Locate: CODE in "welcome.obj" at 9B6B 
 ;Align: CODE in "welcome.obj" with 0 
 ;Locate: __sn_section_RES_FONT_BIN in "font_bin.res" at AE40 
 ;Locate: CODE in "_GPTag" of "CMacro1016.lib"  at 9EFF 
diff --git a/contiki-vsmile/ctk/conio.c b/contiki-vsmile/ctk/conio.c
index 63f1354..6125f36 100644
--- a/contiki-vsmile/ctk/conio.c
+++ b/contiki-vsmile/ctk/conio.c
@@ -63,6 +63,16 @@
 
 	static volatile int* const PPU_SPRITE_CTRL = 0x2842;
 	static volatile int* const PPU_COLOR = 0x2B00;
+	
+	volatile unsigned int* const UART_CONTROL = 0x3D30;
+	volatile unsigned int* const UART_BAUDRATE_LOW = 0x3D33;
+	volatile unsigned int* const UART_BAUDRATE_HIGH = 0x3D34;
+
+	volatile unsigned int* const PORTC_DATA = 0x3D3B;
+	volatile unsigned int* const PORTC_DIR = 0x3D3D;
+	volatile unsigned int* const PORTC_ATTR = 0x3D3E;
+	volatile unsigned int* const PORTC_SPECIAL = 0x3D3F;
+	
 	int i;
 
 	*PPU_BG1_SCROLL_X = 0;
@@ -124,18 +134,16 @@
 	PPU_COLOR[129+112] = make_color(12, 12, 12); // Focused widget
 	PPU_COLOR[128+112] = make_color(24, 24, 24);
 	
-	PPU_COLOR[0] = make_color(0, 0, 0); // Border
-	PPU_COLOR[1] = make_color(18, 18, 31); // Screen
-	PPU_COLOR[3] = make_color(31, 31, 31); // Menu
-	PPU_COLOR[4] = make_color(31, 15, 15); // Active menu item
-	PPU_COLOR[5] = make_color(30, 30, 30); // Dialogs
-	PPU_COLOR[6] = make_color(12, 12, 31); // Hyperlinks
-	PPU_COLOR[7] = make_color(24, 24, 31); // Moving window
-	PPU_COLOR[8] = make_color(24, 24, 24); // Inactive window
+	// Enable Uart RX (controller input)
+	*UART_BAUDRATE_LOW = 0xA0;
+	*UART_BAUDRATE_HIGH = 0xFE;
+	*UART_CONTROL = 1 << 6;
 	
-	PPU_COLOR[2+16] = make_color(31, 31, 31);
-	PPU_COLOR[6+16] = make_color(0, 0, 31);
-	PPU_COLOR[7+16] = make_color(31, 0, 31);
+	// Enable controller CTS
+	*PORTC_DIR = 1 << 8;
+	*PORTC_ATTR = 1 << 8;
+	*PORTC_SPECIAL = 3 << 13; // UART Tx and Rx in "special" mode
+	*PORTC_DATA = 1 << 8;
 }
 
 /*-----------------------------------------------------------------------------------*/
diff --git a/contiki-vsmile/ctk/ctk-arch.c b/contiki-vsmile/ctk/ctk-arch.c
index ff60d17..0ab5a3f 100644
--- a/contiki-vsmile/ctk/ctk-arch.c
+++ b/contiki-vsmile/ctk/ctk-arch.c
@@ -11,12 +11,15 @@
 ctk_arch_key_t
 ctk_arch_getkey(void)
 {
-    return 0;
+	volatile unsigned int* const UART_RX = 0x3D36;
+    return *UART_RX;
 }
 
 unsigned char kbhit(void)
 {
-	return 0;
+	volatile unsigned int* const UART_STATUS = 0x3D31;
+	
+	return *UART_STATUS & 1;
 }
 
 #if 0