CPCWiki forum

General Category => Emulators => Topic started by: AMSDOS on 11:50, 01 August 14

Title: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: AMSDOS on 11:50, 01 August 14
Not sure if this is a dumb question, though I am puzzled, why don't I see any Dk'Tronics 64Kb Memory Expansion ROMs on NVG or on the CPCWiki Memory Expansion Page (http://www.cpcwiki.eu/index.php/Dk%27tronics_memory_expansion)?


Yes Emulation makes memory management easy - just tell the emulator (Winape for example) what you want and you've got it, though an emulated 464 shouldn't be allowed to be setup in this manner. A real 464 would naturally have a Real Memory Expansion Module coming out of the Expansion Port for instance and though an emulated 464 should have a device from the ROM Slot to give it the extra 64k instead of the emulator shouldn't it?
I could only find Silicon Disks on the Memory Expansion Page which has a article in the Mods bit which points to an AA Article detailing how to convert a Silicon Disk to Memory Expansion, though obviously that deals in the physical hardware, I wouldn't know where to begin altering the Silicon Disk ROM image to make it Memory Expansion.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 11:53, 01 August 14
The DK Silicon disk came with a ROM that provided extra commands to shift data to and from the Silicon disk, but the RAM expansion was only supplied with a tape/disk with some example programs on it to show you how to do RAM banking, there never was a ROM for it.

Bryce.

Edit: In fact the RAM expansion RSX were only on tape, not even a disk version. Check out page 51 onwards of the DK Manual: http://www.cpcwiki.eu/imgs/8/83/DK%27Tronics_Peripheral_-_Technical_Manual_%28Edition_1%29.pdf (http://www.cpcwiki.eu/imgs/8/83/DK%27Tronics_Peripheral_-_Technical_Manual_%28Edition_1%29.pdf)
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: AMSDOS on 12:16, 01 August 14
Well I'm confused then, what's the device that plugs into the expansion port on the real machines?  :D  I've attached the actual device obviously which you had for the real machines, though the emulators don't seem to have that approach.


The product states you plug it in and you've got your extra memory, though while it plugs into your computer, it doesn't occupy ROM?
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 12:31, 01 August 14
The device just has RAM ICs and some logic to map the RAM and buffer the bank selection. Adding RAM doesn't occupy ROM space normally. Here's a picture of what's inside 64K Version: http://www.cpcwiki.eu/index.php/File:DK64_Before.jpg (http://www.cpcwiki.eu/index.php/File:DK64_Before.jpg) and the 256K version: http://www.cpcwiki.eu/index.php/File:DK64_After.jpg (http://www.cpcwiki.eu/index.php/File:DK64_After.jpg)


Bryce.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: AMSDOS on 12:05, 04 August 14

Quote from: Bryce on 12:31, 01 August 14
The device just has RAM ICs and some logic to map the RAM and buffer the bank selection. Adding RAM doesn't occupy ROM space normally. Here's a picture of what's inside 64K Version: http://www.cpcwiki.eu/index.php/File:DK64_Before.jpg (http://www.cpcwiki.eu/index.php/File:DK64_Before.jpg) and the 256K version: http://www.cpcwiki.eu/index.php/File:DK64_After.jpg (http://www.cpcwiki.eu/index.php/File:DK64_After.jpg)


Bryce.


So the problem I'm having trouble coming to terms with is, while the real hardware is plugged into the area on the 464 marked Disc Drive, it doesn't occupy any ROM Slots?
I remember reading somewhere that a Real 464 was limited in the number of devices it could have in it compared to a 6128 (I don't remember the numbers), would that mean that if a Real 464 had the extra 64Kb plugged into it, it could still hold the same number of devices compared to before the extra 64kb was added since no ROM slot is allocated?


I noticed in Winape that it comes with the 64Kb + 256Kb Dk'Tronics and states it as such, but no mention of the extra 64Kb Dk'Tronics, it only has 128Kb, which I presume is the setting for when one is using the 6128. So I'm a little perplexed is this is different to a 464 with the extra 64kb added to it, since the 6128 as we all know came with the memory in it, instead of in a separate unit.
I'm not sure if the 256Kb Dk'Tronics Memory expansion came in separate units?? One for 464 and another one for 664/6128, or maybe that was just the 64Kb unit which gave 464/664 - 128Kb, I just wondered if they were made for different systems wouldn't there be issues for what system you had if that were the case? So in the event Winape were using the other Dk'Tronics unit made for 6128 configuration, a real computer wouldn't normally accept it.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 13:25, 04 August 14
I think there are a few things being confused here. First off, ROM space:

Both the 464 and the 6128 could theoretically have 252 sideways ROMs. However the 464 only goes looking for ROMs 7 to 0 when it starts, whereas the 6128 scans for ROMs 15 to 0. Electronically it's possible to add 252 ROMs to both, but the Firmware won't support them. When ROMs are added, the CPC needs to know they are there, so scanning for and registering ROMs is essential. On top of that, most ROMs need a small reference in RAM to index them and this stack has been dimensioned for 15 ROMs max, so the more ROMs you add, the more base RAM you'll need to index them.

As far as RAM is concerned. The CPC never goes looking for extra RAM when it starts. The hardware concept used by Amstrad is made to allow for 64K base RAM plus 8 further banks of 64K (banks 0 to 7). This is where the 464 and 6128 vary slightly. The 6128 has already populated Bank 0, so adding 512K (8x64K banks) to a 464 should add 512K of RAM = 576K, but when you add a 512K expansion to a 6128 you have now populated bank 0 twice, so 64K remains unusable. So you don't end up with 128K+512K=640K, you still only have 576K of usable RAM (64K + 8x64K).
There were different RAM expansions from DK for the 464 and 6128. Not only because the form factor needed to be different, but also because the 6128 included a PAL IC to manage the upper 64K (bank 0) and the 464 didn't have this, so electronically they are slightly different too. As the DK RAM expansions started at bank 0, adding a 64K expansion to the 6128 wouldn't add usable RAM to the CPC as this is the bank that's already populated.

Bryce.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: arnoldemu on 18:13, 04 August 14
- some cpc computers may not have strong enough power supplies, so this means the number of hardware devices plugged in is limited because of this. having more means the power isn't strong enough to power the computer and the expansions and the computer could reset or the ram become corrupted because of it.

- the method to access the ram is different to the method use to access rom. Therefore they are treated differently. ram therefore doesn't occupy rom slots.

- few emulators seem to allow you to choose a basic 464 configuration without ram.

- an external 64kb expansion connected to a 464 works the same as the 6128 with internal extra 64k except for the c3 configuration when roms are enabled.  Really there is very little difference here, so don't worry about it.

- there were different versions of the dk'tronics ram for 464 and 6128, but that was only down to the positioning of the expansion port "disc drive" (on 464). On the 6128, the expansion port is next to the printer port and to the left of the power leads. On the 464 it's to the right of the power leads. They do operate the same.

- bankman is a program that can use the extra ram from basic. It was on the cpc6128 cpm disks, and possibly came on tape/disc for the 464.

- programs can detect the extra ram. Normally they attempt to page in, or make a 16kb block visible in the main z80 address space. Write a value to it, and then page it out. They then read main ram at the same location they wrote.

If the ram expansion was not connected the page in would fail. The data in main ram would be overwritten and changed.
But, with the ram expansion connected the page in succeeds and the write goes here and not main ram. this data and main ram are different. That's how to detect it.

- roms: if the ram device also contained a rom (such as the silicon disk) then in this case a rom slot would be used.

- Bryce is correct that connecting a 64kb ram to a 6128 is pointless. Both respond to the ram selection mechanism. Both exist using the same ram selections. Which are you choosing? Don't know. Either way you're not adding more ram. If you want to add more ram to a 6128, you need to use a ram device that responds to different ram selections than the internal ram. Now you have more useable ram.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: TotO on 18:56, 04 August 14
All CPC emulators that I know does things wrong, considering a 464 with 64K is a 6128. (from the memory side)
That mean, they are not accurate.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Grim on 19:08, 04 August 14
Quote from: arnoldemu on 18:13, 04 August 14
- Bryce is correct that connecting a 64kb ram to a 6128 is pointless.

The built-in extra 64K in a CPC 6128 actually responds to whatever 64K-page is requested if nothing else does (exactly like the BASIC upper ROM which does not respond specifically to slot 0). Here is a test you can do from BASIC:

Ready
out &7f00,&c0 ' page-out all extra RAM, just to be sure
poke &4000,51 ' write a marker tag in the base 64K RAM
out &7f00,&CC ' page-in page 1/bank 0
poke &4000,42 ' write a marker tag in page 1/bank 0
out &7f00,&c0 ' page-out all extra RAM
? peek(&4000)
51 ' base RAM was not modified
out &7f00,&c4 ' page-in page 0/bank 0
? peek(&4000)
42 ' Uh! Oh!


The extra 64K in a CPC 6128 becomes useless when all eight 64K-pages are occupied (eg. with a 512K memory expansion, like Bryce explained). Otherwise, it can still be accessed from any empty 64K-page slots.

My two cents, now off to the beach! :)
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 21:40, 04 August 14
I was referring to DK expansions, which were all made to start at bank 0. Obviously if you made your own 64K expansion for a 6128 you'd make it bank 1 (unless you are mad of course). :D

Bryce.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Axelay on 13:31, 05 August 14
Quote from: arnoldemu on 18:13, 04 August 14
- few emulators seem to allow you to choose a basic 464 configuration without ram.



Surely... that would be a CPC40?  ;)  Thankfully Amstrad didnt make one of those though, the 464 gets enough grief for not having enough memory as it is!  :laugh:
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: arnoldemu on 13:32, 05 August 14
Quote from: Bryce on 21:40, 04 August 14
I was referring to DK expansions, which were all made to start at bank 0. Obviously if you made your own 64K expansion for a 6128 you'd make it bank 1 (unless you are mad of course). :D

