B-right/V sample application - I_DLED(Ȱ)


1. Ϥ

 sample program ϡȤμ갷ˤĤ [Ȱ] ưܤȤΤΤȤʤäƤޤ
äˡʲҲ𤹤뤿ΤΤǤ

	1. TAD 쥳ɤƤȡLINK 쥳ɤƤбդλ
	2. ȤΥɥؤϿȡѷưʤɤ
	3. application ǴʤФʤʤȤξ

ʤ application ϸ淿Ǥ
application ϿȡȢ [ӥͥå] ȤΤɲäޤΤǡǤդΥɥ˼Фơ[Ȱ] εǽ䵤Ǽ¹ԤƤ
ϡ [Ȱ] 䵤Ǥդμ¿(¾̤ΥӥͥåȤʤ)ŽդƼ¹ԤƤ⹽ޤ

ʤ application ϤޤưҲ𤹤٤ΤΤǤΤǡ갷ˤϽʬդƤˤäƤϡѤƤĶ˲餫Զ(¿ȤƤ˲¿ȤӼʤ)򤭤줬ޤ
ǤΤǡʤ٤Τʤ¿ȤѤ뤫 backup 򤷤ƤѤ뤳Ȥ򤪴ᤤޤ

ޤξ硢ǽ䵤ⲾȤⶦˤ碌 [] ΤƤޤΤ˶̤ˤΤ [ǽ] ȤդѤ褦ˤƤޤ




2. application γ

Ūư DLED  [Ȱ] ưܤȤޤ
Ȥ䵡ǽ䵡경طʲȤλνòȡȤ򡦰ưѷʣ̡¿Ȥʣʤɤν갷ϴŪˡȰȤʤ٤Ʊˤʤ褦߷פƤޤ

application ID  䵸ͭǡ Ƥʤɤ DLED ȤϰۤʤޤΤǡɥ֤㥦ɥطʥѥʤɤϲȰεǽ䵤ƤȿǤޤ󡣤 Ȱ ƤȿǤ뤳Ȥˤʤޤ(աȰεǽ䵤ƤȰεǽ䵤ȿǤ뤳Ȥ⤢ޤ)




3. ǽ

3.1. DLED ԤȤδ

 application ܤȤ롢Ȱ(DLED) ԤˤĤƤޤȤޤ

	1. ȤΥɥؤϿɽ
	2. ȥȤƤ LINK 쥳ɤбդ
	3. Ȥΰ֡礭δ
	4. 경줿Ȥν
	5. طʲ줿Ȥν
	6. ò줿Ȥν

Ȥ䵡ǽ䵤ɽ˴ؤ TAD ǵҤƤꡢä˲ȤˤĤƤϤβȤб LINK(VLINK) ¸ߤ뤳ȤȤʤäƤޤбդԤomgr(¿/ȥޥ͡) Τ뤳ȤǲȤ򥦥ɥϿơɽʤɤǤ褦ˤʤޤ
ǤΤǡŪ˲Ȥ䵡ǽ䵤оݤμ¿Ȥ򤿤ɤ߹ǤǺѤȤ⤤ޤ[경]  [طʲ] Ϥɤ߹Ǥϼ¸ޤ󡣤°ϡapplication ȼ˻äƤΤȤʤäƤޤ
Τᡢ경ФطʲФˤĤƤϡomgr ǹԤäƤ櫓ǤϤʤDLED ʤɤ application ǼʤФʤޤ
ޤäˤĤϡVLINK.attr Ǳä򼨤 flag ¸ߤƤΤǤ⤿¿Ȥɤ߹ǡomgr Ϥ̤ odsp_vob() 򤹤ȲȤɽƤޤޤΤᡢòȤɽ/ɽʤоݤȤ/оݤȤʤȸä⡢application ǼʤФʤʤǽΰĤȤʤäƤޤ
ʤߤˡʾϲȰξǤDLED Ǥ¾˰ʲνԤޤ

	1. [¿]-[] ɽ
		ΥɥޤΥɥ򳫤 application  DLED Ǥ
	2. [ǥ]-[ɽ]-[ǥ] ν
		¿Ȥ򽸤ɽ륦ɥǤν DLED ԤäƤޤ

ϡDLED  omgr ƤӽФƵưˤʤäƤޤ(ΤȤǤ application ǤϾ嵭 2 εǽˤбƤޤ)
ʤߤˡ褦ʷǡomgr  system ưȤƸƤӽФ application ȤƤ [ȥͥåȥ(NET)][Ȼ(FINDER)][¿Ȳȸ(NSEARCH)] ʤɤޤ

¾βȤμ¹Ԥ䲾Ȥΰưʣ̡¿ȤʣʤɤνϡDLED ԤäƤʬ⤢ޤomgr Ŭä뤳ȤˤäƼ¸ƤΤȸޤ
̤ˤĤƤϤΤȤ򤷤Ƥޤ

3.1.1. ¿Ȥ¸

DLED Ǽ¿Ȥ¸ͰʲƤ¸뤳ȤˤʤäƤޤ

	1. TAD 쥳ɤ˲Ȥ֤򵭽
	2. LINK 쥳ɤ˳Ƽ¿Ȥؤ LINK 򵭽
	3. ǽ䵥쥳ɤ˵ǽ䵤򵭽

3ĤϤ줾줬̩ܤ߹äƤޤäˡTAD 쥳ɤβȤ֤ν֤ LINK 쥳ɤν֤ȤפƤʤȡɽ벾Ȥ¿Ȥ򳫤ȸȤؤʤɤ褿ޤ(ɽ벾ȤؤǤɽۤʤ뤳ȤˤʤȤǤǤ)
ޤȤ䵡ǽ䵤ɽ(Ȥξ岼ط)ȤΤϡLINK 쥳ɤȵǽ䵥쥳ɤγǼ˰¸ΤȤʤäƤޤΤǡɽν̤ LINK   ¸ƤʤСȤȵǽ䵤ط촹Ȥ褿ޤ

TAD 쥳ɤˤϲȤ֤򵭽ҤޤεƤϰʲΤΤȤʤޤ

	1. 󥻥
	2. ޷ϥ
	3. ȥȷ(LINK 쥳ɤν̤¤)
	4. (ɬפ˱)޷ץꥱ
		ϡ경طʲɽ٤ѤƤޤ
	5. ޷λ

ȥȤϡȤλؤ¿Ȥμ¹Եǽ䵤䵸ͭǡޤʤФʤޤ(ޤʤȡβȤƤӼ¹Ԥݤˡ䵸ͭǡ¸ƤȦƤȿǤʤȤˤʤޤ)
ޤ޷ץꥱ䵤ˤϡȤθ경/طʲ򼨤 flag Ҥ褦ˤʤäƤޤʤߤΤȤǤꤵƤ application  DLED ˤʤäƤޤ

ʤǽ䵤ϵǽ䵥쥳ɤľܵҤƤᡢTAD 쥳ɤˤϵǽ䵤бƤϵҤޤ

3.2. Ȥμ갷

Ȥ갷ȸäƤ⡢ˤ͡¸ʤФʤޤ󡣳͡ʲΤȤ¸뤳Ȥˤʤޤ

	1. Ȥ򥦥ɥ(Ķ)Ͽ
	2. Ȥɽ
	3. Ȥư
	4. Ȥʣ̤
	5. ȤΥѹ(/ĤȤˤ)
	6. Ȥ¾Υɥʣ/ư
	7. Ȥλؤ¿Ȥʣ
	8. Ȥ򥦥ɥ
	9. Ȥλؤ¿Ȥ
	10. Ȥ¹Ԥ
	11. (ñʣ)Ȥ򤷤ơ(ư䥵ѹʤɤ)򤹤
	12. 경줿Ȥݸ
	13. طʲ줿Ȥݸ
	14. ò줿Ȥɬפ˱ꡢݸꤹ
	15. Ȥб¿Ȥ¸

⡢Ĥ˽Ҥ٤ޤ褦ˡapplication ȼ˼¸뵡ǽȤʤäƤޤ

3.2.1. TAD 쥳ɤƤ LINK 쥳ɤƤбդȥɥؤϿ

ˤҤ٤ޤTAD 쥳ɤβȤ֤ξȡLINK 쥳ɤξȤϽ֤ƱˤʤФʤޤ󡣹ˡLINK 쥳ɤν֤ȵǽ䵤ν֤갷ʤȡȤȵǽ䵤Ȥط뤳Ȥˤʤޤ
ǤΤǡ¿Ȥɤ߹ݤϡTAD 쥳ɤɤ߹ǡȥȤбƤ֤˼ȤʬȡLINK 쥳ɤȵǽ䵤ɤ߹Ǥν̤Ƥ򵭲ʬȤɬפˤʤޤ
 application ǤϡTADLOAD Ȥ class ɤ߹ߤԤʬȤʤäƤޤ class Ǥ [LINK 䵤ɤʬ] [ȥȤɤ߹ʬ] ήǼ¿Ȥɤ߹ߤ¸Ƥޤ
