A higher capacity ROM chip is used to replace the existing ROM chips, which means that there are additional address pins on the replacement ROM that the C64 is oblivious to and does not use.
These additional address pins can be used to apply an offset to the requested address and select data in a different location, thereby selecting a distinct bank of data. The number of
redundant additional address pins determines how many of these banks can exist and be selected.
Consider the following simplified case:
When replacing only the Character ROM, which has 12 address pins (labelled A0 - A11), with a "512" type ROM chip, with 16 address pins (labelled A0 - A15),
the "512" type will have 4 address pins above the normal address range. These 4 pins can have one of two states (1 or 0, on or off) which gives 16 possible binary selections (from 2^4), so 16 banks
containing distinct character sets can exist in the chip and be selected by altering the base address offset.
I first devised a memory map for the MROM64C, which would then help me create a logic circuit that presents the correct data bank based on what the user has set and what the C64 expects.
I refer to the 010's address pins as R0-R16, using R instead of the more conventional A, to differentiate from the C64's bus.
This means that, for example, R13 in refers to pin A13 of the 010 ROM.
Empty cells represent a binary zero, and are left empty for readability reasons.
| Address in 010 ROM | Contents | Bank size | R16 | R15 | R14 | R13 | R12 |
|---|---|---|---|---|---|---|---|
| 0x00000 | Font 0 | 4K | |||||
| 0x01000 | Font 1 | 4K | 1 | ||||
| 0x02000 | Font 2 | 4K | 1 | ||||
| 0x03000 | Font 3 | 4K | 1 | 1 | |||
| 0x04000 | Font 4 | 4K | 1 | ||||
| 0x05000 | Font 5 | 4K | 1 | 1 | |||
| 0x06000 | Font 6 | 4K | 1 | 1 | |||
| 0x07000 | Font 7 | 4K | 1 | 1 | 1 | ||
| 0x08000 | Font 8 | 4K | 1 | ||||
| 0x09000 | Font 9 | 4K | 1 | 1 | |||
| 0x0A000 | Font 10 | 4K | 1 | 1 | |||
| 0x0B000 | Font 11 | 4K | 1 | 1 | 1 | ||
| 0x0C000 | Font 12 | 4K | 1 | 1 | |||
| 0x0D000 | Font 13 | 4K | 1 | 1 | 1 | ||
| 0x0E000 | Font 14 | 4K | 1 | 1 | 1 | ||
| 0x0F000 | Font 15 | 4K | 1 | 1 | 1 | 1 | |
| 0x10000 | BASIC | 8K | 1 | transparent | |||
| 0x12000 | Kernal 0 | 8K | 1 | 1 | transparent | ||
| 0x14000 | Kernal 1 | 8K | 1 | 1 | transparent | ||
| 0x16000 | Kernal 2 | 8K | 1 | 1 | 1 | transparent | |
| 0x18000 | Kernal 3 | 8K | 1 | 1 | transparent | ||
| 0x1A000 | Kernal 4 | 8K | 1 | 1 | 1 | transparent | |
| 0x1C000 | Kernal 5 | 8K | 1 | 1 | 1 | transparent | |
| 0x1E000 | Kernal 6 | 8K | 1 | 1 | 1 | 1 | transparent |
Page created: 18DEC2025
Last modified: 18DEC2025