CPCWiki forum

General Category => Technical support - Hardware related => Topic started by: eto on 16:11, 09 September 24

Title: WIP: internal 512K expansion
Post by: eto on 16:11, 09 September 24
I'm currently working on an internal 512k expansion for the 6128 which can be plugged into the Z80 socket - no soldering required.

Today I got it finally working and it looks quite promising.

Not sure if that is of interest to anyone, but I will probably provide all information again on the Wiki for a DIY project. No special skills required, all will be normal through-hole components. However 2 GALs need to be programmed.

Next steps: 

Title: Re: WIP: internal 512K expansion
Post by: d_kef on 19:15, 09 September 24
Oh yes!
I'd certainly be interested in a DIY memory expansion.
Now where have I put those GALs? ;D

d_kef
Title: Re: WIP: internal 512K expansion
Post by: eto on 23:49, 09 September 24
@Prodatron Maybe you can help: I made several tests with the RAM (using all RAM tests I can find and writing my own tools) and to me it seems all modes are properly working.  However SymbOS stops loading after the logo. Could you maybe share any details which RAM mode  SymbOS is using?
Title: Re: WIP: internal 512K expansion
Post by: Devlin on 23:58, 09 September 24
That looks great, but could I recommend that some holes be factored into the board for plastic/rubber studs to prevent it from potentially sagging and coming loose and/or shorting parts under it? I'm certainly curious about getting one if it'll play nice with SymbOS in the final? design.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 06:57, 10 September 24
Can't you fit in one atf750?
Title: Re: WIP: internal 512K expansion
Post by: eto on 07:29, 10 September 24
Quote from: Devlin on 23:58, 09 September 24That looks great, but could I recommend that some holes be factored into the board for plastic/rubber studs to prevent it from potentially sagging and coming loose and/or shorting parts under it? I'm certainly curious about getting one if it'll play nice with SymbOS in the final? design.
Sure, good idea. I will do that.

The board in the picture is only a prototype version with lots of space for me to correct mistakes that I usually do while designing it ;-) . As you can see on the picture I had to add some wires as I mixed up some lanes and needed more signals than expected.

The final version will be less than half the size, thus much less prone to sagging. But there should be still some space for holes.

Anyway, once it eliably works incl. SymbOS I will make everything public so you can design your own PCB if you want. Even make it all SMD which probably could shrink things down to the size of the free area around the CPU.
Title: Re: WIP: internal 512K expansion
Post by: eto on 07:48, 10 September 24
Quote from: McArti0 on 06:57, 10 September 24Can't you fit in one atf750?
I probably could. What programmer/software would support that IC? I didn't really find an answer.

Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 07:59, 10 September 24
https://www.microchip.com/en-us/products/fpgas-and-plds/spld-cplds/pld-design-resources

WinCUPL. I'm getting ready for them only.

For now I'm doing exp ram 512 on SLG46533v-DIP 20. 

I absolutely only want to have one companion chip.
I'm soldering all these wires and crying.
Title: Re: WIP: internal 512K expansion
Post by: eto on 08:13, 10 September 24
And which programmer? The TL866-II doesn't support it.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 08:35, 10 September 24
https://forum.microchip.com/s/topic/a5C3l000000Mbh1EAC/t374951

There are big problems. Opinion from 2020. Maybe it's a dead end. 
Title: Re: WIP: internal 512K expansion
Post by: eto on 08:45, 10 September 24
Quote from: McArti0 on 08:35, 10 September 24https://forum.microchip.com/s/topic/a5C3l000000Mbh1EAC/t374951

There are big problems. Opinion from 2020. Maybe it's a dead end.
So it's not an option.

Of course there are a myriad of possibilities to do it but I wanted something that is
1) pure vintage
2) cheap
3) DIY friendly

(3) is only partially achieved as you still need a programmer, but as many own one or know someone who owns one, it should be okay.

If I would skip (1) I would probably base it on a RP2350B microcontroller board. 
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 09:18, 10 September 24
Quote from: eto on 23:49, 09 September 24@Prodatron Maybe you can help: I made several tests with the RAM (using all RAM tests I can find and writing my own tools) and to me it seems all modes are properly working.  However SymbOS stops loading after the logo. Could you maybe share any details which RAM mode  SymbOS is using?
SymbOS is using #C0, #C1, #C2 and #C4-#C7.
It tries to use #7Exx (second 512K) and #7Fxx (first 512K).

I guess you are testing with the 3.1 release and use the normal disc loader?
Does the loading process continue with the progress bar increasing or does it stop immediately after the logo is displayed?

I wonder if something could go wrong, if it tries to detect ram at #7Exx?
You could try SymbOS 3.0, which is only using the first 512K at #7Fxx:
https://symbos.org/download/20170830-V30/symbos-cpc.zip

Anyway I am very interested in this project, I like it if the memory expansion is inside the machine!
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 10:13, 10 September 24
Quote from: Prodatron on 09:18, 10 September 24SymbOS is using #C0, #C1, #C2 and #C4-#C7.
It tries to use #7Exx (second 512K) and #7Fxx (first 512K).
Is Symbos stable when 64kb banks are out of order? For example, there is only the second 512kb or 64+hole+448+64
Title: Re: WIP: internal 512K expansion
Post by: eto on 10:31, 10 September 24
Quote from: Prodatron on 09:18, 10 September 24
Quote from: eto on 23:49, 09 September 24@Prodatron Maybe you can help: I made several tests with the RAM (using all RAM tests I can find and writing my own tools) and to me it seems all modes are properly working.  However SymbOS stops loading after the logo. Could you maybe share any details which RAM mode  SymbOS is using?
SymbOS is using #C0, #C1, #C2 and #C4-#C7.
It tries to use #7Exx (second 512K) and #7Fxx (first 512K).

I guess you are testing with the 3.1 release and use the normal disc loader?
Does the loading process continue with the progress bar increasing or does it stop immediately after the logo is displayed?

I wonder if something could go wrong, if it tries to detect ram at #7Exx?
You could try SymbOS 3.0, which is only using the first 512K at #7Fxx:
https://symbos.org/download/20170830-V30/symbos-cpc.zip



I tried with 3.1 and (normal disc loader) and the 4 beta (from homepage and also the McArti version). 

3.1 stopped after the progress bar fully appeared incl. the approx. 2 character wide second line. Compared to the plain 6128 it was the moment before the logo disappears. With the expansion it just stops there. 

I will try the 3.0 this evening and see if that has an impact. 

I could successfully test so far: 

Some demos did not work but I suspect the Gotek to be the problem as I also had issues with a plain 6128. 
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 10:48, 10 September 24
Try tracing this place on WinAPE.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 10:52, 10 September 24
Quote from: McArti0 on 10:13, 10 September 24Is Symbos stable when 64kb banks are out of order? For example, there is only the second 512kb or 64+hole+448+64

It is scanning the banks from back to front. It first writes the numbers to all possible banks in the first 1MB and then reads them back. If banks are mirrored the lower will overwrite the higher values. From my experiences it was always detecting both holes and mirrored ones.
@eto, if you have no idea what's going wrong I will send you the source code of the scan routine (have to extract it and prepare it a little bit probably).
Title: Re: WIP: internal 512K expansion
Post by: eto on 11:16, 10 September 24
When does it scan the available memory? when the progress bar has finished or already before?
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 11:24, 10 September 24
Quote from: eto on 11:16, 10 September 24When does it scan the available memory? when the progress bar has finished or already before?
When it is finished.
Ops so it is hanging before... But it doesnt do any Magic before, strange, Just c4-c7
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 11:45, 10 September 24
What is the time between setting register 7F and using the memory. And at what address is the code?
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 12:18, 10 September 24
@eto try running the code in the extension. Reading the code is the shortest read from memory and takes only 1.5 clocks. Maybe it doesn't work.
Title: Re: WIP: internal 512K expansion
Post by: eto on 12:33, 10 September 24
Quote from: McArti0 on 12:18, 10 September 24eto (https://www.cpcwiki.eu/forum/profile/?u=3625) try running the code in the extension. Reading the code is the shortest read from memory and takes only 1.5 clocks. Maybe it doesn't work.
I did load a small program into Bank 7 and it properly worked. 

Also CP/M plus works fine.

But to be sure I could try with code above 128K.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 12:40, 10 September 24
You showed that you are doing 64+512 so I guess that's not it.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 13:32, 10 September 24
I grabbed the cpc specific stuff from the memory detection routine and attached it here.

If you assembler and execute it (CALL &8000) on a CPC with 512K expansion (576K in total) you should get the following memory dump starting at #81a5. It shows, that the first 8x64K banks are available, the next 7x64K banks are not free (the SymbOS memory map is using 1bit/256 byte page).

On a real cpc you could write a little basic program to peek the values from &81a5 to &8384 (480 bytes).



memmap.png
Title: Re: WIP: internal 512K expansion
Post by: eto on 18:16, 10 September 24
Quote from: Prodatron on 13:32, 10 September 24I grabbed the cpc specific stuff from the memory detection routine and attached it here.
that's indeed the routine where it crashes! It sets the screen mode to MODE 1 without clearing the screen and freezes. I'll check what's happing. I probably missed something important.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 18:34, 10 September 24
D6 & D7 =1  !!!!!
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:02, 10 September 24
Quote from: McArti0 on 18:34, 10 September 24D6 & D7 =1  !!!!!
it doubt that it would work at all if I would not properly check for d6&d7=1
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:45, 15 September 24
finally it works also with SymbOS :-)

and Pinball Dreams runs too.

I had a tiny little bug in the MREQ signal which probably messed up the GateArray logic. Honestly I'm not really sure why it worked most of the time.

@Prodatron thanks a lot for the source code. It gave me a quick way to test if adaptions to the PAL were helpful or not - and that was key to success.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 22:55, 15 September 24
Quote from: eto on 22:45, 15 September 24finally it works also with SymbOS :-)

and Pinball Dreams runs too.

I had a tiny little bug in the MREQ signal which probably messed up the GateArray logic. Honestly I'm not really sure why it worked most of the time.

