// startup.bas for v3.00
//
// 実行時、ユーザー指定ソースの前に読み込まれる / At run time, this source is loaded before the user-specified source.
// 当然この中もコンパイル＆実行される / Of course, this is compiled and run.
//
// 定数定義 / constant value

// enum値はcaseに使えるが、int値はcaseには使えない / The enum value is able to use for case value, but int value is unable to use for case value.

// 真偽値 / Truth-Value
// v2.2でシステム変数からenum値に変更 / Change system variable to enum constant in v2.2.
enum
	YES  =(1=1)
	true =YES
	NO	 =(1=0)
	false=NO
endenum

// BIT定数 / Bit constant
// よく使うので定義 / For frequently used
enum
	BIT0 =1
	BIT1 =BIT0 shl 1:// 即値演算は展開されるので使える
	BIT2 =BIT0 shl 2
	BIT3 =BIT0 shl 3
	BIT4 =BIT0 shl 4
	BIT5 =BIT0 shl 5
	BIT6 =BIT0 shl 6
	BIT7 =BIT0 shl 7
	BIT8 =BIT0 shl 8
	BIT9 =BIT0 shl 9
	BIT10=BIT0 shl 10
	BIT11=BIT0 shl 11
	BIT12=BIT0 shl 12
	BIT13=BIT0 shl 13
	BIT14=BIT0 shl 14
	BIT15=BIT0 shl 15
	BIT16=BIT0 shl 16
	BIT17=BIT0 shl 17
	BIT18=BIT0 shl 18
	BIT19=BIT0 shl 19
	BIT20=BIT0 shl 20
	BIT21=BIT0 shl 21
	BIT22=BIT0 shl 22
	BIT23=BIT0 shl 23
	BIT24=BIT0 shl 24
	BIT25=BIT0 shl 25
	BIT26=BIT0 shl 26
	BIT27=BIT0 shl 27
	BIT28=BIT0 shl 28
	BIT29=BIT0 shl 29
	BIT30=BIT0 shl 30
	BIT31=BIT0 shl 31
endenum

// lineCap()の引数 / Argument of lineCap()
enum
	LineCapButt   =0:// 標準			/ standard
	LineCapRound  	:// 端を丸くする	/ edge is round
	LineCapSquare   :// 端を四角くする	/ edge is square
endenum

// lineJoin()の引数 / Argument of lineJoin()
enum
	LineJoinMiter   =0  :// 標準			/ standard
	LineJoinRound       :// 角を丸くする	/ corner is round
	LineJoinBevel       :// 直角のまま	/ corner is bevel
endenum


// blend()の引数 / Argument of blend()
// どのようになるかは名称から想像して(^_^;)
// Please imagine from the name what it looks like.
enum
	BlendModeNormal         =0
	BlendModeMultiply
	BlendModeScreen
	BlendModeOverlay
	BlendModeDarken
	BlendModeLighten
	BlendModeColorDodge
	BlendModeColorBurn
	BlendModeSoftLight
	BlendModeHardLight
	BlendModeDifference
	BlendModeExclusion
	BlendModeHue
	BlendModeSaturation
	BlendModeColor
	BlendModeLuminosity
	BlendModeClear
	BlendModeCopy
	BlendModeSourceIn
	BlendModeSourceOut
	BlendModeSourceAtop
	BlendModeDestinationOver
	BlendModeDestinationIn
	BlendModeDestinationOut
	BlendModeDestinationAtop
	BlendModeXOR
	BlendModePlusDarker
	BlendModePlusLighter
	BlendModeXor			=BlendModeXOR
endenum


// deviceType()のリターン値 / Return value of deviceType()
// デバイス種類 / Device type
enum
	DEVICE_UNKNOWN  =0
	DEVICE_IPAD
	DEVICE_IPODTOUCH
	DEVICE_IPHONE
	DEVICE_IPHONE_SIMURATOR
	DEVICE_IPAD_SIMULATOR
endenum


// checkCompatible()の引数 / Argument of checkCompatible()
// V3.20
// enum内でorなどの整数化演算子を２回以上使うときは()でくくる必要がある / When you use two or more times integer-only operators such as or in the enum there is a need to be enclosed in ().
enum
	COMPATIBLE_IPAD			=BIT0
