BMMS (Bigger Memory Mapper Selector)

Pagina 5/5
1 | 2 | 3 | 4 |

Van saccopharynx

Master (135)

afbeelding van saccopharynx

24-12-2018, 02:28

Hey Grauw,

Thanks a lot for the clarification!!! So in this case, it is not 'exactly' true that some MSX machines block external cartridge slots. If these slots were actually blocked, it would not be possible to read any bit. It seems that what is actually blocked is certain number of register bits of an external mapper. Is that right?

Van Grauw

Ascended (8398)

afbeelding van Grauw

24-12-2018, 03:00

No, it is exactly true. The bits being returned are from the internal mapper circuitry. Whatever the external slot returns is ignored. (Whether it is actually blocked or due to a bus conflict is unknown.)

Note that the mapper circuit is just a register with 2 to 8 bits of capacity. How much RAM is actually connected is a separate thing. The mapper circuit can store more bits than there is memory connected, as is e.g. the case on the turboR ST (5 bits (512K) vs. 256K memory). That’s also why upgrading the ST’s internal memory to 512K is easy and upgrading it to more is not, because the mapper doesn’t support it.

Van saccopharynx

Master (135)

afbeelding van saccopharynx

24-12-2018, 04:30

Grauw wrote:

No, it is exactly true. The bits being returned are from the internal mapper circuitry. Whatever the external slot returns is ignored. (Whether it is actually blocked or due to a bus conflict is unknown.)

Note that the mapper circuit is just a register with 2 to 8 bits of capacity. How much RAM is actually connected is a separate thing. The mapper circuit can store more bits than there is memory connected, as is e.g. the case on the turboR ST (5 bits (512K) vs. 256K memory). That’s also why upgrading the ST’s internal memory to 512K is easy and upgrading it to more is not, because the mapper doesn’t support it.

That's right, I agree. I also understand that the mapper circuit could store more bits than the necessary to address the actual RAM of the internal mapper. However, the wiki specification talks about blocking, not ignoring:

"Additionally some MSX machines block external cartridge slots from responding to I/O read requests to the mapper ports and other system ports. This is for example the case on Panasonic MSX2+ models and the Turbo R ST / GT. "

So to me, it is not yet clear why this is true. Blocking the responses to I/O read requests is understood like: "no matter what the external mapper returns because no response reaches the mapper circuit". However, if a game that uses 512K can be loaded and played successfully, the second 256K of the external mapper are still addressable, so the responses are not being blocked.

Van gdx

Prophet (2981)

afbeelding van gdx

24-12-2018, 12:02

I added the MSX-DOS1 version on GitHub.

https://github.com/gdx-msx/BMMS/tree/master/v0.30

Turbo R is not yet supported.

Grauw wrote:

That’s also why upgrading the ST’s internal memory to 512K is easy and upgrading it to more is not, because the mapper doesn’t support it.

Internal memory of the ST can be upgraded easly to 512K because RAM locations are present but a bit is missing to handle the registers in reading. Both Turbo Rs can be upgraded up to 1024kB if we add Missing bits for reading registers. By cons we can not add more because of Panasonic Mapper.

Van Grauw

Ascended (8398)

afbeelding van Grauw

24-12-2018, 13:20

saccopharynx wrote:

"Additionally some MSX machines block external cartridge slots from responding to I/O read requests to the mapper ports and other system ports. This is for example the case on Panasonic MSX2+ models and the Turbo R ST / GT. "

So to me, it is not yet clear why this is true. Blocking the responses to I/O read requests is understood like: "no matter what the external mapper returns because no response reaches the mapper circuit". However, if a game that uses 512K can be loaded and played successfully, the second 256K of the external mapper are still addressable, so the responses are not being blocked.

Its say the I/O read response is blocked, so only the read of the four I/O registers. Writes (segment select) and memory reads go through just fine. The external memory itself is still perfectly usable in its entirety, fully addressable. If you put two 2 MB mappers into a turboR or any MSX, DOS2 will detect them and programs like e.g. VGMPlay can use it all. Reading the I/O registers is not reliable, however software is not supposed to do that anyway, it’s nonstandard and noninteroperable (as you experienced).

Your phrase “no matter what the external mapper returns because no response reaches the mapper circuit” suggests that there is a single mapper circuit which the external mapper needs to communicate with. That’s incorrect, the external mapper has a mapper circuit of its own (that’s what gives the response in the first place), its I/O register read response does not need to “reach” the internal mapper circuit, but it needs to reach the CPU. Which it doesn’t in these machines, so it’s blocked.

gdx wrote:

Internal memory of the ST can be upgraded easly to 512K because RAM locations are present

That there’s a location on the board for RAM is another reason why it’s easy, but I was referring to the mapper having support for that amount, and that generally expanding RAM to the amount supported by the mapper is easy, expanding it by more requires you to add logic ICs to extend the mapper.

Van zeilemaker54

Master (246)

afbeelding van zeilemaker54

25-12-2018, 11:45

NYYRIKKI wrote:
zeilemaker54 wrote:

A normal MSX-DOS2 always selects the last memorymapper found with at least 96 KB. The memory mapper search begins at slot 0 through slot 3. So if a memorymapper of 128 KB is in slot 3-3, that mapper is always selected, even if a memorymemory of 4096 KB is in slot 1.

This is not true. You can easily verify on an emulator that the largest one is always selected as primary mapper (in case of MSX2)

You are right. It seems that I have made a mistake in the dos 2.31 source tree in msxsyssrc which let to this false statement.

Van gdx

Prophet (2981)

afbeelding van gdx

28-12-2018, 15:13

Finally, I will let the Memory Mapper search disabled when the 2.3x Disk-ROM is installed (on Turbo R) because of the pages that are protected by the hardware. I think only Turbo R does that, does it?

Van gdx

Prophet (2981)

afbeelding van gdx

05-01-2019, 15:14

I added a little tool to display the bigger mapper size and its location. (It only does that)

https://github.com/gdx-msx/DBMM

The v0.4 of BMMS will come soon...

Van gdx

Prophet (2981)

afbeelding van gdx

10-01-2019, 11:58

I updated to the v0.4 and added the MSX-DOS(1) version.

https://github.com/gdx-msx/BMMS/tree/master/v0.4

It doesn't works on MSX2s Daewoo. Does somebody have an idea? BMMS crashes when interrups are reestablished.

https://github.com/gdx-msx/BMMS/tree/master/v0.4

Van gdx

Prophet (2981)

afbeelding van gdx

11-01-2019, 13:26

I tested with many machines on Open-MSX (COMMAND.COM v1.11 and MSX-DOS.SYS v1.03) with a additional mapper. Below are problems encountered.

  • Sakhr AX-170: Interfaces Sony HBD-50 and HBD-F1 do not work !
  • Daewoo CPC-400/400S: The MSX crashes when MSX-DOS starts (because the stack increases at each interruption). This MSX may have a bug in its Disk-ROM.
  • Gradiente Expert DDplus: I cannot try because the MSX can boot when I insert a Memory Mapper. This MSX probably needs a mapper that initializes its segments to work.

I think that BMMS works on all European and Japanese MSXs.

PS: I uptated the documentation on Github. BMMS should soon be also available to downloads here.

Pagina 5/5
1 | 2 | 3 | 4 |