ޤȥȤɤ߹ʬǡȤ䵡ǽ䵤Υɥ(Ķ)ؤϿԤ褦ˤƤޤ
TAD 쥳ɤƤɤ߹ݤˤϡȥȤȿ޷ץꥱ(경/طʲεѤʬ)ɤ߹褦ˤƤޤ

 application ǤϡĤβȤФĤ VOBJ Ȥ class  object 褦ˤƤޤǤΤǡȤ䵡ǽ䵤ϿݤϡVOBJ  new ˤʤäƤޤޤȤ(Ūˤ)켡Ū¤ӤǴ褦ˤʤäƤ뤿ᡢƲȤ(memory )¤٤ƴ٤ class Ȥ VOBJS ȤΤꡢVOBJS.vobj ȷ뤿 pointer ǼʬȤƤޤβȷδ memory pointer (ľ) link list ȤȤäƤޤ
ȤϿˤϡoreg_vob() Ԥޤoreg_vob() ϲȤʤ䵤򥦥ɥĶϿȤȤ򤹤٤ API ǡ API ˤäϿƽ [ȤϿ] ȤȤˤʤޤĤޤꡢomgr 𤷤ƲȤɽȤäǽѤǤ褦ˤʤ櫓Ǥ

ʤ application Ǥϡoreg_vob() Ǥ V_NODISP ȤƤޤϿǡɽϤʤȤȤ̣Ƥޤ
Τ褦ˤƤΤϡɽ˴ؤƤϤ application Ǥ١椷Ǥ㤨СòȤɽɽ䡢ɥκȼȤκʤɤξνȤʤäƤޤ

ȤϿݤˤϡɥĶоݤȤƤޤ̤ˡapplication ȤϿݤϡ application 񸻤оݤȤƤޤλɬ⤽ application ƤΤǤɬפϤޤ
ȤȤ񸻤ϡ츫βȤϿ application ΤΤȻפ쾡ǤºݤˤϲȤ system ΤȤƶ̤λ񸻤ȤʤäƤޤΤᡢȤϿȤΤ application ͭλ񸻤ǤɬפϤʤ(λ񸻤¸ߤƤʤƤ⹽ʤ⤢ޤ)ޤǤդ process 䥦ɥʤɤ˲ȤäƹԤȤäȤǤ褦ˤʤäƤޤ

ʤDLED ¸Ƥɤ߹ݡդʤФʤʤΤǤDLED  TAD 쥳ɤʬ䤷¸礬ޤʬδϳ 16[KB] ˤʤäƤޤ
ǤΤǡDLED ¸¿Ȥ갷硢ʣ TAD 쥳ɤɤ߹ߤбǼ򤷤ʤȡɽ벾ȤפäΤˤʤʤäޤޤTAD 쥳ɤγǼϥ쥳ֹȤʤäƤޤΤǡ㤤ֹΥ쥳ɤ֤Ϣ³ TAD 쥳ɤɤ߹ǤʤФʤޤ

3.2.2. ȤɽȽ

Ȥɽˤϡodsp_vob() ȯԤФΤǤλȤν˵դʤФʤޤ
̤ˡȤϿ֤ɽΤǤꡢϿ褵졢˾˽ŤʤäƲȤ褵Ƥޤodsp_vob() ǲȤ礷ɽϤԤޤ
Ʋ򤷤ơñβȤΤߤɽ硢βΤ˾˽Ťʤä褵줿ꤷޤȤɽϡꤵ줿Ȥʤʤ򤽤Τޤ褷ȤνŤʤʤɤϰռʤ٤Ǥ
ΤᡢȤŤʤäƤ(Ťʤ뤳Ȥ)ˤϡȤɽϿ֤褵褦ˤʤФʤޤ

ޤȰʤɤǤϲȤϿǤϤʤȤν(ط)ӻĤȤǤ褦ˤʤäƤޤ[Խ]-[Ф][Ф] ޤ
ξ硢ȤϿɽΤǤϡapplication ꤷ̤˲ȤɽʤȤˤʤꡢԹʤȤȤʤޤˡ[طʲ] 򤷤ƤϤβȤϤɤβȤ̤褵褦Ȥ뤿ᡢϤϿǤβȤɽȤΤ̵̣ȤʤäƤޤޤ
ΤᡢȤν֤ͳưǤ褦 application ǤϡȤɽ odsp_vob() ǳƲȤν̤ɽƤ褦ˤʤФʤޤ(礷Ѥޤ) application Ǥ VOBJS::dsp_vobj() ǲȤκԤ褦ˤƤޤλطʲ֤ΤΤɽǡν֤༡Ȥ褷ƤäƤޤ

3.2.3. Ȥΰư

Ȥϥɥʤɤλ񸻤ϿǤϡomgr ФƲȤϿȤǡʳβⵯΤǤϤޤ
ǤΤǡȤΰư䥵ѹʤɤȤä PD ȼ褦ʽȤΤϡapplication ǹԤʤФʤޤ󡣤ޤưȤ [ư] ȤȤ omgr ΤʤСomgr ȤƤϲȤưȤȤΤʤޤޤˤʤäƤޤޤ

ޤȤΰư(ǤϼɥΤߤ˸ꤷƤޤ)Ǥ PD_VPRS Ȥ class 뤤 KB_MOVE Ȥ class ǹԤ褦ˤƤޤ
ԤϲȤ PD  press (Ϥ)ưȤΤΤǤԤβ(ȤϸƤޤ) keyboard ǰưȤΤǤ
ȤΰưΤϡdrag ؤɤԤ뤳Ȥˤʤޤ
PD  press  drag νǤ̤˰ʲΤ褦ˤޤ

ERR	pd_press()
{
	ERR	er;

	er = ER_OK;

	// drag Ķ(drag γ)
	dgid = wsta_drg(wid, 0);	// Ķ lock ʤ
	if (dgid < ER_OK) {
		// drag ϤǤʤä
		er = dgid;
		goto EXIT;
	}

	// drag 
	W	type;

	do {
		PNT	p;		// drag  PD 

		type = wget_drg(&p, &wevt);
		if (type == EV_BUTUP) {
			// button  release 줿齪λ
			break;
		}
		// drag ν
	} while(type != EV_BUTUP);

	// drag ĶѴ(drag νλ)
	wend_drg();

EXIT:
	return er;
}

嵭 drag γϤ hmi ãơdrag ĶƤ餤wget_drg() ˤä drag  event ơPD  release ޤ drag ³drag λˤϽλ hmi ãĶѴȤȤ򤷤ƤޤϤޤǡŪʬǤäơ application ǤϤ⤦㤦򺮤ƤΤǤhmi 󶡤줿ǽȤä drag ¸ϡʾΤ褦ʽ򤷤ޤǤΤǡŪʬ򵭽ҤȻפäƤ

 application ǤϲȤϤ硢PD ɥκΰˤΤɥȾˤΤȤ⼫ɥˤΤǽ狼褦ˤʤäƤޤ
ΰˤϡޤȤμɥǤΰư(ʤʣ)̣ɥξ¾Υɥ˲Ȥư(ʤʣ)褦ȤƤ뤳Ȥ̣ޤ(ɥǤβȤʣ̤¾ɥؤʣ/ưϸޤ)
Ⱦˤϰ֤ηвǥɥΥ뤬ȯ褦ˤʤäƤޤΥξϲȤʣ/ưΤǤϤʤñ˺ΰ褬ưˤʤޤ

ɥ򳰤¾Υɥʤɤʣ/ư褦ȤƤʤΤǤλ gloc_env() ˤäơĶ lock ƤޤĶ lock ȡ application ʳǲ̤ؤػߤƤ뤳ȤˤʤΤǤϼɥ˲Ȥΰư򼨤Ȥ褹ɬפ٤Ǥ
ɥȤȤȤϡ process δɳʬԤƤΤ¾ΥɥȤˡΥɥƤ process Υɥ˲餫ԤȡȤʬɽʤȤȤʤޤ
Ķ lock Ƥȡ¾ process Ǥ϶ػߤ뤿ᡢäǤ褦ˤʤȤ櫓Ǥ

