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