FE ファンクションコールと FLOATn.X
FE ファンクションコール
FE ファンクションコールは命令コード $FExx で呼び出される Human68k のシステムコールの総称です。整数と浮動小数点数の演算および文字列変換を行います。
DOS コール($FFxx)と同様に F ライン例外処理ルーチンまたは特権違反例外処理ルーチンで処理されますが、FE ファンクションコールの処理ルーチンは HUMAN.SYS の中にはありません。SYS ディレクトリにある FLOAT2.X、FLOAT3.X、FLOAT4.X のいずれかを組み込むことで処理ルーチンがシステムに追加され、FE ファンクションコールが使えるようになります。
なお、XEiJ (X68000 Emulator in Java)の FE ファンクション命令は $FExx を例外を発生させる命令ではなく浮動小数点演算を行う命令として処理します。
FLOAT2.X
FLOAT2.X は整数命令を組み合わせて浮動小数点演算を行います。浮動小数点数の内部表現は IEEE フォーマットです。
FLOAT2.X はコプロセッサを必要としない標準的なドライバです。
FLOAT3.X
FLOAT3.X はアドレス $00E9E000 に配置された I/O ポートを介してコプロセッサに浮動小数点演算を依頼します。浮動小数点数の内部表現は IEEE フォーマットです。
X68000 の拡張スロットに数値演算プロセッサボード CZ-6BP1 または相当品を取り付けたとき、または、X68000 XVI のコプロソケットに 68881 または 68882 を挿したとき、または、X68000 Compact の内蔵メモリボードに 68881 または 68882 を取り付けたとき、FLOAT3.X が使えます。
FLOAT4.X
FLOAT4.X は 68020/68030/68040/68060 の浮動小数点命令を使います。浮動小数点数の内部表現は IEEE フォーマットです。
68000/68010 では使えません。
68020/68030 は浮動小数点命令をコプロセッサを用いて処理するのでコプロセッサが必要です。
68040/68060 は浮動小数点命令を自力で処理するのでコプロセッサは不要です。なお、FPSP がないと文字列変換や超越関数が動作しないので、FLOAT4.X を使うとき FPSP(060turbo.sys など)は省略できません。
FLOAT1.X
FLOAT1.X は整数命令を組み合わせて浮動小数点演算を行います。浮動小数点数の内部表現はシャープフォーマットです。
X-BASIC v1.0 は浮動小数点演算を自力で行っており、浮動小数点数の内部表現はシャープフォーマットでした。X-BASIC v2.0 から浮動小数点演算を FLOAT2.X または FLOAT3.X に任せるようになり、コプロセッサに合わせて浮動小数点数の内部表現が IEEE フォーマットに変更されました。X-BASIC v1.0 で作られた浮動小数点数のデータを X-BASIC v2.0 で処理するとき、FLOAT1.X を組み込みます。
FLOAT1.X は浮動小数点数の内部表現の変更の過渡期に必要なものとして Human68k v2.0 のシステムディスクに入っていましたが、役目を終えて廃止されました。Human68k v3.0 のシステムディスクに FLOAT1.X は入っていません。