PD ǤĤǲȤư롢ʤʣ̤ȤϡؤƱȤʤäƤޤޤȤʣ/ưȤ drag ǤɤˤǤڤؤ뤳ȤǤ褦ˤʤäƤޤ
Ȥʣ̤뤫ư뤫ϡ[ES_BUT2(˥塼å)] ʤ [ES_CMD(̿ᥭ)] 򲡤Ƥ뤫ݤ˺졢 drag ˲ƤΥƤ⤤ȤˤʤäƤޤ
Τᡢdrag 򽪤ǡES_BUT2 ʤ ES_CMD ֤ǤвȤʣ̤̣֤ǤʤвȤΰựޤ
Ȥʣ̤硢ɥξϡñ˲Ȥ odup_vob() ˤäʣȤʤޤ뤳Ȥˤꡢomgr ˤäƸβȤƱƤβȤ뤳ȤǤޤ
ưξϡñ omov_vob() ȯԤˤʤޤ API ƤӽФȤˤäơȤư뤳Ȥ omgr ΤʹߤβȤФϡưΰ֤򸵤ˤ뤳Ȥˤʤޤ

ʤߤˡkeyboard ǲȤưϡñ omov_vob() ƤФ֤ȤʤäƤޤ
( application Ǥ keyboard ǤβȤΰư DLED ȤۤʤäƤޤDLED Ǥʣ򤷤Ƥ֤ǡĤǤⲾȤüãƤȡ¾βȤưǤʤʤޤ application ǤüãȤưʤǡ¾βȤϰư³뤳ȤǤ褦ˤʤäƤޤ)

3.2.4. ȤΥѹ

Ȥ PD ǻͶ(ϥɥȸƤФƤޤ) press drag 뤳Ȥˤäơѷ뤳ȤŪǤ
ȤѷȡȤɽ(¿̾䥿̾³ʤ)ɽϰϤ䳫Ȥξ֤ˤǤޤ
äˡȤȤ硢βȤμ¿ȤΥǥեȥץꥱǲɽԤȤˤʤޤξ硢ɽƤ׵ omgr ԤɽϸƤӽФ줿 application ԤޤΤᡢȤƤ application ǤϳȤʬФƤϲ⤷ƤϤޤ(omgr ФơȤɽ׵᤹뤰餤Ǥ)

Ȥѷ˴ؤƤϡPD_HPRS Ȥ class ǹԤ褦ˤƤޤ
drag ԤޤλϼɥǤνΤߤȤʤޤɥ⤫ PD 줿硢ѷϼäȤƤȤߤʤޤ
ޤES_BUT2  ES_CMD ξ֤ڴطޤ

ѷ򤹤 orsz_vob() ƤӽФޤλɬ V_SIZE ĤʤФʤޤ󡣤ʤȡǤդηؤѷǤޤ
ʤߤˡorsz_vob() Ϥ application Ǥ¿ѤƤޤ API ϲȤѷΤߤǤʤV_CHECK Ȥ뤳ȤˤäƲȤΰ(ΰ)Ǥ褦ˤʤäƤꡢȤΰݤѤƤޤ
Ȥ֤ȤʤäơβȤɽԤ褦Ȥ硢omgr ϤβȤФ볫Ȥɽ׵νưŪ˼¹Ԥޤ

Ȥѷ硢ѷȸȤΰ褬ۤʤˤϡΰ˰ɽƤĤäƤޤޤ(㤨СȤĤȤˤʤ)
λV_ERASE ĤƤСΰϾõޤȤŤʤäƤˡˤäȤФƺԤʤФʤޤ󤬡ä omgr ϹԤޤ󡣤ΤᡢV_ERASE ȯԤȡˤäȤɽϾäޤޤȤʤäƤޤޤ
ǤΤǡ application Ǥϡorsz_vob() ǰ̤ѷ򤷤ǡ礷ƺԤ褦ˤƤޤ
βȤѷȼϡΰưξˤԤƤޤưǤ⡢ȤäκϹԤʤ(V_ERASE ˤõϲǽǤõƤǡǤϤޤ)ϤꡢưΰФƺԤ褦ˤƤޤ
¾ˤ⡢ȤƱͤˡǺ򤫤褦ˤƤޤ
ĤޤꡢȤɽ application Ǥ٤Ǥ򸫤ʤФʤʤȤȤˤʤꡢȤФƲ餫򤷤硢򤷤ʤФʤʤȤ¿ȤȤˤʤޤ

3.2.5. Ȥʣ

ȤΰưʬǤ⾯ޤȤʣ PD ǤβȤΰưκݤˡES_BUT2  ES_CMD 򲡤֤ PD  release ˤ뤳ȤäơԤȤǤޤ
ޤ˽Ҥ٤ޤȤʣ odup_vob() ˤäƹԤȤǤޤ
 API ϡʣƱĿβȤȤΤǤΤᡢν(Ȥλؤ¿Ȥ䡢Ȥɽλʤ)Ʊˤʤޤ㤦Τϡ̤βȤǤȤȤʤޤ

Ȥʣȡʣ줿ȤϸβȤƱ֤ޤξ PD ǰ㤦ʣȤ֤褦ȤƤ뤳Ȥ¿odup_vob() ˤäƲȤʣƤ顢omov_vob() ʣȤưβȤ褹ΤŪˡǤ
ޤȤʣȤȤϡȤɲä줿ȤȤˤʤޤΤǡ application ǤʣȤбƤ VOBJ VOBJS.vobj  link list ɲä褦ˤƤޤ
(ʣˤäɲä줿Ȥ⡢omgr δˤϤޤƱ application δˤƤʤȡ¾βȤƱΰǤʤʤޤ)

3.2.6. Ȥ¾Υɥʣ/ư

ⲾȤΰưʬǾޤñʤʣβȤ PD ǤĤ¾Υɥ˻äƤȤȤ̣ޤ
Ȥ¾Υɥ(process)˻äƤϡ tray ͳޤ
λtray ˤϲȰĤŤĤ 1 reccord ͿƤޤޤإåƤ TS_FIG(޷ϥ)ȤƤޤȤǤդξ֤޷Τ褦ʤΤǤΤǡTS_FIG Ȥޤ
ʤtray ˳ǼƤݤν䡢 tray ͳ¾ process ׵ФʬˤĤƤϡ¾ sample application ǹԤäƤޤΤǡǤϳ䰦ޤ

Ȥ¾Υɥʣ̤ϡñ˲Ȥ(tray  record type  TR_VOBJ ȤϡVLINK Ƥ VOBJSEG ƤȤ߹碌Ȥ [] ǤTS_FFUSEN Ȥ FUSENSEG Ƥ򵭽Ҥ [ǽ] ˤʤޤ)ϤǺѤߤޤ
ưξϡɥ餹СβȤȤȤˤʤޤ
ȤȤȤϡ process δ餽βȤ򳰤ȤȤˤʤꡢޤƱ omgr δ⳰ʤФʤޤ
ȤöϺȸäƤ⡢ä礬ޤ(ǤϰưäȤȤˤʤޤ)ö鲾Ȥ򳰤(odel_vob() ȯԤ)ȡƤӴƱȤ᤹ȤϤǤޤ(oreg_vob() 򤹤и褦˸ޤºݤˤϿȤɲäȤȤˤʤޤ)
ǡȤºݤ odel_vob() ˤäƺˡ[] Ȥ֤ˤΤŪǤ
ξ֤ˤȡܤˤϤβȤϽФʤΤǤ(odsp_vob() ɽ褦Ȥȡerror ˤʤޤ) omgr δˤϻĤäƤꡢ֤ȡξ֤᤻ޤ
ʤ֤μ갷ˤĤƤϾܤϸƤޤ

3.2.7. ¿Ȥʣ

¿ȤʣȤϡȤλؤ¿ȤƱƤ򿷤ȤȤ̣ޤȤʣǤƱ¿ȤؤȤʣޤ¿Ȥʣϼ¿ȤΤΤʣޤ
ǤΤǡʣ¿ȤβȤϡʣμ¿ȤβȤȤۤʤäΤȤʤޤ(ʣϤʤ¿/ȤǤΤǸܤƱˤʤ⤢ޤ)

¿Ȥʣ򤷤硢μ¿Ȥؤ LINK ɬݴɤʤФʤޤ󡣤ʤȡμ¿Ȥ϶¿ȤȤʤäƤޤޤ(¿Ȥ򻲾Ȥ벾Ȥ¸ߤʤ֤̣ޤ)
ΰ١¿ʣ򤷤硢μ¿ȤФ벾Ȥ application 餹ȡɲä줿ȤȤߤʤȤǤޤǤΤǡ application Ǥʣ¿ȤФ벾Ȥϴ褦ˤƤꡢ¾βȤƱͤΰ򤹤褦ˤƤޤ

