Systems
Regenerator 2000 ships with built-in system definitions for a range of 6502-based systems. Each system provides system labels (ROM entry points, hardware registers, zero-page variables), side comments, and excluded address ranges that help produce cleaner disassembly output.
You can select the target system in File → Document Settings (Ctrl+D) under the System selector.
Supported Systems
Enabled by default
These systems are visible in the System selector out of the box:
| System | Label Groups | Comments | Excludes |
|---|---|---|---|
| Commodore 64 | BASIC, KERNAL, Lower Page | ✅ | ✅ |
| Commodore 128 | KERNAL | ✅ | ✅ |
| Commodore VIC-20 | BASIC, KERNAL, Lower Page | ✅ | ✅ |
| Commodore Plus4 | KERNAL, Lower Page | ✅ | ✅ |
| Commodore PET 2.0 | BASIC, KERNAL, Lower Page | ✅ | ✅ |
| Commodore PET 4.0 | BASIC, KERNAL, Lower Page | ✅ | ✅ |
| Commodore 1541 | — | ❌ | ❌ |
Experimental (disabled by default)
These systems are included but disabled (enabled = false). To use them, dump the built-in
configs and set enabled = true (see Custom Systems below):
| System | Label Groups | Comments | Excludes |
|---|---|---|---|
| NES | SYSTEM | ✅ | ❌ |
| Apple II | — | ✅ | ✅ |
| Atari 8bit | SYSTEM | ✅ | ✅ |
| BBC Micro | SYSTEM | ✅ | ✅ |
| Oric 1.0 | SYSTEM | ✅ | ✅ |
| Oric 1.1 | SYSTEM | ✅ | ✅ |
Label Groups
Each system can define one or more label groups — named sets of address-to-label mappings. In Document Settings, each group appears as a separate checkbox under System Labels, letting users toggle them independently.
Common groups include:
- KERNAL — ROM entry points and kernel routines (enabled by default).
- BASIC — BASIC interpreter routines and tables.
- Lower Page — Zero-page and page-one variables.
- SYSTEM — Hardware registers and I/O addresses.
Custom Systems
You can override any built-in system or add entirely new systems by placing a
system-*.toml file in the application config directory.
Config directory location
| OS | Config directory |
|---|---|
| macOS | ~/Library/Application Support/regenerator2000/ |
| Linux | ~/.config/regenerator2000/ |
| Windows | C:\Users\<User>\AppData\Roaming\regenerator2000\config\ |
[!TIP] You can verify the path on your machine by running
regenerator2000 --help— the config directory is printed near the end of the output.
Getting started
The easiest way to create a custom config is to start from the built-in files:
-
Dump all built-in configs to the config directory:
This writes every system-*.toml to the destination folder and exits.
-
Edit the file(s) you want to customise with any text editor.
-
Launch Regenerator 2000 normally — your versions are picked up automatically.
How it works
- Files must be named
system-<name>.toml(e.g.system-commodore_64.toml). - A file with the same
system_nameas a built-in definition replaces the built-in entirely. - A file with a new
system_nameis added as an additional system. - Name matching is case-sensitive; spaces in the filename should be replaced with underscores.
- Legacy
platform-*.tomlandplatform-*.jsonfiles are still supported for backward compatibility.
TOML schema reference
Every system-*.toml file has the following structure:
system_name = "My Custom System"
enabled = true
excluded = ["9000-900F"]
[labels.GROUP_NAME]
"ADDR_HEX" = "LABEL_NAME"
[comments]
"ADDR_HEX" = "Side comment text"
| Field | Type | Description |
|---|---|---|
system_name |
string | Display name shown in the Document Settings System selector. Must be unique across all configs. |
enabled |
bool | If false, the system is hidden from the selector. Useful for WIP configs. |
labels |
table | Groups of address → label mappings. Each key is a group name (e.g. "KERNAL", "I/O") that appears as a toggle in Document Settings → System Labels. |
labels.GROUP_NAME |
table | Map of hex address strings to label names. Addresses use uppercase hex without the $ prefix or 0x prefix (e.g. "D020" not "$D020"). |
comments |
table | Map of hex addresses to side-comment strings. When enabled via Show system comments in Document Settings, these appear as side comments in the disassembly. |
excluded |
array of strings | Address ranges the analyzer should skip (e.g. "D000-D031"). Ranges use START-END notation in uppercase hex. Enables the Exclude well-known addresses checkbox in Document Settings. |
[!NOTE]
labels,comments, andexcludedare all optional — you can omit any section you don't need. An emptylabelstable means no System Labels checkboxes appear; an emptyexcludedarray means the Exclude well-known addresses checkbox is hidden.
Example: creating a custom system
Below is a minimal config for a hypothetical "Acme Computer" with a video chip at $9000–$900F:
system_name = "Acme Computer"
enabled = true
excluded = ["9000-900F"]
[labels.VIDEO]
"9000" = "VID_CTRL"
"9001" = "VID_STATUS"
"9002" = "VID_HSCROLL"
"9003" = "VID_VSCROLL"
"900E" = "VID_BORDER_COLOR"
"900F" = "VID_BG_COLOR"
[comments]
"9000" = "Video Control Register"
"9001" = "Video Status (read-only)"
"900E" = "Border Color"
"900F" = "Background Color"
Save this as system-acme_computer.toml in the config directory. Next time you launch
Regenerator 2000, Acme Computer will appear in the System selector.
Tips
- Back up the original files before editing — you can always re-dump with
--dump-system-config-files. - Disable a config temporarily by setting
enabled = falseinstead of deleting the file. - Validate your TOML before launching — a syntax error will cause the file to be silently skipped. Check the log file (path varies by OS) for parsing errors.
- Each label group maps to a separate checkbox in Document Settings. Use meaningful group names
like
"KERNAL","BASIC","I/O", or"SOUND"to let users toggle sets independently.