*******************************************************************************
		PART 2   ̓foCX		(KEYBOARD,MOUSE)

		(2) MOUSE 

			    T.Noda
					Ver 1.00 : 1997/12/06(Sat) 17:28:38

*******************************************************************************

@MOUSE

@L[{[hɂŁAɎgp񐔂̑̂}EXłBŋ߂̂nrł͈Ԏdl񐔂̑̓foCXɂȂĂ܂B
@̃}EX̎gp@ЉȂ킯ɂ͂܂B

@foCXhCo𗘗p@

@}EX̐M𗘗pɂ́AԊȒPȕ@ƂĂ̓foCXhCo𗘗p
@܂BȑO͂̃foCXhCoAɂQƂ̗ꂪ܂
AMicrosoft `̃hCogƂ̂ŁAɂMicrosoft`
̃hCog@Љ܂B
@܂A܂łgpOɃfoCXhCo풓邱ƂYȂł
B

	* Microsoft ͕MicrosoftЂ̏WłB

@QTUF[h̃hCo̐U镑

@obXWQPV[YɂȂĂQTUF\o悤ɂȂ܂A}EXh
CoɂĂ̑Ή͈Ⴂ܂Bȉ̂悤ɂȂĂ܂B
@
	foCXhCoƃo[W	|	gp\
  -------------------------------------------------------------------
@Microsoft MOUSE.COM Ver 7.02		|	

	(̑̌ʂ𒲂ׂAĂB)

@}CN\tg}EXBIOSꗗ	(INT 33H)

	------------------------------------------------------
	@\R[h	|	@\
	------------------------------------------------------
		00H	|	}EXBIOS
		01H	|	}EXJ[\\
		02H	|	}EXJ[\
		03H	|	}EX󋵎擾(ʒuA{^)
		04H	|	}EXJ[\ʒuݒ
		05H	|	{^擾
		06H	|	{^擾
		07H	|	̃}EXJ[\ړ͈͐ݒ
		08H	|	̃}EXJ[\ړ͈͐ݒ
		09H	|	}EXJ[\`ݒ
		0BH	|	}EXJ[\̈ړ擾
		0CH	|	[U[`Tu[`R[ݒ
		0FH	|	~bL[^hbgݒ
		FDH	|	OtBbNVRAMݒA󋵎擾
		FEH	|	}EX荞݂̋
		FFH	|	J[\\ʐݒ

@̂悤ɁÃt@NV܂Aʏĝ͍ŏ̂ق̊
łBɂāÃt@NVgɂāAahnȑ
KsĂB

		00H	}EXBIOS
	荞	INT	33H
			AX	00H
	o		AX	}EX
				{	AX = 0	:gp\	}
				{	AX = -1	:gps\	}
			BX	}EX̃{^
			}EXhCo풓ĂāAȍ~̃t@NVg
			p\ׂ܂Bgp\ł΁A֘Ȁ
			s܂B}EXahnrgpŏɕKsĉ
			B
		̏
	-----------------------------------------------------
	J[\\	|	\Ȃ
	J[\ʒu	|	(,)
			|
	J[\\	|	0,1,2v[
	v[	|
	J[\`	|	̖(16*16 Dots)
	J[\S_	|	J[\W(0,0)
	~bL[^hbg|	 8, 8
	ݒ

	TvvOQ:		MS_MOUSE.C

		01H	}EXJ[\\
	荞	INT	33H
			AX	01H
	o		Ȃ
			}EXJ[\\܂B

	TvvOQ:		MS_MOUSE.C

		02H	}EXJ[\
	荞	INT	33H
			AX	02H
	o		Ȃ
			}EXJ[\܂B

	TvvOQ:		MS_MOUSE.C

		03H	}EX󋵎擾(ʒuA{^)
	荞	INT	33H
			AX	03H
	o		BX	{^̏
				Bit 0 :	{^̏
				Bit 1 :	E{^̏
					{	0:	Ă	}
					{	1:	Ă	}
			CX	J[\ʒu̐W
			DX	J[\ʒu̐W
			}EX̃{^̏ԁA}EXJ[\̈ʒu擾
			܂B

	TvvOQ:		MS_MOUSE.C

		04H	}EXJ[\ʒuݒ
	荞	INT	33H
			AX	04H
			CX	ݒ肷J[\ʒu̐W
			DX	ݒ肷J[\ʒu̐W
	o		Ȃ
			}EXJ[\̕\ʒuړ܂Bݒo͈͂
			݂̉ʂ̕\\WƃJ[\ړ͈͓łB
			@𒴂ꍇ͂̉\ȈԒ[ɂ܂B

	TvvOQ:		MS_MOUSE.C

		05H	{^擾
	荞	INT	33H
			AX	05H
			BX	𓾂{^̎w
				BX = 0 {^
				BX = 1 E{^
	o		AX	{^̏
				Bit 0 :	{^̏
				Bit 1 :	E{^̏
					{	0:	Ă	}
					{	1:	Ă	}
			BX	OĂяỏꂽ
			CX	ŌɉƂ̃J[\ʒu̐W
			DX	ŌɉƂ̃J[\ʒu̐W
			w肳ꂽ{^ꂽ̏擾܂B
			03H	̏̏Ԃ܂B

	TvvOQ:		MS_MOUSE.C

		06H	{^擾
	荞	INT	33H
			AX	06H
			BX	𓾂{^̎w
				BX = 0 {^
				BX = 1 E{^
	o		AX	{^̏
				Bit 0 :	{^̏
				Bit 1 :	E{^̏
					{	0:	Ă	}
					{	1:	Ă	}
			BX	OĂяo̗ꂽ
			CX	ŌɗƂ̃J[\ʒu̐W
			DX	ŌɗƂ̃J[\ʒu̐W
			w肳ꂽ{^ꂽ̏擾܂B
			03H	̏̏Ԃ܂B
			 05HꂽɊւɂāA͂
			̔΂̗ꂽ̏łB

	TvvOQ:		MS_MOUSE.C

		07H	̃}EXJ[\ړ͈͐ݒ
	荞	INT	33H
			AX	07H
			CX	J[\̈ړ͈͂̐̍ŏl
			DX	J[\̈ړ͈͂̐̍ől
	o		Ȃ
			}EXJ[\̐̈ړ͈͂ݒ肵܂B
			̈ړ͈͂̓J[\̒S_ɑ΂ėLłB
			őlƍŏl̎wtɂĂtɎ蒼Ă܂
			B

	TvvOQ:		MS_MOUSE.C

		08H	̃}EXJ[\ړ͈͐ݒ
	荞	INT	33H
			AX	08H
			CX	J[\̈ړ͈͂̐̍ŏl
			DX	J[\̈ړ͈͂̐̍ől
	o		Ȃ
			}EXJ[\̐̈ړ͈͂ݒ肵܂B
			̈ړ͈͂̓J[\̒S_ɑ΂ėLłB
			őlƍŏl̎wtɂĂtɎ蒼Ă܂
			B

	TvvOQ:		MS_MOUSE.C

		09H	}EXJ[\`ݒ
	荞	INT	33H
			AX	09H
			BX	}EXJ[\̒S_̐W(0`15)
			CX	}EXJ[\̒S_̐W(0`15)
			ES:DX	J[\`f[^̐擪AhX
				J[\`f[^̃tH[}bg
			TCY	2*16*2 Byte
			`	
				擪			|Offset 
				ANDpf[^(0,0).......(15,15)	|0
				f[^̓rbg}bv		|
				XORpf[^(0,0).......(15,15)	|32
				f[^̓rbg}bv		|
			}Љ͂ɑ}

	o		Ȃ
			}EXJ[\̃p^[ݒ肵܂B
			̂Ƃ킹āAJ[\̒S_ݒ܂B
			J[\f[^̌`͐}̂ƂłB

	TvvOQ:		MS_MOUSE.C

		0BH	}EXJ[\̈ړ擾
	荞	INT	33H
			AX	0BH
	o		CX	}EX̐ړ(-32768`32767)~bL[
			DX	}EX̐ړ(-32768`32767)~bL[
			O񂱂̃t@NVĂяoĂǍĂяo
			܂ł̑ΓIȈړʂ~bL[PʂŕԂ܂B
			@W͉ʂƓłB

	TvvOQ:		MS_MOUSE.C

		0CH	[U[`Tu[`R[ݒ
	荞	INT	33H
			AX	0CH
			CX	R[
				Bit 0 :}EXJ[\̈ʒuω
				Bit 1 :{^̉
				Bit 2 :{^̊J
				Bit 3 :E{^̉
				Bit 4 :E{^̊J
					{Bit 0 : R[Ȃ	}
					{Bit 1 : R[	}
				ݒ\
			ES:DX	[U[`̃Tu[`AhX
	o		Ȃ
			[U[Ő삵Tu[`ɂ
			R[܂B
			@Ăяo郋[`FAR^ƌȂĂ܂̂ŁA
			KvłB
			̋@\͂܂gȂł傤B

		0FH	~bL[^hbgݒ
	荞	INT	33H
			AX	0FH
			CX	̃~bL[^hbg
			DX	̃~bL[^hbg
	o		Ȃ
			}EX{̂̈ړPʂƁAɑΉʏ̃J[\
			̈ړʂ̔ݒ肵܂B
			@̃}EX{̂̈ړʂ~bL[ƂAJ[\̈
			ʂhbgPʂłB
			@͂WhbgAJ[\ړ̂ɁAǂ̒x̃~
			bL[Kv܂BiP~bL[ = 0.25mm)
			@̒l傫΃}EX̊x͒ႭȂA
			Ίx͍Ȃ܂B
			@}CiX̐ݒ\łB

	TvvOQ:		MS_MOUSE.C

		FDH	OtBbNVRAMݒA󋵎擾
	荞	INT	33H
			AX	FDH
			BX	OtBbNVRAMgpv[ݒ
				BX = 0 :0`2 v[gp
				BX = 1 :0`3 v[gp
	o		BX	OtBbNVRAM
				BX = 0 :v[R
				BX = -1:v[RȂ
			}EXJ[\̕\v[ݒ肵܂B
			@ahnrł̓v[RgpłȂ̂ŁA
			̃t@NVĂяoƂŎgp\ɂ܂B

	TvvOQ:		MS_MOUSE.C

		FEH	}EX荞݂̋
	荞	INT	33H
			AX	FEH
			BX	}EX荞݂̐
				BX = 0 :荞ݒ~
				BX = -1:荞݊Jn
	o		Ȃ
			}EX荞݂~A܂͊Jn܂B

	TvvOQ:		MS_MOUSE.C

		FFH	J[\\ʐݒ
	荞	INT	33H
			AX	FFH
			BX	}EXJ[\\
				Bit0 :	v[ 0
				Bit1 :	v[ 1
				Bit2 :	v[ 2
				Bit3 :	v[ 3
					Bit  = 0 \Ȃ
					Bit  = 1 \
	o		Ȃ
			}EXJ[\̕\v[ݒ肵܂B
			@ahnrł̓v[RgpłȂ̂ŁA
			̃t@NVĂяoƂŎgp\ɂ܂B

	TvvOQ:		MS_MOUSE.C

@ȏオ}EXahnrp}EX̎gp@łBʏ̃\tgƂ͂
̃t@NVR[𗘗p邾ŏ\łB

===============================================================================
@I/Ogp}EX̎擾
===============================================================================

@ʏ͂ahnrgp@ŏ\łAI/Oł̃}EXRg[s
ׂ̈ɁAlЉĂ܂傤BAȉ̏񂾂łȂ荞݂p
\ȏ̊ǗȂƂahnrl̃t@NV͍Ȃ̂ŁA
B

@}EX̂h^n̎dg

@}EẌړ̓}EX̂wAx̓ɍ킹ăJEgAJE^
ƂɂĔf܂BƂ낪ÃJE^͂PByetȂ̂łQTUJE
gȏ𒴂ƐlƂoȂȂ܂B̂߂ɂ́AQTUȏ
ɂȂȂɁA̒lǂŁA\tgŋLĂ鏈KvłB
@̏ɂ͊荞ݎ𗘗pāAmȎԊǗōsKv܂B
@ĩ}EX荞݂̎ς邽߂̂h^n݂܂Bj
@A}EXC^[tFCX̃PD8255A4BitxɒlǂނƂo
Ȃ߂ɁA8Bit̒l̏ʂƉʂ̂QɕēǂޕKv܂B
@́Aړʂ̏}EXI/Ȍ̓Ƃ낾Ǝv܂B

@}EXI/O

	 Read Port
	I/O Adress	|@\		|	f[^			
			|		| D7 D6 D5 D4 D3 D2 D1 D0	
	----------------------------------------------------------------
	7FD9H		|[h|[gA	| L  M  R  ~ {ړDATA}
			|}EXԎ擾	|
			|		|@L		: LEFT    Button 
			|		|@M		: Middle  Button 
			|		|@R 		: Right   Button 
			|		|		0 = OFF , 1 = ON
			|		|@ړDATA 	: SXY , SHL Ŏw肵
			|		|		  ړʃf[^(4 Bit)
			|		| Middle {^͈ꕔ̋@ł͖gp
			|		| 
	----------------------------------------------------------------
	7FDBH		|[h|[gB	| ~ R  ~ ~ ~ ~ S ~
			|(fBbv	|
			| XCb`擾1)|@R		: RAM Kill
			|		|		 = 0 œRAM 512KB
			|		|		 `640KB؂͂Ȃ
			|		|@S		: Speed SW
			|		|		 CPUXs[h
			|		|		 S = 0 : HIGH
			|		|		 S = 1 : LOW
	----------------------------------------------------------------
	7FDDH		|[h|[gC	| HC SX SH IN MO CP S6 S5
			|(fBbv	|
			| XCb`擾2)|@HC		: HC = 0
			|		|		 ȂΓǂݏo_
			|		|		 ̈ړDATAo͂
			|		|		: HC  01̂Ƃ
			|		|		 ړf[^obt@
			|		|		 o͂ăJEgN
			|		|		 A
			|		|@SX(SXY)
			|		|@SH(SHL)	ǂړʃf[^
			|		|		]̑IXCb`
			|		| Ex)
			|		|	SXY | SHL | ]ړDATA
			|		|	--------------------------
			|		|	 0  |  0  | X 4BIT
			|		|	 0  |  1  | X 4BIT
			|		|	 1  |  0  | Y 4BIT
			|		|	 1  |  1  | Y 4BIT
			|		| IN(INT)	: INT = 0Ń}EX
			|		|		 ݂̋
			|		| MO(ModeSwitch): m[}/nC]
			|		|		@[hXCb`
			|		|		 (PC98XL/RL)
			|		|		 MO = 0 :nC]
			|		|		 MO = 1 :m[}
			|		| CP(CPUSwitch) : CPU؂芷ݒ
			|		|		0 : ON(86X86n)
			|		|		1 : OFF(70116n)
			|		| S6(SW1-6)	:RS-232C[hݒ
			|		|		0 : OFF
			|		|		1 : ON
			|		| S5(SW1-5)	:RS-232C[hݒ
			|		|		0 : OFF
			|		|		1 : ON
	----------------------------------------------------------------

	 Write Port
	I/O Adress	|@\		|	f[^			
			|		| D7 D6 D5 D4 D3 D2 D1 D0	
	----------------------------------------------------------------
	7FDDH		|Cg|[gC	| HC SX SH IN  0  0  0  0
			|		|
			|		| ̈Ӗ͏Ɠl
	----------------------------------------------------------------
	7FDBH		|Cg^C}	|  0  0  0  0  0  0 T1 T2
			|		|
			|		| }EX荞ݎ̐ݒ
			|		| Ex)
			|		| T1 | T2  | 荞ݎ | g
			|		|----------------------------------
			|		| 0  |  0  |    8.3 ms    | 120 Hz
			|		| 0  |  1  |   16.7 ms    |  60 Hz
			|		| 1  |  0  |   33.3 ms    |  30 Hz
			|		| 1  |  1  |   66.7 ms    |  15 Hz
	----------------------------------------------------------------

@MOUSE I/O ̉

@ȏ̗pMOUSE I/O ̏ڍׂAۂ̃}EX̃Rg[ɗp镔
́AȂAقƂǂfCbvXCb`̐ݒ蓙ɁAgpĂB
@́A}EX̃Rg[Ɋւ镔݂̂ɂčsB

@@}EX{^̏Ԏ擾

@}EX{^̏Ԃ擾̂́AI/O Adress  7FD9H [hΗǂB
@̃AhX Bit 7,6,5}EX{^̏󋵂Ԃ̂ŁÄʒuǂ߂
ݎ̃{^󋵂͕BBit  0Ȃ΃{^͗ĂA1ȂΉ
B
@TvvOQƂĂB

@@}EXJE^Ԃ̎擾iړʂ̎擾j

@}EX̃Rg[ňԓ̂Äړʎ擾łB
@̓}EX̃JE^̒lA4BitPʂłǂݏoȂ߂Ɉʒuw肵
ǂނ߂ɋN܂B܂w̎d̃[LɋL܂B
@
	@JE^̓ǂݕ̏

	@1,JE^̌Œ艻

@JE^̌Œ艻ɂ I/O Adress  7FDDH@́@HC ̈ʒu1ɂ܂B
@sƁA}EX𓮂Ă I/O PORT ɕԂĂl͕ω܂B
@̊ԂɈȉ̏s܂B

	@2,ǂ݂ʒuw

@߂Ƀ}EXJE^̂ǂ̈ʒuǂݏow肵܂B
@ I/O Adress 7FDDH  SXY , SHL Ɉȉ̂悤ȒlŎw肵܂B

			SXY | SHL | ]ړDATA
			--------------------------
			 0  |  0  | X 4BIT
			 0  |  1  | X 4BIT
			 1  |  0  | Y 4BIT
			 1  |  1  | Y 4BIT

	@3,JE^wʒuǂ݂

@Ɏw肵ʒu̒lo܂B I/O Adress 7FD9H Bit 3,2,1,0
ɕԂ܂B̒loƂŊłA͂܂ŕKvȃf[^
ł̂ŁAłƍKv܂B
@ȂAǂݏoĺAÖʒüړʂĂ܂B

	@4,JE^̃NA

@āAȏ̏eʒuƂɍsāAv4sđSĂ̒l擾AJE
^NAKv܂B
@}EX̃JE^1ByteԂ񂵂Ȃ̂ŁÂ܂܂ɂĂƁAlI[o
܂On܂Ă܂܂B̂߂ɃJE^̃NAsKv܂B

@JE^̃NAɂ I/O Adress  7FDDH@́@HC ̈ʒu0ɂ܂B

@܂A̎菇́ARŋKsKvA}EX荞
p邱ƂOɂ܂B
@܂ǂݏolAʏ̃J[\̓Ƃǂ̒x̔䗦ō킹邩Y
Ă͂܂B


@}EXJE^I/O PROT̊֌W̐}Ɏ܂B

							      +------------+
	}EXpXWFl[^ ==> XJE^ ==> Xb` ==>|Rg[|
		||                   (8Bit)                   |            |
		||                                            |            |
		||=================> YJE^ ==> Yb` ==>|            |
		                                              +------------+
                                                         f[^  |  || SHL,SXY
                                                         (4Bit)  |  || HC
                                                                 |  ||
							      +------------+    							      | I/O Port   |
							      +------------+


@MOUSE I/O TvvOQ:	MOUSE_IO.C

@Ń}EX̃Rg[͏o܂Aۃ}EXhCô悤ȕ
͂Ȃς͎dłBȏ̒lpĂȏtKv邩
łBȉł͂܂ŗv邱Ƃ͏ȂƂƂɂāAI
炵Ă炢܂B

@T|[g@

@̃eLXĝႤƂ܂AЋĂB
@܂A͂̃X^CA{̃~XȂǂ܂AȂĂB
@tɁA̋LɍڂĂȂƂɕtĂ̎܂AЋĂ
Bɗǂ̂ڎw܂̂ŁA肢܂B


@쌠E]ړɂā@

@쌠

@@̃eLXgɊւvOEhLg̒쌠T.NODAL܂B

@]ځEĔzz

@@]ځEĔzzɂĂ͓ɐ܂B񂶂΂܂ĂB
@@ȂAˑR͂TvXV邱Ƃ̂ŁÂƂ͓悤
@@΂܂ĂB

@@]ڂ̍ۂɂ̓A[JCut@C̓e͕ςȂ悤ɂĂB
@@ISH, UU Ȃǂ̔zz`͐܂B

@@AGȂǂɌfڂ̍ۂɂ͕K҂܂ŘA肢v܂B
@@iG̕t^Et[\tgWւ̎ڂ͑劽}ł̂ŁAǂX肢
     ܂Bj

@Ɛ

@@̃vO̎gpɂ艽̑QĂA҂͐ӔC𕉂܂B

@Ql@

@PC-9801 vO}[YBiBle	ȑEIC/	Zp]_
				 MOUSE 

@g^WX^ZpSPECIAL No.45
				 MOUSE I/O 		CQo

@Microsoft Mouse Driver Ver 6.00̃hLgt@C	MicroSoft