¿Ȥʣ硢Ū PD  quick press ƹԤޤ PD_VQP Ȥ class ǹԤ褦ˤƤޤ
quick press Ƥ⡢ɤϲȤϤȤ̣ǤϡȤʣ/ưξƱǡdrag Ԥޤ(ES_BUT2  ES_CMD ξ̵֤뤷ޤ)
release νѤäƤޤʲ quick press μ¿ʣν򼨤ޤ

//
// ¿ʣ
//
// svid : ʣβ ID
// dwid : ʣ貾 ID
// r    : ʣξ
//
void	vobj_qpress(W svid, W dwid, RECT r)
{
	if (dwid <= 0) {
		// ʣȤʤ
		goto EXIT;
	}

	// ʣ¿ȤβȤʣʣˤβȤϿ
	W	cvid;			// ʣѤ dummy  ID

	cvid = odup_vob(svid);
	omov_vob(cvid, dwid, NULL, V_NODISP);

	// ʣ̤Ȥб¿ȤʣԤ
	W	nvid;			// ºݤʣ¿ȤؤβȤβ ID

	nvid = onew_vob(cvid, NULL);	// ¿ʣ
	odel_vob(cvid);			// ˺ä dummy Ѵ
	if (nvid < ER_OK) {
		// ʣμäϲ餫ξ㳲
		goto EXIT;
	}

	// ưγǧ
	omov_vob(nvid, 0, &r, V_NODISP);	// ʣ¿ȤʣŬʰ֤˰ưƤ
	if (dwid == mywid) {
		// ɥʣ
		... Ȥ˴ޤᡢ֤Ԥ ...
	} else {
		// ¾Υɥʣ
		...  tray ͳǡʣ¿ȤβȤŽߤ׵Ԥ ...
		odel_vob(nvid);		// ʣǿβȤȤƴΤǡʬϺ
	}

EXIT:
	return;
}

¾ΥɥФƼ¿ʣ硢μ¿ȤؤβȤϼ process δˤޤ󡣤ʣ process βȤ˴ޤʤȡʣ¿Ȥ϶¿ȤȤʤ붲줬ޤ
(ʤñ㲽ΰ٤ˡ window ⳰˴ؤ餺ƱˡȤäƤޤ window ξϺǽ odup_vob() - omov_vob() ʤľ onew_obj() Ϥ᤿ΨɤǤ礦(ޤ ID ɬפ˻Ȥ鷺˺Ѥߤޤ))

3.2.8. ȤκȰ֤ȶ¿Ȥδط

ȤκˤĤơ˿ޤȤκ򤹤ݤˤϡĤʼƧ礬ޤ
̤˲ȤȤȤϡβȤλؤ¿Ȥ褦ȤƤ뤳Ȥȹͤ뤳Ȥ¿ΤǤ(󡢤μ¿ȤʣβȤ黲ȤƤϼ¿ȤϺޤ)
ΤᡢȤȤϸäƤ⡢˺ƤޤȡȤλؤ¿ȤӼˤĤʤäƤޤޤ
Ȱտޤʤ¿ȤӼȤʤǽ⤢ꡢ˾ޤ֤ȤϸޤΤǡ̤ˡȤκ¿ȤκȤϼ¿Ȥιޤٱ䤵ΤǤ
ȤȤϼºݤ¸ߤΤǤꡢʤפʤ¿ȤǤʤȤˤʤޤ

ޤȤȸäƤ⡢odel_vob() 򤷤ƤޤǤñˡhmi ǤβȤäǡβȤλؤ¿Ȥؤ LINK (ưȤμ¿Ȥ LINK 쥳ɤ)ˡodel_obj() ˤäƼ¿ȤΤΤʤФʤޤ

ȤȤȼäʣʽ򤷤ʤФޤ󤷡Ʊ˲Ȥκ¨¿Ȥκ򤹤ȤΤϴǤΤǡäºݤνˡŪˡ褦ȤȤϰ֤ȤĤΰ֤βȤ򤤤ĤǤǤꡢºݤ˲Ȥλؤ¿Ȥꤹʤɡʳʬ褦ˤƤޤ

ޤhmi ǸƤ벾ȤФƤǤomov_vob() ü쵡ǽȤơȤŪˤɤΥɥĶˤɽʤ褦ˤ뤳ȤǤ褦ˤʤäƤޤ(ȸƤФƤޤ)
λˤȡβȤϻʤꡢޤǤ˽Ҥ٤Ƽ PD ԤȤƤ⡢ API դʤʤޤĤޤꡢưѷʣ̤⡢ޤɽԤʤʤȤ櫓ǤĤޤꡢܤˤϾäΤƱξ֤Ȥʤ櫓Ǥ
ޤȤλؤ¿ȤκǤlibapp  reggabage() Ѥ褦ˤƤޤϡ()ˤȤλؤ¿ȤϿƤǽŪ delgabage() Ȥؿ¹Ԥȡ¿ȤκޤǹԤȤΤǤ reggabage()  delgabage() Ǽºݤ˺¿Ȥͽ򤹤Ȥ櫓Ǥ

ʤߤˡdelgabage() ɬ¿ȤβȤ odel_vob() ˤäƺƤʤФʤޤomov_vob() λǤϤޤǡ(Ū˺֤ǤäơȤȤƤλ񸻤 omgr ϻäޤޤǤ)ˤʤǤ
̤ˡdelgabage() ϼ¿Ȥ򹹿Ƥ¹ԤΤǤ¿Ȥ򹹿ȤΤϡβȤ odel_vob() ˤäƺ졢ޤưȤλؤ¿Ȥ⹹(LINK 쥳ɤƤ⹹)줿֤̣ޤ
ǤʤȡȤ򻲾Ȥ벾ȤĤäƤ omgr ȽǤ뤿ᡢodel_obj() Ǽ¿ȤǤʤȤˤʤޤ

3.2.9. 

ȤΤϡܤ˾äǡºݤλ񸻤ϻĤäƤ˽Ҥ٤ޤ
ϡΤ褦ˤƤʤȡȤϿ(oreg_vob())ơ(odel_vob())ơäȸäơƤϿ(oreg_vob())ȤΤϡʣ򾷤ȤȤȡoreg_vob() ϲȤΤǤäơäΤǤϤʤȤ꤬뤿ȤȤ˽Ҥ٤̤Ǥ
ܤ˾äˤϡomov_vob() ǻˤȤȤޤѤξ֤᤹ˤϡomov_vob() ΰư window ID 򸵡ȤϿ window ID ˤǤˤꡢ鲾Ȥϲ졢ƼβȤ API ѤǤ֤ޤ
ޤλ reggabage() Ǻͽ󤷤ʬˤĤƤ⡢ͽʤФʤޤ

Ĥޤꡢ֤ȤȤϡͽȤȤ̣ƤꡢΤ褦ˤơμäȤϼ¸褦ˤʤäƤޤ

 application ǤϡȤˤȤäʬˤĤƤϡƲ class Ǥ VOBJ  set_del() Ȥ member ؿǹԤäƤޤñˡomov_vob() ǡ/򤷤ƤΤȡreggabage() Ǻͽ/򤷤ƤȤȤʤäƤޤ
ºݤ˼¿ȤϡVOBJS::dest_delvobj() Ǻͽ֤βȤ odel_vob() Ǻ(VOBJ  destructor ǸƤФޤ)Ǹ delgabage() Ǽ¿ȤκԤ褦ˤƤޤ

3.2.10. Ȥȼ¹

ޤǡȤ˴ؤ򤷤ƤޤȤ˲餫򤹤ˤϡβȤ򤷤ʤФʤޤ
Ȥ򤹤硢ξϲȤ click ꡢϰ򤷤ꤷޤ
 application ǤϡȤ click  PD_CLK Ȥ class ǡϰĤƤ PD_NPRS Ȥ class ǹԤ褦ˤƤޤ

ơȤ click ǤPD ֤˲Ȥ뤫ɤɤβȤΤɬפޤ
PD ֤˱Ȥõˤϡofnd_vob() Ȥ API ޤ API ϲȤϿ˲ȤõƤޤ
츫ȤǽʬΤ褦˻פ쾡ǤºݤˤϡǤԹ礬ޤ
ޤñǹͤȡȤŤʤäƤ硢ޤȤɽǤϡϿ֤˲Ȥ褷ϿΤ˽Ťʤä褹ȤޤĤޤꡢܤǤϡϿȤˤ벾ȤȤȤˤʤޤ
ofnd_vob() ǤϿȤõᡢܤǱˤ벾Ȥ˸ĤäƤޤȤȤˤʤäƤޤޤ̡Ťʤäʬ click 硢¦βȤ򤵤ȻפäޤΤǡܤȼºݤưפʤȤȤˤʤޤ
ΤᡢPD ֤˱ȤõϡϿȤϵս(ɽǤϰ־ˤƤ벾Ȥ)õ褦ˤʤФʤޤ
 application ǤϡVOBJS::fnd_posvobj() ǤΤȤ¸ƤޤʤߤˡȰǤϽŤʤäƤƤƤ⡢βȤ֤ʤ餽βȤȯ褦ˤʤäƤ١ application Ǥ(ˤ)֤βȤõơξоݤȤǤ벾ȤʤС⤦١νȤϵսǲȤõƤ褦ˤƤޤ

