Á¦¸ñ : - ¸¶Áö¸· Á¤¸®. ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº Virtual °ü¸® ÇÁ·Î±× ·¥ÀÇ ¸¶Áö¸· °­Á°¡ µÇ°ÚÀ¾´Ï´Ù. ¿ø·¡´Â HR.EXE (¹°º¸¶ó ÇÑ±Û ¸® ´õ) ¿¡ ´ëÇÑ ¼³¸íÀ¸·Î ¸¶Áö¸·À» ä¿ì·Á°í Çß¾ú´Âµ¥ °³ÀÎÀûÀ¸·Î ÀÏÀÌ Á» ¹ÙºüÁ®¼­ ÇÒ¼ö ¾ø°Ô µÇ¾úÀ¾´Ï´Ù. ±×·³ ¿À´ÃÀº Áö±Ý±îÁö ¼³°èÇØ¿Ô´ø ·çƾµéÀ» °áÇÕÇÏ´Â ºÎºÐÀ» »ìÆ캸°ÚÀ¾´Ï´Ù. V.System ÀÌ Á¦°øÇÏ´Â ÀϹÝÇÔ¼ö´Â ´ÙÀ½°ú °°½À´Ï´Ù. VMEM *hgVMalloc(unsigned size); hgVFree(VMEM **p); hgVSetBuff(VMEM *p); hgVSaveBuff(VMEM *p); À̵éÀº Áö±Ý±îÁö ¼³°èÇØ¿Ô´ø °¢°¢ÀÇ Resource ¸¦ °ü¸®ÇÏ´Â ÇÔ¼ö µéÀ» ÇÕÃijõÀº °ÍÀÔ´Ï´Ù. ¿ì¼± V.System À» ÃʱâÈ­ Çϱâ À§Çؼ­ ¼öÇàÇÏ´Â ÇÔ¼ö¸¦ º¸°ÚÀ¾´Ï´Ù. ÀÌ ÇÔ¼ö´Â ¸î°¡Áö Ç÷¡±×¸¦ ¼¼ÆÃÇÏ °í Àü¿ª¹öÆÛ¸¦ 64 KB ¸¸Å­ È®º¸ÇÕ´Ï´Ù. Conventional Memory ÀÇ ÃÖ´ë ÇÑ°è·®À» Á¤Çسõ½À´Ï´Ù. ¶ÇÇÑ ÇöÀç Çϵåµð½ºÅ© ¹øÈ£¸¦ È®º¸ ÇÕ´Ï´Ù. void hgVMEMInit() { vgbuff=(byte *)malloc((size_t)0xffff); vgseg=FP_SEG(vgbuff); vgoff=FP_OFF(vgbuff); hardflag=getdisk()-1; consize=(unsigned long)256*1024L; if (hardflag>0) hardsize=hgVGetFreeHARD(); emmflag=hgEMM_IsInstalled(); if (emmflag) { ftbuff=hgEMM_GetSeg(); consize=(unsigned long)128*1024L; } conflag=1; /* enable */ } ³¡³¾¶§´Â Àü¿ª¹öÆÛ¸¦ ÇØÁ¦ÇÕ´Ï´Ù. void hgVMEMEnd() { free(vgbuff); } ±×¸®°í ÀÌÁ¦ Resource ¸¦ Conventional > EMM > HardDisk ¼øÀ¸·Î Á¶»çÇÏ¿© ÀÚµ¿À¸·Î È®º¸ÇØÁÖ°í Swapping ÇØÁÖ´Â ÇÔ¼öÀÇ ¼Ò½º¸¦ »ìÆ캸°ÚÀ¾´Ï´Ù. Áö±Ý±îÁö ¼³°èÇØ º¸¾Ò´ø ÇÔ¼öµéÀ» È£ÃâÇÏ´Â °Í À¸·Î ÇØ°áÇÏ°í ÀÖÀ¾´Ï´Ù. È®º¸°¡ ¾ÈµÇ¾úÀ» °æ¿ì NULL À» ¸®ÅÏÇÕ ´Ï´Ù. VMEM *hgVMalloc(unsigned size) { VMEM *p; p=hgVMallocCON(size); if (p!=NULL) return p; p=hgVMallocEMM(size); if (p!=NULL) return p; p=hgVMallocHARD(size); if (p!=NULL) return p; return NULL; } ´ÙÀ½Àº ÇØÁ¦ÇÔ¼öÀÔ´Ï´Ù. VMEM À¸·Î È®º¸ÇÒ¶§ type À̶ó´Â ³»ºÎ ¿ä¼Ò¿¡ µé¾îÀÖ´Â °ª¿¡ ±Ù°ÅÇÏ¿© ÇØÁ¦ÇÕ´Ï´Ù. void hgVFree(VMEM **p) { switch((*p)->type) { case CON : hgVFreeCON(p); break; case EMM : hgVFreeEMM(p); break; case HARD: hgVFreeHARD(p); break; }; } Swapping In,Swapping Out ÇÔ¼öµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. void hgVSetBuff(VMEM *p) { switch(p->type) { case CON : hgVSetBuffCON(p); break; case EMM : hgVSetBuffEMM(p); break; case HARD: hgVSetBuffHARD(p); break; }; } void hgVSaveBuff(VMEM *p) { switch(p->type) { case CON : hgVSaveBuffCON(p); break; case EMM : hgVSaveBuffEMM(p); break; case HARD: hgVSaveBuffHARD(p); break; }; } Áö±Ý±îÁö °£´ÜÈ÷ V.System ¿¡ ´ëÇؼ­ ¾Ë¾Æº¸¾ÒÀ¾´Ï´Ù. V.System Àº °£´ÜÇÑ Virtual Memory System ÀÇ ÇÑ ¿¹°¡ µÉ¼ö ÀÖÀ¾´Ï´Ù. Çã ¸£¹Ì 2.0 ¿¡¼­´Â È­¸éÀÇ À̹ÌÁö¸¦ ÀúÀå/º¹±ÍÇÒ¶§ ¸¹Àº µ¥ÀÌÅÍÀÇ ¾çÀ» ´Ù·ç°Ô µÇ¹Ç·Î ÀÌ µ¥ÀÌÅÍÀÇ º¸°üÀ» À§Çؼ­ V.System À» »ç ¿ëÇÏ°í ÀÖÀ¾´Ï´Ù. ¾ÕÀ¸·Î ÀÚ¼¼È÷ ´Ù·ê ±âȸ°¡ ÀÖÀ»Áö´Â ¸ð¸£Áö¸¸ Ç㸣¹Ì 2.0 ÀÇ À̹ÌÁö °ü¸® ÇÔ¼ö´Â 4-buff System À» äÅÃÇÏ°í ÀÖÀ¾´Ï´Ù. Çãŧ·¹½ºÀÇ °æ¿ì 4-buff Áß¿¡¼­ ÇÑ°³¸¸À» »ç¿ëÇϸç VGA 16 color ´Â Plane ´ç ¹öÆÛÇϳª¸¦ ÇÒ´çÇÏ¿© ¹öÆÛ 4 °³¸¦ ¸ð µÎ »ç¿ëÇÔÀ¸·Î½á Ç㸣¹Ì 2.0 ¿¡¼­ Áö¿øÇÏ´Â 16 Ä÷¯ ÃÖ´ëÇØ»óµµ ÀÎ 800x600 ¸ðµå¿¡¼­µµ È­¸é Àüü¸¦ ÀâÀ»¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù. 256 color ¸ðµå¿¡¼­´Â Á¶±Ý Ư¼öÇÑ ¹æ¹ýÀ¸·Î 4-scan ¹æ½ÄÀ» ÃëÇÕ ´Ï´Ù. ÀÚ¼¼ÇÑ ¼³¸íÀº ¾àÇÏÁö¸¸ ¿ª½Ã ¹öÆÛ¸¦ 4 °³»ç¿ëÇؼ­ 256 color ¸ðµå¿¡¼­ÀÇ À̹ÌÁö °ü¸®¸¦ ½ÇÇöÇϹǷΠ4x64 = 256 KB ±îÁö ÀÇ À̹ÌÁö¸¦ ´Ù·ê¼ö ÀÖÀ¸¹Ç·Î 640x480x256 ¸ðµå¿¡¼­ Àüüȭ¸éÀÇ ¾à 80 % Á¤µµ¸¦ ´Ù·ê¼ö ÀÖÀ¾´Ï´Ù. ¹°·Ð ÀÌ°ÍÀ» ¹öÆÛ°¹¼ö¸¦ ´Ã¸² À¸·Î½á 640x480x256 ¸ðµå¿¡¼­µµ È­¸é Àüü¸¦ ´Ù·ç°Ô ÇÏ´Â °ÍÀº º°¹®Á¦°¡ ¾ÈµË´Ï´Ù. ´Ù¸¸ ÀÌÁ¤µµ¸é ½Ç¿ë¼ºÀÌ ÀÖ°Ú´Ù°í »ý°¢Ç߱⠶§¹®¿¡ Á¦ÇÑÀ» µÐ°Í »ÓÀÔ´Ï´Ù. Virtual Memory System À» ÀÌ¿ëÇÑ Ç㸣¹Ì 2.0 ÀÇ À̹ÌÁö °ü¸® ÇÔ¼öÀÇ ÀϺθ¦ º¾½Ã´Ù. void hgVGetImageVIRTUAL(int x1,int y1,int x2,int y2,VMEM *buff[4]) { int i; for (i=0;i<4;i++) { buff[i]=(VMEM *) hgVMalloc((size_t)hgImgSize4(x1,y1,x2,y2)); hgVGetImagePlane(x1,y1,x2,y2,vgbuff,i); hgVSaveBuff(buff[i]); } } void hgVPutImageVIRTUAL(int x1,int y1,int x2,int y2,VMEM *buff[4]) { int i; int k=1; for (i=0;i<4;i++) { hgVSetBuff(buff[i]); hgVPutImagePlane(x1,y1,x2,y2,vgbuff,k); k*=2; } } À̹ÌÁö¸¦ ÀúÀåÇÏ´Â ÇÔ¼ö³»ºÎ¿¡¼­´Â ÀÏ´Ü hgVMalloc À¸·Î VMEM * ÇüÀ¸·Î È®º¸ÇÑµÚ vgbuff (Àü¿ª¹öÆÛ) ¿¡ ´ã°í,hgVSaveBuff ·Î Swapping Out ÇصӴϴÙ. À̹ÌÁö¸¦ º¹±ÍÇÏ´Â ÇÔ¼ö³»ºÎ¿¡¼­´Â ¹Ý´ë ·Î hgVSetBuff ÇÔ¼ö·Î Swapping In ÇÏ°í vgbuff ¸¦ ÀÌ¿ëÇؼ­ Çà ·¹Àκ°·Î º¹±ÍÇÏ´Â °ÍÀ» ¹Ýº¹ÇÕ´Ï´Ù. º¸Åë VGA ±×·¡ÇÈ À̹ÌÁöÀÇ Å©±â´Â ¸Å¿ì Å©±â¶§¹®¿¡ °£´ÜÇÑ Virtual System ÀÌÁö¸¸ »ó´çÈ÷ È¿°ú°¡ Å®´Ï´Ù. EMS ¸¦ Áö¿øÇϹǷΠ¾î´ÀÁ¤µµ Å« À̹ÌÁö´Â ºü¸¥ ¼Óµµ·Î ó¸®ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. HardDisk ·Î Swapping ÇÏ´õ¶óµµ ¿äÁîÀ½Àº °í¿ë·®,ºü¸¥ ½ºÇǵåÀÇ Çϵåµð½ºÅ©°¡ ¸¹°í,Çϵåµð½ºÅ©Ä³ ½¬°¡ ÁÁÀº°ÍÀÌ ¸¹±â¶§¹®¿¡ »ó´çÈ÷ Áß¿äÇÑ Swapping ¿µ¿ªÀÌ µÉ¼ö ÀÖ°ÚÀ¾´Ï´Ù. Áö±ÝÀº V.System ÀÇ Version ÀÌ 1.0 À̱⶧¹®¿¡ Àü ¿ª¹öÆÛ¶ó´Â ¹æ¹ýÀ» »ç¿ëÇؼ­ 64 KB ÀÇ °ø°£À» Conventional ¿¡ ³²°Ü³õ¾Æ¾ß ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ°í ½º¿þÇÎÀ» ÇÁ·Î±×·¡¸Ó°¡ ÇØÁÖ¾î¾ß ÇÑ´Ù´Â ¹®Á¦¶§¹®¿¡ À̹ÌÁö °ü¸®ÀÌ¿ÜÀÇ ´Ù¸¥ ¸ñÀûÀ¸·Î´Â »ç¿ëÇϱ⠾î·Æ´Ù´Â Á¡ÀÌ ÀÖÀ¾´Ï´Ù. ¹°º¸¶ó ÇÑ±Û º¸±âµîÀÇ ÇÁ·Î±×·¥¿¡¼­´Â V.System À» ÅؽºÆ®ÀÇ º¸°ü¿µ¿ªÀ¸·Î ¾²°í ÀÖÀ¾´Ï´Ù. ¿ª½Ã ÀÛ¾÷À» º¸´Ù ÆíÇÏ°Ô Çϱâ À§Çؼ­´Â ¹öÀü¾÷ÀÌ ÇÊ¿äÇÒ µí ÇÕ´Ï´Ù. V.System 2.0 ¿¡¼­´Â Àü¿ª¹öÆÛ¸¦ »ç¿ëÇÏÁö ¾Ê°í ÇØ°áÇغ¸·Á°í ÇÕ ´Ï´Ù. ¶ÇÇÑ EMS ÀÇ °æ¿ì ÇÑ ¹öÆÛÀÇ Å©±â´Â ¹«Á¶°Ç 16 KB ´ÜÀ§ÀÇ ÆäÀÌÁö·Î ±¸ºÐµÇ´Âµ¥ ÀÌ 16 KB º¸´Ù ÀÛÀº Å©±âÀÇ ¹öÆ۷εµ ÀâÀ» ¼ö ÀÖµµ·Ï Çغ¼ »ý°¢ÀÔ´Ï´Ù. ¼Óµµ»óÀÇ ¹®Á¦°¡ »ý±â°ÚÁö¸¸¿ä.. ¾î ¶µç óÀ½ºÎÅÍ Ç㸣¹Ì 2.0 ÀÇ ºÎ¼Ó ¶óÀ̺귯¸®,Áï À̹ÌÁö °ü¸® ¶óÀ̺귯¸®·Î ¼³°èµÇ¾ú±â ¶§¹®¿¡ ´Ù¼Ò ÀϹݼºÀº ¶³¾îÁöÁö¸¸ Ÿ Virtual System ¿¡ ºñÇؼ­ Å©±â°¡ ÀÛ°í ¼Ò½º°¡ °£´ÜÇÏ´Ù´Â ÀåÁ¡ ÀÌ ÀÖÀ¾´Ï´Ù. ±×·³. µµ¿òÀÌ µÇ¼Ì±â¸¦.Ç㸣¹Ì !