@Prodatron thanks a lot for the source code. It gave me a quick way to test if adaptions to the PAL were helpful or not - and that was key to success.
Oh great, fantastic news, thanks for your work! As I love internal expansion this sounds really cool to me!
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 23:48, 15 September 24
MREQ was an input but also an output?  ;)
Title: Re: WIP: internal 512K expansion
Post by: eto on 07:54, 16 September 24
Quote from: McArti0 on 23:48, 15 September 24MREQ was an input but also an output?  ;)
MREQ from the CPU no longer goes directly to the board. MREQ from the CPU is an input and there is an output MREQout which goes to the motherboard/Gate Array. I didn't deal correctly with the MREQ signals during WAIT which are probably somehow used by the Gate Array.
Title: Re: WIP: internal 512K expansion
Post by: abalore on 11:10, 16 September 24
Are those GALs 16V8B ? Probably they can be replaced by a single EPM7032STC44. And also use SMD ICs for much smaller board, although you stated you prefer through-hole.

If you make the project public I will add a public, full SMD, single CPLD version too.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 11:59, 16 September 24
Quote from: abalore on 11:10, 16 September 24Probably they can be replaced by a single EPM7032STC44.
What is the minimum setup cost to program the chip?
Title: Re: WIP: internal 512K expansion
Post by: abalore on 12:14, 16 September 24
Quote from: McArti0 on 11:59, 16 September 24
Quote from: abalore on 11:10, 16 September 24Probably they can be replaced by a single EPM7032STC44.
What is the minimum setup cost to program the chip?

A USB Blaster JTAG programmer, around 2 euro on AliExpress. The software is free, Quartus II 13.0sp1.

PD: The software is much better than the nightmare of Wincupl and all other Microchip software.

PD2: Also you can use the EPM3032ATC44 version for 3V3 projects, with 5V compatible inputs and outputs

PD3: It's pin-to-pin compatible and direct replacement for the Microchip ATF1502
Title: Re: WIP: internal 512K expansion
Post by: 00WReX on 13:54, 16 September 24
Quote from: eto on 22:45, 15 September 24finally it works also with SymbOS :-)

and Pinball Dreams runs too.

I had a tiny little bug in the MREQ signal which probably messed up the GateArray logic. Honestly I'm not really sure why it worked most of the time.

@Prodatron thanks a lot for the source code. It gave me a quick way to test if adaptions to the PAL were helpful or not - and that was key to success.
Awesome 👌 
Looking forward to making a few  :)
Title: Re: WIP: internal 512K expansion
Post by: abalore on 14:15, 16 September 24
Quote from: eto on 22:45, 15 September 24finally it works also with SymbOS :-)

and Pinball Dreams runs too.

I had a tiny little bug in the MREQ signal which probably messed up the GateArray logic. Honestly I'm not really sure why it worked most of the time.

@Prodatron thanks a lot for the source code. It gave me a quick way to test if adaptions to the PAL were helpful or not - and that was key to success.
What makes R-Type 128K and Pinball Dreams special? Do they use more memory to preload stuff if available?
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 14:37, 16 September 24
one internal PCB
512kB
Cmos Z80
Hardware patch out (c),0
Turbo 16MHz for omit 4clocks limitation per cycle for few opcode. (ADD HL,ss ; PUSH ss e.t.c. [8 clocks per 5 clocks cycle])
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:47, 16 September 24
Quote from: abalore on 11:10, 16 September 24And also use SMD ICs for much smaller board, although you stated you prefer through-hole.
The goal is to make it easy to replicate and as cheap as possible. If you own a soldering iron and an Eprom programmer, you can build this expansion. 

First I wanted to avoid SMD, but at least for the SRAM I have to switch to SMD as otherwise I cannot make the board small enough to fit into the 6128 - at least not if ROM or RAM are socketed - which might be the case if the 6128 was repaired at some point. For the 464/664 version (coming later) full through hole will be good enough. 

For the GALs I will not switch to SMD as it then requires special equipment to program them and the current solution will already fit fine into the 6128.

Quote from: abalore on 11:10, 16 September 24EPM7032STC44
As this will probably be my last project and I don't intend diving into FPGA. The 2 GALs work fine, size is fine - and the GALs will probably stay cheap and easily available for many more years.

QuoteWhat makes R-Type 128K and Pinball Dreams special? Do they use more memory to preload stuff if available?

Nothing special with those games but I could not start Pinball Dreams while I had the bug. Now it works.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 10:45, 17 September 24
Do you still have space in IC GAL to add a latch to A8 and make a 128+512kB version? A8 to disable cs and RAMDIS only.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 15:54, 17 September 24
Will this kind of RAM expansion work with FutureOS too?
Title: Re: WIP: internal 512K expansion
Post by: eto on 18:04, 17 September 24
Quote from: McArti0 on 10:45, 17 September 24Do you still have space in IC GAL to add a latch to A8 and make a 128+512kB version? A8 to disable cs and RAMDIS only.
Might be possible but it would need a complete redesign and the benefit is quite small. I'm still waiting for software that only shines with 512K of RAM so I guess it doesn't matter if you have 512K, 576K or 640K. If more RAM is required I would anyway rather add another SRAM. On my PCB there is not enough space but with an FPGA version as Abalore suggested it probably would be easy to use more and/or bigger SRAM ICs.
Title: Re: WIP: internal 512K expansion
Post by: eto on 18:05, 17 September 24
Quote from: GUNHED on 15:54, 17 September 24Will this kind of RAM expansion work with FutureOS too?
Unless I didn't recognize another bug, it should work. C3 is supported on the 6128. 

I also already sketched the logic for the 464/664 version to support C3 (as usual with shadow RAM), but I haven't made anything else yet. 
Title: Re: WIP: internal 512K expansion
Post by: eto on 18:29, 17 September 24
PCB has been redesigned to fit into the 6128 with closed case. I'm not sure yet if it's possible use a socketed Z80 or if it's necessary to solder a Z80 directly to the board. I'll do some tests when the boards arrive.
Title: Re: WIP: internal 512K expansion
Post by: HAL6128 on 20:05, 17 September 24
Looks very promising. Nice design.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 20:14, 17 September 24
Looks very professional  :) :) :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:23, 17 September 24
Quote from: GUNHED on 15:54, 17 September 24Will this kind of RAM expansion work with FutureOS too?
I used the installer for M4 from your homepage and FutureOs starts both with the 128K standard RAM and if I connect the 512K expansion.

However I have absolutely no clue how to do any further tests. I can't navigate to the M4 directory and otherwise there is not much available. Maybe the installation was not correct but no idea what went wrong as I couldn't find a documentation for the M4 installation and just tried run"disc in the installer directory.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 12:52, 18 September 24
Quote from: eto on 22:23, 17 September 24
Quote from: GUNHED on 15:54, 17 September 24Will this kind of RAM expansion work with FutureOS too?
I used the installer for M4 from your homepage and FutureOs starts both with the 128K standard RAM and if I connect the 512K expansion.

However I have absolutely no clue how to do any further tests. I can't navigate to the M4 directory and otherwise there is not much available. Maybe the installation was not correct but no idea what went wrong as I couldn't find a documentation for the M4 installation and just tried run"disc in the installer directory.

You can klick at the IDE Icon (yes, I need to paint a M4 one ;-)!). Or you can use hotkey 'H'. That's now described in the Quick-Start-Manual (attached  :)).

Looking at your pictures, the installation worked well (because it also shows the IDE icon for mass storage).

To navigate please use the mouse arrow (or hot keys). You can use Cursor keys + Copy. Or a joystick, or a mouse. (Some mice must be configured and activated using 'Konfig-OS').

You can use the tool 'OS-Infos' to display the available RAM up to 4 MB. There are two screens, first for the 512 KB expansion (the second for all 4 MB in one picture).
Title: Re: WIP: internal 512K expansion
Post by: eto on 09:06, 19 September 24
Quick update: 

The 464/664 versions seems to be working too. I only did a few short tests as it was pretty late already but neither SymbOS nor Amstrad Diagnostics complained about the 464 version. C3 mode works too - but of course shadow mode is still required so 512K of RAM in total and not the 576K from the 6128 version. 


Side question:

Are there any SRAMs with more than 512K that
?

I could find some 1Mbit ICs but they are in TSOP form factor and might not be easy for everyone (incl. me). 
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 10:00, 19 September 24
If you don't add A8 support you will kill ..128kB VRAM option for crtc forever. And I believe that Prodatron will somehow add a driver for it someday and there will be SymbOS overscan on CPC. ??? :'( :-X :picard: ::)
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 10:33, 19 September 24
Oh, I totally forgot about your 128K CRTC hack, but I wonder if this will every be a new standard :) Problem with having screen ram in the 2nd 64K bank is, that you can't switch both the screen ram and any other block from the ram expansion into the visible area at the same time. So it would be a very slow driver, and eto don't need to worry about it.
Title: Re: WIP: internal 512K expansion
Post by: eto on 11:02, 19 September 24
Quote from: McArti0 on 10:00, 19 September 24If you don't add A8 support you will kill ..128kB VRAM option for crtc forever.
It would be really surprising that of all the RAM expansions out there, who all do not support the 128kB VRAM, all of a sudden mine will kill the 128kB option. Seriously, I doubt that this expansion will be a game changer. Who needs more RAM already has an expansion. Only a few nerds like myself who "dislike" external RAM expansions will prefer this over an external expansion.

But that doesn't mean it won't be possible: the CPC6128 version has plenty of pins available for you to modify the PCB and logic so you can probably easily adapt it to support the 128K VRAM


Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 12:21, 19 September 24
Quote from: eto on 11:02, 19 September 24Seriously, I doubt that this expansion will be a game changer.
Who needs more RAM already has an expansion.
I do not have and do not see on the market an obvious device called RAM for 6128 without a sauna, jacuzzi and helicopter landing pad.  :laugh: 
ps. I hate make PCB.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 16:46, 19 September 24
Quote from: eto on 09:06, 19 September 24Side question:
Are there any SRAMs with more than 512K that
  • are 5V compatible
  • easy to solder
  • cheap
