*******************************************************************************
		PART 4 OtBbN		(TEXT,KCG,GDC,GRCG,EGC,256)

			Y.Yamanisi / T.Noda / M.Itadani

					Ver 1.00 : 1997/12/10(Wed) 06:55:15
*******************************************************************************

  OtBbNƂ͂uq`l̃C[Wł

@ʂɉf(f[^)\ɂ́Ãf[^i[郁KvłB
uq`lAȂ͂uq`lłB
@PC98łVRAMeLXgp,OtBbNppӂĂAꂼT-VRAM,G-VRA
MƌĂ΂܂B
@VRAMɃf[^łƁAɑΉfʂɕ\܂Bǂ
悤ȃf[^Aɏ߂Ηǂ̂܂Bܘ_A\ɂ
eLXg(OtBbN)LɂȂ΂Ȃ܂B

*******************************************************************************
		PART 4 (1) Text VRAM (TVRAM)

			Y.Yamanisi / T.Noda 

					Ver 1.00 : 1997/12/10(Wed) 06:56:47
*******************************************************************************

===============================================================================
  T_VRAM
===============================================================================

 TVRAM̍\

@PC98ł́AeLXgƃOtBbNƗđ݂Ă(ƗԂ
݂ĂjAXɃeLXgVRAMR[hGAƃAgr[gGÂQ
琬Ă܂BłAʂɏo͂Ƃ́Ap̃ԁA
Ȃ킿TVRAMɏoׂ͂R[h݂܂Bł͂̍\܂
傤B

ADRESS           0123 ......                           79  => 80
		+----------------------------------------+
A000:0000------>|ABCDEF                                |
		|                                        |
		|                                        |
		|                    s25              |
		|                                        |
		|(0,0)(79,24)܂                    |
		|                                   ABC|  p12Byte
		+----------------------------------------+

			TEXTVRAM R[hGA

ADRESS           0123 ......                           79  => 80
		+----------------------------------------+
A200:0000------>|ABCDEF                                |
		|                                        |
		|                                        |
		|                    s25              |
		|                                        |
		|(0,0)(79,24)܂                    |
		|                                   ABC|  p12Byte
		+----------------------------------------+
		
			TEXTVRAM Agr[gGA

		 TVRAM̍\}

@̂悤ɁATVRAM͂Qނ̃\܂BP͕̎ނ̂
̃f[^̈łB͕R[hGAƂĎĂ܂B
@́A̕\镶̑߂̂܂AAgr[g
̂łB̓Agr[gGAƌĂ΂܂B
@̐}悤ɁAR[hGA̓AhX A000:0000 n܂
܂BR[hGÁA`OOOO`PeeeƂȂĂA
pWÔƂATOsłB
@̍\́AP̔zƂČȂƂoł傤BPQoCgł
ACŌƂ(int  16 BitƂ)int ^̔złˁB
@łvfԍ(AhX)vZĂ̈ʒuɕR[hƁA߂
Aʂɂ͕\킯łB

@ݐ̃AhXvZƒ

  R[hGAւ̏

@āAۂɌvZĔCӂ̈ʒuɏł݂܂傤B
@ANKP\̂ɂ͂QByteKvŁASp͂SByte܂˂΂Ȃ
B
@ANZXPʂ[h(word:2Byte)ɂȂĂ邱ƂɒӂĉB

   `mj̏ꍇ	(2Byte)

