short cut to ... [main] [news] [forum] [download] [Hall of Fame] [game] [cg] [link]

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¤Ï¤³¤Î»þÅÀ¤Ç¤ÏÀßÄꤵ¤ì¤Þ¤»¤ó)



Ìá¤ë