DS1265 nvsram EDIP-36 (A little bit tall) :laugh:
Title: Re: WIP: internal 512K expansion
Post by: eto on 19:16, 19 September 24
Quote from: McArti0 on 16:46, 19 September 24DS1265 nvsram EDIP-36 (A little bit tall) :laugh:
and a little bit incompatible ;-)
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 19:33, 19 September 24
Quote from: eto on 19:16, 19 September 24and a little bit incompatible ;-)
Why? https://www.analog.com/media/en/technical-documentation/data-sheets/DS1265AB-DS1265Y.pdf

I thought how much a working SRAM with a broken NV would cost.

btw: cheapest is piggyback 2x512kB and separate CE.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 20:52, 19 September 24
Then go got 4 MB all together. So it makes really sense: With 4 MB internal, no external additional RAM extension would be needed. 
Title: Re: WIP: internal 512K expansion
Post by: eto on 00:00, 20 September 24
Quote from: McArti0 on 19:33, 19 September 24btw: cheapest is piggyback 2x512kB and separate CE.
piggyback won't work in the 6128. Simply not enough space between PCB and keyboard 

Quote from: McArti0 on 19:33, 19 September 24Why? https://www.analog.com/media/en/technical-documentation/data-sheets/DS1265AB-DS1265Y.pdf (https://www.analog.com/media/en/technical-documentation/data-sheets/DS1265AB-DS1265Y.pdf)
ah okay, I only found the 3.3V version. But did you check availability and prices? A Ram expansion doesn't make sense if the parts are not available easily or expensive.



Title: Re: WIP: internal 512K expansion
Post by: eto on 00:05, 20 September 24
Quote from: GUNHED on 20:52, 19 September 24Then go got 4 MB all together. So it makes really sense: With 4 MB internal, no external additional RAM extension would be needed. 
I probably can get up to 1MB at least for the 6128 version with 2 SRAMs. Anything beyond that requires different SRAMs.

Do you have a recommendation for the right SRAM IC? It should be


Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 00:17, 20 September 24
Quote from: McArti0 on 16:46, 19 September 24
Quote from: eto on 09:06, 19 September 24Side question:
Are there any SRAMs with more than 512K that
  • are 5V compatible
  • easy to solder
  • cheap
But I crossed out the "cheap"  :laugh:

~30EURO/USD
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 00:36, 20 September 24
Quote from: eto on 00:00, 20 September 24piggyback won't work in the 6128. Simply not enough space between PCB and keyboard

Maybe this way?
Title: Re: WIP: internal 512K expansion
Post by: eto on 19:41, 24 September 24
Update: I could modify the prototype to test if a 1MB expansion is feasible for the 6128 and it probably can be done as the 2 GALs provide enough logic features for it. 

The final version will then be a single PCB which can be equipped with either 1 or 2 SRAMs and provide 512K or 1024K of expanded RAM.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 20:49, 24 September 24
Very cool, 1MB would be amazing!
Title: Re: WIP: internal 512K expansion
Post by: eto on 10:23, 30 September 24
Update: The "beta" PCBs arrived last week - and of course I selected the wrong package size for the SRAM ICs.  :doh:

Anyway - at least I could confirm the PCB size and how much space I have. On the plus side I could confirm that I do have enough space for a full through-hole version even in the 6128. The same PCB size will also work for a 1MB version with 2 SMD SRAM ICs.

The (hopefully) final plan is now:

For the CPC 6128:

For the CPC 464/664:



Notes:


The first revision of the iRAM/512 PCBs will hopefully show up next week. The second revision of the iRAM/576 will probably need another week at least as JLCPCB is not working Oct 1st-3rd and it's unclear when the PCBs will be made/shipped. 


I might need some beta testers that are willing to try it out in their CPC. Please think about it if you would like to help by doing an intense test of the expansion. Best would be if you have several use cases - and the willingness to install and test within 2 weeks after receiving the expansions. After the test you can keep the expansion of course. I'll make a separate post once I am ready to start the beta test, so no need to send messages already ;-)





Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 11:21, 30 September 24
Sorry to hear from the bad luck with the SRAM package size.  ??? But go on with your great work, it's just amazing what can be done!  :) :) :)
Title: Re: WIP: internal 512K expansion
Post by: HAL6128 on 13:41, 30 September 24
Nice development. Do you have in mind what kind of test cases do you want to run?
. I couldn't support but only have some 6128 around.

Title: Re: WIP: internal 512K expansion
Post by: eto on 14:04, 30 September 24
Quote from: HAL6128 on 13:41, 30 September 24Do you have in mind what kind of test cases do you want to run?
My problem is that I am not really aware of which software takes advantage of expanded RAM over 128K. And for the few I found I'm not sure that I really can verify that it is working properly. E.g. I had the situation that it already worked and I thought it's fine as all RAM tests were successful. But then I recognized that some apps failed to run. SymbOS did not start as it failed during its internal RAM test - and Pinball Dreams failed. Everything else worked.

As I do not really have experience with expanded RAM software I would love to leverage the experience of anyone who is or was a heavy user of such software. E.g. I never used SymbOS before so any tests I do with SymbOS I would not see as reliable for all edge cases. So any SymbOS heavy user who knows how to use all the available RAM properly would be a great use case. Or RAM disk users. I couldn't find a RAM disk that uses all of the expanded RAM up to 1MB. And even if I would find one, I would not know how to fill it and then properly test it.

And except for those two use cases I actually don't even have an idea what other apps could exist that are using more than 128 or maybe 256K of RAM.

Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 17:13, 30 September 24
Quote from: eto on 14:04, 30 September 24any tests I do with SymbOS I would not see as reliable for all edge cases. So any SymbOS heavy user who knows how to use all the available RAM properly would be a great use case.
When you run SymbOS and start at least one application you can be sure, that ALL modes are used with the exception of #C3.
#C1 is always used for accessing the form data by the Desktop Manager, #C2 always while an app is executed, and #C4-#C7 for accessing the ram >64K by the kernel. When you start as many programs as possible until the 576/1024K is completely filled, you know that it uses all 64K banks with all these modes (#C1,#C2,#C4-#C7).
So this would already be a very intensive test with nearly all "edge cases".


Quote from: eto on 14:04, 30 September 24Or RAM disk users. I couldn't find a RAM disk that uses all of the expanded RAM up to 1MB. And even if I would find one, I would not know how to fill it and then properly test it.
I am pretty sure that any RAM disc implementation is only using #C4-#C7, but not #C1 and #C2, as these don't make sense for a RAM disc.


Quote from: eto on 14:04, 30 September 24And except for those two use cases I actually don't even have an idea what other apps could exist that are using more than 128 or maybe 256K of RAM.
"Crime" (by Crown) is using more than 128K for copying discs.
I know my old CPC Word (http://www.prodatron.net/details.htm?8), which can use the full classic 576K for loading/editing text :)
But both are only using #C4-#C7 as well.

IIRC we had a thread here in the forum for listing all known programs, which are using more than 128K, but I would have to search for it first.
Title: Re: WIP: internal 512K expansion
Post by: eto on 21:24, 30 September 24
Quote from: Prodatron on 17:13, 30 September 24When you run SymbOS and start at least one application you can be sure, that ALL modes are used with the exception of #C3.
#C1 is always used for accessing the form data by the Desktop Manager, #C2 always while an app is executed, and #C4-#C7 for accessing the ram >64K by the kernel. When you start as many programs as possible until the 576/1024K is completely filled, you know that it uses all 64K banks with all these modes (#C1,#C2,#C4-#C7).
So this would already be a very intensive test with nearly all "edge cases".
Seems SymbOS is the "best RAM test" available ;-)

Thanks for explaining the details. I'll try it.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 12:37, 01 October 24
Quote from: eto on 21:24, 30 September 24
Quote from: Prodatron on 17:13, 30 September 24When you run SymbOS and start at least one application you can be sure, that ALL modes are used with the exception of #C3.
#C1 is always used for accessing the form data by the Desktop Manager, #C2 always while an app is executed, and #C4-#C7 for accessing the ram >64K by the kernel. When you start as many programs as possible until the 576/1024K is completely filled, you know that it uses all 64K banks with all these modes (#C1,#C2,#C4-#C7).
So this would already be a very intensive test with nearly all "edge cases".
Seems SymbOS is the "best RAM test" available ;-)

Thanks for explaining the details. I'll try it.
And for true CPC6128-compatible RAM configuration you can use FutureOS. In case there are problems the mouse arrow will leave traces on the screen.  :) :) :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 14:06, 01 October 24
Quote from: GUNHED on 12:37, 01 October 24And for true CPC6128-compatible RAM configuration you can use FutureOS. In case there are problems the mouse arrow will leave traces on the screen. 
Already tested. C3 works. 
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 13:42, 02 October 24
As usual you did a great job!  :) :) :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 21:14, 10 October 24
So the 464 version is here and I can properly run the RAM tests - but I'm not really sure if it really works as the only option I have on the 464 with the internal RAM is an M4 and I have no experience with it, so I don't know if the disk images I am using are the problem or the M4 - or if the RAM expansion doesn't work.


@GUNHED how can I start FutureOs from M4 on a 464? It is installed in ROM 10 and above but ROM 10 doesn't get initialised on the 464.

@Prodatron What's the best solution to run SymbOS from M4? I could mount a DSK but then I could not figure out how to start a program - I only get the error that no program can be found.
Title: Re: WIP: internal 512K expansion
Post by: d_kef on 21:23, 10 October 24
M4 supports replacing the lower ROM as well.
So just install the 6128 ROMs and FutureOS will be initialized.

d_kef
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 22:16, 10 October 24
Quote from: eto on 21:14, 10 October 24I could mount a DSK but then I could not figure out how to start a program - I only get the error that no program can be found.
Try rename sym. to sym.bas

Did you use a 180kB DATA disk?
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:29, 10 October 24
Quote from: McArti0 on 22:16, 10 October 24Did you use a 180kB DATA disk?
Sorry, I wasn't clear. I can start SymbOS 3.1. from the DSK image but when I am in SymbOS I can't start any other program there as I don't know how to access the application disk when I am in SymbOS. 
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 22:32, 10 October 24
Ah. did you use the second DATA Application disk?

