News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_eto

CPC 6128 - internal upgrade to 320KB

Started by eto, 08:18, 12 October 22

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

eto

After following many discussions here and looking at some of the existing hardware projects, I got the idea, that it should be possible to upgrade the RAM of a 6128 internally while staying compatible with standard extensions. After trying out some ideas, I finally decided to upgrade a CPC 6128 to 320KB internally by replacing the second bank with 41256 RAM chips. The internal upgrade requires of course quite some soldering as we have to replace 8 RAM chips but is also relatively simple as we only need a bit of logic to drive the additional address line of the 41256 chips.

To be honest, I would not recommend this as a "good idea" to upgrade as it requires a lot of soldering. Probably other internal solutions would make more sense. But right now, I am not aware of any available (or at least documented) and compatible internal extension, so this is at least an option for those who consider doing an internal upgrade.

As this is my very first electronics project, chances are high, that something is not done correctly, so I would be happy for any helpful feedback to improve or correct this. I have currently tested this with Amstrad diagnostics (soak test) and a few 128K games. If there is any app I can test to ensure this extension behaves as expected, please let me know. I currently don't have a drive attached, so it should run from USIFAC. I thought I can use FutureOs or SymbOs but seems I can't run them from the USIFAC.

Process:

Part I: replacing the RAM

(1) replace 4164 chips of the second bank with new 41256 chips. It is recommended to use sockets and not solder them directly.
(2) connect pin 1 (=A8) of all new chips with a wire. (Note: In my picture, you can see that I have bent pin 1 of all chips upwards so that they don't connect the sockets. I think this is not the best solution as it seems that pin 1 is actually not connected on the motherboard. So one could also connect pin 1 of all chips on the backside of the motherboard and just put the 41256 into their sockets without bending up pin 1. )

At this point, you can test if everything has been correctly soldered by connecting the A8 wire to ground and turning on the computer. The CPC should boot now with 128KB as if normal 4164 chips would be used.

Part II: Adding the logic

(3) build a little add-on board according to the logic in the schematics. 
(4) connect A8 to the PCB (make sure to remove the connection from A8 to ground again that was done for testing)
(5) Connect CASADDR to pin 14 of IC109. Connect D3 to pin 2 of IC122 and D4 to pin 2 of IC123. (Note: Other positions on the motherboard will also work. E.g. If you have a motherboard with solder points for old and new gate array, it's probably shorter and better to use the connection for CASADDR of the empty socket. )
(6) connect all other required signals to the PAL. As I did not want to solder directly to the PAL I have used a new socket as a kind of adapter. The wires are soldered to this adapter-socket. The adapter-socket then is put into the PAL socket on the motherboard and the PAL is put into the adapter-socket.

If you have done everything correctly, the CPC will boot normally and Amstrad diagnostics should report 320KB and C3 compatibility.

Potential improvements:

1) A PCB would make the whole thing much easier and less error-prone.. It can be plugged into the PAL socket, so all the wires to the PAL will vanish. The has already been designed but if there are any useful recommendations, I can still add them and will then order a few.

2) With slightly more logic (5 or 6 ICs or a single additional PAL), I think it might also be possible to upgrade the 6128 to 512K (16 x 41256 chips) internally. However I also think that a PCB that can be plugged into the CPU socket will make more sense, so I'm not sure if I will give it a try.


Let me know if you think this makes sense at all or what can be done better. I will update the PCB with that information and order some soon. Once the PCBs are here and work I will add the documentation as a page to the Wiki and provide the Gerber files.

TotO

#1
Great achievement. Congratulations! We would have loved to find this in something like a German magazine in the 80s! :)

About your idea of using a PCB on the PAL socket, it can be more clean, but may be there is no enough room (case depth) to fit with the PAL again on a socket? About your idea to connect to the CPU socket, in this case it can be faster to disable the DRAM for SRAM.

I have done something close through the big CPLD (involving D5 and A8) for up to 1MB SIMM-30 on my second X-CPC version.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

eto

Thanks :-)

Quote from: TotO on 09:02, 12 October 22I have done something close through the big CPLD (involving D5 and A8) for up to 1MB SIMM-30 on my second X-CPC version.

