Á¦¸ñ : <¾ÆÀÌÄÜ #1> ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ÀÌÁ¦ Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® µµ ¾÷Çß°í ¹öÁ¯¾÷µµ °è¼Ó ÁøÇàÁßÀÔ´Ï´Ù. »ç½Ç Áö±Ý±îÁö °­Á³»¿ë ¿¡ ¿Ã·Á¿Â°ÍµéÀº ´ëºÎºÐÀÌ ÀÌÇظ¦ ÇÊ¿ä·Î ÇÏ´Â Å×Å©´ÐÀûÀÎ °ÍÀÌ ¸¹¾Ò±â ¶§¹®¿¡ ´Ù¼Ò ¾î·Á¿ü´ø °Í °°½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ¹Ì ¸¹ÀÌ ¾Ë ·ÁÁ® ¿Â°Í,¶Ç´Â ±×´ÙÁö 'ÆÁ' ÀûÀÎ Á߿伺ÀÌ ¾ø´Â °Íµé ±îÁö °­Á ¸¦ ¿Ã¸®±â¿¡´Â ½Ã°£ÀÌ ³Ê¹« ¾øÀ¾´Ï´Ù. Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 1.5 ÀÇ °æ¿ì Quick ·çƾ,À©µµ¿ì ·çƾµîÀÇ ¼³¸íÀÌ ¾ÆÁ÷ ³²¾ÆÀÖÁö ¸¸ À̰͵éÀº ¸ðµÎ °³°³ÀÎÀÌ ±¸»óÇϱ⠳ª¸§ÀÎ °ÍÀ̹ǷΠÁ¦°¡ ±¸Å ¿© °­Á¸¦ ¾´´Ù´Â °ÍÀº ÇÔ¼ö ¸Å´º¾óÀ» ¾²´Â °Í°ú º°´Ù¸¦ ¹Ù°¡ ¾ø À» µíÇÕ´Ï´Ù. ±×·¡¼­ Quick ·çƾ,À©µµ¿ì ·çƾµî¿¡ ´ëÇÑ °ÍÀº °­ Á¸¦ »ý·«Çϵµ·Ï ÇÕ´Ï´Ù. Quick ·çƾÀº »ç¿ëÀÚÀÇ ÆíÀǸ¦ À§Çؼ­ È­¸éÇ¥½Ã¿ëÀ¸·Î ¸¸µé¾îÁø ·çƾµéÀÌ°í,À©µµ¿ì ·çƾÀº ÁÖ·Î Load ÇÔ¼ö,Draw ÇÔ¼ö,Choose ÇÔ¼ö,Free ÇÔ¼ö·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç °´Ã¼ ÀûÀÎ À©µµ¿ì ±¸¼ºÀ» ´Ü¼øÇÏ°Ô³ª¸¶ °¡´ÉÄÉ ÇØÁÝ´Ï´Ù. Quick ·çƾ °ú À©µµ¿ì ·çƾÀ» Àß ÀÌ¿ëÇÏ¸é ¼Õ½±°Ô È­¸é±¸¼ºÀ» Çس¾ ¼ö ÀÖÀ¾ ´Ï´Ù. ¶ÇÇÑ ÀÏ°ü¼ºÀÖ´Â ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÒ ¼ö ÀÖ°Ô µÇÁÒ. ±×·¸ ´Ù°í ÇÁ·Î±×·¥µéÀÇ °Ñ¸ð½ÀÀÌ ¸ðµÎ °°¾ÆÁ® ¹ö¸®¸é °ï¶õÇÏ°ÚÁö¸¸ ¿ä.. Ç㸣¹Ì 2.0 ºÎÅÍ´Â Style À» ÀÚ½ÅÀÌ µðÀÚÀÎ ÇÒ ¼ö ÀÖµµ·Ï Draw Function ÀÇ Format µî ¼Ò½ºÀÇ ´ëºÎºÐÀ» °ø°³ÇÒ ¿¹Á¤ÀÔ´Ï ´Ù. 1.5 ´Â Áß°£¹öÀüÀ̶ó ¹ö±×µµ ÀÖ°í ±â´ÉÀÇ Á¤¸®µµ ´Ù ¾ÈµÈ »ó Å¿©¼­ ¼Ò½º¸¦ ¿Ã¸®Áö ¾ÊÀ¸·Á°í ÇÕ´Ï´Ù. ±×·³..ÀÏ´Ü Ç㸣¹Ì 1.5 ¿¡ ´ëÇؼ­´Â °­Á°¡ ¿Ï°áµÈ °ÍÀ¸·Î ÇÏ°í ¾ÆÀÌÄÜ¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ¾ÆÀÌÄÜÀ̶õ ¾î¶² Process ³ª ÀÛ¾÷À» ÇϳªÀÇ Ç¥ ½ÄÀ¸·Î ´ëÇ¥ÇÏ°Ô ÇÏ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. Windows 3.0 À̳ª GeoWorks µîÀÇ GUI Áö¿ø ÇÁ·Î±×·¥µéÀ» º¸¸é ÀÌ ¾ÆÀÌÄÜÀ» ÀÌ¿ëÇØ ¼­ ´Ù¾çÇÑ ¸Þ´º¸¦ ±¸¼ºÇÏ°í ÀÖÀ¾´Ï´Ù. ÀÌ ¾ÆÀÌÄÜÀ̶ó´Â °ÍÀº °á ±¹ ÀÏÁ¤Å©±âÀÇ À̹ÌÁöÀÔ´Ï´Ù. ±× Å©±â´Â º¸Åë 40x40 Á¤µµÀÔ´Ï´Ù. Ç㸣¹Ì 2.0 ¿¡¼­ Áö¿øÇÏ´Â ¾ÆÀÌÄÜÀº VGA 16 color ¿Í Hercules ÀÇ µÎ°¡Áö°¡ ÀÖÀ¾´Ï´Ù. ÀÌ ¾ÆÀÌÄܵéÀº ¼­·Î ±× È­ÀÏ Æ÷¸ËÀÌ ´Ù¸¨ ´Ï´Ù. VGA 16 color ÀÇ °æ¿ì 4 plane À» ¸ðµÎ ÀúÀåÇÏ´Â ¹æ½ÄÀ» ¾²¹Ç·Î °°Àº Å©±âÀÇ ¾ÆÀÌÄÜÀ» ÀúÀåÇصµ Hercules ¿¡ ºñÇØ 4 ¹è°¡ ±îÀÌ È­ÀÏ Å©±â°¡ Ä¿Áý´Ï´Ù. Hercules ÀÇ °æ¿ì´Â ±×´ë·Î BitMap À̹ÌÁö¸¦ ÀúÀåÇÏ°Ô µË´Ï´Ù. ±×·³ ÀÏ´Ü ¾ÆÀÌÄÜÀ» ´Ù·ç±â Àü¿¡ È­ ÀÏ Æ÷¸ËÀ» ºÐ¸íÇÏ°Ô ÇÏ°í ³Ñ¾î°¡µµ·Ï ÇսôÙ. ICON Format 1. Header Text 30 byte : ¾ÆÀÌÄÜ È­ÀÏÀÓÀ» ³ªÅ¸³¿ 2. X Å©±â,Y Å©±â : °¢ 1 ¹ÙÀÌÆ®¾¿ 2 ¹ÙÀÌÆ® Â÷Áö ´Ü x ´Â ¹ÙÀÌÆ®´ÜÀ§,y ´Â µµ Æ® ´ÜÀ§ÀÓ 3. data ¿©±â¿¡¼­ Hercules ÀÇ °æ¿ì Data ´Â ±×´ë·Î ¹öÆÛÀÇ ³»¿ëÀ» Bitmap À¸·Î ÀúÀåÇϱ⸸ ÇÏ¸é µË´Ï´Ù. ´Ü VGA ´Â 4 Plane ÀÇ ±¸ Á¶·Î ±¸¼ºµÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ µ¥ÀÌÅ͵éÀ» ¸ðµÎ ÀúÀåÇØ¾ß ÇÕ´Ï´Ù. Àú´Â È­¸é¿¡ Ç¥½ÃµÈ ¾ÆÀÌÄÜÀ» Plane º°·Î È­ÀÏ¿¡ ÀúÀåÇÏ´Â ¹æ½Ä À» ÅÃÇßÀ¾´Ï´Ù. Áï, 0 plane , y scan 0 0 plane , y scan 1 . . 1 plane , y scan 0 . . 2 plane , y scan 0 . . 3 plane , y scan 0 . . Áï Plane º°·Î 4 ¹ø ÀúÀåÇÏ´Â ¼À Ä¡¸é µË´Ï´Ù. Á¦ °­Á¸¦ À¯½ÉÈ÷ º¸¾Æ ¿À½Å ºÐÀ̶ó¸é ÀÌ·¯ÇÑ ÀúÀå ±¸Á¶°¡ ±âÁ¸ÀÇ getimage,putimage ¿¡¼­ÀÇ ¹öÆÛ¿Í´Â Á¶±Ý ´Ù¸£´Ù´Â °ÍÀ» ´À³¢¼Ì À» °Ì´Ï´Ù. getimage,putimage ¿¡¼­´Â °¡·Î ÇÑÁÙÀ» Ç÷¹Àκ°·Î 4 ¹ø ¹Ýº¹Çϸ鼭 ¹öÆÛ¿¡ ÀúÀåÇØ ³ª°¬À¾´Ï´Ù. ÇÏÁö¸¸ ¾ÆÀÌÄÜÃâ·ÂÀÇ °æ¿ì ±× Å©±â°¡ °¡·Î´Â ¹ÙÀÌÆ® ´ÜÀ§·Î Á¦ÇѵǾî ÀÖÁö¸¸ Ãâ·Â¸¸Å­ Àº °¡·Î,¼¼·Î°¡ ±×·¡ÇÈ ÁÂÇ¥°¡ Áö¿øµÇ¾î¾ß ÇÕ´Ï´Ù. ±×·¯¹Ç·Î getimage,putimage ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö´Â ¾øÀ¾´Ï´Ù. hgGetImage ÇÔ ¼ö·Î ÀâÀº ¹öÆÛ³»¿ëÀº hgPutImage ·Î Ãâ·ÂÇÒ¶§ ±× À§Ä¡¸¦ ¿Å±æ ¼ö ¾ø°Ô µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. µû¶ó¼­ Ư¼ö ÇÔ¼ö¸¦ ¸¸µé¾î¾ß ÇÕ ´Ï´Ù. ÀÌ°ÍÀº getimage,putimage ÇÔ¼ö¿Í °ÅÀÇ Èí»çÇѵ¥,Ç÷¹ÀÎ ¹øÈ£¸¦ Àμö·Î ÁÖ°Ô µÇ¾î ÀÖ´Â °ÍÀÌ µ¶Æ¯ÇÕ´Ï´Ù. Áï getimage ¸¦ Read ·¹Áö½ºÅÍ (GC ÀÇ INDEX 4) ¸¦ 3,2,1,0 ·Î º¯È­½ÃÅ°¸é¼­ ¹ö ÆÛ¿¡ ´ã¾Æ¿Àµµ·Ï ¹Ù²Ù¾î ÁÖ¸é µÇ´Â °ÍÀÌÁÒ. ±×·¸°Ô Çؼ­ ¹Þ¾Æ¿Â µ¥ÀÌÅ͸¦ ¿¹Àü¿¡ ¼Ò°³Çß´ø m byte x n dot ±×·¡ÇÈ ÁÂÇ¥ Ãâ·Â ¸ð µâÀ» »ç¿ëÇؼ­ È­¸é¿¡ Ãâ·ÂÇØ ÁÝ´Ï´Ù. ¹°·Ð Ãâ·ÂÇÒ¶§µµ Ç÷¹ÀÎ º°·Î (Sequencer ÀÇ Map Mask ÀÌ¿ë,INDEX 2 ¹ø,8,4,2,1 ·Î °ªÀ» º¯È­½ÃÅ´) Ãâ·ÂÀ» ÇØÁÝ´Ï´Ù. °ãÄ¡´Â ¼ÀÀÌ µÇ´Âµ¥ Ãâ·ÂÇÒ¶§´Â ¹è °æÀ» Áö¿ì¸é¼­ Ãâ·ÂÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¾ÆÀÌÄÜÀ» µðÀÚÀÎ ÇÒ¶§´Â ¹è°æ¿¡ ¸ÂÃß¾î Èò»öµîÀ¸·Î ±× ¹è°æÀ» Çصδ °ÍÀÌ ÁÁ°ÚÁÒ. »ç½Ç ¾ÆÀÌÄÜ µðÀÚÀ̳ʸ¦ ¼³°èÇÏ´Ùº¸¸é È­ÀÏ Æ÷¸Ë¿¡ ½Å°æÀ» ¸¹ÀÌ ¾²°Ô µÇ±â ¶§¹®¿¡ ¼³°è°¡ º¹ÀâÇØ Áö¸®¶ó°í »ý°¢ÇÏÁö¸¸ ±×·¸Áö ¾Ê½À´Ï ´Ù. º¸Åë ¹ÙµÏÆÇ °°Àº °÷¿¡¼­ È­»ìÇ¥¸¦ À̵¿½ÃÅ°¸é¼­ BoxFill ·Î Ä¥ÇÏ°Ô µË´Ï´Ù. ÇÑÁ¡À» Ä¥ÇÒ¶§ ¸¶´Ù ¿À¸¥ÂÊ Æ¯º°±¸¿ª¿¡ Á¡Âï´Â ÇÔ¼ö·Î Á¡À» Âï½À´Ï´Ù. ±×·¯¸é ¾ÆÀÌÄÜÀÇ ½ÇÁ¦ ¸ð¾çÀÌ ÀÌ ±¸¿ª¿¡ ³ªÅ¸³ª°Ô µÇÁÒ. ±×·³ ÀúÀåÇÒ¶§´Â ÀÌ ½ÇÁ¦ ¸ð¾çÀÌ ³ªÅ¸³­ ºÎºÐÀ» Plane º°·Î Àоî¿À¸é ¾ÆÀÌÄÜÀÇ ÀúÀå µ¥ÀÌÅ͸¦ ¾òÀ» ¼ö ÀÖ°Ô µË´Ï ´Ù. ÀÐ¾î ¿Ã¶§µµ ¸¶Âù°¡Áö·Î ÇÕ´Ï´Ù. ¾ÆÀÌÄÜÀÇ µ¥ÀÌÅ͸¦ Àоî¿Â ÈÄ¿¡ Ưº° ±¸¿ª¿¡ Ç÷¹Àκ°·Î °ãÃļ­ Ç¥½ÃÇÏ¸é ½ÇÁ¦ ¸ð¾çÀÌ ³ªÅ¸ ³³´Ï´Ù. ÀÌ°ÍÀÌ (x1,y1)~(x2,y2) ¶ó°í ÇÏ¸é ½ÇÁ¦·Î ÀÌ ºÎºÐÀÇ Á¡ ÀÇ »ö±òÀ» ¸ðµÎ Àо ¹öÆÛ¿¡ µî·ÏÇÕ´Ï´Ù. ÀÌ ¹öÆÛÀÇ ³»¿ë´ë·Î ´Ù½Ã È­¸é ¹ÙµÏÆÇ(?) ¿¡ Ãâ·ÂÇÏ¸é µÇÁÒ. »ç½Ç ¾ÆÀÌÄÜ µå·Î¿ì ¾ø ´Â ¾ÆÀÌÄÜ Á¦¾î ·çƾÀº °øÇã(?) ÇÏÁÒ.. ±×·± ÀÌÀ¯¿¡¼­ °£´ÜÇÏ°Ô Çϳª ¸¸µé¾ú´Âµ¥..±×¸® ±â´ÉÀÌ ÁÁÀº °Ç ¾Æ³é¿ä. ½ºÅ©·Ñ ¹Û¿¡ ¾ø ¾î¿ä. ÇÏÁö¸¸ 16 Ä÷¯¸¦ Áö¿øÇÏ°í (ÇãŧÀº 2 »öÀÌÁö¸¸) 40x40 ±î ÁöÀÇ ¾ÆÀÌÄÜÀ» ±×¸±¼ö ÀÖ¾î¿ä. ºê°¡´Â .icv ÇãŧÀº .ich ·Î ÇصΠ´Â °ÍÀÌ ÁÁ°í¿ä.. ¾ÆÀÌÄÜÀ» ¶óÀ̺귯¸®Çü½ÄÀ¸·Î µî·ÏÇÒ ¼öµµ ÀÖ ¾î¿ä. È­ÀÏÇü½ÄÀ¸·Î ºÒ·¯¾µ¼öµµ ÀÖ°Ô µÇ¾î ÀÖ°í¿ä.. ±×·³ ÀåȲÇÏ °Ô ¼³¸í¸¸ ¸¹ÀÌ Çߴµ¥.. ÀÌÁ¦ ·çƾµéÀ» »ìÆ캸±â·Î ÇÏ°ÚÀ¾´Ï´Ù. À§¿¡¼­ º¸¸é ÇÊ¿äÇÑ ÇÔ¼öÁß Áß¿äÇÑ °ÍÀÌ.. Ç÷¹Àκ°·Î Àоî¿À´Â ÇÔ¼ö,Á¡À» Âï´Â ÇÔ¼ö,Á¡À» Àд ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼öµéÀº Ç㸣¹Ì ¶óÀ̺귯¸®¿¡ Æ÷ÇÔµÇ¾î ½ÇÁ¦ÀÇ ¾ÆÀÌÄÜ Á¦¾î ·çƾÀ» ±¸¼ºÇÏ°Ô µË ´Ï´Ù. Çãŧ¿¡¼­´Â ±×³É ¸Þ¸ð¸®¸¦ ÀÐÀ¸¸é µÇ´Ï±î ·çƾÀ» µû·Î º¸ ÀÌÁö´Â ¾Ê°ÚÀ¾´Ï´Ù. Âü.. ÇÑ°¡Áö ¤°í ³Ñ¾î°¥ °ÍÀ̶ó¸é Çãŧ ICON °ú VGA ICON ÀÇ È£È¯¹®Á¦ÀÔ´Ï´Ù. ȣȯÀº ¾øÀ¾´Ï´Ù. ÇÏÁö¸¸ Icondraw.exe ´Â ¾î´À¸ðµå¿¡¼­µç µÎ°¡Áö Çü½ÄÀ» ¸ðµÎ º¯È¯Çؼ­ ÀоîÁÝ´Ï´Ù. Çãŧ ¾ÆÀÌÄÜÀ» VGA ¿¡¼­ ÀÐÀ» ¶§´Â BitMap À» 4 ¹ø ¹Ýº¹Çؼ­ Èò»ö,°ËÀº»öÀÇ Á¶ÇÕÀ¸·Î º¸¿©ÁÝ´Ï´Ù. ¹Ý´ë´Â Á» ¾î·Á¿î µ¥.. Èò»öÀ» Á¦¿ÜÇÑ ³ª¸ÓÁö¸¦ °Ë°Ô º¸¿©ÁÖµµ·Ï ÇßÀ¾´Ï´Ù. ÀüüÀÇ Çü»ó¸¸À» ¾Ë¾Æº¼¼ö ÀÖÀ»»Ó ¿ÏÀüÇÑ º¯È¯Àº ¾î·Æ½À´Ï´Ù. ±×·³.. Çà ·¹ÀÎ º°·Î Àоî¿À´Â ÇÔ¼ö.. void hgVGetImagePlane(int x1,int y1,int x2,int y2,int pnum,unsigned char *buff) { int y_width; int x_width; asm push ds asm mov ax,y2 asm sub ax,y1 asm inc ax asm mov y_width,ax /* y_width=y2-y1+1 */ asm mov ax,x2 asm sub ax,x1 asm inc ax asm mov x_width,ax /* x_width=x2-x1+1 */ asm mov ax,80 asm mov bx,y1 asm mul bx asm mov bx,ax asm add bx,x1 /* bx = y1*80+x1 */ asm les di,buff asm mov ax,0a000h asm mov ds,ax asm mov cx,y_width asm mov dx,3ceh asm mov ah,BYTE PTR pnum /* 4 ¹ø¿¡ plane num */ asm mov al,4 asm out dx,ax g1: asm push cx asm mov si,bx asm mov cx,x_width asm cld asm REP movsb asm add bx,80 asm pop cx asm loop g1 asm mov ax,0f04h /* 4 ¹ø (ÀбâÁöÁ¤) ÃʱâÈ­ */ asm out dx,ax asm pop ds } ÀÌ ÇÔ¼öÀÇ ÀÎÀÚÁß¿¡¼­ Ưº°ÇÑ °ÍÀº Plane ¹øÈ£Àε¥ ÁÖÀÇÇÒ °ÍÀº Plane ¹øÈ£°¡ 0,1,2,3 À̶ó´Â °ÍÀÌÁÒ. ±×·³ Ç÷¹ÀÎ º°·Î ¾²´Â ÇÔ ¼ö.. void vicon_out(int x,int y,char *buff,int m,int n,char plane) { int y_width=n; int x_width=m; asm push ds asm lds si,buff /* load address */ asm mov dx,3c4h asm mov al,2 asm mov ah,plane /* map mask setting */ asm out dx,ax asm mov dx,3ceh /* writing mode */ asm mov ax,0005h asm out dx,ax asm mov ax,0f00h /* set/reset */ asm out dx,ax asm mov ax,0f01h /* set/reset enable */ 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 and al,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 dx,03ceh asm mov di,bx asm mov bx,ax /* bx <- ax */ asm mov cx,WORD PTR y_width nloop : asm push cx asm push di asm mov cx,WORD PTR x_width mloop : asm push cx asm mov ax,0000h /* color BLACK */ asm out dx,ax asm mov ax,bx /* ax restore */ asm mov al,8 asm out dx,ax /* bit mask setting */ asm mov cl,es:[di] asm mov es:[di],cl asm not ah asm out dx,ax /* reverse bit mask */ asm mov cl,es:[di+1] asm mov es:[di+1],cl asm mov ax,0f00h /* color Enable */ asm out dx,ax asm mov ax,bx /* ax restore */ asm mov cl,al asm mov al,ds:[si] asm ror al,cl asm and ah,al asm mov ch,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 asm not ah asm and ah,al 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 inc di asm pop cx asm loop mloop asm pop di asm pop cx asm add di,80 asm loop nloop asm mov ax,0ff08h asm out dx,ax asm mov dx,03c4h asm mov ax,0f02h asm out dx,ax /* map mask init */ asm pop ds } Á» º¹ÀâÇÏÁÒ ? ÇÏÁö¸¸ ¿¹Àü °­Á¿¡¼­ ¼³¸íÇß´ø vputchmn ÇÔ¼ö¿Í °ÅÀÇ °°´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¾´Ï´Ù. ´ÜÁö ´Ù¸¥ °ÍÀÌ ÀÖ´Ù¸é ÇÔ¼ö Ãʱ⿡ Sequencer ÀÇ Map Mask ·¹Áö½ºÅ͸¦ ÀÔ·Â ÀÎÀÚÀÎ Plane number ·Î ÃʱâÈ­ Çؼ­ ±× Plane ¸¸ ¾µ ¼ö ÀÖµµ·Ï ÇÑ´Ù´Â µ¥ ÀÖ À¾´Ï´Ù. ÇÔ¼ö ³¡ºÎºÐÀº ´Ù½Ã Map Mask ¸¦ 0xf ·Î ÃʱâÈ­ ÇÏ°í ÀÖ À¾´Ï´Ù. ÁÖÀÇÇÒ Á¡Àº ÀÌ ÇÔ¼öÀÇ Plane Number ´Â ¾Æ±î hgVGetImagePlane ÇÔ¼öÀÇ ÀÎÀÚ¿Í´Â ´Þ¸® 8,4,2,1 À̶ó´Â °ÍÀÔ´Ï ´Ù. °¢°¢ ¾Æ±î Àбâ ÇÔ¼öÀÇ 3,2,1,0 °ú ´ëÀÀÇÕ´Ï´Ù. ÀÌ ÇÔ¼öµéÀ» Àß »ç¿ëÇÒ ¼ö ÀÖÀ¸¸é VGA ±×·¡ÇÈÀ» Á»´õ Àß ´Ù·ê ¼ö ÀÖ°Ô µË´Ï ´Ù. Áï È­¸é ÀϺθ¦ ¿Å±â°Å³ª Çϴ¸ñÀûÀ¸·Î »ç¿ëÇÒ ¼öµµ ÀÖÀ¾´Ï ´Ù. ¹°·Ð º°µµÀÇ ¹öÆÛ°¡ ÇÊ¿äÇÑ ´ÜÁ¡Àº ÀÖÁö¸¸¿ä.. Âü.. Áß¿äÇÑ »ç½ÇÇϳª.. hgVGetImagePlane ÇÔ¼ö´Â °¡·Î¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î Á¦¾î ÇÕ´Ï´Ù. x ¹üÀ§°¡ 0~79 ¿¹¿ä. µû¶ó¼­ ¾ÆÀÌÄÜÀ» Á¦´ë·Î ¹öÆÛ¿¡ ³Ö À¸·Á¸é icondraw.exe ¿¡¼­ È­¸é Ưº° ±¸¿ª¿¡ Ç¥½ÃÇÒ¶§ x ÁÂÇ¥°¡ 8 ÀÇ ¹è¼ö°¡ µÇµµ·Ï ÇØ¾ß ¿ÞÂÊ ³¡ºÎÅÍ Á¦´ë·Î ¹öÆÛ¿¡ µé¾î°¡°Ú ÁÒ. ±×·¸°Ô ÇØ¾ß ¿Ã¹Ù¸¥ ¹öÆÛÀÇ ³»¿ëÀ» ¾òÀ» ¼ö°¡ ÀÖ°Ô µË´Ï´Ù. ÇÏÁö¸¸ vicon_out ÇÔ¼ö´Â ÀÌ·¸°Ô Çؼ­ ÀÐÀº ¹öÆÛÀÇ ³»¿ëÀ» °¡·Î, ¼¼·Î ¸ðµÎ µµÆ®´ÜÀ§·Î Ãâ·ÂÀÌ °¡´ÉÇϹǷΠ°ÆÁ¤ ¾øÀ¾´Ï´Ù. ±×·³ VGA ¿¡ Á¡Âï´Â ·çƾ°ú Á¡Àд ·çƾÀ» º¸¸é¼­ ³¡À» ³»µµ·Ï ÇÏ°ÚÀ¾ ´Ï´Ù. void hgVPlotXy(int x,int y,char color) { asm mov dx,3ceh asm mov ax,0205h asm out dx,ax asm mov ax,WORD PTR y 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 asm and al,07h asm mov cl,al asm mov ah,080h asm shr ah,cl asm mov dx,03ceh asm mov al,8 asm out dx,ax asm mov ax,0a000h asm mov es,ax asm mov ah,BYTE PTR es:[bx] asm mov ah,BYTE PTR color asm mov es:[bx],ah asm mov ax,0005h asm out dx,ax asm mov ax,0ff08h asm out dx,ax } char hgVGetPlotXy(int x,int y) { asm mov ax,WORD PTR y 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 asm and al,07h asm mov cl,al asm mov ah,080h asm shr ah,cl asm mov si,bx /* si is offset */ asm mov bh,ah /* dl is bitmask */ asm mov bl,0 /* bl is return value */ asm mov dx,03ceh asm mov ax,0ff08h asm out dx,ax asm mov ax,0a000h asm mov es,ax asm mov cx,4 lp: asm shl bl,1 asm mov al,4 asm mov ah,cl asm dec ah /* plane num */ asm out dx,ax asm mov al,BYTE PTR es:[si] /* reading */ asm and al,bh /* masking */ asm jz next asm inc bl next: asm loop lp asm xor ax,ax asm mov al,bl /* return value */ } µÎ ÇÔ¼ö ¸ðµÎ ¶È°°Àº ÁÖ¼Ò°è»ê ·çƾ,ºñÆ®¸¶½ºÅ© °è»ê ·çƾÀ» Æ÷ ÇÔÇÏ°í ÀÖÀ¾´Ï´Ù. ¿Ö ¼­ºê·çƾȭ ½ÃÅ°Áö ¾Ê´À³Ä´Â Áú¹®¿¡´Â »ç½Ç ´ë´äÇÒ °ÍÀÌ º°·Î ¾øÀ¾´Ï´Ù. inline assembly ¾È¿¡¼­ ¿ÜºÎ·Î Call ÇÏ´Â °ÍÀ» Àú´Â º°·Î ÁÁ¾ÆÇÏÁö ¾Ê½À´Ï´Ù. ¼Óµµ¹®Á¦µµ ÀÖ°í ¿ä. Line ÇÔ¼ö¸¦ Á¦ÀÛÇϸ鼭 ¼Óµµ¹®Á¦¸¦ ¸¹ÀÌ »ý°¢ÇÏ°Ô µÇ¾ú±â ¶§¹®À̶ó°í³ª ÇÒ±î¿ä... ´ÙÀ½¿¡´Â ÀÌ·¸°Ô ¾ò¾îÁø ¾ÆÀÌÄÜ È­ÀÏÀ» ÀÐ°í ¾²´Â ·çƾ°ú ½ÇÁ¦·Î ¾ÆÀÌÄÜÀ» ÀÌ¿ëÇÒ¶§ »ç¿ëµÇ´Â ·çƾÀ» »ì Æ캸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ±×·³ Ç㸣¹Ì...