ϰˤäƲȤ򤹤ϡñˤϰ˲Ȥ뤫ʤǺѤߤޤΤǡޤ񤷤ȤϤޤطʲ䱣äξоݤȤƤϤޤ󤬡;פʽؤɬפǤϤޤ
ʤȰǤϡ(ES_LSHFT ʤ ES_RSHFT Ƥ)ϡϰϤȤ֤ξ硢ϰȤȤ̵(ĤǤΤΤ)֤ȤȤȤ򤷤Ƥޤ

ơȤϳͰʾ̤ʤΤǤȤ PD  double click 硢ϲȤμ¹ԤȤȤˤʤޤ
 application Ǥ PD_DCLK Ȥ class Ǥ¸Ƥޤ
Ȥ double click Ƽ¹ԤݡPD ֤˱ȤõɬפޤˤĤƤ̤ۤǤ
ʤߤˡdouble click ǲȤ¹ԤϡȤطʲƤƤ¹Ԥ褦ˤʤäƤޤ

3.2.11. 경طʲȱäμ¸

ˤĤƤϡapplication ü˽ΤǤȤȤϡ˽Ҥ٤̤Ǥ
äˡ경طʲξϡOS 󶡤줿ǽ(°) ǤϤʤapplication Ǿɲä°ȤȤˤʤäƤޤ
ޤäˤĤƤ⡢ OS ǵꤵ줿ǽ(°)ǤϤΤǤäˤ [] ռʤޤ򤹤ȡ¾βȤƱΰǤ褦ˤʤäƤޤΤᡢäˤĤƤ⡢applcation ǰռ򤷤ʤȤʤȤˤʤäƤޤ(äǱʤ application μͳȤȤ̣Ƥޤ)

ޤ경طʲǤ°̤ͥĤ褦ˤʤäƤޤ
ǤŤΤطʲǡǸ경μݸ̵ξ֤ȤʤäƤޤ(ǤŤ [ݸ] ٹ礤Ǥ)
줾졢ʲΤ褦ˤʤäƤޤ

		   | ݸʤ |  | طʾ
       ------------+----------+----------+----------
        Ȥ |        |        |    
	Ȥΰư |        |        |    
	Ȥʣ |        |        |    
	Ȥκ |        |        |    
	Ȥμ¹ |        |        |    
	Ȥѷ |        |        |    
	¿Ȥʣ |        |        |    
	경     |        |        |    
	طʲ     |        |        |    
	   |        |        |           : ϲǽ
	طʲ   |        |        |           : Բǽ

ݸ̵ξ֤ǤϡŪؤɤǽǤξ֤경طʲϲǽǤ(ϤǤޤ)
֤ǤϡϤǤޤưѷϹԤޤ󡣤ޤξ֤βȤ򤹤ȡݸ̵ξ֤ȤȾʬȤȤʤФʤޤ(ȤˤĤƤϡSELFRM Ȥ class  constructor ǹԤ褦ˤƤޤ경ξ 1 ˤƤޤդݸ̵ξ default Ȥʤ褦ˤƤޤ)ʤߤˡ֤طʾ֤˰ܤäꡢ򤷤ơݸ̵ˤ뤳ȤǽǤ
طʾ֤ǤλϲȤΤǤޤΤǡȤȼŪԲǽȤʤޤȤμ¹ԤϤǤޤȼä֤Ȥ뤳ȤϤǤޤ󡣤ޤξ֤경뤳ȤϤǤͣطʲˤäơݸ̵᤹ȤǤޤ
֤طʾ֤Ʊꤹ뤳ȤϤǤ֤طʾ֤ˤطʲȤȡ֤ΤǤϤʤݸ̵ξ֤ޤ

ޤƾ PD ȼ֤ȽʬƤޤ application ǤϡES_BUT(ܥץ쥹) Ԥ줿硢MAINWIN::press_fn() ȤؿƤӽФޤλʲΤ褦ȽԤäƤޤ

	PD ֤˲ȤꡢǤϤʤ
		Ȥطʾ֤ǤϤʤ
			PD ֤βȤ֤ˤ
		W_PRESS ʤ W_QPRESS (press  quick press)
			ȤطʲƤ
				ϰԤ(PD_NPRS )
			ȤطʲƤʤ
				Ȥϸ경ƤʤơϥɥĤ
					Ȥѷ(PD_HPRS )
				Ȥϸ경Ƥ뤫ϥɥʳʬ
					 W_PRESS ä
						Ȥʣ/ư(PD_VPRS )
					 W_QPRESS ä
						¿ʣ(PD_VQP )
		W_CLICK (click)
			click (PD_CLK )
		W_DCLICK (double click)
			double click (PD_DCLK )
		(Ǥ ʤ )
			⤷ʤ
	PD ֤˲Ȥʤ
		ϰԤ(PD_NPRS )

˲Ȥ֤ˤƤΤϡPD press Ǥ˲Ȥ򤷤褦ɽˤƤʤȡܤˤư٤줿ˤʤ٤Ǥ

ơ³Ʊþ֤ξǤϱäƤ뤫ʤǡʬ䤷ޤ
ǤƤŪñǤ
äξ硢ڤػߤޤƤʤ櫓ǤΤǡ¹ԤⲿǤޤPD ֤(αäǸƤʤ)ȤäƤ⡢PD ֤˱ǸĤƤϤޤ󡣤Ĥޤꡢþ֤βȤ̵뤹뤳Ȥˤʤޤ
դˡþ֤βȤǤ⸫褦ˤƤ( application Ǥ [ɽ]-[] Υ󥸥 ON ˤޤ)¾βȤƱμ갷򤷤ޤĤޤ̤βȤȤȤˤʤޤ
αòȤμ갷 application ǤդΤΤǡ⤽ⱣäΤڼ갷ʤΤǤСμ¿Ȥɤ߹ߤκݤˡä̵뤹褦ˤкѤߤޤ(¸κݤˤ⡢äʬФޤ(òȤб LINK 쥳ɤƤϺƤϤޤ))

ʤDLED ǤⱣòȤϼ갷ȤǤޤΤǡòȤ硢βȤ˱ȥȤƤ¿Ȥ˵ϿƤޤΤǡ¿Ȥ򹹿ơȤ֤ʤɤ񤭴褦 application ǤϡòȤȤäơɤФƤޤ¸ݤ˱òȤʬ򵭽ҤʤޤޤˤƤȡȤɽʤ뤳ȤޤΤǡդƤ

3.3. ׵ᥤ٥

׵ᥤ٥Ȥϰ̤ window event Ȥ application ΤƤޤ
 event ϡȤϿƤ window Ƥ process ФãΤǡϿƤ벾ȤФơ餫ξѹȯꡢ window ФƲȤɲä褦ȯˡ event ȯޤ
ŪˤϡʲΤΤޤ

	1. ¿̾ѹ줿
	2. Ȥ֤ˤʤä(Ȥ¹Ԥ줿)
	3. Ȥ֤ˤʤä(Ȥμ¹Ծ֤줿)
	4. Ⱦ֤ˤʤä(Ȥλؤ¿Ȥν° device Ǥ줿)
	5. Ⱦ֤(Ȥλؤ¿Ȥν° device ³줿)
	6. Ȥξ֤Ѥä
	7. window Ȥˤʤä(window 򳫤ȤʤäưȤλؤ¿Ȥν° device Ǥ줿)
	8. window Ȥ(window 򳫤ȤʤäưȤλؤ¿Ȥν° device ³줿)
	9. Ȥ褦ȤƤ(device ɲ)
	10. Ȥ褦ȤƤ(¿Ȥɲ)
	11. ե׵(ߤԽ֤ե˳ǼưϤ)