@ʃoCgɃLN^R[hAʃoCgɂOĂ܂B
				
ADRESS: N	 N+1
	+---------------+
	|ANKCODE|      0|
	+---------------+

	ȊɂȂ܂B

@ɂ̃f[^݃AhX̌vZKvłˁB
@ɂTVRAM̍\ȉ̎ł傤B

	(X,Y) Wɏޏꍇ

	ADRESS = Y * oCg + X + TVRAM̐擪Ԓn

	ꂪʓIȎɂȂ܂BʏA(80 * 2 = ) 160ByteȂ̂ŁA

	ADRESS = Y * 160 + X + TVRAM̐擪Ԓn

	ƂȂł傤B̃AhXɐ̃f[^߂Ηǂ̂łB

<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>

	LPUINT16	TextAddress=(LPUINT16)0xa0000000;

	*TextAddress = 0x0041			/* 'A' */

<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>

   Sp̏ꍇ	(4Byte)

@Sp͂P̕R[hA2Byteł珑݂ɗvoCg4Byte
ɂȂ܂BvZ͐̌vẐ܂ܓĂ͂߂邱Ƃłł傤B
@A]f[^ɒӂĉBȉ̃[KvłB

ADRESS: N		N+1		N+2		N+3		
	+--------------------------------------------------------------+
	|DATA A        |DATA B          |DATA C         |DATA D        |
	+--------------------------------------------------------------+

	DATA A:		JISR[hʃoCg|QO
	DATA B:		JISR[hʃoCg
	DATA C:		JISR[hʃoCg{UO
	DATA D:		JISR[hʃoCg

@ŁACt˂΂Ȃʂ̂AVtgihrR[hł͖ihrR[hg
ĂAƂłBȂ胏P̉񎖂ȣƌȂŉB
҂̈Ⴂ͎ŏɒׂĉBVtgihrR[hihrR[h̕ϊ
@̓TvvOɓĂ̂ŁAQƂ悤ɁB

<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>
/* SpőRQ\ */

#define	XCANGE(w)	((w>>8)&0x00ff))|((w<<8)&0xff00)

	LPUINT16	lpTextAddress=(LPUINT16)0xa0000000;
	INT16		i=0;

	while( (*(spJISCode+i) != '\0') && (i<32) )
	{
		*(TextAddress+i*2) = XCHANGE(*spJISCode) - 0x2000;
		*(TextAddress+i*2+1) = XCHANGE(*spJISCode) + 0x6000;
		i++;
	}

<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>/<_>

   p̏ꍇ	(2Byte)

@Sp̂܂ܔɂȂlȂ̂ŁA̗lɂȂĂ܂B

ADRESS: N		N+1		
	+-------------------------------+
	|DATA A        |DATA B          |
	+-------------------------------+

	DATA A:		JISR[hʃoCg|QO
	DATA B:		JISR[hʃoCg


  Agr[gGAւ̏

@`QOOO`Reeeɔzuꂽ̃Agr[gGA͕R[hG
Aɂ̂܂ܑΉĂ܂B
@ł珑ݐAhXvŹAlɈȉ̎ɂȂ܂B

	(X,Y) Wɏޏꍇ

	ADRESS = Y * 160 + X + TVRAM̐擪Ԓn

	ƂȂł傤B̃AhXɐ̃f[^߂Ηǂ̂łB

@ANZXPʂ[hɂȂĂ邪AoCgɂ݂̓ĂȂׁA
ނʂłB

@āAAgr[gɂẲS܂łBAgr[gƂ
ɗ^FA_ŁÁAȏԂ^邽߂̂ƂłB
@́A{ɒΕ悤ɁAƂ̂łB
@̑^邱Ƃł̂ŁAeLXgł낢ȉʂ̂łB
@ȉɂ̑̌`L܂B

	 D7  D6  D5  D4  D3  D2  D1  D0
	+-------------------------------+
	| G | R | B |VL |UL |RV |BL |ST |
	+-------------------------------+

	ST : \/\
		ST = 0 Ŕ\
	BL : _
		BL = 1 œ_
	RV : ]
		RV = 1 Ŕ]
	UL : 
		UL = 1 ŉ
	VL : ްײ݁^ȈՃOtp^[ (Ӱدۯ1őI)
		VL = 1 ō쓮

	B  : F()			+-------------+
	R  : F()			|G R B |\F|
	G  : F()			+-------------+
					|0 0 0 |    |
					|0 0 1 |    |
					|0 1 0 |    |
					|0 1 1 |    |
					|1 0 0 |    |
					|1 0 1 | F |
					|1 1 0 | F |
					|1 1 1 |    |
					+------+------+

@ȏ̃p^[𑮐ƂāAwW̃AhXɏ߂΁A낢ȑ
^邱Ƃł܂B