And you can try found exe by menu Run...

Try my Big dsk too. I wonder if the M4 will chew it up.

ps. you cant change dsk?
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:50, 10 October 24
Quote from: McArti0 on 22:32, 10 October 24Ah. did you use the second DATA Application disk?
I switched to the first disk in AMsdos, then I start SymbOS - and then I can't "insert" the application disk. I only have the M4 and no disk drive. 

Quote from: McArti0 on 22:32, 10 October 24Try my Big dsk too. I wonder if the M4 will chew it up.
doesn't work. M4 shows dozens of 0KB files without any name.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 22:57, 10 October 24
check out something more typical. 720kB
Title: Re: WIP: internal 512K expansion
Post by: prevtenet on 06:06, 11 October 24
I believe it's more common to run SymbOS from mass storage on the M4, rather that using a disk image. The SymbOS CPC download package has a .ZIP file with a complete installation you can extract to the M4's SD card.
Title: Re: WIP: internal 512K expansion
Post by: HAL6128 on 09:18, 11 October 24
Quote from: eto on 22:50, 10 October 24
Quote from: McArti0 on 22:32, 10 October 24Ah. did you use the second DATA Application disk?
I switched to the first disk in AMsdos, then I start SymbOS - and then I can't "insert" the application disk. I only have the M4 and no disk drive.

Quote from: McArti0 on 22:32, 10 October 24Try my Big dsk too. I wonder if the M4 will chew it up.
doesn't work. M4 shows dozens of 0KB files without any name.
There's a SymbOS for mass storage (M4) prepared where you don't need a floppy. It must be in the download container in the SymbOS website.
Title: Re: WIP: internal 512K expansion
Post by: eto on 09:37, 11 October 24
Okay, I try this. Wasn't obvious to me that this is for M4 too. But hey, I never used the M4 before.

Quote from: McArti0 on 22:57, 10 October 24check out something more typical. 720kB
thanks, I'll give it a try.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 10:13, 11 October 24
Quote from: eto on 21:14, 10 October 24@Prodatron What's the best solution to run SymbOS from M4? I could mount a DSK but then I could not figure out how to start a program - I only get the error that no program can be found.

Just download this:

http://www.symbos.de/download.htm#marke0
http://www.symbos.de/download/20211230-V31/symbos-cpc.zip

There is "a complete installation for the M4Board" included, you only need to copy the files/directory of "SymbOS-CPC-MassStorage" to the root of your SD card and then...

RUN"SYM

that's it!

PS: Yes, I am a bit late, Prevtenet/HAL6128 were right!
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 11:57, 11 October 24
Ver 2.04 M4 "Fix DSK file size 0 bug"

Ps. If Duke didn't know about IBM disk support, M4 might not shot in the directory.
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:33, 13 October 24
Quote from: Prodatron on 10:13, 11 October 24There is "a complete installation for the M4Board" included, you only need to copy the files/directory of "SymbOS-CPC-MassStorage" to the root of your SD card and then...

RUN"SYM

that's it!

Thanks... I have put the contents into a subfolder - which didn't work but now I have moved it to the root folder and it worked.

Good and bad news:

I need to check the logic for the RAM shadowing - or skip C3 mode for now.

Which software needs C3? I am only aware of Future OS. Any games that require it?

Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 22:55, 13 October 24
#C3 only makes sense for ROM software accessing the "VRAM" in read mode.
I guess 99,9% of any CPC software will work fine without #C3.
No disc-based games are using this, as it doesn't make any sense.
IIRC CP/M Plus may use it (without any reasons as you can have a very fast 63K TPA (http://www.symbos.de/cpvm.htm) without this mode as well  :D ).
Title: Re: WIP: internal 512K expansion
Post by: ajcasado on 23:53, 13 October 24
Quote from: eto on 22:33, 13 October 24I need to check the logic for the RAM shadowing - or skip C3 mode for now.

Which software needs C3? I am only aware of Future OS. Any games that require it?
The FUZIX port uses C3 for accessing the video ram, but as it doesn't run code on ROM the shadowing is not needed. I run it on a 664 with the Z-MEM from TotO without problems,
Title: Re: WIP: internal 512K expansion
Post by: eto on 14:45, 14 October 24
Getting closer...

The second version of the 6128 board technically works - however I have put the ICs too close together and need to give them a bit more space.

So... another 2 weeks ;-)



 
Title: Re: WIP: internal 512K expansion
Post by: SerErris on 15:08, 14 October 24
Is the green cable just a botch wire to adjust for some errors, or is this a permanent thing to connect to the original mainbord?
Title: Re: WIP: internal 512K expansion
Post by: eto on 15:42, 14 October 24
Quote from: SerErris on 15:08, 14 October 24s the green cable just a botch wire to adjust for some errors, or is this a permanent thing to connect to the original mainbord?
A fix for a fix ;-) I was not sure if I had an error and had to cut a trace to try that out - just to recognize it was a mixup of pins in the PAL equations. So this cable fixes the "fix".

So still no wire required to plug this into the 6128.

Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 22:14, 14 October 24
Quote from: eto on 21:14, 10 October 24@GUNHED how can I start FutureOs from M4 on a 464? It is installed in ROM 10 and above but ROM 10 doesn't get initialised on the 464.

Shall be easy... I hope...
- Get the new installer DSK from www.FutureOS.de (click left at downloads)
- Start the installer with run"disc
- Select as target device the M4 and CPC (not the Plus version)
- Do a hard-reset: Switch your CPC on and off (including M4 power supply)
- Start FutureOS using command |os

That's it.  :) :) :)

Comments:
- On CPC464 the first FutureOS ROM (A) needs a ROM number lower than 8. Or you can use the CPC6128 firmware+BASIC, then ROM A can have any ROM number (0-15). The other ROMs can have any number (1-255)
- There is a folder for the M4 SD-card (see downloads at www.FutureOS.de) which contains all stuff for FutureOS. Just put that folder in the rood directory of your M4 SD-card. Under FutureOS use the IDE / mass storage icon or hot key "a" to access the mass storage features.
Title: Re: WIP: internal 512K expansion
Post by: SerErris on 09:00, 18 October 24
As Gunhead wrote, you just need to put the first ROM in slot 0-7.

If you have a disk controller 7 is used and 6 would be appropriate. CPC 464 does not initialize anything higher than 7. That is why you do not see anything if you assign it to rom number 10.

You could manually call the init routine - however, it is easier to put the first rom to anything the 464 sees by default.
Title: Re: WIP: internal 512K expansion
Post by: eto on 09:57, 18 October 24
Quote from: SerErris on 09:00, 18 October 24You could manually call the init routine - however, it is easier to put the first rom to anything the 464 sees by default.
I am aware of that but the FutureOs installation copies the ROM to #10 - and that doesn't work on the 464.

I didn't try the 6128 ROM yet. Maybe that will help. 

Quote from: GUNHED on 22:14, 14 October 24- Get the new installer DSK from www.FutureOS.de (https://www.cpcwiki.eu/forum///www.futureos.de) (click left at downloads)
I don't have a disk drive on the 464. 
Title: Re: WIP: internal 512K expansion
Post by: SerErris on 11:00, 18 October 24
If you use the 6128 OS Rom in a 464, than it will work - remember to also put in the 6128 Basic as well (upper 0), otherwise it will crash.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 12:27, 18 October 24
Quote from: eto on 09:57, 18 October 24
Quote from: SerErris on 09:00, 18 October 24You could manually call the init routine - however, it is easier to put the first rom to anything the 464 sees by default.
I am aware of that but the FutureOs installation copies the ROM to #10 - and that doesn't work on the 464.

I didn't try the 6128 ROM yet. Maybe that will help.

Quote from: GUNHED on 22:14, 14 October 24- Get the new installer DSK from www.FutureOS.de (https://www.cpcwiki.eu/forum///www.futureos.de) (click left at downloads)
I don't have a disk drive on the 464.
The installation of FutureOS allows you to select ROM-numbers of course!  :)

For a typical CPC464 with &C3-compatible RAM expansion, you would select a ROM number between 0 and 7 for ROM A. And for the other ROMs (B, C, D, M4) just take what you want.
If ROM A goes to ROM slot 0, then autostart after Reset is active.  :)

If you have only tape on CPC464 it makes no sense anyway, since FutureOS is working with discs/hard-discs. Or with floppy-emulators. (Or, from M4 SD-card, installers are in 'FutureOS' folder there too).

Sorry for getting off-topic, hope this can help a bit. :)

Title: Re: WIP: internal 512K expansion
Post by: eto on 01:49, 11 November 24
Update: the latest PCBs were stuck in transit for almost 2 weeks - but they finally arrived and I could do some further tests and check if it's possible to use the internal 2nd RAM bank on top of the 512k SRAM - and indeed it seems to work. So it should be possible to upgrade a 6128 to 640K internally - still no soldering required.

Upgrade process will be simple:
1) take CPU out of the socket on the MB and put  it into the socket of the expansion board
2) put the expansion board into the CPU socket on the MB
3) optional: add a disable-switch to disable the RAM expansion from outside (black/red wire in last picture)

If disable via the switch the 6128 will behave exactly like if no RAM expansion was built in.

I have to make another revision of the board as I need to adapt some traces in order to make the 640K version work (green wires in last picture) and the space in the 6128 is so tight that I need to move the CPU 2mm up to make sure that there is no chance of collision with the keyboard.

I guess it will take another 4 weeks until the next update.
Title: Re: WIP: internal 512K expansion
Post by: eto on 01:50, 11 November 24
one picture was missing...
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 08:45, 11 November 24
So you have a 64+512+64 organization where for A8=1 internal second 64kB works. Right?
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 09:01, 11 November 24
Great news, thanks for sharing!
One of those cool projects that makes you wonder why no one has done it this way before.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 09:28, 11 November 24
@eto do you have RAMDIS connected as OpenEmiter, i.e. only +5V with 2.5mA output and no GND?
Title: Re: WIP: internal 512K expansion
Post by: eto on 10:27, 11 November 24
Quote from: McArti0 on 08:45, 11 November 24So you have a 64+512+64 organization where for A8=1 internal second 64kB works. Right?
A8 = 1 => SRAM  (&7f00)
A8 = 0 => internal second RAM (&7e00)