ȯ׵ WEVENT.g.data[2] ˵ҤƤޤ
ޤ[1.]  [6.] ׵ξ硢WEVENT.g.data[3] оݤȤ벾 ID ǼƤޤޤ׵Ǥϡ̤˲ȤκǺѤΤȤʤäƤޤ
[7.]  [8.] ξϡɥκԤޤ(window (Ͽ)줿ȤκԤȾ֤Ȥʤ٤Ȥκ application ǹԤʤФʤޤ)
[9.]  [10.] ξϡWEVENT.g.data[3] 褦ȤƤ벾Ȥβ ID ǼƤꡢȤ갷 application ǤоݤȤ벾Ȥ򼫿Ȥδ˼ʤФʤޤ󡣤դȡ device 갷ʤʤäꡢȤμ¿Ȥ¿ȤȤʤäƤޤäꤷޤ(դˡбʤϴбɬפϤޤ󡣤device ξϡä˼ window ɥξ갷ʤȡ(³) device δ¤Ȥʤꡢ㤨Сfolppy disk  CD-ROM ӽФԤʤʤäꤷޤ)
[11.] ξϡߤԽƤ򿷵μ¿Ȥ˳Ǽ׵ḵ orsp_prc() ˤäΤޤǼʤϡƱͤ orsp_prc() ˤäơбʤΤޤ

ʤμϤ application Ǥ VOBJS::vobj_fn() (vs_vreq.cc ) ǹԤƤޤ
ޤ׵ᥤ٥ȤˤĤƤϡ[BTRON3 ͽ][2 OS ][3 ][3.8 ¿/ȥޥ͡][3.8.3 ¿ / ȥޥ͡ξܺ][3.8.3.5 ˥塼][׵ᥤ٥] ڤ [Ķ (B-right/V) ͽ][3 饤֥][2 ץꥱ饤֥][2.3 ɥ٥][evt_loop (٥ȥ롼׽)][ ׵ᥤ٥Ƚ VOID (*vobjfn)(W ix)] ⻲ͤˤƤ

3.4. OS Ǽ¸Ƥ벾ϢΥ˥塼

Ȥ갷硢OS ǤϰʲΥ˥塼ɸ󶡤褦ˤʤäƤޤ

	     | 
	             | Ĥ
	             | °ѹ
	             | ³ѹ
	¿     | ¿̾ѹ
	             | ¿ʣ
	             | 
	             | ȥ졼
	             | ȥͥåȥ
	             | Ȼ
	             | ¿Ȳȸ(:ȸ)
	ǥ | ڤΥ
	             | ³
	             | ɽ
	             | եޥå

ιܤϡoget_men() ʤɤˤäƼǤޤlibapp Υ˥塼ɴؿѤƤ硢openmenu() ǹܤԤselmenu() 򤷤Ƥ벾 IDꤹСmenu ϼưŪ˹Ԥޤ
ʤξ硢Υ˥塼ػߤ(㤨С[]-[³ѹ]ػߤʤ)ϡ[Ķ (B-right/V) ͽ][3 饤֥][2 ץꥱ饤֥][2.13 Хѿ] ǵܤƤ _inact_vmitem[] ƤꤷޤѿѿȤʤäƤꡢʲΤ褦ˤʤäƤޤ

	[0] : 
	[1] : ¿
	[2] : ǥ

ѿ lsb ֤˿ƹܤƻҹܤػߤǤ褦ˤʤäƤޤ( application Ǥϸ경줿ȤФ [] ػߤ뤿ᡢMAINMENU::set_enable()  _inact_vmitem[0] ƤꤷƤޤ)

βȤˤޤĤ˥塼򤷤硢ˡ򤷤Ƥ벾Ȥ˱ơ⤦ API ƤӽФɬפޤ
 application ǤϡVOBJS::mn_vobj() (vs_menu.cc ) ǼƤΤǤʲΤ褦ʤȤ򤹤뤳Ȥˤʤޤ

	1. ñβȤξ硢sizeof(RECT) ʬ memory ݤ
	2. ʣĤβȤξ硢(򤷤ƤĿ) * (sizeof(RECT) + sizeof(W)) + sizeof(W)  memory ݤ롣
	   ݤ memory ˡ򤷤Ƥ벾 ID 缡Ǽ롣
	3. oexe_vmn() ȯԤ
	   ñξϡβ ID ꤷơ[1.] ǳݤ memory Ϥ
	   ʣξϡ ID  0 Ȥơ[2.] ǳݤ memory Ϥ
	   Ťξ⡢ msel_men() 򤵤줿ֹ(libapp ξ selmenu() ǸƤӽФ줿˥塼¹Դؿΰ) oexe_vmn() ˰ϤʤФʤʤ
	4. oexe_vmn() ֤ˡapplication ¦ǳƼŬڤʽԤ

ʤߤˡ application Ǥñ㲽ΰ٤ˡñǤʣǤ [2.] ˡ memory ݤ򤷤Ƥ벾 ID ꤹ褦ˤƤޤ

ơoexe_vmn() ֤νǤʲΤ褦ʬवޤ

	1. VM_OPEN  []-[]     Ȥ򳫤Ȥˤ
	   VM_CLOSE []-[Ĥ]   ȤĤȤˤ
	   VM_DISP  []-[°ѹ] Ȥ°ѹ(°ѹѥͥ򳫤)
		oexe_vmn() ǰϤ memory ˤϡ֤ѹ줿 ID ȡβȤζΰȤǼƤޤ
		ޤƲȤκϹԤƤʤᡢapplication ǺȯԤʤФʤޤ
		֤줿Ƥϰʲι¤Τȸʤޤ
			typedef struct {
				W	vid;	// оݲ ID
				RECT	r;	// βΰ
			} OE_RLIST;
		ʤȤΰ褬ΰȰۤʤ硢ΰϰϤоݤȤʤȡΰɽΥߤΤ뤳Ȥˤʤޤ(˲ȤΰưѷΤƱͳǤ)

	2. VM_NEW [¿]-[¿ʣ] Ȥλؤ¿Ȥʣ
		oexe_vmn() ǰϤ memory ˤϡʣˤʤäȤȡʣβȤβ ID ǼƤޤ
		ʲι¤ΤǼƤȤߤʤޤ
			typedef	struct {
				W	svid;	// ʣ ID
				W	nvid;	// ʣ ID
			} OE_NOBJ;
		OE_VOBJ.nvid Ͽɲä줿ȤȤߤʤޤΤǡƲȤ application δɲäޤ
		ޤʣɲä줿ȤϺ򤷤ʤɽޤ

	3. VM_RELN []-[³ѹ] Ȥ³/ѹ
		oexe_vmn() ǰϤ memory ˤϡ³꤬Ԥ줿 ID ȡꤷ³ֹ椬ǼƤޤ
		ʲι¤ΤǳǼƤȸʤޤ
			typedef	struct {
				W	vid;	// оݲ ID
				W	rnum;	// ꤷ³ֹ
			} OE_RIDX;
		̤ˡоݤȤʤäȤκԤޤ

	4. VM_NAME   [¿]-[¿̾ѹ]       Ȥλؤ¿Ȥμ¿̾ѹ
	   VM_DETACH [ǥ]-[ڤΥ]     Ȥλؤ¿Ȥν° device Ǥ򤹤
	   VM_REFMT  [ǥ]-[եޥå] Ȥλؤ¿Ȥν° device  format 
		oexe_vmn() ǰϤ memory ˤϡǾ֤ѹ줿 ID ǼƤޤ
		̤ˡѹ줿ȤκԤޤ

	5. VM_EXREQ 䵵ư 򤷤Ƥ䵤¹Ԥ
		䵵ưԤȤƤ뤳Ȥ̣ޤ
		оݤȤƤ䵤 oexe_apg() ˤäơȤμ¹Ʊͤ˼¹ԤʤФʤޤ

	6. VM_PASTE [¿]-[ȥ졼] ȤλؤƤ¿Ȥ default application ˥ǡŽߵư׵ȯԤ
		ξ硢oexe_vmn() ˰Ϥ memory ˤϡƲ [ǡŽ׵] ФǼƤޤ
		֤()򸫤ɬפʤϡäˤͤռɬפϤʤapplication ϲ⤹ɬפޤ

	7. VM_INFO   [¿]-[]     ȤλؤƤ¿Ȥδ󥦥ɥ򳫤
	   VM_ATTACH [ǥ]-[³]     ȤλؤƤ¿Ȥν° device ³
	   VM_DISK   [ǥ]-[ɽ] ȤλؤƤ¿Ȥν° device  disk ɽ
	   VM_APLREG ץꥱϿ      ȤλؤƤ¿Ȥ application ¿ȤȤơapplication Ͽ
	   VM_APLDEL ץꥱ      ȤλؤƤ¿Ȥ application Ͽ
	   VM_GABAGE ǥ              ȤλؤƤ¿Ȥν° device Υǥ(¿Ȥν)򤹤
	   VM_NONE                         äȯƤʤ
		ξ硢ä application ǲɬפϤޤ

3.5. ץꥱνλ¸

