Á¦¸ñ : Ç㸣¸¶ ÇÑ±Û ¶óÀ̺귯¸® 2.0 [1] À¹..Ç㸣¸¶.. ¾È³çÇϼ¼¿ä Ç㸣¹Ó´Ï´Ù. »õ·Î¿î ÇÑ±Û ¶óÀ̺귯¸®¸¦ ±¸ÃàÇÔ¿¡ À־ °¡Àå ±âº»ÀÌ µÇ´Â °ÍÀº µµÆ®´ÜÀ§ Ãâ·Â ¸ðµâÀÔ´Ï´Ù. »ç½Ç ²À µµÆ®´ÜÀ§·Î µÇ¾î¾ß ÇÏ´Â °ÍÀº ¾Æ ´ÏÁö¸¸ ¹ÙÀÌÆ®´ÜÀ§ÀÇ ÇÑ±Û ¶óÀ̺귯¸®µéÀº °ø°³¿ëµµ ÈǸ¢ÇÑ °ÍÀÌ ¸¹ ÀÌ ³ª¿ÍÀÖ°í ¶ÇÇÑ ¼±ÅÃÀÇ ÆøÀÌ ³Ð±â ¶§¹®¿¡ ¿©±â¼­´Â µµÆ®´ÜÀ§ÀÇ ±¸ ÇöÀ» À§ÇØ ÇÊ¿äÇÑ °ÍÀ» »ìÆ캸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. À½.. ¿¹ÀüÀÇ °­Á¸¦ Âß »ìÆ캸¸é ÇÑ±Û Ãâ·Â·çƾÀ» ±¸»óÇÔ¿¡ À־ ¼¼¹øÀΰ¡ÀÇ °­Á¸¦ Çß À» °Ì´Ï´Ù. »ç½Ç ÇÑ±Û Ãâ·Â·çƾÀ» ±¸ÇöÇÏ´Â µ¥´Â ¸î°¡Áö ´Ü°è°¡ ÀÖÀ¾ ´Ï´Ù. ±× ù°°¡ ÆùÆ®ÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î ÇÑ±Û 16x16 , ¿µ¹® 8x16 Æù Æ®¸¦ ¾²°í Àֱ⠶§¹®¿¡ À̸¦ ´Ù·ê¼ö ÀÖ¾î¾ß ÇÏ°í..¶Ç ³»Àå ÆùÆ®,È­ÀÏ ÆùÆ®µîÀ» ¾²´Â ¹æ¹ýÀ» ±¸Ã¼È­ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇϳª´Â Ãâ·Â·çƾ ÀÚüÀÌ °í.. ÀÌ°Í¿¡´Â ÇÑ±Û ÄÚµå º¯È¯ (»ó¿ëÁ¶ÇÕÇüÀ» »ç¿ëÇÒ °ÍÀÔ´Ï´Ù. ¿Ï¼º ÇüÀ» Áö¿øÇÒ °èȹÀº ÀüÇô ¾øÀ¾´Ï´Ù.) ÀÌ Æ÷ÇԵǾî ÀÖÀ¾´Ï´Ù. À½..¶Ç Çϳª´Â ½ÇÁ¦·Î ±×·¡ÇÈ È­¸é¿¡ »Ñ¸®±â À§ÇÑ ·çƾÀÔ´Ï´Ù. ¿©±â¼­´Â ÆùÆ® ¿¡ ´ëÇÑ ³»¿ëÀº ´ÙÀ½ °­Á·Π³Ñ±â±â·Î ÇÏ°í ÇÑ±Û ÄÚµå º¯È¯Àº Àú¹ø °­ Á¿¡ ÃæºÐÈ÷ ¼³¸íµÇ¾î ÀÖÀ¸¹Ç·Î ÇÑ±Û Ãâ·Â ·çƾÀ» Á¶±Ý º»ÈÄ °ð¹Ù·Î ±×·¡ÇÈ È­¸é¿¡ »Ñ¸®´Â ·çƾÀ» »ìÆ캸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. Áö°ã°Ô »ìÆ캸´Â ÇÑ±Û Ãâ·Â ·çƾÀ» Á¶±Ý Á¤¸®ÇßÀ¾´Ï´Ù. ÀüÀÇ °­Á¸¦ Review ÇÏ´Â °Íµµ µÉÅ×´Ï ½½Â½ ºÁµÎ¼¼¿ä. void hgOutTextXy(int x,int y,char *str) { int pos=0; // string position _xpos=x; _ypos=y; while (str[pos]!=0) { if (str[pos]=='t') { _xpos=_xpos+(_xpos%8); pos++; } else if (str[pos]&0x80) { hangul_process(str,pos); pos+=2; } else { english_process(str,pos); pos++; } }; } ´Ù¼Ò ±ò²ûÇØÁø µíÇÑ ¸ð¾çÀÔ´Ï´Ù. string À» ºÐ¼®Çؼ­ 0 (Null) À϶§±î Áö ÇÑÀÚ ÇÑÀÚ Ãâ·ÂÇØÁÝ´Ï´Ù. ´Ü ½ºÆ®¸µ Áß¿¡ n °¡ µé¾î°¡´Â °æ¿ì´Â ÀÏ´Ü Á¦¿ÜÇØ ³õ¾ÒÀ¾´Ï´Ù. t (Tab) Àº ó¸®ÇÏ°í ÀÖÁÒ. ±×·¸´Ù¸é hangul_process ¶û english_process °¡ ³²¾Ò´Âµ¥. ÀÌ°Í¿¡ ´ëÇÑ ¼³¸í Àº »ý·«ÇÕ´Ï´Ù. Àú¹ø°­Á¶û °ãÄ¡´Â ºÎºÐÀÌ ³Ê¹« ¸¹°Åµç¿ä. hangul_process ¿¡¼­´Â str[pos],str[pos+1] À» ¸ð¾Æ¼­ ÇÑ±Û ÇÑÀÚ¸¦ Ãâ·ÂÇØ ÁÖ°í,english_process ¿¡¼­´Â str[pos] ÀÇ ¿µ¹®À» Ãâ·ÂÇØ ÁØ ´Ù´Â °Í¸¸ ±â¾ïÇØ µÎ½Ã¸é ÃæºÐÇÕ´Ï´Ù. ±×·¸´Ù¸é ÀÌÁ¦ Ãâ·Â ·çƾÀ» »ì Æ캾½Ã´Ù. ÇÏÁö¸¸ Ãâ·Â ·çƾÀº ¾ÆÁ÷ VGA Àü¿ë¹Û¿¡ ¾ø±â¶§¹®¿¡ VGA ¿ë ¸¸ ¼Ò°³ÇÕ´Ï´Ù. Hercules ¾²½Ã´Â ºÐ²²´Â Á˼ÛÇÏ´Ù´Â ¸»¹Û¿¡..ÂÁ..±× ·¡µµ ¿ø¸®´Â Â÷ÀÌ°¡ ¾øÀ¸¹Ç·Î °ð Conversion ÇÒ ¼ö ÀÖÀ» °Ì´Ï´Ù. ±× ·³ ÇÔ¼öÀÇ Çü½ÄÀ» º¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. (int x,int y,char *buff,char color); Àº VGA ÇÑ±Û ÇÑÀÚ¸¦ Ãâ·ÂÇÏ´Â ¸ðµâÀº vputchh,¿µ¹®Àº vputche,Hercules ÀÇ °æ¿ì °¢°¢ hputchh,hputche ÀÔ´Ï´Ù. buff ´Â 16 ¹ÙÀÌÆ® ȤÀº 32 ¹ÙÀÌÆ® ÆùÆ® ¹öÆÛÀÌ°í,, color ´Â 0~15 ±îÁöÀÇ °ªÀ» °¡Áö´Â Ä÷¯°ªÀÔ´Ï´Ù. x,y ´Â ¹°·Ð VGA 640x480 ÀÇ °æ¿ì x: 0~639,y:0~479 ÀÇ °ªÀ» °¡Áú ¼ö ÀÖÀ¾´Ï´Ù. ±×·³ ¾Ë°í¸®ÁòÀ» »ìÆ캸 µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. * ¾Ë°í¸®Áò À½..»ç½Ç 640x480 ÀÇ ±×·¡ÇÈ È­¸é¿¡ °¡·Î ÁöÁ¤ ¹üÀ§¸¦ 0~79 ·Î ÇÑ´Ù´Â °ÍÀº Á¶±Ý ¾ï¿ïÇÑ ÀÏÀ̱⵵ ÇÕ´Ï´Ù. È­¸é µðÀÚÀο¡¼­ ¹® Á¦°¡ Àֱ⵵ ÇÏ°í. ¼Óµµ»ó ¾î¿ ¼ö ¾ø´Â ÀÏÀ̱ä ÇÏÁö¸¸ ¼ÓµµÂ÷¸¦ ¾î ´ÀÁ¤µµ ÁÙÀÏ ¼ö ¸¸ ÀÖ´Ù¸é ÀÌ ·çƾÀº ³ª¸§´ë·ÎÀÇ À¯¿ë¼ºÀ» Áö´Ò ¼ö ÀÖ´Ù°í º¾´Ï´Ù. ±×·³ °¡·Î ÁöÁ¤¹üÀ§¸¦ µµÆ®´ÜÀ§·Î Çϱâ À§Çؼ­´Â ¾î ¶² 󸮰¡ ÇÊ¿äÇÑÁö ¾Ë¾Æº¾½Ã´Ù. ´ÜÀûÀ¸·Î ¿¹¸¦ µé¸é x ÁÂÇ¥ 2 ¿¡ 11111111 À̶ó´Â µ¥ÀÌÅ͸¦ ¾²°íÀÚ ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ x ÁÂÇ¥ 2 ºÎÅÍ 9 ±îÁö 1 ·Î ä¿öÁö°Ô ÇÏ¸é µÉ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ x ÁÂÇ¥ 0 ºÎÅÍ 7 ±î Áö,8 ºÎÅÍ 15 ±îÁö °¢°¢ ¹ÙÀÌÆ® ´ÜÀ§·Î ¸Þ¸ð¸® ¸ÊÀÌ °áÁ¤µÇ¾î ÀÖ´Ù´Â °ÍÀ» Àß ¾Æ½Ç °ÍÀÔ´Ï´Ù. ±×·¸´Ù¸é ¹æ¹ýÀº ÆùÆ® µ¥ÀÌÅÍ 11111111 À» °á±¹ µÎºÎºÐÀ¸·Î ³ª´©¾î¼­ Àû´çÈ÷ ½¬ÇÁÆ® ÇÏ¿© µÎ¹ø Ãâ·Â ÇØÁÖ¾î¾ß ÇÑ´Ù´Â ¸»Àε¥... ¿ì¼± µÎºÎºÐÀ¸·Î ³ª´©´Â ¹æ¹ýÀ» ¾Ë¾Æ¾ß °Ú°í.Àû´çÈ÷ ½¬ÇÁÆ®ÇϱâÀ§Çؼ­´Â ¾ó¸¶³ª ½¬ÇÁÆ® ÇØ¾ß ÇÏ´ÂÁö¸¦ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ±× ´ÙÀ½¿¡´Â ±âÁ¸ÀÇ ·çƾ¿¡¼­ Çß´ø°Í ó·³ Ãâ·ÂÇØÁÖ¸é µÇ°ÚÁÒ. À½..±×·³ ¿¹¸¦ Çϳª µé¾î ¼³¸íÇÏ°ÚÀ¾´Ï´Ù. Áï ÆùÆ® µ¥ÀÌÅÍ ÇÑ ¹ÙÀÌÆ®°¡ 01001010 À̶ó°í ÇÏ°í x ÁÂÇ¥ 10 ¿¡ Ç¥½ÃÇÏ¿©¾ß ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ µÉ°ÍÀÔ´Ï´Ù. 010010 10 x: 01234567 89012345 67890123 45.. Áï x ÁÂÇ¥°¡ 10 Àΰ÷ ºÎÅÍ 17 ÀÎ °÷±îÁö¸¦ 8 ºñÆ® µ¥ÀÌÅÍ°¡ Á¡À¯ÇÏ´Â µ¥ ¹®Á¦´Â Ç¥½ÃÇØ¾ß ÇÒ°÷ÀÌ ¹ÙÀÌÆ®¹öÁ¯°ú´Â ´Þ¸® µÎ ¹ÙÀÌÆ®·Î ³ª´¶ ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ ÀÌÀ¯´Â ¹°·Ð °¡·Î ÁÂÇ¥°¡ 8 µµÆ® ´ÜÀ§°¡ ¾Æ´Ï±â ¶§¹®ÀÔ´Ï´Ù. ¹ÙÀÌÆ® ¹öÁ¯ÀÇ °æ¿ì ÀÌ·± ÀÏÀÌ ÀϾÁö ¾Ê½À´Ï´Ù. ±×·¸ ´Ù¸é 8 bit ÀÇ µ¥ÀÌÅÍÀÓ¿¡µµ ºÒ±¸ÇÏ°í µÎ¹øÀÇ ¾²±âµ¿ÀÛÀ» ¼öÇàÇØ¾ß ÇÏ´Â °ÍÀÔ´Ï´Ù. µÎ¹øÀÇ ¾²±âµ¿ÀÛÀ» ¼öÇàÇϱâ À§Çؼ­´Â ÀÏ´Ü À§ÀÇ ¿¹ ¿¡¼­´Â 8 bit µ¥ÀÌÅ͸¦ 010010 °ú 10 À¸·Î ³ª´©¾î¾ß ÇÕ´Ï´Ù. ´Ü ,Á¤È® ÇÏ°Ô ¸»ÇÏ¸é ½ÇÁ¦·Î ¾²±â À§Çؼ­´Â 8 ºñÆ® µ¥ÀÌÅÍ°¡ ÇÊ¿äÇϹǷΠ00010010 °ú 10000000 ·Î ³ª´©¾î¾ß ÇÕ´Ï´Ù.ÀÌ µÎ µ¥ÀÌÅ͸¦ È­¸é ¸Þ¸ð ¸® ¿É¼ÂÀ§Ä¡¿¡ ¾µ¼ö¸¸ ÀÖ´Ù¸é µµÆ®¹öÁ¯À» ±¸ÇöÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ±×·¯¸é ³ª´©´Â ÀÛ¾÷À» ¸ÕÀú ÇØ º¸ÁÒ. ÀÏ´Ü x ÁÂÇ¥ 10 À̶ó´Â µ¥ ÁÖ¸ñ ÇսôÙ. 10 Àº °¡·Î 8 µµÆ®´ÜÀ§ÀÇ ±âÁØ¿¡¼­ º¸¸é 2 µµÆ®¸¸Å­ ¿À¸¥©PÀ¸ ·Î ºñ²¸³ª°£ ¼ÀÀ̹ǷΠ2 µµÆ®¸¦ ±âÁØÀ¸·Î 8 bit µ¥ÀÌÅ͸¦ ºÐÇÒÇÏ¸é µË ´Ï´Ù.Áï 10 À» 8 ·Î ³ª´« ³ª¸ÓÁö ¸¸Å­ ¿À¸¥ÂÊÀ¸·Î µ¥ÀÌÅ͸¦ ºñ²¸¼­ Ãâ ·ÂÇÏ´Â ¼ÀÀ̹ǷΠÀϹÝÀûÀÎ °æ¿ì·Î »ý°¢ÇØ º¸¸é µµÆ®´ÜÀ§·Î Ç¥½ÃµÈ x ÁÂÇ¥¸¦ 8 ·Î ³ª´« ³ª¸ÓÁö ¸¸Å­ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ ¹ÙÀÌÆ® ¹öÁ¯ÀÇ °æ¿ì È­¸é ¿É¼ÂÀÇ °è»êÀÌ offset=y*80+x; ( x ´Â ¹ÙÀÌÆ® ´ÜÀ§,y ´Â µµÆ®´ÜÀ§ ) °¡ µÇÁö¸¸ µµÆ®¹öÁ¯ÀÇ °æ¿ì´Â À§ÀÇ ½Ä¿¡¼­ x ¸¦ x/8 ·Î ¹Ù²Ù¾î ³õ¾Æ¾ß ÇÕ´Ï´Ù.±×·¯¹Ç·Î °¡Àå ¸ÕÀú ÇØ¾ß ÇÒÀÏÀº x ÁÂÇ¥¸¦ 8 ·Î ³ª´« ³ª¸ÓÁö¿Í ¸òÀ» ±¸ÇÏ´Â °ÍÀÔ´Ï´Ù.À§ÀÇ ¿¹¸¦ °è¼Ó »ç¿ëÇÏ¿© ±× ´ÙÀ½¿¡ ÇÒ ÀÏÀ» »ý°¢ÇØ º¾½Ã´Ù. 01001010 À̶ó´Â µ¥ÀÌÅ͸¦ 00010010 °ú 10000000 À¸ ·Î ³ª´©¾î¾ß Çϴµ¥ 01001010 À̶ó´Â ¿øµ¥ÀÌÅÍ¿Í 00010010 À̶ó ´Â µ¥ÀÌÅ͸¦ ºñ±³ÇØ º¸¸é 00010010 À̶ó´Â µ¥ÀÌÅÍ´Â ¿øµ¥ÀÌÅ͸¦ ¿À ¸¥ÂÊÀ¸·Î µÎ¹ø ½¬ÇÁÆ® ÇÑ °á°ú¶ó´Â °ÍÀ» ½±°Ô ¾Ë ¼ö ÀÖÀ¾´Ï´Ù. ±×·¯³ª ÀÌ ¹æ¹ýÀ» °¡Áö°í´Â µÚÀÇ 10000000 À» ¾ò¾î³¾¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾øÀ¸¹Ç ·Î ½¬ÇÁÆ®°¡ ¾Æ´Ñ ·ÎÅ×ÀÌÆ®¸¦ »ç¿ëÇÕ´Ï´Ù.Áï ¿øµ¥ÀÌÅ͸¦ ¿À¸¥ÂÊÀ¸·Î µÎ¹ø ·ÎÅ×ÀÌÆ® Çϸé 10010010 ÀÌ µÇ´Âµ¥ ÀÌ µ¥ÀÌÅÍÀÇ ¾Õ 2 ºñÆ®´Â ³ª ´©¾îÁ®¾ßÇÒ µÎ¹ø° µ¥ÀÌÅÍ,Áï 10000000 ÀÇ ¾ÕºÎºÐÀ» Çü¼ºÇÏ°í ÀÖ°í µÚ 6 ºñÆ®´Â ³ª´©¾îÁ®¾ßÇÒ Ã¹¹ø° µ¥ÀÌÅÍ,Áï 00010010 ÀÇ µÞºÎºÐ°ú ÀÏÄ¡ ÇÕ´Ï´Ù. ±×·¯¹Ç·Î ÀÌÁ¦ ·ÎÅ×ÀÌÆ®µÈ µ¥ÀÌÅ͸¦ µÎ°³·Î ºÐ¸®Çϱ⸸ ÇÏ¸é µÇ´Âµ¥ À̶§ »ç¿ëµÇ´Â °ÍÀÌ Bit Masking ÀÔ´Ï´Ù. ³í¸®¿¬»ê AND ¿¡ ÇØ ¼­ Á¶±Ý »ý°¢ÇØ º¸¸é µÇ´Âµ¥ ºñÆ®º°·Î 1 °úÀÇ AND ´Â ÀÚ±âÀÚ½ÅÀÌ°í 0 °úÀÇ AND ´Â 0 À̹ǷΠ¸¸ÀÏ 00001111 °ú AND ¸¦ ÇÏ°Ô µÇ¸é ÇÏÀ§ 4 ºñ Æ®¸¸À»»Ì¾Æ³¾¼ö ÀÖÀ¾´Ï´Ù.¿©±â¼­µµ ÀÌ ¹æ¹ýÀ» »ç¿ëÇϴµ¥ Masking À» ÇÒ Mask ¸¦ ¾ò¾î³»´Â °ÍÀÌ ¿ì¼±À̶ó°í ÇÒ ¼ö ÀÖ°ÚÀ¾´Ï´Ù. Á¦ÀÏ Ã³À½ÀÇ ¿¹¸¦ ´Ù½Ã »ý°¢ÇØ º¾½Ã´Ù.·ÎÅ×ÀÌÆ® ÇÑ µ¥ÀÌÅÍ, Áï 10010010 ÀÇ ¾Õ 2 ºñÆ®¸¦ ¾ò¾î³»·Á¸é 11000000 °ú AND ¸¦ ÇÏ¸é µÇ°í µÚ 6 ºñÆ® ¸¦ ¾ò¾î³»·Á¸é 00111111 °ú AND ¸¦ ÇÏ¸é µË´Ï´Ù. ÀÌ µÎ mask ÀÇ Â÷ÀÌ ¶ó¸é ÇÑÂÊÀ» NOT (1 ÀÇ º¸¼ö) ÇÏ¸é ´Ù¸¥ÂÊÀÌ ¾ò¾îÁø´Ù´Â °ÍÀÔ´Ï´Ù. µû ¶ó¼­ µÎ°³Áß¿¡ Çϳª¸¸ ±¸ÇÏ¸é µÇ´Âµ¥ Àú´Â µÚÀÇ mask ¸¦ ¸ÕÀú ¾ò¾î³½ ÈÄ ¹ÝÀüÇؼ­ ¾ÕÀÇ mask ¸¦ ³ªÁß¿¡ ±¸ÇÏ´Â ¹æ½ÄÀ» ÃëÇßÀ¾´Ï´Ù. ±×·¯¸é µÚÀÇ mask ¸¦ ±¸ÇÏ´Â ¹ýÀ» ¾Ë¾Æ¾ß ÇÒÅÙµ¥ ÀÌ°ÍÀº °£´ÜÇÕ´Ï´Ù.¾Õ¿¡¼­ x ÁÂÇ¥¸¦ 8 ·Î ³ª´« ³ª¸ÓÁö°¡ 2 ¶ó°í Çߴµ¥ 00111111 À» ¾ò±â À§ÇØ ¼­´Â 10000000 (0x80) À» ¿À¸¥ÂÊÀ¸·Î Çѹø ½¬ÇÁÆ® ÇÑÈÄ 1 À» »©¸é ´Ï ´Ù.Áï x ¸¦ 8 ·Î ³ª´« ³ª¸ÓÁö-1 ¸¸Å­ 0x80 À» ¿À¸¥ÂÊÀ¸·Î ½¬ÇÁÆ® ÇÑÈÄ 1 À» »©¸é ÀûÀýÇÑ mask ¸¦ ¾òÀ» ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.±×·¸´Ù¸é ÀÌÁ¦ ¿ø µ¥ÀÌÅ͸¦ µÎ°³ÀÇ µ¥ÀÌÅÍ·Î ºÐ¸®ÇÏ´Â ¹æ¹ýÀ» Á¤¸®ÇØ º¾½Ã´Ù. 1. °¡·ÎÁÂÇ¥ x ¸¦ ³ª´« ¸òÀ» a,³ª¸ÓÁö¸¦ b ¶ó°í ÇÏÀÚ. a ´Â È­¸é ¿É¼ÂÀ» °è»êÇϴµ¥ ¾²ÀδÙ. 2. ÆùÆ® µ¥ÀÌÅ͸¦ b ¸¸Å­ ¿À¸¥ÂÊÀ¸·Î ·ÎÅ×ÀÌÆ® ÇÑ´Ù. 3. 0x80 À» (b-1) ¸¸Å­ ¿À¸¥ÂÊ ½¬ÇÁÆ®ÇÑ´Ù. ÀÌ °ªÀ» c ¶ó ÇÏÀÚ. 4. 2 ¹øÀÇ µ¥ÀÌÅ͸¦ (c-1) °ú AND ÇÑ´Ù. -> µ¥ÀÌÅÍ 1 5. (c-1) À» NOT ( 1 ÀÇ º¸¼ö ) ÇÑ´Ù. 6. 2 ¹øÀÇ µ¥ÀÌÅ͸¦ 5 ¹ø¿¡¼­ ±¸ÇÑ °ª°ú AND ÇÑ´Ù. -> µ¥ÀÌÅÍ 2 ÇÏÁö¸¸... ¹®Á¦´Â ÀÖÀ¾´Ï´Ù. ¸¸ÀÏ ³ª¸ÓÁö b °¡ 0 À̶ó¸é,, b-1 Àº 255 À̹ǷΠ(b ´Â 8 ºñÆ®) 0x80 À» 255 ¹ø ½¬ÇÁÆ®ÇØÁÖ°Ô µÇ´Â ºÒÇÕ¸®ÇÑ »ç Å°¡ ¹ß»ýÇÕ´Ï´Ù. ÂÁÂÁ..¹°·Ð ÀÌ °á°ú´Â 0 À̹ǷΠ¾Ë°í¸®Áò ÀÚü¿¡ ¹® Á¦´Â ¾øÀ¾´Ï´Ù.¿Ö³ÄÇϸé c-1 Àº ´Ù½Ã 255(0xff) °¡ µÇ¹Ç·Î µ¥ÀÌÅÍ 1 Àº ÆùÆ®µ¥ÀÌÅÍ ÀÚü°¡ µÇ°í µ¥ÀÌÅÍ 2 ´Â 0 ÀÌ µÇ±â ¶§¹®ÀÔ´Ï´Ù. µû¶ó ¼­ µ¿ÀÛÀº ÇÏÁö¸¸ 255 ¹ø ½¬ÇÁÆ® ÇÏ´Â µ¥ µû¸¥ ½Ã°£ÀÇ ³¶ºñ¸¦ ÇØ°áÇÏ ±â À§Çؼ­´Â b-1 ÀÌ 255 ÀÏ °æ¿ì,Áï S flag °¡ set µÇ¾úÀ» °æ¿ì´Â b-1 À» 8 ·Î ÇØ ÁÖ¾î¾ß ÇÏ´Â °ÍÀÔ´Ï´Ù. ÇÑ°ÉÀ½ ´õ ³ª¾Æ°¡ À§ÀÇ µ¥ ÀÌÅÍ 2 ¸¦ ¾²´Â µ¿ÀÛÀÚü¸¦ ¾ø¾Ö¹ö¸±¼öµµ ÀÖÁö¸¸ ±× 󸮴 »ý·«Çϵµ ·Ï ÇÕ´Ï´Ù. ±×·³ ÀÌÁ¦ ÇÑ ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ µµÆ®´ÜÀ§·Î Ç¥½ÃÇÏ´Â °ÍÀº µÎ¹ÙÀÌÆ® ·Î ³ª´©¾îÁø µ¥ÀÌÅ͸¦ È­¸é¿¡ µÎ¹ø Ãâ·ÂÇØ ÁÖ´Â °Í¿¡ Áö³ªÁö ¾Ê½À´Ï ´Ù.ÇѹÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÒ¼ö ÀÖ°Ô µÇ¾úÀ¸¹Ç·Î ¿©·¯¹ÙÀÌÆ®ÀÇ °æ¿ì µµ °¢°¢ÀÇ ¹ÙÀÌÆ®¿¡ ´ëÇؼ­ ó¸®ÇÏ¸é »ç½Ç»ó ¾î¶² Å©±â³ª °¡´ÉÇÑ ¼ÀÀÌ µË´Ï´Ù. Ãâ·ÂÇÒ È­¸éÀÇ À§Ä¡´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù. ù¹ø° µ¥ÀÌÅÍ : y*80+x/8 µÎ¹ø° µ¥ÀÌÅÍ : y*80+x/8+1 À§ÀÇ ¹æ¹ýÀ¸·Î ±×·¯¸é 8x16 ÀÇ Å©±â¸¦ °¡Áø ¿µ¹® ÆùÆ®ÀÇ Ãâ·ÂÀº ÀÚ À¯·Ó°Ô ÇÒ¼ö ÀÖ°Ô µÇ¾úÀ¾´Ï´Ù. Çѱ۵µ 16x16 Àε¥ °¡·Î°¡ 2 ¹ÙÀÌÆ®ÀÌ ¹Ç·Î °¢°¢À» µÎ°³¾¿ ³ª´©¾î Ãâ·Â,Áï 4 ¹ø Ãâ·ÂÇÔÀ¸·Î½á µµÆ®´ÜÀ§ Ãâ ·ÂÀ» ±¸ÇöÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.±×·¯³ª ¼Óµµ¹®Á¦¸¦ ¾È»ý°¢ÇÒ¼ö°¡ ¾øÀ¸ ¹Ç·Î ÇÑ±Û Ãâ·Â°ú °°ÀÌ °¡·Î°¡ 16 ºñÆ® ´ÜÀ§ÀÏ °æ¿ì¿¡ Á¶±Ý ´Ù¸¥ ó¸® ¸¦ Ãß°¡ÇÒ ¼ö ÀÖ°ÚÀ¾´Ï´Ù.¸¸ÀÏ ÇÑ±Û ÆùÆ® °¡·Î µ¥ÀÌÅÍ°¡ 0011001111001100 À̶ó°í ÇսôÙ. 16 ºñÆ® µ¥ÀÌÅÍÀ̹ǷΠx ÁÂÇ¥°¡ 10 À̶ó¸é ¾Æ·¡¿Í °°ÀÌ µË´Ï´Ù. 001100 11110011 00 x ÁÂÇ¥: 01234567 89012345 67890123 45678901 Áï ¼¼¹ÙÀÌÆ®·Î ³ª´µ´Â °ÍÀÔ´Ï´Ù. µû¶ó¼­ ½ÇÁ¦·Î´Â ¼¼¹øÀÇ Ãâ·Â¸¸À¸·Î ¿ÏÀüÇÑ Ãâ·ÂÀÌ °¡´ÉÇØ Áý´Ï´Ù. ½ÇÁ¦·Î ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ºÎºÐÀº Ã⠷ºκÐÀ̹ǷΠÃâ·Â¼ö¸¦ ÃÖ´ë·Î ÁÙÀ̱â À§Çؼ­ ÇÑ±Û Ãâ·ÂÀÇ °æ¿ì¿¡´Â µû·Î ¸ðµâÀ» ÀÛ¼ºÇϵµ·Ï ÇսôÙ.¿ì¼± ¾Õ¹ÙÀÌÆ®ÀÎ 00110011 Àº ¾Õ¿¡¼­ ¾ð±ÞÇÑ ¹æ¹ý¿¡ ÀÇÇϸé x ÁÂÇ¥°¡ 10 À϶§ 00001100 °ú 11000000 À¸·Î ³ª´µ°í µÚ¹ÙÀÌÆ®ÀÎ 11001100 Àº ¸¶Âù°¡Áö ¹æ¹ý¿¡ ÀÇÇؼ­ 00110011 °ú 00000000 À¸·Î ³ª´µ°Ô µË´Ï´Ù.ÀÌ 4 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅÍÁß 11000000 °ú 00110011 À̶ó´Â µ¥ÀÌÅÍ´Â È­¸éÀ§Ä¡ÀÇ °°Àº ºÎºÐÀ» °øÀ¯ÇϹǷΠÇѹø¿¡ Ãâ·ÂÇصµ µË´Ï´Ù. µû¶ó¼­ ÀÌ µÎ µ¥ÀÌÅÍ´Â OR Çؼ­ È­¸é¿¡´Â Çѹø¿¡ Ãâ·ÂÇÕ´Ï´Ù. ±×·¯¸é Ãâ·Â¼ö¸¦ ¼¼¹øÀ¸·Î ÁÙÀϼö°¡ ÀÖÀ¾´Ï´Ù. ±×·¯¸é ÀÌÁ¦ ¸¶Áö¸·À¸·Î ¾Ë¾Æ¾ß ÇÒ°ÍÀº À§ÀÇ Ã³¸®µéÀ» ¾î¼Àºí¸®·Î ±¸ÇöÇϱâ À§ÇÑ ¹æ¹ýµéÀÔ´Ï´Ù.. ¿ì¼± x ÁÂÇ¥¸¦ 8 ·Î ³ª´« ³ª¸ÓÁö¿Í ¸òÀ» ±¸ÇØ¾ß ÇÒ°ÍÀÔ´Ï´Ù.¿À¸¥ÂÊÀ¸·Î Çѹø ½¬ÇÁÆ® ÇÒ¶§¸¶´Ù 2 ·Î ³ª´©´Â °á°ú°¡ ¹Ç ·Î ¿À¸¥ÂÊÀ¸·Î ¼¼¹ø ½¬ÇÁÆ® ÇÏ´Â °ÍÀº 8 ·Î ³ª´©´Â °á°ú°¡ µË´Ï´Ù.ÀÌ °ªÀÌ 8 ·Î ³ª´« ¸òÀÔ´Ï´Ù. ÀÌ °ªÀº ÀúÀåÇÏ°í,ÀÌ °ªÀ» ´Ù½Ã ¿ÞÂÊÀ¸·Î ¼¼¹ø ½¬ÇÁÆ® ÇÑ´ÙÀ½ ¿ø·¡ÀÇ x ÁÂÇ¥¿ÍÀÇ Â÷¸¦ ±¸Çϸé ÀÌ°ÍÀÌ 8 ·Î ³ª´« ³ª¸ÓÁö°¡ µË´Ï´Ù.¶Ç´Ù¸¥ 8 ·Î ³ª¸ÓÁö¸¦ ±¸ÇÏ´Â ¹æ¹ýÀº 7 °ú AND ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ Ã³¸®´Â ÇÏÀ§ 3 ºñÆ®¸¸À» ¾òÀ» ¼ö ÀÖµµ·Ï ÇØ ÁÝ´Ï´Ù. Áï 8 ·Î ³ª´« ³ª¸ÓÁö¸¦ ¾òÀ» ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌÁö¿ä. ÀÌ ½ÄÀ» C ·Î Ç¥ÇöÇØ º¸¸é ´ÙÀ½°ú °°½À´Ï´Ù. int x; /* x ´Â Á¤¼öÇüÀÌ°í °¡·Î ÁÂÇ¥(0~639) mode = x- (x / 8)*8; ±×·³ È­¸é ¿É¼ÂÀ» °è»êÇØ º¾½Ã´Ù. y*80+x/8 À» °è»êÇØ¾ß Çϴµ¥ x/8 Àº ¾ÕÀÇ ¸ò°è»ê¿¡¼­ ¼öÇàÇßÀ¸¹Ç·Î y*80 ¸¸À» °è»êÇÏ¸é µË´Ï´Ù. Àü ´Ü ¼øÈ÷ ¾î¼Àºí¸®ÀÇ mul ¸í·ÉÀ» ÀÌ¿ëÇßÀ¾´Ï´Ù. ÀÌ ¸í·ÉÀº »ó´çÈ÷ ´À¸° ¸í ·ÉÀ̶ó ´Ù¸¥ ¹æ¹ýÀ» »ç¿ëÇÒ¼öµµ ÀÖÀ¾´Ï´Ù. ¿¹¸¦ µé¸é ÀÌ·± ¹æ¹ýÀÌ ÀÖ À¾´Ï´Ù. 80 À» °öÇÑ´Ù´Â °ÍÀº 16 À» °öÇÑ °ª°ú 64 ¸¦ °öÇÑ °ªÀÇ ÇÕÀÔ ´Ï´Ù. µû¶ó¼­ ¿ø·¡ÀÇ °ªÀ» ¿ÞÂÊÀ¸·Î 4 ¹ø ½¬ÇÁÆ® ÇÑ°ªÀ» ±¸ÇÏ°í ÀÏ´Ü ÀúÀåÇÑÈÄ ´Ù½Ã 2 ¹ø ½¬ÇÁÆ®¸¦ ´õÇؼ­ 6 ¹ø ½¬ÇÁÆ® ÇÑ °ª( 64 ¸¦ °öÇÑ °ª) °ú 4 ¹ø ½¬ÇÁÆ®ÇÑ °ª( 16 À» °öÇÑ °ª) À» ´õÇϸé 80 À» °öÇÑ °ª À» ±¸ÇÒ ¼ö ÀÖÀ¾´Ï´Ù. ±×·¯³ª ÀÌ ¹æ¹ý°ú mul ¸í·ÉÀ» ¾´ °ÍÀº ¼ÓµµÂ÷ ÀÌ°¡ °ÅÀÇ ¾øÀ¸¹Ç·Î Àü ±×³É mul ¸í·ÉÀ» »ç¿ëÇßÀ¾´Ï´Ù. ÇÔ¼ö´Â VGA ¿ë ¿µ¹® Ãâ·Â¸ðµâ,ÇѱÛÃâ·Â¸ðµâ . ±×¸®°í Hercules ¿ë ¿µ¹®Ãâ·Â¸ðµâ, ÇѱÛÃâ·Â¸ðµâÀÇ 4 °¡Áö°¡ Àִµ¥ ¸ðµÎ x,y ÁÂÇ¥ (µµÆ®ÁÂÇ¥) ¿¡ buff µ¥ÀÌÅ͸¦ color ·Î Ãâ·ÂÇÏ´Â Çü½ÄÀ¸·Î µÇ¾î ÀÖÀ¾´Ï´Ù.ÀÌ ÇÔ ¼öµéÀº 800x600x16 ¸ðµå¿¡¼­µµ ¹°·Ð ¾µ¼ö ÀÖÀ¾´Ï´Ù.´Ü ÀÌ°æ¿ì È­¸é ¿É ¼ÂÀ» °è»êÇÏ´Â ºÎºÐ¿¡¼­ 80 À» °öÇÏ´Â °ÍÀ» 100 À¸·Î ¹Ù²Ù¾î¾ß ÇÕ´Ï ´Ù. °è»êµÈ µÎ¹ÙÀÌÆ® ȤÀº ¼¼¹ÙÀÌÆ® µ¥ÀÌÅ͸¦ ½ÇÁ¦·Î È­¸é¿¡ Ãâ·ÂÇÏ ´Â °ÍÀº Àú¹ø °­Áµ鿡¼­ ¼öÂ÷·Ê ¼³¸íÇÑ ÀûÀÌ Àֱ⶧¹®¿¡ ¼³¸íÀº »ý ·«ÇÕ´Ï´Ù.¼Ò½º¿¡¼­ VGA ¿ë ¿µ¹®,ÇѱÛ,Hercules¿ë¿µ¹®,ÇѱÛÃâ·Â¸ðµâÀÇ À̸§Àºvputche,vputchh,hputche,hputchh ÀÌ´Ù. ´Ü Hercules ´Â 640x400 ¸ðµå¸¦ ±âÁØÀ¸·Î ÇÑ °ÍÀÓÀ» ¹àÇôµÓ´Ï´Ù. Âü°í·Î Çϳª µ¡ºÙ ÀÌÀÚ¸é ÀÓÀÇ ¹öÆÛÅ©±â m byte x n dot ÀÇ ÆùÆ® µ¥ÀÌÅ͸¦ È­¸é¿¡ µµ Æ®´ÜÀ§·Î Ç¥½ÃÇÏ´Â ¸ðµâ°ú (VGA/Herc ¿ë) °ú H ercules µµÆ®Ãâ·Â ¸ð µâÀ» °¡±î¿î ½ÃÀϳ»¿¡ ¼Ò°³ÇÒ °ÍÀ» ¾à¼Óµå¸®°ÚÀ¾´Ï´Ù. ( ¹æ±Ý Á¤¸®°¡ ³¡³µ¾î¿ä.) ±×·³ ¼Ò½º. //////////////////////////////////////////// // // // THIS IS C++ Total Library // // // // VGA Output // // Module // // // // made by Han Woo-jin.KIT e900519 // // // // KETEL ID : hwjketel // // TEL : (02) 488-1558,house // // (042) 820-4231,KIT. // // // //////////////////////////////////////////// #pragma inline #include void vputche(int x,int y,char *buff,char color) { asm push ds _DS=FP_SEG(buff); /* buff segment,offset */ _SI=FP_OFF(buff); asm mov dx,3ceh /* writing mode */ asm mov ax,0005h asm out dx,ax asm mov al,0 asm mov ah,color asm out dx,ax asm mov ax,0f01h asm out dx,ax asm mov ax,0a000h /* segment setting */ asm mov es,ax asm mov ax,WORD PTR y /* offset,bitmask */ asm mov bx,80 asm mul bx asm mov bx,ax asm mov dx,WORD PTR x asm mov ax,dx asm shr dx,1 <- ¿À¸¥ÂÊÀ¸·Î ¼¼¹ø ½¬ÇÁÆ® asm shr dx,1 asm shr dx,1 asm add bl,dl asm adc bh,0 /* bx = offset */ /* asm shl dx,1 <- ¿ÞÂÊ ½¬ÇÁÆ® ÇÏ´ø°¡ , asm shl dx,1 asm shl dx,1 asm sub ax,dx */ asm and al,07h <- 7 °ú And ¿¬»ê,, ³ª¸ÓÁö ±¸ÇÔ asm mov cl,al asm dec cl asm jns nosign <- if no sign,skip cl<-0.. cl=b-1 asm mov cl,8 nosign: asm mov ah,080h asm shr ah,cl asm dec ah /* ah = bitmask */ /* al = 8 ·Î ³ª´« ³ª¸ÓÁö */ asm mov cx,16 asm mov dx,03ceh asm mov di,bx asm mov bx,ax /* bx <- ax */ eloop: asm push cx asm mov cl,al asm mov al,ds:[si] asm ror al,cl <- b-1 ¸¸Å­ ·ÎÅ×ÀÌÆ® asm and ah,al <- masking asm mov ch,al <- al ÀúÀå asm mov al,8 asm out dx,ax asm mov ah,es:[di] /* output left part */ asm mov es:[di],ah asm mov ax,bx asm mov al,ch <- al º¹±Í asm not ah <- ¹ÝÀü asm and ah,al <- ÈĹݺΠmasking asm mov al,8 asm out dx,ax asm mov ah,es:[di+1] /* output right part */ asm mov es:[di+1],ah asm mov ax,bx asm inc si asm add di,80 asm pop cx asm loop eloop asm mov ax,1 /* initializing */ asm out dx,ax asm mov ax,0ff08h asm out dx,ax asm pop ds } void vputchh(int x,int y,char *buff,char color) { asm push ds _DS=FP_SEG(buff); /* buff segment,offset */ _SI=FP_OFF(buff); asm mov dx,3ceh /* writing mode */ asm mov ax,0005h asm out dx,ax asm mov al,0 asm mov ah,color asm out dx,ax asm mov ax,0f01h asm out dx,ax asm mov ax,0a000h /* segment setting */ asm mov es,ax asm mov ax,WORD PTR y /* offset,bitmask */ asm mov bx,80 asm mul bx asm mov bx,ax asm mov dx,WORD PTR x asm mov ax,dx /* À§ÀÇ vputche Âü°í */ asm shr dx,1 asm shr dx,1 asm shr dx,1 asm add bl,dl asm adc bh,0 /* bx = offset */ /* asm shl dx,1 asm shl dx,1 asm shl dx,1 asm sub ax,dx */ asm and ax,07h asm mov cl,al asm dec cl asm jnc nosign asm mov cl,8 nosign: asm mov ah,080h asm shr ah,cl asm dec ah /* ah = bitmask */ asm mov cx,16 asm mov dx,03ceh asm mov di,bx asm mov bx,ax /* bx <- ax */ hloop: asm push cx asm mov cl,al asm mov al,ds:[si] asm ror al,cl asm and ah,al <- Masking asm mov ch,al <- al ÀúÀå asm mov al,8 asm out dx,ax asm mov ah,es:[di] /* output left part */ asm mov es:[di],ah asm mov ax,bx asm mov al,ch <- al º¹±Í asm not ah <- ¹ÝÀü asm and ah,al <- ÈĹݺΠmasking asm mov al,8 asm mov ch,ah asm inc si asm mov ax,bx asm mov al,ds:[si] asm ror al,cl asm and ah,al asm or ah,ch <- OR ÇÔ. asm mov ch,al asm mov al,8 asm out dx,ax asm mov ah,es:[di+1] /* output middle part */ asm mov es:[di+1],ah asm mov ax,bx asm mov al,ch asm not ah asm and ah,al asm mov al,8 asm out dx,ax asm mov ah,es:[di+2] /* output right part */ asm mov es:[di+2],ah asm mov ax,bx asm inc si asm add di,80 asm pop cx asm loop hloop asm mov ax,1 /* initializing */ asm out dx,ax asm mov ax,0ff08h asm out dx,ax asm pop ds } À½... ¼Ò½º¶§¹®¿¡ ²Ï ±æ¾îÁ³´Âµ¥ .. ÀÌ ´ÙÀ½ÀÇ °­Á³»¿ëÀ» ¼Ò°³Çϸ鼭 ³¡³»°ÚÀ¾´Ï´Ù. ÀÌ ´ÙÀ½¿¡´Â hputchh,hputche,hputchmn,vputchmn ÇÔ¼ö ÀÇ ¼Ò½º¸¦ º¸ÀÌ°ÚÀ¾´Ï´Ù. ¼³¸íÀº À§ÀÇ ¼³¸íµé°ú °ÅÀÇ ÀÏÄ¡ÇϹǷΠƯ ¼öÇÑ Á¡¸¸ ¸î°¡Áö ¼³¸íÇÏ°í ¼Ò½º¿¡ ÁÖ¼®À» ´Þ¾Æ¼­ °­Á¸¦ ¿Ã¸®°ÚÀ¾ ´Ï´Ù. µµ¿òÀÌ µÇ½Ã±â¸¦..