Memory Configuration
The signals /CharEn, /HiRam and /LoRam are used to select the memory
configuration. They can be set using the processor port $01. The following
logic applies (if expression on the right side is true, area mentioned on
the left side will be activated. Otherwise, there is RAM):
Kernal ROM = (/HiRam)
Basic ROM = (/LoRam AND /HiRam)
That means, you cannot switch in Basic when the Kernal is off. Please
note also, that an EPROM starting at $8000 will be disabled when you
switch off the Basic ROM.
Char. ROM = ((NOT (/CharEn)) AND (/LoRam OR /HiRam))
I/O-Area = (/CharEn AND (/LoRam OR /HiRam))
These two areas can just be activated, if at least one other signal is
high. Then /CharEn selects either Char. ROM or I/O-Area.
As a result, we get the following possibilities for the corresponding
bits of $01:
Bit+-------------+-----------+------------+
210| $8000-$BFFF |$D000-$DFFF|$E000-$FFFF |
+---+---+-------------+-----------+------------+
| 7 |111| Cart.+Basic | I/O | Kernal ROM |
+---+---+-------------+-----------+------------+
| 6 |110| RAM | I/O | Kernal ROM |
+---+---+-------------+-----------+------------+
| 5 |101| RAM | I/O | RAM |
+---+---+-------------+-----------+------------+
| 4 |100| RAM | RAM | RAM |
+---+---+-------------+-----------+------------+
| 3 |011| Cart.+Basic | Char. ROM | Kernal ROM |
+---+---+-------------+-----------+------------+
| 2 |010| RAM | Char. ROM | Kernal ROM |
+---+---+-------------+-----------+------------+
| 1 |001| RAM | Char. ROM | RAM |
+---+---+-------------+-----------+------------+
| 0 |000| RAM | RAM | RAM |
+---+---+-------------+-----------+------------+
|||
/CharEn|/LoRam
|
/HiRam