application λ硢ƤƤ뤫ɤǡλλۤʤäƤޤ
ޤŪƤ򹹿ΤߤǤʤƤȤΤ⤢ꡢä˸ԤξƤϹΤΡuser ä˳ǧʤȤȤ򤷤ޤ
λλ䡢λǧλˤĤƤϡͰʲΤ褦ʽή򤷤ޤ

	W_DELETE ׵(¸λ)Ƥ
		¸γǧ򤹤뤳ȤʤƤ򹹿ƽλ
	W_FINISH ׵(¸λ)Ƥ
		λǧ¿Ȥιϰڤʤǡ¨¤˽λ
	¾(ԥȥ֥륯å䡢[λ] ˥塼򤷤)
		ƤŪ˹
			λγǧԤ
				[ä] 齪λϵݤȤˤʤ
				[Ѵƽλ] ʤ顢¿ȤϹʤǽλ
				[ƽλ] ʤ顢¿Ȥ򹹿ƽλ
		ιԤƤ
			ǧʤ¸ƽλ
		äѲϤʤ
			⤷ʤ(ưȤ䵸ͭǡ򹹿)λ

ͰʾΤ褦ʽéޤ
 application Ǥ⡢SAVEOPE  constructor ǽλǧȤ¸ߤƤΤǤºݤˤϤäȿʤȤԤäƤޤŪˤϡоݤμ¿Ȥ¾鹹Ƥ硢񤭹ߤػߤƤ硢񤭹ߤԤʤä硢ޤ
㤨СλγǧξǤϡ[ƽλ] 򤷤Ƥ⡢񤭹ߤػߤƤϡ¿Ȥؤ¸¥褦ˤƤޤޤ񤭹ߤԤ֤Ǥ⡢¾ process 鵯ưȤλؤ¿ȤƤϡ񤭹Ȥʤ뤳Ȥٵ褦ˤƤޤ
äƤ򹹿ƤʤǤ⡢ưȤλؤ¿Ȥ¾鹹Ƥ⡢¾鹹Ƥ뤳ȤΤơƤɤ뤫ǧ褦ˤƤޤ

ưȤλؤ¿Ȥ¾鹹ƤˡλǧȤ褦ˤƤΤϡԽоݤξȤ˻äƤƤФɬפʤΤʤΤɤưƤƤȡuser ˤȽǤĤʤᡢǧȤ褦ˤƤޤ
ޤ¸Ǥʤäˡ¿Ȥؤ¸򤷤褦ȤΤϡԽƤ򲿤餫η¸Ǥ褦ˤ뤿ˡԤΤȤʤäƤޤ

3.5.1. ֤ȼ¿Ȥκη͹礤

ˡβȤκ˴ؤƿޤȤ硢βȤλؤ¿ȤȤ餷ȤƤʤä硢μ¿ȤϺʤФʤޤ
ºݤ˼¿ȤȤΤϡưȤλؤ¿ȤŪ˹ƽλꡢ¸ꤹΤߤ˸¤Ƥޤ

֤ȤΤϡŪоݤǡºݤˤϤβȤ¸ߤΤȤʤäƤޤ
ޤˤΤϡȤκϼ¿Ȥκľ뤹뤳ȤؤɤǤꡢȼǤ(ߥʤɤǰտޤʤ¿Ȥκ򤹤ǽ)[ä] ˤäơäȤǤ褦ˤ뤿ᡢߤƤ֤Ǥ
ޤ[ưȤλؤ¿Ȥ򹹿] ºݤ˼¿ȤκԤȤΤפǡ¿Ȥ¸ˤϡβȤμ¿ȤϺƤϤޤ(褦ˤ⡢μ¿ȤϵưȤλؤ¿Ȥȡ˺줿¿Ȥ黲ȤƤȦǤΤǡǤʤȦǤ)
(ʤߤˡodel_obj() ǤϤʤdel_fil() ˤäƶŪ˼¿Ȥä뤳ȤǽǤΤ褦ʤȤ򤹤ȡΤʤȤȤʤޤޤäȤ֤Ƥȡ餫ǲȤλȤ褦ȤƤ¿ȤƱ file ID ĤΤо device ˺ȡμ¿ȤΤΤǤȽǤƤޤפʤ¿/ȥͥåȥ˺ƤޤѴǤ)

 application Ǥ⡢ưȤλؤ¿Ȥ򹹿Τ߰ƤȤ鳰μ¿Ȥ褦ˤƤޤ

3.5.2. ƿ¸Ȥ

 application  source ǤϽ꡹ [ƿ] ȤդѤƤޤ [Ū򤷤ʤǹ] Ȥ̣Ƥޤ(òȤȤطޤ)
ä븶ȤƤϡʲޤ

	1. Ȥ³ѹ줿
	2. 䵸ͭǡ줿

[1.]  []-[³ѹ] ξȯ礬ꡢŪ狼פΤǤ
[2.] ϲȤ¹ԤơɥươΥɥĤꤷˡ䵸ͭǡƤƤ뤳ȤؤɤʤΤǤäݤ˹줿Ƥ򡢲ȥȤƤȤ¸ݤ˺ΤΤǤ

ä [2.] ξϲȤ¹Ԥơɥ򳫤ĤǤʤ̤ϼ¿Ȥ򹹿ȤϻפʤǤꡢäݤˡƤ줿Ȥƽλ˹ǧݤˤʤ뤿ᡢuser ˹λǧˡ狼ʤ(ƿ)¸ȤȤ򤷤ޤ

3.5.3. ưβȤλؤ¿Ȥ¾ΥץꥱˤäƹƤ

ưȤλؤ¿Ȥ¾βȤ⻲ȤƤꡢβȤ¹Ԥ줿ץꥱˤäơƱμ¿Ȥ򹹿롢ȤȤϴ˵ޤ
ä硢ߥɥ˳ԽƤƤϡ̤ɬפʤΤɤϡƤ user ˤȽ̤Ĥޤ󡣤ޤɬפƤǤäȤƤ⡢Ƥƿ¸Ǿ¸줿ꤷΤǤϡǤʤȤʤäƤޤޤΤᡢŪˡ¾ process 鹹줿줬ϡɬ [¾鹹Ƥ] ȤȤ user Τ¸뤫ɤγǧ褦˼Ƥޤ
ơǤ⤽ [줿ɤ] ΤˡǤ̾ϵưȤλؤ¿ȤκǽȽǤޤ
file manager ϼ¿Ȥ˽񤭹ߤʤɤιϤԤȡɬ񤭴뤿ᡢapplication ưȤǤ㤷ƤС餫˲餫ιԤ줿ȽǤǤޤ

 application ǤϡEDITOBJ Ȥ class ǵưȤλؤ¿Ȥξݻ褦ˤƤΤǤ class  contructor ǹޤ class  member ؿǤ chk_update() ǡξȹ򤹤褦ˤƤޤ
(ʤ[¸]-[μ¿Ȥ] Ū¸硢¸ΤϼʬȤǤΤǡƤ빹ι˺ƤϤޤ)

3.5.4. ¿Ȥ񤭹ǽλ

񤭹ߤǤʤȤƹͤΤϡ¿Ȥ˽񤭹Բ°ĤƤ(¿Ȥν° device 񤭹߶ػߤξޤߤޤ)ȡ¿Ȥν° device ¸ߤʤǤ
ˡ¿Ȥؤν񤭹ߤԤʤ֤̣Ƥꡢ¿Ȥؤν񤭹ߤ򤷤褦ȤƤ⡢error ȯޤ
λλ褦ȤƤ⡢¿Ȥؤν񤭹ߤǤʤȤơλǤʤäꡢϰ۾Ȥ application λΤǤϡޤ褤̤ǤȤϸޤ
Τᡢ¿Ȥؤν񤭹ߤʤ硢ԽƤ¸Ȥơ̤ο¿ȤѤ褦¥ΤŪǤ

񤭹ԲĤɤˤĤƤϡEDITOBJ::chk_ronly() ǹԤ褦ˤʤäƤޤñ chk_fil() ˤäơF_WRITE ǽɤǧȤʤäƤޤ
ǡerror ä硢¿Ȥν񤭹ߤػߤƤ뤫¿Ȥν° device Τ񤭹߶ػߤǤ뤳Ȥ̣¿ȤιǤʤȤ̣ޤ

3.5.5. ¿Ȥؤ¸

¿Ȥ¸ϡŪ˵ưȤΤ륦ɥФơ¿Ȥб벾ȤŽդΤȤʤäƤޤ
λ¿Ȥˤϡocre_obj() ȯԤޤ
 API ϡ¸θȤ벾 ID ꤷޤ¿Ȥб벾ȤǤȡβȤưŪ¸θȤʤäȤΤ륦ɥ˹ԤȤޤ(׵ᥤ٥Ȥǡ[Ȥ褦ȤƤ(μ¿)] ȤΤ󤲤ޤ줬ξ֤ޤ)
