RAMDIS

Started by zhulien, 19:56, 29 January 17

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

zhulien

With the RAMDIS signal, the CPC Wiki has the following description against it.


"When RAMDIS="1" the internal RAM of the CPC/CPC+/KC Compact is forced inactive. e.g. a ram-expansion device would use this signal to override the internal RAM selection with the ram on the device. The internal RAM would be forced inactive, and the ram on the ram-expansion would be actived."


When I first read this, my assumption was that the RAM expansion sets RAMDIS to high when it is made active and I guess sets RAMDIS to low when it is made inactive. If you have a single RAM expansion that knows it's address space, it makes sense.


What if you have 2 RAM expansions?  One dkTronics compatible at eg: #4000-#7fff, and another at #8000-#bfff?  Or what about an active multiface 2 8kb and DkTronics 16kb at the same time?  What about doing an LDIR between two RAM expansions?  Then deactivating one and not the other?

zhulien

Another thought, is RAMDIS high or low on a per memory location read/write within the address space it is reading/writing?


i.e. such logic...


if address requested is within ram expansion address space, then set RAMDIS to high else to low?

arnoldemu

#2
Quote from: zhulien on 20:10, 29 January 17
Another thought, is RAMDIS high or low on a per memory location read/write within the address space it is reading/writing?


i.e. such logic...


if address requested is within ram expansion address space, then set RAMDIS to high else to low?
yes, I believe the expansion device (e.g. expansion memory) sets RAMDIS to high when the address lines are the ones it handles. i.e. you selected config c4, the device responds to c4 and the address is 4000-7ffff, then it sets RAMDIS. Other times it doesn't.

I am still not sure if your device needs to listen to RAMDIS or not and if it's already set do nothing.... @gerald knows more about this.

Your device needs a way to "active" it's memory range. Your device should listen to an I/O port and have an enable so it can take over the ram or not.

You are talking about RAMDIS, so are you using a Ram based device or an i/o based device.

If it's i/o you don't need RAMDIS, if it's ram based you need RAMDIS.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

gerald

RAMDIS is asserted per memory access.
The extension has to recognise when the access is mapped in it's configured space and assert it. Mapping means 64k block number and mode.
On a 64k DkTronics compatible extension this mean 0x4000-0x7FFF range when in C4-C7 mode. For 256k, you have 4 banks ...
Now, if you have more than one extension that works on the same range of 64k bank, both will assert the signal.

PulkoMandy

Hardware trick: just connect it to the same as the /CE line for your expansion RAM. When the RAM is active, you then make sure nothing else is.


It is not designed to work with multiple RAM expansions being active at the same time for the same address range. The internal expansion RAM of the 6128 manages this, but it is hard to replicate with the expansion port. Ascii schematics:



Expansion port disabling 6128 internal memory:


Exp port ==RAMDIS 1==>Internal expansion==RAMDIS 2==>Gate array and main RAM


Multiple expansion on the expansion port:


Exp.1         Exp 2
  ||           ||
  \============+====RAMDIS====>Internal expansion===>...



This second case won't work, Exp.2 and Exp.1 can't collaborate on who sets RAMDIS first. So, you would have to design your expansion so it can "chain" another one. It would have an "input" and an "output" expansion port then.

eto

Are there any other extensions that set RAMDIS or is it only ram expansions?

zhulien

Quote from: eto on 11:43, 22 September 22Are there any other extensions that set RAMDIS or is it only ram expansions?
I'm only aware of the Vidi and Multiface 2 which aren't marketed as ram expansions but sort of are - they have their own ram that can be mapped in.  The vidi gives 16kb from memory but unless there is a way to modify the circuit, it gets random junk in it always or video images if there is a video source connected.  The multiface 2 ram is more useful and is used by a couple of dev tools that are activated when the multiface button is pushed.  I am not sure if the Mirage Imager works similarly.

rpalmer

The RAMDIS signal is a common signal from all expansions.
Thus if two expansions set the signal they both expansions MAY fail to work correctly as both would likely drive the Address/Data bus.
This is not a good situation to be in (electrically) as the expansions may be affected by signals driven the wrong way.

Powered by SMFPacks Menu Editor Mod