Á¦¸ñ [°­ÁÂ] ÀÎÅÍ·´Æ®(°³³ä, ÀÌ¿ë¹ý)... ÀÛ¼ºÀÚ ÀÌÁ¾»ï ÀÛ¼ºÀÏ 94/03/29 03:05 Á¶È¸ 224 ¾È³çÇϼ¼¿ä? ÀÇ¿Ü·Î ¸¹Àº ºÐµéÀÌ ÀÎÅÍ·´Æ®¿¡ ´ëÇØ ¾Ë°íÀÚ ÇϽʴϴÙ. Á¾·ù, »ç¿ë¹ý µîÀ»... ¹Ø¿¡¼­ ¿©·¯ºÐµéÀÌ ÀÎÅÍ·´Æ®¿¡ ´ëÇØ Áú¹® ÇÏ¼Ì°í ´äº¯ Çϼ̽À´Ï´Ù. ±×·¯¹Ç·Î ±×ºÐµéÀÇ ±Û°ú Áߺ¹ µÇ´Â ºÎºÐµµ ÀÖÀ» °Ì´Ï´Ù. Á¦°¡ ¾²·Á´Â ±ÛÀº Ãʺ¸Àڵ鲲 ÀÎÅÍ·´Æ®´Â ÀÌ·± °ÍÀ̸ç, º£ÀÌÁ÷ ±×Áß¿¡¼­ µµ Äüº£ÀÌÁ÷¿¡¼­ ÀÎÅÍ·´Æ® È£Ãâ ¹ýÀ» ¾Ë·Á µå¸®´Â °ÍÀÌÁÒ. º»·ÐÀ¸·Î... ÀÎÅÍ·´Æ®¿¡ ´ëÇØ ¸ð¸£½Ã´Â ºÐÀº ¾øÀ¸½Ç °Ì´Ï´Ù. Ç㳪, ¸ð¸£½Ã´Â ºÐµµ °è ½Å °ÍÀ¸·Î Ä¡°í ¸ÕÀú ÀÎÅÍ·´Æ®¶õ ¹º°¡ ºÎÅÍ ¾²ÁÒ. ÀÎÅÍ·´Æ®¸¦ ¹ø¿ª Çϸé '³¢¾îµé±â' ´ëÃæ ÀÌ·¸°Ô ¹ø¿ª µË´Ï´Ù. Çåµ¥, ¹¹¿¡ ³¢¾îµå´À³Ä... ¿­½ÉÈ÷ Ã¥À» Àаí ÀÖ¾ú½À´Ï´Ù. Çåµ¥, ¾îµð¼±°¡ ÀüÈ­°¡ ¿Í º¸´ø Ã¥À»¾÷¾î ³õ°í ÀüÈ­¸¦ ¹Þ¾Æ ÅëÈ­¸¦ ¸ÂÀÎ µÚ ´Ù½Ã ¾÷¾î ³õÀº Ã¥À» º¾´Ï´Ù. ¿©±â¼­ Ã¥À» ÀÐÀº ÀÏÀÌ ¸ÞÀÎ ÀÛ¾÷À̸ç, ÀüÈ­°¡ ¿Â°ÍÀÌ ³¢¾îµé±â ÀÔ´Ï´Ù. ÀÌó·³ ÄÄÇ»Å͵µ ÇÑÂü ÇÁ·Î±×·¥À» µ¹¸®´Âµ¥ Ctrl+C ¶Ç´Â Ctrl+BreakÅ°°¡ ´­¸®¸é ÇÁ·Î±×·¥Àº Áß´Ü µË´Ï´Ù. À̰͵µ ÇϳªÀÇ ÀÎÅÍ·´Æ®À̸ç, ÀÎÅÍ·´Æ® Á¾·ùÁß Å°º¸µå ÀÎÅÍ·´Æ®¿¡ ¼ÓÇÕ ´Ï´Ù. Å°º¸µå ÀÎÅÍ·´Æ®ÀÇ ÇÑ°¡Áö ¿¹¸¦ ´õ µéÀÚ¸é... dir ¸í·ÉÀ» ³»¸° µÚ °ð¹Ù·Î type À̶õ ±ÛÀ» ŸÀÌÇÎ Çß´Ù°í ÇսôÙ. °á°ú ºÎÅÍ ¸»Çϸé dir ¸í·É ¼öÇà ÈÄ type À̶õ ±ÛÀÌ µµ½º ÇÁ·ÒÇÁÆ® ¿±¿¡ ³ªÅ¸³³´Ï´Ù. ÀÌ·¯ÇÑ °á°úµµ ÀÎÅÍ·´Æ®¿¡ ÀÇÇØ °¡´ÉÇÑ °ÍÀ̸ç, À§ÀÇ °úÁ¤À» Ç®¾îº¸ ¸é... 1. dirÀ̶õ ¸í·ÉÀ» ³»¸®¸é ¸í·É¾î Çؼ®±âÀÎ COMMAND.COMÀÌ ±×°ÍÀ» ¹Þ¾Æ ±×¿¡ ÇØ´çÇÏ´Â ÀÛ¾÷ ¼öÇà¿¡ µé¾î°©´Ï´Ù. 2. »ç¿ëÀÚ¿¡ ÀÇÇØ Å°°¡ ´­·ÁÁö¸é Å°º¸µå ÇÁ·Î¼¼¼­´Â CPU·Î ÀÎÅÍ·´Æ®¸¦ °É¾î Å°°¡ ´­·ÈÀ½À» ¾Ë¸³´Ï´Ù. 3. CPU´Â ÇÏ´ø ÀÏÀ» Àá½Ã ¹Ì·ç°í ÀÔ·Â µÈ Å°ÀÇ ¾Æ½ºÅ° ÄÚµå¿Í ½ºÄµ ÄÚµå ¸¦ Å°º¸µå ¹öÆÛ¿¡ ÀúÀåÇÑ µÚ ´Ù½Ã ¿ø·¡ ÇÏ´ø ÀÏÀ» ¼öÇà ÇÕ´Ï´Ù. 4. dir ¸í·É ÀÛ¾÷ÀÌ ¿Ï·á µÇ¸é ¹öÆÛ¿¡ ½×ÀÎ ¾Æ½ºÅ° Äڵ带 Àоî È­¸é¿¡ Ãâ·Â ÇÕ´Ï´Ù. À§ÀÇ ¼ø¼­¿¡¼­ ÀÎÅÍ·´Æ®°¡ °É¸° °ÍÀº 2¹ø¿¡ Çà´ç ÇÕ´Ï´Ù. ÀÌó·³ ÀÎÅÍ·´Æ®´Â ¿¹°í ¾øÀÌ ¹ß»ý ÇÏ´Â °ÍÀÌ ÁøÁ¤ÇÑ ÀǹÌÀÇ ÀÎÅÍ·´Æ®Áö ¿ä. ±×¸®°í, ÀÎÅÍ·´Æ®´Â Çϵå¿þ¾î ÀÎÅÍ·´Æ®¿Í ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍ·´Æ®·Î ºÐ·ù µÇ¸ç, Çϵå¿þ¾î ÀÎÅÍ·´Æ®´Â À§ÀÇ ¿¹·Î µç ºÒ½Ã¿¡ ¹ß»ýÇÏ´Â ÀÎÅÍ·´Æ®¿Í Á¤ ±âÀûÀ¸·Î ¹ß»ýÇÏ´Â ÀÎÅÍ·´Æ® µÎ°¡Áö°¡ ÀÖÀ¸¸ç, Á¤±âÀûÀ¸·Î ¹ß»ýÇÏ´Â ÀÎÅÍ ·´Æ®´Â ŸÀÌ¸Ó ÀÎÅÍ·´Æ®¶õ °ÍÀÔ´Ï´Ù. º» °Ô½ÃÆÇ¿¡¼­µµ ŸÀÌ¸Ó ÀÎÅÍ·´Æ®¿¡ ´ëÇØ ¿©·¯Â÷·Ê °Å·Ð µÈ ÀûÀÌ ÀÖ¾ú´Â µ¥, ŸÀÌ¸Ó ÀÎÅÍ·´Æ®¶õ ¸» ±×´ë·Î ½Ã°£À» Àç±â À§ÇÑ ÀÎÅÍ·´Æ® ÀÔ´Ï´Ù. ¾î¶² ÇÁ·Î±×·¥À» ¼öÇà ½ÃÅ°°Ç ÄÄÇ»ÅÍÀÇ ½Ã°è´Â ½¬Áö ¾Ê°í È帨´Ï´Ù. ÀÌ °ÍÀº ŸÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ ºÎÁ¤±âÀûÀÌ ¾Æ´Ñ Á¤±âÀûÀ¸·Î ÀÎÅÍ·´Æ®¸¦ ¹ß»ý ½ÃŲ´Ù´Â °ÍÀ» ÀÔÁõ ÇÏ´Â ÁÁÀº ¿¹Áö¿ä. ¹Ý¸é ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍ·´Æ®¶õ Á¸ÀçÇÒ ¼ö ¾øÀ½¿¡µµ Á¸Àç ÇÏ´Â °ÍÀ» º¸¸é ÂüÀ¸·Î ½Å±âÇÒ µû¸§ÀÔ´Ï´Ù. ¿ì¸®°¡ ÈçÈ÷ ¹ÙÀÌ¿À½º ÀÎÅÍ·´Æ®´Ï µµ½º ÀÎÅÍ·´Æ®´Ï ºÎ¸£´Â °ÍÀº ÁøÁ¤ÇÑ ÀÎÅÍ·´Æ®¶ó ĪÇϱ⿣ ¹«¸®°¡ ÀÖ½À´Ï´Ù. ÀÎÅÍ·´Æ®¶ó Çϱ⠺¸´Ù´Â ÇÔ¼ö(Function)¶ó ĪÇÔÀÌ ¿À¸¦ °ÍÀÔ´Ï´Ù. ÀÌÀ¯´Â ¿©·¯ºÐµµ ¾Æ´Ù½ÃÇÇ ¿ì¸®´Â À̵é ÇÔ¼öµéÀ» ÀÚ½ÅÀÇ ÇÁ·Î±×·¥ ÀϺΠ¿¡¼­ È£ÃâÇÏ¿© »ç¿ë ÇÕ´Ï´Ù. ±×·¸´Ù¸é È£Ãâ ÇÑ´Ù´Â Àǹ̿¡¼­ ÀÏ¹Ý ¶óÀ̺귯¸®ÀÇ ÇÔ¼ö¿ÍÀÇ Â÷ÀÌ°¡ ¹« ¾ù ÀÌ°Ú´ÂÁö¿ä. ÀÎÅÍ·´Æ®¿¡ ´ëÇÑ °³³äÀº ÀÌÁ¤µµ·Î ¸ÂÀÌ°í ´ÙÀ½Àº Äü¿¡¼­ÀÇ ÇÔ¼ö(ÀÎÅÍ·¯ Æ®) È£Ãâ¿¡ ´ëÇØ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. ÀÌÇÏ BIOS INTERRUPT°Ç DOS INTERRUPT°Ç ÇÔ¼ö¶ó ĪÇÏ°Ú½À´Ï´Ù. ±×·¯¹Ç·Î Âø¿À ¾øÀ¸½Ã±â ¹Ù¶ø´Ï´Ù. ÇÔ¼ö¿¡´Â ¹ÙÀÌ¿À½º ÇÔ¼ö¿Í µµ½º ÇÔ¼ö°¡ Á¸Àç Çϸç, ¹ÙÀÌ¿À½º ÇÔ¼öÀÇ ¹ü À§´Â 0h¹ø ºÎÅÍ 1Fh¹ø ±îÁöÀ̸ç, µµ½º ÇÔ¼ö´Â 20h¹ø ºÎÅÍ FFh¹ø ±îÁö Á¸ ÇÕ´Ï´Ù. ¶ÇÇÑ, È£Ãâ¹ýµµ µ¿ÀÏÇÕ´Ï´Ù(À§ÀÇ ¿µ¹® ¼Ò¹®ÀÚ h´Â 16Áø¼ö¸¦ ÀÇ¹Ì ÇÕ´Ï´Ù). ÇÔ¼ö ¹øÈ£°¡ ÀÖ°í, ±× ÇÔ¼ö¿¡ µû¸¥ ¼­ºêÇÔ¼ö°¡ ¿©·¯°³·Î ³ª´µ¸ç, ¼­ºêÇÔ ¼ö ³»¿¡ ¶Ç´Ù¸¥ ÇÔ¼ö°¡ Á¸Àç Çϱ⵵ ÇÕ´Ï´Ù. ÈçÈ÷ È£Ãâ ÇÏ´Â 21h¹ø ÇÔ¼ö¸¦ ¿¹·Î ¾Ë¾Æ º¾½Ã´Ù. ÀÌ 21h¹ø ÇÔ¼ö¿¡´Â ¼­ºêÇÔ¼ö 0h¹ø ºÎÅÍ FFFFh¹ø ±îÁö(¾ÆÁ÷ ¹ÌÁ¤ÀÇ µÈ ¹øÈ£µµ ÀÖÀ½) ¼­ºêÇÔ¼ö°¡ Á¸Àç Çϸç, ÀÌµé ¼­ºêÇÔ¼ö Áß¿¡´Â ¼­ºêÇÔ¼ö¸¦ °®´Â ÇÔ¼ö°¡ Àֱ⵵ ÇÕ´Ï´Ù. 21h¹ø ÇÔ¼öÀÇ ¼­ºêÇÔ¼öÁß 4Eh¹ø°ú 4Fh¹ø ¼­ºêÇÔ¼ö´Â Äü »ç¿ëÀÚ¿¡°Ô À¯¿ë ÇÏ°Ô ¾²¿©Áú ¼ö ÀÖ´Â ÇÔ¼ö·Î À̵é ÇÔ¼öÀÇ ±â´ÉÀº 4Eh¹ø ÇÔ¼ö°¡ ù¹ø° ÀÏ Ä¡ÇÏ´Â ÆÄÀÏÀÇ Á¤º¸¸¦ ³Ñ°Ü ÁÖ´Â °ÍÀ̸ç, 4Fh¹ø ÇÔ¼ö´Â ´ÙÀ½À¸·Î ÀÏÄ¡ÇÏ ´Â ÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ ³Ñ°ÜÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. º» ÇÔ¼öÀÇ ±â´É¿¡ ´ëÇؼ± °ÅÀÇ ¸ð¸£½Ã´Â ºÐÀÌ ¾øÀ¸½Ã°ÚÀ¸³ª, Ãʺ¸ÀÚµéÀ» À§ÇØ °£¶ôÈ÷ ¼³¸í µå¸®ÀÚ¸é... ¿ì¸®°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¿µ¿ªÁß¿¡ DTA(Data Transfer Area)¶õ ¿µ¿ªÀÌ Á¸ ÀçÇÕ´Ï´Ù. ½ºÇʸµÀÌ ¸Â´Â ¸ð¸£Áö¸¸... ÀÌ ¿µ¿ªÀÇ ¿ªÇÒÀº 4Eh, 4Fh¹ø ÇÔ¼ö°¡ ¼öÇà °á°ú¸¦ ÀúÀåÇÏ´Â °÷À̸ç, »ç ¿ëÀÚ´Â ÀÌ°÷¿¡ ÀúÀå µÈ Á¤º¸¸¦ ÀÐ¾î µµ½º ¸í·É¾îÀÎ dirÀ» ´ë½ÅÇÒ¼öµµ ÀÖ À¸¸ç, °¢Á¾ À¯Æ¿¸®Æ¼¿¡¼­ Á¦°øÇÏ´Â µð·ºÅ丮 ¸ñ·Ï â°ú ÆÄÀÏ ¸ñ·Ï âÀ» ±¸»ç ÇÒ¼ö ÀÖ½À´Ï´Ù(ÀÌ¹Ì Àú¸¦ ºñ·Ô ¸î¸î ºÐ²²¼± ±×°ÍÀ» ±¸Çö ÇØ º¸¾Ò ÁÒ....). º» ÇÔ¼ö¸¦ È£Ãâ ÇϱâÀü¿¡ ÇÒÀÏÀÌ Àִµ¥, ±×°ÍÀº DTA¸¦ ¾î¶»°Ô »ç¿ë ÇÒ °ÍÀΰ¡ ÇÏ´Â °ÍÀÔ´Ï´Ù. ´Ù½Ã¸»ÇØ ±âº» DTA¸¦ »ç¿ë ÇÏ´À³Ä, »õ·Î¿î DTA¸¦ ¸¸µé¾î »ç¿ë ÇÏ´À³Ä ÇÏ ´Â °ÍÀε¥,ÈÄÀÚÀÇ °ÍÀÌ »ç¿ë Çϱ⿡ Æí¸® ÇϹǷΠ¿ì¸®´Â ÈÄÀÚ¸¦ ÅÃÇÏ°Ú ½À´Ï´Ù. DTA ¿µ¿ªÀÇ Å©±â´Â ¿ø·¡ 128¹ÙÀÌÆ® ÀÔ´Ï´Ù¸¸, ÇÊ¿äÇÑ ÃÖ¼ÒÇÑÀÇ Å©±âÀÎ 64¹ÙÀÌÆ®¸¸Àº »õ·Î ¼³Á¤ ÇÏ¿© µµ½º¿¡°Ô ±×°ÍÀ» ¾Ë·Á ÁÖ¸é µË´Ï´Ù. ÀÌ ÀÛ¾÷ ¿ª½Ã µµ½º ÇÔ¼ö¸¦ ÀÌ¿ë Çϸç, ¼³Á¤Àº ´ÙÀ½°ú °°ÀÌ... DIM DTA AS STRING * 64 '°íÁ¤±æÀÌ ¹®ÀÚº¯¼ö Á¤ÀÇ InRegs.ds = VARSEG(DTA) 'ds¿¡ º¯¼ö DTAÀÇ ¼¼±×¸ÕÆ® 'ÀúÀå InRegs.dx = SADD(DTA) 'dx¿¡ º¯¼ö°¡ ¾Æ´Ñ ½ºÆ®¸µ ¿É '¼Â ÀúÀå InRegs.ax = &H1A00 'ah=1Ah, al=00, ah¿¡ ÀúÀåÇÑ '1Ah°¡ ¹Ù·Î DTA ¿µ¿ªÀ» »õ·Î '¼³Á¤ ÇÏ´Â ÇÔ¼ö ¹øÈ£ ÀÔ´Ï´Ù. '¿©±â¼­ alÀº ÀÇ¹Ì ¾øÀ½ INTERRUPTX &H21, InRegs, OutRegs 'ÇÔ¼ö È£Ãâ ÀÌó·³, ÇÔ¼ö¸¦ È£Ãâ Çϱâ À§Çؼ± È£Ãâ ÇÏ·Á´Â ÇÔ¼ö·Î Àû´çÇÑ °ªÀ» ³Ñ°Ü Áà¾ß ÇÕ´Ï´Ù. INTERRUPTX &H21, InRegs,OutRegs°¡ µµ½º ÇÔ¼ö 21h¸¦ ȦÃâ ÇÏ´Â ¿ªÇÒÀ» Çϸç, ¾Õ¼­ ÇÑ ÀÛ¾÷ÀÌ °¢ ·¹Áö½ºÅÍ¿¡ °ªÀ» ¼ÂÆà ½ÃÄÑ ÁÖ´Â °ÍÀÌ µË´Ï´Ù. ´Ù½Ã¸»ÇØ À§ÀÇ ÀÛ¾÷ ³»¿ëÀº µµ½º ÇÔ¼ö 21h¹øÀÇ ¼­ºêÇÔ¼ö 1Ah¹øÀ» È£ÃâÇÏ ´Â °ÍÀ̸ç, ¼­ºêÇÔ¼ö ¹øÈ£ÀÎ 1Ah´Â ·¹Áö½ºÅÍ axÀÇ »óÀ§ ·¹Áö½ºÅÍÀÎ ah ·¹ Áö½ºÅÍ¿¡ ¼ÂÆà ÇÕ´Ï´Ù. °ÅÀÇ ¸ðµç ¼­ºêÇÔ¼ö È£ÃâÀº À§¿Í °°ÀÌ ah ·¹Áö½ºÅÍ¿¡ ¼­ºêÇÔ¼ö ¹øÈ£¸¦ ³Ö¾î È£Ãâ ÇÏÁö¸¸ ´Ù¸¥ °Íµµ ÀÖÀ¸¹Ç·Î ÇØ´ç ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸í ´ë·Î °¢ ·¹ Áö½ºÅ͵éÀ» ¼ÂÆÃÇÏ¿© ÇÔ¼ö¸¦ È£Ãâ ÇÏ½Ã¸é µË´Ï´Ù. º»·ÐÀ¸·Î µ¹¾Æ°¡... ´ÙÀ½Àº¼­ºêÇÔ¼ö 4Eh¹øÀ» È£Ãâ ÇϱâÀü À§ÀÇ ¿¹¿¡¼­ ó·³ °¢ ·¹Áö½ºÅÍÀÇ ¼ÂÆà ºÎÅÍ ÇØ¾ß ÇÕ´Ï´Ù. FileSp$ = FileSpec + CHR$(0) 'ÆÄÀϽºÆÑ ¼ÂÆÃ, ÆÄÀϽºÆÑ¿¡´Â 'full path ¹× ¿ÍÀϵå ij¸¯ÅÍ '±×¸®°í ¿ÏÀüÇÑ ÆÄÀϸíÀÌ µé¾î '°©´Ï´Ù. ¶ÇÇÑ, µÚ¿¡ ºÙÀº 'CHR$(0)Àº ASCIIZ ¹®ÀÚ¿­À» '¶æ Çϸç, °ÅÀÇ ¸ðµç ÆÄÀÏ °ü '·Ã ÇÔ¼ö¿¡¼­ ÀÌ¿Í °°Àº ½ÄÀ» '»ç¿ë ÇϹɷΠ±â¾ï Çϼ¼¿ä. InRegs.ds = VARSEG(FileSp$) '¼­ºêÇÔ¼ö 1AhÀÇ ¼³¸í°ú µ¿ÀÏ InRegs.dx = SADD(FileSp$) '¿ª½Ã µ¿ÀÏ InRegs.cx = &HFF 'cx ·¹Áö½ºÅÍÀÎ cl ·¹Áö½ºÅÍ¿¡ 'ÆÄÀÏ ¼Ó¼º ¼ÂÆÃ, ÆÄÀÏ ¼Ó¼ºÀº '´ÙÀ½°ú °°´Ù. ' 0 = ÀϹÝÆÄÀÏ, 1 = ÀбâÀü¿ë ' 2 = ¼û°ÜÁø, 4 = ½Ã½ºÅÛ 'ÆÄÀÏ, 8 = µð½ºÅ© º¼·ý¸í '16 = µð·ºÅ丮 InRegs.ax = &H4E00 '¼­ºêÇÔ¼ö 4Eh ¼ÂÆÃ, Àǹ̴ 'À§ÀÇ ¼­ºêÇÔ¼ö 1Ah ¼³¸í°ú °° 'À½ INTERRUPTX &H21, InRegs, OutRegs 'ÇÔ¼ö È£Ãâ IF OutRegs.flags AND 1 THEN DirRead% = -1: EXIT FUNCTION 'ij¸® Ç÷¹±×°¡ ¼ÂÆ® ?¦³·À¸¸? 'ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀÌ ¾øÀ¸¹Ç·Î '-1À» ³Ö¾î DirRead%ÇÔ¼ö Å»Ãâ DirCnt = 1 'ÆÄÀÏ °¹¼ö ¼ÂÆà GOSUB FileSet 'ÆÄÀÏÁ¤º¸ Àб⠷çƾÀ¸·Î... IF DFlag = 1 THEN '1°ú °°À¸¸é ÆÄÀÏ ¶Ç´Â µð·ºÅä '¸®À̹ǷΠ¼º¸³... DirSet(DirCnt) = FI$ '¹è¿­ º¯¼ö¿¡ ÆÄÀÏ Çϳª¿¡ ´ë 'ÇÑ Á¤º¸ ÀúÀå 'ÆÄÀÏ Çϳª¿¡ ´ëÇÑ Á¤º¸¶õ dir '¸í·ÉÀ» ³»¸®¸é º¼¼ö ÀÖ´Â, ÆÄ '¸µ¸í, ÆÄÀϱæÀÌ, »ý¼º³¯Â¥, '»ý¼º½Ã°£ µîÀÌ´Ù. DirCnt = DirCnt + 1 'ÆÄÀÏ °¹¼ö Áõ°¡ END IF 'ºí·° IF¹® ³¡ ´ÙÀ½Àº ¼­ºêÇÔ¼ö 4Fh·Î ´ÙÀ½À¸·Î ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀ» ã´Â ÀÛ¾÷ÀÔ´Ï´Ù. DO WHILE DirCnt < FilesLength 'ÀаíÀÚ ÇÏ´Â ÆÄÀÏ °¹¼ö º»´Ù 'ÀÏÇôÁø ÆÄÀÏ °¹¼ö°¡ ÀûÀ¸¸é 'DO¹®³»ÀÇ ¸í·É ¼öÇà... InRegs.ds = VARSEG(DTA) 'DTA Àç ¼³Á¤, Àç ¼³Á¤ Çϴ´ë InRegs.dx = SADD(DTA) '¿£ ÀÌÀ¯°¡ ÀÖ½À´Ï´Ù. ¸¸¾à, InRegs.ax = &H1A00 'Àç ¼³Á¤ ¾øÀÌ ¼­ºêÇÔ¼ö 4Eh¸¦ INTERRUPTX &H21, InRegs, OutRegs '°è¼Ó ¼öÇà ½Ãų °æ¿ì, µð·ºÅä '¸® ³»¿ëÀ» ´©¶ô ½ÃÅ°°í ÀнÀ '´Ï´Ù. ¿Í, ±×·±Áö ¿øÀÎÀº ¸ð '¸£³ª, ¼öÂ÷·ÊÀÇ ½ÃÇè °á°ú ÀÌ '·¸°Ô ÇØÁÖ¸é ´©¶ô ¾øÀÌ ¸ù¶¥ 'ÀÐ¾î µéÀδٴ °Í¸¸ ¾Ë¾Æ ³Â 'Áö¿ä. InRegs.ax = &H4F00 '¼­ºêÇÔ¼ö 4Fh ¼ÂÆÃ, ´Ù¸¥ ¼Â 'ÆÃÀº ¼­ºêÇÔ¼ö 4Eh¿¡¼­ ÇØÁá 'À¸¹Ç·Î ´Ù¸¥ °ÍÀº ÇÏÁö ¾Ê´Â '´Ù. INTERRUPTX &H21, InRegs, OutRegs 'ÇÔ¼ö È£Ãâ IF OutRegs.flags AND 1 THEN EXIT DO 'ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀÌ ¾øÀ» °æ¿ì, 'DO ·çÇÁ Å»Ãâ GOSUB FileSet 'ÆÄÀÏÁ¤º¸ Àб⠷çƾÀ¸·Î... IF DFlag = 1 THEN '1²Ê °°À¸¸é ÆÄÀÏ ¶Ç´Â µð·ºÅä '¸®À̹ǷΠ¼º¸³... DirSet(DirCnt) = FI$ '¹è¿­º¯¼ö¿¡ ÆÄÀÏ Á¤º¸ ÀúÀå DirCnt = DirCnt + 1 'ÆÄÀÏ °¹¼ö Áõ°¡ END IF 'ºí·° IF¹® ³¡ LOOP '´Ù½Ã DO¹®À¸·Î... ´ÙÀ½Àº ´õÀÌ»ó ÀÏÄ¡ÇÏ´Â ÆÄÀÏÀÌ ¾øÀ» °æ¿ìÀÇ Ã³¸®... DirCnt = DirCnt - 1 'ÆÄÀÏ °³¼ö¿¡¼­ 1À» »«´Ù. ±× '·¡¾ß ¸ÂÀ¸´Ï±î... DirRead% = DirCnt 'DirRead% ÇÔ¼ö¿¡ ÀÐ¾î µéÀÎ 'ÆÄÀÏ °¹¼ö¸¦ ³Ö°í DirSet(0) = STR$(FTotal) + " File(s)" + STR$(STotal&) + " Byte" '¹è¿­º¯¼ö ù ÷ÀÚ¿¡ ÀÐ¾î µé 'ÀÎ ÆÄÀÏÀÇ °¹¼ö¿Í ÃÑ ¹ÙÀÌÆ® '¸¦ ³Ö¾î EXIT FUNCTION 'DirRead% ÇÔ¼ö¸¦ ¹þ¾î³­´Ù. µµ½ºÇÔ¼ö »ç¿ë¹ý °­Á°¡ ÇϳªÀÇ »õ·Î¿î ÇÔ¼ö¸¦ ¸¸µé¾ú³×¿ä. À§ÀÇ ÇÔ¼ö »ç¿ë¿¹¿Í °°ÀÌ °¢ ÇÔ¼öµé ¸¶´Ù ¼ÂÆà ÇؾßÇÒ ·¹Áö½ºÅÍÀÇ ¼ö¿Í °ªÀÌ ¸ðµÎ ´Ù¸¨´Ï´Ù. Ç㳪, °°Àº Á¡Àº ah ·¹Áö½ºÅÍ¿¡ ¼­ºêÇÔ¼ö ¹øÈ£¸¦ ³Ö¾î ÇØ´ç ÇÔ¼ö¸¦ È£Ãâ ÇÏ´Â °³³äÀº µ¿ÀÏ Çß½À´Ï´Ù. ¹°·Ð, Ÿ ¾ð¾î¿¡¼­µµ À§¿Í °°ÀÌ °¢ ·¹Áö½ºÅ͸¦ ¼ÂÆà ÈÄ ¼­ºê ÇÔ¼ö¸¦ È£ Ãâ ÇÕ´Ï´Ù. ´Ù¸¸, ´Ù¸¥ Á¡ÀÌ ÀÖ´Ù¸é ¾ð¾î ¸¶´Ù ¼ÂÆà ¸í·É¾î°¡ ¾à°£¾¿ ´Ù ¸£´Ù´Â Á¡ »Ó ¸ðµç ¾ð¾î¿¡¼­ ±ÔÄ¢Àº µ¿ÀÏ ÇÕ´Ï´Ù. À§ÀÇ ¿¹´Â ´ÜÁö Äü¿¡¼± µµ½º ÇÔ¼ö È£ÃâÀ» ¾î¶»°Ô ÇÏ´ÂÁö, ¹æ¹ýÀ» Á¦½ÃÇÑ °Í »ÓÀÔ´Ï´Ù. º» °­ÁÂÀÇ ¼­ºñ½º·Î ¸ðµâ Çϳª¸¦ ¿Ã¸³´Ï´Ù. µÚ¿¡ ¿Ã¶ó°¥ ¸ðµâÀ» »ç¿ë Çϱâ À§Çؼ± ÅëÇÕȯ°æ ÁøÀԽà QB/L QB·Î ÁøÀÔ ÇÏ¼Å¾ß Çϸç, ÇϳªÀÇ ¶óÀ̺귯¸®È­ ÇسõÀ¸½Ã°í »ç¿ë Çϼŵµ ÁÁ½À´Ï´Ù. ¸ðµÎ 5°¡ÁöÀÇ ÇÔ¼ö·Î ±¸¼º µÇ ÀÖÀ¸¸ç, ±×Áß Çϳª´Â ³»ºÎ¿ëÀ̹ǷΠ4°³ÀÇ ÇÔ¼öÇü ¼­ºê°¡ µé¾î ÀÖÀ¸¸ç, °¢°¢ÀÇ ¿ëµµ´Â ´ÙÀ½°ú °°½À´Ï´Ù. DirRead% ¿ÜºÎ¿ë, ¿ëµµ=ÇöÀçÀÇ µð·ºÅ丮 ¸ñ·Ï°ú ÀÐ¾î µéÀÎ ÆÄÀÏ °¹ ¼ö, ÆÄÀÏÀÇ ÃÑ ¹ÙÀÌÆ®¸¦ ³Ò°ÜÁØ ¹è¿­º¯¼ö¿¡ ´ã¾Æ ¿È, Àμö=¹è¿­º¯¼ö, ÆÄÀϽºÆÑ, ÀÐ¾î µé ÀÏ ÆÄÀÏ °¹¼ö FreeDisk& ¿ÜºÎ¿ë, ¿ëµµ=³Ñ°ÜÁØ µå¶óÀ̺êÀÇ ÃÑ¿ë·® ¶Ç´Â ³²Àº ¿ë·® ¹Ýȯ, 0=All Space, 1=Free Space, Àμö=µå ¶óÀÌºê ¹®ÀÚ(¿¹: a or c µîµî, ´ë¼Ò¹®ÀÚ ±¸ º°¾øÀ½. ±×·¯³ª ÄÝ·Ð(:)Àº ºÙÀÌÁö ¸»²¯), 0 or 1 GetCuDIR$ ¿ÜºÎ¿ë, ¿ëµµ=³Ñ°ÜÁØ µå¶óÀ̺êÀÇ ÇöÀç FULL µð·ºÅ丮¸í ¹Ý ȯ, ÄÝ·Ð(:)Àº »ý·«. GetCuDriver$ ¿ÜºÎ¿ë, ¿ëµµ=ÇöÀçÀÇ µå¶óÀÌºê ¹®ÀÚ ¹Ýȯ(ÄÝ·Ð(:)ÀÌ »ý·« µÈ...) MinusChange& ³»ºÎ¿ë, ¿ëµµ=À½¼ö¸¦ ¾ç¼öÈ­ ½ÃÅ´ ÀÌ»ó°ú °°À¸¸ç, 4°¡Áö ÇÔ¼ö ¸ðµÎ µµ½º ÇÔ¼ö¸¦ »ç¿ëÇÑ ÇϳªÀÇ ÁÁÀº ¿¹Àç ÀÔ´Ï´Ù. Ãʺ¸ÀÚ´ÔµéÀÇ ¹«±ÃÇÑ ÅõÈ¥À» ¹Ù¶ó¸ç, ÀÌ°ÍÀ¸·Î µµ½º ÇÔ¼ö(ÀÎÅÍ·´Æ®) °­ Á¸¦ ¸Î½À´Ï´Ù. ±×·³, ´ÙÀ½¿¡ ÁÁÀº ±Û °®°í ã¾Æ ºË°Ú½À´Ï´Ù. 19994.3.29. ¸ðµÎ Àáµç ±íÀº ¹ã¿¡ Á¾»ï... Á¦¸ñ [¼Ò½º] ÀÎÅÍ·´Æ® °­Á¿¡¼­ ¸»ÇÑ... ÀÛ¼ºÀÚ ÀÌÁ¾»ï ÀÛ¼ºÀÏ 94/03/29 03:07 Á¶È¸ 149 ¾È³çÇϼ¼¿ä? ¹ØÀÇ ÀÎÅÍ·´Æ® °­Á¿¡¼­ ¸»¾¸ µå¸° ¸ðµâÀÔ´Ï´Ù. À¯¿ëÇÏ°Ô »ç¿ë ÇÏ½Ã°í ±Ã±ÝÇÑ Á¡Àº Áú¹® ÁÖ¼¼¿ä. °³ÀÎ ¸ÞÀÏÀÌµç °Ô½ÃÆÇÀÌµç »ó°ü ¾ø½À´Ï´Ù. ÇÔ¼ö »ç¿ë¹ý¿¡ ´ëÇÑ ¼³¸íÀº °­Á¿¡ ÀÖÀ¸¸ç, ´ë¸ð´Â ÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯¹Ç·Î ´ë¸ð´Â ¼Õ¼ö Á¦ÀÛ Çϼ¼¿ä. ¼Ø¾¾¿¡ µû¶ó¼± ±ªÀåÇÑ ÇÁ·Î±×·¥µµ ³ª¿É´Ï´Ù. ±×¸®°í, ÇàÀÌ ²ö¾îÁø ºÎºÐÀÌ ÀÖ¾î ¾ð´õ¶óÀÎ(_)À¸·Î ó¸® ÇßÀ¸¹Ç·Î, ºÙ¿© »ç¿ë »ç¼¼¿ä. ²ö¾îÁø Çà´Â 4ÁÙ ÀÔ´Ï´Ù. ±×·³.... 1994.3.29. ±íÀº ¹ã¿¡ Á¾»ï... -------------------------------------------------------------------- '[df.bas] DECLARE FUNCTION DirRead% (DirSet() AS STRING, FileSpec AS STRING, _ FilesLength AS INTEGER) DECLARE FUNCTION FreeDisk& (Drive$, Flag%) DECLARE FUNCTION GetCuDIR$ (Drive$) DECLARE FUNCTION GetCuDriver$ DECLARE FUNCTION MinusChange& (MC AS LONG) 'DISKFUN.BAS(Diks Function Extended) '$INCLUDE: 'QB.BI' '$DYNAMIC 'DIM SHARED DirSet(1) AS STRING '$STATIC DIM SHARED InRegs AS RegTypeX, OutRegs AS RegTypeX FUNCTION DirRead% (DirSet() AS STRING, FileSpec AS STRING, FilesLen_ gth AS INTEGER) STATIC REDIM DirSet(FilesLength) AS STRING STotal& = 0: FTotal = 0 DIM DTA AS STRING * 64 InRegs.ds = VARSEG(DTA) InRegs.dx = SADD(DTA) InRegs.ax = &H1A00 INTERRUPTX &H21, InRegs, OutRegs FileSp$ = FileSpec + CHR$(0) InRegs.ds = VARSEG(FileSp$) InRegs.dx = SADD(FileSp$) InRegs.cx = &HFF InRegs.ax = &H4E00 INTERRUPTX &H21, InRegs, OutRegs IF OutRegs.flags AND 1 THEN DirRead% = -1: EXIT FUNCTION DirCnt = 1 GOSUB FileSet IF DFlag = 1 THEN DirSet(DirCnt) = FI$ DirCnt = DirCnt + 1 END IF DO WHILE DirCnt < FilesLength InRegs.ds = VARSEG(DTA) InRegs.dx = SADD(DTA) InRegs.ax = &H1A00 INTERRUPTX &H21, InRegs, OutRegs InRegs.ax = &H4F00 INTERRUPTX &H21, InRegs, OutRegs IF OutRegs.flags AND 1 THEN EXIT DO GOSUB FileSet IF DFlag = 1 THEN DirSet(DirCnt) = FI$ DirCnt = DirCnt + 1 END IF LOOP DirCnt = DirCnt - 1 DirRead% = DirCnt DirSet(0) = STR$(FTotal) + " File(s)" + STR$(STotal&) + " Byte" EXIT FUNCTION FileSet: DFlag = 0 ATTR = ASC(MID$(DTA, 22, 1)) Mat$ = MID$(DTA, 31) Match$ = LEFT$(Mat$, INSTR(Mat$, CHR$(0)) - 1) 'FILE NAME IF (ATTR > 21 OR ATTR < 16) AND ATTR <> 8 THEN IF INSTR(Match$, ".") <> 0 THEN Match1$ = LEFT$(MID$(Match$, 1, INSTR(Match$, ".") - 1) + S_ PACE$(9), 9) Match2$ = MID$(Match$ + " ", INSTR(Match$, ".") + 1, 3) FLNAME$ = Match1$ + Match2$ ELSE FLNAME$ = LEFT$(Match$ + SPACE$(12), 12) END IF ELSE FLNAME$ = LEFT$(Match$ + SPACE$(12), 12) END IF IF ATTR = 8 OR RTRIM$(FLNAME$) = "." THEN RETURN 'File Length IF (ATTR > 21 OR ATTR < 16) AND ATTR <> 8 THEN A& = CVL(MID$(DTA, 27, 4)) BYTE$ = RIGHT$(SPACE$(9) + STR$(A&), 9) ELSE BYTE$ = LEFT$(" ", 9) END IF 'File Date A = CVI(MID$(DTA, 25, 2)) Y = ((A AND &HFE00) / 512) AND &H7F 'Year YEAR$ =RIGHT$("0" + LTRIM$(STR$(Y + 1980)), 2) M = ((A AND &H1E0) / 32) AND &HF 'Month MON$ = RIGHT$("0" + LTRIM$(STR$(M)), 2) 'Day DAY$ = RIGHT$("0" + LTRIM$(STR$(A AND &H1F)), 2) 'File Time A = CVI(MID$(DTA, 23, 2)) H = ((A AND &HF800) / 2048) AND &H1F 'HOUR M = ((A AND &H7E0) / 32) AND &H3F 'MINUTE 'S = A AND &H1F 'SECOND H = ABS(H) IF H < 12 THEN AmPm$ = "a" ELSE AmPm$ = "p" IF H > 12 THEN H = H - 12 IF H = 0 THEN H = 12 HOU$ = RIGHT$(" " + STR$(H), 3) MIN$ = RIGHT$("0" + LTRIM$(STR$(M)), 2) FL1$ = FLNAME$ + " " + BYTE$ FL2$ = " " + MON$ + "-" + DAY$ + "-" + YEAR$ FL3$ = " " + HOU$ + ":" + MIN$ + AmPm$ FI$ = FL1$ + FL2$ + FL3$ DFlag = 1 STotal& = STotal& + VAL(BYTE$) FTotal = FTotal + 1 RETURN END FUNCTION FUNCTION FreeDisk& (Drive$, Flag%) STATIC FreeDisk& = -1 IF Flag% < 0 OR Flag% > 1 THEN Flag% = 0 Drive$ = UCASE$(LTRIM$(RTRIM$(LEFT$(Drive$, 1)))) IF Drive$ < "A" OR Drive$ > "Z" THEN EXIT FUNCTION InRegs.ax = &H3600 InRegs.dx = ASC(Drive$) - ASC("A") + 1 INTERRUPTX &H21, InRegs, OutRegs IF OutRegs.ax = -1 THEN EXIT FUNCTION Tempax& = OutRegs.ax Tempcx& = OutRegs.cx Tempax& = MinusChange&(Tempax&) Tempcx& = MinusChange&(Tempcx&) IF Flag% = 0 THEN Tempdx& = OutRegs.dx Tempdx& = MinusChange&(Tempdx&) FreeDisk& = Tempax& * Tempcx& * Tempdx& ELSE Tempbx& = OutRegs.bx Tempbx& = MinusChange&(Tempbx&) FreeDisk& = Tempax& * Tempbx&* Tempcx& END IF END FUNCTION FUNCTION GetCuDIR$ (Drive$) STATIC GetCuDIR$ = "" Drive$ = UCASE$(LTRIM$(RTRIM$(LEFT$(Drive$, 1)))) IF Drive$ < "A" OR Drive$ > "Z" THEN EXIT FUNCTION Buffer$ = SPACE$(64) InRegs.ax = &H4700 InRegs.dx = ASC(Drive$) - ASC("A") + 1 InRegs.ds = VARSEG(Buffer$) InRegs.si = SADD(Buffer$) INTERRUPTX &H21, InRegs, OutRegs IF (OutRegs.flags AND 1) <> 1 THEN DirBF$ = RTRIM$(Buffer$) IF LEN(DirBF$) > 0 THEN IF INSTR(Buffer$, CHR$(0)) <> 1 THEN GetCuDIR$ = LEFT$(Buffer$, INSTR(Buffer$, CHR$(0)) - 1) _ + "\" END IF END IF END IF END FUNCTION FUNCTION GetCuDriver$ STATIC InRegs.ax = &H1900 INTERRUPTX &H21, InRegs, OutRegs GetCuDriver$ = CHR$((OutRegs.ax AND &HFF) + ASC("A")) END FUNCTION DEFSNG A-Z FUNCTION MinusChange& (MC AS LONG) STATIC IF SGN(MC) = -1 THEN A$ = RIGHT$("000" + HEX$(NOT (MC)), 4) A$ = RIGHT$("FFFF" + A$, 8) MC = ABS(VAL("&H" + A$)) - 1 END IF MinusChange& = MC END FUNCTION -------------------------------------------------------------------- ³¡...