News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_AMSDOS

Dk'Tronics 64Kb Memory Expansion for 464 Emulator

Started by AMSDOS, 11:50, 01 August 14

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AMSDOS

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?


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.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Bryce

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

AMSDOS

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?
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Bryce

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 and the 256K version: http://www.cpcwiki.eu/index.php/File:DK64_After.jpg


Bryce.

AMSDOS


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 and the 256K version: 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.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Bryce

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.

arnoldemu

#6
- 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.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

TotO

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.
"You make one mistake in your life and the internet will never let you live it down" (Keith Goodyer)

Grim

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! :)

Bryce

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.

Axelay

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:

arnoldemu

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.. ???
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Bryce

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.


AMSDOS

Can I use a Silicon Disk as an ordinary Memory Expansion unit or are they configured differently?
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

arnoldemu

#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.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

CraigsBar

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
IRC:  #Retro4All on Freenode

AMSDOS

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.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

SyX

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.   

Bryce

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.

Bryce

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.

AMSDOS



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.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Powered by SMFPacks Menu Editor Mod