If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
X68k/FEFUNC
Jump to navigation
Jump to search
- FE FUNCTION CALL MANUAL - ============================================================================== ・FEコール一覧 $fe00 __LMUL signed int 乗算 d0 *= d1 $fe01 __LDIV signed int 除算 d0 /= d1 $fe02 __LMOD signed int 除算の剰余 d0 %= d1 $fe04 __UMUL unsigned int 乗算 d0 *= d1 $fe05 __UDIV unsigned int 除算 d0 /= d1 $fe06 __UMOD unsigned int 除算の剰余 d0 %= d1 $fe08 __IMUL unsigned int 乗算 d0d1 = d0*d1 $fe09 __IDIV unsigned int 除算 d0...d1 = d0/d1 $fe0c __RANDOMIZE signed short 乱数初期化 seed = d0(-32768~32767) $fe0d __SRAND unsigned short 乱数初期化 seed = d0(0~65535) $fe0e __RAND signed int 乱数 d0 = rand() $fe10 __STOL 10進文字列 → signed int d0 = (a0)~ $fe11 __LTOS signed int → 10進文字列 (a0)~ = d0 $fe12 __STOH 16進文字列 → unsigned int d0 = (a0)~ $fe13 __HTOS unsigned int → 16進文字列 (a0)~ = d0 $fe14 __STOO 8進文字列 → unsigned int d0 = (a0)~ $fe15 __OTOS unsigned int → 8進文字列 (a0)~ = d0 $fe16 __STOB 2進文字列 → unsigned int d0 = (a0)~ $fe17 __BTOS unsigned int → 2進文字列 (a0)~ = d0 $fe18 __IUSING signed int → 10進文字列 (a0)~ = d0,d1桁 $fe1a __LTOD signed int → double d0d1 = d0 $fe1b __DTOL double → signed int d0 = d0d1 $fe1c __LTOF signed int → float d0 = d0 $fe1d __FTOL float → signed int d0 = d0 $fe1e __FTOD float → double d0d1 = d0 $fe1f __DTOF double → float d0 = d0d1 $fe20 __VAL 文字列 → double d0d1 = (a0)~ $fe21 __USING double → 10進文字列 (a0)~ = d0d1,d2.d3,d4 $fe22 __STOD 10進文字列 → double d0d1,d2,d3 = (a0)~ $fe23 __DTOS double → 10進文字列 (a0)~ = d0d1 $fe24 __ECVT double → 文字列 (a0),d0,d1 = d0d1,d2全体桁 $fe25 __FCVT double → 文字列 (a0),d0,d1 = d0d1,d2小数点桁 $fe26 __GCVT double → 文字列 (a0)~ = d0d1,d2全体桁 $fe28 __DTST double 0 比較 Z,N = d0d1 $fe29 __DCMP double 比較 Z,C = d0d1-d2d3 $fe2a __DNEG double 符号反転 d0d1 = neg(d0d1) $fe2b __DADD double 加算 d0d1 += d2d3 $fe2c __DSUB double 減算 d0d1 -= d2d3 $fe2d __DMUL double 乗算 d0d1 *= d2d3 $fe2e __DDIV double 除算 d0d1 /= d2d3 $fe2f __DMOD double 除算の剰余 d0d1 %= d2d3 $fe30 __DABS double 絶対値 d0d1 = abs(d0d1) $fe31 __DCEIL double 小数切上 d0d1 = ceil(d0d1) $fe32 __DFIX double 整数部 d0d1 = fix(d0d1) $fe33 __DFLOOR double 小数切捨 d0d1 = floor(d0d1) $fe34 __DFRAC double 小数部 d0d1 = frac(d0d1) $fe35 __DSGN double 正負零 d0d1 = sgn(d0d1) $fe36 __SIN double 正弦 d0d1 = sin(d0d1) $fe37 __COS double 余弦 d0d1 = cos(d0d1) $fe38 __TAN double 正接 d0d1 = tan(d0d1) $fe39 __ATAN double 逆正接 d0d1 = atan(d0d1) $fe3a __LOG double 自然対数 d0d1 = ln(d0d1) $fe3b __EXP double 指数関数 d0d1 = exp(d0d1) $fe3c __SQR double 平方根 d0d1 = sqr(d0d1) $fe3d __PI double 円周率 d0d1 = pi() $fe3e __NPI double 円周率乗算 d0d1 = pi(d0d1) $fe3f __POWER double 羃乗 d0d1 = pow(d0d1,d2d3) $fe40 __RND double 乱数 d0d1 = rnd() $fe41 __SINH double 双曲正弦 d0d1 = sinh(d0d1) $fe42 __COSH double 双曲余弦 d0d1 = cosh(d0d1) $fe43 __TANH double 双曲正接 d0d1 = tanh(d0d1) $fe44 __ATANH double 双曲逆正接 d0d1 = atanh(d0d1) $fe45 __ASIN double 逆正弦 d0d1 = asin(d0d1) $fe46 __ACOS double 逆余弦 d0d1 = acos(d0d1) $fe47 __LOG10 double 常用対数 d0d1 = log10(d0d1) $fe48 __LOG2 double 対数(底2) d0d1 = log2(d0d1) $fe49 __DFREXP double 仮数指数分割 d0d1,d2 = d0d1 $fe4a __DLDEXP double 仮数指数結合 d0d1 = d0d1,d2 $fe4b __DADDONE double 1 加算 d0d1 += 1.0# $fe4c __DSUBONE double 1 減算 d0d1 -= 1.0# $fe4d __DDIVTWO double 2 除算 d0d1 /= 2.0# $fe4e __DIEECNV double SHARP → IEEE d0d1 = d0d1 $fe4f __IEEDCNV double IEEE → SHARP d0d1 = d0d1 $fe50 __FVAL 文字列 → float d0 = (a0)~ $fe51 __FUSING float → 10進文字列 (a0)~ = d0,d2.d3,d4 $fe52 __STOF 10進文字列 → float d0,d2,d3 = (a0)~ $fe53 __FTOS float → 10進文字列 (a0)~ = d0 $fe54 __FECVT float → 文字列 (a0),d0,d1 = d0,d2全体桁 $fe55 __FFCVT float → 文字列 (a0),d0,d1 = d0,d2小数点桁 $fe56 __FGCVT float → 文字列 (a0)~ = d0,d2全体桁 $fe58 __FTST float 0 比較 Z,N = d0 $fe59 __FCMP float 比較 Z,C = d0-d1 $fe5a __FNEG float 符号反転 d0 = neg(d0) $fe5b __FADD float 加算 d0 += d1 $fe5c __FSUB float 減算 d0 -= d1 $fe5d __FMUL float 乗算 d0 *= d1 $fe5e __FDIV float 除算 d0 /= d1 $fe5f __FMOD float 除算の剰余 d0 %= d1 $fe60 __FABS float 絶対値 d0 = abs(d0) $fe61 __FCEIL float 小数切上 d0 = ceil(d0) $fe62 __FFIX float 整数部 d0 = fix(d0) $fe63 __FFLOOR float 小数切捨 d0 = floor(d0) $fe64 __FFRAC float 小数部 d0 = frac(d0) $fe65 __FSGN float 正負零 d0 = sgn(d0) $fe66 __FSIN float 正弦 d0 = sin(d0) $fe67 __FCOS float 余弦 d0 = cos(d0) $fe68 __FTAN float 正接 d0 = tan(d0) $fe69 __FATAN float 逆正接 d0 = atan(d0) $fe6a __FLOG float 自然対数 d0 = ln(d0) $fe6b __FEXP float 指数関数 d0 = exp(d0) $fe6c __FSQR float 平方根 d0 = sqr(d0) $fe6d __FPI float 円周率 d0 = pi() $fe6e __FNPI float 円周率乗算 d0 = pi(d0) $fe6f __FPOWER float 羃乗 d0 = pow(d0,d1) $fe70 __FRND float 乱数 d0 = rnd() $fe71 __FSINH float 正弦 d0 = sinh(d0) $fe72 __FCOSH float 双曲余弦 d0 = cosh(d0) $fe73 __FTANH float 双曲正接 d0 = tanh(d0) $fe74 __FATANH float 双曲逆正接 d0 = atanh(d0) $fe75 __FASIN float 逆正弦 d0 = asin(d0) $fe76 __FACOS float 逆余弦 d0 = acos(d0) $fe77 __FLOG10 float 常用対数 d0 = log10(d0) $fe78 __FLOG2 float 対数(底2) d0 = log2(d0) $fe79 __FFREXP float 仮数指数分割 d0,d1 = d0 $fe7a __FLDEXP float 仮数指数結合 d0 = d0,d1 $fe7b __FADDONE float 1 加算 d0 += 1.0# $fe7c __FSUBONE float 1 減算 d0 -= 1.0# $fe7d __FDIVTWO float 2 除算 d0 /= 2.0# $fe7e __FIEECNV float SHARP → IEEE d0 = d0 $fe7f __IEEFCNV float IEEE → SHARP d0 = d0 $fee0 __CLMUL signed int 乗算 (sp) *= (4,sp) $fee1 __CLDIV signed int 除算 (sp) /= (4,sp) $fee2 __CLMOD signed int 除算の剰余 (sp) %= (4,sp) $fee3 __CUMUL unsigned int 乗算 (sp) *= (4,sp) $fee4 __CUDIV unsigned int 除算 (sp) /= (4,sp) $fee5 __CUMOD unsigned int 除算の剰余 (sp) %= (4,sp) $fee6 __CLTOD signed int → double (sp)(4,sp) = (sp) $fee7 __CDTOL double → signed int (sp) = (sp)(4,sp) $fee8 __CLTOF signed int → float (sp) = (sp) $fee9 __CFTOL float → signed int (sp) = (sp) $feea __CFTOD float → double (sp)(4,sp) = (sp) $feeb __CDTOF double → float (sp) = (sp)(4,sp) $feec __CDCMP double 比較 Z,C = (sp)(4,sp)-(8,sp)(12,sp) $feed __CDADD double 加算 (sp)(4,sp) += (8,sp)(12,sp) $feee __CDSUB double 減算 (sp)(4,sp) -= (8,sp)(12,sp) $feef __CDMUL double 乗算 (sp)(4,sp) *= (8,sp)(12,sp) $fef0 __CDDIV double 除算 (sp)(4,sp) /= (8,sp)(12,sp) $fef1 __CDMOD double 除算の剰余 (sp)(4,sp) %= (8,sp)(12,sp) $fef2 __CFCMP float 比較 Z,C = (sp)-(4,sp) $fef3 __CFADD float 加算 (sp) += (4,sp) $fef4 __CFSUB float 減算 (sp) -= (4,sp) $fef5 __CFMUL float 乗算 (sp) *= (4,sp) $fef6 __CFDIV float 除算 (sp) /= (4,sp) $fef7 __CFMOD float 除算の剰余 (sp) %= (4,sp) $fef8 __CDTST double 0 比較 Z,N = (sp)(4,sp) $fef9 __CFTST float 0 比較 Z,N = (sp) $fefa __CDINC double 1 加算 (sp)(4,sp) += 1.0# $fefb __CFINC float 1 加算 (sp) += 1.0# $fefc __CDDEC double 1 減算 (sp)(4,sp) -= 1.0# $fefd __CFDEC float 1 減算 (sp) -= 1.0# $fefe __FEVARG 数値演算ドライバ種別検査 d0,d1={HS86,IEEE},{SOFT,FPCP} $feff __FEVECS 処理アドレス変更 d0 = intvcs(d0,a0) ============================================================================== ・浮動小数点データ形式 ・SHARP フォーマット(FLOAT1.X でのみ使用) 単精度(32bit) | 31 | 30 29 … 9 8 | 7 6 … 1 0 | | ↑ | 仮数部 23bit | 指数部 8bit | 仮数部の符号 倍精度(64bit) | 63 | 62 61 … 12 11 | 10 9 … 1 0 | | ↑ | 仮数部 52bit | 指数部 11bit | 仮数部の符号 ・IEEE フォーマット 単精度(32bit) | 31 | 30 29 … 24 23 | 22 21 … 1 0 | | ↑ | 指数部 8bit | 仮数部 23bit | 仮数部の符号 倍精度(64bit) | 63 | 62 61 … 53 52 | 51 50 … 1 0 | | ↑ | 指数部 11bit | 仮数部 52bit | 仮数部の符号 仕様 単精度 倍精度 正規化数の表現 -1*1.f*2・・・・ -1*1.f*2・・・・・ 非〃 -1*0.f*2・・・・ -1*0.f*2・・・・・ 表現可能な数の絶対値(概数) 正規化数最大 3.4*10・・ 1.8*10・・・ 〃 最小 1.2*10・・・ 2.2*10・・・・ 非正規化数最小 1.4*10・・・ 4.9*10・・・・ (s:仮数部の符号,f:仮数部,e:指数部) ・実際の表現方法 実数を ±(1.mmmm‥‥)*2^(±eeee‥‥) と表わす. その時先頭の符号が仮数部の符 号、mmmm‥‥ が仮数となる. 指数部は、単/倍精度で (±eeee‥‥)+$7F / (±eeee‥‥ )+$3ff を与える. これはそれぞれ 1~$fe / 1~$7fe の範囲でなければならない. 演算の結果、指数が最大で仮数が 0 ならば±∞を表わす(符号は MSB による). また、 指数が最大で仮数が 0 以外ならば非数を表わす. 指数・仮数ともに 0 の場合は、数値 0 を表わす. 特殊な実数データのフォーマット 指数 仮数 最小値<指数<最大値 任意のビットパタン 正規化数(通常) 0 All 0 以外の任意のビットパタン 非正規化数 (アンダフロー限界付近の値) 0 0 零 最大値 0 無限大 〃 All 0 以外の任意のビットパタン NAN(Not A Number) ・非数及び無限大の文字列表現 非数 '#NAN','-#NAN' 無限大 '#INF','-#INF' なお、演算においてエラーが起きた場合、返値は不定となる. ============================================================================== $fe00 __LMUL signed int 乗算 d0 *= d1 引数 d0.l 被乗数 d1.l 乗数 返値 d0.l 演算結果 CCR C : エラーの時セット ロングワード符号付き整数同士の乗算を行なう. 演算結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる. ============================================================================== $fe01 __LDIV signed int 除算 d0 /= d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果 CCR C : エラーの時セット ロングワード符号付き整数同士の除算を行なう. 除数が 0 の場合はエラーとなる. ============================================================================== $fe02 __LMOD signed int 除算の剰余 d0 %= d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果 CCR C : エラーの時セット ロングワード符号付き整数同士の除算の剰余を計算する. 除数が 0 の場合はエラーとなる. ============================================================================== $fe04 __UMUL unsigned int 乗算 d0 *= d1 引数 d0.l 被乗数 d1.l 乗数 返値 d0.l 演算結果 CCR C : エラーの時セット ロングワード符号なし整数同士の乗算を行なう. 演算結果がロングワード符号なし整数の範囲を超えた場合はエラーとなる. ============================================================================== $fe05 __UDIV unsigned int 除算 d0 /= d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果 CCR C : エラーの時セット ロングワード符号なし整数同士の除算を行なう. 除数が 0 の場合はエラーとなる. ============================================================================== $fe06 __UMOD unsigned int 除算の剰余 d0 %= d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果 CCR C : エラーの時セット ロングワード符号なし整数同士の除算の剰余を計算する. 除数が 0 の場合はエラーとなる. ============================================================================== $fe08 __IMUL unsigned int 乗算 d0d1 = d0*d1 引数 d0.l 被乗数 d1.l 乗数 返値 d0.l 演算結果の上位 4 バイト d1.l 〃 下位 〃 ロングワード符号なし整数同士の乗算を行なう. 演算結果は 64 ビットまで対応しているので、エラーは発生しない. ============================================================================== $fe09 __IDIV unsigned int 除算 d0...d1 = d0/d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果(商) d1.l 〃 (剰余) CCR C : エラーの時セット ロングワード符号なし整数同士の除算を行なう. 除数が 0 の場合はエラーとなる. ============================================================================== $fe0c __RANDOMIZE signed short 乱数初期化 seed = d0(-32768~32767) 引数 d0.l ランダム・シード -3,2768~3,2767 の範囲でランダム・シードを与え、乱数を初期化する. 引数の範囲が正しくない場合は乱数を初期化しない. ============================================================================== $fe0d __SRAND unsigned short 乱数初期化 seed = d0(0~65535) 引数 d0.l ランダム・シード 0~6,5535 の範囲でランダム・シードを与え、乱数を初期化する. 引数の範囲が正しくない場合は乱数を初期化しない. ============================================================================== $fe0e __RAND signed int 乱数 d0 = rand() 返値 d0.l 乱数(0~3,2767) ロングワード符号付き整数の乱数を返す. ============================================================================== $fe10 __STOL 10進文字列 → signed int d0 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0.l 変換されたロングワード符号付き整数 CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 文字列をロングワード符号付き整数に変換する. ============================================================================== $fe11 __LTOS signed int → 10進文字列 (a0)~ = d0 引数 d0.l ロングワード符号付き整数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 ロングワード符号付き整数を文字列に変換する. ============================================================================== $fe12 __STOH 16進文字列 → unsigned int d0 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0.l 変換されたロングワード符号なし整数 CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 16進数を表わす文字列をロングワード符号なし整数に変換する. ============================================================================== $fe13 __HTOS unsigned int → 16進文字列 (a0)~ = d0 引数 d0.l ロングワード符号なし整数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 ロングワード符号なし整数を16進数表現の文字列に変換する. ============================================================================== $fe14 __STOO 8進文字列 → unsigned int d0 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0.l 変換されたロングワード符号なし整数 CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 8進数を表わす文字列をロングワード符号なし整数に変換する. ============================================================================== $fe15 __OTOS unsigned int → 8進文字列 (a0)~ = d0 引数 d0.l ロングワード符号なし整数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 ロングワード符号なし整数を8進数表現の文字列に変換する. ============================================================================== $fe16 __STOB 2進文字列 → unsigned int d0 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0.l 変換されたロングワード符号なし整数 CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 2進数を表わす文字列をロングワード符号なし整数に変換する. ============================================================================== $fe17 __BTOS unsigned int → 2進文字列 (a0)~ = d0 引数 d0.l ロングワード符号なし整数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 ロングワード符号なし整数を2進数表現の文字列に変換する. ============================================================================== $fe18 __IUSING signed int → 10進文字列 (a0)~ = d0,d1桁 引数 d0.l ロングワード符号付き整数 d1.l 桁数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 ロングワード符号付き整数を文字列に変換する. 変換後の文字列が指定した桁 数に満たない場合は、ゼロ・サプレスを行った後で右詰めにして返す. 指定桁数より文字列が長くなる場合は、桁数を無視して必要なだけの長さの文 字列を返す. ============================================================================== $fe1a __LTOD signed int → double d0d1 = d0 引数 d0.l ロングワード符号付き整数 返値 d0/d1 変換された倍精度浮動小数点数 ロングワード符号付き整数を倍精度浮動小数点数に変換する. ============================================================================== $fe1b __DTOL double → signed int d0 = d0d1 引数 d0/d1 倍精度浮動小数点数 返値 d0.l 変換されたロングワード符号付き整数 CCR C : エラーの時セット 倍精度浮動小数点数をロングワード符号付き整数に変換する. 小数部は切り捨 てられる. 変換結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる. ============================================================================== $fe1c __LTOF signed int → float d0 = d0 引数 d0.l ロングワード符号付き整数 返値 d0.l 変換された単精度浮動小数点数 ロングワード符号付き整数を単精度浮動小数点数に変換する. ============================================================================== $fe1d __FTOL float → signed int d0 = d0 引数 d0.l 単精度浮動小数点数 返値 d0.l 変換されたロングワード符号付き整数 CCR C : エラーの時セット 単精度浮動小数点数をロングワード符号付き整数に変換する. 小数部は切り捨 てられる. 変換結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる. ============================================================================== $fe1e __FTOD float → double d0d1 = d0 引数 d0.l 単精度浮動小数点数 返値 d0/d1 変換された倍精度浮動小数点数 単精度浮動小数点数を倍精度浮動小数点数に変換する. ============================================================================== $fe1f __DTOF double → float d0 = d0d1 引数 d0/d1 倍精度浮動小数点数 返値 d0.l 変換された単精度浮動小数点数 CCR C : エラーの時セット 倍精度浮動小数点数を単精度浮動小数点数に変換する. 変換できなかった場合はエラーとなる. ============================================================================== $fe20 __VAL 文字列 → double d0d1 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0/d1 変換された倍精度浮動小数点数 d2.w 整数フラグ(文字列が10進数だった場合に有効) d3.l 整数値 (〃) CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 文字列を倍精度浮動小数点数に変換する. 文字列の先頭に"&H","&O","&B"がつ いていている場合は、それぞれ16,8,2進数で表現されているものと扱う. 文字列が10進数だった場合、返値として d2,d3 が有効になる. 文字列が整数 でかつロングワード符号付き整数で表現可能な場合、整数フラグ d2 は -1 に なり d3 にはその整数値が入る. それ以外の場合は d2 = 0 になる. ============================================================================== $fe21 __USING double → 10進文字列 (a0)~ = d0d1,d2.d3,d4 引数 d0/d1 倍精度浮動小数点数 d2.l 整数部の桁数 d3.l 小数部の桁数 d4.l 属性 bit 6 正数の場合スペースを、負数の場合"-"を最後尾に付加する bit 5 正数の場合"+"を、負数の場合"-"を最後尾に付加する bit 4 正数の場合"+"を先頭に付加する bit 3 指数形式で表現する bit 2 整数部分を3桁ごとに","で区切る bit 1 先頭に"\"を付加する bit 0 整数部の指定桁数に満たない部分(左側)を"*"で埋める (通常はスペース) a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 倍精度浮動小数点数を属性 d4 で指定した形で文字列に変換する. 属性は各ビットをセットすることで、その機能が有効になる. 複数のビットを セットすることは可能だが、矛盾する設定を行なってはいけない. ============================================================================== $fe22 __STOD 10進文字列 → double d0d1,d2,d3 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0/d1 変換された倍精度浮動小数点数 d2.w 整数フラグ d3.l 整数値 CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 文字列を倍精度浮動小数点数に変換する. 文字列が整数で、かつロングワード符号付き整数で表現可能な場合、整数フラ グ d2 は -1 になり d3 にはその整数値が入る. それ以外の場合は d2 = 0 に なる. ============================================================================== $fe23 __DTOS double → 10進文字列 (a0)~ = d0d1 引数 d0/d1 倍精度浮動小数点数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 倍精度浮動小数点数を文字列に変換する. ============================================================================== $fe24 __ECVT double → 文字列 (a0),d0,d1 = d0d1,d2全体桁 引数 d0/d1 倍精度浮動小数点数 d2.b 全体の桁数 a0.l バッファのアドレス 返値 d0.l 小数点の位置 d1.l 符号(0:正 1:負) (a0)~ 変換された文字列 倍精度浮動小数点数を全体の桁数を指定して文字列に変換する. ============================================================================== $fe25 __FCVT double → 文字列 (a0),d0,d1 = d0d1,d2小数点桁 引数 d0/d1 倍精度浮動小数点数 d2.b 小数点以下の桁数 a0.l バッファのアドレス 返値 d0.l 小数点の位置 d1.l 符号(0:正 1:負) (a0)~ 変換された文字列 倍精度浮動小数点数を、小数点以下の桁数を指定して文字列に変換する. ============================================================================== $fe26 __GCVT double → 文字列 (a0)~ = d0d1,d2全体桁 引数 d0/d1 倍精度浮動小数点数 d2.b 全体の桁数 a0.l バッファのアドレス 返値 d0.l 小数点の位置 d1.l 符号(0:正 1:負) (a0)~ 変換された文字列 倍精度浮動小数点数を、全体の桁数を指定した浮動小数点表記または指数表現 に変換する. 負数の場合は文字列の先頭に"-"が付加される. 通常は浮動小数 点表記に変換されるが、桁数 d2 で表現できない場合に指数表現に変換される. ============================================================================== $fe28 __DTST double 0 比較 Z,N = d0d1 引数 d0/d1 倍精度浮動小数点数 CCR Z : d0/d1 が 0 の時セット N : d0/d1 が負数の時セット d0/d1 で与える倍精度浮動小数点数と 0 を比較し、結果をフラグで返す. ============================================================================== $fe29 __DCMP double 比較 Z,C = d0d1-d2d3 引数 d0/d1 被比較数 d2/d3 比較数 CCR N : 比較した結果が負数の時セット Z : 〃 0 の時セット C : ボローが発生した時セット 倍精度浮動小数点数同士を比較する. 被比較数 d0/d1 から比較数 d2/d3 を引 いた結果がフラグにのみ返される. フラグの結果によって次のような関係を導き出すことが出来る. d0/d1 > d2/d3 C=0,Z=0,N=0 d0/d1 = d2/d3 C=0,Z=1,N=0 d0/d1 < d2/d3 C=1,Z=0,N=1 ============================================================================== $fe2a __DNEG double 符号反転 d0d1 = neg(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 倍精度浮動小数点数の符号を反転する. ============================================================================== $fe2b __DADD double 加算 d0d1 += d2d3 引数 d0/d1 被加算数 d2/d3 加算数 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 倍精度浮動小数点数同士を加算する. ============================================================================== $fe2c __DSUB double 減算 d0d1 -= d2d3 引数 d0/d1 被減算数 d2/d3 減算数 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 倍精度浮動小数点数同士を減算する. ============================================================================== $fe2d __DMUL double 乗算 d0d1 *= d2d3 引数 d0/d1 被乗数 d2/d3 乗数 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 倍精度浮動小数点数同士を乗算する. ============================================================================== $fe2e __DDIV double 除算 d0d1 /= d2d3 引数 d0/d1 被除数 d2/d3 除数 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 倍精度浮動小数点数同士を除算する. ============================================================================== $fe2f __DMOD double 除算の剰余 d0d1 %= d2d3 引数 d0/d1 被除数 d2/d3 除数 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 倍精度浮動小数点数同士の剰余を求める. ============================================================================== $fe30 __DABS double 絶対値 d0d1 = abs(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 倍精度浮動小数点数の絶対値を求める. ============================================================================== $fe31 __DCEIL double 小数切上 d0d1 = ceil(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 d0/d1 で与えた倍精度浮動小数点数と等しいか、それ以上の最小の整数を返す. ============================================================================== $fe32 __DFIX double 整数部 d0d1 = fix(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 d0/d1 で与えた倍精度浮動小数点数の整数部を求める. ============================================================================== $fe33 __DFLOOR double 小数切捨 d0d1 = floor(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 d0/d1 で与えた倍精度浮動小数点数と等しいか、それより小さい最大の整数を 返す. ============================================================================== $fe34 __DFRAC double 小数部 d0d1 = frac(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 d0/d1 で与えた倍精度浮動小数点数の小数部を求める. ============================================================================== $fe35 __DSGN double 正負零 d0d1 = sgn(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 結果(倍精度浮動小数点数) d0/d1 で与えた倍精度浮動小数点数が正か負か 0 かを調べる. 正なら +1、負なら -1、0 なら 0 を返す. ============================================================================== $fe36 __SIN double 正弦 d0d1 = sin(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 角度(ラジアン単位)を与えて正弦を計算する. ============================================================================== $fe37 __COS double 余弦 d0d1 = cos(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 角度(ラジアン単位)を与えて余弦を計算する. ============================================================================== $fe38 __TAN double 正接 d0d1 = tan(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて正接を計算する. 結果が無限大になるような角度を与えた場合はエラーになる. ============================================================================== $fe39 __ATAN double 逆正接 d0d1 = atan(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 角度(ラジアン単位)を与えて逆正接を計算する. ============================================================================== $fe3a __LOG double 自然対数 d0d1 = ln(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット 自然対数を計算する. 引数が 0 以下の場合はエラーになる. ============================================================================== $fe3b __EXP double 指数関数 d0d1 = exp(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット 指数関数を計算する. オーバーフローが発生した場合はエラーになる. ============================================================================== $fe3c __SQR double 平方根 d0d1 = sqr(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット Z : (C = 1)引数が 0 の場合セット??? 平方根を計算する. オーバーフローが発生した場合はエラーになる. ============================================================================== $fe3d __PI double 円周率 d0d1 = pi() 返値 d0/d1 円周率 円周率を倍精度浮動小数点数の範囲内で返す. ============================================================================== $fe3e __NPI double 円周率乗算 d0d1 = pi(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット 円周率の引数倍の値を倍精度浮動小数点数の範囲内で返す. オーバーフローが発生した場合はエラーになる. ============================================================================== $fe3f __POWER double 羃乗 d0d1 = pow(d0d1,d2d3) 引数 d0/d1 被羃乗数 d2/d2 羃乗数 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 羃乗を計算する. オーバーフロー/アンダーフローが発生した場合はエラーに なる. ============================================================================== $fe40 __RND double 乱数 d0d1 = rnd() 返値 d0/d1 乱数(倍精度浮動小数点数) 倍精度浮動小数点数で 0 以上 1 未満の乱数を返す. ============================================================================== $fe41 __SINH double 双曲正弦 d0d1 = sinh(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの時セット 角度(ラジアン単位)を与えて双曲正弦を計算する. ============================================================================== $fe42 __COSH double 双曲余弦 d0d1 = cosh(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの時セット 角度(ラジアン単位)を与えて双曲余弦を計算する. ============================================================================== $fe43 __TANH double 双曲正接 d0d1 = tanh(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの時セット 角度(ラジアン単位)を与えて双曲正接を計算する. ============================================================================== $fe44 __ATANH double 双曲逆正接 d0d1 = atanh(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて逆正接を計算する. ============================================================================== $fe45 __ASIN double 逆正弦 d0d1 = asin(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて逆正弦を計算する. ============================================================================== $fe46 __ACOS double 逆余弦 d0d1 = acos(d0d1) 引数 d0/d1 角度(ラジアン単位、倍精度浮動小数点数) 返値 d0/d1 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて逆余弦を計算する. ============================================================================== $fe47 __LOG10 double 常用対数 d0d1 = log10(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット 常用対数を計算する. 引数が 0 以下の場合はエラーになる. ============================================================================== $fe48 __LOG2 double 対数(底2) d0d1 = log2(d0d1) 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット 底が 2 の対数を計算する. 引数が 0 以下の場合はエラーになる. ============================================================================== $fe49 __DFREXP double 仮数指数分割 d0d1,d2 = d0d1 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 仮数部を示す倍精度浮動小数点数 d2.l 指数部を示すロングワード符号付き整数 倍精度浮動小数点数の仮数部と指数部を分ける. 返値の d0/d1 は、引数の仮数部はそのままで指数部を 1 に変えたものを返す. ============================================================================== $fe4a __DLDEXP double 仮数指数結合 d0d1 = d0d1,d2 引数 d0/d1 仮数部データ(倍精度浮動小数点数) d2.l 指数部データ(ロングワード符号付き整数) 返値 d0/d1 引数を結合した倍精度浮動小数点数 CCR C : エラーの時セット 引数の仮数部データ d0/d1 と指数部データ d2 を結合した倍精度浮動小数点 数を返す. ============================================================================== $fe4b __DADDONE double 1 加算 d0d1 += 1.0# 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 引数の倍精度浮動小数点数に 1 を加える. ============================================================================== $fe4c __DSUBONE double 1 減算 d0d1 -= 1.0# 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 引数の倍精度浮動小数点数から 1 を引く. ============================================================================== $fe4d __DDIVTWO double 2 除算 d0d1 /= 2.0# 引数 d0/d1 倍精度浮動小数点数 返値 d0/d1 演算結果 CCR C : エラーの時セット 引数の倍精度浮動小数点数を 2 で割る. アンダーフローが発生した場合はエラーになる. ============================================================================== $fe4e __DIEECNV double SHARP → IEEE d0d1 = d0d1 引数 d0/d1 SHARP フォーマット倍精度浮動小数点数 返値 d0/d1 IEEE 〃 SHARP フォーマット倍精度浮動小数点数を IEEE フォーマットに変換する. FLOAT1.X 以外では意味を持たない. ============================================================================== $fe4f __IEEDCNV double IEEE → SHARP d0d1 = d0d1 引数 d0/d1 IEEE フォーマット倍精度浮動小数点数 返値 d0/d1 SHARP 〃 SHARP フォーマット倍精度浮動小数点数を IEEE フォーマットに変換する. FLOAT1.X 以外では意味を持たない. ============================================================================== $fe50 __FVAL 文字列 → float d0 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0.l 変換された単精度浮動小数点数 d2.w 整数フラグ(文字列が10進数だった場合に有効) d3.l 整数値 (〃) CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 文字列を単精度浮動小数点数に変換する. 文字列の先頭に"&H","&O","&B"がつ いていている場合は、それぞれ16,8,2進数で表現されているものと扱う. 文字列が10進数だった場合、返値として d2,d3 が有効になる. 文字列が整数 でかつロングワード符号付き整数で表現可能な場合、整数フラグ d2 は -1 に なり d3 にはその整数値が入る. それ以外の場合は d2 = 0 になる. ============================================================================== $fe51 __FUSING float → 10進文字列 (a0)~ = d0,d2.d3,d4 引数 d0.l 単精度浮動小数点数 d2.l 整数部の桁数 d3.l 小数部の桁数 d4.l 属性 bit 6 正数の場合スペースを、負数の場合"-"を最後尾に付加する bit 5 正数の場合"+"を、負数の場合"-"を最後尾に付加する bit 4 正数の場合"+"を先頭に付加する bit 3 指数形式で表現する bit 2 整数部分を3桁ごとに","で区切る bit 1 先頭に"\"を付加する bit 0 整数部の指定桁数に満たない部分(左側)を"*"で埋める (通常はスペース) a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 単精度浮動小数点数を属性 d4 で指定した形で文字列に変換する. ============================================================================== $fe52 __STOF 10進文字列 → float d0,d2,d3 = (a0)~ 引数 a0.l 文字列のアドレス 返値 d0.l 変換された単精度浮動小数点数 d2.w 整数フラグ d3.l 整数値 CCR C : エラーの時セット N : (C = 1)数値の記述法がおかしい場合セット V : (C = 1)オーバーフローが発生した場合セット 文字列を単精度浮動小数点数に変換する. 文字列が整数で、かつロングワード符号付き整数で表現可能な場合、整数フラ グ d2 は -1 になり d3 にはその整数値が入る. それ以外の場合は d2 = 0 に なる. ============================================================================== $fe53 __FTOS float → 10進文字列 (a0)~ = d0 引数 d0.l 単精度浮動小数点数 a0.l バッファのアドレス 返値 (a0)~ 変換された文字列 単精度浮動小数点数を文字列に変換する. ============================================================================== $fe54 __FECVT float → 文字列 (a0),d0,d1 = d0,d2全体桁 引数 d0.l 単精度浮動小数点数 d2.b 全体の桁数 a0.l バッファのアドレス 返値 d0.l 小数点の位置 d1.l 符号(0:正 1:負) (a0)~ 変換された文字列 単精度浮動小数点数を全体の桁数を指定して文字列に変換する. ============================================================================== $fe55 __FFCVT float → 文字列 (a0),d0,d1 = d0,d2小数点桁 引数 d0.l 単精度浮動小数点数 d2.b 小数点以下の桁数 a0.l バッファのアドレス 返値 d0.l 小数点の位置 d1.l 符号(0:正 1:負) (a0)~ 変換された文字列 単精度浮動小数点数を、小数点以下の桁数を指定して文字列に変換する. ============================================================================== $fe56 __FGCVT float → 文字列 (a0)~ = d0,d2全体桁 引数 d0.l 単精度浮動小数点数 d2.b 全体の桁数 a0.l バッファのアドレス 返値 d0.l 小数点の位置 d1.l 符号(0:正 1:負) (a0)~ 変換された文字列 単精度浮動小数点数を、全体の桁数を指定した浮動小数点表記または指数表現 に変換する. 負数の場合は文字列の先頭に"-"が付加される. 通常は浮動小数 点表記に変換されるが、桁数 d2 で表現できない場合に指数表現に変換される. ============================================================================== $fe58 __FTST float 0 比較 Z,N = d0 引数 d0.l 単精度浮動小数点数 CCR Z : d0 が 0 の時セット N : d0 が負数の時セット d0 で与える単精度浮動小数点数と 0 を比較し、結果をフラグで返す. ============================================================================== $fe59 __FCMP float 比較 Z,C = d0-d1 引数 d0.l 被比較数 d1.l 比較数 CCR N : 比較した結果が負数の時セット Z : 〃 0 の時セット C : ボローが発生した時セット 単精度浮動小数点数同士を比較する. 被比較数 d0 から比較数 d1 を引いた結 果がフラグにのみ返される. フラグの結果によって次のような関係を導き出すことが出来る. d0 > d1 C=0,Z=0,N=0 d0 = d1 C=0,Z=1,N=0 d0 < d1 C=1,Z=0,N=1 ============================================================================== $fe5a __FNEG float 符号反転 d0 = neg(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 単精度浮動小数点数の符号を反転する. ============================================================================== $fe5b __FADD float 加算 d0 += d1 引数 d0.l 被加算数 d1.l 加算数 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 単精度浮動小数点数同士を加算する. ============================================================================== $fe5c __FSUB float 減算 d0 -= d1 引数 d0.l 被減算数 d1.l 減算数 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 単精度浮動小数点数同士を減算する. ============================================================================== $fe5d __FMUL float 乗算 d0 *= d1 引数 d0.l 被乗数 d1.l 乗数 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 単精度浮動小数点数同士を乗算する. ============================================================================== $fe5e __FDIV float 除算 d0 /= d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 単精度浮動小数点数同士を除算する. ============================================================================== $fe5f __FMOD float 除算の剰余 d0 %= d1 引数 d0.l 被除数 d1.l 除数 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 単精度浮動小数点数同士の剰余を求める. ============================================================================== $fe60 __FABS float 絶対値 d0 = abs(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 単精度浮動小数点数の絶対値を求める. ============================================================================== $fe61 __FCEIL float 小数切上 d0 = ceil(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 d0 で与えた単精度浮動小数点数と等しいか、それ以上の最小の整数を返す. ============================================================================== $fe62 __FFIX float 整数部 d0 = fix(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 d0 で与えた単精度浮動小数点数の整数部を求める. ============================================================================== $fe63 __FFLOOR float 小数切捨 d0 = floor(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 d0 で与えた単精度浮動小数点数と等しいか、それより小さい最大の整数を返 す. ============================================================================== $fe64 __FFRAC float 小数部 d0 = frac(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 d0 で与えた単精度浮動小数点数の小数部を求める. ============================================================================== $fe65 __FSGN float 正負零 d0 = sgn(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 結果(単精度浮動小数点数) d0 で与えた単精度浮動小数点数が正か負か 0 かを調べる. 正なら +1、負なら -1、0 なら 0 を返す. ============================================================================== $fe66 __FSIN float 正弦 d0 = sin(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 角度(ラジアン単位)を与えて正弦を計算する. ============================================================================== $fe67 __FCOS float 余弦 d0 = cos(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 角度(ラジアン単位)を与えて余弦を計算する. ============================================================================== $fe68 __FTAN float 正接 d0 = tan(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて正接を計算する. 結果が無限大になるような角度を与えた場合はエラーになる. ============================================================================== $fe69 __FATAN float 逆正接 d0 = atan(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 角度(ラジアン単位)を与えて逆正接を計算する. ============================================================================== $fe6a __FLOG float 自然対数 d0 = ln(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット 自然対数を計算する. 引数が 0 以下の場合はエラーになる. ============================================================================== $fe6b __FEXP float 指数関数 d0 = exp(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット 指数関数を計算する. オーバーフローが発生した場合はエラーになる. ============================================================================== $fe6c __FSQR float 平方根 d0 = sqr(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット Z : (C = 1)引数が 0 の場合セット??? 平方根を計算する. オーバーフローが発生した場合はエラーになる. ============================================================================== $fe6d __FPI float 円周率 d0 = pi() 返値 d0.l 円周率 円周率を単精度浮動小数点数の範囲内で返す. ============================================================================== $fe6e __FNPI float 円周率乗算 d0 = pi(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット 円周率の引数倍の値を単精度浮動小数点数の範囲内で返す. オーバーフローが発生した場合はエラーになる. ============================================================================== $fe6f __FPOWER float 羃乗 d0 = pow(d0,d1) 引数 d0.l 被羃乗数 d1.l 羃乗数 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 羃乗を計算する. オーバーフロー/アンダーフローが発生した場合はエラーに なる. ============================================================================== $fe70 __FRND float 乱数 d0 = rnd() 返値 d0.l 乱数(単精度浮動小数点数) 単精度浮動小数点数で 0 以上 1 未満の乱数を返す. ============================================================================== $fe71 __FSINH float 正弦 d0 = sinh(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの時セット 角度(ラジアン単位)を与えて双曲正弦を計算する. ============================================================================== $fe72 __FCOSH float 双曲余弦 d0 = cosh(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの時セット 角度(ラジアン単位)を与えて双曲余弦を計算する. ============================================================================== $fe73 __FTANH float 双曲正接 d0 = tanh(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの時セット 角度(ラジアン単位)を与えて双曲正接を計算する. ============================================================================== $fe74 __FATANH float 双曲逆正接 d0 = atanh(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて逆正接を計算する. ============================================================================== $fe75 __FASIN float 逆正弦 d0 = asin(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて逆正弦を計算する. ============================================================================== $fe76 __FACOS float 逆余弦 d0 = acos(d0) 引数 d0.l 角度(ラジアン単位、単精度浮動小数点数) 返値 d0.l 演算結果 CCR C : エラーの時セット 角度(ラジアン単位)を与えて逆余弦を計算する. ============================================================================== $fe77 __FLOG10 float 常用対数 d0 = log10(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット 常用対数を計算する. 引数が 0 以下の場合はエラーになる. ============================================================================== $fe78 __FLOG2 float 対数(底2) d0 = log2(d0) 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット 底が 2 の対数を計算する. 引数が 0 以下の場合はエラーになる. ============================================================================== $fe79 __FFREXP float 仮数指数分割 d0,d1 = d0 引数 d0.l 単精度浮動小数点数 返値 d0.l 仮数部を示す単精度浮動小数点数 d1.l 指数部を示すロングワード符号付き整数 単精度浮動小数点数の仮数部と指数部を分ける. 返値の d0 は、引数の仮数部はそのままで指数部を 1 に変えたものを返す. ============================================================================== $fe7a __FLDEXP float 仮数指数結合 d0 = d0,d1 引数 d0.l 仮数部データ(単精度浮動小数点数) d1.l 指数部データ(ロングワード符号付き整数) 返値 d0.l 引数を結合した単精度浮動小数点数 CCR C : エラーの時セット 引数の仮数部データ d0 と指数部データ d1 を結合した単精度浮動小数点数を 返す. ============================================================================== $fe7b __FADDONE float 1 加算 d0 += 1.0# 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 引数の単精度浮動小数点数に 1 を加える. ============================================================================== $fe7c __FSUBONE float 1 減算 d0 -= 1.0# 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 引数の単精度浮動小数点数から 1 を引く. ============================================================================== $fe7d __FDIVTWO float 2 除算 d0 /= 2.0# 引数 d0.l 単精度浮動小数点数 返値 d0.l 演算結果 CCR C : エラーの時セット 引数の単精度浮動小数点数を 2 で割る. アンダーフローが発生した場合はエラーになる. ============================================================================== $fe7e __FIEECNV float SHARP → IEEE d0 = d0 引数 d0.l SHARP フォーマット単精度浮動小数点数 返値 d0.l IEEE 〃 SHARP フォーマット単精度浮動小数点数を IEEE フォーマットに変換する. FLOAT1.X 以外では意味を持たない. ============================================================================== $fe7f __IEEFCNV float IEEE → SHARP d0 = d0 引数 d0.l IEEE フォーマット単精度浮動小数点数 返値 d0.l SHARP 〃 SHARP フォーマット単精度浮動小数点数を IEEE フォーマットに変換する. FLOAT1.X 以外では意味を持たない. ============================================================================== $fee0 __CLMUL signed int 乗算 (sp) *= (4,sp) 引数 (sp).l 被乗数 (4,sp).l 乗数 返値 (sp).l 演算結果 ロングワード符号付き整数同士の乗算を行なう. 演算結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる. ============================================================================== $fee1 __CLDIV signed int 除算 (sp) /= (4,sp) 引数 (sp).l 被除数 (4,sp).l 除数 返値 (sp).l 演算結果 ロングワード符号付き整数同士の除算を行なう. 除数が 0 の場合はエラーとなる. ============================================================================== $fee2 __CLMOD signed int 除算の剰余 (sp) %= (4,sp) 引数 (sp).l 被除数 (4,sp).l 除数 返値 (sp).l 演算結果 CCR C : エラーの時セット ロングワード符号付き整数同士の除算の剰余を計算する. 除数が 0 の場合はエラーとなる. ============================================================================== $fee3 __CUMUL unsigned int 乗算 (sp) *= (4,sp) 引数 (sp).l 被乗数 (4,sp).l 乗数 返値 (sp).l 演算結果 CCR C : エラーの時セット ロングワード符号なし整数同士の乗算を行なう. 演算結果がロングワード符号なし整数の範囲を超えた場合はエラーとなる. ============================================================================== $fee4 __CUDIV unsigned int 除算 (sp) /= (4,sp) 引数 (sp).l 被除数 (4,sp).l 除数 返値 (sp).l 演算結果 CCR C : エラーの時セット ロングワード符号なし整数同士の除算の剰余を計算する. 除数が 0 の場合はエラーとなる. ============================================================================== $fee5 __CUMOD unsigned int 除算の剰余 (sp) %= (4,sp) 引数 (sp).l 被除数 (4,sp).l 除数 返値 (sp).l 演算結果 CCR C : エラーの時セット ロングワード符号なし整数同士の除算の剰余を計算する. 除数が 0 の場合はエラーとなる. ============================================================================== $fee6 __CLTOD signed int → double (sp)(4,sp) = (sp) 引数 (sp).l ロングワード符号付き整数 返値 (sp)/(4,sp) 変換された倍精度浮動小数点数 ロングワード符号付き整数を倍精度浮動小数点数に変換する. 引数は 4 バイト、返値は 8 バイトであることに注意すること. ============================================================================== $fee7 __CDTOL double → signed int (sp) = (sp)(4,sp) 引数 (sp)/(4,sp) 倍精度浮動小数点数 返値 (sp).l 変換されたロングワード符号付き整数 CCR C : エラーの時セット 倍精度浮動小数点数をロングワード符号付き整数に変換する. 小数部は切り捨 てられる. 変換結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる. 引数は 8 バイト、返値は 4 バイトであることに注意すること. ============================================================================== $fee8 __CLTOF signed int → float (sp) = (sp) 引数 (sp).l ロングワード符号付き整数 返値 (sp).l 変換された単精度浮動小数点数 ロングワード符号付き整数を単精度浮動小数点数に変換する. ============================================================================== $fee9 __CFTOL float → signed int (sp) = (sp) 引数 (sp).l 単精度浮動小数点数 返値 (sp).l 変換されたロングワード符号付き整数 CCR C : エラーの時セット 単精度浮動小数点数をロングワード符号付き整数に変換する. 変換結果がロングワード符号付き整数の範囲を超えた場合はエラーとなる. ============================================================================== $feea __CFTOD float → double (sp)(4,sp) = (sp) 引数 (sp).l 単精度浮動小数点数 返値 (sp)/(4,sp) 変換された倍精度浮動小数点数 単精度浮動小数点数を倍精度浮動小数点数に変換する. 引数は 4 バイト、返値は 8 バイトであることに注意すること. ============================================================================== $feeb __CDTOF double → float (sp) = (sp)(4,sp) 引数 (sp)/(4,sp) 倍精度浮動小数点数 返値 (sp).l 変換された単精度浮動小数点数 CCR C : エラーの時セット 倍精度浮動小数点数を単精度浮動小数点数に変換する. 引数が単精度浮動小数点数で表現できない場合はエラーとなる. ============================================================================== $feec __CDCMP double 比較 Z,C = (sp)(4,sp)-(8,sp)(12,sp) 引数 (sp)/(4,sp) 被比較数 (8,sp)/(12,sp) 比較数 返値 (sp)/(4,sp) 演算結果 CCR N : 比較した結果が負数の時セット Z : 〃 0 の時セット C : ボローが発生した時セット 倍精度浮動小数点数同士を比較する. 被比較数 (sp)/(4,sp) から比較数 (8,sp)/(12,sp) を引いた結果がフラグにのみ返される. フラグの結果によって次のような関係を導き出すことが出来る. (sp)/(4,sp) > (8,sp)/(12,sp) C=0,Z=0,N=0 (sp)/(4,sp) = (8,sp)/(12,sp) C=0,Z=1,N=0 (sp)/(4,sp) < (8,sp)/(12,sp) C=1,Z=0,N=1 ============================================================================== $feed __CDADD double 加算 (sp)(4,sp) += (8,sp)(12,sp) 引数 (sp)/(4,sp) 被加算数 (8,sp)/(12,sp) 加算数 返値 (sp)/(4,sp) 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 倍精度浮動小数点数同士を加算する. ============================================================================== $feee __CDSUB double 減算 (sp)(4,sp) -= (8,sp)(12,sp) 引数 (sp)/(4,sp) 被減算数 (8,sp)/(12,sp) 減算数 返値 (sp)/(4,sp) 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 倍精度浮動小数点数同士を減算する. ============================================================================== $feef __CDMUL double 乗算 (sp)(4,sp) *= (8,sp)(12,sp) 引数 (sp)/(4,sp) 被乗数 (8,sp)/(12,sp) 乗数 返値 (sp)/(4,sp) 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 倍精度浮動小数点数同士を乗算する. ============================================================================== $fef0 __CDDIV double 除算 (sp)(4,sp) /= (8,sp)(12,sp) 引数 (sp)/(4,sp) 被除数 (8,sp)/(12,sp) 除数 返値 (sp)/(4,sp) 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 倍精度浮動小数点数同士を除算する. ============================================================================== $fef1 __CDMOD double 除算の剰余 (sp)(4,sp) %= (8,sp)(12,sp) 引数 (sp)/(4,sp) 被除数 (8,sp)/(12,sp) 除数 返値 (sp)/(4,sp) 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 倍精度浮動小数点数同士の剰余を求める. ============================================================================== $fef2 __CFCMP float 比較 Z,C = (sp)-(4,sp) 引数 (sp).l 被比較数 (4,sp).l 比較数 CCR N : 比較した結果が負数の時セット Z : 〃 0 の時セット C : ボローが発生した時セット 単精度浮動小数点数同士を比較する. 被比較数 (sp) から比較数 (4,sp) を引 いた結果がフラグにのみ返される. フラグの結果によって次のような関係を導き出すことが出来る. (sp) > (4,sp) C=0,Z=0,N=0 (sp) = (4,sp) C=0,Z=1,N=0 (sp) < (4,sp) C=1,Z=0,N=1 ============================================================================== $fef3 __CFADD float 加算 (sp) += (4,sp) 引数 (sp).l 被加算数 (4,sp).l 加算数 返値 (sp).l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 単精度浮動小数点数同士を加算する. ============================================================================== $fef4 __CFSUB float 減算 (sp) -= (4,sp) 引数 (sp).l 被減算数 (4,sp).l 減算数 返値 (sp).l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 単精度浮動小数点数同士を減算する. ============================================================================== $fef5 __CFMUL float 乗算 (sp) *= (4,sp) 引数 (sp).l 被乗数 (4,sp).l 乗数 返値 (sp).l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア 単精度浮動小数点数同士を乗算する. ============================================================================== $fef6 __CFDIV float 除算 (sp) /= (4,sp) 引数 (sp).l 被除数 (4,sp).l 除数 返値 (sp).l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 単精度浮動小数点数同士を除算する. ============================================================================== $fef7 __CFMOD float 除算の剰余 (sp) %= (4,sp) 引数 (sp).l 被除数 (4,sp).l 除数 返値 (sp).l 演算結果 CCR C : エラーの時セット V : (C = 1)オーバーフローの場合はセット、アンダーフローの場合はクリア Z : (C = 1)0 で割った時セット 単精度浮動小数点数同士の剰余を求める. ============================================================================== $fef8 __CDTST double 0 比較 Z,N = (sp)(4,sp) 引数 (sp)/(4,sp) 倍精度浮動小数点数 CCR Z : (sp)/(4,sp) が 0 の時セット N : (sp)/(4,sp) が負数の時セット (sp)/(4,sp) で与える倍精度浮動小数点数と 0 を比較し、結果をフラグで返 す. ============================================================================== $fef9 __CFTST float 0 比較 Z,N = (sp) 引数 (sp).l 単精度浮動小数点数 CCR Z : (sp) が 0 の時セット N : (sp) が負数の時セット (sp) で与える単精度浮動小数点数と 0 を比較し、結果をフラグで返す. ============================================================================== $fefa __CDINC double 1 加算 (sp)(4,sp) += 1.0# 引数 (sp)/(4,sp) 倍精度浮動小数点数 返値 (sp)/(4,sp) 演算結果 引数の倍精度浮動小数点数に 1 を加える. ============================================================================== $fefb __CFINC float 1 加算 (sp) += 1.0# 引数 (sp).l 単精度浮動小数点数 返値 (sp).l 演算結果 引数の単精度浮動小数点数に 1 を加える. ============================================================================== $fefc __CDDEC double 1 減算 (sp)(4,sp) -= 1.0# 引数 (sp)/(4,sp) 倍精度浮動小数点数 返値 (sp)/(4,sp) 演算結果 引数の倍精度浮動小数点数から 1 を引く. ============================================================================== $fefd __CFDEC float 1 減算 (sp) -= 1.0# 引数 (sp).l 単精度浮動小数点数 返値 (sp).l 演算結果 引数の単精度浮動小数点数から 1 を引く. ============================================================================== $fefe __FEVARG 数値演算ドライバ種別検査 d0,d1=[FORMAT],[MODE] 返値 d0.l 数値演算ドライバ名(1) d1.l 〃 (2) 組み込まれている数値演算デバイスドライバの種類を調べる. d0.l d1.l FLOAT1.X 'HS86' 'SOFT' FLOAT2.X 'IEEE' 'SOFT' FLOAT3.X 'IEEE' 'FPCP' FLOAT4.X 'IEEE' 'FP20' ============================================================================== $feff __FEVECS 処理アドレス変更 d0 = intvcs(d0,a0) 引数 d0.l FETBL 番号($fe00~$fefe) a0.l 処理アドレス 返値 d0.l 前の処理アドレス d0 で指定した FE ファンクションの処理アドレスを変更する. 範囲外の番号を入れた場合、エラーとなり d0 に -1 が返る. ==============================================================================