A. kon.cfg ¤Î½èÍý ¢£void ReadConfig(void) kon.cfg ¤ÎÆâÍƤϴؿô ReadConfig() ¤Ë¤è¤Ã¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£ ReadConfig() ¤Ï¥¨¥ó¥È¥ê̾¤È½é´ü²½´Ø¿ô¤ÎÂбþɽ¤ò¥µ¡¼¥Á¤·¤Æ¡¢Æɤ߹þ¤ó¤À¥¨¥ó¥È¥ê£±¤Ä£± ¤Ä¤Ë¤Ä¤¤¤ÆÂбþ¤¹¤ë½é´ü²½´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ Âбþɽ¤Ï°Ê²¼¤Î¹½Â¤ÂΤòÊ ¤Ù¤¿¤â¤Î¤Ç¤¹¡£ static struct capability { const char *name; ¥¨¥ó¥È¥ê̾ void (*func)(const char*); ½é´ü²½´Ø¿ô int initialized; ½é´ü²½¤¬½ª¤ì¤Ð 1 const char *def_value; ¥Ç¥Õ¥©¥ë¥ÈÃÍ¡£ NULL¤Ê¤éɬ¿Ü¥¨¥ó¥È¥ê }; ½èÍý´Ø¿ô¤Ï¥¨¥ó¥È¥êÃͤÎʸ»úÎó¤ò¼õ¤±¤È¤ê½é´ü²½½èÍý¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ kon.cfg ¤òÆɤ߽ª¤ë¤È¡¢½é´ü²½´Ø¿ô¤ò¸Æ¤Ó½Ð¤µ¤Ê¤«¤Ã¤¿¥¨¥ó¥È¥ê¤Ë¤Ä¤¤¤Æ¥Ç¥Õ¥© ¥ë¥ÈÃͤ¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¡¢ÀßÄꤵ¤ì¤Æ¤¤¤ì¤Ð¤½¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ¤Ç ½é´ü²½´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¡£ ¢£void DefineCap(const char *name, initializer *func, const char *def_value) ¿·¤¿¤Ê¥¨¥ó¥È¥ê¤ò½é´ü²½¥Æ¡¼¥Ö¥ë¤Ë²Ã¤¨¤Þ¤¹¡£ VGA ¥É¥é¥¤¥Ð¤À¤±¤Ï PELS ¥¨ ¥ó¥È¥ê¤òɬÍפȤ¹¤ë¤Î¤Ç¡¢¤³¤Î´Ø¿ô¤ò»È¤Ã¤Æɬ¿Ü¥¨¥ó¥È¥ê¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£ ¢£void DelCap(const char* name) Âбþɽ¤ÎÃæ¤Î¥¨¥ó¥È¥ê̾ name ¤Î½é´ü²½´Ø¿ô¤òºï½ü¤·¤Þ¤¹¡£ ºÆ½é´ü²½¤ÎºÝ¤Ë »È¤Ã¤Æ¤¤¤Þ¤¹¡£ B. ¥Ó¥Ç¥ª¥É¥é¥¤¥Ð¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ ¡ü¹½Â¤ÂÎ vInfo ¥Ó¥Ç¥ª¥É¥é¥¤¥Ð¤ËÂФ¹¤ëÁàºî¤Ï¤¹¤Ù¤Æ¹½Â¤ÂÎ vInfo ¤òÄ̤·¤Æ¹Ô¤Ê¤ï¤ì¤Þ¤¹¡£ struct videoInfo { bool has_hard_scroll; ¥Ï¡¼¥É¥¹¥¯¥í¡¼¥ë¤¬»È¤¨¤ë¤«¤É¤¦¤« void (*init)(void), ½é´ü²½ (*text_mode)(void), ¥Æ¥¥¹¥È¥â¡¼¥É¤ËÀÚÂؤ¨ (*graph_mode)(void), ¥°¥é¥Õ¥£¥Ã¥¯¥â¡¼¥É¤ËÀÚÂؤ¨ (*wput)(u_char *code, u_char fc, u_char bc), ´Á»ú½ÐÎÏ (*sput)(u_char *code, u_char fc, u_char bc), ANK½ÐÎÏ (*set_cursor_address)(struct cursorInfo *c, u_int x, u_int y), ¥«¡¼¥½¥ë c ¤Î¥¢¥É¥ì¥¹¤ò (x, y) ¤ËÀßÄê (*set_address)(u_int i),¼¡¤Ë½ñ¤¯Ê¸»ú¤Î¥¢¥É¥ì¥¹¤ò i ʸ»úÌܤËÀßÄê (*cursor)(bool), ¥«¡¼¥½¥ëon/off (*clear_all)(void), ²èÌÌ¥¯¥ê¥¢ (*screen_saver)(bool), ¥¹¥¯¥ê¡¼¥ó¥»¡¼¥Ð(TRUE¤Ç¥»¡¼¥Ö¡¢FALSE¤ÇÉüµ¢) /* ¥Ï¡¼¥É¥¹¥¯¥í¡¼¥ë¤¬»È¤¨¤Ê¤±¤ì¤Ð°Ê²¼¤ÏNULL */ (*set_start_address)(), ɽ¼¨³«»Ï¥¢¥É¥ì¥¹ÀßÄê (*hard_scroll_up)(int lines), ¥Ï¡¼¥É¥¹¥¯¥í¡¼¥ë¥¢¥Ã¥× (*hard_scroll_down)(int lines); ¥Ï¡¼¥É¥¹¥¯¥í¡¼¥ë¥À¥¦¥ó } vInfo; ¢£void ConfigDisplay(const char *config) ¥Ó¥Ç¥ª¥É¥é¥¤¥Ð¥¨¥ó¥È¥ê¤Î½é´ü²½´Ø¿ô ConfigDisplay() ¤Ï¡¢¥¨¥ó¥È¥êÃÍʸ»ú Îó config ¤ÎºÇ½é¤Î¹Ô¤ò¥¡¼¤È¤·¤Æ¥Ó¥Ç¥ª¥É¥é¥¤¥ÐÀßÄê´Ø¿ô¤òÁªÂò¤·¤Þ¤¹¡£ ¥Ó¥Ç¥ª¥É¥é¥¤¥ÐÀßÄê´Ø¿ô¤Ï dInfo ¤È vInfo ¤Ë¤½¤Î¥É¥é¥¤¥Ð¤ò»È¤¦¤¿¤á¤ÎÃͤò ÀßÄꤷ¤Þ¤¹¡£¤Þ¤¿¡¢VGA, VGAFM ¥É¥é¥¤¥Ð¤Î¾ì¹ç¤Ï¥ì¥¸¥¹¥¿Ãͤò config ʸ»ú Îó¤è¤êÆÀ¤Æ¥É¥é¥¤¥ÐÆâÉô¤ÎÊÑ¿ô¤Ëµ²±¤·¤Þ¤¹¡£