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-$9FFF|$A000-$BFFF|$D000-$DFFF|$E000-$FFFF |
+---+---+-----------+-----------+-----------+------------+-----------+
| 7 |111| RAM | Basic | I/O | Kernal ROM | No Cart. |
| 7 |111| ROMLO | Basic | I/O | Kernal ROM | 8k Cart. |
| 7 |111| ROMLO | ROMHI | I/O | Kernal ROM | 16k Cart. |
+---+---+-----------+-----------+-----------+------------+-----------+
| 6 |110| RAM | RAM | I/O | Kernal ROM | No / 8k |
| 6 |110| RAM | ROMHI | I/O | Kernal ROM | 16k Cart. |
+---+---+-----------+-----------+-----------+------------+-----------+
| 5 |101| RAM | RAM | I/O | RAM |
+---+---+-----------+-----------+-----------+------------+
| 4 |100| RAM | RAM | RAM | RAM |
+---+---+-----------+-----------+-----------+------------+-----------+
| 3 |011| RAM | Basic | Char. ROM | Kernal ROM | No Cart. |
| 3 |011| ROMLO | Basic | Char. ROM | Kernal ROM | 8k Cart. |
| 3 |011| ROMLO | ROMHI | Char. ROM | Kernal ROM | 16k Cart. |
+---+---+-----------+-----------+-----------+------------+-----------+
| 2 |010| RAM | RAM | Char. ROM | Kernal ROM | No / 8k |
| 2 |010| RAM | ROMHI | Char. ROM | Kernal ROM | 16k Cart. |
+---+---+-----------+-----------+-----------+------------+-----------+
| 1 |001| RAM | RAM | Char. ROM | RAM | No / 8k |
| 1 |001| RAM | RAM | RAM | RAM | 16k Cart. |
+---+---+-----------+-----------+-----------+------------+-----------+
| 0 |000| RAM | RAM | RAM | RAM |
+---+---+-----------+-----------+-----------+------------+
|||
/CharEn|/LoRam
|
/HiRam