*******************************************************************************
	 	PART 1 (3) n[hEFA荞݂̑@

				Y.Yamanisi

					Ver 1.00 : 1997/12/10(Wed) 06:54:04

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

@߂

@荞݁AƕƊ߂V̂̍łA'҂ӂ'̒
͕KvsȕłB
@ꂪ̂߂ɑ݂Ă邩́A̐ǂłΉł傤A
łȂl͂܂BȂAȂ͐lԂȂIB

===============================================================================
@荞݂̎
===============================================================================

	E}XNłȂ荞
	E}XNł銄荞

	O荞݁in[hEFA荞݁j

	荞݁cccbot荞
			cc\tgEFA荞

 E}XNłȂ荞
@\tgEFA͈؃Rg[łɁAĂ銄݂łB
́A}VɏdȃG[ƂȂǂɔ܂BłȂ̂ň
ʂɋCɂKv͂܂񂵁ACɂĂd܂B

@jG[荞...


 E}XNł銄荞
@\tgEFA狖Esݒł銄荞݂̂ƂŁA𑀍삷邱
ƂɂĕLvOo܂B


 En[hEFA荞
@botO̗vŔ銄荞݂ŁA}XNł̂ƏoȂ̂܂B
̓AO҂̕ꂩ̘b̃CɂȂ鏈łB

@jL[{[h荞݁A}EX荞݁A^C}荞...


 Ebot荞
@bot̖ߎsŔ銄荞݂Ń}XNs\łAvO}[́A
ӎvOȂ΂Ȃ܂BiĂ܂jAӎȂ
A肪ƌΖ̂ŁACɂKv͖ł傤Bi{j

@jZG[荞݁AVOXebv荞...


 E\tgEFA荞
@int߂ɂ"s"銄荞݁BBIOSR[DOSR[ŁAfarR[
oŗpB

@jint 21h,  int 18h...



@AA̕ޕ@͎̕ΌłāAKʂɒʗp̂ł͖


@荞݂̎

@ł́Aۂɂ͂ǂ̂₤Ȏdg݂Ŋ荞݂̂ł傤BL[{[h
荞݂ɂƂāAĂ݂邱Ƃɂ܂傤B

   ް޺۰  荞ݺ۰  CPU
		 荞ݐM		     荞ݗv  
							   
	Ei荞݃[`j E
			ǂݍ݁


@L[{[h̃L[ɉ炩̃ANVƁAL[{[h۰ׂu荞
ݐMvA荞ݺ۰ׁiohb ȌALjɏoAɂohbA
̊荞݂Ă邩mFAĂ΁u荞ݗvMvA
botɌĔs܂B
@̒iKŁAbotɊ荞݂AtOWX^́utOv
AĂΊ荞ݓɓB
@bot̊荞ݓ́ACS,IPyFLX^bNɃvbV荞݃xN^
A荞݃xN^e[u犄荞݃[`̃AhXǂ݁A֐
ڍsƂ̂łB
@荞݃[`ł́AL[{[h̃Xe[^Xǂݍ݁AɊÂăL[f
[^쐬AL[obt@Ɋi[܂BAƂƂɁAL[{[h۰ׂ̐
sÃL[͂ɔ܂B
@āAX^bNɕۑĂCS,IPyFL𕜋AAȂ̂悤
Ɍ̏ĊJ܂B


ohbi۸ي荞ݺ۰ׁj
@PC98V[Ŷohb́A8259AƂLSI(͑i)łAQgp
邱ƂŁAőPS̊荞ݗv󂯕t邱Ƃ\ɂȂĂ܂B
@̂Q̂ohb͂ꂼA}X^ohb,X[uohbƌĂ΂A}X^ohb
Abotɑ΂ڊ荞݂̂ɑ΂AX[uohb́A܂}X^oh
bɊ荞ݗvoA}X^ohbɂbotւ̊荞݂Ă炢܂B


===============================================================================
荞݂g
===============================================================================

@ۂɃn[hEFA荞݂gpɂ͂ǂ炢A^C}荞݂
ɂƂČĂƂɂ܂傤B(inttimer.asm)

T.荞݂ĝɕKvȍ
	@荞݂gݍރ[`
	A荞݂؂藣[`
	B荞݂Ƃ̏[`

@荞݂gݍރ[`
@ꂪƂbɂȂ܂ˁB荞݂悤ɐݒ肵ĂȂ΁A
gp邱ƂȂǖȂƂł傤B

 (1).O荞݂̋֎~
@荞ݐݒ̓rŊO荞݂邱Ƃh߁AŏɊO荞݂
֎~܂B

 (2).荞݃xN^e[uɊ荞ݏ[`̃AhXZbg
@ړI̊荞ݔԍ̃xN^e[ũAhXZbgsȂȂ΁A
Ȃ͓̂ÔƂłˁB
@܂A荞݃xN^e[uɏĂl͕ۑĂ܂B
@^C}荞݂̊荞ݔԍ 08h ł̂ŁA _InterruptOfTimer ̃Ah
Xݒ肵Ă܂B
@܂AdlrhCozWU[hgp̂gݍłȂ
ꍇ͗ǂ̂łA荞݃xN^̒ڏւ͏o邾ĂB
ɓ삵Ȃ܂B

 (3).荞݌̏ݒ
@n[hEFAɊ荞݂悤ɐݒ肵ȂΓȂ͔̂ł傤B
@ł́A^C}荞݂̎ 1ms ɐݒ肵Ă܂B
@^C}荞݁Aur荞݂̐ݒ͕̂ʂɋLĂ̂ł
QƂƗǂł傤B

 (4).ohb̊荞݃}XNWX^ihlqj̃rbg̃NA
@ohbɂhlq̏̃rbgNAĊ荞݂ĂȂ
Ȃ܂Bs̂܂܂Ɗ荞݂Ȃ͓̂R̗łB
@܂A炩̃foCXhCo풓̊荞݂gpĂ邩m
ƂlāAhlqۑĂǂł傤B
@܂AɃNAĂꍇ́Å荞݂͊ɎgpĂƂ
Ȃ̂ŁAɕss芄荞ݏ[`̍ŌɂĂяoĂ
AǂvOłˁB̂悤ȕ@A荞݂̃tbNƌ܂B
@^C}荞݂̏ꍇ͂hlq 0bitȂ̂łNAĂ܂B

 (5).O荞݂̋
@RCÂ̂悤ɁAŏɐݒ肵O荞݂̋֎~Ă˂΂Ȃ
܂B


A荞݂؂藣[`
@荞݂gݍރ[`oA؂藣[`KvȂ̂͌
܂łȂƂłˁBuŁHvƎvl͎ŉBĂ肪
f܂B
@ƂƂ񌳂̏ԁivOJnԁjɖ߂Ă̂zIłˁB

 (1).O荞݂̋֎~
@͂⏑܂ł܂ˁB

 (2).荞݃xN^e[u̕A
@ۑĂl߂Ă܂BYƂ̊荞݂gpĂ
foCXhCoA풓삵ȂȂ܂B

 (3).荞݌̏ݒ
@̏Ԃɖ߂Ă̂łAԂǂ߂Ȃ͎̂dȂ̂ŕĂ܂B
 (4).ohb̊荞݃}XNWX^ihlqj̕A
@ۑĂhlq̓e߂Ă܂B

 (5).O荞݂̋
@YȂŉB


B荞݂Ƃ̏[`
@ł́A荞݂ۂ̏[`Č܂傤B

 (1).荞݂̋
@荞݂ƁAbot͎IɊ荞݋֎~tO𗧂Ă̂ŁAʂ
R芄荞݂ĂAD揇ʂ̍荞݂ꂳ
Ȃ΂Ȃ܂B

 (2).WX^̕ۑ
@荞݂ɁAݎs̏ԂύXĂ͂̌̎sɎx
̂ŁA荞ݏŎgp郌WX^ۑȂ΂Ȃ܂BA
FL͂botۑĂ̂ŁAŕۑKv͂܂B

 (3).肽Ƃ
@荞ݏł肽ۂɂ܂B
@̂ƂADOŞݸ݂BIOS̃\tgEFA荞ݏ́AgpĂ͂
B
@ł́A64bitJE^ɂP𑫂Ă܂B1msJEg64bitΐ\I
ς܂BiӖ͂Ȃj32bitłA50ς܂B

 (4).ohbɊ荞݂̏Iidnhjm点B
@ohbɂdnhm点ȂÅ݂荞݂Dx̒Ⴂ荞݂
tȂ̂ŁAdnhm点Ă܂B
@荞݂̃tbN鎞ɂ͂̑͗v܂B

@̂ƂCtȂ΂ȂȂ̂X[uohbɑ΂đĂꍇ
łBX[uohbł̊荞݂̏ꍇ́A܂X[uohbɂdnhm点A
̌X[uohbɊ荞ݗvĂȂmF(ISŘ)A}X^
ohbɂdnhm点Ă܂B́AISŘɃ}X^ohbɂdnh
m点ƃX[uohbɗvĂ荞݂܂łȂȂ
܂܂BISŘ͌q̂ohb̂h^n|[gQƂĂB

 (5).WX^̕A
@(2)ŕۑĂWX^𕜋AĂ܂B

 (6).荞ݏ̏I
@IRET߂ɂA荞݃[`IČ̏ɖ߂܂B
@荞݃tbN̎́AIRET̑ւɑޔĂAhX𗘗pfar Jump
܂B̓IȗĂ܂B

;f[^̈
IntOldOffset	DW	?	;Ɋ荞݃xN^e[uɏĂ
IntOldSegment	DW	?	;AhX͓͍ς݂Ƃ

;R[ḧ
	;	POP	WX^

	JMP	DWORD PTR IntOldOffset	;̃[`ɔ


===============================================================================
荞ݎ̂bot
===============================================================================

@荞݂ƂAbot͂ǂ̂悤ɓ삷̂ł傤BvO
gޏŕKvȂƂ͌\L܂B

 @tOWX^FL̕ۑ
@FLX^bNɃvbV܂B
@\tgEFA荞݂ŃtOɌʂ𔽉fƂɂ́A𑀍삵܂B

 AR[hZOgCS̕ۑ
@CSX^bNɃvbV܂B

 BCXgNV|C^IP̕ۑ
@IPX^bNɃvbV܂B

 C荞݃xN^CS,IP̃[h
@ZOg0000hAItZbg荞ݔԍ~S x[XƂāA+00hIP
+02CSɃAhX[h܂B
@̓Iɂ́A^C}荞݂ł͊荞ݔԍ͂WȂ̂ŁA
	IP		0000h:[08h*4+00h]
	CS		0000h:[08h*4+02h]
ƁAƂɂȂ܂B

 D荞݋tOB
@荞ݏɑ̊荞݂Ȃ悤ɂׁA荞݋֎~Ƃ܂B
vOŁASTI߂ɂĊ荞݋ĂKvL܂B

@荞݂̕A(IRET)̂Ƃ́A@,A,B̋t̍ƂL邾łB

@ŁAӂKvȂ̂͂̓삪܂łbot[hœ삵Ă鎞
̘błāAzWU[hł͂̂߂̃G~[gsĂAƂ
ƂłB
@zWU[hł̊荞ݏł́A荞݂钼ȌԂAu荞
ɓƂɕۏ؂Ȃv̂ŁAũWX^ɂ͕K̒l
vƂvO͐ɓ삵ȂƂ悭܂BɁAZOg
WX^̒lҒʂɓĂȂLA듮EnOAbv̊댯L
܂B


===============================================================================
ohb̂h^n|[g
===============================================================================

ohbɂIMR,IRR,ISR̂R̃WX^L肻ꂼꎟ̈Ӗ܂B

	hlqF荞݋^֎~̐ݒB
	hqqFݓĂ銄荞݂B
	hrqFݗvoĂ銄荞݂B


    @\			f[^				  I/O
			 D7   D6   D5   D4   D3   D2   D1   D0	 ڽ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 IRR̓ǂݏo		IR7  IR6  IR5  IR4  IR3  IR2  IR1  IR0	  00h
 			IR15 IR14 IR13 IR12 IR11 IR10 IR9  IR8	  08h

 ISR̓ǂݏo		IS7  IS6  IS5  IS4  IS3  IS2  IS1  IS0	  00h
 			IS15 IS14 IS13 IS12 IS11 IS10 IS9  IS8	  08h

 ق̓ǂݏo	 I    -    -    -    -    W2   W1   W0	  00h,08h

 IMR̓ǂݏo		 M7   M6   M5   M4   M3   M2   M1   M0	  02h
			 M15  M14  M13  M12  M11  M10  M9   M8	  0Ah
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 ICW1̏		 0    0    0    1   LTIM  0    S    1	  00h,08h
					~    ~
 OCW2̏		 R    SL   EOI  0    0    L2   L1   L0	  00h,08h
					~    ~
 OCW3̏		 0   ESMM  SMM  0    1    P    RR   RIS	  00h,08h
					~    ~

 OCW1(IMR)̏	 M7   M6   M5   M4   M3   M2   M1   M0	  02h
			 M15  M14  M13  M12  M11  M10  M9   M8	  0Ah

 ICW2̏		 T7   T6   T5   T4   T3   0    0    0	  02h,0Ah

 ICW3̏		 1    0    0    0    0    0    0    0	  02h,0Ah
 
 ICW4̏		 0    0    0   SFNM  1    1    0    1	  02h,0Ah
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


R}h[h

@IMR̓ǂݏAIRR,ISR̓ǂ݂IȂǂݒ肵܂BOCW2OCW3͓|[g
ɐݒ肵܂AD3,D4̐ݒŎʂ܂B

 OCW1	02h,0Ah
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|M7   M6   M5   M4   M3   M2   M1   M0	|
	|M15  M14  M13  M12  M11  M10  M9   M8	|
	+---------------------------------------+
	IMȐ	0=荞݋
			1=荞݋֎~

 OCW2	00h,08h
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|R    SL   EOI  0    0    L2   L1   L0	|
	+---------------------------------------+
	荞݃xύX	R=1,SL=1 LŎw肵荞ݗDxŉʂ
				R=1,SL=0 荞ݗvDx̉]
	荞ݏI		EOI=1

 OCW3	00h,08h
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|0   ESMM  SMM  0    1    P    RR   RIS	|
	+---------------------------------------+
	ǂݏoWX^̐ݒ	RR=1,RIS=0 IRR Read mode
				RR=1,RIS=1 ISR Read mode
				RR=0 ݒ肵Ȃ
	|[[h̎w	P=0 ɐݒ肵Ă
	SlXg[h̐ݒ	ESMM=1,SMM=1 SlXg[h
				ESMM=1,SMM=0 SlXg[h
				ESMM=0 ݒ肵Ȃ


|̃R}hgpɓĂ̒Ӂ|
 荞݋E֎~tÓAłɑ삵ȂłBɃX[uohb́A
fBXNɎgĂAf[^j󂵂Ă܂ʂɐ肩˂܂B

@荞݃xύXӖ͂܂薳łAƂlׂ̈ɍڂĂ
܂BDx̉]ׂ͒Ă܂Bő삵l͎Œׂĉ
B
@w肵荞ݗDxŉʂɂƂÅ荞݃xς
͖ƌƂɋCtĉBw肵荞݃xŉʂɂȂ悤
]܂B

|[[hESlXg[h̉PC98ł͍sȂŉB

CjVCY[h

@8259p̃CjVCY[h͂SŁAwI/OAhXɏ
ƂŎs܂B܂A͂ł\ICW1ނƁAɊÂ
CjVCYEV[PXJn܂B

 ICW1	00h,08h
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|0    0    0    1   LTIM  0   SNGL  1   |
	+---------------------------------------+
	ڑ		SNGL=1 g[h KPɂĉB
				SNGK=0 Pꃂ[h

	gK[h		LTIM=1 xgK[h
				LTIM=0 GbWgK[h XWł͂I

	ʏ 00010001b ɐݒ肵܂B


 ICW2	02h,0Ah
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|T7   T6   T5   T4   T3   0    0    0	|
	+---------------------------------------+
	荞ݔԍ̐ݒ	T3`T7 荞ݔԍ̏ʂTrbgw肵܂

	ʏ̓}X^ 0000100b X[u 00010000b ɐݒ肵܂B


 ICW3	02h
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|1    0    0    0    0    0    0    0	|
	+---------------------------------------+
	0Ah
	+---------------------------------------+
	|0    0    0    0    0    0    1    1	|
	+---------------------------------------+

	K̂悤ɐݒ肵ĉB


 ICW4	02h,0Ah
	+---------------------------------------+
	|D7   D6   D5   D4   D3   D2   D1   D0	|
	+---------------------------------------+
	|0    0    0   SFNM BUF  M/S  AEOI   PM	|
	+---------------------------------------+
	gpbot	PM=1 8088/8086[h KPɂĉB
				PM=0 8080/8085[h
	EOI̕		AEOI=1 荞݂ɁAIEOIo
				AEOI=0 PC98ł́Aw
	}X^EX[uI	M/S=1 }X^
				M/S=0 X[u
	botƂ̐ڑ		BUF=1 obt@[h
				BUF=0 obt@[h
	ꊮSlXg[h	SFNM=1 ꊮSlXg[h
				SFNM=0 SlXg[h

	 PC98ł AEOI=0,BUF=1 ݒ肵ĉB܂A}X^łM/S=1,SFNM=1A
	X[ułM/S=0,SFNM=0ɂĉB


@ohb́Aʏ͏ĂKv͖̂łAbotی샂[hœ
Ă肽ɁA荞ݔԍύX邽߂ɏKvȂƂL܂B
̍ہÅ荞݂ƔԍdȂȂlɏ[CtĂB



Ă݂悤

@܂œǂłlȂAn[hEFA荞݂gƎv܂B
Ă݂ʁA̒ӎƃfBXN̐ݒςȂƂƂ
΁A}VSz͗L܂BǂǂĂ݂Ď̂̂ɂĂ
ĉB
@悭g^C}荞݂̐ݒ@ʂɋLĂ̂ŁAQlɂ
B


