------------------------------------------------------------------------------
HSPCMP ver3.6                                       HSP : Hot Soup Processor  
grogDLLt@X             copyright 1999-2020 (c) onion software  
------------------------------------------------------------------------------

E͂߂

	̃c[́AHot Soup Processor ver3ȍ~HSPXNvgGfB^ȂǂŎgp
	\HSPR[hRpCłB
	WindowspDLLł́Ahspcmp3.dllƂĒ񋟂Ă܂B
	(DLĹAXNvgGfB^gpقAHSPXNvg@\
	ĂяoƂ\łBHSP̊gvOCƂĎgpꍇ́A
	HSP3.EXE,HSED3.EXEƓfBNgɒuĂKv܂B)

	R}hCłƂhspcmp.exe(Linuxłhspcmp)pӂĂ܂B


ER}hČĂяo

	R}hvvg(܂̓VF)Ahspcmp.exe(Linuxłhspcmp)
	s邱Ƃł܂B

	Ăяȍ́Aȉ̒ʂłB

	hspcmp [options] [filename]

	IvVꗗ

	       -o??? o͂IuWFNgt@C(.ax)̖O???Ɏw肷
	       -d    fobO܂߂IuWFNgt@C𐶐
	       -p    vvZX݂̂s
	       -c    HSP2.55݊[hŃRpC
	       -i    UTF-8`̃XNvgǂݍ
	       -u    f[^UTF-8`ŏo͂
	       -w    fobOEChE\tOݒ肷
	       -s    f[^t@C(strmap)o͂
	       -e0,e1,r0,r1        IuWFNgt@Cs
                                   (e0,r0̓^Ĉ݂\)
                                   (r,r1̏ꍇ̓G[R[hmFt)
	       --syspath=??? sHSPVXetH_w肷
	       --compath=??? commontH_̃pXw肷

	hspcmpc[gp邱ƂŁAR}hCHSPXNvg
	RpCAssƂł܂B

		:
		hspcmp -d -oout.ax test1.hsp

		test1.hspRpCāAfobO܂߂
		IuWFNgt@Cout.axƂďo͂B

		:
		hspcmp -e test1.ax

		IuWFNgt@Ctest1.axHSP^CŎsB


EXNvǧĂяo

	HSPXNvgDLLĂяoɂ́Aȉ̍sXNvg̐擪ɒǉ
	ĉB

	#include "hspcmp.as"

	̌́A߂ǉHSPR[hRpC̋@\gpł悤ɂȂ܂B


Eߏڍ

	hsc_ini "filename"

		HSPCMP.DLL̏sȂ܂B
		HSPCMP.DLL̋@\gpꍇ́AŏɏKv܂B
		"filename"Ŏw肵t@CRpC̑ΏۂƂ܂B
		t@ĆAgq(asłȂĂ\܂)܂߂Ďw肵ĉB

	hsc_refname "filename"

		G[bZ[Wŕ\\[XXNvgt@Cw肵܂B
		́AƂ΁utest.asvƂOꎞIɁuhsptmpvȂǂ̕ʖ
		ۑăRpC鎞ɂAG[bZ[Wɂ́utest.asvt@C
		ŃG[NĂƂƂ\邽߂̂̂łB
		\[XXNvgt@CAhsc_iniŎw肵t@CύX
		KvȂꍇ́Aw肵ȂĂ\܂B

	hsc_objname "filename"

		o͂IuWFNgt@Cw肵܂B

	hsc_compath "pathname"

		#includeŃT[`鋤ʃfBNgw肵܂B
		"pathname"͕Ku\vŏI镶łKv܂B
		hsc_compathw肳Ȃꍇ́Ahspcmp.dllgpĂEXE
		ɂucommonvfBNgQƂ܂B

	hsc_comp p1,p2,p3

		HSPR[hRpCŁA\[Xt@CRpCāAIuWFNg
		t@C쐬܂B
		p1̃p[^ŁAfobOIuWFNgt@Cɏo͂邩
		w肷邱Ƃł܂Bp10܂͏ȗĂꍇ́AG[s
		\ȂǂɕKvȃfobO񂪃IuWFNgt@Cɕt܂B
		p11̏ꍇ́AfobO񂪕t܂B
		p12̏ꍇ̓vvZX̂ݍs܂B
		p14̏ꍇ͕f[^UTF-8R[hɕϊďo͂܂B
		p18̏ꍇ͎gpĂ镶f[^t@C(strmap)o͂܂B
		p20̏ꍇ́u__hsp30__v}N`ꂽԂŃRpCsȂ܂B
		p21̏ꍇ́A}N͒`܂B́AXNvgGfB^
		uHSPg}NgpvtORpCɓn߂̂̂łB
		p2̒l+4(bit2)ƁA\[XɊ܂܂st@C쐬̂߂
		(#pack,#epack,#packopt)Ƃpackfile쐬sȂ܂B
		p30ȊȌꍇ́AfobOEChD\tOIuWFNg
		t@Cɖߍ݂܂B
		hsc_comp߂s邽߂ɂ́AKhsc_ini߂ŏƃt@C
		wKv܂B
		܂AKvhsc_objnameŏo͂IuWFNgt@C
		w肵܂B(o̓t@ĆAftHgłhdc_iniŎw肵
		t@C̊gqu.axvɂȂ̂ɂȂ܂)
		ɕKvł΁Ahsc_refname߂炩ߎsĂ
		BRpC̎菇ƂẮA

			1.uhsc_iniv
					
			2.uhsc_refnamev(ȗ)
					
			3.uhsc_objnamev(ȗ)
					
			4.uhsc_compv

		̂悤ɂȂ܂B

	hsc_getmes p1

		p1Ŏw肵^̕ϐɁAG[ȂHSPCMP.DLLo͂
		bZ[W܂B

	hsc_clrmes

		RpCo͂bZ[W̃f[^ׂăNA܂B

	hsc_ver

		VXeϐrefstrɁAHSPR[hRpC̃o[W
		ƂĕԂ܂B

	hsc_bye

		HSPR[hRpC̏IsȂ܂B
		̖߂͎IɎŝŁAʏ͎gp܂B

	pack_ini "filename"

		PACKFILE}l[W̏sȂ܂B
		PACKFILȆsȂꍇ(upack_vŎn܂閽)́Aŏ
		Kv܂B
		"filename"Ŏw肵t@C𑀍̑ΏۂƂ܂B
		t@ĆAgq̂Ȃ̂w肵ĉB

	pack_view

		pack_iniŎw肵t@CDPMt@CƂēeꗗ\
		܂Bpack_view̌ʂ́Ahsc_getmes߂Ŏ擾ĉB

	pack_make p1,p2

		p1 = 0=WEXEt@Cp / 1=ODPMt@Cp
		p2 : ÍL[( 0=WL[gp / ̑=ÍL[ )

		pack_iniŎw肵t@CDPMt@C쐬܂B
		p1ŁAWEXEt@CpAOǂݍݗpDPMt@CȂ̂w肷Kv܂B
		܂ADPMt@C쐬ꍇ́Ap2ňÍL[ɂĂ̐ݒsȂƂł܂B
		p20w肵ꍇ́AẄÍɂDPMt@C(2.61݊)쐬܂B
		p20ȊOw肵ꍇ́A̒lL[ƂÍ{܂B
		̏ꍇ́ADPMǂݍ݂̍ۂɃXNvgœl̃L[chdpm߂ɂĎw肵Ȃ΁A
		t@CƂĕȂȂ̂ŒӂĂB
		DPMt@CɊ܂߂t@ĆAJgfBNg
		uPACKFILEṽeLXgŎw肳ꂽt@CɂȂ܂B

	pack_exe p1

		p1 = 0=W / 1=tXN[[h / 2=XN[Z[o[

		pack_iniŎw肵t@CEXEt@C쐬܂B
		p13̃[h(WEtXN[EXN[Z[o[)
		w肷邱Ƃł܂B
		EXEt@CɊ܂߂t@ĆAJgfBNg
		uPACKFILEṽeLXgŎw肳ꂽt@CɂȂ܂B
		܂AHSP^Ct@C(hsprt)K؂ȃfBNg
		uĂKv܂B

	pack_opt p1,p2,p3

		p1 = XTCY( 0 or ȗ = 640 )
		p2 = YTCY( 0 or ȗ = 480 )
		p3 = N̓XCb`

		pack_exe߂EXEt@C쐬ꍇ̃IvV
		w肵܂Bpack_exe߂sOɁAwĂ
		Kv܂B
		p3Ŏw肷N̓XCb`ɂ́Aȉ̒lw肷邱ƂœȋNɂ邱Ƃł܂B

			1 = EBhE\
			2 = fBNgړȂ

		XCb`́AZ邱Ƃœɋ@\I邱Ƃ\łB
		ɓȓ삪KvȂꍇ́A0w肵ĉB

	pack_rt "filename"

		pack_exe߂EXEt@C쐬ꍇɎQƂ
		HSP^Ct@C(hsprt)̂tpXw肵܂B
		HSP^Ct@CJgfBNgɂȂꍇ́A
		wĂĂB
		(: pack_rt "c:\hsp\hsprt")

	pack_get "filename"

		pack_iniŎw肵t@CDPMt@CƂāAi[
		Ăt@Co܂B
		"filename"Ŏw肵t@CoAJgfBNg
		Z[u܂B

	hsc3_getsym

		RpC̃bZ[Wobt@HSPŎgpV{o͂܂B
		o͂́AuV{,sys[|var/func/macro][|1/2]v̌`ɂȂ܂B

	hsc3_messize val

		hsc_getmesœ郁bZ[WŜ̃TCYAvalŎw肵ϐ
		܂B

	hsc3_make "path"

		st@C̎쐬sȂ܂B
		"path"HSP^CCûtpXw肵܂B
		packfilẽIvVɏ]Ďst@C쐬܂B
		IvVtpackfile쐬́Ahsc_compōsȂ܂B

	hsc3_getruntime val, "objfile"

		"objfile"Ŏw肵IuWFNgt@CKvƂ
		^Ct@CvalŎw肵ϐɎ擾܂B
		val̕ϐ͕^ŏĂKv܂B
		^Ct@C("")̏ꍇ́AftHg
		^C(hsp3.exe)gp邱ƂĂ܂B

	hsc3_run "string"

		"string"̓e^Csp̃R}hCƂď܂B
		"string"ɂ́Au^CvuIuWFNgt@Cv
		uNIvVvꂼXy[Xŋ؂`Ŏw肷
		Kv܂B


Eӓ_

	HSPCMP.DLĹAHSP3.2ȏƓɎgpvOCt@CłB
	EXEt@C쐬ꍇłAHSPCMP.DLLEXEt@CƓfBNg
	ɒuȂƓ삵܂B܂ApackfileDLLǉ邱Ƃ͂ł܂B

	̃o[WɂĂCÂ̂ƂAӌȂǂ܂A
	[HSP̌f̕ɂ񂹉B


E쌠ƃCZX

	HSPCMP.DLL̒쌠onion softwareɂ܂B
	onion software͖{vOɂĐAȂ鑹QɂĂ
	ۏ؂܂BȂ̐ӔC͈̔͂ŎgpĂB

	HSPCMP.DLĹARɓYtAAҁAĔzz邱Ƃł܂B
	A̍ۂɂHSP̃CZX\L(hsplicense.txt)
	𖾎悤ɂĂB
	(CZX\Ĺ̖Azz̒hsplicense.txt܂߂邩A
	܂̓hLghsplicense.txtƓe܂߂悤ɂĂB)

	CZX̏ڍׂ́AHSPVXehLgQƂĂB


---------------------------------------------------------------------------
Appendix : HSPXNvg̃RpCsȂ@
---------------------------------------------------------------------------

	HSPCMP.DLLHSPXNvgĂяoTv܂B
	ȉ́AXNvgGfB^́uRpC+svƓsȂ܂B

	#include "hspcmp.as"

	;
	;	HSP3\[XXNvgRpCĎs
	;
	sdim mesbuf,$10000
	sdim rtname,256

	fname="test1.as"		; XNvgt@C
	objname="obj"			; IuWFNgt@C
	debug_mode=0			; fobOEBhE\tO

	hsc_ini fname
	hsc_objname objname
	hsc_comp 0,2,debug_mode
	res=stat:if res!=0 : dialog "ERROR" : goto *goerror

	delete fname+".i"		; ԃt@C폜

	hsc3_getruntime rtname, objname
	if rtname="" : rtname="hsp3.exe"

	cmdexe = "\""+dir_exe+"\\"+rtname+"\" "+objname
	hsc3_run cmdexe

*goerror
	hsc_getmes mesbuf

	objmode 1
	flg=1				; 0=ҏWs/1=ҏW\
	mesbox mesbuf,636,446,flg+4

	stop


---------------------------------------------------------------------------
Appendix : CvOHSPgvOČĂяo@
---------------------------------------------------------------------------

	ł́AHSPCMP.DLLCvOĂяo@Ă܂B
	ȊO̊gvOCA{Iɂ͓@ŃANZX\łB
	Xǵ̗AVisual C++ŎgĂ̂łB


EĂяo

	̃XǵAHSPCMP.DLLNĊ֐`Ă镔łB
	DLLFUNCƂ^̊֐`ĎgĂ܂B
	(int,int,int,int)ɂȂĂ܂Aʂ̃^CvłĂ4
	Ăяop[^(TCY4byte)łΉł\܂B
	̗ł́Adll_iniĂԂƂhsc_Ŏn܂邻ꂼ̊֐gpł
	悤ɂȂAdll_byeĂԂƂŊJ܂B(ł͊JɁA
	hsc_byeĂԂ悤ɂȂĂ܂)

/*
		DLL support routines
*/

typedef BOOL (CALLBACK *DLLFUNC)(int,int,int,int);

DLLFUNC hsc_ini;
DLLFUNC hsc_refname;
DLLFUNC hsc_objname;
DLLFUNC hsc_comp;
DLLFUNC hsc_getmes;
DLLFUNC hsc_clrmes;
DLLFUNC hsc_ver;
DLLFUNC hsc_bye;
DLLFUNC pack_ini;
DLLFUNC pack_make;
DLLFUNC pack_exe;
DLLFUNC pack_opt;
DLLFUNC pack_rt;
DLLFUNC hsc3_getsym;
DLLFUNC hsc3_make;
DLLFUNC hsc3_getruntime;		// 3.0p̒ǉ
DLLFUNC hsc3_run;				// 3.0p̒ǉ

static	int dllflg=0;			// DLL uses flag
static	HINSTANCE hDLL;			// Handle to DLL

static char *SetDllFunc( char *name )
{
	//		DLL֐蓖Ă
	//
	char *ent;
	char fncname[128];
	fncname[0]='_';
	strcpy( fncname+1,name );
	strcat( fncname,"@16" );
	ent = (char *)GetProcAddress( hDLL, fncname );
	if (ent==NULL) dllflg=-1;				// error flag
	return ent;
}


int dll_ini( char *libname )
{
	//		Initalize DLL entry
	//			(result:1=ok)
	//
	hDLL = LoadLibrary( libname );
	if ( hDLL==NULL ) return 0;

	dllflg=1;
	hsc_ini = (DLLFUNC)SetDllFunc("hsc_ini");
	hsc_refname = (DLLFUNC)SetDllFunc("hsc_refname");
	hsc_objname = (DLLFUNC)SetDllFunc("hsc_objname");
	hsc_comp = (DLLFUNC)SetDllFunc("hsc_comp");
	hsc_getmes = (DLLFUNC)SetDllFunc("hsc_getmes");
	hsc_clrmes = (DLLFUNC)SetDllFunc("hsc_clrmes");
	hsc_ver = (DLLFUNC)SetDllFunc("hsc_ver");
	hsc_bye = (DLLFUNC)SetDllFunc("hsc_bye");
	pack_ini = (DLLFUNC)SetDllFunc("pack_ini");
	pack_make = (DLLFUNC)SetDllFunc("pack_make");
	pack_exe = (DLLFUNC)SetDllFunc("pack_exe");
	pack_opt = (DLLFUNC)SetDllFunc("pack_opt");
	pack_rt = (DLLFUNC)SetDllFunc("pack_rt");
	hsc3_getsym = (DLLFUNC)SetDllFunc("hsc3_getsym");
	hsc3_make = (DLLFUNC)SetDllFunc("hsc3_make");
	hsc3_getruntime = (DLLFUNC)SetDllFunc("hsc3_getruntime");		// 3.0p̒ǉ
	hsc3_run = (DLLFUNC)SetDllFunc("hsc3_run");						// 3.0p̒ǉ

	return dllflg;
}


void dll_bye( void )
{
	//		Release DLL entry
	//
	if (dllflg==0) return;
	if (dllflg==1) {
		hsc_bye(0,0,0,0);					// nroutine
	}
	FreeLibrary( hDLL );
	dllflg=0;
}



EHSPCMP.DLLgt@C̃RpCƎs

	ȉ̗́At@C̃RpCƎssȂłB
	hsc_Ŏn܂閽߂ɂĂ̏ڍׂ́A߃t@XQƂĂB
	܂ȗ́Ahsc_iniŃ\[XXNvgw肵ĂA
	hsc_objnameŏo͂IuWFNgt@Cw肵܂B
	̌Ahsc_compŃt@CRpC܂B
	G[ꍇ́Ahsc_getmesŃbZ[Wf[^o
	Ƃł܂B
	G[Ȃꍇ́A^CĂяoĎs܂B
	̗ł́AfBNg̎w͓ɍsȂĂ܂񂪁Aۂɂ
	^ĈfBNg܂߂pXA\[XXNvg̃pXȂǂ
	܂߂OŎw肷Ƃł傤B

	/*
			HSP compile support routines
	*/

	char hsp_file[128];				// \[XXNvgt@C
	char objname[128];				// IuWFNgt@C
	char errbuf[32000];				// G[bZ[Wi[̗̈
	char cfname[_MAX_PATH];				// ^Ct@C
	char execmd[2048];				// sp
	int a,i;

	//		Compile as file
	//
	strcat( hsp_file,"test.as" );
	strcat( objname,"test.ax" );
	hsc_ini( 0,(int)hsp_file, 0,0 );
	hsc_objname( 0,(int)objname, 0,0 );
	a=hsc_comp( 1,0,0,0 );
	if (a) {
		hsc_getmes( (int)errbuf,0,0,0 );	// G[擾
	}

	//		execute HSP3 process
	//
	*cfname = 0;
	hsc3_getruntime( (int)cfname, (int)objname, 0, 0 );	// ^C擾
	if ( *cfname == 0 ) {
		wsprintf( execmd,"%s ", "hsp3.exe" );
	} else {
		wsprintf( execmd,"%s ", cfname );
	}

	strcat( execmd,objname );
	if (hsp_cmdopt[0]!=0) {
		strcat( execmd," " );
		strcat( execmd,hsp_cmdopt );		// R}hCIvVꍇ
	}

	i = hsc3_run( (int)execmd, 0, 0, 0 );
	if ( i ) {
		//	G[ "sp^Ct@C܂B"
	}


-------------------------------------------------------------------------------
                                                HSP users manual / end of file 
-------------------------------------------------------------------------------
