misc/include/fnc.equ
	.nlist
  .ifndef __fnc_equ__
__fnc_equ__	equ	1

;----------------------------------------------------------------
;
;	X-BASIC外部関数
;
;----------------------------------------------------------------

;引数の型(パラメータテーブル/スタック)
P_FLOAT		equ	$0001		;float
P_INT		equ	$0002		;int
P_CHAR		equ	$0004		;char
P_STR		equ	$0008		;str
P_PTR		equ	$0010		;ポインタ
P_DIM1		equ	$0020		;1次元配列(+ポインタ)
P_DIM2		equ	$0040		;2次元配列(+ポインタ)
P_OPT		equ	$0080		;省略可能(パラメータテーブル)
P_VOID		equ	$FFFF		;省略(スタック)

;戻り値の型(パラメータテーブル)
R_FLOAT		equ	$8000		;float
R_INT		equ	$8001		;int
R_STR		equ	$8003		;str
R_VOID		equ	$FFFF		;戻り値なし

;引数のオフセット(スタック)
	.offset	4
P_COUNT:	.ds.w	1		;  4 引数の数
P1_TYPE:	.ds.w	1		;  6 引数1 型
P1_FLOAT:	.ds.l	1		;  8       floatデータ(8バイト)
P1_INT:		.ds.b	3		; 12       intデータまたはアドレス(4バイト)
P1_CHAR:	.ds.b	1		; 15       charデータ(1バイト)
P2_TYPE:	.ds.w	1		; 16 引数2
P2_FLOAT:	.ds.l	1		; 18
P2_INT:		.ds.b	3		; 22
P2_CHAR:	.ds.b	1		; 25
P3_TYPE:	.ds.w	1		; 26 引数3
P3_FLOAT:	.ds.l	1		; 28
P3_INT:		.ds.b	3		; 32
P3_CHAR:	.ds.b	1		; 35
P4_TYPE:	.ds.w	1		; 36 引数4
P4_FLOAT:	.ds.l	1		; 38
P4_INT:		.ds.b	3		; 42
P4_CHAR:	.ds.b	1		; 45
P5_TYPE:	.ds.w	1		; 46 引数5
P5_FLOAT:	.ds.l	1		; 48
P5_INT:		.ds.b	3		; 52
P5_CHAR:	.ds.b	1		; 55
P6_TYPE:	.ds.w	1		; 56 引数6
P6_FLOAT:	.ds.l	1		; 58
P6_INT:		.ds.b	3		; 62
P6_CHAR:	.ds.b	1		; 65
P7_TYPE:	.ds.w	1		; 66 引数7
P7_FLOAT:	.ds.l	1		; 68
P7_INT:		.ds.b	3		; 72
P7_CHAR:	.ds.b	1		; 75
P8_TYPE:	.ds.w	1		; 76 引数8
P8_FLOAT:	.ds.l	1		; 78
P8_INT:		.ds.b	3		; 82
P8_CHAR:	.ds.b	1		; 85
P9_TYPE:	.ds.w	1		; 86 引数9
P9_FLOAT:	.ds.l	1		; 88
P9_INT:		.ds.b	3		; 92
P9_CHAR:	.ds.b	1		; 95
P10_TYPE:	.ds.w	1		; 96 引数10
P10_FLOAT:	.ds.l	1		; 98
P10_INT:	.ds.b	3		;102
P10_CHAR:	.ds.b	1		;105
					;106

;戻り値のオフセット(戻り値)
	.offset	0
R1_ZERO:	.dc.w	1		; 0 $0000
R1_FLOAT:	.dc.l	1		; 2 floatデータ(8バイト)
R1_INT:		.dc.l	1		; 6 intデータまたはアドレス(4バイト)
R1_SIZE:				;10 戻り値のサイズ

;1次元配列のオフセット
	.offset	0
D1_SKIP:	.ds.l	1		; 0 スキップオフセット
D1_DIM:		.ds.w	1		; 4 次元数-1=0
D1_UNIT:	.ds.w	1		; 6 要素サイズ。1,4,8
D1_IMAX:	.ds.w	1		; 8 要素数-1=添字の上限
D1_DATA:				;10 データの先頭

;2次元配列のオフセット
	.offset	0
D2_SKIP:	.ds.l	1		; 0 スキップオフセット
D2_DIM:		.ds.w	1		; 4 次元数-1=1
D2_UNIT:	.ds.w	1		; 6 要素サイズ。1,4,8
D2_IMAX1:	.ds.w	1		; 8 1次元目の要素数-1=添字の上限
D2_IMAX2:	.ds.w	1		;10 2次元目の要素数-1=添字の上限
D2_OFFSET:	.ds.l	1		;12 (0,0)から(1,0)までのオフセット。要素サイズ*1次元目の要素数
D2_DATA:				;16 データの先頭

;FDEF.H互換
float_val	equ	P_FLOAT
int_val		equ	P_INT
char_val	equ	P_CHAR
str_val		equ	P_STR
float_omt	equ	P_OPT|P_FLOAT
int_omt		equ	P_OPT|P_INT
char_omt	equ	P_OPT|P_CHAR
str_omt		equ	P_OPT|P_STR
float_vp	equ	P_PTR|P_FLOAT
int_vp		equ	P_PTR|P_INT
char_vp		equ	P_PTR|P_CHAR
str_vp		equ	P_PTR|P_STR
ary1		equ	P_DIM1|P_PTR|P_STR|P_CHAR|P_INT|P_FLOAT
ary1_i		equ	P_DIM1|P_PTR|P_INT
ary1_fic	equ	P_DIM1|P_PTR|P_CHAR|P_INT|P_FLOAT
ary1_c		equ	P_DIM1|P_PTR|P_CHAR
ary2_c		equ	P_DIM2|P_PTR|P_CHAR
float_ret	equ	R_FLOAT
int_ret		equ	R_INT
str_ret		equ	R_STR
void_ret	equ	R_VOID
par1		equ	P1_TYPE
par2		equ	P2_TYPE
par3		equ	P3_TYPE
par4		equ	P4_TYPE
par5		equ	P5_TYPE
par6		equ	P6_TYPE
par7		equ	P7_TYPE
par8		equ	P8_TYPE
par9		equ	P9_TYPE

	.text

  .endif  ;__fnc_equ__
	.list