Hi,
I've been searching for available options for C development on MSX. I'm interested in accessing "advanced" MSX stuff from C (by "advanced" I mean V9938, V9958, V9990 graphics, as well as the memory mapper, and being able to generate "megarom" cartridges with more than 32KB, accessing FM and SCC sound, etc…)
Yes, I assume nobody has written C code for doing such stuff, so I guess I'd have to write it myself (please correct me if I'm wrong).
Also please, take a look at the compilers I found, and make any recommendations or comments that you consider helpful:
1- SDCC: Looks good. There're sites discussing how to use it for MSX. Perhaps the worst points are that you cannot use its floating point libs due to not being able to control the physical address of such libs (at least according to the info about building 32KB ROM cartridges found here), and also another "bad" point is that the most useful info about SDCC (covering V9990 and other cool stuff) is in Japanese, and I don't understand…
2- z88dk: No idea about how it compares to SDCC. Didn't find much MSX-related info about z88dk.
3- MSX-C: IIRC, it's a ported CP/M compiler, so it won't generate Z80 code, but 8080, which works fine on the MSX but perhaps not as optimized as SDCC or z88dk, which generate full Z80 code. The good point is that its builtin C library seems to be useful, but it doesn't look perfect either: I don't see functions for controlling the memory mapper, nor for MSX2+ graphics, nor for V9990… so it's not a great advantage over SDCC because I'd have to code such functions anyway.
4- BDS-C: It seems to be very similar to MSX-C, but without the MSX C library: it's also 8080 CP/M.
5- Hi-Tech Cross Compiler: Considering that all the previous compilers are freely available, and also taking into account that this compiler doesn't ship with any MSX library at all, I don't see any point in paying for it, honestly.
I don't know if I forgot any compiler, or if you've any additional suggestion to do.
Please feel free to comment. Thanks a lot!