//	COMPATIBLE_IPADPRO		=BIT1
	//
	COMPATIBLE_IPODTOUCH4	=BIT2
	COMPATIBLE_IPODTOUCH56	=BIT3:// iPod touch4とは縦解像度のみ違う / This is different only vertical resolution from the iPod touch4.
	COMPATIBLE_IPODTOUCH	=(COMPATIBLE_IPODTOUCH4 or COMPATIBLE_IPODTOUCH56)	:// 横解像度のみ考慮するとき / When considering only the horizontal resolution
	//
	COMPATIBLE_IPHONE4		=BIT4
	COMPATIBLE_IPHONE5		=BIT5:// iPhone4とは縦解像度のみ違う / This is different only vertical resolution from the iPhone4.
	COMPATIBLE_IPHONE6		=BIT6
	COMPATIBLE_IPHONE6PLUS	=BIT7
//	COMPATIBLE_IPHONE		=(COMPATIBLE_IPHONE4 or COMPATIBLE_IPHONE5) or (COMPATIBLE_IPHONE6 or COMPATIBLE_IPHONE6PLUS)
	//
//	COMPATIBLE_ALL			=((COMPATIBLE_IPAD or COMPATIBLE_IPODTOUCH) or COMPATIBLE_IPHONE)
	//
	// 画面解像度が同じ機種
	COMPATIBLE_IPODTOUCH4_IPHONE4 =(COMPATIBLE_IPODTOUCH4  or COMPATIBLE_IPHONE4)
	COMPATIBLE_IPODTOUCH56_IPHONE5=(COMPATIBLE_IPODTOUCH56 or COMPATIBLE_IPHONE5)
endenum


// getOrientation()のリターン値 / Return value of getOrientation()
// デバイス方向 / Device Orientation
// UIDeviceOrientationが元 / Source is UIDeviceOrientation
enum
	DeviceOrientationUnknown        	:// 方向不明 / unknown
	DeviceOrientationPortrait       	:// ホームボタンを下にした縦 / portrait with downside home button
	DeviceOrientationPortraitUpsideDown :// ホームボタンを上にした縦 / portrait with upside home button
	DeviceOrientationLandscapeLeft  	:// ホームボタンを左にした縦 / landscape with leftside home button
	DeviceOrientationLandscapeRight 	:// ホームボタンを右にした縦 / landscape with rightside home button
//	DeviceOrientationFaceUp     	    :// 液晶上向き / face up
//	DeviceOrientationFaceDown   	    :// 液晶下向き / face down
endenum


// screenRotate()の引数 / Argument of screenRotate()
enum
	MOTION_SCALE2FIT    =0
    // いつでも回転し、幅も合わせる / Any time rotate and fit width.
	MOTION_RUNFIX
    // RUN以降BREAK/ENDまで画面回転を無効にする(標準) / Fix width and disable rotation until end. (default)
	MOTION_ASPECTFIT
    // いつでも回転し、縦横比を維持しながら縦を画面に収める / Any time rotate, but width is fix at run.
endenum


// tatrb()の引数 / Argument of tatrb()
// テキスト表示属性 / Text display attribute
enum
	ATRB_NORMAL     =0
	ATRB_UNDERLINE  =BIT0	:// 下線 / underline
	ATRB_CANCEL     =BIT1	:// 取り消し線（1本）/ cancel single line
	ATRB_CANCEL2    =BIT2	:// 取り消し線（2本）/ cancel double line
	ATRB_REVERSE    =BIT3	:// 反転 / reverse
	ATRB_BOLD		=BIT8	:// 太字 / Bold
	ATRB_CLEAR		=BIT15	:// 下地クリア / erase under character
	ATRB_CENTERING	=BIT9	:// 文字中央寄せ / cntering	v3.20	(テキスト座標モードのみ/Text coordinate mode only)
endenum
// 斜字体はフォントで設定すること / Italic is set by font type.


// tcolor()およびgcolor()の引数 / Argument of tcolor() and gcolor()
// 標準色 / Standard color
enum
	TBLACK      =0
	TBLUE
	TRED
	TMAGENTA
	TGREEN
	TCYAN
	TYELLOW
	TWHITE
