------------------------------------------------------------------------------
HSPCMP ver3.7                                       HSP : Hot Soup Processor  
HSP3R[hRpC                  copyright 1999-2023 (c) onion software  
------------------------------------------------------------------------------

E͂߂

	HSP3R[hRpĆAHot Soup Processor ver3ȍ~HSPXNvg
	HSP^CŎs\ȒԃR[h(IuWFNgt@C)ɕϊ邽߂
	@\Ă܂B
	WindowspDLLł́Ahspcmp.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͂
	       -j    UTF-8`̃XNvgǂݍݏo͌`I
	       -w    fobOEChE\tOݒ肷
	       -s    f[^t@C(strmap)o͂
	       -m    EmscriptenXNvgƂăRpC
	       -e0,e1,r0,r1        IuWFNgt@Cs
                                   (e0,r0̓^Ĉ݂\)
                                   (r,r1̏ꍇ̓G[R[hmFt)

	       -h???   ???̃L[[hwv\(Linuxł̂)
	       -lk???  HSP3L[[hXg\(???͌L[[h)
	       -ll???  \[X͂sA???Ŏꂽx`s𒊏o
	       -lv???  \[X͂sA???Ŏꂽϐ`s𒊏o
	       -ls???  \[X͂sA???ŎꂽL[[h`s𒊏o
	       -lr     \[X͂sۂɎQƂso
	       -lp     vL[[h܂߂Ēo

	       --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āAIuWFNgt@C쐬܂B
		p1̃p[^ŁAfobOIuWFNgt@Cɏo͂邩w肷邱Ƃł܂B

		p10܂͏ȗĂꍇ́AG[s\ȂǂɕKvȃfobO񂪃IuWFNgt@Cɕt܂B
		p11(bit0)̏ꍇ́AfobO񂪕t܂B
		p12(bit1)̏ꍇ̓vvZX̂ݍs܂B
		p14(bit2)̏ꍇ͕f[^UTF-8R[hɕϊďo͂܂B
		p18(bit3)̏ꍇ͎gpĂ镶f[^t@C(strmap)o͂܂B
		p116(bit4)̏ꍇ̓\[X̓Xgo͂܂B(炩hsc3_analysis߂ŐݒKv܂)
		p132(bit5)̏ꍇ̓\[XXNvg̕R[hUTF-8Ƃē͂܂B
		p1256(bit8)̏ꍇEmscripten(html5/js)\[XXNvgƂăRpC܂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\tOIuWFNgt@Cɖߍ݂܂B
		hsc_comp߂s邽߂ɂ́AKhsc_ini߂ŏƃt@C̎wKv܂B
		܂AKvhsc_objnameŏo͂IuWFNgt@Cw肵܂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

	hsc3_analysis "keyword",mode

		hsc_comp߂Ń\[X̓Xgo͂ۂ̐ݒs܂B
		\[X͂ł́AgpĂϐ⃉x܂Ƃ߂ė񋓂̂eLXgƂĎ擾邱Ƃł܂B
		"keyword"p[^[ŁAΏۂƂȂL[[hw肵܂BɂA̖Ô
		o͂邱Ƃł܂BׂĂ̖Oo͂ꍇ͋̕("")w肵ĂB
		modep[^[ŁA̓[hw肷邱Ƃł܂B
		ڂ́AL[[hwvQƂĂB

	hsc3_kwlbuf var,p1

		hsc3_analysis߂Őݒ肳ꂽHSP3\[X͂̌ʂ擾܂B
		varŎw肳ꂽϐ͂炩ߕ^Ƃăobt@mۂKv܂B
		p1p[^[Ńobt@̃TCYw肷邱ƂŁAʃTCYɎ܂邩ǂ`FbN܂B
		p1p[^[0ȗꂽꍇ́Aobt@ɂ̂܂܃Rs[s܂B
		炩ߕKvȃobt@̃TCY𒲂ׂꍇ́Ahsc3_kwlsize߂gpĂB

	hsc3_kwlsize var

		hsc3_analysis߂Őݒ肳ꂽHSP3\[X͂̌ʂ擾邽߂ɕKvȃobt@TCY擾܂B
		varŎw肳ꂽ^̕ϐɃTCY܂B
		ۂɃf[^擾ꍇ́Ahsc3_kwlbuf߂gpĂB

	hsc3_kwlclose

		hsc3_analysis߂Őݒ肳ꂽHSP3\[X͂̌ʂj܂B
		\[X͌hsc3_kwlclose߂ŉ͌ʂjKv܂̂ŒӂĂB


Eӓ_

	HSPCMP.DLĹAHSP3ŎgpvOCt@CƂĎgpł܂B
	vOCƂĎgpꍇ́AEXEt@C쐬ꍇłAHSPCMP.DLL
	EXEt@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 
-------------------------------------------------------------------------------