About your idea of using a PCB on the PAL socket, it can be more clean, but may be there is no enough room (case depth) to fit with the PAL again on a socket? About your idea to connect to the CPU socket, in this case it can be faster to disable the DRAM for SRAM.
I have also thought about SIMM but it will never be a nice solution. It will always look like a mess, lots of cables, requires to handle the refresh and I have no Din/Dout so I have to handle that too. I think it's possible - but I also think it's much easier to plug an extension into the CPU socket - then of course with SRAM, not with DRAM. 

I was also worried about the height but currently I still have a few mm left between the PAL and the metal shield.

TotO

#3
Quote from: eto on 09:40, 12 October 22I have also thought about SIMM but it will never be a nice solution.
Sure. SIMM is only nice for a new design, because it save room with the footprint and it is easy to find from a old PC or whatever.

Quote from: eto on 09:40, 12 October 22I was also worried about the height but currently I still have a few mm left between the PAL and the metal shield.
True, the metal shield on the Centronics versions is a second problem. May be you can put the IC on the bottom side of the PCB, but at end better to do like you have done if the shield hide all the hack when the case is open. :D

And what about 256K for the GA/CRTC? :D (lovely CPC 6512)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

eto

Quote from: TotO on 09:44, 12 October 22True, the metal shield on the Centronics versions is a second problem. May be you can put the IC on the bottom side of the PCB, but at end better to do like you have done if the shield hide all the hack when the case is open. :D

And what about 256K for the GA/CRTC? :D (lovely CPC 6512)

I just checked and the space between the metal shield and the PAL might not be enough with another PCB layer. :-(

As long as I am using sockets, I end up in a situation where I might not have enough space. When I put the ICs on the bottom side of the PCB I would also not have enough space between PCB and motherboard.

I have two solutions in mind:
- solder ICs directly to the PCB (as I don't want to do that with the original PAL, I would have to program one)
- adapter PCB that goes into the PAL socket and (where my self made board is now) is then soldered on top of another PCB, which is then again a few mm lower, just above the resistors on the board. More soldering required but still much cleaner than lots of wires.

Regarding the 256K for GA/CRTC: I guess that would be incompatible with lots of programs. But what I think could work is, to use the additional 192K as further extended ram banks. 64K base ram and 448K extended RAM.




TotO

Quote from: eto on 11:34, 12 October 22I just checked and the space between the metal shield and the PAL might not be enough with another PCB layer. :-(

As long as I am using sockets, I end up in a situation where I might not have enough space. When I put the ICs on the bottom side of the PCB I would also not have enough space between PCB and motherboard.

I have two solutions in mind:
- solder ICs directly to the PCB (as I don't want to do that with the original PAL, I would have to program one)
- adapter PCB that goes into the PAL socket and (where my self made board is now) is then soldered on top of another PCB, which is then again a few mm lower, just above the resistors on the board. More soldering required but still much cleaner than lots of wires.
It is something expected. So, nice to have this 2x PCB solution to embeed it with less wires. :)

Quote from: eto on 11:34, 12 October 22Regarding the 256K for GA/CRTC: I guess that would be incompatible with lots of programs. But what I think could work is, to use the additional 192K as further extended ram banks. 64K base ram and 448K extended RAM.
It will be interresting to have extra banks used for the display. It require to extend MMR by using a 74HCT670 for example. ;)





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

eto

Quote from: TotO on 11:44, 12 October 22It will be interresting to have extra banks used for the display. It require to extend MMR by using a 74HCT670 for example. ;)
well... then maybe after I have "a bit" more experience ;-)

TotO

Quote from: eto on 12:11, 12 October 22well... then maybe after I have "a bit" more experience ;-)
Step by step. But, you have all the required skill to do it! ;)

Think that &C0 mode is four 16K areas defined with A14 and A15. With 256K memory, you have 16x 16K to map on those four banks. Using a 74*170 (may be better) or 74*670, you can define with 4-bit (D0 to D3) what is the 16K to map (0, 1, 2, 3 by default). ;)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

eto

#8
Schematics update (as it was missing the capacitors) and a wiring "diagram", where the wires need to go to.

eto

Update: PCBs arrived and good news: out of the box it worked.

Bad news: not for long. After a couple of iterations RAM was no longer accessed correctly. 

