更新日: 2024 年 6 月 27 日
__LMOD
FE ファンクションコール名
__LMOD
FE ファンクションコール番号
$FE02
機能
32bit 符号あり整数剰余算
入力
d0.l:32bit 符号あり整数。被除数 x
d1.l:32bit 符号あり整数。除数 y
出力
d0.l:32bit 符号あり整数。余り x%y。余りの符号は被除数の符号と同じ。ゼロ除算のとき不定
フラグ
cs= エラーあり。cs,eq,vc= ゼロ除算(0%0 を含む)。オーバーフローすることはない
解説
バグ
FLOAT2.X 2.02/2.03 と FLOAT3.X 2.03 は 0%0 のとき C フラグをセットしない
X-BASIC で「print 0 mod 0」が「0による除算が行われました」ではなく「0」になる
FLOAT4.X 1.02 は -$80000000%-$00000001 が -$00000001 になる
X-BASIC で「print &H80000000 mod -1」が「0」ではなく「-1」になる
メモ
Z フラグと V フラグの変化は CZ-6BP1 のマニュアルに書かれていないが X-BASIC が使っている
FLOAT2.X 2.02/2.03 と FLOAT3.X 2.03 はゼロ除算(0%0 を含まない)のとき Z フラグをセット、V フラグをクリアする
FLOAT4.X 1.02 はゼロ除算(0%0 を含む)のとき Z フラグと V フラグをクリアする
X-BASIC で「print 1 mod 0」や「print 0 mod 0」が「0による除算が行われました」ではなく「アンダーフローしました」になる