If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working at any time.
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 が返る. ==============================================================================