the other way around the SRAM would not be visible for software that only supports the usual 576K max.

Quote from: McArti0 on 09:28, 11 November 24@eto do you have RAMDIS connected as OpenEmiter, i.e. only +5V with 2.5mA output and no GND?
I originally tried with RAMDIS but that would have required soldering as RAMDIS is not available on the CPU socket. I'm now interrupting the MREQ signal to prevent the GateArray from creating the memory access signals when the SRAM is accessed.

Title: Re: WIP: internal 512K expansion
Post by: eto on 10:35, 11 November 24
Quote from: Prodatron on 09:01, 11 November 24One of those cool projects that makes you wonder why no one has done it this way before.
That's exactly the question why I originally started it (and because I don't like the external RAM expansions).

But to be honest if I would have known how much work it is to figure everything out, I would not have started it.

Title: Re: WIP: internal 512K expansion
Post by: eto on 15:18, 11 November 24
First stable 464 version...

This one is with 576K in total but no C3 support.
Title: Re: WIP: internal 512K expansion
Post by: eto on 00:05, 31 December 24
The CPC 6128 version is finished. I didn't find the time to fully document it yet but that should happen over the next few weeks. The final documentation including DIY instructions will be published here: https://www.cpcwiki.eu/index.php/CPC_iRAM

The first fully assembled expansion (the unofficial #1) is available on Ebay. In case you're interested, just search for "CPC iRAM".
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 00:15, 31 December 24
Quote from: eto on 00:05, 31 December 24The CPC 6128 version is finished. I didn't find the time to fully document it yet but that should happen over the next few weeks. The final documentation including DIY instructions will be published here: https://www.cpcwiki.eu/index.php/CPC_iRAM.
Fantastic work, thanks a lot for all this!
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 08:09, 31 December 24
Now all we need to do is add out hardware patch for CMOS. 8)
... and turbo
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 12:52, 03 January 25
@eto I really like a lot the iRAM 640 design, because it looks like something you can buy into the 80s. :)
@McArti0 People using it already have the NMOS CPU. A great feature will be to unlock the 128K VRAM.
Title: Re: WIP: internal 512K expansion
Post by: eto on 14:51, 03 January 25
Quote from: Egg Master on 12:52, 03 January 25eto (https://www.cpcwiki.eu/forum/profile/?u=3625) I really like a lot the iRAM 640 design, because it looks like something you can buy into the 80s. :)
Thanks ;-) To be honest, I think it really only looks like it could have been done. While it does only use "ancient" components I don't think this particular one would have been feasible in the 80s. I had a quick look and I couldn't find anything bigger than 32KB in a 1989 magazine. In 1992 I could at least find a 1Mbit SRAM but no 4MBit version yet. So I'm not sure when even in theory it would have been an option to use in a RAM expansion. 

Also the PCB is crammed with lanes. All manually routed and very few vias which seems like doable in the 80s, but I'm not sure if that would have been affordable to achieve for a home computer expansion. In theory it would be possible to make the PCB larger and still fit it into the 6128 but as soon as the ROM or maybe RAM is socketed (e.g. due to a previous repair) there is not enough space to make the PCB even slightly bigger. 

However there would have been other options with DRAM. 

In the 464/664 you have plenty of space to put in a board with DRAM. The Vortex RAM expansion proofed that but was not compatible with the DK'Tronics standard. 

In the 6128 I doubt there is enough space for an add-on board with DRAM. However you could replace the DRAM ICs and add a bit of logic to get 320K or 512K of RAM (https://www.cpcwiki.eu/index.php/CPC_6320_/_CPC_6512_-_internal_320K_/_512K_for_CPC_6128). Instead of replacing the RAM it would have also been an option to piggy back the RAM and upgrade the CPC to 384K or 576K of RAM (the RAM7 standard was not yet introduced in the 90s, otherwise also 640K would be possible by piggy backing). 

When I did the 320/512K upgrade I realised that it requires quite some skills to do the upgrade and it's not really DIY friendly. And that was basically the reason to think about this plug&play upgrade. The goal was no internal soldering, DIY friendly, only cheap, still available through-hole components that can be easily obtained from reliable sellers.

The only compromise I had to do when it comes to how easy this one can be built are the two GALs which need to be programmed and you need to have an Eprom burner or know someone who has one. 

Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 15:07, 03 January 25
Thank you for this full answer. It is appreciated.

You are right, it just looks like. I forget 512K SRAM wasn't available into the 80s. Probably it was more complicated to add internal DRAM instead. At less for 256K. By the way, a final user was not expected to open the computer to connect expansions. Anyway, it ultimately does the illusion for a retro-computer add-on inside the keyboard.

I imagine the 512K can be shared as 256K RAM and 256K Silicon disc?
Title: Re: WIP: internal 512K expansion
Post by: eto on 15:41, 03 January 25
Quote from: Egg Master on 15:07, 03 January 25I imagine the 512K can be shared as 256K RAM and 256K Silicon disc?
I don't know what the Silicon disc does, sorry.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 15:48, 03 January 25
Quote from: eto on 15:41, 03 January 25
Quote from: Egg Master on 15:07, 03 January 25I imagine the 512K can be shared as 256K RAM and 256K Silicon disc?
I don't know what the Silicon disc does, sorry.
See here:
https://www.cpcwiki.eu/index.php/Dk%27tronics_memory_expansion#256KB_RAM

The "normal" 256K ram expansion uses banks 0-3 (or 1-4 on 6128),
the "silicon disc" 256K ram expansionen uses banks 4-7.

But it's exactly the same, so yes, software which uses the first 256K as CPU ram and the second "silicon" ram as ram disc, will work with iRAM640 as well.
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 15:48, 03 January 25
Quote from: eto on 15:41, 03 January 25I don't know what the Silicon disc does, sorry.
Sorry. This is the name given by dk'tronics for the 256K add-on to be used as a RAM disc. (originally with a backup battery)
https://www.cpcwiki.eu/index.php/Dk%27tronics_memory_expansion

@Prodatron Sorry for the double post. Thank you for your answer.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 16:02, 03 January 25
Quote from: Egg Master on 12:52, 03 January 25@eto I really like a lot the iRAM 640 design, because it looks like something you can buy into the 80s. :)

It was just a little bit larger and required a 464 or 664 (as Eto said)ramexp.png

(should be the same scale)

;D
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 16:26, 03 January 25
Amazing! :o
Title: Re: WIP: internal 512K expansion
Post by: Devlin on 16:27, 03 January 25
So, who do I have to kill* to get one of these for my 6128?

*ask very nicely
Title: Re: WIP: internal 512K expansion
Post by: eto on 16:29, 03 January 25
Quote from: Prodatron on 16:02, 03 January 25It was just a little bit larger and required a 464 or 664 (as Eto said)
Awesome comparison, I love it.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 16:46, 03 January 25
Quote from: Egg Master on 12:52, 03 January 25A great feature will be to unlock the 128K VRAM.
"Realy"? :laugh:
https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/banked-video-ram/msg231993/#msg231993

But we need one correct. Less time between outs.
Pinball Dreams not start correctly.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 18:09, 03 January 25
Excellent piece of hardware, did already publish the link to the Ebay auction last year in the German forum

Now... all the collectors shall bid what they can to help to compensate the development costs.  ;D


BTW.: Would be nice to see the expansion/extension RAM screen of the "OS-Info" tool of FutureOS, just to see which E-RAM I/O is really available. The screens shown before use proprietary numbers only.
Title: Re: WIP: internal 512K expansion
Post by: dodogildo on 21:28, 03 January 25
Quote from: Prodatron on 16:02, 03 January 25It was just a little bit larger and required a 464 or 664 (as Eto said)
A striking comparison.  :o
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 22:28, 03 January 25
Quote from: GUNHED on 18:09, 03 January 25. The screens shown before use proprietary numbers only.
No not at all, SyMon already shows the correct banks ;)
Title: Re: WIP: internal 512K expansion
Post by: eto on 23:35, 03 January 25
Quote from: GUNHED on 18:09, 03 January 25which E-RAM I/O is really available
SRAM: &7FCx - &7FFF
6128s internal second bank: &7EC1-&7EC8

Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 00:27, 07 January 25
Quote from: eto on 23:35, 03 January 25
Quote from: GUNHED on 18:09, 03 January 25which E-RAM I/O is really available
SRAM: &7FCx - &7FFF
6128s internal second bank: &7EC1-&7EC8


Thanks, that's what I assumed too. The shown screen was just a bit confusing, because it shows 64 KB Main-RAM and 960 KB expansion RAM (not 1024 KB as I expected). But never mind.  :)

BTW: Congratulations that you sold the i640 on ebay for a decent price. At least a bit of compensation for all the time and efforts you did put into this great project!  :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 00:55, 07 January 25
Quote from: GUNHED on 00:27, 07 January 25because it shows 64 KB Main-RAM and 960 KB expansion RAM (not 1024 KB
Where do you see 960KB expansion RAM?
Title: Re: WIP: internal 512K expansion
Post by: eto on 01:16, 07 January 25
Quote from: GUNHED on 00:27, 07 January 25At least a bit of compensation for all the time and efforts you did put into this great project!  :)
I highly appreciate that someone supports it like that. It will be a nice dinner with the family ;-)

