Login
Back to forumReply to this topicGo to last reply

Posted By

Luca
on 2019-04-06
10:04:27
 $4000/$4001 different from $0000/$0001 on C16

I'm sure I'm the only one who des not know the reason to it, pleasme explain it to me too happy

I was sure about this: if you load on C16 a program with endbyte at $4001 (included), the C16 will wrap it to $0000/$0001...but no! The C16 keeps different values, resulting untouched in those two very delicate zp location, and keeps the different values just loaded into $4000/$4001 as virtual memory! Should $00/$01 be considerer in the RAM/ROM switching cases?

Posted By

MCes
on 2019-04-06
11:12:44
 Re: $4000/$4001 different from $0000/$0001 on C16

$00 + $01 are the address of parallel port on CPU,
the CPU don't drive the ram bus during accessing at this address, but it drive ram well if you use the mirror address +$4000...

Posted By

SVS
on 2019-04-06
12:36:24
 Re: $4000/$4001 different from $0000/$0001 on C16

Luca, how do you obtain the reading of these shadow cells? (What are your exact procedure and commands)

Posted By

Luca
on 2019-04-06
12:54:30
 Re: $4000/$4001 different from $0000/$0001 on C16

Exactly as I've described: loading into C16 a program till $4001 included.

Posted By

siz
on 2019-04-06
15:53:53
 Re: $4000/$4001 different from $0000/$0001 on C16

Exactly as MCes wrote: the C16 has 16k RAM which repeats 4 times in the 64k address range. The RAM at $0000/$0001 cannot be read or written as that's the CPU I/O port. Accessing those addresses happens inside the CPU, they don't appear on the buses. As the RAM wraps around you can access those memory cells at their "shadow" adresses: $4000/$4001, $8000/$8001 and $c000/$c001.



Back to topReply to this topic


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