// 以下highlight色 / highlight color
	THBLACK
	THBLUE
	THRED
	THMAGENTA
	THGREEN
	THCYAN
	THYELLOW
	THWHITE
endenum

// tcolor()およびgcolor()の引数 / Argument of tcolor() and gcolor()
// 合成RGB値による標準色 / Standard color by composite RGB
enum
	CTBLACK      =&h000000ff
	CTBLUE       =&h00007fff
	CTRED        =&h7f0000ff
	CTMAGENTA    =(CTBLUE or CTRED)
	CTGREEN      =&h007f00ff
	CTCYAN       =(CTBLUE or CTGREEN)
	CTYELLOW     =(CTRED  or CTGREEN)
	CTWHITE      =&h7f7f7fff
// 以下highlight色 / highlight color
	CTHBLACK     =CTBLACK
	CTHBLUE      =&h0000ffff
	CTHRED       =&hff0000ff
	CTHMAGENTA   =(CTHBLUE or CTHRED)
	CTHGREEN     =&h00ff00ff
	CTHCYAN      =(CTHBLUE or CTHGREEN)
	CTHYELLOW    =(CTHRED  or CTHGREEN)
	CTHWHITE     =&hffffffff
endenum


// printCtrlCode()の引数 / Argument of printCtrlCode()
// 制御可能なコントロールコード / Control code
enum
	DISP_CTRL_CLEARLINE		=&h05
	DISP_CTRL_BEEP          =&h07
	DISP_CTRL_TAB           =&h09
	DISP_CTRL_LF            =&h0a
	DISP_CTRL_HOME          =&h0b
	DISP_CTRL_CLS           =&h0c
	DISP_CTRL_CR            =&h0d
	DISP_CTRL_RCR           =&h0e
	DISP_CTRL_CLEAR_EOS		=&h1a
	DISP_CTRL_CURSOR_RIGHT  =&h1c
	DISP_CTRL_CURSOR_LEFT
	DISP_CTRL_CURSOR_UP
	DISP_CTRL_CURSOR_DOWN
endenum

// cursorMove()の引数 / Argument of cursorMove()
enum
	CURSOR_DIREC_UP		=0
	CURSOR_DIREC_DOWN
	CURSOR_DIREC_LEFT
	CURSOR_DIREC_RIGHT
	CURSOR_DIREC_UP_WITH_SCROLL
	CURSOR_DIREC_DOWN_WITH_SCROLL
endenum

// inputWithPlaceholder()の引数 / Argument of inputWithPlaceholder()
// キーボード形状 / Keyboard type
enum
	KeyboardTypeDefault               =0
	KeyboardTypeASCIICapable
	KeyboardTypeNumbersAndPunctuation
	KeyboardTypeURL
	KeyboardTypeNumberPad
	KeyboardTypePhonePad
	KeyboardTypeNamePhonePad
	KeyboardTypeEmailAddress
	KeyboardTypeDecimalPad
	KeyboardTypeTwitter
	KeyboardTypeAlphabet              
endenum


// apage()/vpriority()の引数 / Argument of apage()/vpriority()
// 画面指定 / Screen
enum
	KPAGE	=0
 	SPAGE   	:// スプライト&BG画面	/ sprite and BG screen
	TPAGE		:// テキスト画面		/ text screen
	GPAGE0		:// グラフィック画面0	/ graphic screen 0
	GPAGE1		:// グラフィック画面1	/ graphic screen 1
	GPAGE2		:// グラフィック画面2	/ graphic screen 2
	GPAGE3		:// グラフィック画面3	/ graphic screen 3
endenum

// vpage()の引数 / Argument of vpage()
// 表示画面指定 / Screen
// ここは関数を使っているのでenum化できない / These constants use bit() function so these can not use enum.
int	B_SPAGE		=bit(SPAGE) :// スプライト&BG画面	/ sprite and BG screen
int	B_TPAGE		=bit(TPAGE) :// テキスト画面		/ text screen
int	B_GPAGE0	=bit(GPAGE0):// グラフィック画面0	/ graphic screen 0
int	B_GPAGE1	=bit(GPAGE1):// グラフィック画面1	/ graphic screen 1
int	B_GPAGE2	=bit(GPAGE2):// グラフィック画面2	/ graphic screen 2
int	B_GPAGE3	=bit(GPAGE3):// グラフィック画面3	/ graphic screen 3