But it's definitely not for the money. For the amount of hours and money I put into this I would need to sell at least another 20 for that price just to make minimum wage.

Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 21:07, 07 January 25
Quote from: eto on 00:55, 07 January 25
Quote from: GUNHED on 00:27, 07 January 25because it shows 64 KB Main-RAM and 960 KB expansion RAM (not 1024 KB
Where do you see 960KB expansion RAM?
The columns are labelled "0" to "F", so 16 columns. First column contains V-RAM, so column "0" is for 64 KB main RAM. Then columns "1" to "F" are 15 columns. 15 x 64 = 960.  :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 23:33, 07 January 25
Quote from: GUNHED on 21:07, 07 January 25The columns are labelled "0" to "F", so 16 columns. First column contains V-RAM, so column "0" is for 64 KB main RAM. Then columns "1" to "F" are 15 columns. 15 x 64 = 960.  :)
Not related to my RAM expansion, that's SymbOS which supports up to 1MB in total.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 15:20, 08 January 25
Quote from: eto on 23:33, 07 January 25
Quote from: GUNHED on 21:07, 07 January 25The columns are labelled "0" to "F", so 16 columns. First column contains V-RAM, so column "0" is for 64 KB main RAM. Then columns "1" to "F" are 15 columns. 15 x 64 = 960.  :)
Not related to my RAM expansion, that's SymbOS which supports up to 1MB in total.
Exactly! Therefore I did ask in my original post to see that in "OS-Infos", which is more clear to me at least.  ;)  :) :) :)

I'll attach a picture of the simulated i640 RAM expansion... (btw. Do you sell them? Or is somebody going to build a batch?)
Title: Re: WIP: internal 512K expansion
Post by: eto on 16:02, 08 January 25
Quote from: GUNHED on 15:20, 08 January 25Do you sell them? Or is somebody going to build a batch?
Not really.

I made 4 PCBs that I will sell on Ebay to cover the development costs. A few people on the classic computing forum asked if they can get one so I ordered another batch of 10 PCBs + all components but I will only offer them as DIY packages and only with shipping in Germany, maybe EU (but shipping then adds at least 50% to the price).

I guess once it is released that it will be picked up from some sellers and as the components are dirt cheap (if bought in quantities) it should be feasible to sell it between 25 and 30€ and still make a profit. One guy from the UK already contacted me on Facebook and wants to build a few and sell them at Retcon 25.
Title: Re: WIP: internal 512K expansion
Post by: eto on 20:39, 08 January 25
Good news regarding the 464 version:

It seems it runs stable now and I even managed to add the option to switch between C3 support (512K of total RAM) or non-C3 support (576K of total RAM). In the picture below the switch is simulated by the orange wire which I connect either to GND or VCC to turn it on/off.

With C3 (and the 6128 firmware) the 464 can properly load the Amstrad CP/M discs.

I ordered a batch of updated PCBs and then it's hopefully finished. I tried to find a design that fits into all 464 and 664 versions. I had to rely on the mainboard version pictures on the Wiki as I unfortunately only have a single version of the 464 here.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 21:11, 08 January 25
Now it's time for a 4 MB internal expansion for the CPC6128. One of mine has that already, but it did need soldering on the main PCB sadly.
Title: Re: WIP: internal 512K expansion
Post by: eto on 22:02, 08 January 25
Quote from: GUNHED on 21:11, 08 January 25Now it's time for a 4 MB internal expansion for the CPC6128. One of mine has that already, but it did need soldering on the main PCB sadly.
I looked into it when I started development and in theory it's possible but one of my key aspects is DIY friendlyness - and a 2MB/4MB expansion is not DIY friendly.


Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 13:06, 09 January 25
DS1270Y-70 and knife
Title: Re: WIP: internal 512K expansion
Post by: eto on 18:27, 09 January 25
Quote from: McArti0 on 13:06, 09 January 25DS1270Y-70
Is that a suggestion? If yes, where can we buy that reliably in small and big quantities for the next 5 years and for less than - let's say €50?
Title: Re: WIP: internal 512K expansion
Post by: d_kef on 18:47, 09 January 25
Quote from: eto on 18:27, 09 January 25
Quote from: McArti0 on 13:06, 09 January 25DS1270Y-70
Is that a suggestion? If yes, where can we buy that reliably in small and big quantities for the next 5 years and for less than - let's say €50?
For €50 you can get 1/5th of it... :laugh:
https://www.digikey.de/short/53q0q89f (https://www.digikey.de/short/53q0q89f)

d_kef
Title: Re: WIP: internal 512K expansion
Post by: eto on 23:10, 23 January 25
Update:

New PCBs for the 464 version arrived.

Seems I still have an issue with the C3 mode.

CP/M plus: works fine in C3 mode
Phortem/PHX/Pac-Man emulator: work in C3 mode

FutureOs: weird mouse sprite in both C3/non C3 mode
Dandanator: only properly loads snapshots in non-C3 mode

@GUNHED maybe you can support here with some insights. attached you can see what happens. Seems like it retrieves the background from the wrong area in RAM or ROM. Can you please explain wht is happpening in FutureOS when the sprite is drawn? That might help to identify what I have missed in the C3 implementation.
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 23:24, 23 January 25
Yes, this happens if RAM mode &C3 does not work properly. 
In detail, the Video-RAM was not successfully moved from &C000 to &4000.

Please refer to Revaldhinos RAM expansion, he got it working on CPC464 too. 

However, there won't be much CPC464 users being interested in FutureOS anyway.
Title: Re: WIP: internal 512K expansion
Post by: eto on 23:39, 23 January 25
Quote from: GUNHED on 23:24, 23 January 25Please refer to Revaldhinos RAM expansion, he got it working on CPC464 too. 
Same idea but totally different implementation.

The question was more like what exactly you are doing. Copy from ROM to RAM? Which address (range) to which address (range)?

But I can also just drop FutureOS support.

Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 23:45, 23 January 25
Quote from: eto on 23:39, 23 January 25
Quote from: GUNHED on 23:24, 23 January 25Please refer to Revaldhinos RAM expansion, he got it working on CPC464 too.
Same idea but totally different implementation.

The question was more like what exactly you are doing. Copy from ROM to RAM? Which address (range) to which address (range)?

But I can also just drop FutureOS support.


Feel free to do what you want. Your choice!  :)

What happens with CPC6128?
- &C3 moves V-RAM from &C000 to &4000
- data is written from &C000 (ROM) into RAM at &4000-&7FFF (depending on pointer position)
- to restore V-RAM: V-RAM data is read from &4000-&7FFF into a buffer, this step seems to fail. Instead to read from V-RAM it seems to read from ROM

You see, FutureOS is the 'real' &C3 test suite  ;) :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 23:59, 23 January 25
Quote from: GUNHED on 23:45, 23 January 25- to restore V-RAM: V-RAM data is read from &4000-&7FFF into a buffer, this step seems to fail. Instead to read from V-RAM it seems to read from ROM
ROM should never be at &4000-&7FFF, so I don't think that's it. But it could be the buffer. Where is the buffer located? Somewhere in 0-3fff? And from there it is copied back to VRAM when you update the mouse pointer?
Title: Re: WIP: internal 512K expansion
Post by: andycadley on 00:46, 24 January 25
Quote from: eto on 23:59, 23 January 25ROM should never be at &4000-&7FFF, so I don't think that's it.
Unless it's a Plus...
Title: Re: WIP: internal 512K expansion
Post by: eto on 01:12, 24 January 25
Quote from: andycadley on 00:46, 24 January 25
Quote from: eto on 23:59, 23 January 25ROM should never be at &4000-&7FFF, so I don't think that's it.
Unless it's a Plus.
Sure, but as this is a CPC 464, ROM can't be at &4000
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 00:42, 28 January 25
Quote from: eto on 23:59, 23 January 25
Quote from: GUNHED on 23:45, 23 January 25- to restore V-RAM: V-RAM data is read from &4000-&7FFF into a buffer, this step seems to fail. Instead to read from V-RAM it seems to read from ROM
ROM should never be at &4000-&7FFF, so I don't think that's it. But it could be the buffer. Where is the buffer located? Somewhere in 0-3fff? And from there it is copied back to VRAM when you update the mouse pointer?
The buffer is between &B000 and &B7FF.

The problem is probably at the stage where the function read the data from &4000-&7FFF, and that shall be V-RAM (upper block banked down in &C3 mode)

Just try if you can write to block 1 in C3 mode, is shall be on the screen.
Title: Re: WIP: internal 512K expansion
Post by: eto on 01:50, 30 January 25
Quote from: GUNHED on 00:42, 28 January 25The problem is probably at the stage where the function read the data from &4000-&7FFF
yes, that's where I have the bug: while in C3 mode when the CPU reads from VRAM at &4000-&7FFF I need to activate A15, so the physical address range is converted to C000-FFFF. This access should go to the SRAM only and must not be passed through to the motherboard but for reasons I still do not understand that's happening - and since the ROM is active, it then reads data from ROM.



 

Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 07:35, 30 January 25
Is your A15-z80 gated?

When you set C3 in basic, does CTRL+SHIFT+COPY work for you?
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 09:57, 30 January 25
I think that for C3 you need to add ROMDIS for z80-A14=1, z80-A15=0, because GA gets CPC-A15,A14=11, Hrom=Enable and will always enable /ROMEN.
Or you must gated Z80-MREQ and disable CPC-MREQ.
Title: Re: WIP: internal 512K expansion
Post by: eto on 10:11, 30 January 25
Quote from: McArti0 on 09:57, 30 January 25Or you must gated Z80-MREQ and disable CPC-MREQ.
That's how it's done.

It also perfectly works as long as C3 access is triggered from RAM. Then there is no conflict But as soon as the upper ROM is active I get the data from the ROM.

I first thought I have to have some error in my equations but I'm currently wondering if the GateArray maybe does not evaluate MREQ to set ROMEN. It might also check IORQ=1, RD=0. 

That could explain why there is no issue when I access it from RAM (MREQ is evaluated and GateArray does not activate base RAM) but there is an issue when I access it from ROM (MREQ is not evaluated and GateArray sets ROMEN). 

I'll do a test for that as soon as I have time. 
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 10:36, 30 January 25
Do you have 40007, 08, 10? 

In addition to MREQ, also gate to RD=1, there is no force for the ROM to turn on.
Title: Re: WIP: internal 512K expansion
Post by: eto on 13:05, 30 January 25
Quote from: McArti0 on 10:36, 30 January 25Do you have 40007, 08, 10?
10

Quote from: McArti0 on 10:36, 30 January 25In addition to MREQ, also gate to RD=1, there is no force for the ROM to turn on.
That's exactly what I meant when I wrote "I'll do a test for that as soon as I have time. " - sorry, that was not clear. I need to cut a few lanes on the PCB, make new connections and free up a pin on one of the PALs. No big issue but I don't have time over the next couple of days.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 14:38, 30 January 25
I would suggest first writing a tight loop and viewing it on the oscilloscope.

I can't believe your 40010 isn't reading MREQ to enable ROM

Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 14:45, 30 January 25
https://www.cpcwiki.eu/index.php/File:40010-simplified_V03.pdf

Title: Re: WIP: internal 512K expansion
Post by: eto on 15:47, 30 January 25
Quote from: McArti0 on 14:45, 30 January 25https://www.cpcwiki.eu/index.php/File:40010-simplified_V03.pdf


That's why I expected that MREQ is sufficient. As it says "not verified against real 40010" I can't rely on it and it might still be different. 

Quote from: McArti0 on 14:38, 30 January 25I would suggest first writing a tight loop and viewing it on the oscilloscope.
I don't have one here at the moment. 
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 16:29, 30 January 25
You can do a hardware stop, ROMEN join to WAIT/READY.
Title: Re: WIP: internal 512K expansion
Post by: eto on 00:16, 31 January 25
Quote from: eto on 13:05, 30 January 25- sorry, that was not clear. I need to cut a few lanes on the PCB, make new connections and free up a pin on one of the PALs. No big issue but I don't have time over the next couple of days.
Well... I could not resist ;-) Two tiny cuts on the PCB, a short new lane - and now I also control RD and don't set RD to 0 if I access 4000-7fff in C3 mode.

 C3 now perfectly works. My own test programs work and the Future OS mouse pointer no longer paints ROM data to the screen.

(The equations are pretty much identical so I don't have any other explanation than that the GateArray does not evaluate MREQ to set ROMEN.)

However I still can't get the Dandanator to work. It boots but when I start a game, the system crashes.

Does anyone have an idea what the Dandanator does when a game is selected and loaded into RAM?
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 00:21, 31 January 25
Quote from: eto on 00:16, 31 January 25Well... I could not resist ;-)
;D I like it...
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 10:08, 31 January 25
Quote from: eto on 07:48, 10 September 24
Quote from: McArti0 on 06:57, 10 September 24Can't you fit in one atf750?
I probably could. What programmer/software would support that IC? I didn't really find an answer.
Change of situation.
TL866-II Plus with V12.78 fw support ATF 22

http://www.xgecu.com/MiniPro/TL866II_List.txt

T56 support all ATF 750 and 2500 too.

http://www.xgecu.com/MiniPro/T56_List.txt
Title: Re: WIP: internal 512K expansion
Post by: eto on 10:31, 31 January 25
Quote from: McArti0 on 10:08, 31 January 25Change of situation.
TL866-II Plus with V12.78 fw support ATF 22
What has changed? ATF22 is not used in this project and TL866-II already supported the ATF22 in the past. The ATF750 is unfortunately not supported and I didn't find anything that supports it (except for a 6 year old branch of the afterburner project).
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 11:18, 31 January 25
Quote from: eto on 10:31, 31 January 25The ATF750 is unfortunately not supported and I didn't find anything that supports it

XGecu T56 Universal Programmer Device Support List:

            Software Version:   V12.78  Date : 1.19.2025
           Supported Devices:   37906
 Supported Operating Systems:   Windows XP,2003,2008,Vista  Win7 WIN8 WIN10 WIN11

===================================================================
 Press Ctrl+F to search support list
===================================================================
  [ MY FAVORITES-User ]     

      Very useful favorites               
         
      ATF750C                @DIP24       ATF750C(MODE-V750)     @DIP24       ATF750C(MODE-V750B)    @DIP24       ATF750C                @SOIC24     
      ATF750C(MODE-V750)     @SOIC24      ATF750C(MODE-V750B)    @SOIC24      ATF750C                @PLCC28      ATF750C(MODE-V750)     @PLCC28     
      ATF750C(MODE-V750B)    @PLCC28      ATF750CL               @DIP24       ATF750CL(MODE-V750)    @DIP24       ATF750CL(MODE-V750B)   @DIP24       
      ATF750CL               @SOIC24      ATF750CL(MODE-V750)    @SOIC24      ATF750CL(MODE-V750B)   @SOIC24      ATF750CL               @PLCC28     
      ATF750CL(MODE-V750)    @PLCC28      ATF750CL(MODE-V750B)   @PLCC28      ATF750LVC              @DIP24       ATF750LVC(MODE-V750)   @DIP24       
      ATF750LVC(MODE-V750B)  @DIP24       ATF750LVC              @SOIC24      ATF750LVC(MODE-V750)   @SOIC24      ATF750LVC(MODE-V750B)  @SOIC24     
      ATF750LVC              @PLCC28      ATF750LVC(MODE-V750)   @PLCC28      ATF750LVC(MODE-V750B)  @PLCC28      ATF750LVCL             @DIP24       
      ATF750LVCL(MODE-V750)  @DIP24       ATF750LVCL(MODE-V750B) @DIP24       ATF750LVCL             @SOIC24      ATF750LVCL(MODE-V750)  @SOIC24     
      ATF750LVCL(MODE-V750B) @SOIC24      ATF750LVCL             @PLCC28      ATF750LVCL(MODE-V750)  @PLCC28      ATF750LVCL(MODE-V750B) @PLCC28     
      ATF750CEXT             @DIP24       ATF750CEXT             @SOIC24      ATF750CEXT             @PLCC28      ATF750LVCEXT           @DIP24       
      ATF750LVCEXT           @SOIC24      ATF750LVCEXT           @PLCC28      ATF2500C               @DIP40       ATF2500C(MODE-2500)    @DIP40       
      ATF2500C(MODE-2500B)   @DIP40       ATF2500C               @PLCC44      ATF2500C(MODE-2500)    @PLCC44      ATF2500C(MODE-2500B)   @PLCC44     
      ATF2500C               @TQFP44      ATF2500C(MODE-2500)    @TQFP44      ATF2500C(MODE-2500B)   @TQFP44      ATF2500CL              @DIP40       
      ATF2500CL(MODE-2500)   @DIP40       ATF2500CL(MODE-2500B)  @DIP40       ATF2500CL              @PLCC44      ATF2500CL(MODE-2500)   @PLCC44     
      ATF2500CL(MODE-2500B)  @PLCC44      ATF2500CL              @TQFP44      ATF2500CL(MODE-2500)   @TQFP44      ATF2500CL(MODE-2500B)  @TQFP44     
      ATF2500CQ              @DIP40       ATF2500CQ(MODE-2500)   @DIP40       ATF2500CQ(MODE-2500B)  @DIP40       ATF2500CQ              @PLCC44     
      ATF2500CQ(MODE-2500)   @PLCC44      ATF2500CQ(MODE-2500B)  @PLCC44      ATF2500CQ              @TQFP44      ATF2500CQ(MODE-2500)   @TQFP44     
      ATF2500CQ(MODE-2500B)  @TQFP44      ATF2500CQL             @DIP40       ATF2500CQL(MODE-2500)  @DIP40       ATF2500CQL(MODE-2500B) @DIP40       
      ATF2500CQL             @PLCC44      ATF2500CQL(MODE-2500)  @PLCC44      ATF2500CQL(MODE-2500B) @PLCC44      ATF2500CQL             @TQFP44     
      ATF2500CQL(MODE-2500)  @TQFP44      ATF2500CQL(MODE-2500B) @TQFP44                   
Title: Re: WIP: internal 512K expansion
Post by: eto on 11:38, 31 January 25
Ok... so finally there is something that supports it. Which is great.

And unfortunately still not feasible for this project as the programmer is too expensive which would violate the premise "DIY friendly". Let's see if the TL866-II or T48 will eventually support it. 

At the moment still no change of situation as the remaining issue is not related to the CPLD's features anyway.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 12:19, 31 January 25
 SLG4 has cheaper programmer and beter chips..
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 16:39, 31 January 25
Quote from: eto on 01:50, 30 January 25
Quote from: GUNHED on 00:42, 28 January 25The problem is probably at the stage where the function read the data from &4000-&7FFF
yes, that's where I have the bug: while in C3 mode when the CPU reads from VRAM at &4000-&7FFF I need to activate A15, so the physical address range is converted to C000-FFFF. This access should go to the SRAM only and must not be passed through to the motherboard but for reasons I still do not understand that's happening - and since the ROM is active, it then reads data from ROM.


Correct, so you probably need to "overpower" the internal signals. If I understood right, that's what was done before, but I'm not an hardware expert. 
Title: Re: WIP: internal 512K expansion
Post by: eto on 16:55, 31 January 25
Quote from: GUNHED on 16:39, 31 January 25Correct, so you probably need to "overpower" the internal signals.
Things are a bit different on the CPU socket. 

Anyway... FutureOS already works, but the problem with the Dandanator shows that there is still not 100% compatibility. 

Btw: Has anyone ever tested the Dandanator with Revaldinhos expansion in parallel (and in C3 mode). Does that work or won't games run there too? 
Title: Re: WIP: internal 512K expansion
Post by: Rabs on 17:05, 31 January 25
Quote from: eto on 16:55, 31 January 25
Quote from: GUNHED on 16:39, 31 January 25Correct, so you probably need to "overpower" the internal signals.


Btw: Has anyone ever tested the Dandanator with Revaldinhos expansion in parallel (and in C3 mode). Does that work or won't games run there too?
On a 464 with the universal 512k RAM? I can give it a go later.
Title: Re: WIP: internal 512K expansion
Post by: eto on 17:23, 31 January 25
Quote from: Rabs on 17:05, 31 January 25On a 464 with the universal 512k RAM? I can give it a go later.
exactly. Thanks
Title: Re: WIP: internal 512K expansion
Post by: Rabs on 17:55, 31 January 25
Quote from: eto on 17:23, 31 January 25
Quote from: Rabs on 17:05, 31 January 25On a 464 with the universal 512k RAM? I can give it a go later.
exactly. Thanks
Games seem to play OK. 464 with Universal 512K card and Dandanator plugged into the pass through connector.

