COMMODORE PLUS/4 WORLD
  Home  Search  Games  Tapes  Covers  Cheats  Maps  Software  New Stuff 
 Hall Of Fame  HVTC  Game Endings  Solutions  Remakes  Publications  Magazines  Effects  Top List 
 Members  Groups  Features  Plus/4 Encyclopedia  Hardware  Tools  Options  Forum 
Login
Back to forumReply To This TopicGo to last reply

Posted By

KiCHY
on 2010-09-03
14:43:16
 C16 memory layout

Hi There,

I never programmed the C16 but the Plussy earlier. All I knew that the $0000-$3FFF region is shown from $4000, $8000, $C000. I found that when I use my own interrupt ($FFFE-F) and the same time I write data to $3FFE or 3FFF, I realized that my interrupt breaks, it jumps to wrong address. I think you famous C16 demo coders already met this behaviour How did you solve it? Simply I shouldn't use $3FFE-F bytes?

Cheers,
K.

Posted By

Csabo
on 2010-09-03
15:26:51
 Re: C16 memory layout

You answered your own question. To write to FFFE/FFFF, you must page in the RAM (STA $FF3F). The RAM from $0000-$3FFF shows up from $4000, etc. - like you said. So, once you have that, STA $3FFE/F is the same as STA $FFFE/F. Bottom line is what you said last: avoid writing to $3FFE/F.

Posted By

siz
on 2010-09-05
03:46:15
 Re: C16 memory layout

Basically when you write (or read!) memory on a C16 the real memory address will be address AND $3fff. So as you and Csabo wrote earlier: be careful when writing high memory addresses on configuration with less then 64k RAM.
The I/O area from $fd00 to $ff3f is the exception because it never writes the underlying RAM.
One interesting thing is that you can use the first two bytes of RAM that is normally hidden under the CPU I/O registers by addressing them at $4000-$4001/$8000-$8001/$c000-$c001.



Back to topReply To This Topic


Copyright © Plus/4 World Team, 2001-2017