News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_PulkoMandy

Gemini 1MB RAM expansion for Amstrad Plus

Started by PulkoMandy, 20:34, 08 October 22

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

PulkoMandy

Hello there!

Due to compatibility problems between the Amstrad Plus ASIC memory mapping and existing memory expansions, I have designed my own. 

This is a 1MB expansion with a switch to force it to 512K (in case you hit compatibility problems with something). Unlike other RAM expansions, it tracks the status of the ASIC to avoid conflicts if software attempts to map both the ASIC and expanded memory to the same address. At the moment the only software known to hit this situation is the Soundtracker DMA. But let us know if you find (or make) more :)

More info here: https://pulkomandy.github.io/shinra.github.io/gemini.html

Compatibility chart:
  • Amstrad Plus (464 or 6128): this card is for you
  • GX4000: why not, if you have soldered an expansion port
  • CPC 6128: this will work, unless software tries to unlock and map the ASIC. If there is enough demand, I can make a modified (and simpler) version of the Gemini for CPC 6128.
  • CPC 464 and 664: this will not work. Do not use this card on 464 and 664 machines. Since I don't own one of these, I don't plan to make a version of the card for them. Sorry.

Availability: for now I have built a very small batch of 3 cards, and all 3 are already sold (someone really wanted to own the one with serial number 0). But I will build more (parts are on the way) and I will take preorder to know how much I need to build.

The price is 35€ including worldwide shipping. Reduced price if you come to my home to get it, or if you buy it from me during a meeting or demoparty (but tell me beforehand, so I know how many I should bring).

Who wants one?

Any questions?

Richard_Lloyd

Oh yes, great.
Please may I order one (UK).
Thanks, Richard.
Richard
CPC464, CPC6128, PCW8512, PCW10, BSA & NSP

Kris


Maniac

What type of connector does the expansion have please? Does it use the newer MX4 connector?

PulkoMandy

Yes, it is MX4 compatible. I added a picture on the website so you can see how it looks.

Maniac

I'd be interested. How does this compare to the revised Plus memory compliant version of the X-Mem @TotO that you have in prototype please?

Just trying to work out my options as already have a X-Mem which is great but have to disconnect it at times for some Plus demos etc.

genesis8

Interested by one, I will be at the BCP 2 meeting.
____________
Amstrad news site at Genesis8 Amstrad Page

Prodatron

Sounds very good, I am interested in 2 boards!

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

Titi


HAL6128

...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

roudoudou

Quote from: PulkoMandy on 20:34, 08 October 22This is a 1MB expansion with a switch to force it to 512K (in case you hit compatibility problems with something). Unlike other RAM expansions, it tracks the status of the ASIC to avoid conflicts if software attempts to map both the ASIC and expanded memory to the same address. At the moment the only software known to hit this situation is the Soundtracker DMA. But let us know if you find (or make) more :)
CRTC³ demo need 128K and Asic management, if it not the case the demo will warn at startup

My pronouns are RASM and ACE

Neurox66

Hi Pulko,
I'm interested by one board Gemini

CPC 464+ with C4CPC and Gotek HxC USB Drive - 
CPC 6128+ with Nova, FlashGordon,AmsDap, SymbiFace III -
CPC 6128 with M4 ... and other Amstrad computers

PulkoMandy

Quote from: roudoudou on 06:19, 10 October 22
Quote from: PulkoMandy on 20:34, 08 October 22This is a 1MB expansion with a switch to force it to 512K (in case you hit compatibility problems with something). Unlike other RAM expansions, it tracks the status of the ASIC to avoid conflicts if software attempts to map both the ASIC and expanded memory to the same address. At the moment the only software known to hit this situation is the Soundtracker DMA. But let us know if you find (or make) more :)
CRTC³ demo need 128K and Asic management, if it not the case the demo will warn at startup


Thanks, apparently I can't edit my top post here? But I have updated the text on Shinra webpage.

TotO

#13
Quote from: PulkoMandy on 11:00, 10 October 22apparently I can't edit my top post here?
Sadly, it was required to avoid assholes to delete/edit posts content to put bullshits instead when they want to (rage)quit.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Cwiiis

I'd definitely like one please! (also in the UK)

entelle42


zhulien

what happens on a plus machine if a current memory expansion and asic are mapped in?

is the main issue when software is running from an external bank but needs to use asic also?

PulkoMandy

Quote from: zhulien on 16:43, 10 October 22what happens on a plus machine if a current memory expansion and asic are mapped in?

is the main issue when software is running from an external bank but needs to use asic also?
The ASIC is mapped at 4000-8000. These addresses can be used by memory expansions as well, especially in the mode where  the z80 sees a whole 64K of expanded memory and no central memory at all (the mapping for a single 16K page happens at a different address). That's for "normal" RAM expansions, there is a similar problem for Nova for example which uses a different mapping (just avoid mapping it at these addresses) 

