VESA FAQ 96/12/08 ±è¼ºÀÍ ( NOERROR ) 1. bank¶õ ¹«¾ùÀΰ¡ ? 2. vesa ¸ðµå¿¡ °üÇØ 3. °íÇØ»óµµ¿¡¼­ÀÇ ÆÄ·¿ ·çƾÀº ? 4. ¹ðÅ© ÀüȯÀº ¾î¶»°Ô ÇÏ´Â °¡ ? 5. Ä«µåº° º£»ç Á¤º¸´Â ¾î¶»°Ô ¾Ë ¼ö ÀÖ³ª ? 6. ÇÏÀÌÄ®¶ó, Æ®·ç Ä®¶ó 󸮴 ? 7. º£»ç ¹öÁ¯Àº ? 8. VESAÀÇ ³í¸®Àû Áֱ⠺¯°æ¿¡ ´ëÇØ 9. VESA BIOS 10. ±âŸ 11. Âü°í ÀÚ·á, ¼­Àû 0. vesa faq ³ëÆ® ¾à°£ ³»¿ëÀ» Ãß°¡Çß½À´Ï´Ù. (º°·Î º¸ÀÌ´Â ³»¿ëÀº ¾øÁö¸¸...) ù¹öÁ¯¾÷³×¿ä. 1. bank¶õ ¹«¾ùÀΰ¡ ? VGAÀÇ ¸Þ¸ð¸®´Â A000:0000¿¡ 64k¹ÙÀÌÆ®°¡ ÇÒ´çµÇ¾î ÀÖ½À´Ï´Ù. ±×·¯³ª ÇØ»óµµ°¡ ³ô¾ÆÁö¸é¼­ 64k ÀÌ»óÀÇ ¸Þ¸ð¸®¸¦ ¿ä±¸ÇÏ°Ô µÇ¸é¼­ ±âÁ¸ÀÇ ºñµð¿Àü°è¸¦ À¯ÁöÇϸ鼭 ´õ ¸¹Àº ¸Þ¸ð¸®¸¦ Ȱ¿ëÇϱâ À§ÇØ ¹ðÅ·À̶õ °³³äÀ» µµÀÔÇÏ°Ô µË´Ï´Ù. VGAÀÇ ¸Þ¸ð¸®¸¦ 64k´ÜÀ§(VGA¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖÁö¸¸ ÆíÀÇ»ó 65536¶ó ÇÔ)·Î ¼ø¼­´ë·Î ³ª´©¾î ³õ¾Ò´Ù°í ÀÌÇØÇÏ½Ã¸é ÆíÇÕ´Ï´Ù. ¹ðÅ© ¹øÈ£´Â ÀÏÁ¤ÇÑ Å©±â·Î ³ª´©¾îÁø ¸Þ¸ð¸® Áß ¸î ¹øÂ° µ¢¾î¸®Àΰ¡¸¦ ÀǹÌÇÕ´Ï´Ù. ¸¸¾à ¿ÀÇÁ¼ÂÀÌ (123456) ÀÎ ¸Þ¸ð¸®¿¡ ÀÓÀÇÀÇ µ¥ÀÌÅ͸¦ ¾²·Á ÇÑ´Ù¸é ¸ÕÀú ¹ðÅ©ÀÇ ¹øÈ£¿Í ½ÇÁ¦ ´ëÀ﵃ ºñµð¿ÀÀÇ ¸Þ¸ð¸®¸¦ ±¸ÇÕ´Ï´Ù. int bank = 123456 / BANK_SIZE ; int offset = 123456 % BANK_SIZE ; ±¸ÇÑ ÈÄ¿¡´Â ¸ÕÀú ±¸ÇØÁø ¹ðÅ© ³Ñ¹ö·Î ¹ðÅ© ÀüȯÀ» ÇØÁÝ´Ï´Ù. ´ÙÀ½¿£ 0a000 : offset ÀÇ ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ ½á ³Ö¾î ÁÖ¸é µË´Ï´Ù. char *video = (char*) 0xa0000000l ; // ¿ÓÄÞÀ̶ó¸é 0xa0000 video[offset] = ... ¹ðÅ©¸¦ °í·ÁÇÑ ½´ÆÛ VGA Á¦¾î »ó ÁÖÀÇÇÒ Á¡Àº ¹ðÅ©°¡ ¹Ù²î´Â ºÎºÐÀÇ Ã³¸®ÀÔ´Ï´Ù. ¸¸¾à À§¿Í °°ÀÌ ÇÑ ¹ÙÀÌÆ®´ÜÀ§·Î ¾×¼¼½º ÇÑ´Ù¸é ¹®Á¦µÉ °ÍÀÌ ¾øÀ» °ÍÀÔ´Ï´Ù. ±×·¯³ª ¸¸¾à ¿ÀÇÁ¼ÂÀÌ 65535ÀÎ À§Ä¡¿¡¼­ µÎ ¹ÙÀÌÆ®¸¦ ¾×¼¼½º ÇÏ·Á ÇÑ´Ù¸é ÇÑ ¹ÙÀÌÆ®¸¦ ½á ÁØ ÈÄ¿¡ ¹ðÅ©¸¦ ´ÙÀ½À¸·Î ÀüȯÇÑ ´ÙÀ½¿¡ ³ª¸ÓÁö ÇÑ ¹ÙÀÌÆ®¸¦ ½á ³Ö¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. ¸¸¾à µ¿½Ã¿¡ µÎ ¹ÙÀÌÆ®¸¦ ¾²·Á ÇÏ¸é ½Ã½ºÅÛÀº ´Ù¿îµË´Ï´Ù. ¹ðÅ©´Â ¾²±â ¸ðµå¿Í Àб⠸ðµå·Î ºÐ¸®µÇ¾î ÀÖ½À´Ï´Ù. ( VGA¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ) 2. vesa ¸ðµå ±×¸®°í ¸ðµå ÀüȯÀ» ÇÒ ¶§´Â vesa bios¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. ( ¸ðµå ¹øÈ£´Â 9¹ø Âü°í. ) union REGS r; struct SREGS sr; r.x.ax = 0x4f02 ; r.x.bx = ¸ðµå¹øÈ£ ; int86(0x10, &r, &r); if(r.h.ah==1) ... // ÇØ´ç¸ðµå¸¦ Áö¿øÇÏÁö ¾ÊÀ½ ¸¸¾à ½Ã½ºÅÛÀÇ VGA°¡ ÇØ´ç ¸ðµå¸¦ Áö¿øÇÏÁö ¾ÊÀ» °æ¿ì¿¡´Â ah°ªÀº 1ÀÌ°í ¸ðµå º¯È¯¿¡ ¼º°øÇßÀ» °æ¿ì 0À̹ǷΠÀ̸¦ Á¶»çÇØ¼­ ¸ðµå Àüȯ ¼º°ø, ½ÇÆÐ ¿©ºÎ¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. ( ¿ª½Ã 9¹ø Âü°í ) ( ¿ÓÄÞ¿¡¼± int86 ´ë½Å¿¡ int386À» ÀÌ¿ëÇÏ¸é µÇ°ÚÁÒ ? ) 3. °íÇØ»óµµ¿¡¼­ÀÇ ÆÄ·¿ ó¸® ·çƾÀº ? ÀúÇØ»óµµÀÏ ¶§¿Í °°½À´Ï´Ù. ( ÆÄ·¿ ·¹Áö½ºÅÍ 3c7h, 3c8h, 3c9h »ç¿ë ) ¹°·Ð ÇÏÀÌÄ®¶ó, Æ®·ç Ä®¶ó ¸ðµå¿¡¼± ÆÄ·¿ÀÌ Çʿ䰡 ¾ø½À´Ï´Ù. ÆÄ·¿À» ÀÐÀ» ¶§´Â outportb( 0x3c7, ÀÐÀ» ÆÄ·¿ÀÇ ¹øÈ£) r = inportb( 0x3c9 ) g = inportb( 0x3c9 ) b = inportb( 0x3c9 ) ÆÄ·¿À» Á¤ÀÇÇϰíÀÚ ÇÒ ¶§¿¡´Â outportb( 0x3c8, ¾²°íÀÚ ÇÏ´Â ÆÄ·¿ÀÇ ¹øÈ£) outportb( 0x3c9, r ) outportb( 0x3c9, g ) outportb( 0x3c9, b ) ( ¿ÓÄÞÀº outportb, inportb ´ë½Å¿¡ outp, inp¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. ) 4. ¹ðÅ© ÀüȯÀº ¾î¶»°Ô ÇÏ´Â °¡ ? ¹ÙÀÌ¿À½º ÀÎÅÍ·´Æ® 10h¸¦ ÀÌ¿ëÇØ¼­¹ðÅ© ÀüȯÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. union REGS r ; r.x.ax = 0x4f05 ; r.x.bx = À©µµ ¹øÈ£ ; r.x.dx = ¹ðÅ© ¹øÈ£ ; int86(0x10, &r, &r) ; ¿©±â¼­ ÁÖÀÇÇØ¾ß ÇÒ Á¡ÀÌ ¸î °¡Áö ÀÖ½À´Ï´Ù. ù ¹øÂ°·Î À©µµ ¹øÈ£µµ VGA¸¶´Ù ´Ù¸£´Ù´Â Á¡ÀÔ´Ï´Ù. ±×¸®°í ¾²±â ¸ðµå³Ä Àб⠸ðµå¿¡ µû¶ó ´Þ¶óÁö°í¿ä. µÎ ¹øÂ°·Î ÀϺΠVGA¿¡¼­´Â ¹Ù²Ù°íÀÚ ÇÏ´Â ¹ðÅ© ¹øÈ£¸¦ ¸î ºñÆ® ½¬ÇÁÆ® ÇØ Áà¾ß ÇÕ´Ï´Ù. ÀÌ´Â vesaÁ¤º¸¸¦ Á¶»çÇØ¼­ ¾Ë¾Æ ³¾ ¼ö ÀÖÀ¸¹Ç·Î º° ¹®Á¦´Â ¾ø½À´Ï´Ù. ±×¸®°í °°Àº À©µµ¿¡¼­ ÀÌÀüÀÇ ¹ðÅ©¿Í ¹Ù²Ù°íÀÚ Çϴ¹ðÅ©ÀÇ ¹øÈ£°¡ °°´Ù¸é ¹ðÅ© ÀüȯÀ» Àç È£ÃâÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ( ±×¸®°í Àç È£ÃâÇÏ¸é ´Ù¿îÀÌ À¯¹ßµÉ ¼ö ÀÖÀ½ ) 5. Ä«µåº° º£»ç Á¤º¸´Â ¾î¶»°Ô ¾Ë ¼ö ÀÖ³ª ? µÎ °¡Áö·Î ³ª´©¾î »ìÆìº¼ ¼ö ÀÖ½À´Ï´Ù. ( 9¹ø VESA BIOSºÎºÐ Âü°í ) ¸ÕÀú vesa¸¦ Áö¿øÇÏ´Â Áö ¿©ºÎÀÔ´Ï´Ù. struct { char VESASignature[4]; // 'VESA' char VESAVersion[2]; char OEMStringPtr[4]; char Capabilities[4]; char VideoModePtr[4]; char TotalMemory[2]; charreserved[232]; } VesaForm ; union REGS r; struct SREGS sr; r.x.ax = 0x4f00; r.x.di = FP_OFF(&VesaForm); sr.es= FP_SEG(&VesaForm); int86x(0x10, &r, &r, &sr); ÀÌ¿Í °°Àº ¹æ¹ýÀ¸·Î µ¥ÀÌÅ͸¦ ¾ò¾î ¿É´Ï´Ù. ( ¿ÓÄÞÀÇ °æ¿ì ¸®¾ó ÀÎÅÍ·´Æ®¸¦ È£ÃâÇØ¾ß ÇÏ¸ç ¸®ÅÏ ¹ÞÀ» VesaFormÀº 640kÀÌÇÏÀÇ µµ½º ¸Þ¸ð¸®¿©¾ß ÇÕ´Ï´Ù. ) ¸¸¾à VESA¸¦ Áö¿øÇÑ´Ù¸é (vesa bios°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é) VesaFrom.VESASignature¿¡´Â 'VESA'¹®ÀÚ¿­ÀÌ µé¾î°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ½Àº °¢ ¸ðµåÀÇ Á¤º¸¸¦ ¾ò¾î ¿À´Â ºÎºÐÀÔ´Ï´Ù. struct { short ModeAttributes; char WinAAttributes, WinBAttributes; // À©µµA,BÀÇ ¾²±âÀбâ¹ðÅ©Áö¿ø short WinGranularity; // window granularity in K short WinSize; // window size in K short WinASegment, WinBSegment; // start segment of window A,B long WinFuncPtr; short BytesPerScanLine; // ÇѶóÀÎ´ç ¹ÙÀÌÆ®¼ö short XResolution, YResolution; // °¡·Î¼¼·ÎÅ©±â char XCharSize, YCharSize; char NumberOfPlanes; char BitsPerPixel; // ÇÑÇȼ¿´ç *ºñÆ®*¼ö char NumberOfBanks, MemoryModel; char BankSize; // ¹ðÅ©ÀÇ Å©±â char NumberOfImagePages; char reservation; char RedMaskSize, RedFieldPosition; char GreenMaskSize, GreenFieldPosition; char BlueMaskSize, BlueFieldPosition; char RsvdMaskSize, RsvdFieldPosition; char DirectColorModeInfo, res2[216]; } ModeInfo ; union REGS r ; struct SREGS sr; r.x.ax = 0x4f01 ; r.x.cx = º¯°æÇϰíÀÚ ÇÏ´Â ¸ðµå ; r.x.di = FP_OFF(&ModeInfo) ; // ¿ÀÇÁ¼Â sr.es = FP_SEG(&ModeInfo) ; // ¼¼±×¸ÕÆ® int86x(0x10, &r, &r, &sr) ; ¿©±â¼­ ÁÖ¸ñÇÒ °ÍÀº ´ÙÀ½°ú °°Àº ¸î °¡Áö·Î ¿ä¾àÇÒ ¼ö ÀÖ½À´Ï´Ù. 1. ¹ðÅ©ÀÇ Å©±â´Â ? 2. ¾²±â ¹ðÅ©°¡À©µµ¿ì AÀΰ¡ À©µµ¿ì BÀΰ¡ ? 3. Àб⠹ðÅ©°¡ À©µµ¿ì AÀΰ¡ À©µµ¿ì BÀΰ¡ ? 4. ¹ðÅ©Àüȯ½Ã ¹ðÅ© ¹øÈ£¸¦ ¸î ºñÆ® ½¬ÇÁÆ® ÇØÁÖ¾î¾ß ÇÏ´Â °¡ ? »ç½Ç 256Ä®¶ó¿¡ ÇØ»óµµ 640x480¸ðµå·Î ÀüȯÇÑ´Ù°í Çϸé Çȼ¿´ç 8ºñÆ®, ¶óÀδç 640¹ÙÀÌÆ®,.. °°Àº °Ç ±×³É ¾Ë ¼ö Àֱ⠶§¹®¿¡ ±»ÀÌ Á¶»ç¸¦ ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ´Ü À§ÀÇ 4°¡Áö »çÇ×Àº VGA¸¶´Ù ´Ù¸¥ °ªÀÌ ³ª¿À¹Ç·Î ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. Â÷±ÙÂ÷±Ù ¾Ë¾Æº¸ÁÒ. ¹ðÅ©ÀÇ Å©±â(size)´Â ´Ü¼øÈ÷ ¸®ÅÏµÈ °ªÀ» Á¶»çÇÏ¸é µË´Ï´Ù. long BANK_SIZE; BANK_SIZE = ModeInfo.WinSize*1024 ; ¾²±â ¹ðÅ©°¡ À©µµ¿ìAÀÎÁö BÀÎÁö´Â ´ÙÀ½°ú °°Àº ·çƾÀ» ÀÌ¿ëÇÏ¸é µË´Ï´Ù. int BANK_READ_SWITCH; int BANK_WRITE_SWITCH; if((ModeInfo.WinAAttributes&3)==3) BANK_READ_SWITCH=0; // À©µµ A if((ModeInfo.WinAAttributes&5)==5) BANK_WRITE_SWITCH=0; if((ModeInfo.WinBAttributes&3)==3) BANK_READ_SWITCH=1; // À©µµ B if((ModeInfo.WinBAttributes&5)==5) BANK_WRITE_SWITCH=1; ¿©±â¼­ ÇÏÀ§ 1ºñÆ®±îÁö µ¿½Ã¿¡ Á¶»çÇÏ´Â ÀÌÀ¯´Â À©µµ A°¡ Á¸ÀçÇÏ´Â Áö(Áö¿øµÇ´ÂÁö) ,À©µµ¿ì B°¡ Áö¿øµÇ´Â ÁöÀÇ ¿©ºÎµµ °°ÀÌ °í·ÁÇϱâ À§ÇÔÀÔ´Ï´Ù. ¸î ¹ÙÀÌÆ® ½¬ÇÁÆ®ÇÒ °ÍÀΰ¡´Â ´ÙÀ½°ú °°ÀÌ ¾ò¾î ¿Ã ¼ö ÀÖ½À´Ï´Ù. int BANK_SHIFT; for(BANK_SHIFT=0;(64>>BANK_SHIFT)!=ModeInfo.WinGranularity;BANK_SHIFT++); À̸¦ ÀÌ¿ëÇØ¼­ ¹ðũó¸® ºÎºÐÀ» ¿Ï¼ºÇغ¸°Ú½À´Ï´Ù. int window[2]={0,0}; // À©µµ¿ì A¿Í BÀÇ ÇöÀç¹ðÅ©¹øÈ£ void WRITE_BANK(int num) { union REGS r ; if(window[BANK_WRITE_SWITCH] == bank) // º¯È¯ÇÒ Çʿ䰡 ¾ø´ÂÁö °Ë»ç return; r.x.ax = 0x4f05 ; r.x.bx = BANK_WRITE_SWITCH; r.x.dx = num << BANK_SHIFT; int86(0x10, &r, &r) ; window[BANK_WRITE_SWITCH] = bank ; // ÇöÀç À©µµ¿ìÀÇ ¹ðÅ©¹øÈ£ ÀúÀå } ¸¸¾à Àб⠹ðÅ©¸¦ ±³È¯ÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé·Á°í ÇÑ´Ù¸é À§ÀÇ ÇÔ¼ö ¼Ò½º¿¡¼­ Àбâ¹ðÅ©°¡ À©µµ¿ì A¸¦ ÀÌ¿ëÇϴ°¡ À©µµ¿ì B¸¦ ÀÌ¿ëÇÏ´Â °¡¸¦ ³ªÅ¸³½ BANK_READ_SWITCH¸¦ BANK_WRITE_SWITCH ·Î ¹Ù²îÁÖ´Â °Í¸¸ ÇØÁÖ¸é µË´Ï´Ù. 6. ÇÏÀÌÄ®¶ó, Æ®·ç Ä®¶ó 󸮴 ? ÇÏÀÌÄ®¶ó´Â 32k, 64k·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. ¸ðµÎ ÇÑ Çȼ¿´ç 2¹ÙÀÌÆ®¸¦ Â÷ÁöÇÕ´Ï´Ù. (°¢ 15,16ºñÆ®¸¦ Â÷Áö) Æ®·ç Ä®¶ó´Â 3¹ÙÀÌÆ®¸¦ Â÷ÁöÇÕ´Ï´Ù. ÇÏÀÌÄ®¶ó¿Í Æ®·ç Ä®¶ó°¡ 256Ä®¶ó³ª 16Ä®¶ó¿Í ´Ù¸¥ Á¡À̶ó¸é µû·Î Á¤ÀÇµÈ ÆÄ·¿À» »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ±×³É Çȼ¿°ªÀ» ÆÄ·¿°ªÀ¸·Î ÀÌ¿ëÇÕ´Ï´Ù. 256Ä®¶óÀÇ °æ¿ì °ËÁ¤»öÀ» Âï°íÀÚ ÇÑ´Ù¸é ÆÄ·¿°ªÀÌ °ËÁ¤»öÀ¸·Î Á¤ÀÇµÈ ÆÄ·¿ÀÇ ¹øÈ£¸¦ ¸Þ¸ð¸®¿¡ ½á ÁÖ¾î¾ß Çϳª ÇÏÀÌÄ®¶ó³ª Æ®·ç Ä®¶ó´Â ±×³É °ËÁ¤»öÀÇ ÆÄ·¿°ªÀ» ½á ÁÖ¸é µË´Ï´Ù. 32kÀÇ °æ¿ì 2 ¹ÙÀÌÆ®´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµË´Ï´Ù. f e d c b a 9 8 7 6 5 4 3 2 1 0 x x x x x : Blue x x x x x : Green x x x x x : Red ÆÄ·¿º°·Î °¢ 5ºñÆ®¾¿À» »ç¿ëÇÏ´Â ²ÃÀÔ´Ï´Ù. ±×·¯´Ï±î °¢Ä®¶ó´Â 0¿¡¼­ 31»çÀÌÀÇ °ªÀ» °¡Áú ¼ö ÀÖÁö¿ä. ¸¸¾à ( R,G,B°ªÀÌ 0,31,0ÀÎ) ¿ÏÀüÇÑ ÃÊ·Ï»öÀ» Âï°íÀÚ ÇÑ´Ù¸é 03e0h¸¦ ¸Þ¸ð¸®¿¡ ½áÁÖ¸é µÇ´Â °ÅÁÒ. ( e0h, 03h¸¦ ¼ø¼­ÀÓ ) ( 03e0h´Â 5¿¡¼­ aºñÆ®±îÁö´Â 1ÀÌ°í ³ª¸ÓÁö´Â 0ÀÎ °ªÀÔ´Ï´Ù. ) 64k color ÀÇ °æ¿ì¿¡´Â greenÀ» 6ºñÆ® »ç¿ëÇÕ´Ï´Ù. f e d c b a 9 8 7 6 5 4 3 2 1 0 x x x x x : Blue x x x x x x : Green x x x x x : Red 16M colorÀÇ °æ¿ì´Â ¹«Ã´ ´Ü¼øÇÕ´Ï´Ù. ÆÄ·¿ÀÇ °ªÀ» BGR ¼ø¼­´ë·Î ½á ÁÖ¸é µË´Ï´Ù. ( ¼ø¼­¿¡ ÁÖÀÇÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù. ) °¢ ÆÄ·¿°ªÀº 0¿¡¼­ 255ÀÇ °ªÀ» °¡Áú ¼ö ÀÖÀ¸¹Ç·Î ÈξÀ dzºÎÇÑ »öÀ» ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à È­¸éÀÇ ¸Ç À§ÂÊ ÁÂÃø¿¡ »¡°£»ö Á¡À» Âï°íÀÚ ÇÑ´Ù¸é ¸ÕÀú ¹ðÅ©¸¦ 0À¸·Î ¹Ù²Û ÈÄ¿¡ a000:0000ºÎÅÍ Â÷·Ê·Î 0, 0, 255¸¦ ½á ÁÖ¸é µË´Ï´Ù. ( R=255, G=0, B=0 ) ÇÏÀÌÄ®¶ó, Æ®·ç Ä®¶ó ¿ª½Ã 256Ä®¶ó¿Í ¸¶Âù°¡Áö·Î ¹ðÅ©°¡ Àû¿ëµË´Ï´Ù. ÇÑ ¹ðÅ©ÀÇ »çÀÌÁî¿¡ µé¾î°¡´Â Çȼ¿¼ö°¡ ÁÙ¾îµç´Ù´Â °Í ¿Ü¿¡´Â ´Ù¸¥ Á¡ÀÌ ¾øÁö¿ä. ¹ðÅ©´Â ´Ü¼øÈ÷ ¸Þ¸ð¸® ¸ÅÇÎÀÇ ÇÑ ¹æ¹ýÀ¸·Î »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ( ¹ðÅ©´Â È®ÀåµÈ ºñµð¿À ¸Þ¸ð¸®¸¦ ¾×¼¼½º Çϱâ À§ÇÑ ¼ö´ÜÀÏ »ÓÀÌ´Ù¶ó´Â Á¤µµ ) ±×·¯³ª °ñÄ¡ ¾ÆÇ °ÍÀº Æ®·ç Ä®¶ó ¸ðµåÀÌÁÒ. ÇÏÀÌÄ®¶óÀÇ °æ¿ì¿¡µµ ÇÑ Çȼ¿À» ¿¢¼¼½ºÇÏ´Â µ¥´Â ¹ðÅ©°¡ ¹Ù²ð ÀÏÀÌ ¾ø½À´Ï´Ù. ( ¦¼öÀ̹ǷΠ) ±×·¯³ª Æ®·ç Ä®¶óÀǰæ¿ì 3¹ÙÀÌÆ® ´ÜÀ§·Î ±¸¼ºµÇ¾î À־ ¹ðÅ©ÀÇ Å©±âÂë µÇ´Â À§Ä¡¿¡ Çȼ¿À» Âï°íÀÚ ÇÒ ¶§´Â Çȼ¿À» Âï´Â µµÁß(?)¿¡ ¹ðÅ© ±³È¯À» ÇØ¾ß ÇÕ´Ï´Ù. ±×·¯´Ï±î °æ¿ì¿¡ µû¶ó¼± Bµ¥ÀÌÅ͸¦ ¾´ ÈÄ¿¡ ¹ðÅ©¸¦ ¹Ù²Ù°í ´Ù½Ã GBµ¥ÀÌÅ͸¦ ½á¾ß Çϰųª BGµ¥ÀÌÅ͸¦ ¾²°í RÀÇ µ¥ÀÌÅ͸¦ ½á¾ß ÇÑ´Ù´Â ¼Ò¸®ÀÔ´Ï´Ù. ÀÌ´Â ±¸ÇöÇÒ ¶§ ÁÖÀÇÇØ¾ß ÇÒ ºÎºÐÀÔ´Ï´Ù. 7. º£»ç¹öÁ¯Àº ? ÇöÀç±îÁö º£»ç 2.0 ¹öÁ¯ÀÇ ±Ô°Ý±îÁö ³ª¿Í ÀÖ½À´Ï´Ù. ( º£»ç ±×·ìÀº ¸ðµç VGA¿¡ Àû¿ëµÇ´Â SVGA ÇÁ·Î±×·¡¹ÖÀÇ ±Ô°Ý°ú °°Àº °ÍÀ» ¸¸µé¾î º¸ÀÚ´Â Àǵµ¿¡¼­ Áö±Ý°ú °°Àº VESABIOSÇüÅÂÀÇ Ç¥ÁØÈ­¸¦ Á¦½ÃÇß°í ¸ðµç VGA¿¡¼­ À̸¦ µû¸£°í ÀÖ´Â °ÅÁÒ. ) Å©°Ô °¢ ¹öÁ¯ÀÇ Æ¯Â¡À» º¸ÀÚ¸é 1.0ÀÇ °æ¿ì 256Ä®¶ó±îÁö Áö¿øÇϸç 1.2ÀÇ °æ¿ì¿¡´Â ÇÏÀÌÄ®¶ó, Æ®·ç Ä®¶ó°¡ Ãß°¡µÇ¾ú°í 2.0ÀÇ °æ¿ì ¼±Çü ¸Þ¸ð¸® ¹æ½ÄÀ» Áö¿øÇÕ´Ï´Ù 8. VESAÀÇ ³í¸®Àû Áֱ⠺¯°æ¿¡ ´ëÇØ VESA BIOS·Î Áö¿øÀÌ µË´Ï´Ù. ( int 10h ax=4f06h ) ( 9¹ø Âü°í ) ±×·¡¼­ °¡·Î±æÀ̸¦ 2ÀÇ Á¦°ö¼ö·Î ¼³Á¤Çؼ­ ÇÁ·Î±×·¡¹Ö ÇÏ´Â ¹æ¹ýÀÌ °¡´ÉÇÕ´Ï´Ù. ÀÌ °æ¿ì ¹ðÅ© ±¸ÇϱⰡ ½±°í °¢ ¶óÀÎ Áß°£¿£ ¹ðÅ©°¡ ÀüȯµÇ´Â ºÎºÐÀÌ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡¶óÀÎÀÌ ¹Ù²î´Â ºÎºÐ¿¡¼­¸¸ ¹ðÅ© üũ¸¦ °í·ÁÇØ ÁÖ¸é µË´Ï´Ù. ±×·¯³ª ¾Æ½±°Ôµµ ÀÌ ¹æ¹ýÀº ȣȯ¼º¿¡ ¹®Á¦°¡ ÀÖ´Â °É·Î ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù. ^^; ( ȣȯ¼º¿¡ ¹®Á¦°¡ ÀÖ´Ù¸é Ä¡¸íÀûÀÌÁö¿ä. ) 9. VESA BIOS ( Ãâó : ¶öÇÁºê¶ó¿î ÀÎÅÍ·´Æ® ¸®½ºÆ® ) ----------104F00----------------------------- INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION AX = 4F00h ES:DI -> 256-byte buffer for SuperVGA information (see below) Return: AL = 4Fh function supported AH =status 00h successful 01h failed Format of SuperVGA information: Offset Size Description 00h 4 BYTEs signature ('VESA') 04h WORD VESA version number 06h DWORD pointer to OEM name 0Ah 4 BYTEs capabilities 0Eh DWORD pointer to list of supported VESA and OEM video modes Terminated with 0FFFFh. 12h WORD Video memory in 64k blocks 14h 236 BYTEs reserved Note: Some VESA drivers will write more than the expected 256 bytes. ----------104F01----------------------------- INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION AX = 4F01h CX = SuperVGA video mode ES:DI -> 256-byte buffer mode information (see below) Return: AL = 4Fh function supported AH = status 00h successful 01h failed Format of mode information: Offset Size Description 00h WORD mode attributes bit 0: mode supported bit 1: optional information available bit 2: BIOS output supported bit 3: set if color, clear if monochrome bit 4: set if graphics mode, clear if text mode 02h BYTE window A attributes bit 0: exists bit 1: readable bit 2: writable bits 3-7 reserved 03h BYTE window B attributes (as for window A) 04h WORD window granularity in K 06h WORD window size in K 08h WORD start segment of window A 0Ah WORD start segment of window B 0Ch DWORD -> FAR window positioning function (equivalent to AX=4F05h) 10h WORD bytes per scan line ---remainder is optional for VESA modes, needed for OEM modes--- 12h WORD width in pixels 14h WORD height in pixels 16h BYTE width of character cell in pixels 17h BYTE height of character cell in pixels 18h BYTE number of memory planes 19h BYTE number of bits per pixel 1Ah BYTE number of banks 1Bh BYTE memory model type 0 Text 1 CGA graphics 2 Hercules Graphics 3 EGA 16 color 4 Packed pixels 5 Non chain 4 256 color modes 6 Direct 15/16/24 bit 7 YUV 8-0Fh Reserved for VESA 10h-0FFh Reserved for OEM 1Ch BYTE size of bank in K 1Dh BYTE number of image pages 1Eh BYTE reserved(0) ------VBE v1.2+ -------------------------- 1Fh BYTE Red mask size 20h BYTE Red mask position 21h BYTE Green mask size 22h BYTE Green mask position 23h BYTE Blue mask size 24h BYTE Blue mask position 25h BYTE Reserved mask size 26h BYTE Reserved mask position 27h BYTE Direct Screen mode info 28h BYTE Res(0) ----------104F02----------------------------- INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE AX = 4F02h BX = mode bit 15 set means don't clear video memory Return: AL = 4Fh function supported AH = status 00h successful 01h failed Values for VESA video mode: 100h 640x400x256 101h 640x480x256 102h 800x600x16 103h 800x600x256 104h 1024x768x16 105h 1024x768x256 106h 1280x1024x16 107h 1280x1024x256 108h 80x60 text 109h 132x25 text 10Ah 132x43 text 10Bh 132x50 text 10Ch 132x60 text ------------ VBE v1.2+ ------------------ 10Dh 320x200 32k 10Eh 320x200 64k 10Fh 320x200 16M 110h 640x480 32k 111h 640x480 64k 112h 640x480 16M 113h 800x600 32k 114h 800x600 64k 115h 800x600 16M 116h 1024x768 32k 117h 1024x768 64k 118h 1024x768 16M 119h 1280x1024 32k 11Ah 1280x1024 64k 11Bh 1280x1024 16M ----------104F03----------------------------- INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE AX = 4F03h Return: AL = 4Fh function supported AH= status 00h successful 01h failed BX = video mode (see AX=4F02h) ----------104F06----------------------------- INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET LOGICAL SCAN LINE LENGTH AX = 4F06h BL = function 00h set scan line length CX = desired width in pixels 01h get scan line length Return: AL = 4Fh if function supported AH = status 00h successful 01h failed BX = bytes per scan line CX = number of pixels per scan line DX = maximum number of scan lines 10. ±âŸ ¿ÓÄÞ¿¡¼­ ¹ðÅ·À» ÇÒ ¶§ int386 ÇÔ¼ö¸¦ ¾µ °æ¿ì¿¡ ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù°í ÇÕ´Ï´Ù ±×·¯¹Ç·Î ÀζóÀÎ ¾î¼ÀÀ» ÀÌ¿ëÇØ Á÷Á¢ ¾î¼ÀÀ¸·Î ¸¸µé¾î ¾²¸é µË´Ï´Ù. °íÇØ»óµµ 󸮿¡¼± ¹ðũ󸮰¡ ºó¹øÇÒ¼ö·Ï ÁÁÁö ¾Ê½À´Ï´Ù. ½±°Ô ¸»ÇØ Ä³¸¯ÅÍÀÇ Âï´Â ¼ø¼­¿¡ µû¶ó ¹ðÅ©º¯È¯ÀÌ ¸î¹è°¡ ´õ °É¸±¼öµµ ÀÖ´Ù´Â ¾ê±âÁÒ. ( »ç½Ç ¹ðÅ©º¯È¯ ¸î¹øÀÌ ÀüüÀûÀÎ ¼Óµµ¿£ ¿µÇâÀ» °ÅÀÇ ¹ÌÄ£´Ù°í º¼ ¼ö´Â ¾ø½À´Ï´Ù¸¸ ¹«¸®°¡ ¾Æ´Ï¶ó¸é °í·ÁÇØÁ༭ ³ª»Ü °Ç ¾ø°ÚÁÒ ? ) ¸¶¿ì½ºÃ³¸®ÀÇ °æ¿ì ¸¶¿ì½º Çڵ鷯¸¦ ÀÌ¿ëÇØ¼­ Á÷Á¢ 󸮸¦ ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. À̶© ¸¶¿ì½º¸¦ ±×¸° ÈÄ¿¡ ¹ðÅ©¸¦ ¿ø»óº¹±Í ½ÃÄÑÁÖ´Â °ÍÀ» ÀØÀ¸½Ã¸é ¾ÈµË´Ï´Ù. ( ¿ÓÄÞ »ç¿ëÀÚ´Â ¿ÓÄÞ ÆÑŰÁö¿¡ ¼ÀÇüҽº mouse.c Âü°í ) ¿ÓÄÞ¿¡¼­ VESA Á¤º¸¸¦ Àбâ À§Çؼ± µµ½º ¸Þ¸ð¸® ÇÒ´ç°ú ¸®¾ó¸ðµå ÀÎÅÍ·´Æ® 󸮿¡ ´ëÇØ ¾Æ¼Å¾ß ÇÕ´Ï´Ù. ( WATCOM FAQ Âü°í - ¾ÆÁ÷.. ) ¿©±â¼­ ÁÖÀÇÇÏ½Ç Á¡À̶ó¸é ÇÒ´ç¹ÞÀº µµ½º¸Þ¸ð¸®¸¦ ÀÚÀ¯·Ó°Ô ¾²·Á¸é ¼±Çü¸ðµå ¸Þ¸ð¸®·Î ¹Ù²ã¼­ ½á¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ( ¾Æ½ÃÁÒ? ¼¼±×¸ÕÆ®*16 + ¿ÀÇÁ¼Â ! ±Ùµ¥ ¹ÙÀÌ¿À½º ÀÎÅÍ·´Æ®¿¡ ¸®ÅϵǴ °ªÀº µµ½º¸Þ¸ð¸®ÀÇ ¼¼±×¸ÕÆ®À̹ǷΠ¿©±â¿¡ 16¸¸ °öÇÏ½Ã¸é µË´Ï´Ù. ¿ÀÇÁ¼ÂÀº ´ç¿¬È÷ 0À̱⠶§¹®¿¡... ) ±×·±µ¥ ÀÌ·¸°Ô ¹Ù²ÛÈÄ¿¡ ·¹Áö½ºÅÍ¿¡ ¿ÀÇÁ¼ÂÀ» Àü´ÞÇØ ÁÙ¶© ¿ÓÄÞ Çì´õ¿¡ ÁöÁ¤µÇ¾î ÀÖ´Â FP_OFF¸¦ »ç¿ëÇÏ¸é ¾ÈµË´Ï´Ù. ( ¼¼±×¸ÕÆ®µµ ¸¶Âù°¡Áö. ) FP_OFF´Â ´Ü¼øÈ÷ ÇÏÀ§ µÎ¹ÙÀÌÆ®¸¦ ³ªÅ¸³»°í FP_SEG´Â »óÀ§ µÎ¹ÙÀÌÆ®¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ·±°Ç ¸®¾ó¸ðµå¿¡¼­ ¼¼±×:¿ÀÇÁ¼Â ½ÄÀÇ Æ÷ÀÎÅÍ¿¡ ¾²ÀÌ´Â ¹æ½ÄÀÌÁö¿ä. ( º¸È£¸ðµå´Â À§¿¡ ¸»ÇÑ´ë·Î ¼±Çü¹æ½ÄÀ̴ϱî... Àû¿ë½Ãų ¼ö ¾øÁö¿ä. )±×·¯´Ï±î FP_SEG(VesaForm); -> (VesaForm/16) FP_OFF(VesaForm); (VesaForm%16) ÀÌ·±½ÄÀ¸·Î ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ÇÁ·Î±×·¥ ÀÛ¼º½Ã ½±°Ô Çê°¥¸± ¼ö ÀÖ´Â ºÎºÐÀÌ´Ï ÁÖÀÇ ÇϽñ⠹ٶø´Ï´Ù. ( ¾çÂʰü°è¸¦ Àß »ý°¢ÇϽñ⠹ٶ÷ ) 11. Âü°í ÀÚ·á¿Í ¼­Àû Âü°íÀÚ·á ( °ÔÁ¦µ¿ ÀÚ·á½Ç ) 2842 nalgae2 vgadoc4b.zip 642K [DOCUMENT] VGADOC 4 2732 kwanny svgakt52.zip 267K SCITECHÀÇ SVGAKIT 5.2 Âü°í¼­Àû EGA,VGA,SUPER VGA Ä«µå (Richard F.Ferraro ) 3rdEdition : ¼º¾È´ç