// motionStart()/motionSelectData()の引数 / Argument of motionStart()/motionSelectData()
enum
	MOTION_DEGREE=0	:// 角度		/ degree
	MOTION_VELOCITY	:// 角速度	/ velocity
	MOTION_ROTATION	:// オイラー角/ rotation
	MOTION_EULER
endenum


// files()のmode引数 / Argument of files(mode)
enum
	FILES_FILE=&h0001	:// ファイル / file
	FILES_DIR =&h8001	:// ディレクトリ / directory
	FILES_ALL=(FILES_FILE or FILES_DIR)	:// ファイルとディレクトリ / file and directory
endenum

// filesのfarea引数 / Argument of files(farea)
enum
	FILES_FAREA_USER	=BIT0
	FILES_FAREA_SYSTEM	=BIT1
	FILES_FAREA_ALL		=(FILES_FAREA_USER or FILES_FAREA_SYSTEM)
endenum


// スプライト＆BG関数の引数 / Argument of sprite and BG functions
enum
	SPRITE_IOS=0:// 要素は実色 / element is real color
	SPRITE_X68	:// 要素はパレットコード / element is palette code
endenum

// 優先順位 / Priority
enum
	SPRITE_PRW_HIDE	=0	:// 非表示 / hide
	SPRITE_PRW_BG0BG1SP	:// BG0>BG1>SP
	SPRITE_PRW_BG0SPBG1	:// BG0>SP>BG1
	SPRITE_PRW_SPBG0BG1	:// SP>BG0>BG1
endenum

// 反転状態 / Flip
enum
	SPRITE_FLIP_NONE		=0
	SPRITE_FLIP_HORIZONTAL	=1	://bit(0)
	SPRITE_FLIP_VERTICAL	=2	://bit(1)
	SPRITE_FLIP_HORIZONTAL_VERTICAL=(SPRITE_FLIP_HORIZONTAL + SPRITE_FLIP_VERTICAL)
endenum


// 画面スクロールの引数 / Argument of scroll
enum
	SCROLL_UP	=0
	SCROLL_DOWN
	SCROLL_LEFT
	SCROLL_RIGHT
endenum


// アニメーションの引数 / Argument of animation
// Layerアニメーション / Layer animation
enum
	ANIMATION_STOP			 =0
	ANIMATION_LAYER
	// 以下UIViewアニメーション / UIView animation is below
	ANIMATION_FLIPFROMLEFT
	ANIMATION_FLIPFROMRIGHT
	ANIMATION_CURLUP
	ANIMATION_CURLDOWN		 
endenum

enum
	ANIMATIONCURVE_ERASEINOUT=0
	ANIMATIONCURVE_ERASEIN
	ANIMATIONCURVE_ERASEOUT
	ANIMATIONCURVE_LINEAR
endenum

// 回転軸指定 / rotation axis
enum
	AXIS_NONE=0
	AXIS_X
	AXIS_Y
	AXIS_Z
endenum

// タッチ状態 / touch status
enum
	TOUCH_NONE=0
	TOUCH_BEGAN
	TOUCH_MOVE
endenum

// 画像ファイル読み込み系のエラーコード / Error code for image file load
enum
	PIC_OK=0					:// 正常終了						/ OK
	PIC_FILENOTFOUND			:// ファイルが見つからない			/ File not found
	PIC_READERR					:// 読み込みエラー					/ Read error
	PIC_HEADERERR				:// ヘッダーがおかしい				/ Header is illegal
	PIC_NOTSUPPORT_COLOR		:// サポートしてない色ビット数		/ Non supported color length
	PIC_NOTSUPPORT_MODE			:// サポートしてないモード			/ Non supported mode
	PIC_BITMAP_ALREADY_USE		:// bitmapが他で使われている		/ bitmap already used
	PIC_NOMEMORY				:// ワークが確保できない			/ work can not allocate
	PIC_TOO_SMALL				:// 画像サイズが小さすぎる			/ image size is too small
	PIC_DATA_ILLEGAL			:// データ構造がおかしい,JPEGでマーカーがおかしい	/ Data structure is illegal , Illegal JPEG maker
	PIC_NO_PIC					:// 目的とする画像ファイルではない	/ This is not target image file,