Universal 512k DK'Tronics C3 Mode selected. Diagnostics detects RAM and indicates that C3 config is supported.
20250131_165320.jpg
Title: Re: WIP: internal 512K expansion
Post by: eto on 11:02, 01 February 25
Quote from: Rabs on 17:55, 31 January 25Games seem to play OK. 464 with Universal 512K card and Dandanator plugged into the pass through connector.
thanks a lot for testing this. 
Title: Re: WIP: internal 512K expansion
Post by: GUNHED on 23:00, 01 February 25
Quote from: eto on 16:55, 31 January 25
Quote from: GUNHED on 16:39, 31 January 25Correct, so you probably need to "overpower" the internal signals.
Anyway... FutureOS already works, ...
Glad to hear! Good work!  :) :) :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 13:02, 03 February 25
So... after reworking the memory mirror logic for C3 mode the 464 version now also works with Dandanator.

However I needed to sacrifice the 576K vs 512K(+C3) switch. It's still possible to have both on the same PCB but it needs to be programmed into the GAL if it should behave as 576K or 512K(+C3).

The other option would be to redesign the PCB and replace one of the ATF16V8 with an ATF22V10. But that's again a lot of work...

Question is: would anyone need a (manual) switch between the two modes or would one anyway decide for one way or the other?

Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 14:19, 03 February 25
I wonder if there are programs that require 576K and will not work with 512K?

For me it doesn't matter, #c3 is not needed, but the extra 64 KB makes no difference either, so I am fine with both options.
Title: Re: WIP: internal 512K expansion
Post by: McArti0 on 14:27, 03 February 25
Quote from: Prodatron on 14:19, 03 February 25I wonder if there are programs that require 576K and will not work with 512K?
Worse. Will there be programs that will work with 640kB and not with 576kB? :laugh:

RAMDISC.

SymCommander when present 320kB .... Not Start. 8)
Title: Re: WIP: internal 512K expansion
Post by: eto on 16:25, 03 February 25
Quote from: Prodatron on 14:19, 03 February 25I wonder if there are programs that require 576K and will not work with 512K?
Mighty Street Fighter? Not sure if it needs a 512K expansion or 512K in total.

Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 17:36, 03 February 25
Probably, it requires 64K base RAM and 512K extended RAM, but not C3.
So, if you add the switch has you said, it may be not a problem to run it.
Title: Re: WIP: internal 512K expansion
Post by: eto on 17:54, 03 February 25


But that's exactly the issue: I can no longer add the switch - at least not without a major refactoring. 
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 18:06, 03 February 25
Oops, sorry. I misunderstood. I thought the switch to enable C3 mode using 64KB of shadow RAM was the first choice, so as not to have to redesign the extension by adding additional circuitry to support all modes with 576K.
Title: Re: WIP: internal 512K expansion
Post by: eto on 19:28, 03 February 25
Quote from: Egg Master on 18:06, 03 February 25Oops, sorry. I misunderstood. I thought the switch to enable C3 mode using 64KB of shadow RAM was the first choice, so as not to have to redesign the extension by adding additional circuitry to support all modes with 576K.

Sorry, I probably was not clear. I already had the switch in the previous iteration - but that iteration was not 100% compatible wit ROM software. To make it compatible I needed to control another signal. For that I had to sacrifice the GAL Pin that was previously used for the switch. Also the equations became much more complex so even if I would magically find a free pin I could not implement the equations for both behaviours in the same GAL. At least not in the 16V8 I am using. 
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 20:00, 03 February 25
If you have to add one more GAL, may be you can add extra 64K too?

So, you finally do not waste the main 512K while the C3 mode is enabled.
Best, adding 128K extra RAM, with 64K for a 640K version like on 6128?
Title: Re: WIP: internal 512K expansion
Post by: eto on 21:04, 18 March 25
Update: 1MB version for 6128 (almost) working

The PCB still requires one fix and a bit of final polishing but I'm confident that it can be released in H1/25.
Title: Re: WIP: internal 512K expansion
Post by: Prodatron on 22:44, 18 March 25
That looks fantastic! :)
Title: Re: WIP: internal 512K expansion
Post by: eto on 12:31, 24 March 25
Update 464/664 version:

Since I don't want to have a version that does not support C3 but I also want to provide 576K at least, I finally went for a different approach which supports two SRAMs. This one will offer the option to add a third PAL. The first two PALs provide the logic for a standard 512K expansion without C3 support and the second PAL will then provide C3 support if a second SRAM is installed. (As for C3 shadowing is required, the secondary SRAM will provide 64K less of additional RAM than its total size.)

This will give us (hopefully) 3 different options with the same PCB and the same GALs:



The PCBs have just been ordered - more news will follow in 2-3 weeks after they arrived and have been assembled.

Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 19:19, 24 March 25
Very nice work. What I find interesting are:
- 512KB + 64KB (with C3 for 100% CPC usage)
- 512KB + 512KB (without C3 for SymbOS and above).

Both configurations can be set on the same expansion.

Perhaps it was possible to use a dedicated 64K SRAM chip for C3 so that it would never be disabled, regardless of the memory configuration.
It cost around 0,62€ each, including shipping, that is very interesting for this project: https://fr.aliexpress.com/item/1005006752389377.html
Title: Re: WIP: internal 512K expansion
Post by: eto on 19:48, 24 March 25
Quote from: Egg Master on 19:19, 24 March 25- 512KB + 64KB (with C3 for 100% CPC usage)
What benefit would that have? A640K solution includes the 576K solution without any drawback. Most software will anyway only recognize 576K as they don't support more than 512K expansion RAM and SymbOS is perfectly happy with 640K. In both cases you need two SRAMs, 64K will not be cheaper than 128K and even worse - we would need a different PCB just for a 576K solution as the footprint of the SRAMs is different. 

Quote from: Egg Master on 19:19, 24 March 25- 512KB + 512KB (without C3 for SymbOS and above).

I implemented the 512K without C3 as there is software out there which needs the full 512K expansion (Mighty Steel Fighter) and would suffer if I implement C3 with shadowing (thus reducing the amount of memory by 64K). 

However that's no longer the case for 1024K. There's no software that is limited by "just" 1024K instead of 1088K. For SymbOS it doesn't matter at all as it can address a total of 1024K, so even if I would implement 512+512 without C3 you would "only" see 1024K of memory in SymbOS. 


Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 19:55, 24 March 25
I'm not talking about the base 64K RAM, because it's not on your expansion.
Obviously, it's in addition to the "512K + 64K" (640K) or "512K + 512K" (1088K).

A 128K SRAM IC costs twice as much as 64K IC and is also twice as large.
With some redesign, it can fit better with GAL ICs, and not affect the capacity.
Title: Re: WIP: internal 512K expansion
Post by: eto on 21:24, 24 March 25
Quote from: Egg Master on 19:55, 24 March 25I'm not talking about the base 64K RAM, because it's not on your expansion.
Obviously, it's in addition to the "512K + 64K" (640K) or "512K + 512K" (1088K).
The 464 has 64K base ram. The iRAM adds 1024K (64 base + 2x 512) however from the second SRAM 64K are used for C3 emulation, thus reducing the available RAM of the second SRAM to 448K. This will give you a total of 1024K of RAM: 64K base + 512K SRAM1 + 448K SRAM2. And a total of 1024K is exactly the amount of RAM that SymbOS can address. So there is no benefit of having a solution without C3 as even with a full 1088K you would only get 1024K in SymbOS.

Quote from: Egg Master on 19:55, 24 March 25A 128K SRAM IC costs twice as much as 64K IC and is also twice as large.
Which one do you have in mind? I can't find an available parallel 64K SRAM. I can find 32K SRAMs but then you need two of them.
Title: Re: WIP: internal 512K expansion
Post by: sir_lucas on 10:30, 25 March 25
Fantasic job!! :D Keep us posted and thank you.
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 12:55, 25 March 25
Quote from: eto on 21:24, 24 March 25Which one do you have in mind? I can't find an available parallel 64K SRAM. I can find 32K SRAMs but then you need two of them.
I think you're skimming my posts. ;)

In fact, I included a link to the 64K (65,536 words by 8 bits) SRAM IC into the message you're replying to.
You can find it at many place like here (10 pcs): https://fr.aliexpress.com/item/1005006752389377.html

(https://http2.mlstatic.com/D_NQ_NP_826561-MLA75661763959_042024-O.webp)

This will permanently fix the SRAM capacity issue by dedicating it exclusively for the C3 functionality.
Title: Re: WIP: internal 512K expansion
Post by: eto on 15:38, 25 March 25
Quote from: Egg Master on 12:55, 25 March 25I think you're skimming my posts. ;)
Sorry, indeed I have missed that link. 



Quote from: Egg Master on 12:55, 25 March 25This will permanently fix the SRAM capacity issue by dedicating it exclusively for the C3 functionality.
I can not officially support this IC as one of the premises I made for the development of the expansion is that all components are still easily available (in large quantities) from reliable resources - if possible still manufactured. I don't think that's the case for this particular IC. It's of course fine to buy the stuff from AliExpress and especially when building prototypes I myself order at AliExpress to limit development costs but I would not base a design on an IC that I can only source from there. 

However I checked the pinout of this IC and it will be possible to use it if you want. You only need to make a tiny adapter e.g. with a strip board so that the UM61512 fits into the footprint of the second SRAM. Either an adapted logic for the third GAL or a tiny mod on the PCB are required and you are good to go. 
Title: Re: WIP: internal 512K expansion
Post by: Egg Master on 19:12, 25 March 25
I have linked Aliexpress, because it is easy to order, but UTSource have close to 20,000 pcs available.
Of course, an adapter can do the job, but that wasn't the idea I originally set out.

Anyway, thank you for your answers. :)
Powered by SMFPacks Menu Editor Mod