Bryce.
except the silicon disk.. ???
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 21:02, 05 August 14
Although it's just a RAM expansion, it was marketed as a Silicon Disk, I was only referring to DK RAM expansions :)

Bryce.

Gesendet von meinem Motorola DynaTEC 8000X mit Tapatalk 2.

Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: AMSDOS on 08:35, 06 August 14
Can I use a Silicon Disk as an ordinary Memory Expansion unit or are they configured differently?
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: arnoldemu on 08:49, 06 August 14
Quote from: AMSDOS on 08:35, 06 August 14
Can I use a Silicon Disk as an ordinary Memory Expansion unit or are they configured differently?
If you have a 464 and connect a silicon disk, I expect most software will not find it.
It can be used as ram, but it's not in the same ram "slots" the software is looking for.


The normal extra 64k of ram is access through ram configurations c4,c5,c6,c7.

This is the normal 64k ram and the extra 64k in the 6128.

But the silicon disk sits at something like cc,cd,ce,cf. If the software uses c4,c5,c6,c7 it will probably not detect it and use it.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: CraigsBar on 08:52, 06 August 14
Quote from: arnoldemu on 08:49, 06 August 14
If you have a 464 and connect a silicon disk, I expect most software will not find it.
It can be used as ram, but it's not in the same ram "slots" the software is looking for.
Amstrad Action rana hardware mod that added a switch to either a memory  expansion or silicon disk so the result would function as either.