endenum
//
// その他
enum
	CLOCKS_PER_SEC=1000000	// clock()/CLOCKS_PER_SECが秒になる / clock()/CLOCKS_PER_SEC becomes second
endenum

//
// X68互換関数用 / For X68 compatible functions

// contrast()のmode / mode of contrast()
enum
	CONTRAST_GRAPHIC	=BIT0	:// グラフィック画面を制御	/ Control graphic screen
	CONTRAST_TEXT		=BIT1	:// テキスト画面を制御		/ Control text screen
	CONTRAST_SPRITE		=BIT2	:// スプライト画面を制御	/ Control sprite screen
endenum

enum
	// スート番号 / Suit number
	SUIT_SPADE	=0
	SUIT_HEART
	SUIT_DIA
	SUIT_CLUB
	// カード番号 / Card number
	MAX_TRUMP	=13
	CARD_BACK	=0
	CARD_SPADE	=CARD_BACK+1
	CARD_HEART	=CARD_SPADE+MAX_TRUMP
	CARD_DIA	=CARD_HEART+MAX_TRUMP
	CARD_CLUB	=CARD_DIA  +MAX_TRUMP
	CARD_JOKER	=CARD_CLUB +MAX_TRUMP
	CARD_USER	=CARD_JOKER+1
	MAX_CARD	=60	:// カード番号としては0～MAX_CARD-1 / card number must be between 0 to MAX_CARD-1.
	MAX_USER_CARD=(MAX_CARD-CARD_USER)
	// ユーザーカードを使うときはスート番号は使わないこと / if you use user cards, you never use suit number.
	//
	// カードパターンサイズ / pattern size of card
	CARD_WX		=48	:// ドット / dot
	CARD_WY		=96
	CARD_SIZE1	=(CARD_WX/2*CARD_WY)	:// 2ドット1バイトの構造なので / 1byte includes 2dot.
endenum

enum
	// tColorX68()の表示属性 / Attribute of tColorX68
	x68TBLACK	=0:// BIT0,1
	x68TCYAN
	x68TYELLOW
	x68TWHITE
	x68HLIGHT	=BIT2
	x68REVERSE	=BIT3
endenum

// fopen()のエラー判定用 / Error value of fopen()
// 関数使って判定するのが引っかかる人向け / If you do not want to judge by using the function, please use this.
int ERR_FOPEN=errorCodeFopen()

// setTouchKeys()のkeysに指定する属性値 / Attribute value of setTouchKeys()
enum
	FKEY_NOT_REPEAT   	=BIT8
	FKEY_NOT_BEGANONLY	=BIT9
	FKEY_WAKUONLY		=BIT10
endenum


// isLandscape(YES)の戻り値 / The return value of isLandscape(YES)	v3.50
enum
	DEVICE_ORIENTATION_UNKNOWN	=0			:// 不明
	DEVICE_ORIENTATION_PORTRAIT				:// 縦
	DEVICE_ORIENTATION_PORTRAITUPSIDEDOWN	:// 上下逆
	DEVICE_ORIENTATION_LANDSCAPELEFT		:// ホームボタンは右
	DEVICE_ORIENTATION_LANDSCAPERIGHT		:// ホームボタンは左
	DEVICE_ORIENTATION_FACEUP				:// 上向け
	DEVICE_ORIENTATION_FACEDOWN				:// 下向け
	// =UIDeviceOrientation*				// X-BASICの定数と命名規則が異なるので付け替え
endenum

// stick()の戻り値 / The return value of stick()	v3.50
enum
	STICK_DIREC_NONE=0
	STICK_DIREC_LEFT_DOWN
	STICK_DIREC_DOWN
	STICK_DIREC_RIGHT_DOWN
	STICK_DIREC_LEFT
	STICK_DIREC_CENTER
	STICK_DIREC_RIGHT
	STICK_DIREC_LEFT_UP
	STICK_DIREC_UP
	STICK_DIREC_RIGHT_UP
endenum

