#3 Y8950, register 19h returns 255 (fix)

SD Snatcher

Hi all!

The register 19h of the Y8950 currently returns 255 by
default, since it's not implemented. But the sane value
to return would be 0 (zero), since by returning 255 you
activate, at boot, the built-in music editor (aka
Synthe) of the Panasonic FS-CA1, which is not desirable
at all, since this prevents this MSX-Audio to be used
in games and BASIC. This pratically turns it unusable.

Yes, I know about holding the ESC key on boot, but I
also know this also disable the MSX-Audio BIOS, thus
also preventing the CA1 to be used in games and BASIC.

Please note that the (IMHO, crapy) music-editor can be
activated later on basic by typing "CALL SYNTHE".

The fix is easy. In Y8950.cc, line 1126, there is:

case 0x19: // I/O DATA TODO
result = 255;

It should be:

case 0x19: // I/O DATA TODO
result = 0;
result = 255;

After fixing this bug, there's 2 easy tests to verify
if everything is working well:

1) Boot the openmsx, and run any Compile DiskStation.
The music should be played by the MSX-Audio Instead of
the MSX-Music. It will sound a bit diferent from what
you are used to hear. You can also test Xevious,
Golvellius-2 and almost all Compile games. Aleste-2 and
RuneMaster-3 have bugs in the MSX-Audio support, so
dont worry about them.

2) Find some music written in BASIC for the MSX-Music,
like those published by MSX-Magazine. To play them on
the MSX-Audio all you need is to change the CALL MUSIC
for CALL AUDIO. The parameters are the same.
This happens because the MSX-Music BIOS is a stripped
down version of the MSX-Audio BIOS. But in the
MSX-Audio is possible to redefine any instrument and
there's also many commands for ADPCM playing/recording

Best regards to the openmsx team,


  • dvik

    dvik - 2005-03-13

    Logged In: YES

    It is bit 3 (value 0x04) that is the important bit in register 19h.
    If this bit is 1, the internal firmware is loaded and if it is 0 it is
    It would indeed be nice to have a setting to control the value
    of this bit.

    (It is implemented in blueMSX so if you need source go
    ahead but it is really simple so I'm sure you can do it without.)

  • SD Snatcher

    SD Snatcher - 2005-03-13

    Logged In: YES

    Oops. I forgot the "break;" again... :)

    Then the patch should be:

    case 0x19: // I/O DATA TODO
    result = 0;
    result = 255;

  • Manuel Bilderbeek

    Logged In: YES

    Strange. If I start openMSX (without your patch) with FS-CA1
    and Xevious, the CA1 firmware doesn't start up, but the
    Xevious cart does.
    The same happens after the patch, btw...

    Hmm, and my Golvellius 2 and Gorby copy also won't work with
    MSX-AUDIO. Unless i first do a POKE -54,35 in basic.

    HOwver, after applying the patch, the music editor is indeed
    not started anymore, but it can still be called with _SYNTHE
    and stuff.

  • Manuel Bilderbeek

    • status: open --> closed
  • Manuel Bilderbeek

    Logged In: YES

    Patch applied, but please explain my problems.

  • dvik

    dvik - 2005-03-15

    Logged In: YES

    I hope you made a config option for it so that the 'msx audio
    switch' can be both enabled and disabled.

  • dvik

    dvik - 2005-03-15

    Logged In: YES

    Manuel, you're right. It is probably good to first design a
    generic way of dealing with these types of settings before
    doing anything here. In this case it is just a matter of
    enabling disabling autoboot of the internal firmware of the
    roms and having it disabled by default is probably better (as
    suggested in this thread).

  • Nobody/Anonymous

    Logged In: NO

    Not according to what the real thing does, though...

  • Laurens Holst

    Laurens Holst - 2005-03-16

    Logged In: YES

    Er, thats me.

    As I said: not according to what the real thing does,

    Although truth is iirc that in my two real Toshiba Music
    Modules I have removed the ROM from one, and the other is
    modified to switch the behaviour of the ESC key ^_^.

  • Manuel Bilderbeek

    Logged In: YES

    Eh, it *is* according to what the real thing does, because
    the real thing has a real hardware switch to turn off
    autoboot of the software of the CA1. We just changed the
    position of the switch from hardcoded ON to hardcoded OFF.

    dvik: similar to the firmwareswitch stuffd, we could
    probably add the command from the constructor of some class.
    The problem is that we don't have a special class for the
    CA1. Maybe we should add a 'device' to the CA1's config to
    be able to add the command dynamically (from the constructor
    of that device's class.)


Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks