[Prev] [Next] [Contents] [Commodore] [New] [Search] [Home]

System Specification for C65Fred BowenMarch 1, 1991

It is possible, and likely, to have mapped, and unmapped memory at the same physical address. And, with offset registers set to zero, mapped addresses will match unmapped ones. The only difference is the NOMAP signal to tell whether the address is mapped or unmapped.

To program the mapper, the operating system must load the A, X, Y, and Z registers with the following information, and execute a MAP opcode,

Mapper Register Data
76543210BIT
LOWER
OFF15
LOWER
OFF14
LOWER
OFF13
LOWER
OFF12
LOWER
OFF11
LOWER
OFF10
LOWER
OFF9
LOWER
OFF8
A
MAP
BLK3
MAP
BLK2
MAP
BLK1
MAP
BLK0
LOWER
OFF19
LOWER
OFF18
LOWER
OFF17
LOWER
OFF16
X
UPPER
OFF15
UPPER
OFF14
UPPER
OFF13
UPPER
OFF12
UPPER
OFF11
UPPER
OFF10
UPPER
OFF9
UPPER
OFF8
Y
MAP
BLK7
MAP
BLK6
MAP
BLK5
MAP
BLK4
UPPER
OFF19
UPPER
OFF18
UPPER
OFF17
UPPER
OFF16
Z

After executing the MAP opcode, all interrupts are inhibited. This is done to allow the operating system to complete a mapping sequence without fear of getting an interrupt. An interrupt occurring before the proper stack-pointer is set will cause return address data to be written to an undesired area.

Upon completing the mapping sequence, the operating system must remove the interrupt inhibit by executing a EOM (formerly NOP) opcode. Note that application software may execute NOPs with no effect.


[Prev] [Next] [Contents] [Commodore] [New] [Search] [Home]
This page has been created by Sami Rautiainen.
Read the small print. Last updated August 10, 2001.