+}
+
+void proc_demo(void)
+{
+ extern void proc_test(void);
+// FIXME: proc_test() cause segmentation fault.
+ proc_test();
+}
+
+
+/* SETTINGS SUBMENU */
+
+static struct MenuItem settings_items[] =
+{
+ { (const_iptr_t)"System", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Language", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Networking", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Date & Time",0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Power Saving", MIF_TOGGLE, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+static struct Menu settings_menu = { settings_items, "Settings Menu", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 };
+
+
+/* MX SUBMENU */
+
+static struct MenuItem mx_items[] =
+{
+ { (const_iptr_t)"Mouse", MIF_CHECKIT | MIF_EXCLUDE_1 | MIF_EXCLUDE_2, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Keyboard", MIF_CHECKED | MIF_CHECKIT | MIF_EXCLUDE_0 | MIF_EXCLUDE_2, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Joystick", MIF_CHECKIT | MIF_EXCLUDE_0 | MIF_EXCLUDE_1, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Autosave", MIF_CHECKED | MIF_CHECKIT | MIF_TOGGLE, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+
+static struct Menu mx_menu = { mx_items, (const_iptr_t)0, MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 };
+
+
+/* DISPLAY SUBMENU */
+
+static struct MenuItem display_items[] =
+{
+ { (const_iptr_t)"Background", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Colors", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Style", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)"Icon Theme", 0, (MenuHook)0, (iptr_t)0 },
+ { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+static struct Menu display_menu = { display_items, "Display Menu", MF_SAVESEL, &lcd_bitmap, 0 };
+
+
+/* MAIN MENU */
+
+static struct MenuItem main_items[] =
+{
+ { (const_iptr_t)"Win Fly", 0, (MenuHook)win_demo, (iptr_t)&lcd_bitmap },
+ { (const_iptr_t)"Bounce!", 0, (MenuHook)bouncing_logo,(iptr_t)&lcd_bitmap },
+ { (const_iptr_t)"Hello World", 0, (MenuHook)hello_world, (iptr_t)&lcd_bitmap },
+ { (const_iptr_t)"Scheduling", 0, (MenuHook)proc_demo, (iptr_t)&lcd_bitmap },
+ { (const_iptr_t)"Menu MX", 0, (MenuHook)menu_handle, (iptr_t)&mx_menu },
+ { (const_iptr_t)"Display", 0, (MenuHook)menu_handle, (iptr_t)&display_menu },
+ { (const_iptr_t)"Settings", 0, (MenuHook)menu_handle, (iptr_t)&settings_menu },
+ { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+static struct Menu main_menu = { main_items, "Main Menu", MF_STICKY, &lcd_bitmap, 0 };
+
+
+int main(int argc, char *argv[])
+{
+ emul_init(&argc, argv);
+ timer_init();
+ buz_init();
+ kbd_init();
+ lcd_init();
+ proc_init();
+
+ menu_handle(&main_menu);