Proof that fMSX does not emulate the Turbo R
Responding to 188.8.131.52's recent edit to shift fMSX's support for the Turbo R from 'x' to '~' (i.e. from 'no' to 'no comment'):
One of the determinative differences of the Turbo R is a new CPU, the R800. Amongst other things, it introduces new operations. Amongst those are MULU[B/W] which have encodings ED C1, ED C3 and ED F3.
Get the fMSX source code from https://fms.komkon.org/fMSX/#Downloads. Open it up. The only CPU emulation included is named 'Z80' and is in its own top-level folder. Open that up. Open Z80.c and scroll to line 331. Note that no special meaning is ascribed to operations C1, C3 or F3 — they've merely named with the boilerplate DB_C1, DB_C3 and DB_F3.
Open CodesED.h to see all implemented ED instruction codes. Notice that DB_C1, _C3 and _F3 are not implemented; multiplies are not implemented at all.
Switch back to Z80.c and check out the function CodesED on 415, which is the dispatcher for instructions starting in ED. Notice that anything not implemented in CodesED.h ends up in a trap for bad operations.
The R800 also performs all the Z80 instructions, but with different numbers of clock cycles compared to the Z80.
Being a very primitive emulator, fMSX processes instructions atomically and advances time according to a list of the cycle lengths of each instruction. You'll find those from line 16 of Tables.h. Notice that there are no alternative tables for the R800.
- does not implement the R800's extra instructions; and
- does not have any means to vary instruction lengths in order to act a bit more like an R800.
Therefore: fMSX does not emulate the R800 CPU.
Therefore: fMSX does not implement the Turbo R.
Which isn't a problem, because it doesn't claim to.
There's no ambiguity here, no need to claim otherwise in the article.
- I don't have a proof that fMSX doesn't support TurboR. No --> No comment might be better. --184.108.40.206 (talk)
- Yeah, I'm actually the author of CLK and that big 'x' for recommended slightly breaks my heart. Not so much here because all the other emulators have better platform coverage than I do (and that's why I added the MSX 1/2/2+/TurboR columns, for full disclosure), but on other machines. The ZX81 especially grates, mine being the only listed emulator that actually runs at the same speed as the original machine. But rants aside, as I understand it, the 'x' is really not meant to be a negative thing. It's just literally whether enough editors are willing to vouch for a thing. In my case, as a Mac emulator only, not enough editors can even use the thing. — Tommy (talk) 14:08, 6 November 2018 (EST)
- Reply to above small comment from new user. What are you talking about? What OS? I think you meant to put this in the main page's talk page, not this MSX-specific talk page.
- Tommy, ah nice. Thanks for improving the MSX page. Yeah, I agree with you, I rushed when putting some specific Panasonic MSX-based stuff on the page (as there were emulators for them) but I wished for it to be separate from the MSX models list. Looks good in the new sector. Although, if you see the pattern in many other pages here, then the users like to put in filters for mobile emulators and emulators that run on actual consoles. But it's up to you and it may depend on if others want to see a mobile filter in the emulators chart.
- And congratulations on your continued work on CLK. Thanks for keeping it open-source, I think it's wonderful that its ZX emulation speed is the same as the machine and surprising that it's the only known emulator to do so. (ObiKKa, Nov-8-2018).
If fMSX is 6.0, it will emulate TurboR in the future.