Login
Back to forumReply to this topicGo to last reply

Posted By

Csio
on 2007-09-02
03:37:38
 256kb plus4 memblocks

okay, hello brain-trustssss!

can anybody tell me how can i use, call, manage, etc... the memblocks of 256kb plus4 or whatta?
pjeez heeepp dis handycap people....

Posted By

siz
on 2007-09-02
06:33:16
 Re: 256kb plus4 memblocks

Hi!

You can find a sample code for detecting memory size at http://www.freeweb.hu/siz/commodore/detect_memory_size.asm . And here is a short description about the registers by Solder: http://www.freeweb.hu/siz/commodore/ramregs.TXT .

Posted By

siz
on 2007-09-02
10:14:26
 Re: 256kb plus4 memblocks

Sorry. There was a bug in the detection routine, it detected the 4096k expansion incorrectly as 256k.

Posted By

Csio
on 2007-09-03
13:13:25
 Re: 256kb plus4 memblocks

thanx the quick reaction,siz
i try to understand it, but it is included not clear parts for me

Posted By

Solder
on 2007-09-04
04:20:17
 Re: 256kb plus4 memblocks

Csio asked me by mail too, how the 256kb expansions works. This is a copy of my answer:

Hi Csio,

As you know, the CPU and the TED of plus/4 can only access 64kB memory. For the 256kB expansion the memory is divided into 4 banks each 64kB. One bank is visible and the other 3 banks are hidden for the CPU. To control the access there is an additional register at adress $fd16. Bits 0 and 1 controls the bank visible for the CPU. Standard is bank 3 = both bits are 1. But there is a different from previous expansions from computer magazins like RUN: This expansion (Hannes/Solder) switch only the memory above $1000 or $4000. You can hold code below this adresses to control the access to the banks, copy datas or run code in it and the CPU has always access to this lower memory area. The banking border $1000 is for
mc-programs to hold a maximum of data in memory. Banking border of $4000 is optimal for use with basic-programs (ends at $3fff). Banking border is controlled with bit 7 of $fd16: 0 = border $1000, 1 = border $4000.
There is also bit 6 wich controls the TED-access. 1 = access to RAM bank like CPU (depends on bits 0/1/7). 0 = access always to bank 3 (independend from bits 0/1/7). This is for use with graphic or character fonts in bank 3 while CPU runs code or reads data from other bank.

Bits 4/5 are for activating memory expansion CSORY-type.

Bits 2/3 reserved for expansion up to 1MB.

I hope, this can help you.

Best regards, Solder

Posted By

IstvanV
on 2007-09-04
06:34:43
 Re: 256kb plus4 memblocks

One minor question: from the schematics, it looks like the memory expansion changes the address decoding so that the user port/tape button sense can only be accessed at $FD10, the byte that controls the expansion is at $FD16, and the other bytes in the $FD1x area are "unused" (floating data bus). Is this correct ?

Posted By

Solder
on 2007-09-04
13:27:31
 Re: 256kb plus4 memblocks

Hi IstvanV!

Yes this is true. All adresses from $fd10 to $fd17 are decoded by LS138 from the memory-expansion. Some of these adresses are used for different hardware (not only $fd16 for RAM-expansion). See also http://plus4world.com/dl/tools/rommap/index.php

Solder

Posted By

IstvanV
on 2007-09-04
15:22:18
 Re: 256kb plus4 memblocks

Thanks for the information. Since I only emulate the RAM expansion (256K or 1M), when that is enabled, I have registers at $fd10 and $fd16 only, and the 14 other $fd1x addresses are not connected; otherwise, there are 16 copies of the user port.



Back to topReply to this topic


Copyright © Plus/4 World Team, 2001-2024. Support Plus/4 World on Patreon