If you have both mapped and try to write something, it will be written to the ASIC (as intended) and also written to the RAM. If you try to read, both the ASIC and the RAM will try to set the bus to different values, resulting in an electrical conflict (basically a short circuit). What exactly will happens depends on the model of RAM chip used. Maybe one of the two components will "win" and manage to drive the bus. But it will use a lot of electricity and heat up the hardware. It may be harmless if it happens for only a short time, but in theory it could damage the hardware and fry some transistors in the circuits. I don't think anyone has reported damaged hardware yet, but the two mentionned pieces of software test for this case to make sure to not trigger the "read" case too much.

zhulien

I might be thinking a bit simplisticly, but... can't the software using the ASIC and the extra memory make sure that doesn't happen and if it does, then it is considered a bug in the application?  I do get the issue though with a full alternative 64kb running code across 4000-8000 and trying to use ASIC, sounds like almost impossible - or... you need to be careful that ASIC is not paged in when code is accessed between 4000-8000.

I wonder if multiface2 has a similar issue with extra RAM in the same way, multiface 2 can be paged in at the same time - but, usually the programmer wouldn't want to do that.

PulkoMandy

Usually when writing Plus software you want to free as much of the main RAM as possible for DMA lists and videoRAM.

One way to do that is move all your code to banked memory. And to avoid switching between banks all the time, it's reasonable to use the mode where the z80 only accesses the banked memory, at all addresses.

But if you do this, and the code needs to access the ASIC registers, well, you can't. You have to unmap the expansion RAM (making sure your code is in a memory space that isn't unmapped), then do your ASIC access, and then map the expansion RAM back.

Yes, it's possible, but it's annoying, it costs CPU time (which is rather limited), it makes code larger and more complicated. Especially as the internal bank RAM of the 6128plus works perfectly, so why would you bother doing all these extra steps just to support 3rd party hardware that doesn't behave the same as the original?

Also, personally I'm more an hardware than software guy (at least for my Amstrad activities), so when I encounter a bug like this, my approach is to fix the hardware, not patch the software to avoid the bug. And it seems the developers of Soundtracker DMA and CRTC3 agree with me, and didn't think making their software compatible with misbehaving memory expansions was worth their efforts. But if you want to take a different way, feel free to do so! I'm sure people who own such memory expansions will be happy to have patched software available?

TotO

#20
Very strange point of view for a hardware guy to think the way is to fix the hardware than to patch a software. In fact, you fix nothing but asking peoples to buy a new hardware because a programmer do not want to make a software compatible with the existing hardwares already owned by hundreds people. Worst, when a way to make it working properly exist, but instead of testing to support it, it is tested to make it not supported.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

eto

How does the ASIC avoid this for the internal second bank? Does it just not send the CAS1 signal, so the bank remains inactive?

andycadley

Quote from: eto on 19:26, 10 October 22How does the ASIC avoid this for the internal second bank? Does it just not send the CAS1 signal, so the bank remains inactive?
Yes.

Internal RAM on a 6128+ (or internal expansions on a 464+) behave correctly and don't update RAM when the ASIC registers are paged in.

You can work around it in software, but having to switch back to the standard 64K banking arrangement every time you page the ASIC in is a massive PITA and slows down things you might want to do like palette switches on a raster interrupt because of all the overhead.

PulkoMandy

Quote from: TotO on 19:20, 10 October 22Very strange point of view for a hardware guy to think the way is to fix the hardware than to patch a software. In fact, you fix nothing but asking peoples to buy a new hardware because a programmer do not want to make a software compatible with the existing hardwares already owned by hundreds people. Worst, when a way to make it working properly exist, but instead of testing to support it, it is tested to make it not supported.
I don't ask anything from anyone. I made this card for myself mainly. If other people want it I'm happy to build a few more. If they don't need it, I'm equally happy to spend my time on something else.

You can bring the concern to the authors of software that decided to follow the behavior of the original machine and exploit it the way it was designed, if you think they are doing it wrong, but that's not my problem.

TotO

Quote from: PulkoMandy on 22:33, 10 October 22I don't ask anything from anyone. I made this card for myself mainly. If other people want it I'm happy to build a few more. If they don't need it, I'm equally happy to spend my time on something else.
That is not the subject at all. Everybody is free to build expansions. (you are kicking in touch)

Quote from: PulkoMandy on 22:33, 10 October 22it seems the developers of Soundtracker DMA and CRTC3 agree with me, and didn't think making their software compatible with misbehaving memory expansions was worth their efforts.
I'm answering to that, because it show you are thinking like a software guy and not an hardware guy. (in addition to denigrate the other expansions)

Quote from: PulkoMandy on 22:33, 10 October 22You can bring the concern to the authors of software that decided to follow the behavior of the original machine and exploit it the way it was designed, if you think they are doing it wrong, but that's not my problem.
That is just their point of view seeing the CPC/Plus like a stock machine without any expansion connected, neither a way to do thing like the computer was designed at all. (partial address decoding)






"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Powered by SMFPacks Menu Editor Mod