Craig
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: AMSDOS on 09:24, 06 August 14
Quote from: CraigsBar on 08:52, 06 August 14
Amstrad Action rana hardware mod that added a switch to either a memory  expansion or silicon disk so the result would function as either.

Craig


Yes I noticed that in AA46, but I'm assuming it's not possible to patch the ROM file to behave in that manner though an emulator.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: SyX on 19:31, 06 August 14
Quote from: AMSDOS on 09:24, 06 August 14Yes I noticed that in AA46, but I'm assuming it's not possible to patch the ROM file to behave in that manner though an emulator.
Practically, every software using more than 64 KBs of ram, uses directly the hardware i/o ports. Because that you will need to patch each program for using the silicon disc, usually is not hard, but it's super boring and the hardware mod for "fixing" the silicon disc is so easy.   
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 11:53, 08 August 14
Quote from: AMSDOS on 08:35, 06 August 14
Can I use a Silicon Disk as an ordinary Memory Expansion unit or are they configured differently?

Yes, but on a 464 you would then have the base 64K, plus 256K (64K per bank) in banks 4 to 7. On a 6128 you would have the base 64K, 64K in bank 0 (the additional internal RAM) and 256K (64K per bank) in banks 4 to 7.

Confusing, but it would work. Software that checks all banks for RAM should find it unless they are programmed to stop looking as soon as they find a non-populated bank.

Bryce.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: Bryce on 11:55, 08 August 14
Quote from: CraigsBar on 08:52, 06 August 14
Amstrad Action rana hardware mod that added a switch to either a memory  expansion or silicon disk so the result would function as either.

Craig

That mod just moved the silicon disks mapping from banks 4-7 to 0-3. It didn't change the function in any other way.

Bryce.
Title: Re: Dk'Tronics 64Kb Memory Expansion for 464 Emulator
Post by: AMSDOS on 23:27, 08 August 14


Quote from: arnoldemu on 08:49, 06 August 14
If you have a 464 and connect a silicon disk, I expect most software will not find it.
It can be used as ram, but it's not in the same ram "slots" the software is looking for.


The normal extra 64k of ram is access through ram configurations c4,c5,c6,c7.

This is the normal 64k ram and the extra 64k in the 6128.

But the silicon disk sits at something like cc,cd,ce,cf. If the software uses c4,c5,c6,c7 it will probably not detect it and use it.

Quote from: Bryce on 11:53, 08 August 14
Yes, but on a 464 you would then have the base 64K, plus 256K (64K per bank) in banks 4 to 7. On a 6128 you would have the base 64K, 64K in bank 0 (the additional internal RAM) and 256K (64K per bank) in banks 4 to 7.

Confusing, but it would work. Software that checks all banks for RAM should find it unless they are programmed to stop looking as soon as they find a non-populated bank.

Bryce.


Ok, I seem to be reading the 2 replies to my question differently, so I can do a little test to see what works.


Just for the Record I wasn't planning on writing anything which would amount to require a Silicon Disk, but I wanted to do some tests with some existing 128k programs and see how they go when a Silicon Disk is being used from the ROM slot.
Powered by SMFPacks Menu Editor Mod