But since it was some quick and dirty soldering, I might just have a bad connection somewhere. 

I have put the PAL on the backside. By that this add-on will fit into a normal case, as long as the 3 cheap standard ICs are directly soldered to the PCB while the PAL can still be put into a socket. 

WacKEDmaN

really nice job eto

id really like to grab a PAL and make this sort of thing for a 464..but with single 512k SRAM..
your efforts will come in handy when i get around to do it! 

eto

Seems it was just one of the ICs. I replaced them and everything works. Now also with an alternativ wiring with much shorter wires.

I will let this run for a few hours and then do a final version without IC sockets that will then remain in the CPC. I will take pictures of all relevant steps and document the process in a new Wiki page. 



eto

Quote from: WacKEDmaN on 15:41, 26 October 22really nice job eto

id really like to grab a PAL and make this sort of thing for a 464..but with single 512k SRAM..
your efforts will come in handy when i get around to do it!
Guess what I already designed ;-)

But it's also in a very early stage and I have no proof yet that it works. I first wanted to get this running including a PCB. 

TotO

I like it because using 256K DRAM internaly was possible to be sold as it into the 80s.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

eto

Quote from: TotO on 17:23, 26 October 22I like it because using 256K DRAM internaly was possible to be sold as it into the 80s.
Not necessarily sold as it requires a lot of soldering (of the RAM chips). But this could have appeared in a CPC magazine as a DIY solution for a simple and compatible RAM upgrade. All you need is 8 RAM ICs and 3 standard logic ICs that you could get in any electronics store in the mid 80s.

There is that C'T 512KB upgrade which was published in the C'T magazine and  follows a similar idea but t requires to program a PAL and it's not compatible to DK'tronics. 

TotO

I mean "as it", like an official model. 6128, 6320. Not with the hack. ;)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

eto


eto

Update:

I tried to replace the first bank too and add its upper 192KB as RAM banks. The logic is of course more complex so standard ICs won't work any longer. I have a working POC with a secondary PAL that currently uses one additional RAM bank, so that I do now have a usable RAM size of 384KB.

Accessing the full 512KB should be possible but would require a different PAL logic than what I have currently - and a different PCB. However I honestly don't think that it's worth it to invest more time and money - and although I am still curious I will probably focus on something different .. hopefully more interesting  ;-) 


eto

Quote from: eto on 16:17, 02 November 22Accessing the full 512KB should be possible but would require a different PAL logic than what I have currently - and a different PCB. However I honestly don't think that it's worth it to invest more time and money - and although I am still curious I will probably focus on something different
Yeah... what the heck... I couldn't leave that unresolved.

CPC 6512 :-)

I have now replaced the 4164 chips of both RAM banks by 41256 Chips and have a total of 512KB RAM. 64KB basic RAM and 448KB extended RAM. The additional 192KB of the first bank behave like they would be extended RAM.

Unlike the 6320 it's no longer useful to use the original HAL. The board is still plugged into the HAL socket but a new PAL is now controlling all of the RAM. The second PAL you can see in the picture could also be replaced by a FlipFlop and one or two ICs, but the footprint of the final PCB would be much larger and there is not much benefit when you have to program a PAL anyway. A CPLD would of course also be an option, but I am not familiar with those (yet).

Besides the Amstrad diagnostics ROM, are there any RAM tests I could run to make sure access is really properly working? like copying stuff back and forth and see if it really always does it right?

TotO

Nice done! ;)
How do you get the RGBS wire signals from the RAM ? (just a joke)
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

WacKEDmaN


eto

#21
It was quite some fun to dive into this project and now it's finally done:

Full replacement of the original 64Kbit ICs with 256Kbit ICs. The original PAL is replaced by 2 new GALs on a small PCB.

The PCB is inserted into the PAL socket. Besides that, only 5 additional wires are required. A8 of all 41256 RAM chips is connected on the backside of the mainboard.

Disclaimer: It's more expensive than an external expansion and a lot of desoldering and soldering is required with quite some risk to damage something. Imho there are two aspects that might make it worth: if you want to avoid to have an external expansion or if you want to have a real retro expansion - one that could have done exactly like that in the 80s.


eto


GUNHED

That's a very well done documentation! Awesome!  :) :) :)
http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

TotO

"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