カテゴリ | 重要度 | ステータス | 解決状況 | 登録日時 | 最終更新 |
---|---|---|---|---|---|
![]() | 低 | 解決済み | 修正済み | 2017-12-24 16:26 | 2023-04-09 07:19 |
テスター | drencorxeen | 担当者 | tlindner | ソース | trs/coco3.cpp |
バージョン | 0.192 | 発生バージョン | 修正バージョン | 0.254 | |
修正コミット | 5dc861b | プルリク | #11050 | ||
フラグ | |||||
セット | |||||
セット詳細 | |||||
概 要 | MC6809オペコード0x104Fの処理が違っている。 | ||||
詳 細 | On a real m6809 CPU if you run a opcode of 0x104F the real 6809 will ignore the 0x10 opcode part of the instruction and will process the opcode of 0x4F which on a m6809 is a CLRA. Please test on coco3, coco1, coco2. | ||||
再現手順 | Created a test assembly language program to load register D with $FFFF, then issue a 6309 instruction CLRD, then after that writing register A and register B to specific memory locations and using basic to peek and print the values should yield a 0 for A and 255 for B, but the m6809 core in MAME ignores both bytes of the CLRD where it should have only ignored the 0x10. I am including a DSK image for testing. Steps once disk image is mounted in drive 0: LOAD"6309.BAS" RUN On real CoCo 1, 2, 3 with a real m6809 in it the outputs as follows: 0 255 On emulator outputs: 255 255 | ||||
追加情報 | So the 6309 instruction CLRD (0x104F) the (0x10) is ignored on a real m6809 CPU and thus it still processes the (0x4F) part of the instruction and does a CLRA. I have tested this on a system that does in fact have a real m6809 on it and thus I know in this case how the emulation for the m6809 is not handling this situation correctly. | ||||
添付ファイル | ![]() | ||||
![]() |