// 音楽関数系 / music functions
enum
	MUSIC_BCH1=	BIT0
	MUSIC_BCH2=	BIT1
	MUSIC_BCH3=	BIT2
	MUSIC_BCH4=	BIT3
	MUSIC_BCH5=	BIT4
	MUSIC_BCH6=	BIT5
	MUSIC_BCH7=	BIT6
	MUSIC_BCH8=	BIT7
	MUSIC_ALL_CH=(MUSIC_BCH1+MUSIC_BCH2+MUSIC_BCH3+MUSIC_BCH4+MUSIC_BCH5+MUSIC_BCH6+MUSIC_BCH7+MUSIC_BCH8)
endenum

enum
	SCALE_C=0	// C		0
	SCALE_CS	// C#		1
	SCALE_D		// D		2
	SCALE_DS	// D#		3
	SCALE_E		// E		4
	SCALE_F		// F		5
	SCALE_FS	// F#		6
	SCALE_G		// G		7
	SCALE_GS	// G#		8
	SCALE_A		// A		9
	SCALE_AS	// A#		10
	SCALE_B		// B		11
	//
	MUSIC_SCALES	// 1オクターブ内の音
endenum

// debugMode()/debugDump()のdumpMode値 / The dumpMode value of debugMode()/debugDump()
enum
	DUMP_NONE				=0
	DUMP_VAR_INT			=BIT0
	DUMP_VAR_FLOAT			=BIT1
	DUMP_VAR_CHAR			=BIT2
	DUMP_VAR_STR			=BIT3
	DUMP_VAR_ALL			=(DUMP_VAR_INT+DUMP_VAR_FLOAT+DUMP_VAR_CHAR+DUMP_VAR_STR)
	DUMP_DIM_INT			=BIT4
	DUMP_DIM_FLOAT			=BIT5
	DUMP_DIM_CHAR			=BIT6
	DUMP_DIM_STR			=BIT7
	DUMP_DIM_ALL			=(DUMP_DIM_INT+DUMP_DIM_FLOAT+DUMP_DIM_CHAR+DUMP_DIM_STR)
	DUMP_DIM_WITH_ELEMENTS	=BIT15
	DUMP_ONLY_GLOBAL		=BIT28
	DUMP_ONLY_LOCAL			=BIT29
	DUMP_OFFSET				=BIT30
endenum

// debugMode()のmode値 / The mode value of debugMode()
enum
	DEBUG_MODE_NORMAL	=0
	DEBUG_MODE_RETURN	=BIT8
	DEBUG_MODE_BREAK	=BIT9
	DEBUG_MODE_END		=BIT10
	DEBUG_MODE_STOP		=BIT11
	DEBUG_MODE_ERROR	=BIT15
	DEBUG_MODE_ALL		=(DEBUG_MODE_RETURN + DEBUG_MODE_BREAK + DEBUG_MODE_END + DEBUG_MODE_STOP + DEBUG_MODE_ERROR)
endenum
// 標準でBREAK/STOP/エラー時にはダンプ出力するようにしておく / Standard debug setting is dump at BREAK/STOP/ERROR.
debugMode(DEBUG_MODE_BREAK+DEBUG_MODE_STOP+DEBUG_MODE_ERROR,DUMP_VAR_ALL+DUMP_DIM_ALL)

// ここはstartup中なので中間変数は作らない / I make no temporary variable. Because here is startup.bas.
if isLocalizeJapan() then {
	debugPrint("実行 : "+programName$())
} else {
	debugPrint("Execute : "+programName$())
}
//
// このファイルは定数定義だけなので、実行しても何も起こりません
// This source is only constant definition. So it is no effect at run.
//
// V3.00で補足
// X-BASIC/68のユーザーリファレンスによると、コマンドラインからソースファイル名を指定せずBASIC[Enter]だけで起動した場合、自動的にautorun.basというプログラムが実行される。
// startup.basはすべてのプログラムの前に読み込まれ実行される処理なので、それとは違う。
//
// Note (V3.00)
// According to the User Reference of X-BASIC/68, if you start with only BASIC [Enter] without specifying a source file from the command line, automatically "autorun.bas" is executed.
// The "startup.bas" is a process that is loaded before being run all the programs. So, it is different from "autorun.bas".
