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?
Oh yes, great.
Please may I order one (UK).
Thanks, Richard.
Hi Pulko,
Interested in ;)
What type of connector does the expansion have please? Does it use the newer MX4 connector?
Yes, it is MX4 compatible. I added a picture on the website so you can see how it looks.
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.
Interested by one, I will be at the BCP 2 meeting.
Sounds very good, I am interested in 2 boards!
I am interested by 1 one
One board for me! Thank you.
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
Hi Pulko,
I'm interested by one board Gemini
Quote from: roudoudou on 06:19, 10 October 22Quote 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.
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.
I'd definitely like one please! (also in the UK)
Hi, I'm interested by one unit. Tx
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?
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.
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.
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?
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.
How does the ASIC avoid this for the internal second bank? Does it just not send the CAS1 signal, so the bank remains inactive?
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.
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.
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)
Then I don't see where there is an issue. I am not denigrating anyone or anything, I have a compatibility problem, I found it interesting, I found a way to solve it. And I learnt a few things in the process about how the ASIC lock works and how to implement it using simple logic.
I just explained why and how the existing expansions don't behave the same as the internal RAM of the 6128+. I don't think this is denigrating, just looking at the facts. It would be denigrating if I said it was caused by incompetence of the designers, but I don't think this is the case. Either they couldn't know (for the DK Tronics which was designed before the Plus machines) or they decided to do it this way for a variety of possible reasons (they don't agree with me on what the correct behavior is, they wanted to simplify their hardware and save costs, they don't care about Plus machines, ...). That's all. These concerns are valid, I could do the expansion with just 3 chips instead of 5 if I didn't need to handle the ASIC lock and unlock. But that's not what I wanted to do.
Now everyone can decide which expansion they want to get, mine, yours, someone else's or none at all. But I made clear what the limitations (or call it design choices if you want) of each solution are.
Honestly, I had no idea about this until a few days ago. I never used a RAM extension on my Plus but I would be furious if it would be harmed because there is no warning, although software or hardware developers were aware of it. It seems it's widely known within the expert community, but it's not mentioned on any WIKI page about RAM extensions and when looking at currently available RAM extensions they also often mention the Plus although it's clearly not (fully) true.
If such a situation is known, it has to be handled. Until now it could only be done by software, PulkoMandy now offers an option to do it in hardware - but still the software needs to avoid the situation if incompatible hardware is detected.
With the new extension one can at least be sure that there is no longer a risk of doing harm to your computer, because someone forgot to handle it.
Old memory expansions not being totally compatible with Amstrad Plus is an issue known for ages. When plugged on a Plus, they prevent most 128K softwares using ASIC from working (especially demos). It is obviously not the fault of the software coders since their software works just fine with the internal 64K expansion memory (which is not flawed, because Amstrad did it with ASIC in mind).
About patching the softwares or asking for developers to take care about unadapted expansion memory (in the way these expansions were designed for CPC, not for Plus), you should keep in mind that under some circumstances, it is just not even possible, especially when dealing with 64K paged mode (&C2); and like explained previously, in any case it is at cost of complexity and bigger/slower code (notably when dealing with interrupts and asynchronous stuff). So no, it has not to be handled in a mandatory way, it just might be (kindly) handled if possible without adding too much code/complexity.
As a conclusion, all Plus owners willing to expand memory should now use this new Gemini board instead of old ones designed without ASIC in mind (such as dk'tronics, Symbiface II or whatever).
@PulkoMandy It is not because you handle RMR2
(or a trick you have found) than others are misbehaving memory expansions. First because some was designed before the Plus. Second, because some others already support it or offer an alternative hardware way to be compatible. Again, it is not a problem that you are offering your RAM board. I'm pointing the fact that programmers making new softwares requiring the ASIC paging can do a minimum to be compatible with hundred of expansions already owned by users instead of ignoring them.
@eto Using a CPC memory expansion on a Plus do not damage anything. At worst, with some new programs using the ASIC paging like on a stock machine and not taking care about the existing hardware, the solftware can have bugs and may require to be disabled.
@OffseT I agree, Plus users requiring a memory expansion are welcome to use the Gemini board. And programmers are welcome to support the existing hardware instead of discarding them intentionaly, when there is no drawback at all. (SoundTracker DMA with the X-MEM for example)
Quote from: TotO on 12:17, 11 October 22@OffseT I agree, Plus users requiring a memory expansion are welcome to use the Gemini board. And programmers are welcome to support the existing hardware instead of discarding them intentionaly, when there is no drawback at all. (SoundTracker DMA with the X-MEM for example)
Well, there was no intention to discard X-Mem at all. At start, the Soundtracker DMA just checks that the memory has the expected behavior and refuses to execute if it is not the case. Not doing this test would have made the user think that it works whilst silently and randomly trashing memory in background, making the music auto-destroying itself while playing... it was much better to block program start. :)
About making Soundtracker DMA to work with CPC memory expansion used on Plus, typically, it was considered. But it was too memory hungry and CPU intensive, notably because it added management during interrupts (which are tricky when dealing with DMA). Since no memory expansion was required (Soundtracker DMA works on a stock 6128plus), it was a better option to ask the user to remove the incompatible memory card. It has nothing to do with X-Mem, really, the same issue applies with dk'tronics (which is actually the one we have) and all other old memory expansions.
Quote from: OffseT on 12:03, 11 October 22old memory expansions not being totally compatible with Amstrad Plus is an issue known for ages.
I would say that it is known, but just to a small group of experts and enthusiasts, not to the wide public. And it's not even easy to find it, if you don't know what and where to look for.
I'm following most discussions and stuff around the CPC/Plus for 2.5 years now and I was not aware of it. It's not on any page I have ever seen about the Plus. It's not on any Wiki page about any of the RAM extensions. Revaldinhos extensions are documented to be Plus compatible - and those people that build and sell it, put exactly that in the offer description.
If somebody could point me to forum thread or any other page that documents this properly, I would update the WIKI pages about RAM extensions and the Plus, so that at least we limit the moment of surprise to anyone, who was not closely following this forum for the last 10 years.
Quote from: TotO on 12:17, 11 October 22Using a CPC memory expansion on a Plus do not damage anything.
Pulkomandy pointed out, that there is a chance of damaging the hardware, if the code would access paged RAM for too long as ASIC and RAM would put their data on the bus. Even if that would only happen in rare cases (like bugs), it should not be ignored.
Even if there is no risk of hardware damage, software should deal with it as RAM extensions are widely used. I would not request any developer to "support" incompatible RAM, but at least, like (I think) Soundtracker DMA and CRTC3 are doing it, they should output a warning or stop execution if incompatible RAM is detected.
Quote from: OffseT on 12:55, 11 October 22Well, there was no intention to discard X-Mem at all. At start, the Soundtracker DMA just checks that the memory has the expected behavior and refuses to execute if it is not the case.
Before the check was added, SoundTracker DMA worked with a RAM board. If the test is removed, it works again. Anyway the X-MEM offers a known compatibility mode for Plus that is not used by SoundTracker DMA but works great on Sonic GX or Ghosts'N Goblins (128K version) since years.
Quote from: etoEven if there is no risk of hardware damage, software should deal with it as RAM extensions are widely used. I would not request any developer to "support" incompatible RAM, but at least, like (I think) Soundtracker DMA and CRTC3 are doing it, they should output a warning or stop execution if incompatible RAM is detected.
I can understand that a message is displayed when the incompatibility is real and no way to deal with an existing memory expansion plugged. :)
Do you have documentation for what your compatibility mode is and how it works?
In the case of Gemini it is transparent: it reproduces the ASIC unlock sequence and the RMR2 register, so it knows when the ASIC is mapped. So it behaves just like the internal RAM.
Quote from: TotO on 14:00, 11 October 22Before the check was added, SoundTracker DMA worked with a RAM board. If the test is removed, it works again.
Your statement is wrong. Like I just explained, it looks like it works but it does not since there is random memory trash while playing sounds. The incompatibility is real and the test is there for a reason, it avoids data loss.
Quote from: TotO on 14:00, 11 October 22Anyway the X-MEM offers a known compatibility mode for Plus that is not used by SoundTracker DMA but works great on Sonic GX or Ghosts'N Goblins (128K version) since years.
I guess you talk about using &7Exx port instead of &7Fxx? Since this port is also used by 1MB+ memory expansions, I think this trick was not considered robust enough (or at least it would have required additional memory checking code to figure out). Anyway, both Soundtracker DMA and CRTC³ won't require more than the stock 128KB, and they do not crash when an incompatible memory expansion is plugged, which is better than crashing like most does. :)
Quote from: PulkoMandy on 14:33, 11 October 22Do you have documentation for what your compatibility mode is and how it works?
In the case of Gemini it is transparent: it reproduces the ASIC unlock sequence and the RMR2 register, so it knows when the ASIC is mapped. So it behaves just like the internal RAM.
Sure, I'm decoding RMR2 too into the X-MEM+ but not into the X-MEM because no enough CPLD room to fit that. Instead, I have decoded A8 to allow to continue to access the internal 64K RAM memory on CPC and Plus by disabling the external memory through the &7Exx port. So, it is a compatibility mode for the CPC 128K with this expansion since 10 years ago. It is not because this port can be used for extra 512K that is not possible to use it for extra 64K. ;)
I was just asking what the issue was as I had not yet come across it - but I'm not using DMA on the plus. I guess the easiest fix is to fix the programming documentation, but of course making new hardware is good and fixing software is possible most of the time.
For me, I like my software to support as much hardware as possible when possible - not target specific ones. I guess I could make my software check if on a plus with a memory expansion that conflicts with ASIC in some circumstances and stop it from running, but I'd rather make my software work unless I couldn't make it work.
Quote from: eto on 13:11, 11 October 22I'm following most discussions and stuff around the CPC/Plus for 2.5 years now and I was not aware of it. It's not on any page I have ever seen about the Plus. It's not on any Wiki page about any of the RAM extensions.
TBH I didn't know about the ASIC/memory expansion issue for many years as well. So when I tested my stuff on a real CPC Plus with SYMBiFACE II attached back in 2006, I got frustrated and deactivated Plus support in SymbOS.
Only a few years ago I read about it here in the forum, and now of course it totally makes sense, that it is not a good idea to map in the ASIC and extended memory at the same time for standard expansions, which have no idea about the ASIC.
I am looking forward to the Gemini, but I will also try to fix this in SymbOS, so that it should run on a Plus even with old memory expansions.
You are right, we should add some infos to the Wiki :)
Is there a wiki page on the issue and how to reproduce it in software and perhaps ways to avoid it in software?
and... does the issue also exist between eg: multiface 2 and 6128plus, or multiface 2 and DkTronics? and Vidi?
Originally I had planned for a 2MB RAM on this card, but it is out of stock now.
That would have complicated usage of port 7Exx. Already with a 1MB card it complicates things a bit, since the Gemini uses 7Exx and 7Fxx for its own RAM.
And if I decide to do a 4MB version later, there would not be any space left in the IO ports unless I do a trick to let the CPC handle the first 64K or something like that. And it creates a difference of behavior between the different banks still, which I find confusing.
Isn't it the same with the Y-MEM or another one of your expansions? (I'm sorry, I must say I'm a bit confused by so much hardware bing available :D but I think you had a way to have the XMEM behave as a second 512K bank aside the first one?)
Quote from: PulkoMandy on 15:27, 11 October 22Isn't it the same with the Y-MEM or another one of your expansions? (I'm sorry, I must say I'm a bit confused by so much hardware bing available :D but I think you had a way to have the XMEM behave as a second 512K bank aside the first one?)
Sure, you are right. Decoding A8 allows to connect a second "X-MEM" (named Y-MEM), but it is not official and I have built them only to peoples asking for 1MB with SymbOS or custom programs for CPC (Chany). Using it will disable the internal 64K RAM expansion and no more compatible with Amstrad Plus.
Quote from: PulkoMandy on 15:27, 11 October 22Originally I had planned for a 2MB RAM on this card, but it is out of stock now.
1MB is enough for anyone.
Quote from: Prodatron on 15:23, 11 October 22Quote from: eto on 13:11, 11 October 22I'm following most discussions and stuff around the CPC/Plus for 2.5 years now and I was not aware of it. It's not on any page I have ever seen about the Plus. It's not on any Wiki page about any of the RAM extensions.
...
I am looking forward to the Gemini, but I will also try to fix this in SymbOS, so that it should run on a Plus even with old memory expansions.
Does it mean that you are going to produce a special SymbOS for the Plus range?? (hardware mouse pointer... just kidding) ;D Seriously, would it make sense or an improvement to use the plus capabilities for SymbOS?
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 make an adaptation for Asic Intro 2 with software (basically disabling Asic before RAM banking)
but you cannot adapt a programm using C2 mode (64K video + code in upper RAM)
Quote from: roudoudou on 21:01, 11 October 22Quote 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 make an adaptation for Asic Intro 2 with software (basically disabling Asic before RAM banking)
but you cannot adapt a programm using C2 mode (64K video + code in upper RAM)
Yeah, that was the problem I found when I first heard about it. I was using the C1 and C2 configurations (with page 3 reserved for samples I never needed paged in), which works fine on a 6128+, but couldn't easily restructure things to work any other way because I couldn't have multiple banks paged in that way. It's not necessarily as simple as just "don't do it" unless you're targeting cartridge software.
Fundamentally it's because most memory expansions aren't Plus compatible. Just like the Multiface isn't Plus compatible. Is it really a bad thing if anyone actually does make a compatible solution? Do we really need to complain and argue over it?
Quote from: HAL6128 on 20:21, 11 October 22Does it mean that you are going to produce a special SymbOS for the Plus range?? (hardware mouse pointer... just kidding) ;D
Seriously, would it make sense or an improvement to use the plus capabilities for SymbOS?
Haha, yes, all SymbOS versions <1.0 supported the Plus :D at least regarding the palette (12 bit = 4096 colour based).
Then we had this problem with asic+symbiface II and I deactivated it (as I didn't know about this in 2006).
CPC Plus version would at least support the 4096 colour palette and the hardware mouse pointer (which will make sense for a new game).
Quote from: Prodatron on 23:57, 11 October 22Quote from: HAL6128 on 20:21, 11 October 22Does it mean that you are going to produce a special SymbOS for the Plus range?? (hardware mouse pointer... just kidding) ;D
Seriously, would it make sense or an improvement to use the plus capabilities for SymbOS?
Haha, yes, all SymbOS versions <1.0 supported the Plus :D at least regarding the palette (12 bit = 4096 colour based).
Then we had this problem with asic+symbiface II and I deactivated it (as I didn't know about this in 2006).
CPC Plus version would at least support the 4096 colour palette and the hardware mouse pointer (which will make sense for a new game).
I for one am looking forward to this new version of SymbOS 🙂
I'm still interested in the expansion board of course, but out of interest, would it be feasible to implement this as a board that sits in-between the CPU and its socket for an internal 1MB upgrade? That would be very neat, and extremely convenient for development...
I don't think it's possible with the exact same design and just the CPU socket, since a few extra signals from the expansion port are used (mainly RAMDIS to disable access to the internal RAM). With a few extra wires soldered it may be possible.
The schematics and Kicad file are available if someone wants to try designing a CPU socketed board. It may even be possible to reuse internal signals from the ASIC instead of replicating the lock/unlock logic then?
Another option is soldering an internal cable to the expansion port, and fitting your expansions inside the Amstrad Plus case (there is a lot of space besides the motherboard). I think OffseT did this with several expansions (Albireo, FlashGordon, and maybe Nova?).
Quote from: Prodatron on 23:57, 11 October 22Plus version would at least support the 4096 colour palette and the hardware mouse pointer (which will make sense for a new game).
I though about that yesterday evening. 1 mouse pointer and 15 desktop icons. ;D
I have a plus version of the multiface 2, but i am unsure what is done to it to make it work other than the form factor (now an mx4 card).
interesting from the Chibi Akuma's technical page
https://www.chibiakumas.com/z80/platform3.php#LessonP24
QuoteTurn on the CPC Plus:
We've covered it before, but remember, by default The CPC+ features are disabled, leaving us with only a regular CPC... to use the PLUS features, we need to send a series of 17 bytes to the CRTC at port &BCxx
Once the CPC+ features are on, a special bank of 16k 'ASIC' memory will become available, which we can write to between &4000-&7FFF in the same way as our normal memory.
To Turn it on we use: ld bc,&7fb8 out (c),c To turn it off we use: ld bc,&7fa0 out (c),c
NOTE: When using the ASIC memory, We should make sure that we're using the 128k banks are disabled, or it can cause problems with some 128k ram upgrades. Mode C1/C3 are OK to use as they page in at &C000
|
@zhulien You can found a lot of informations about the ASIC from here:
http://quasar.cpcscene.net/doku.php?id=assem:asic
And here about the GA and ASIC:
https://www.grimware.org/doku.php/documentations/devices/gatearray
EDIT: Hum... The ASIC related links (unlock sequences, ...) seem to not work on Grimware. :(
i wonder if a future ram expansion with 2mb sitting in the ROM space would be worthwhile? the upper 128 ROM slots.
Quote from: zhulien on 15:09, 12 October 22i wonder if a future ram expansion with 2mb sitting in the ROM space would be worthwhile? the upper 128 ROM slots.
From &80 (up to 32 ROM), it is the cartridge area for the Amstrad Plus / GX4000 and compatible.
Quote from: TotO on 15:10, 12 October 22Quote from: zhulien on 15:09, 12 October 22i wonder if a future ram expansion with 2mb sitting in the ROM space would be worthwhile? the upper 128 ROM slots.
From &80 (up to 32 ROM), it is the cartridge area for the Amstrad Plus / GX4000 and compatible.
Any reason it cannot be both? by default a cartridge, write to an IO port it becomes RAM?
Quote from: zhulien on 15:11, 12 October 22Any reason it cannot be both? by default a cartridge, write to an IO port it becomes RAM?
And why not 2MB to the RAM area to be compatible with the existing? ;D
Quote from: TotO on 15:15, 12 October 22Quote from: zhulien on 15:11, 12 October 22Any reason it cannot be both? by default a cartridge, write to an IO port it becomes RAM?
And why not 2MB to the RAM area to be compatible with the existing? ;D
Because when it is mapped in at C000, that 2mb won't have any DMA issues. and, we might then be able to have 6mb on CPC.
Quote from: zhulien on 15:16, 12 October 22Quote from: TotO on 15:15, 12 October 22Quote from: zhulien on 15:11, 12 October 22Any reason it cannot be both? by default a cartridge, write to an IO port it becomes RAM?
And why not 2MB to the RAM area to be compatible with the existing? ;D
Because when it is mapped in at C000, that 2mb won't have any DMA issues. and, we might then be able to have 6mb on CPC.
Which makes me wonder... why not make a 16mb RAM expansion that sits at C000 on CPC - it's 2022, we need 16mb software now.
Quote from: zhulien on 15:16, 12 October 22Because when it is mapped in at C000, that 2mb won't have any DMA issues and, we might then be able to have 6mb on CPC.
May be nice start to use your Play2CPC hardware so? :-*
Quote from: zhulien on 14:51, 12 October 22I have a plus version of the multiface 2, but i am unsure what is done to it to make it work other than the form factor (now an mx4 card).
The Plus version of the Multiface 2 was amended to support the Centronics connector and the revised version of AMSDOS. It does support any of the enhanced Plus features such as sprites etc. If you use the Stop button when running Plus software and return (in my experience) to the game it usually crashes.
Quote from: zhulien on 15:17, 12 October 22Quote from: zhulien on 15:16, 12 October 22Quote from: TotO on 15:15, 12 October 22Quote from: zhulien on 15:11, 12 October 22Any reason it cannot be both? by default a cartridge, write to an IO port it becomes RAM?
And why not 2MB to the RAM area to be compatible with the existing? ;D
Because when it is mapped in at C000, that 2mb won't have any DMA issues. and, we might then be able to have 6mb on CPC.
Which makes me wonder... why not make a 16mb RAM expansion that sits at C000 on CPC - it's 2022, we need 16mb software now.
In my case I am limited to 1MB by the availability of RAM chips that can work with 5V signals. Larger chips would require an electrical level conversion from 3.3 to 5V. I think some other hardware (Duke M4?) works with 3.3V components so they may be able to do it.
But there is no real need for this much memory, or if there is, maybe you should not be using a CPC? :) (that's my personal opinion, so I don't plan to design such hardware, someone else is free to do it if they want to).
Quote from: zhulien on 15:17, 12 October 22it's 2022, we need 16mb software now.
Addressing 16MB is not the problem. We could probably find another register where can we store another 8 bit, so we could address 1GB of RAM. Maybe the additional I/O that the AY-3-8910 adapter provides?
But what would you do even with 16MB of RAM? A few days ago we struggled to find a use case for 4MB.
Quote from: eto on 17:23, 12 October 22Addressing 16MB is not the problem. We could probably find another register where can we store another 8 bit, so we could address 1GB of RAM. Maybe the additional I/O that the AY-3-8910 adapter provides?
Usually, I answer that is not a problem to address 4GB RAM... But you will require one year to fill it.
Fist of all: Congratulations to this great project!
Somehow this was missing for the 6128plus (or 464plus).
About the discussion: In my opinion everybody (software person or hardware person) should do always the best possible. Means...
Software: Catch possible problems and omit them
Hardware: Define your product for a target, try to omit problems
If we all agree to do the best then everything will be fine.
Of course often single persons want to push their products (software or hardware) and that's what one can see on their comment. Well, it's ok to have different POV's. Why not. But it's getting nasty when somebody defines a rule for all CPC and Plus scene. Maybe (even here) we can be a bit more of a team. :)
From what I did read, it's probably not too expectable that there will be a 4 MB version of this great piece of work.
Or is there any chance of a 4 MB Gemini RAM expansion in some future?
(asking because I seriously use/need it for work).
Now I am just curious, does that mean that your futureos is crashing with a normal memory expansion on a CPC plus with plus features enabled?
I could do a 4MB version but it would need 4 RAM chips and I think a bit more logic on the board (I need to store and decode one extra address bit). The RAM chips are not super easy to get at the moment due to global shortages and logistics problems. So for now I'll focus on this 1MB version and hope that Lyontech or some other manufacturer starts or resumes production of a 2MB chip in the future, then I can do a 2MB version.
I should have ordered these chips when they were available...
I'd like a 4mb version if you eventually make them. I think the RAM expansion is a good one, i'd also like a 16mb RAM expansion (even if not made by yourself) that maps into C000 behaving somewhat like writable ROM and avoids the DMA issue completely. The reason for this is not only for machine code applications, but it is more convenient for BASIC programs that use RSXs (located just under himem) to access that RAM so that we can have almost 42k basic programs instead of 16kb (paging between &4000 - &8000). Of course no existing software will use it, future software would.
Got 64K, want 256K. Got 512K, want 2MB. Can got 4MB, would like 16MB... Next? ;D
Something already heard in another 8 bit platform.. :laugh:
https://www.msx.org/wiki/Classic_PC_16MB_Expansion_Memory
(https://www.msx.org/wiki/images/b/b7/16MB_Expansion_Memory.jpg)
But is there any software that really makes use of it? Because the list of software on that Wiki page is just memory testers... If that's all you want to do, it's easier to write software that just pretends the memory is there and working fine ;D
From the sellers homepage:
"How you use the vast space is up to you."
So not even the seller has an idea what to do with it ;-)
Quote from: PulkoMandy on 13:10, 13 October 22But is there any software that really makes use of it? Because the list of software on that Wiki page is just memory testers... If that's all you want to do, it's easier to write software that just pretends the memory is there and working fine ;D
On the MSX a memory expansion (called "Memory Mapper") can have a size of up to 4MB (= 256 x 16KB), and this catridge includes 4 of them (one for each sub slot).
Some weeks ago the biggest game ever made for the MSX has been released (https://nopmsx.nl/sales-discontinued/), which has a size of
36MB (!). Even this "only" requires 512K of RAM.
Youtube: youtu.be/3C_W_AwSGII (copy this link manually)
If someone shows me a real working example of a software, which does useful things with so much RAM (>1MB) which can't be done with a mass storage device, I would be convinced. All I see now are video- and audio-streams or theoretical blah blah.
my C64 has 16mb RAM
https://www.c64-wiki.com/wiki/Turbo_Chameleon_64
I have not seen any real use of > 512kb in an MSX. Even GB emulator requires only 256kb but it says they can use up to 4mb.
http://www.tni.nl/products/gem.html
In my opinion, even MSXs require normally less RAM than Amstrad, as they have separated video Memory and normally can read directly all resources required in the game from the cartridge..
Quote from: Prodatron on 14:55, 13 October 22If someone shows me a real working example of a software, which does useful things with so much RAM (>1MB) which can't be done with a mass storage device, I would be convinced. All I see now are video- and audio-streams or theoretical blah blah.
SymbOS could be a serious candidate.
Quote from: HAL6128 on 15:41, 13 October 22SymbOS could be a serious candidate.
Problem is, in some parts of the SymbOS kernel addressing is currently limited to 20bits (16 + 4), which is 1MB.
Maybe it is possible to extend it to 24bits (most functions already work with 24bits), but then old software had to be executed inside the first 1MB.
I had a dream. A dream where all CPC software used 256K of RAM as standard since 1992... From there, I will understand this sudden need to have 2048K and more, 30 years later. But I remember that using more than 64K was taboo 10 years ago. ;)
Once you get past about 256K, having to manage memory in small chunks of 16K just becomes painful. Inevitably the only real approach beyond that point is to fake a mass storage device and just "LOAD" data into main memory instead.
And once you do that, the benefits of it being visible to the CPU as RAM instead of just being a mass storage device are remarkably small.
Cool thing about the CPC memory banking is (at least compared to ZX Spectrum and Atari8bit), that you can map whole 64K banks into the visible Z80 address space. That is already a big benefit for handling code and data areas inside the extended memory.
The progress regarding memory expansions for 8bit machines is quite interesting:
Level 1.) C64: only DMA transfer, no possibility to execute code inside external memory
Level 2.) ZX Spectrum, Atari8: can switch single 16K into a part of the visible area
Level 3.) CPC: can switch 16K and even 64K into the visible area, but with limited possibilities
Level 4.) MSX, PCW, Enterprise, NCxx0 etc: can switch any parts of the extended memory into the visible 64K in 16K blocks
Sam Coupe is somehow between 3 and 4 due to its limited 32K pages.
There are some more curiosities like the MTX500/512/RS128 which have banking possibilities between 2 and 3. Or the strange MMU of the C128, which could handle 512K but then was restricted to 128K as the Commodore management didn't like to have it too powerful.
Quote from: Prodatron on 14:55, 13 October 22If someone shows me a real working example of a software, which does useful things with so much RAM (>1MB) which can't be done with a mass storage device, I would be convinced. All I see now are video- and audio-streams or theoretical blah blah.
in an arcade game, some delta animations for background could use hundred of kb
in a platform game, depend of what you target as animation quality, you can rise as many MB as you want
it doesn't matter that i had only 8MB with my Pentium back in days if i can do a top notch Amstrad CPC game with moaaaaR !
as an example, this short preview of a pending project need at least many ROM (but huge RAM capacity may be fine)
Wow, fantastic animations! :o
Well, seems mass storage on CPC now is qutie plentiful and common and that itself gives the possibiliy of some interesting games which can exceed the space of a DVD ROM if desired. I would see 16mb on a CPC besides some specialty uses, as a perfect cache for potential megasized games that would otherwise keep accessing the quite fast mass storage. Of course I am happy with 4mb too, but 16mb or 16gb even is pretty cool if implemented in a quite cheap way - at least we can put a large number on the reset screen that isn't a lie.
Quote from: Prodatron on 21:39, 12 October 22Now I am just curious, does that mean that your FutureOS is crashing with a normal memory expansion on a CPC plus with plus features enabled?
Thanks god no. Our FutureOS always worked with any kind of RAM expansions on the 6128plus. We just had the luck that the access to the memory mapped I/O (ASIC) is usually done when the main RAM is banked in.
However in the machine monitor you can select an 16 KB expansion RAM block between &4000 and &7FFF and then access the memory mapped I/O too. This can serve to check for possible problems with certain expansions. Well, I'm sure there are other ways too. For sure somebody did already such a test program.
Personally I never ran into the problem (of ASIC being enabled, accessed and E-RAM being active), but it's AWESOME to have the Gemini expansion. :) :) :)
I'm fully aware that your SymbOS supports a maximum of 1 MB, so for SymbOS 1 MB is fine of course. However, 4 MB would be just awesome for the native OS and also for FutureOS.
And I'm really looking forward to the possible 2 MB expansion of course!!!
Quote from: roudoudou on 09:43, 14 October 22Quote from: Prodatron on 14:55, 13 October 22If someone shows me a real working example of a software, which does useful things with so much RAM (>1MB) which can't be done with a mass storage device, I would be convinced. All I see now are video- and audio-streams or theoretical blah blah.
in an arcade game, some delta animations for background could use hundred of kb
in a platform game, depend of what you target as animation quality, you can rise as many MB as you want
it doesn't matter that i had only 8MB with my Pentium back in days if i can do a top notch Amstrad CPC game with moaaaaR !
as an example, this short preview of a pending project need at least many ROM (but huge RAM capacity may be fine)
Totally agree about the delta animations and what Roudoudou says...
I'm often frustrated that I can't add many more frames due to lack of ram when I do some deltas tests* for fun... Mainly demo oriented effects...
This is even more true for a game with delta animations... And obvious in the posted video above...
*A few here (in 128kb only, unfortunately...) :
https://rasmlive.amstrad.info/edit/GQufxj9uuQjjczmfn
https://rasmlive.amstrad.info/edit/EenmF7REYnmg2KhMF
https://rasmlive.amstrad.info/edit/nnwQBDAAoBdodm6Xm
https://rasmlive.amstrad.info/edit/qj7HjpBHJuGN7EJNp
https://rasmlive.amstrad.info/edit/XrcagxGAQSmtTqJvE
https://rasmlive.amstrad.info/edit/iL3rBFiMxpqfbmPJn
https://rasmlive.amstrad.info/edit/GeWAdbAHTBQjrCvWp
Best.
Tronic/GPA.
@PulkoMandy : Please put me on the waiting list for one ingenious Gemini RAM expansion. :)
Hi, I'm interested by one board Gemini!
You can count +1 for me please. Especially if a symbos plus release is on his way.
1Mo, 2Mo, 4Mo, 16Mo... I'm in.
Hello, I am also interested in one unit. Thank you.
I'm trying to be patient, but my curiosity has gotten the better of me... Is there any progress on this
@PulkoMandy ? Eagerly awaiting :)
Hello,
The first 10 boards have been shipped last week. This was my initial batch to identify any problems with the design, and indeed there was one small problem that I had to fix while assembling the boards.
I will make an order for the next 20 boards PCBs and components soon, I've been busy with other things lately. And after I order them it will probably take ~3 weeks for the PCBs to get delivered, and then a bit more for me to assemble and test the boards.
Excellent! How to place an order for a delivery in France?
I have taken note of your order already, I will send you a private message when the board is ready with payment instructions :)
Quote from: PulkoMandy on 11:05, 09 November 22Hello,
The first 10 boards have been shipped last week. This was my initial batch to identify any problems with the design, and indeed there was one small problem that I had to fix while assembling the boards.
I will make an order for the next 20 boards PCBs and components soon, I've been busy with other things lately. And after I order them it will probably take ~3 weeks for the PCBs to get delivered, and then a bit more for me to assemble and test the boards.
Please put me on the waiting list for one Gemini RAM expansion.
My arrived today! Thanks a lot! I will try them soon with my 6128 Plus. I am especially very curious about the ASIC leds, will probably look quite cool.
Mine arrived yesterday thank you. Will try it out at the weekend if not before. Looking forward to trying it out.
Quote from: Maniac on 20:46, 09 November 22Mine arrived yesterday thank you. Will try it out at the weekend if not before. Looking forward to trying it out.
Happy weekend then! :) :) :)
Quote from: PulkoMandy on 13:10, 13 October 22But is there any software that really makes use of it? Because the list of software on that Wiki page is just memory testers... If that's all you want to do, it's easier to write software that just pretends the memory is there and working fine ;D
Have you tried AMDRUM (and the later LambdaSpeak Speech Synthesizer) ? I know there are better software for every more modern computer, but AMDRUM on Amstrad CPC is actually quite fun and usable - now it achieves some really awesome results with only 64kb! Imagine if you have 16mb (or even 4mb) of sample RAM. That is only 1 use, in the end it depends how well it gets adopted and breaks that chicken egg situation - but I can say that nothing will ever happen without the RAM expansion before the software - or... perhaps some software could almost be there.
Arrived in the UK. Weekend playtime coming up!
Quote from: PulkoMandy on 11:05, 09 November 22I will make an order for the next 20 boards PCBs and components soon, I've been busy with other things lately. And after I order them it will probably take ~3 weeks for the PCBs to get delivered, and then a bit more for me to assemble and test the boards.
@PulkoMandy Put me on the list please :) I have Amstrad CPC6128+ waiting for it ;) Can you estimate cost with shipping (01-318 Warsaw, Poland)?
The cost is 35€ with shipping included, no matter where you are.
ok, put me on the list please, if you need pre payment now let me know on PM. Thanks!
No, I take payments only when the boards are ready to ship.
Quote from: PulkoMandy on 11:54, 17 November 22No, I take payments only when the boards are ready to ship.
Hi Pulko, sorry to bother you, just wondering how this is going? Still eager to get on/a board :)
Hi,
I have assembled two boards this week with the fixed PCB layout but they are not working. I'm not sure why yet. Probably I messed up something with the small changes I did to the PCB (the first 10 boards needed a small rework which I incorporated in the PCB this time). I also have supply problems with one of the chips used so I need to find an alternate supplier.
I will get back to this in january.
Just out of curiosity: how do you manage to recognise the lock/unlock sequence with a ATF22V10?
An ATF22V10 plus a 74LS688.
It would be possible to do it in a single chip using an ATF750, but before I can do that, I need to patch my programming software (atfblast) to be able to program the ATF750. The programming algorithm is already reverse-engineered and documented so that should be possible, but I had no time to dig into it. Or someone with a suitable programmer could do it.
Quote from: PulkoMandy on 18:35, 17 December 22Hi,
I have assembled two boards this week with the fixed PCB layout but they are not working. I'm not sure why yet. Probably I messed up something with the small changes I did to the PCB (the first 10 boards needed a small rework which I incorporated in the PCB this time). I also have supply problems with one of the chips used so I need to find an alternate supplier.
I will get back to this in january.
Well... it turns out they work a lot better if I solder the correct chips :doh:
So, I have two boards working but I'll keep one for myself. And I'll not be home for the next week and a half so I will resume assembly and shipping after that. If I manage to order the missing parts until then, I should be able to ship all orders before the end of year.
You do a great job for CPC users. Now it's time to enjoy the time between the years. Sometimes it's a good thing to regenerate the soldering / programming / anything else will work better. :) :) :)
Hello,
Here is the current waiting list (again missing some chips because i can't count... should be delivered in the next few days):
- Amijim
- Tooloud
- Asertus
everyone else should have received a message with payment instructions and I will send the boards as soon as they are paid.
Also, due to a special command, I made a non-plus version of the board for CPC6128 (the ASIC detection is simply removed). So, let me know if you want one of these.
I'll take a RAM expansion as well if still available. How did I miss this :doh:
PM received and answered. Thx.
Hi ! Newbie 6128+ owner here ;D
Could you please put me on the list for 1 board when available ?
Thx
got PM!
Received mine this morning, thanks PulkoMandy :) Haven't tested it just yet, but will soon - need to get my non-RSF3 expansion setup sorted (M4+Gemini+PlayCity vs my current RSF3+PlayCity)... Feels like a good time to give Unidos a proper go :)
Mine arrived too and it works fine on a Plus (recognised well under SymbOS).
Package well-received. Thx.
Hello,
Board received today ;D thx
The Gemini works very well with FutureOS (6128plus enhanced version) - the 1 MB mode and the 512 KB mode equal perfekt.
Thanks for this great achievement. :) :) :)
just got it, thanks
@PulkoMandy !
Package received and Gemini working perfectly on my CPC464+ & M4. Excellent support from the author. Thank you.
Damn, I somehow missed this thread and additionally, I also didn't know about the RAM extension problem/incompatibility with the ASIC paged into RAM!
Learned something new and, most important, that finally explained why I had some weird bugs with my 6128+ code that I wrote using RAM expansions like Symbiface2! And it seems some people knew about that problem, but it was nowhere documented... :o
@PulkoMandy: I would be interested in 2x 1Mb RAM extensions please, and if you ever decide to bring also a 4Mb version, I gladly would order then at least two as well, as I have use of that for some code I am cooking. (Hen egg problem...)
@Apollo it's one of those things that have been circulating for a little while. I've tried to encourage people not to describe there hardware as Plus compatible when it suffers this issue, but they obviously have reasons not to. It does need documenting, although I'm not sure where is best. I think some of the programming and technical sections need some tidying and structure as it's a bit impenetrable at the moment. I've been thinking of making some Plus tutorials so maybe I'll have a look.
@PulkoMandy you can add me to the list for one. I'll probably never actually get around to using it, but it's a project worthy of some support in my opinion.
Hello,
Everyone who has already paid for a board should have already received it.
There are some people who ordered a board but never paid for it, your boards are still waiting until I get a payment.
People who ordered a board today should have received a message, I ahve assembled the boards and they are ready to ship once I have your payments and shipping addresses.
Have a nice weekend everyone!
Hi PulkoMandy, just a clarification.
- A 6128plus has 128kb memory, 2 x 64kb banks if you like. Do both 64kb banks work correctly with a 6128plus when ASIC is paged in? or just the first 64kb bank?
- If we were to use a existing 64kb 3rd party expansion on a 6128plus - this RAM will basically override the internal second 64kb bank of the 6128plus and have the issue?
- With a Gemini
-- if we are running instructions from block 5 (2nd block in the 2nd 64kb bank) and enable ASIC, what happens?
-- With video RAM, if that is put at #4000, and ASIC is enabled - does the CRTC still correctly read the video RAM and not the content of the ASIC RAM?
-- With video RAM, if that is put at #4000, and ASIC is enabled and code is running from block 5 - does the Z80 correctly execute the code and the CRTC still correctly read the video RAM?
@zhulien I can answer the first two questions:
1) Both 64K banks of a 6128+ work correctly, i.e. when the ASIC is paged in, no RAM will see the writes to addresses between #4000 and #7fff regardless of what the memory paging arrangement is.
2) Yes, this is the problem with memory expansions designed for older CPCs when used with a Plus machine. They are unaware of the existence of the ASIC registers and will update banked RAM whenever they believe it is paged in. Thus if banked RAM is paged in at #4000, writes in the range #4000 to #7fff will update RAM even if the ASIC registers are paged in. RAM values will therefore become corrupted in a way they shouldn't.
I believe the Gemini expansion is designed such that these issues shouldn't happen, but equally shouldn't upset the normal behaviour of the main 64K - i.e. putting the screen display at any address should work, DMA lists stored anywhere in the main 64K should play correctly etc. I haven't tried it yet as I haven't received mine yet (and would have to spend a while getting my Plus set up in a usable condition once I did).
Assuming it works correctly, the other answers should be:
3) The Z80 will attempt to execute the ASIC registers as code, which will probably end badly. This would fail on a 6128+.
4) That should work. It would on a 6128+.
5) That should not work. The display should still come from block 2, but the Z80 will see the ASIC registers and not the RAM at #4000 - it will thus attempt to execute the registers. This is what a 6128+ would do
I'm surprised that you have not received it yet, it was shipped several weeks ago. Well let's wait a bit more, and if it turns out it was lost in postage I'll just send another one...
Quote from: andycadley on 17:36, 18 February 23@zhulien I can answer the first two questions:
1) Both 64K banks of a 6128+ work correctly, i.e. when the ASIC is paged in, no RAM will see the writes to addresses between #4000 and #7fff regardless of what the memory paging arrangement is.
Does that mean from an unexpanded 6128+ point of view, the ASIC and block 5 somewhat work like ROM over screen RAM at C000 - i.e. you can from ROM and transfer images to the screen by writing to the ROM you are reading from? (I do that in the SUPER.ROM)... can you run code in the block 5 with preprepared sprite data and basically LDIR it to the same address and it would appear inside ASIC or does ASIC replace the RAM no matter which block - even for reads? I ask this because it is the RAM you are blocking the writes to, effectively making it readonly like a ROM - but where do the reads come from if both ASIC and block 5 are paged in?
They can't be both paged in. The ASIC takes priority over everything else. When the ASIC is mapped you can't access RAM or ROM at the same address.
If you use an external memory extension that doesn't take this into account, writes will go to both the ASIC and the RAM, and reads will be replied by both the ASIC and the RAM or ROM at that address. For writes this is OK, for reads it creates a conflict, and you will probably read corrupted data and cause a short-circuit on the signals, which isn't great for the hardware.
Quote from: zhulien on 23:01, 18 February 23Quote from: andycadley on 17:36, 18 February 23@zhulien I can answer the first two questions:
1) Both 64K banks of a 6128+ work correctly, i.e. when the ASIC is paged in, no RAM will see the writes to addresses between #4000 and #7fff regardless of what the memory paging arrangement is.
Does that mean from an unexpanded 6128+ point of view, the ASIC and block 5 somewhat work like ROM over screen RAM at C000 - i.e. you can from ROM and transfer images to the screen by writing to the ROM you are reading from? (I do that in the SUPER.ROM)... can you run code in the block 5 with preprepared sprite data and basically LDIR it to the same address and it would appear inside ASIC or does ASIC replace the RAM no matter which block - even for reads? I ask this because it is the RAM you are blocking the writes to, effectively making it readonly like a ROM - but where do the reads come from if both ASIC and block 5 are paged in?
No, because when the ASIC is paged in all reads and writes between #4000 and #7fff by the CPU are accesses to the ASIC registers and the RAM is hidden. There is no write-through (or read-through) like there is with ROM.
The video hardware (and the DMA processor) never see any of the paging though, all there accesses come directly from the main 64K as if nothing else existed.
I get it, it is to stop the memory corruption when the external banks are paged in, but doesn't address the original design of paging in asic when running from block 5.
@PulkoMandy Received my package! Thank you very much, will play with the hardware in my next vacation 8)
Hello,
News from Gemini:
- I can make an Amstrad CPC 6128 version (without the ASIC lock/unlock feature)
- 2MB RAM chips are available again, so I can finally start building the 2MB version
When ordering, please let me know which version you want: Plus or CPC6128, and 1 or 2 MB.
Gemini is still not compatible with CPC464 and 664.
...hm, is the Gemini not supposed to work with a regular CPC6128? I mean, I plugged it for testing purposes in and it work pretty cool on a CPC6128 (and with CP/M, also the Dk'tronics RAM drive works). Might there some problems to be expect a normal CPC?
It will work, but if some software attempts to unlock the ASIC, it will not map itself in the memory area that would normally conflict with the ASIC.
I don't think this is very likely to happen, but I can make a version with the ASIC unlock and mapping detection circuit completely removed, since it's not needed in that case.
You will easily notice if you end up in this condition: if both the LEDs light up on a non-Plus machine, you're in this case.
That's an interesting information. It means, that after trying to detect a CPC Plus with no success you should execute one "unmap ASIC" operation just to tell the Gemini, that it can map to this area. Then it should work on a 6128 old generation without problems?
Quote from: Prodatron on 10:18, 27 March 23That's an interesting information. It means, that after trying to detect a CPC Plus with no success you should execute one "unmap ASIC" operation just to tell the Gemini, that it can map to this area. Then it should work on a 6128 old generation without problems?
You could do that, but then you're into the realms of trying to work around supporting a memory expansion that wasn't really designed for the hardware you have. Which is exactly what the Plus version of the Gemini was trying to avoid in the first place.
It's probably easier to just accept that the different models need different RAM expansions (which would be easier if everyone didn't add a RAM expansion to every peripheral they design but hey ho).
That's true, but why shouldn't new software take that into account, as now we know about this.
I am using the current Gemini version for my 6128 oG together with the M4Board, so for me it makes sense, if there is no conflict if software tries to detect a CPC Plus.
Yes, if software re-locks the ASIC after trying to unlock it, you're fine. Or also if it uses some other way to test for a Plus machine, for example detecting CRTC type 3 without unlocking the ASIC.
The LED on the Gemini lets you know when the ASIC is unlocked. This leads to some interesting discoveries (or re-discoveries). For example if you run Burnin Rubber and reset the CPC using CTRL SHIFT ESC, the ASIC remains unlocked, and you can access the BASIC with ASIC unlocked. Which means the locking wasn't really effective to begin with. Oops :laugh:
In later batches of the Gemini I will add a way to change easily from one configuration to the other (with a switch for example). But the non-Plus version has 3 chips on it instead of 5, so maybe I can make a smaller version and maybe also a little bit cheaper (but it may not be a very large price difference). But now that I have said that, no one will want to buy the current boards...
Quote from: Prodatron on 10:37, 27 March 23That's true, but why shouldn't new software take that into account, as now we know about this.
I am using the current Gemini version for my 6128 oG together with the M4Board, so for me it makes sense, if there is no conflict if software tries to detect a CPC Plus.
Because it's closing the stable door after the horse has bolted.
There is already software out in the wild that doesn't do that, so trying to use it on a standard CPC will likely cause weird incompatibility issues anyway. Anyone wanting a memory expansion for an old school CPC has plenty of other options that they can spend their money on and get the behaviour they expect.
Ultimately the Plus and CPC models need different implementations of memory expansions. You could do an "all in one device" by adding a switch/jumper that selects what type of device you have (I don't think there is any other way) and if there is a market for such a thing, I'm sure someone will build one. I'm still dubious about that, I suspect just having separate devices and being clear about what they are fully compatible with is a lot easier in the long run.
Hi 6128plus Users! Well, I just intended to drop in an tell how great the 1 MB Gemini board works with my 6128plus computer (and I actually to lots of direct hardware programming, so 'testing' was done the hard way).
And - oh wonderful - there is the 2 MB version. And I want right that what is offered (instead a RAM expansion working on all computers). PM sent of course already.
IMHO it's great to have a RAM expansion specifically made for the 6128plus and I (personally) see not too much need to see it running on other computers, because: I bought it for the Plus, it runs with the Plus, it stays with the Plus. :) :) :)
2 MB on Plus is an even greater achievement!!! Thank you so much PulkoMandy!!! :) :) :)
(start dreaming of 4 MB for the Plus now... ;-))
Hello,
So, here is a bit of an update. Since I can now offer a 2MB version, it makes sense to offer this for CPC 6128 (non-plus) as well. There were some demands for that. So I'll now make it officially available. And since it allows me to remove some chips and is a bit faster to assemble, it is also a little cheaper.
Important note: this is still only for the CPC6128. For the 464 and 664, a different design is required, which I am not able to test (I don't own any of these machines in an usable state)
The updated price list:
- 2MB RAM for Amstrad 6128 Plus, 464 Plus - 45€
- 1MB RAM for Amstrad 6128 Plus, 464 Plus - 35€
- 2MB RAM for Amstrad CPC 6128 - 42€
- 1MB RAM for Amstrad CPC 6128 - 32€
As usual, please send me a PM or email first to order and don't pay anything upfront - I will tell you when your hardware is ready to ship. Especially with so many configurations available, I will not assemble boards in advance, and instead wait for orders to assemble exactly the board you want.
Received my 2 MB Gemini and (like the 1 MB version) it works perfectly.
Thanks for this great expansion :) :) :)
are the 2mb Gemini's compatible with the Symbiface 3 2mb RAM?
I don't know how the symbiface III RAM works. Is it compatible with DKTronics and MEMCARD or is it something else?
Symbiface 3 is using the #7fxx (first 512K), #7exx (second 512K) , #7dxx (third), etc. standard (I think this was first defined by Jarek?).
I guess all newer memory expansions are using this standard.
Yes, this is the same scheme used by the MEMCARD so it is compatible. I don't know exacly who (Yarek or RAM7) did it first.
And it's not important to know, because it's just logical and not the invention of the century. :)
Quote from: zhulien on 07:45, 28 April 23are the 2mb Gemini's compatible with the Symbiface 3 2mb RAM?
Nearly, the SF3 RAM can also recognize the activation of the 6128plus memory mapped are, but it does not scan for the activation code. So the SF3 RAM is nearly there but the Gemini does a bit more. (In case of SF3 you do need the recent update though).
Quote from: PulkoMandy on 16:24, 28 April 23Yes, this is the same scheme used by the MEMCARD so it is compatible. I don't know exacly who (Yarek or RAM7) did it first.
In 1992 (iirc) I had email contact with RAM7, who defined it up to 2 MB. Later on the 4 MB expansion was released, which was straightforward from RAM7s 2 MB solution.
I received my Gemini today, many thanks
@PulkoMandy received my board today thanks, but it is showing as 512KB mode with the '2MB' switch set on my CPC464 plus. I will note there are some (but not all) extra banks showing up in Amstrad Diag (see pictures)
Also tested this on a CPC6128 using Symbos and showing 640KB (other memory test programs also showing 512KB)
Any ideas on this one?
It seems the board was damaged after my testing or during shipping. You can send it back and I will send you another one.
Okay thanks. I'll have a look over the microscope tomorrow and see if I can find anything before going down that path
Quote from: darkhalf on 11:37, 03 January 24@PulkoMandy received my board today thanks, but it is showing as 512KB mode with the '2MB' switch set on my CPC464 plus. I will note there are some (but not all) extra banks showing up in Amstrad Diag (see pictures)
Also tested this on a CPC6128 using Symbos and showing 640KB (other memory test programs also showing 512KB)
Any ideas on this one?
You should test it with the tool
'OS Infos' under
FutureOS. Because this will show you up to
4 MB of connected RAM. The latter software only shows you only up to 1 MB due to its limitations.
A video is here: https://youtu.be/h2RGjXUooiQ?t=30
At second 39 the full 4 MB of RAM are shown.
In your case it shall show 2 MB like it's expected.
Good luck!!! :)
QuoteThe latter software only shows you only up to 1 MB due to its limitations.
Thanks but I've got just the 1MB board, so Symbos/Diagnostics should be sufficient for testing this
QuoteIt seems the board was damaged after my testing or during shipping
@PulkoMandy looks like there was some rework on the board received. The chip appears to have been removed and is missing a number of pads on the PCB. Also the rear switch has had tracks cut. The tracks where cut were shorted to the backplane, and the wires have come off and are melted.
Where is the yellow wire meant to go? I can try and get this going here before spending the $15 and waiting another month to swapping the board
Just some suggestions when removing / replacing chips. Use a product called Chip Quick to remove the solder easily. It is an alloy material which melts the solder at a lower temperature level. Otherwise use a narrow tip hot air gun/rework station to remove the chip. This should help avoid lifting pads. Afterwards use copper desoldering braid to clean the pads before replacing the chip. Any kind of rework with wires should use single core wire (multicore is too bulky for thin PCB tracks). Also the usage of flux will help the solder flow
Yes, I know all that :)
This is the first board I made and it took a few retries to get things right. Unfortunately this means unsoldering the GAL to reprogram it sor each change... so it suffered a bit from these experiments.
I think the yellow wire goes to the ground plane. Initially the board was designed for 2MB chips, but due to the chis shortage at the time, only 1MB chips were available. So, the unused address bit is grounded.
Your problem will likely be with the orange wire, which either lets another extra address bit go to the memory chip, or force it to ground. Or maybe you can trace it back on the other side of the switch up to the register which stores the current memory configuration
Quoteunsoldering the GAL to reprogram it sor each change
Yeah that is a bit of a pain with SMD stuff. Okay I did a reflow of the components on both sides of the board and used single strand wires and put in positions you mention and all good
Now shows 1MB and now the expanded memory plus games can be used :)
Ok, it's nice that you could fix it by yourself :)
Hi
Actually I'm interested in 2MB expansion, but if it's not possible then I'm interested in 1MB one.
I was a bit busy this week. Both versions are available, I'll reply to your PM later today.
Hi
I'm interested in 2MB expansion (plus version).