> THE MAPPER (hardware)
> ==========
> status: unfinished
> version: 1.0
>
> The first 64kB of the Z380's address range should be mapped just like
> normal MSX mappers (controlled through I/O ports FC, FD, FE and FF).
> The maximum number of RAM for this adress range will then ofcourse be
> the first 4 MB of the total RAM. The rest of the RAM _could_ be used
> linear-only, but I think it's for a future multitasking OS' sake best to
> also use a mapper for that.
> I suggest to divide the RAM in 64kB segments. The pages could then be
> controlled through I/O ports 10000 - 1FFFF, which each can have a 16-bit
> segment number varying from 0 to FFFF in it, hence resulting in a total of
> 4 GB max. mappersize. So the 'user' (read: program) has the choice to
> use mapping or map all RAM linear.

Since the way I described above will result in problems with the I/O
devices, it is not a possible solution.

There is only one option. Simply using all RAM linear is not one of them.
The 'future multitasking OS' will than simply have to require that only
relative calls and jumps are being made. However, it is not possible,
because there's no relative LD (nnnn),HL or something like that.

So we will have to use some kind of controller. Damn, that makes it more
complicated. I propose something like this:

Mapper I/O Device ID: 0001
I/O port 0 (16-bit): RAM area select (auto increment)
I/O port 1 (16-bit): Mapperpage select

So the mapper can be controlled by writing values to I/O ports #00010050 and
#00010060. This can then be done using OTIR(W), or a 24-bits DDIR IB : OUTAW
(nn),A...

Concerning the mapper controller, it will need 64k of internal RAM... That's
a big contra... I don't know if that's possible. Anyone any suggestions???
For example, use the uppermost 64k of the RAM to store this information???
Or only map the first 16 MB and leave the rest linear??? (then you will only
need 256 internal memory cells).

Let me know...


> I think the Basic RAM-setup should be entirely linear (0-3 in FC-FF and
> 0000-FFFF in 10000-1FFFF). It's the task of the BIOS to take care of this.
>
> In a new OS (or extension of an old OS), there should be functions
> available like "allocate x segments" and "enable x segments starting with
> segment y at adress z and following". You might think this requires alot
> of instructions to set up all this RAM, but the Z380 has special I/O
> instructions which can write numerous values to numerous I/O ports.
> Some kind of LDIR, but then for I/O ports.

I was wrong here. This instruction can only be used with internal I/O.


~Grauw


--
>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<
 email me: [EMAIL PROTECTED] or ICQ: 10196372
      visit my homepage at http://grauw.blehq.org/
>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<





****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED]
and put "unsubscribe msx [EMAIL PROTECTED]" (without the quotes) in
the body (not the subject) of the message.
Problems? contact [EMAIL PROTECTED]
More information on MSX can be found in the following places:
 The MSX faq: http://www.faq.msxnet.org/
 The MSX newsgroup: comp.sys.msx
 The MSX IRC channel: #MSX on Undernet
****

Reply via email to