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
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.
|
|