MSX/RomWBW inception

150 views
Skip to first unread message

Henk Berends

unread,
Sep 12, 2025, 7:35:27 AM (8 days ago) Sep 12
to retro-comp
Greetings,

If you're interested in MSX and small retrocomputers...

There are hardware solutions to play MSX games and other software on Z80 or Z180 retrocomputers.. but what about the other way around, run RomWBW's CP/M ecosystem on a standard MSX2? Well, let's find out:

The video shows some early work, near the end a customized MSX1 system rom is started, this will also work on a rcbus computer with a TMS card.  I've prepared the MSX BIOS to coexist with the HBIOS proxy in upper memory but still figuring out howto support the MSX interrupt handler in lower memory.

I'll add some more explanations later, and maybe prepare a downloadable package so you can try it on your own machine, depending if there's someone who wants to test / validate the solution.

Optional homebrew MSX carts used in the video (but not required): 

/Henk

Wayne Warthen

unread,
Sep 13, 2025, 3:58:41 PM (6 days ago) Sep 13
to retro-comp
Hi Henk,

This is amazing.  I had no idea such a combination would be possible.

Thanks, Wayne

Henk Berends

unread,
Sep 14, 2025, 4:31:24 PM (5 days ago) Sep 14
to retro-comp
Hi Wayne and others,

I was also surprised how easy it was to get RomWBW working on a MSX. It sure did help that all the VDP, PSG and MSX keyboard drivers were already there.
Very happy about the result sofar, I can now use the openMSX emulator with it's very powerful integrated debugger in further software development for the platform.

Regarding the setup:
RomWBW can be used on a MSX by using a standard MSX RAM Mapper as the RomWBW memory manager. 
The RomWBW HBIOS and other banks are preloaded in RAM from a disk image with a MSX-DOS loader application.
The MSX slot system and system roms are not used and HBIOS won't need to know about it.

There is no specific add-on hardware required, just a standard MSX with at least a 512KB RAM mapper.
If I optimize the MSX loader it can work with a minimum RomWBW setup using only the standard 128KB RAM.

There's one incompatibility between MSX and HBIOS: 
On MSX the address 0xFFFF is a memory mapped I/O address for secondary slot selection, you can't use this address as RAM memory. 
In HBIOS the address 0xFFFE+0xFFFF contains the IDENT pointer that is used in external apps to validate if (the correct version of) RomWBW is installed.
Fortunately (in release 3.5.1) the IDENT pointer is also stored in address 0xFFFC.
I patched the apps to use this address instead and modified the HBIOS proxy installer to copy 2 bytes less to avoid a write to 0xFFFF.

To be able to test the configuration with a disk unit in openMSX I adapted the PPI IDE driver for the MSX BEER cart.
On real hardware I used the MSX SODA cart which was inspired by RCBUS CF card designs.
The MSX 16552 SERIAL & RAM cart was used for debugging startup issues and to test the serial console functions.

Some more changes I made to RomWBW drivers for MSX:
1. MSX keyboard driver: resolved init issue that causes the machine to hang when using real MSX hardware.
2. TMS VDP driver: used same delay time as the MSX BIOS just to be on the safe side to avoid artifacts.
3. CF IDE driver: small change to get 20% faster throughput.
4. Replaced the 8x8 font with the default MSX font (CP 437).

/Henk

Henk Berends

unread,
Sep 18, 2025, 4:39:15 AM (2 days ago) Sep 18
to retro-comp
The trial version and source modifications can be downloaded here: https://github.com/b3rendsh/cxland
I hope this is compliant with the license terms and intentions, if not please let me know if I should change anything.

/Henk

Sergey Kiselev

unread,
Sep 18, 2025, 1:31:38 PM (2 days ago) Sep 18
to retro-comp
That's pretty cool!

(and yet another thing to put on my "to do", or "to play with" list)

Wayne Warthen

unread,
Sep 18, 2025, 3:48:04 PM (2 days ago) Sep 18
to retro-comp
Hi Henk,

Very nice.  Are you interested in integrating your work into RomWBW as an official platform?  Other than the IDE and PPIDE drivers, the changes are pretty straightforward.  I don't have any issue with using $FFFC instead of $FFFE for the ident pointer as a generic change.

If you want to pursue this, it can be done as a GitHub Pull Request from you or I can do the work and credit you in the documentation.  I don't have a good way to test this though, so I would need you to do that.

Thanks, Wayne

Henk Berends

unread,
Sep 19, 2025, 2:14:32 PM (12 hours ago) Sep 19
to retro-comp

Hi Wayne,

Thank you, yes that can be a good next step.
I would like to do some more testing first with input from a few other people before sending pull requests for the driver changes or adding new drivers.
The MSX can sometimes be a seven headed dragon, although a friendly one i.e.if something works on one machine it doesn't mean it works on all machines.

If you're willing to do the ident change in the HBIOS core module that would already eliminate all the app changes (if the apps are also modified to use the standard definitions in hbios.inc).

/Henk

Wayne Warthen

unread,
Sep 19, 2025, 8:25:28 PM (6 hours ago) Sep 19
to retro-comp
Sure, I will make the app changes in the next couple of days.

You can consider contributing the rest of your work when you are comfortable with it.

Thanks, Wayne

Reply all
Reply to author
Forward
0 new messages