5

Is it correct to say:

"MSX defines 4 primary slots, which can hold up to 64K each. Since the access window is 16K, every primary slot is split in 4 secondary slots."

In my understanding, the Z80 can address more than 64K using a 16K window. So, when you insert a cartridge, its address space must be temporary mapped in such a window. MSX should provide 4 real slots, able to host up to 64K each. Some of the above slots are already used by the MSX system, others are left to the user. If I insert a 64K cartridge, MSX will address its content 16K at a time by selecting the correct "secondary slot".

???

UPDATED

So, each slot can host up to 64K of addressable space. Four 16K windows allow you to select which part of the above 64K is exposed to the Z80. Well... About the secondary slots, are they something that requires external hardware, like the one shown in this picture? enter image description here And that hardware allows to address 4 different slots for each "primary" slot?

In this case, MSX1 did not include originally this solution and it has been added later with MSX2?

5
  • Since when is a window a slot? Do you mind to explain the context for above quote?
    – Raffzahn
    Sep 7, 2023 at 21:08
  • 1
    question updated.
    – ozw1z5rd
    Sep 7, 2023 at 21:41
  • I agree. The window is not a slot, however, I was asking if I was right, and it seems that I need to refine a bit the topic...
    – ozw1z5rd
    Sep 9, 2023 at 14:43
  • Jup, it became much clearer now - and I think both answers do give the right lead, don't they?
    – Raffzahn
    Sep 9, 2023 at 15:21
  • 1
    exactly, the answers helped a lot.
    – ozw1z5rd
    Sep 9, 2023 at 15:43

2 Answers 2

10

Not quite; the primary slots are the 16kb portions of the Z80’s address space, and were defined in the original MSX specification.

Secondary slots were added, and codified for the MSX2, as being an additional level of indirection, with each device that occupies a primary slot offering a memory-mapped register to control what it exposes in each slot if selected.

So e.g. the MSX might select cartridge port 1 for the primary slot starting at address 32768. That cartridge might have 256kb of storage and what it exposes at 33768 is controlled by the secondary page selection.

As of the MSX2, the amount of onboard ROM is often so expansive as to require secondary paging.

2
  • So, each slot can host up to 64K of addressable space. Four 16K windows allow you to select which part of the above 64K is exposed to the Z80. So far, 256K is somehow possible. Sub-slot works when there is a slot expander, which follows a well-defined protocol to map up to 4 slots into a single "original slot". Is that correct?
    – ozw1z5rd
    Sep 9, 2023 at 14:42
  • @ozw1z5rd yes, that sounds correct.
    – Tommy
    Sep 9, 2023 at 14:43
5

MSX1 had 4 slots, 4 pages, for a maximum total addressable space of 256 kb.

Only 64kb addressable at a time, by selecting which slot is mapped to which page. By default ROM BASIC slot is mapped to pages 0-1.

If you tried to mess with slots from BASIC you crash.

I played around with a MSX1 machine that came with 64kb. Only 32kb accessible (28kb "free") from BASIC, two of the RAM pages were totally obscured by ROM and you could access from assembly code by temporarily mapping the RAM slot over the ROM pages and then restoring before returning from the assembly routine.

There were BIOS routines for accessing memory in another slot, but if you wanted performance you could use the I/O port on some machines or write to a magical memory address in some others to quickly change which slot appeared in each page.

Reference:

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .