TOS.SYS¤ÎÄ󶡤¹¤ëµ¡Ç½
onDOSÈÇTOWNS-OS¤ÎTOS.SYS¤ÏTOWNS-OS¤ÎIO.SYS¤ÇÄ󶡤µ¤ì¤ëµ¡Ç½¤ÎÆâ¡¢
MS-DOS6.2¤ÎIO.SYS¤Ç¤ÏÄ󶡤µ¤ì¤Ê¤¤µ¡Ç½¤òÂå¹Ô¤¹¤ë¥Ç¥Ð¥¤¥¹¤Ç¤¹¡£
int 0xaf ah=0x08-09 ¹â®¥â¡¼¥ÉÀ©¸æ
int 0x8e ah=0x20-23 ³ÈÄ¥¥á¥â¥ê´ÉÍý
int 0x8e ax=0xc701 TOS.SYS¥Õ¥¡¥ó¥¯¥·¥ç¥ó
¹â®¥â¡¼¥É¤ÎÀßÄê
[ÆþÎÏ] ah=0x08
al=0x00(¸ß´¹¥â¡¼¥É),0x01(¹â®¥â¡¼¥É),0x02(CMOS¤ÎÀßÄêÃÍ)
[¸Æ½Ð] int 0xaf
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
0x02(¥Ñ¥é¥á¡¼¥¿¡¼°Û¾ï)
0x80(¹â®¥â¡¼¥É̤Âбþ)
al=0x00(¸ß´¹¥â¡¼¥É),0x01(¹â®¥â¡¼¥É),ÊѲ½¤Ê¤·(¥¨¥é¡¼»þ)
[È÷¹Í] ¥¨¥é¡¼»þ¥¥ã¥ê¡¼¥»¥Ã¥È
°Õ³°¤Ê¤³¤È¤ËCMOS¤Ø¤Î½ñ¤¹þ¤ßµ¡Ç½¤Ï¤¢¤ê¤Þ¤»¤ó
¹â®¥â¡¼¥É¤Î¼èÆÀ
[ÆþÎÏ] ah=0x09
[¸Æ½Ð] int 0xaf
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
0x80(¹â®¥â¡¼¥É̤Âбþ)
al=0x00(¸ß´¹¥â¡¼¥É),0x01(¹â®¥â¡¼¥É),ÊѲ½¤Ê¤·(¥¨¥é¡¼»þ)
[È÷¹Í] ¥¨¥é¡¼»þ¥¥ã¥ê¡¼¥»¥Ã¥È
³ÈÄ¥¥á¥â¥êÍøÍѲÄǽ¥µ¥¤¥ºÌ䤤¹ç¤ï¤»
[ÆþÎÏ] ah=0x20
edx=0x545f4f53("T_OS")
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
cx/ecx=ÍøÍѲÄǽ¤ÊºÇÂç¤Î¥Ö¥í¥Ã¥¯¤Î¥µ¥¤¥º(KB)
[È÷¹Í] edx̤»ØÄê»þ¤Ï16bit(cx)
XMM¾ïÃó¸å¤ÏXMMfunction¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹
³ÈÄ¥¥á¥â¥ê³ÎÊÝ
[ÆþÎÏ] ah=0x21
edx=0x545f4f53("T_OS")
cx/ecx=³ÎÊݤ¹¤ë¥Ö¥í¥Ã¥¯¤Î¥µ¥¤¥º(KB)
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
0x80(¥á¥â¥êÉÔÂ)
0x81(´ÉÍýÎΰ褬32block¤òĶ¤¨¤¿)
dx:di=³ÎÊݤ·¤¿¥Ö¥í¥Ã¥¯¤ÎʪÍý¥¢¥É¥ì¥¹
[È÷¹Í] ¥¨¥é¡¼»þ¥¥ã¥ê¡¼¥»¥Ã¥È
edx̤»ØÄê»þ¤Ï16bit(cx)
XMM¾ïÃó¸å¤ÏXMMfunction¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹
³ÈÄ¥¥á¥â¥ê²òÊü
[ÆþÎÏ] ah=0x22
dx:di=²òÊü¤¹¤ë¥Ö¥í¥Ã¥¯¤ÎʪÍý¥¢¥É¥ì¥¹
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
0x82(»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹¤Ï´ÉÍý³°)
[È÷¹Í] ¥¨¥é¡¼»þ¥¥ã¥ê¡¼¥»¥Ã¥È
XMM¾ïÃó¸å¤ÏXMMfunction¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹
³ÈÄ¥¥á¥â¥ê¥³¥Ô¡¼
[ÆþÎÏ] ah=0x23
cx=¥µ¥¤¥º(byte)
bx:si=žÁ÷¸µÊªÍý¥¢¥É¥ì¥¹
dx:di=žÁ÷ÀèʪÍý¥¢¥É¥ì¥¹
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
[È÷¹Í] ¾ï¤ËRAW³ÈÄ¥¥á¥â¥ê¥³¥Ô¡¼¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹
TOS.SYS¤Î¥Ð¡¼¥¸¥ç¥ó¤Î¼èÆÀ
[ÆþÎÏ] ax=0xc701 dl=0x00
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
al=0x00
dh=MajorVersion
dl=MinorVersion
bh=Level
bl=0x00
[È÷¹Í] V2.1L40(dx=0x0201 bx=0x2800)
OS¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¤Ê¤¯TOS.SYS¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤¹
ÉÔÌÀ(int8e_c701_01)
[ÆþÎÏ] ax=0xc701 dl=0x01
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
[È÷¹Í] ²¿¤â¤·¤Ê¤¤
10ms¥¿¥¤¥Þ32bit¥«¥¦¥ó¥¿ÊªÍý¥¢¥É¥ì¥¹¼èÆÀ
[ÆþÎÏ] ax=0xc701 dl=0x02
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
ebx=10ms¥¿¥¤¥Þ32bit¥«¥¦¥ó¥¿ÊªÍý¥¢¥É¥ì¥¹
[È÷¹Í] ÆâÉô¤Ç¥¿¥¤¥Þ´ÉÍýBIOS(int 0x97)¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹
ÉÔÌÀ(int8e_c701_03)
[ÆþÎÏ] ax=0xc701 dl=0x03
[¸Æ½Ð] int 0x8e
[½ÐÎÏ] ah=¥¨¥é¡¼¥³¡¼¥É
0x00(Àµ¾ï½ªÎ»)
al=0xff
[È÷¹Í] ²¿¤â¤·¤Ê¤¤
RAW³ÈÄ¥¥á¥â¥ê¥³¥Ô¡¼
[ÆþÎÏ] cx=¥µ¥¤¥º(byte)
bx:si=žÁ÷¸µÊªÍý¥¢¥É¥ì¥¹
dx:di=žÁ÷ÀèʪÍý¥¢¥É¥ì¥¹
[¸Æ½Ð] call 0x0040:0x0024
[½ÐÎÏ] ¤Ê¤·
[Ç˲õ] EFLAGS
[È÷¹Í] ³ÈÄ¥¥µ¡¼¥Ó¥¹BIOS(int 0x8e ah=0x23)Åù¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹
386sxµ¡¤Ç¤ÏÆâÉô¤Ç¥¢¥É¥ì¥¹ÊÑ´¹¤ò¹Ô¤¤¤Þ¤¹
¥×¥í¥Æ¥¯¥È¥â¡¼¥É°Ü¹Ô»þ¤Ï¥Õ¥Ã¥¯¤·¤Þ¤¹
RAW³ÈÄ¥¥á¥â¥ê¥³¥Ô¡¼½àÈ÷
[ÆþÎÏ] ¤Ê¤·
[¸Æ½Ð] call 0x0040:0x0028
[½ÐÎÏ] ¤Ê¤·
[Ç˲õ] EFLAGS
[È÷¹Í] TOS.SYS½é´ü²½»þ°Ê³°¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë¥¿¥¤¥ß¥ó¥°¤ÏÉÔÌÀ¤Ç¤¹
¥×¥í¥Æ¥¯¥È¥â¡¼¥É°Ü¹Ô»þ¤Ï¥Õ¥Ã¥¯¤¹¤ë¤Ù¤¤Ê¤Î¤«¤â¤·¤ì¤Þ¤»¤ó
ÆâÉô¤Ç¤Ï°ì»þŪ¤ÊGDTÍÑÎΰè¤Î½é´ü²½Åù¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹
(¤¿¤À¤·GDTR¤Ï¤³¤Î»þÅÀ¤Ç¤ÏÀßÄꤵ¤ì¤Þ¤»¤ó)
Ìá¤ë