Á¦¸ñ : Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 2.0 [2] ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº linking ¿¡ ´ëÇؼ­ Á¶±Ý ¾Ë ¾Æº¸µµ·Ï ÇսôÙ. ¿ì¸®´Â VGA 16 color,Hercules,VGA 256 color ¿¡ ´ë ÇÑ ¶óÀ̺귯¸®¸¦ »ç¿ëÇϱâ À§Çؼ­ °¢°¢ÀÇ Àü¿ë ¶óÀ̺귯¸®¸¦ ¸¸µé´ø °¡,µå¶óÀ̹ö¸¦ »ç¿ëÇؼ­ ·ÎµåÇÏ´ø°¡,¾î´À µÎ°³Á¤µµ¸¦ ÇÔ¼ö Æ÷ÀÎÅÍ·Î Select ÇÒ ¼ö ÀÖµµ·Ï ¸¸µé°ï ÇÕ´Ï´Ù. Á¦°¡ Àú¹ø ¶óÀ̺귯¸® 1.0 ¿¡¼­ »ç¿ëÇß´ø ¹æ½ÄÀº VGA 16 color,Hercules ¸¦ µ¿½ÃÁö¿øÇϱâ À§Çؼ­ mode ¼³Á¤ ÇÁ·Î±×·¥¿¡¼­ Flag ¸¦ µÎ¾î¼­ ÇÔ¼ö Æ÷ÀÎÅÍ·Î Select ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï Çß¾úÀ¾´Ï´Ù. ÀÌ ¹æ¹ýÀÇ ¹®Á¦¸¦ µé¾î º¾½Ã´Ù. ¿ì¼± VGA ³ª Hercules Àü¿ëÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ¾øÀ¾´Ï´Ù. ÇÑÂÊ Àü¿ëÀÇ ÇÁ·Î±× ·¥À» ¸¸µå´Â ±âȸ°¡ ¸¹Àº °ÍÀº ¾Æ´ÏÁö¸¸ ÇÁ·Î±×·¡¸ÓÀÇ ÃëÇâ¿¡ °ü°è¾ø ÀÌ µÎÂÊ ´Ù ¸µÅ© µÈ´Ù´Â °ÍÀº º°·Î ±âºÐÁÁÀº ÀÏÀº ¾Æ´ÏÁÒ. ¶ÇÇϳªÀÇ ¹®Á¦´Â ¿¹¸¦ µé¾î ÀÌ ¶óÀ̺귯¸®¿¡ VGA 256 color ¿¡ ´ëÇÑ ³»¿ëÀ» Ãß °¡ÇØ¾ß ÇÑ´Ù°í ÇØ º¾½Ã´Ù. ¹°·Ð Flag ÀÇ °ªÀ» ´Ù¸£°Ô ÇÔÀ¸·Î½á Ãß°¡ÇÒ ¼öµµ ÀÖÀ¾´Ï´Ù. ±×·¯³ª ÀÌ ¹æ¹ýÀº ¾Õ¿¡¼­ ¸»ÇÑ´ë·Î VGA 16 color,Hercules ¸¸À» »ç¿ëÇÑ´Ù Çصµ VGA 256 color ·çƾ±îÁö ¸µÅ©µÇ¾î ¹ö¸®°í ¸¿´Ï´Ù. ¶ÇÇÑ ¶óÀ̺귯¸® ÀÚüµµ ²Ï ¸¹ÀÌ ¼öÁ¤ÇØ¾ß ÇÏÁÒ. ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¼±¾ðºÎºÐ¸¶´Ù VGA 256 color ¿¡ ´ëÇÑ ·çƾÀÇ ¼±¾ðÀ» Ãß°¡ÇØ ¾ß Çϴϱî¿ä. ¾à°£ ±Ø´ÜÀûÀÎ °æ¿ìÁö¸¸ ¶ÇÇϳªÀÇ ¿¹¸¦ µé¾îº¸ÁÒ. »ç¿ë ÀÚ°¡ ÇÑ±Û Ãâ·ÂÀ» ¿øÇϸ鼭 ±ÛÀÚ¼Ó¼ºº¯È­¸¦ ¸î°³ »ç¿ëÇÑ´Ù°í ÇØ º¾½Ã ´Ù. »ç¿ëÀÚ°¡ ¹ÝÀü,ȸ»ö,¹ØÁÙ ¸¸À» »ç¿ëÇÏ´Ù°í Çصµ ¾Æ¿ô¶óÀÎ,3D ±Û¾¾ µîÀÇ ·çƾÀÌ ¸µÅ©µÇ°í ¸¿´Ï´Ù. ¸¶¶¥È÷ ÃÖ¼±ÀÇ ¼±ÅÃÀ̶ó¸é ¹ÝÀü,ȸ»ö, ¹ØÁÙ¿¡ ÇØ´çÇÏ´Â ·çƾ¸¸ÀÌ ¸µÅ©µÇ¾î¾ß ÇÏ´Â °ÍÀÔ´Ï´Ù. ´Ü ÀÌ°ÍÀÇ ¸µÅ© ¿©ºÎ´Â ÄÄÆÄÀϽÃÀÇ ½Éº¼Á¤ÀÇ·Î °áÁ¤µÇ¹Ç·Î »ç¿ëÀÚ°¡ ¸µÅ© ¿©ºÎ¸¦ °áÁ¤ Çϱâ À§Çؼ­´Â ½Éº¼À» »ç¿ëÀÚ°¡ Á¤ÇØÁÙ ÇÊ¿ä°¡ ÀÖ´Â °ÍÀÔ´Ï´Ù.À̸¦ ÇØ °áÇÒ ¼ö ÀÖ´Ù¸é ¶óÀ̺귯¸®´Â ¸Å¿ì ¼¼¼¼ÇÑ Á¦¾î°¡ °¡´ÉÇØÁý´Ï´Ù. ÇÏÁö ¸¸ ÀÌ·¸°Ô ¼¼¼¼ÇÑ Á¦¾î¸¦ °¡´ÉÇÏ°Ô ÇÏ·Á¸é ´Ü¼øÇÑ ÀÛ¾÷ÀÌ ¸Å¿ì Èûµé¾î Áö°Ô ¸¶·ÃÀÔ´Ï´Ù. ¿ø·¡ Æí¸®ÇÏ´Ù´Â °Í°ú ¼¼¼¼ÇÑ Á¦¾î´Â °ÅÀÇ ¹Ý´ëµÇ´Â °³³äÀÌÁÒ. Assembly ¿Í °í±Þ¾ð¾î¸¦ ºñ±³ÇØ º¸¸é ¾Ë ¼ö ÀÖÀ¾´Ï´Ù. ¿©±â ¼­´Â ¼¼¼¼ÇÑ Á¦¾î¸¦ °¡´ÉÇÏ°Ô ÇÏ´Â ¹æ¹ýÀ» ¸ÕÀú ¾Ë¾Æ º¾½Ã´Ù. ¿ì¼± Àü¿ªÇÔ¼ö Æ÷ÀÎÅÍ medi °¡ ÀÖ´Ù°í ÇսôÙ. ÇÔ¼ö Æ÷ÀÎÅÍÀ̹ǷΠÆ÷ ÀÎÅÍ°¡ Â÷ÁöÇÏ´Â ¸¸Å­ÀÇ ¿µ¿ª¸¸À» Â÷ÁöÇÕ´Ï´Ù. À̶§ ÇÔ¼ö a,b,c Áß ÇÏ ³ª¸¦ Select ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á¸é ÇÔ¼ö Æ÷ÀÎÅÍ medi ¿¡ a,b,c Áß Çϳª¸¦ ´ëÀÔÇØ¾ß ÇÕ´Ï´Ù. ±âÁ¸¿¡´Â ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¹è¿­À» ¼±¾ðÇÏ¿© ´Ù À½°ú °°ÀÌ Çß¾úÀ¾´Ï´Ù. void (*medi[3])()={ a,b,c }; /* ¼±¾ð */ . . (*medi[FLAG](); /* ½ÇÇà */ FLAG ÀÇ °ªÀÌ 0,1,2 ·Î ¹Ù²ñ¿¡ µû¶ó a,b,c Áß Çϳª°¡ ½ÇÇàµË´Ï´Ù. ÀÌ ¹æ¹ýÀº ¹°·Ð È¿°úÀûÀÌÁö¸¸ ´ÙÀ½ÀÇ ¹æ¹ý°ú ºñ±³ÇØ º¾½Ã´Ù. void (*medi)(); void Enable(void (*f)()) { medi=f; } ¸¸ÀÏ »ç¿ëÀÚ°¡ Enable(&a); ÇÑ´ÙÀ½¿¡ (*medi)(); ÇÏ°í ½ÇÇàÇϸé a ¸¸ ÀÌ ¸µÅ©,½ÇÇàµÇ°í Enable(&b); ÇÑÈÄ¿¡ (*medi)(); ÇÏ°í ½ÇÇàÇϸé b ¸¸ ÀÌ ¸µÅ©,½ÇÇàµË´Ï´Ù. c µµ ¸¶Âù°¡ÁöÁÒ. ÀÌ ¹æ¹ýÀÇ ÀåÁ¡Àº a,b,c Áß ¾î ´ÀÇϳª,¶Ç´Â µÎ°³,¼¼°³¸¦ ¼±Åà ¸µÅ©ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. Áï ¿øÇÏ´Â ºÎºÐ¸¸À» ¸µÅ©ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ´ÜÁ¡À̶ó¸é Enable ÇÔ¼ö°¡ ¸Å ÇÔ¼ö¸¶´Ù µû¶ó´Ù³à¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª ÀÌ ¹æ¹ýÀ» ÅëÇؼ­ »ç¿ëÀÚ´Â ¶óÀ̺귯¸®¸¦ ÀÚ½ÅÀÇ ±âÈ£¿¡ ¸ÂÃß¾î ´Ù½Ã µð ÀÚÀÎ ÇÒ ¼ö ÀÖÀ¾´Ï´Ù. µû¶ó¼­ ÀÚ½ÅÀÌ ÁÁ¾ÆÇÏ´Â Enable ÇÔ¼öÀÇ Á¶ÇÕÀ» ¸ð¾Æ¼­ ÇÔ¼öÇϳª¿¡ ÇØ µÎ¸é ±× ÇÔ¼ö Çϳª¸¦ È£ÃâÇÔÀ¸·Î½á ¸¸»ç OK! ÀÔ ´Ï´Ù. Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 2.0 ¿¡¼­´Â ÀÏ´Ü °ÅÀÇ ¸ðµç ÇÔ¼ö¿¡ ´ë Çؼ­ Enable ÇÔ¼ö¸¦ µÎ°í Quick ¶óÀ̺귯¸®¸¦ µû·Î µÎ¾î¼­ ±âÈ£¿¡ ¸Â Ãâ ¼ö ÀÖ´Â ÇÔ¼öµéÀ» µû·Î µÎ·Á°í ÇÕ´Ï´Ù. (¿¹Á¤) Áö±ÝÀº Enable ÇÔ¼ö ´öºÐ(?) ¿¡ ´Ù¼Ò »ç¿ë¹ýÀÌ º¹ÀâÇϱ⠶§¹®¿¡ °ø°³Çϱ⿡´Â ¹«Ã´À̳ª ÀÌ ¸£´Ù°í ÇÒ ¼ö ÀÖ°ÚÁÒ. ÀӽùöÁ¯ 1.5 ¸¦ ³»º¼±îµµ »ý°¢ÇÏ°ï ÀÖÁö¸¸..ÂÁ ÂÁ.. ±ÛÀÚ ¼Ó¼º¿¡ ´ëÇÑ °Íµµ »ý°¢ÇØ º¼±î¿ä.. ±ÛÀÚ ¼Ó¼ºÀº ±âº»ÀûÀ¸·Î // attribute #define NORMAL 1 #define REVERSE 2 #define DIM 4 #define SHADOW 8 #define THREED 16 #define OUTLINE 32 #define UNDER 64 #define BOLD 128 ÀÇ 8 °³°¡ Áö¿øµË´Ï´Ù. 2.0 ¿¡¼­´Â À̸¦ Attribute byte ( 8 bit ) ¿¡ ¸ð¾Æ¼­ °ü¸®ÇÏ°í ÀÖÀ¾´Ï´Ù. º¸Á¸À» À§Çؼ­´Â hgGetAttr ÇÔ¼ö¿¡ ÀÇÇؼ­ char ÇüÀÇ 1 ¹ÙÀÌÆ®¸¦ º¸Á¸ÇÏ¸é µÇÁÒ. º¹±Í´Â hgSetAttr ÇÔ¼ö¿¡ ÀÇÇØ ¼­ ÇÏ¸é µÇ°í.. ÀÌ ±ÛÀÚ ¼Ó¼ºÁß ÇÊ¿äÇÑ °ÍÀ» ¹Ì¸® ¼³Á¤ÇØ µÎ°í ±× ·ç ƾ¸¸ ¸µÅ©ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» »ý°¢ÇØ º¾½Ã´Ù. ¿ì¼± ±ÛÀÚ¼Ó¼ºº¯È¯À» À§ÇÑ ÇÔ¼öµéÀÇ Çü½ÄÀ» »ìÆ캾½Ã´Ù. ¹ÝÀüÇÔ¼öÀÇ °æ¿ì void Reverse_Img(char *dest,int bytes); ó·³ µË´Ï´Ù. °ð dest ¶ó´Â buff ¿¡ byte ¸¸Å­À» ¹ÝÀüÇÏ¸é µÇ´Âµ¥ bytes ´Â ÇѱÛÀÏ °æ¿ì 32,¿µ¹®ÀÏ °æ¿ì 16 ÀÌ µË´Ï´Ù. ±×·³ ÀÏ´Ü ÀÌ Çü ½ÄÀÇ ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¹è¿­À» 8 °³ ¼±¾ðÇÕ´Ï´Ù. void (*afunc[7])(char *dest,int bytes)= { attr_null,attr_null,attr_null,attr_null, attr_null,attr_null,attr_null }; attr_null ÇÔ¼ö´Â »ç¿ëÀÚÀÇ ½Ç¼ö·Î ¼Ó¼ºÀ» Enable Çϱâ Àü¿¡ ½ÇÇà½ÃÄ× À» °æ¿ì ¾Æ¹« Àϵµ ÇÏÁö ¾Êµµ·Ï ÇØ ÁÖ´Â ¿¡·¯ ´ëºñ ÇÔ¼öÀÔ´Ï´Ù. ´ÙÀ½ °ú °°ÀÌ ¾Æ¹« Äڵ嵵 ¾øÀ¾´Ï´Ù. void attr_null(char *dest,int bytes) // null function { bytes&=dest[0]; // I hate warning!! } ÇÑ ¹®ÀåÀÇ Äڵ尡 Àִµ¥ ¹°·Ð dummy ¹®ÀåÀÔ´Ï´Ù. ÄÄÆÄÀϽà warning À» º¸±â ½È¾î¼­ ³Ö¾úÀ¾´Ï´Ù. ±×·¸´Ù¸é ÀÌÁ¦ Enable ÇÔ¼ö¸¦ »ìÆ캾½Ã´Ù. Enable ÇÔ¼öÀÇ ÀÎÀÚ·Î ÇÊ¿ä ÇÑ °ÍÀº ÇÔ¼öÆ÷ÀÎÅ͹迭¿¡ ´ëÀÔÇÒ ÇÔ¼öÀÇ Æ÷ÀÎÅÍ¿Í ÇÔ¼öÆ÷ÀÎÅ͹迭ÀÇ ÀÎÀÚÀÔ´Ï´Ù. µû¶ó¼­ ´ÙÀ½°ú °°Àº Çü½ÄÀ» °ÍÀÔ´Ï´Ù. void hgEnableAttr(void (*func)(char *dest,int bytes),int n) { afunc[n]=func; } ±×·³ ¼Ó¼ºÀ» À§ÇØ ¹Ì¸® ¼³Á¤Çϱâ À§Çؼ­´Â ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä. ¿ì¼± ¾Æ·¡ÀÇ define À» º¸°í ¼³¸íÇÏ°ÚÀ¾´Ï´Ù. // attribute enable function #define fNORMAL &attr_null ,0 #define fREVERSE &Reverse_Img,0 #define fDIM &Dim_Img ,1 #define fSHADOW &Shadow_Img ,2 #define fTHREED &ThreeD_Img ,3 #define fOUTLINE &Outline_Img,4 #define fBOLD &Bold_Img ,5 #define fUNDER &Under_Img ,6 ±×·¸½À´Ï´Ù. »ç¿ëÀÚ´Â hgEnableAttr(fREVERSE); ÇÏ°í Enable ½ÃÅ°¸é hgEnableAttr(&Reverse_Img,0); À¸·Î ¹Ù²î¾îÁö°í afunc[0] ¿¡´Â Reverse_Img ·çƾÀÌ ºñ·Î¼Ò ´ëÀÔµÇ°Ô µË´Ï´Ù. ÀÌ·±½ÄÀ¸ ·Î Enable µÇ¾î¾ß¸¸ Symbol ·Î Æò°¡µÇ°Ô µÇ°í Reverse_Img ·çƾÀÌ ¸µ Å©½Ã ¸µÅ©µÇ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ½ÇÇàÀº (*afunc[n])(dest,bytes); ÇÏ¸é µË´Ï´Ù. ÀÌ ÇÔ¼ö¸¦ ´ëÇàÇϱâ À§Çؼ­ ´Ù¸¥ ÇÔ¼ö Çϳª¸¦ ¸¸µé¾ú´Â µ¥ ´ÙÀ½°ú °°½À´Ï´Ù. void hgDoAttr(char *dest,int bytes,int n) { (*afunc[n])(dest,bytes); } n ÀÇ °ªÀº ÇѱÛÀ϶§ 32,¿µ¹®À϶§ 16 À̹ǷΠÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. ±×·¸´Ù ¸é Ãâ·Â·çƾ¿¡¼­ ¼Ó¼ºÃ³¸®·çƾÀ» ¾î¶»°Ô ó¸®ÇÏ°í ÀÖ´ÂÁö Àá±ñ ¾Ë¾Æº¾ ½Ã´Ù. void attribute_process(char *dest,int bytes) { char attr; if (bytes==16) attr=hgGetEAttr(); else attr=hgGetHAttr(); if (attr & REVERSE) hgDoAttr(dest,bytes,0); if (attr & DIM ) hgDoAttr(dest,bytes,1); if (attr & SHADOW ) hgDoAttr(dest,bytes,2); if (attr & THREED ) hgDoAttr(dest,bytes,3); if (attr & OUTLINE) hgDoAttr(dest,bytes,4); if (attr & BOLD ) hgDoAttr(dest,bytes,5); if (attr & UNDER ) hgDoAttr(dest,bytes,6); } hgDoAttr ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ¼Ó¼ºÀÇ ´ÙÁß Ã³¸®±îÁö °¡´ÉÇØÁú»Ó¸¸ ¾Æ ´Ï¶ó ¼±ÅøµÅ©°¡ °¡´ÉÇØ Áý´Ï´Ù. ´Ü ¹Ì¸® ¼³Á¤ÇØÁÖ¾î¾ß ÇÏ´Â Enable ÇÔ¼ö°¡ Á¶±Ý ±ÍÂúÀ» ¼öµµ Àִµ¥ .. ÀÌ¿¡ ´ëÇؼ­´Â À¯Æ¿¸®Æ¼ Çϳª¸¦ ÀÛ¼ºÇÏ·Á°í ÇÕ´Ï´Ù. °ð Enable ÇÔ¼öµéÀ» ¹Ì¸® ¸ð¾Æ¼­ ÇÔ¼öÇϳª¸¦ ¸¸µé ¾î ÁÖ´Â À¯Æ¿¸®Æ¼¸¦ ¸¸µå´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ¼¼¼¼ÇÑ ÇÔ¼öÀÇ Á¤¸®°¡ ³¡³­´ÙÀ½¿¡ ¸¸µé¾î Áú °ÍÀÔ´Ï´Ù. Ȥ½Ã ÀÌ ±ÛÀ» ÀÐÀ¸½Ã´Â ºÐ²²¼­´Â ÀÌ ·¸°Ô ¼¼¼¼ÇÑ ÇÔ¼öÀÇ ¸µÅ© Á¦¾î°¡ Æí¸®ÇÔÀ» ÀÒ°Ô ÇÏ´Â ¿Ü¿¡ ¾î¶² ¿ªÇÒ À» ÇÒ ¼ö ÀÖ°Ú´À³Ä°í ÇϽÇÁö ¸ð¸£Áö¸¸ ±â´ÉÀÇ Ãß°¡,È®ÀåµîÀÌ °¡Àå ÀÚ À¯·Î¿î ¹æ¹ýÀÌ°í ÇÑ ¶óÀ̺귯¸®¸¦ ¿©·¯°¡Áö ±â´ÉÀÇ ¶óÀ̺귯¸®·Î º¯¸ð ½Ãų ¼ö ÀÖ´Â ¹æ¹ýÀÌ µÉ ¼ö ÀÖÀ¾´Ï´Ù. ¶ÇÇÑ ÀÛÀº ºÎºÐµéÀÌ ¸ð¿©¼­ µ¢ Ä¡¸¸ Å« ÇÁ·Î±×·¥ÀÌ µÈ´Ù´Â °ÍÀ» °¨¾ÈÇÑ´Ù¸é ÇÁ·Î±×·¥ÀÇ Size µµ Àß »ý°¢ÇØ º¼ ¸¸ ÇÕ´Ï´Ù. ±×·³ ¸µÅ©¿¡ ´ëÇÑ °­Á´ ÀÌÂë Çصαâ·Î ÇÏÁÒ. ´ÙÀ½ °­Á´ ±âº»ÀûÀÎ ±×·¡ÇÈ ·çƾ¿¡ ´ëÇÑ °ÍÀÌ µÉ °Í °°³×¿ä. ÆùÆ®¿¡ ´ëÇÑ °ÍÀÌ µÉ Áöµµ ¸ð¸£°í¿ä.. ¸¶À½ ³»Å°´Â ´ë·Î ±ÛÀ» ¾²°í ÀÖÀ¸´Ï ÀÌ Á¤µµ´Â Âü¾ÆÁֽðÚÁÒ ? ¼ö¾÷½Ã°£Ç¥Ã³·³ ½Ã°£¸ÂÃß¾î ÇÏ´Â °ÍÀ» Àú´Â º° ·Î ÁÁ¾ÆÇÏÁö ¾Ê¾Æ¼­¿ä.