カテゴリ 重要度 ステータス 解決状況 登録日時 最終更新
その他解決済み修正済み2019-10-13 19:152020-04-08 07:47
 
テスターcmonkey担当者AJRソースyamaha/fb01.cpp
バージョン0.214発生バージョン修正バージョン0.220
修正コミットプルリク
フラグ
セット fb01
セット詳細
fb01 - FB-01 FM Sound Generator
 
概 要未マップのメモリ領域のせいでテストモードが動作しない。
詳 細At boot FB-01 checks for the System Setup + Inst. Select + Data Entry -1/No buttons being pressed and jumps to test mode code @ $32df if they are. Test mode code sets the stack to $ffd0 and uses the 48 bytes from $ffd0 to $ffff as scratch ram. Currently the only mapped RAM region in the fb01 driver is $8000-$bfff, which is realised on hardware by the 2x8Kb SRAMs. After a bit of head scratching as to what test mode was using for its RAM I've come to the conclusion that it must be using 64 bytes of the 80 bytes of DDRAM in the HD44780 as stack/scratch ram (16 bytes stack/48 bytes scratch). The other 16 bytes are used for the LCD display. The HD44870 manual clearly states, on p.10 'the area in display data RAM (DDRAM) that is not used for display can be used as general data RAM.'

It's possible to get test mode running perfectly in the current driver by editing all instructions that target $FFxx addresses above $32d7 in the rom and changing them to $BFxx (64 addresses in total need changing) to remap them into the currently mapped 16Kb SRAM region. I've attached a bsdiff patch which will do this, so you can see how test mode should look, if you don't have access to a physical FB-01.

I'm not sure whether, when the fb01 driver was originally written, test mode was ever planned to be implemented or not, and as such you may decide that this is really a BTNAB, if it wasn't, as a non-functional test mode doesn't affect how the rest of the emulated machine works. Also, I wasn't sure what category to choose for this report so if you feel 'Misc' is incorrect then please feel free to change it to something more appropriate.

As ever, many thanks to all the MAME devs for their continued hard work and support on MAME.
再現手順Hold down the keys that are mapped to the 'System Setup', 'Inst. Select' and 'Data Entry -1/No' buttons and reset the machine. This will cause a jump to test mode code at $32df but upon return from the first subroutine call code execution will resume at $0000 due to the fact that the first CALL instruction will attempt to place its return address onto a non-mapped stack so the RET instruction will pop $0000 of the (non-existent) stack into the PC and resume from there.
追加情報bsdiff patch to remap all $FFxx address references in test mode to $BFxx, to allow test mode to run successfully in current driver

SHA1 of original nec__-011_xb712c0__8709ex700__d27c256c-15.ic11 = 049c482d6c91b7e2846757dd0f5138e0d8b687f0
SHA1 of bsdiff patch = f070db69fbb71955278dfb2eda7d41c264824dca
SHA1 of patched nec__-011_xb712c0__8709ex700__d27c256c-15.ic11 = 9e849c04167e53352a9635712d95dcc5ea34ad2f
 
添付ファイルzip filefb01_test_mode_patch.bsdiff.zip (2019-10-13 19:15)