{
    "platform_name": "Commodore VIC-20",
    "enabled": true,
    "labels": {
        "SYSTEM": {
            "9000": "VICCR0",
            "9001": "VICCR1",
            "9002": "VICCR2",
            "9003": "VICCR3",
            "9004": "VICCR4",
            "9005": "VICCR5",
            "9006": "VICCR6",
            "9007": "VICCR7",
            "9008": "VICCR8",
            "9009": "VICCR9",
            "900A": "VICCRA",
            "900B": "VICCRB",
            "900C": "VICCRC",
            "900D": "VICCRD",
            "900E": "VICCRE",
            "900F": "VICCRF",
            "9110": "VIA1PB",
            "9111": "VIA1PA1",
            "9112": "VIA1DDRB",
            "9113": "VIA1DDRA",
            "9114": "VIA1TICL",
            "9115": "VIA1TICH",
            "9116": "VIA1TILL",
            "9117": "VIA1TILH",
            "9118": "VIA1T2CL",
            "9119": "VIA1T2CH",
            "911A": "VIA1SR",
            "911B": "VIA1ACR",
            "911C": "VIA1PCR",
            "911D": "VIA1IFR",
            "911E": "VIA1IER",
            "911F": "VIA1PA2",
            "9120": "VIA2PB",
            "9121": "VIA2PA1",
            "9122": "VIA2DDRB",
            "9123": "VIA2DDRA",
            "9124": "VIA2TICL",
            "9125": "VIA2TICH",
            "9126": "VIA2TILL",
            "9127": "VIA2TILH",
            "9128": "VIA2T2CL",
            "9129": "VIA2T2CH",
            "912A": "VIA2SR",
            "912B": "VIA2ACR",
            "912C": "VIA2PCR",
            "912D": "VIA2IFR",
            "912E": "VIA2IER",
            "912F": "VIA2PA2",
            "C474": "ROM_READY",
            "CEFD": "ROM_COMCHK",
            "D79B": "ROM_GETBYT",
            "D7F7": "ROM_MAKADR",
            "E3A4": "ROM_INITBA",
            "E467": "ROM_WARMBAS",
            "E505": "ROM_SCRN",
            "E50A": "ROM_PLOT",
            "E518": "ROM_INITSK",
            "E55F": "ROM_CLSR",
            "E581": "ROM_HOME",
            "E587": "ROM_SETSLINK",
            "E5BB": "ROM_SETIODEF",
            "E5C3": "ROM_INITVIC",
            "E64F": "ROM_GETSCRN",
            "E975": "ROM_SCRL",
            "E9EE": "ROM_OPENLIN",
            "EA6E": "ROM_MOVLINE",
            "EA8D": "ROM_CLRALINE",
            "EABF": "ROM_IRQ",
            "EB1E": "ROM_SCNKEY",
            "EBDC": "ROM_SETKEYS",
            "EE14": "ROM_TALK",
            "EE17": "ROM_LISTEN",
            "EE1C": "ROM_LISTI",
            "EE49": "ROM_SRSEND",
            "EEB4": "ROM_SRBAD",
            "EEC0": "ROM_SECOND",
            "EEC5": "ROM_SCATN",
            "EECE": "ROM_TKSA",
            "EEE4": "ROM_CIOUT",
            "EEF6": "ROM_UNTLK",
            "EF04": "ROM_UNLSN",
            "EF19": "ROM_ACPTR",
            "EF84": "ROM_SCCLKHI",
            "EF8D": "ROM_SRCLK0",
            "EF96": "ROM_WAITABIT",
            "F1F5": "ROM_GETIN",
            "F20E": "ROM_CHRIN",
            "F27A": "ROM_CHROUT",
            "F2C7": "ROM_CHKIN",
            "F309": "ROM_CHKOUT",
            "F34A": "ROM_CLOSE",
            "F3EF": "ROM_CLALL",
            "F3F3": "ROM_CLRCHN",
            "F40A": "ROM_OPEN",
            "F542": "ROM_LOAD",
            "F675": "ROM_SAVE",
            "F77E": "ROM FILEMSG",
            "FD22": "ROM_START",
            "FD3F": "ROM_CHKAUTO",
            "FD57": "ROM_VECTOR",
            "FD8D": "ROM_INITMEM",
            "FDF9": "ROM_INITVIA",
            "FE49": "ROM_SETNAM",
            "FE50": "ROM_SETLFS",
            "FE73": "ROM_MEMTOP",
            "FE82": "ROM_MEMBOT",
            "FE91": "ROM_TSTMEM",
            "FEA9": "ROM_NMI",
            "FED2": "ROM_BREAK",
            "FF72": "ROM_IRQOUT",
            "FF8A": "ROM_CRESTOR",
            "FF8D": "ROM_CVECTOR",
            "FF90": "ROM_CSETMSG",
            "FF93": "ROM_CSECOND",
            "FF96": "ROM_CTKSA",
            "FF99": "ROM_CMEMTOP",
            "FF9C": "ROM_CMEMBOT",
            "FF9F": "ROM_CSCNKEY",
            "FFA2": "ROM_CSETTMO",
            "FFA5": "ROM_CACPTR",
            "FFA8": "ROM_CCIOUT",
            "FFAB": "ROM_CUNTLK",
            "FFAE": "ROM_CUNLSN",
            "FFB1": "ROM_CLISTEN",
            "FFB4": "ROM_CTALK",
            "FFB7": "ROM_CRDST",
            "FFBA": "ROM_CSETLFS",
            "FFBD": "ROM_CSETNAM",
            "FFC0": "ROM_COPEN",
            "FFC3": "ROM_CCLOSE",
            "FFC6": "ROM_INPCHN",
            "FFC9": "ROM_OUTCHN",
            "FFCC": "ROM_CCLRCHN",
            "FFCF": "ROM_CINCH",
            "FFD2": "ROM_CHROUT",
            "FFD5": "ROM_CLOAD",
            "FFD8": "ROM_CSAVE",
            "FFDB": "ROM_CSETTIM",
            "FFDE": "ROM_CRDTIM",
            "FFE1": "ROM_ISCNTC",
            "FFE4": "ROM_CGETL",
            "FFE7": "ROM_CCALL",
            "FFEA": "ROM_CUDTIM",
            "FFED": "ROM_CSCREEN",
            "FFF0": "ROM_CPLOT",
            "FFF3": "ROM_CIOBASE",
            "FFFA": "ROM_VCTRNMI",
            "FFFC": "ROM_VCTRRST",
            "0300": "RAM_IERROR",
            "0302": "RAM_IMAIN",
            "0304": "RAM_ICRNCH",
            "0306": "RAM_IQPLOP",
            "0308": "RAM_IGONE",
            "030A": "RAM_IEVAL",
            "0314": "RAM_CINV",
            "0316": "RAM_CBINV",
            "0318": "RAM_MNINV",
            "031A": "RAM_IOPEN",
            "031C": "RAM_ICLOSE",
            "031E": "RAM_ICHKIN0",
            "0320": "RAM_ICHKOUT",
            "0322": "RAM_ICLRCH",
            "0324": "RAM_IBASIN",
            "0326": "RAM_IBSOUT",
            "0328": "RAM_ISTOP",
            "032A": "RAM_IGETIN",
            "032C": "RAM_ICLALL",
            "032E": "RAM_USRCMD",
            "0330": "RAM_ILOAD",
            "0332": "RAM_ISAVE",
            "0334": "RAM_USRCMD1",
            "0336": "RAM_USRCMD2",
            "0338": "RAM_USRCMD3",
            "033A": "RAM_USRCMD4",
            "FFFE": "ROM_VCTRIRQ",
            "030C": "RAM_SAREG",
            "030D": "RAM_SXREG",
            "030E": "RAM_SYREG",
            "030F": "RAM_SPREG"
        }
    },
    "comments": {
        "C474": "$C474 - dispaly READY. message",
        "CEF7": "$CEF7 - check for right parenthasis ')'",
        "CEFD": "$CEFD - check for comma ','",
        "CEFA": "$CEFA - check for left parenthasis '('",
        "D79B": "$D79B - get number in .X",
        "D7F7": "$D7F7 - convert FAC to 2 byte integer",
        "E3A4": "$E3A4 - init BASIC: restore CHRGET & zp pointers",
        "E467": "$E467 - warm start BASIC",
        "E505": "$E505 - get max number of screen columns",
        "E50A": "$E50A - read or set cursor column and row",
        "E518": "$E518 - init VIC, screen and related pointers",
        "E55F": "$E55F - clear the screen",
        "E581": "$E581 - home the cursor",
        "E587": "$E587 - reset screen line link table",
        "E5BB": "$E5BB - reset default device numbers",
        "E5C3": "$E5C3 - reset VIC registers",
        "E64F": "$E64F - get input from screen",
        "E975": "$E975 - scroll the screen",
        "E9EE": "$E9EE - open a blank screen line",
        "EA56": "$EA56 - move a screen line",
        "EA8D": "$EA8D - clear a screen line",
        "EABF": "$EABF - IRQ interrupt handler",
        "EB1E": "$EB1E - scan VIA2 for keypress",
        "EBDC": "$EBDC - set keyboard decode table",
        "EE14": "$EE14 - serial: send talk w/attention",
        "EE17": "$EE17 - serial: send listen w/attention",
        "EE1C": "$EE1C - serial: prep to send command w/attention",
        "EE49": "$EE49 - serial: send command or data",
        "EEB4": "$EEB4 - serial: set ST for timeout or dev. not present",
        "EEC0": "$EEC0 - serial: send secondary address after listen",
        "EEC5": "$EE5C - serial: clear attention",
        "EECE": "$EECE - serial: send secondary addresss after talk",
        "EEE4": "$EEE4 - serial: send a byte",
        "EEF6": "$EEF6 - serial: send untalk",
        "EF04": "$EF04 - serial: send unlisten",
        "EF19": "$EF19 - serial: receive a byte",
        "EF84": "$EF84 - serial: set clock line high",
        "EF8D": "$EF8D - serial: set clock line low",
        "EF96": "$EF96 - serial: delay one millisecond",
        "F1F5": "$F1F5 - routing fot get a character of input data",
        "F20E": "$F20E - get character from input device",
        "F27A": "$F27A - output character to output device",
        "F2C7": "$F2C7 - open .X file number channel for input",
        "F309": "$F309 - open .X file number channel for output",
        "F34A": "$F34A - close logical file number in .A",
        "F3EF": "$F3EF - abort all open files (no close)",
        "F3F3": "$F3F3 - abort all open channels",
        "F40A": "$F40A - open a logical file",
        "F542": "$F642 - load(or verify) to RAM from current device",
        "F675": "$F675 - save RAM to current device",
        "F77E": "$F77E - I/O file error messgae handler",
        "FD22": "$FD22 - power-on/reset routine",
        "FD3F": "$FD3F - check for autostart catridge",
        "FD52": "$FD52 - reset system RAM vectors to default",
        "FD57": "$FD57 - read or set system RAM vectors",
        "FD8D": "$FD8D - init system memory",
        "FDF9": "$FDF9 - init VIA registers",
        "FE49": "$FE49 - set filename",
        "FE50": "$FE50 - set file number, device & secondary address",
        "FE73": "$FE73 - read or set top of memory pointer",
        "FE82": "$FE82 - read or set bottom of memory pointer",
        "FE91": "$FE81 - test a memory location",
        "FEA9": "$FEA9 - NMI handler routine",
        "FED2": "$FED2 - break interrupt entry",
        "FF72": "$FF72 - IRQ routine initial 6502 entry point",
        "FF81": "$FF81 - init VIC & screen editor",
        "FF84": "$FF84 - initialize CIA & IRQ",
        "FF87": "$FF87 - RAM test & search RAM end",
        "FF8A": "$FF8A - restore default I/O vectors",
        "FF8D": "$FF8D - read/set I/O vectors",
        "FF90": "$FF90 - enable/disable KERNAL messages",
        "FF93": "$FF93 - send secondary addr after listen",
        "FF96": "$FF96 - send secondary addr after talk",
        "FF99": "$FF99 - read/set top of memory",
        "FF9C": "$FF9C - read/set bottom of memory",
        "FF9F": "$FF9F - scan keyboard",
        "FFA2": "$FFA2 - set IEEE timeout",
        "FFA5": "$FFA5 - input byte from SERIAL",
        "FFA8": "$FFA8 - output byte to SERIAL",
        "FFAB": "$FFAB - untalk all SERIAL devices",
        "FFAE": "$FFAE - unlisten all SERIAL devices",
        "FFB1": "$FFB1 - make SERIAL device listen",
        "FFB4": "$FFB4 - make SERIAL device talk",
        "FFB7": "$FFB7 - read I/O status byte",
        "FFBA": "$FFBA - set file parameters",
        "FFBD": "$FFBD - set file name",
        "FFC0": "$FFC0 - open log.file after SETLFS,SETNAM",
        "FFC3": "$FFC3 - close a logical file",
        "FFC6": "$FFC6 - open channel for input",
        "FFC9": "$FFC9 - open channel for output",
        "FFCC": "$FFCC - restore default devices",
        "FFCF": "$FFCF - input character",
        "FFD2": "$FFD2 - output character",
        "FFD5": "$FFD5 - load after call SETLFS,SETNAM",
        "FFD8": "$FFD8 - save after call SETLFS,SETNAM",
        "FFDB": "$FFDB - set jiffy clock",
        "FFDE": "$FFDE - read jiffy clock",
        "FFE1": "$FFE1 - check stop key",
        "FFE4": "$FFE4 - get a byte from channel",
        "FFE7": "$FFE7 - close or abort all files",
        "FFEA": "$FFEA - update jiffy clock",
        "FFED": "$FFED - return screen size",
        "FFF0": "$FFF0 - read/set cursor position",
        "FFF3": "$FFF3 - returns the addr of I/O devices",
        "0300": "$0300 (ind) - print BASIC error message from table",
        "0302": "$0302 (ind) - BASIC main routine",
        "0304": "$0304 (ind) - BASIC tokenization routine",
        "0306": "$0306 (ind) - BASIC expand & print token routine",
        "0308": "$0308 (ind) - execute next BASIC token",
        "030A": "$030A (ind) - evaluate a BASIC variable",
        "030C": "$030C - 6502 .A register",
        "030D": "$030D - 6502 .X register",
        "030E": "$030E - 6502 .Y register",
        "030F": "$030F - 6502 .P processor status register",
        "0314": "$0314 (ind) - IRQ interrupt vector",
        "0316": "$0316 (ind) - BREAK interrupt vector",
        "0318": "$0318 (ind) - NMI interrupt vector",
        "031A": "$031A (ind) - open log.file after SETLFS,SETNAM",
        "031C": "$031C (ind) - close a logical file",
        "031E": "$031E (ind) - open channel for input",
        "0320": "$0320 (ind) - open channel for output",
        "0322": "$0322 (ind) - restore default devices",
        "0324": "$0324 (ind) - input character",
        "0326": "$0326 (ind) - output character",
        "0328": "$0328 (ind) - check stop key",
        "032A": "$032A (ind) - get a byte from channel",
        "032C": "$032C (ind) - close or abort all files",
        "032E": "$032E (ind) - unused vector",
        "0330": "$0330 (ind) - load after call SETLFS,SETNAM",
        "0332": "$0332 (ind) - save after call SETLFS,SETNAM",
        "9000": "$9000 - left edge of picture & interlace switch",
        "9001": "$9001 - vertical picture origin",
        "9002": "$9002 - number of columns, part os screen map addr.",
        "9003": "$9003 - number of lines, part of raster location (bit 8)",
        "9004": "$9004 - raster beam location (bits 7-0)",
        "9005": "$9005 - screen map & character map address",
        "9006": "$9006 - light pen horizontal position",
        "9007": "$9007 - light pen vertical position",
        "9008": "$9008 - paddle X value",
        "9009": "$9009 - paddle Y value",
        "900A": "$900A - frequency of sound osc.1 (bass)",
        "900B": "$900B - frequency of sound osc.2 (alto)",
        "900C": "$900C - frequency of sound osc.3 (soprano)",
        "900D": "$900D - frequency of sound osc.4 (noise)",
        "900E": "$900E - sound volume",
        "900F": "$900F - screen colors: background, border & inverse",
        "9110": "$9110 - port b I/O register",
        "9111": "$9111 - port a I/O register",
        "9112": "$9112 - data direction register for port b",
        "9113": "$9113 - data direction register for port a",
        "9114": "$9114 - timer 1 (lsb) of count",
        "9115": "$9115 - timer 1 (msb) of count",
        "9116": "$9116 - timer 1 low order (lsb) latch",
        "9117": "$9117 - timer 1 high order (msb) latch",
        "9118": "$9118 - timer 2 low order (lsb) counter & latch",
        "9119": "$9119 - timer 2 high order (msb) counter & latch",
        "911A": "$911A - shift register for parallel/serial conversion",
        "911B": "$911B - aux. control register",
        "911C": "$911C - peripheral control register for handshaking",
        "911D": "$911D - interrupt flag register (IFR)",
        "911E": "$911E - interrupt enable register (IER)",
        "911F": "$911F - mirror of VIA1PA1 (CA1 & CA2 unaffected)",
        "9120": "$9120 - port b I/O register",
        "9121": "$9121 - port a I/O register",
        "9122": "$9122 - data direction register for port b",
        "9123": "$9123 - data direction register for port a",
        "9124": "$9124 - timer 1 (lsb) of count",
        "9125": "$9125 - timer 1 (msb) of count",
        "9126": "$9126 - timer 1 low order (lsb) latch",
        "9127": "$9127 - timer 1 high order (msb) latch",
        "9128": "$9128 - timer 2 low order (lsb) counter & latch",
        "9129": "$9129 - timer 2 high order (msb) counter & latch",
        "912A": "$912A - shift register for parallel/serial conversion",
        "912B": "$912B - aux. control register",
        "912C": "$912C - peripheral control register for handshaking",
        "912D": "$912D - interrupt flag register (IFR)",
        "912E": "$912E - interrupt enable register (IER)",
        "912F": "$912F - mirror of VIA1PA1 (CA1 & CA2 unaffected)",
        "FFFA": "NMI",
        "FFFB": "NMI",
        "FFFC": "Hardware Reset",
        "FFFD": "Hardware Reset",
        "FFFE": "IRQ",
        "FFFF": "IRQ"
    },
    "excluded": [
        "9000-912f",
        "C474",
        "CEFD",
        "D79B",
        "D7F7",
        "E3A4",
        "E467",
        "E505",
        "E50A",
        "E518",
        "E55F",
        "E581",
        "E587",
        "E5BB",
        "E5C3",
        "E64F",
        "E975",
        "E9EE",
        "EA6E",
        "EA8D",
        "EABF",
        "EB1E",
        "EBDC",
        "EE14",
        "EE17",
        "EE1C",
        "EE49",
        "EEB4",
        "EEC0",
        "EEC5",
        "EECE",
        "EEE4",
        "EEF6",
        "EF04",
        "EF19",
        "EF84",
        "EF8D",
        "EF96",
        "F1F5",
        "F20E",
        "F27A",
        "F2C7",
        "F309",
        "F34A",
        "F3EF",
        "F3F3",
        "F40A",
        "F542",
        "F675",
        "F77E",
        "FD22",
        "FD3F",
        "FD57",
        "FD57",
        "FD8D",
        "FDF9",
        "FE49",
        "FE50",
        "FE73",
        "FE82",
        "FE91",
        "FEA9",
        "FED2",
        "FF72",
        "FF8A",
        "FF8D",
        "FF90",
        "FF93",
        "FF96",
        "FF99",
        "FF9C",
        "FF9F",
        "FFA2",
        "FFA5",
        "FFA8",
        "FFAB",
        "FFAE",
        "FFB1",
        "FFB4",
        "FFB7",
        "FFBA",
        "FFBD",
        "FFC0",
        "FFC3",
        "FFC6",
        "FFC9",
        "FFCC",
        "FFCF",
        "FFD2",
        "FFD5",
        "FFD8",
        "FFDB",
        "FFDE",
        "FFE1",
        "FFE4",
        "FFE7",
        "FFEA",
        "FFED",
        "FFF0",
        "FFF3",
        "FFFA",
        "FFFC"
    ]
}
