カテゴリ 重要度 ステータス 解決状況 登録日時 最終更新
システムコア解決済み修正済み2013-08-09 10:502013-08-12 11:30
 
テスターRobert Gault担当者Bletchソースtrs/coco3.cpp
バージョン0.149u1発生バージョン修正バージョン
修正コミットプルリク
フラグ
セット
セット詳細
 
概 要Hitachi 6309のオペーコードのうち、少なくともmuldが動作していない。
詳 細At least one opcode for the Hitachi 6309 is not working, muld. There may be others but I have not done testing. This could make NitrOS-9 6309 systems fail to function.
再現手順Run some program that will permit creating assembly language code. It might be possible to do this with the MESS debugger.
A simple test program follows.

start ldd #$10
muld #$1234
swi

The swi is the equivalent of a breakpoint. Check the registers after the muld instruction. They should be
regA =0
regB=1
regE=$23
regF=$40

The actual binary code for this program is
$CC,$00,$11,$8F,$12,$34,$3f
追加情報There are many other addressing modes for the muld opcode and they all fail.
ex
muld 1,y
muld address

The instuction should multiply the 16-bit content of regD by a 16-bit number and store the 32-bit result in regQ which consists of
regA regB regE regF. Now the one big problem is that this instruction, divd, and divq is that they are twos complement signed operations. That means for large numbers, the results are not usable. Generally one needs to insure that there is no overflow and that the numbers stay positive.

Older versions of MESS worked correctly.

I believe this should addressed in mess\src\emu\cpu\m6809\ where one of h6309.c h6309.h or h6309.ops, but I'm not sure just what code is used in coco3h emulation.
 
添付ファイル