Á¦¸ñ : Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 2.0 [4] ¾È³çÇϼ¼¿ä.. Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº ÆùÆ® ±¸Çö¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¾½Ã´Ù. ±×°£ Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 1.0 Àº ³»Àå ÆùÆ®¸¦ Á¦°øÇß¾úÀ¾´Ï´Ù. ³» Àå ÆùÆ®´Â °£ÆíÇÏ°Ô ¾µ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ÁÁÁö¸¸ Á¤Àû ¿µ¿ªÀ» Â÷ÁöÇÏ ±â¶§¹®¿¡ ¹®Á¦°¡ ÀÖ¾úÁÒ. ¶ÇÇÑ À̶§¹®¿¡ ÆùÆ®¸¦ µ¿½Ã¿¡ ¿©·¯°³ ¾²±â¿¡ ´Â ´Ù¼Ò ¹«¸®°¡ ÀÖ¾úÀ¾´Ï´Ù. È­ÀÏ ÆùÆ®¸¦ ¾´´Ù¸é ÆùÆ® À̸§¸¸ ¹Ù²Ù¾î ÁÖ¸é ÀÚ½ÅÀÌ ¾²°í ½ÍÀº ÆùÆ®¸¦ ¸¶À½´ë·Î ¾µ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖÀ¾´Ï´Ù. ÇÏÁö¸¸ ÆùÆ® È­ÀÏÀ» ½ÇÇàÈ­ÀÏ¿¡ ´Þ°í ´Ù³à¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖÀ¾´Ï´Ù. ±×·¯´Ï±î À¯Æ¿¸®Æ¼ Á¾·ù¶óµçÁö ÇÏ´Â °ÍÀº ³»Àå ÆùÆ®¸¦ ¾²´Â °ÍÀÌ ÆíÇÏ °Ú°í.. ¿öµå ÇÁ·Î¼¼¼­³ª ¿¡µðÅÍ °°Àº °ÍÀº È­ÀÏ ÆùÆ®¸¦ ¾²´Â °ÍÀÌ ÁÁ °ÚÁÒ.. µû¶ó¼­ ÀÌ µÎ°¡Áö¸¦ ¸ðµÎ °¡´ÉÇÏ°Ô ÇØ¾ß ÇÕ´Ï´Ù. ÇÑ±Û ¶óÀÌºê ·¯¸®¿¡¼­´Â ÆùÆ®¼¼ÆÃÀ» À§Çؼ­ 4 °¡ÁöÀÇ ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù. hgLoadHanFont(char *hname,int htype); hgLoadEngFont(char *ename,int etype); hgSetHanFont(void (*hf)(),int htype); hgSetEngFont(void (*ef)(),int etype); óÀ½°ÍÀº È­ÀÏ¿¡¼­ ÇÑ±Û ÆùÆ®¸¦ ·ÎµåÇÕ´Ï´Ù. hname Àº ÆнºÀ̸§ÀÌ°í.. µÎ¹ø°°ÍÀº È­ÀÏ¿µ¹®ÆùÆ®¸¦ ·ÎµåÇÕ´Ï´Ù. ¼¼¹ø°,³×¹ø°°ÍÀº ³»Àå ÆùÆ® ¸¦ »ç¿ëÇÕ´Ï´Ù. htype °ú etype Àº ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ. // font format #define HAN_8x4x4 0 #define HAN_6x2x1 1 #define HAN_10x4x4 2 #define HAN_2x1x2 3 #define ENG_256 0 µû¶ó¼­ Çö µð·ºÅ丮ÀÇ haniyg.fnt ¸¦ ÇÑ±Û ÆùÆ®·Î ÇÏ°í ½Í´Ù¸é.. hgLoadHanFont("haniyg.fnt",HAN_8x4x4); ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. ÆùÆ®ÀÇ Çü½ÄÀ» ´ëÃæ ¾Ë¾Æ³»´Â ¹æ¹ýÀº ÆùÆ® ¿¡µð ÅÍ·Î Á÷Á¢ º¸¾Æµµ µÇÁö¸¸ ÆùÆ®ÀÇ Å©±â¸¦ º¸¸é ´ëÃæ ¾Ë ¼ö ÀÖÀ¾´Ï´Ù. 12000 ÀÌ ³Ñ¾î°¡¸é ´ëºÎºÐ 10x4x4 ÆùÆ®ÀÔ´Ï´Ù. 8x4x4 ´Â 11~~~ Á¤µµÀÔ ´Ï´Ù. 6000~6500 Á¤µµÀ̸é 6x2x1 ÀÌ°í 4000~4100 »çÀÌÀÌ¸é ¿µ¹® ÆùÆ®, ±×°Íµµ ¾Æ´Ï¸é 2x1x2 ÀÇ »¡·¡²Ãü ÇÑ±Û ÆùÆ®ÀÔ´Ï´Ù.. ÀÛÀº À¯Æ¿¸®Æ¼¸¦ Á¦°¡ Çϳª ¸¸µé¾ú´Âµ¥ .eng,.kor..fnt ÇüÀÇ ÆùÆ® È­ÀÏÀ» ÀÚµ¿À¸·Î È­ ¸é¿¡ Ç¥½ÃÇØ ÁÖ°í ¹Ù¾Æ¿¡ ÀÇÇؼ­ ¼±ÅÃÇϸé ÆùÆ®²ÃÀ» º¸¿©ÁÖ´Â ÇÁ·Î±× ·¥ÀÔ´Ï´Ù. Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸®ÀÇ ³»Àå ÆùÆ®·Î ¾µ ¼ö ÀÖµµ·Ï µî·Ï ÇÏ´Â Àϵµ ÇÕ´Ï´Ù. Á¶±Ý ¼öÁ¤Çؼ­ °ð ¿Ã¸®µµ·Ï ÇÏÁÒ.. ±×·±µ¥.. Ãâ·Â À» À§Çؼ­´Â Àü¿ª Æ÷ÀÎÅÍ fir,mid,las,eng ÀÇ 4 °³°¡ ÇÊ¿äÇÕ´Ï´Ù..°¢ °¢Àº Ãʼº,Áß¼º,Á¾¼º,¿µ¹®À» °¡¸®Åµ´Ï´Ù. ¿ì¼± ÀÌ Æ÷ÀÎÅ͵éÀÇ Å©±â¸¦ È®º¸ÇÏ°í ÀÌ Æ÷ÀÎÅÍ¿¡ ·ÎµåÇÏ´Â ¹æ¹ýÀ» ¾²¸é µÉ °ÍÀÔ´Ï´Ù.È­ÀÏ ÆùÆ®ÀÇ °æ¿ì ±× Type À» »ç¿ëÀÚ°¡ Á¤ÇØÁÖ¾î¾ß Çϴµ¥ ¸¸ÀÏ HAN_10x4x4 ÆùÆ®¸¦ »ç¿ëÇÑ´Ù¸é ±×¿¡ ÇÕ´çÇÑ Å©±âÀÇ ¿µ¿ªÀ» Àâ¾ÆÁÖ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù. ¸¸ÀÏ HAN_2x1x2 ¸¸ ¾´´Ù¸é HAN_10x4x4 Å©±â¸¸Å­ ¿µ¿ªÀ» ÀâÀ» ÇÊ¿ä´Â ¾ø´Â °ÍÀÔ´Ï´Ù. µû¶ó¼­ »ç¿ëÀÚ´Â ÃÖ´ë ÆùÆ® ¿µ¿ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ¾´Ï´Ù.ÀÌ ÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù. hgSetMaxFontRoom(int htype,int etype); type Àº À§ÀÇ Define °ú °°Áö¸¸ etype Àº Áö±Ý 256 character ¹Û¿¡ ¾ø À¸¹Ç·Î Ç×»ó ENG_256 ÀÔ´Ï´Ù. ÀÌ ÇÔ¼öÀÇ ³»¿ëÀ» Àá±ñ º¼±î¿ä ? void hgSetMaxFontRoom(int htype,int etype) { int hsizef[4]={ 8*20*32,6*20*32,10*20*32,2*20*32 }; int hsizem[4]={ 4*22*32,2*22*32, 4*22*32,1*22*32 }; int hsizel[4]={ 4*28*32,1*28*32, 4*28*32,2*28*32 }; int esize [1]={ 256*16 }; // 32 is dummy fir=new char[hsizef[htype]]; mid=new char[hsizem[htype]]; las=new char[hsizel[htype]]; eng=new char[esize[etype]]; } ÀÌ·¸°Ô Çؼ­ È®º¸ÇÑ ¿µ¿ªÀº ÇÁ·Î±×·¥ÀÌ ³¡³¯¶§ ÇØÁ¦ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö°¡ ´ÙÀ½ÀÇ hgFreeFont ÇÔ¼öÀÔ´Ï´Ù. void hgFreeFont() { delete fir; delete mid; delete las; delete eng; } ±×·¸´Ù¸é È­ÀÏ¿¡¼­ ·ÎµåÇÒ¶§´Â ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä.. ±× ÇÔ¼öÀÎ hgLoad~~~Font ÇÔ¼ö¸¦ º¾½Ã´Ù. void hgLoadHanFont(char *hname,int htype) { int hsizef[4]={ 8*20*32,6*20*32,10*20*32,2*20*32 }; int hsizem[4]={ 4*22*32,2*22*32, 4*22*32,1*22*32 }; int hsizel[4]={ 4*28*32,1*28*32, 4*28*32,2*28*32 }; htypes.firs=hsizef[htype]; htypes.mids=hsizem[htype]; htypes.lass=hsizel[htype]; int handle; handle=open(hname,O_RDWR|O_BINARY); read(handle,fir,hsizef[htype]); read(handle,mid,hsizem[htype]); read(handle,las,hsizel[htype]); close(handle); hgSetCtable(htype); } void hgLoadEngFont(char *ename,int etype) { int esize [1]={ 256*16 }; etypes.engs=esize[etype]; int handle; handle=open(ename,O_RDWR|O_BINARY); read(handle,eng,esize[etype]); close(handle); } hgSetCtable ÇÔ¼ö´Â type ¿¡ ÀÇÇؼ­ ÇÑ±Û Á¶ÇÕ ±ÔÄ¢À» Á¤ÇØÁÖ´Â ÇÔ¼ö ÀÔ´Ï´Ù. ±×·¸´Ù¸é ÆùÆ®¸¦ ³»ÀåÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¾½Ã´Ù.. Àú¹ø ¹öÀüÀÇ °æ¿ì Á¤Àû¿µ¿ª¿¡ ¹è¿­À» ÇÒ´çÇÏ¿© ±× ¹è¿­¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ Á¶ ÀÛÇÔÀ¸·Î½á ÇØ°áÇßÀ¾´Ï´Ù. À̹ø ¹öÁ¯ 2.0 ¿¡¼­ »ç¿ëÇÑ ¹æ¹ýÀº ÇÔ¼ö Æ÷ ÀÎÅÍ´ëÀÔÀÔ´Ï´Ù. Áï ÆùÆ®¸¦ ¹Ù²Ù¾î ³Ö´Â ºÎºÐÀ» ¾Æ¿¹ ÇÔ¼ö·Î ÀÛ¼ºÇØ ¹ö¸®´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº °ÍÀ» »ý°¢ÇØ º¾½Ã´Ù. void (*test)(); char *fir; <- ¹Ì¸® È®º¸µÇ¾î ÀÖÀ½. void set(void (*t)()) { test=t; } void do() { (*test)(); } void fonta() { char a[]={ 1,1,1,1 }; memcpy(fir,a,4); } void fontb() { char a[]={ 2,2,2,2 }; memcpy(fir,a,4); } ¸¸ÀÏ »ç¿ëÀÚ°¡ set(&fonta); ÇÑÈÄ do() ¸¦ ½ÇÇà½ÃÅ°¸é fir ´Â 1,1,1,1 À» ´ã°Ô µÉ °ÍÀÔ´Ï´Ù.symbol µµ fonta ¹Û¿¡ µîÀåÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î fonta ¸¸ÀÌ ¸µÅ©µÇ°Ô µË´Ï´Ù. set(&fontb); ¸¦ À̶§ ´Ù½Ã Çغ¸¸é fir ´Â 2,2,2,2 ¸¦ ´ã°Ô µÇ°í fonta,fontb °¡ ¸ðµÎ ¸µÅ©µÇ°Ô µË´Ï´Ù. Áï ¼±ÅÃÀû ¸µÅ©°¡ °¡´ÉÇØ Áý´Ï´Ù. À̹ø 2.0 ¿¡¼­´Â ÀÌ·¯ÇÑ ¹æ¹ýÀ» »ç¿ëÇÏ ¿´À¾´Ï´Ù. ±×·¸´Ù¸é ¾Æ·¡ ÇÔ¼öµéÀ» º¼±î¿ä ? void hgSetHanFont(void (*hf)(),int htype) { (*hf)(); hgSetCtable(htype); } void hgSetEngFont(void (*ef)(),int etype) { (*ef)(); etype&=0xff; // dummy statement } À§¿¡¼­ void (*hf)(); ´Â ÇÑ±Û ÆùÆ®¸¦ fir,mid,las ¿¡ º¹»çÇØ ÁÖ´Â ÇÔ ¼öÀÔ´Ï´Ù. htype ÀÌ ÇÊ¿äÇÏÁÒ.. void (*ef)(); ´Â ¿µ¹® ÆùÆ®¸¦ eng ¿¡ º¹»çÇØ ÁÖ´Â ÇÔ¼öÀÌÁÒ..¹°·Ð ÀÌ ÇÔ¼ö¸¦ ½ÇÇàÇϱâ Àü¿¡ hgSetMaxFontRoom ÇÔ¼ö¸¦ ¸ÕÀú ½ÇÇàÇØ¾ß ÇÏÁÒ.. hgSetMaxFontRoom ÇÔ ¼ö´Â ÇÁ·Î±×·¥ ½ÃÀÛ¿¡ Çѹø ÇØÁÖ¸é ÃæºÐÇÕ´Ï´Ù. ³¡³¯¶§´Â hgFreeFont ÇÔ¼ö¸¦ ½á¾ß ÇÏ°í¿ä.. ±×·¸´Ù¸é (*hf)() ¿Í (*ef)() ÀÇ Çü½ÄÀ» ¾Ë¾Æº¸ ¾Æ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ¿¾³¯ Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸® 1.0 À» ½áº¸½Å ºÐµé Àº convert.exe ¸¦ ±â¾ïÇÏ½Ç °ÍÀÔ´Ï´Ù. ÀÌ¿Í ºñ½ÁÇÑ ÇÁ·Î±×·¥ÀÌ 2.0 ¿¡µµ Á¦°øµÇ´Âµ¥ ÀÌ ÇÁ·Î±×·¥Àº ¼Õ½±°Ô ÆùƮȭÀÏÀ» ÆùÆ®ÇÔ¼ö¸ðµâ·Î ¹Ù ²Ù¾î ÁÝ´Ï´Ù. È®ÀåÀÚ´Â .hft °¡ µÇ°í bcc ·Î ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖÀ¾´Ï´Ù. ¹°·Ð tlib ·Î library È­ ÇÒ ¼öµµ ÀÖÀ¾´Ï´Ù. ¿ì¼± (*hf) ¿¡ ´ëÀ﵃ ¼ö ÀÖ´Â ÇÔ¼öÀÇ Çü½ÄÀ» º¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. #include "mem.h" extern char *fir; extern char *mid; extern char *las; void hfontname() { char f[]={ ..... }; char m[]={ ..... }; char l[]={ ..... }; memcpy(fir,f,fsize); memcpy(mid,m,msize); memcpy(las,l,lsize); } (*ef) µµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. #include "mem.h" extern char *eng; void efontname() { char e[]={ ..... }; memcpy(eng,e,esize); } ÀÌÁß fsize,msize,lsize ´Â font type ¿¡ ÀÇÇؼ­ °áÁ¤µÇ´Â »ó¼öÀÔ´Ï ´Ù. ¿¹¸¦ µé¾îº»´Ù¸é IYAGI ÆùÆ®ÀÇ ÃʼºÀº 8 ¹úÀ̹ǷΠ8x20(Ãʼº°¹ ¼ö)x32(ÇÑ±Û 1 ÀÚ=32 ¹ÙÀÌÆ®) Çؼ­ °è»êÇÏ¸é µË´Ï´Ù. ÀÌ´Â ¹°·Ð À¯Æ¿ ¸®Æ¼°¡ ¾Ë¾Æ¼­ ÇØÁÖ´Ï±î °ÆÁ¤¾ÈÇصµ µË´Ï´Ù. ±×·¸´Ù¸é hfontname ÀÌ °áÁ¤µÇ¾úÀ» Å×°í.. hgSetHanFont ÇÔ¼ö¿¡¼­´Â hgSetHanFont(&hfontname,htype); Çؼ­ ¼³Á¤ÇÏ¸é µÇ´Âµ¥... Çì´õ È­ÀÏ¿¡ ¼±¾ðÀÌ ¾øÀ¸¸é ¿¡·¯°¡ ³¯ »Ó¾Æ ´Ï¶ó .hft .. Áï .cpp °¡ ¾Æ´Ñ °ü°è·Î extern "C" { } ¼±¾ðÀ» ÇØÁÖ¾î ¾ß ÇÕ´Ï´Ù. ±×·¯¹Ç·Î hghlib.h ¿¡ ´ÙÀ½°ú °°Àº °ÍÀ» ³Ö¾î ÁÖ¾î¾ß ÇÕ´Ï ´Ù. Á¦ °æ¿ì¿¡´Â hfontname ¿¡ haniyg,small,hmapple À̶ó´Â ÇÔ¼ö¸¦ ½è´Âµ¥... ¾Æ·¡¿Í °°ÀÌ define ÇßÀ¾´Ï´Ù. // font define #define IYAGI &haniyg ,HAN_8x4x4 #define SMALL &small ,ENG_256 #define HMAPPLE &hmapple,HAN_8x4x4 // font function define <- not CPP module.. extern "C" { extern void haniyg(); extern void small(); extern void hmapple(); }; ÀÌÁ¦ ÆùÆ®¸¦ µî·ÏÇÒ¶§¸¶´Ù #define ÇÏ°í extern void ~~ ¸¦ Çϳª¾¿ Ãß °¡ÇØ ÁÖ¸é µË´Ï´Ù. ±×·¯¸é hangul type À» ¸Å¹ø ¼³Á¤ÇØ ÁÖÁö ¾Ê¾Æµµ µÇÁÒ. Çì´õ È­ÀÏ Á¤ÀÇ´ë·Î ÇÑ´Ù¸é hgSetHanFont(IYAGI); ÇÏ¸é ³¡³ª°Ô µÇ´Ï±î¿ä. ±×·¸´Ù¸é ÀÌÁ¦ »õ·Î¿î ÆùÆ®¸¦ ³»Àå ÆùÆ®·Î µî·ÏÇÏ°í ½ÍÀº °æ¿ì¸¦ »ý°¢ ÇØ º¾½Ã´Ù. ¿ì¼± mkfont.exe (À¯Æ¿¸®Æ¼) ¸¦ ±âµ¿½Ãŵ´Ï´Ù. Áö±ÝÀº VGA ¿¡¼­ ¹Û¿¡ µ¹¾Æ°¡Áö ¾Ê½À´Ï´Ù.. ÂÁÂÁ.. ¹Ù¾Æ°¡ ³ªÅ¸³³´Ï´Ù. È­»ìÇ¥ Å° ÀÌ·Î ¿òÁ÷ÀÌ°í Enter Å°ÀÌ·Î ±ÛÀÚü¿Í ÆùÆ® Çü½ÄÀ» º¼ ¼ö ÀÖÀ¾´Ï´Ù. F1 Å°ÀÌ´Â È­»ìÇ¥ Å°ÀÌ°¡ À§Ä¡ÇÑ ÆùÆ® È­ÀÏÀ» .hft Çü½ÄÀÇ È­ÀÏ·Î ¹Ù ²Ù¾î ÁÝ´Ï´Ù. ALT_X Å°ÀÌ·Î Å»Ãâ... Çؼ­ º¸¸é .hft Çü½ÄÀÇ È­ÀÏÀÌ »ý °åÀ» °ÍÀÔ´Ï´Ù. ¿©±â¼­ bcc -c -ml fname.hft Çؼ­ ÄÄÆÄÀÏÇÕ´Ï´Ù. fname.obj °¡ »ý°åÀ» °Ì´Ï´Ù. À̸¦ ¶óÀ̺귯¸®¿¡ tlib hgfontl+fname Çؼ­ µî·ÏÇÏ¸é µË´Ï´Ù.. µî·Ï¾ÈÇصµ ¾µ¼ö ÀÖÁö¸¸... ¸¶Áö¸· ÇØ¾ß ÇÒ ÀÏÀº À§¿¡¼­ º» °Íó·³ Çì´õ È­ÀÏÀÎ hghlib.h ¸¦ ¾÷µ¥ ÀÌÆ® ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ÀÛ¾÷À» °è¼ÓÇÏ¸é ³»Àå ÆùÆ®¸¦ ¾ó¸¶µçÁö ´Ã¸± ¼ö ÀÖ°Ô µË´Ï´Ù. ÈÞ..µµ¿òÀÌ µÇ¼Ì´ÂÁö ¸ð¸£°Ú³×¿ä.. ´Ù¼Ò´Â µ¶Æ¯ÇÑ ¹æ¹ýÀ̶ó È£°¨ÀÌ ¾È °¥Áöµµ ¸ð¸£Áö¸¸ ³ª¸§´ë·Î´Â Àç¹ÌÀÖ´Â ¹æ¹ý °°¾Æ¿ä.. ÀÌÁ¦ µåµð¾î Æù Æ® ºÎºÐ¿¡¼­µµ Ç㸣¹Ì´Â µ¶ÀÚ¼ºÀ» °¡Áú ¼ö ÀÖ°Ô µÇ¾ú³×¿ä.. Àú¹ø 1.0 Àº PCline 1 ¿ùÈ£¸¦ Âü°íÇÑ °ÍÀÌ ¸¹¾Ò¾ú´Âµ¥... ÀÌÁ¦ Ç㸣¹Ì ÇÑ±Û ¶ó À̺귯¸® 2.0 Àº 100 % made by Ç㸣¹Ì ¶ó°í ¸»ÇÒ ¼ö ÀÖ°Ô µÇ¾úÀ¾´Ï ´Ù. ±×µ¿¾È °Ý·ÁÇØÁֽŠ¸¹Àº ºÐµé²² °¨»çµå·Á¿ä. ±×·³..´ÙÀ½ °­Á´ Simple ±×·¡ÇÈ ·çƾÀÔ´Ï´Ù. ±â´ëÇϼ¼¿ä.