The Z80 architecture was pretty well known and documented, and had quite an active emulator community. In fact, you still can find a lot of cross-assemblers and related toolchains in Linux distributions.
Have a look at the Debian/Ubuntu packages
There is also the package sdcc that is a C cross-compiler and associated development toolchain capable of outputting Z80 code (among other CPUs).
I found an old page talking about pasmo generating code for the native MSX BLOAD format, and about it being used to write an open source BIOS clone for MSX emulators here.
Pasmo is a Z80 cross assembler, written in standard C++ that compiles
easily in multiple platforms. Actually can generate object code in the
following formats: raw binary, Intel HEX, PRL for CP/M Plus RSX,
Plus3Dos (Spectrum +3 disk), TAP, TZX and CDT (Spectrum and Amstrad
CPC emulators tape images), AmsDos (Amstrad CPC disk) and MSX (for use
with BLOAD from disk in Basic).
Some open source works written with Pasmo.
C-BIOS: A compatible replacement for the MSX BIOS