Τᡢapplication ȤƤä˿¿ȤβȤФɬפǤϤʤocre_obj() ˵ưȤꤹΤŪȤʤäƤޤ
νϡ application Ǥ SAVEOPE::make_newfile() (static member ؿˤʤäƤޤ)ǼƤޤ

ʤߤˡưȤΤ륦ɥĤƤ硢ưȤ¸ߤʤȤˤʤޤλϡomgr ưŪ˲Ȥȥɥξ֤򤵤ΤܤꡢưȤΤäɥεưȤФơ¿ȤߤޤǤ̵ʾϡˤΤܤꡢǽŪˤϽɥޤǤΤܤޤ

ʤ⤽ⵯưȤʤϡȤɥФ褦ȤΤŪǤξϤΤܤˤ⡢Ȥʤ벾Ȥʤᡢomgr 뤳ȤǤޤ
ΤᡢʲΤ褦ʤȤ򤷤ޤ

	1. dummy μ¿Ȥ
	2. [1.] Ǻä¿ȤβȤɥФϿ(ɽƤϤʤʤ)
	3. [2.] ϿȤ򸵤βȤȤơocre_obj() ȯԤ
	4. [3.] ¿ȤФ¸򤹤

ʲ˵󤲤ޤ

//
// ɥФơ¿ȤβȤϿ
//
// slnk  : dummy  file system λ(¸ߤ¿Ȥ LINK ʤ褤)
// dname : ¿Ȥμ¿̾
// atype : ¿Ȥ application type
//
void	cre_newfile(cosnt LINK* slnk, const TC* dname, W atype)
{
	// dummy μ¿Ȥ
	W	dfd;
	LINK	dlnk;			// dummy μ¿Ȥ link

	dlnk = slnk;
	dfd = cre_fil(&dlnk, (TC*)dname, NULL, atype, F_FLOAT);
	if (dfd < ER_OK) {
		// ˼
		goto EXIT;
	}

	// dummy μ¿ȤβȤɥϿ(ɽǤ뤳)
	W	dvid;			// dummy μ¿ȤФ벾 ID
	VOBJSEG	dvseg = {		// dummy βȥ
			{{0, 0, 0, 0}}, 0, 0,
			0x10000000, 0x10000000, 0x10e0e0e0, 0x10ffffff,
			0
		};

	dvid = oreg_vob((VLINK*)&dlnk, &dvseg, oget_env(NULL), V_NODISP);
	if (dvid < ER_OK) {
		// ȤϿ˼
		goto EXIT;
	}

	// Ͽ dummy βȤ򸵼ˤơ¿Ȥ
	W	nfd;
	W	nvid;			// ¿ȤФ벾 ID
	TC	nname[L_FNM + 1];	// ¿Ȥμ¿̾
	LINK	nlnk;			// ¿ȤФ LINK

	nfd = ocre_obj(dvid, nname, &nvid, &nlnk, 0);
	odel_vob(dvid, 0);		// dummy βȤä
	if (nfd >= 0) {
		// ... ¿Ȥؤ¸ ...
		cls_fil(nfd);		// ¿ȤĤ
	}

EXIT:
	if (dfd >= 0) {
		// dummy μ¿Ȥ
		cls_fil(dfd);
		del_fil(NULL, &dlnk, 1);
	}
	return;
}

ʤߤˡˡξ硢dummy Ǻä¿ȤοǤμ¿ȤΤᡢ¹Եǽ䵤 default application ꤵƤޤ
Τᡢdefault application ˤĤƤϡdummy μ¿ȤäƤ(cre_fil() 򤷤Ƥ)ꤹɬפޤ(LINK.atr3 / LINK.atr4 / LINK.atr5 Ƥꤷޤ)ˡocre_obj() 줿¿ȤФơ¹Եǽ䵤ŽդƤΤ˺ƤϤʤޤ

3.6. ¾

3.6.1. ФλˤĤ

 application ǤϡPD  keyboard undo μˤĤƤϡб class Ĥꡢ class Ѿư class 뤳Ȥˤäơ¸Ƥޤ
ΤᡢƤ狼ƤޤΤǡưμˡϡ class  source 򻲾ȤƤ

3.6.2. Ȥ TAD ǡưˤĤ

 application ǤϡȤ TAD ǡưˤĤƤϡ̩ˤбƤʤȤˤʤޤ
衢εưˡǤϡȤɽƤ TAD data ŪǤΤǤ application ǤϡER_NOSPT ֤ͤȤơerror λ򤷤Ƥޤ
Ǥ omgr Ǥϡapplication  TADREQ Фơoend_req() ˤ뽪λ()򤻤 error λƤ硢Ʊ application Ф DISPREQ(Ȥɽ׵) ׵Фޤ
 application ǤϡȤɽ׵ˤбƤޤΤǡλɽƤ뤳Ȥˤʤޤ
ĤޤꡢTADREQ ǤɽƤˤбƤʤΤΡDISPREQ ǤɽбƤ뤿ᡢбƤ褦˸ȤȤˤʤޤ

ʤ DISPREQ ǤϡȤɽƤ pixel map ԤȤˤʤäƤ١ font  dot ФƤޤ(Ƥޤ)Ȥޤ

3.6.3. ɥμ¸

OS ưƺǽ˳ӥͥåȤޤ̤ [ɥ] ȸޤ(ԥȥबˤʤäƤޤ)
ʤߤˡνɥ򳫤Ƥ륢ץꥱ DLED ǡ[Ȱ] εǽ䵤Ǽ¹ԤƤȤߤʤƤޤ
Ǥ B-right ξ硢ɥ˴ؤƤϤüʤȤԤäƤޤ
ɥĤȡOS νλȤʤ뤳ȤϰŪʤȤǤ⤽ɥ򳫤ݤˡưβ/оݤμ¿ȤʤΤȤȤˤʤޤ
Соݤμ¿Ȥ /SYS/USR Ȥ path ȤƤޤޤDLED ¹Ԥݤϡcli ưΤ褦ˤʤäƤޤ
/SYS/STARTUP.CLI ưץȤˤʤäƤΤǤǡDLED Фơ/SYS/USR ȤϤơư褦ˤƤޤΤ褦ˤơDLED  cli ư졢ȤϤ줵줿 path ΤΤ򡢽оݤȤƽ褦ˤƤޤ
 application Ǥϡcli ưˤбƤʤᡢƱͤΤȤϤǤޤ󤬡cli ưб褦ˤơ STARTUP.CLI  DLED ư褦ˤƤʬ򡢤 application ˽񤭴С application ǳɥɥȤ뤳ȤǤ礬ޤ
(ʤ application ϽɥȤư뤳ȤȤƼƤޤΤǡɥˤƤϤޤ(OS νλ˱䡢¹ԴĶʤɡбƤʤʬ¿ޤ))
(üʻȤ򤹤СOS εưȼäƳɥѤꡢɥ process Ѥ뤫Τޤ󤬡ξ OS ưƼ¿ȤΰݾڤΤǤϤޤ)




4. 䵭

4.1. ɥΥȥˤĤ

 application ϰ츫ȡDLED βȰμ¹Ծ֤ȻƤ뤿ᡢְ㤨Ƥޤǽޤ
Τᡢɥȥɬ [] Ȥʸղä褦ˤƤޤ

4.2. ¾ʬˤĤ

ǤϡȤμ갷ŪƤޤ
Τᡢapplication εưwindow μ갷Ū window event νmenu νdatabox μ갷䵸ͭǡμ갷ʤɤȸäʬڹԤƤޤ
ˤĤƤϡWALLCHG(ɻѹ)  IMGVIEW()  PARSAMP(ѡ) 򻲹ͤˤƤ

4.3. ¾

 application Ǥϡ̤򤷤䤹뤿ᡢʤĹʼԤƤޤǤΤǡ¹ binary ⤫ʤ粽ƤꡢޤưˤĤƤ⤢ޤŬפƤȤϸޤ
Τᡢºݤ˲Ȥ갷 application ݤˤϡɽŪʬϻͤˤʤȻפޤΤȤƤϤޤˤĹŪʤΤȤʤäƤޤΤǡŬŬʤΤ˽ľʤɤǤ礦
ޤ application ϡȤ(ϿɲáԽ(ù))夷Ƥ뤿ᡢʤ¿ǽʤΤȤʤäƤޤǤΤǡ㤨СɥˤϿΤΡù(Ȥؤ¿Ȥκ)ȤϤʤȤä application 뤳Ȥͤȡؤɤ̤ɬפȤȤˤʤޤΤǡξˤ⡢פʬϼʤ褦ˤƤäǤ礦

