{
    "platform_name": "Oric 1.1",
    "enabled": false,
    "labels": {
        "SYSTEM": {
            "C006": "ROM_JUMPTAB",
            "C0EA": "ROM_KEYWORDS",
            "C2A8": "ROM_ERRORMSGS",
            "C3C6": "ROM_FINDFORVAR",
            "C3F4": "ROM_VARALLOC",
            "C444": "ROM_FREEMEMCHECK",
            "C47C": "ROM_PRINTERROR",
            "C4A8": "ROM_BACKTOBASIC",
            "C4D3": "ROM_INSDELLINE",
            "C4E0": "ROM_DELETELINE",
            "C524": "ROM_INSERTLINE",
            "C55F": "ROM_SETLINELINKPTRS",
            "C592": "ROM_GETLINE",
            "C5E8": "ROM_READKEY",
            "C5FA": "ROM_TOKENISELINE",
            "C692": "ROM_EDIT",
            "C6B3": "ROM_FINDLINE",
            "C6EE": "ROM_NEW",
            "C70D": "ROM_CLEAR",
            "C748": "ROM_LIST",
            "C7FD": "ROM_LLIST",
            "C809": "ROM_LPRINT",
            "C816": "ROM_SETPRINTER",
            "C82F": "ROM_SETSCREEN",
            "C855": "ROM_FOR",
            "C8C1": "ROM_DONEXTLINE",
            "C915": "ROM_DOSTATEMENT",
            "C952": "ROM_RESTORE",
            "C9A0": "ROM_CONT",
            "C9BD": "ROM_RUN",
            "C9C8": "ROM_GOSUB",
            "C9E5": "ROM_GOTO",
            "CA12": "ROM_RETURN",
            "CA4E": "ROM_FINDENDOFSTATEMENT",
            "CA51": "ROM_FINDEOL",
            "CA70": "ROM_IF",
            "CA99": "ROM_REM",
            "CAC2": "ROM_ON",
            "CAE2": "ROM_TXT2INT",
            "CB1C": "ROM_LET",
            "CBAB": "ROM_PRINT",
            "CBF0": "ROM_NEWLINE",
            "CC59": "ROM_SETCURSOR",
            "CCB0": "ROM_PRINTSTRING",
            "CCCE": "ROM_CLRSCR",
            "CD16": "ROM_TRON",
            "CD46": "ROM_GET",
            "CD55": "ROM_INPUT",
            "CD89": "ROM_READ",
            "CE98": "ROM_NEXT",
            "CF03": "ROM_GETEXPR",
            "CF17": "ROM_EVALEXPR",
            "CFAC": "ROM_DOOPER",
            "D000": "ROM_GETITEM",
            "D03C": "ROM_NOT",
            "D059": "ROM_EVALBRACKET",
            "D07C": "ROM_GETVARVAL",
            "D113": "ROM_COMPARE",
            "D17E": "ROM_DIM",
            "D188": "ROM_GETVARFROMTEXT",
            "D361": "ROM_DIMARRAY",
            "D3EB": "ROM_GETARRAYELEMENT",
            "D47E": "ROM_FRE",
            "D4A6": "ROM_POS",
            "D4BA": "ROM_DEF",
            "D593": "ROM_STR",
            "D5A3": "ROM_SETUPSTRING",
            "D5B5": "ROM_GETSTRING",
            "D650": "ROM_GARBAGECOLLECT",
            "D730": "ROM_COPYSTRING",
            "D767": "ROM_STRCAT",
            "D816": "ROM_CHR",
            "D82A": "ROM_LEFT",
            "D856": "ROM_RIGHT",
            "D861": "ROM_MID",
            "D8A6": "ROM_LEN",
            "D8B5": "ROM_ASC",
            "D8C5": "ROM_GETBYTEEXPR",
            "D922": "ROM_FP2INT",
            "D938": "ROM_PEEK",
            "D94F": "ROM_POKE",
            "D958": "ROM_WAIT",
            "D967": "ROM_DOKE",
            "D983": "ROM_DEEK",
            "D993": "ROM_BYTE2HEX",
            "D9B5": "ROM_HEX",
            "D9DE": "ROM_LORES",
            "DA0C": "ROM_ROWCALC",
            "DA3F": "ROM_SCRN",
            "DA51": "ROM_PLOT",
            "DAA1": "ROM_UNTIL",
            "DAAB": "ROM_REPEAT",
            "DADA": "ROM_KEY",
            "DAF6": "ROM_TXTTEST",
            "DB92": "ROM_NORMALISE",
            "DBB9": "ROM_ADDMANTISSAS",
            "DCAF": "ROM_LN",
            "DD51": "ROM_UNPACKFPA",
            "DDA7": "ROM_FPAMULT10",
            "DDC3": "ROM_FPADIV10",
            "DDD4": "ROM_LOG",
            "DE77": "ROM_PI",
            "DEF4": "ROM_ROUNDFPA",
            "DF0B": "ROM_FALSE",
            "DF0F": "ROM_TRUE",
            "DF13": "ROM_GETSIGN",
            "DF21": "ROM_SGN",
            "DF4C": "ROM_COMPAREFPA",
            "DF8C": "ROM_FPA2INT",
            "DFBD": "ROM_INT",
            "DFE7": "ROM_GETNUMBER",
            "E076": "ROM_ADDTOFPA",
            "E0C5": "ROM_PRINTINT",
            "E22E": "ROM_SQR",
            "E27C": "ROM_EXPDATA",
            "E22A": "ROM_EXP",
            "E313": "ROM_SERIESEVAL",
            "E34F": "ROM_RND",
            "E38B": "ROM_COS",
            "E392": "ROM_SIN",
            "E407": "ROM_TRIGDATA",
            "E43F": "ROM_ATN",
            "E46F": "ROM_ATNDATA",
            "E4AC": "ROM_TAPESYNC",
            "E4E0": "ROM_GETTAPEDATA",
            "E4F2": "ROM_VERIFY",
            "E56C": "ROM_INCTAPECOUNT",
            "E57D": "ROM_PRINTSEARCHING",
            "E585": "ROM_PRINTSAVING",
            "E58C": "ROM_PRINTFNAME",
            "E594": "ROM_PRINTFOUND",
            "E5A4": "ROM_PRINTLOADING",
            "E5AB": "ROM_PRINTVERIFYING",
            "E5B6": "ROM_PRINTMSG",
            "E5EA": "ROM_CLRSTATUS",
            "E5F5": "ROM_CLRTAPESTATUS",
            "E607": "ROM_WRITEFILEHEADER",
            "E65E": "ROM_PUTTAPEBYTE",
            "E6C9": "ROM_GETTAPEBYTE",
            "E735": "ROM_SYNCTAPE",
            "E75A": "ROM_WRITELEADER",
            "E76A": "ROM_SETUPTAPE",
            "E7B2": "ROM_GETTAPEPARAMS",
            "E85B": "ROM_CLOAD",
            "E903": "ROM_CLEAR",
            "E909": "ROM_CSAVE",
            "E946": "ROM_CALL",
            "E987": "ROM_STORE",
            "E9D1": "ROM_RECALL",
            "EAF0": "ROM_HIRESTEST",
            "EB78": "ROM_CHECKKBD",
            "EBCE": "ROM_HIMEM",
            "EC0C": "ROM_RELEASE",
            "EC21": "ROM_TEXT",
            "EC33": "ROM_HIRES",
            "EC45": "ROM_POINT",
            "ECCC": "ROM_STARTBASIC",
            "EDC4": "ROM_COPYMEM",
            "EDE0": "ROM_SETUPTIMER",
            "EE1A": "ROM_STOPTIMER",
            "EE22": "ROM_IRQ",
            "EE8C": "ROM_RESETTIMER",
            "EE9D": "ROM_GETTIMER",
            "EEAB": "ROM_SETTIMER",
            "EEC9": "ROM_DELAY",
            "EEE8": "ROM_WRITEPIXEL",
            "EEF8": "ROM_DRAWLINE",
            "F0C8": "ROM_CURSET",
            "F0FD": "ROM_CURMOV",
            "F110": "ROM_DRAW",
            "F11D": "ROM_PATTERN",
            "F12D": "ROM_CHAR",
            "F204": "ROM_PAPER",
            "F210": "ROM_INK",
            "F268": "ROM_FILL",
            "F37F": "ROM_CIRCLE",
            "F495": "ROM_READKBD",
            "F4EF": "ROM_KEY2ASCII",
            "F523": "ROM_FINDKEY",
            "F561": "ROM_READKBDCOL",
            "F590": "ROM_WRITETOAY",
            "F5C1": "ROM_PRINTCHAR",
            "F602": "ROM_CONTROLCHR",
            "F71A": "ROM_CLEARLINE",
            "F77C": "ROM_CHAR2SCR",
            "F7E4": "ROM_PRINTA",
            "F816": "ROM_ALTCHARS",
            "F865": "ROM_PRINTSTATUS",
            "F88F": "ROM_RESET",
            "F8AF": "ROM_BASICSTART",
            "F8B5": "ROM_BASICRESTART",
            "F920": "ROM_HIRESMODE",
            "F967": "ROM_LORESMODE",
            "F9AA": "ROM_RESETVIA",
            "F9C9": "ROM_SETUPTEXT",
            "FA14": "ROM_RAMTEST",
            "FA9F": "ROM_PING",
            "FAA7": "ROM_PINGDATA",
            "FAB5": "ROM_EXPLODE",
            "FABD": "ROM_SHOOTDATA",
            "FACB": "ROM_EXPLODEDATA",
            "FAE1": "ROM_ZAP",
            "FB06": "ROM_ZAPDATA",
            "FB14": "ROM_KEYCLICKH",
            "FB1C": "ROM_KEYCLICKHDATA",
            "FB2A": "ROM_KEYCLICKL",
            "FB32": "ROM_KEYCLICKLDATA",
            "FB40": "ROM_SOUND",
            "FBD0": "ROM_PLAY",
            "FC18": "ROM_MUSIC",
            "FC5E": "ROM_MUSICDATA",
            "FC78": "ROM_CHARSET",
            "FF78": "ROM_KEYCODETAB"
        }
    },
    "comments": {
        "C000": "$C000 Jump to cold start.",
        "C003": "$C003 Jump to warm start.",
        "C006": "$C006 Addresses of subroutines to handle each token (-1)",
        "C0EA": "$C0EA BASIC tokens. The last character of each has its top bit set.",
        "C3C6": "$C3C6 Search the stack until a \u2018FOR\u2019 entry is found.",
        "C3F4": "$C3F4 A block move.",
        "C437": "$C437 Check stack for free space.",
        "C444": "$C444 Check an address against the top of memory",
        "C471": "$C471 Warm start entry (does not clear program).",
        "C47C": "$C47C Input and process a line.",
        "C55F": "$C55F Recreate links between each line.",
        "C58C": "$C58C Input a line.",
        "C5E8": "$C5E8 Wait for a keypress and return the ASCII code.",
        "C5FA": "$C5FA Translate a line into tokens.",
        "C6B9": "$C6B9 Find the address of a given line.",
        "C6EE": "$C6EE The NEW command.",
        "C708": "$C708 The RUN command.",
        "C70D": "$C70D The CLEAR command.",
        "C726": "$C726 Reset the stack.",
        "C748": "$C748 The LIST command.",
        "C7FD": "$C7FD The LLIST command.",
        "C809": "$C809 The LPRINT command.",
        "C855": "$C855 The FOR command.",
        "C8C1": "$C8C1 Process a BASIC statement.",
        "C952": "$C952 The RESTORE command.",
        "CCB0": "$CCB0 Print \u2018READY\u2019.",
        "CF17": "$CF17 The formula evaluation subroutine.",
        "D499": "$D499 Integer to floating point.",
        "D5AB": "$D5AB Allocate string space.",
        "D5F4": "$D5F4 Set up a new string.",
        "D650": "$D650 Garbage collection subroutine.",
        "D8AC": "$D8AC Calculate the length of a string and clear temporary strings.",
        "D92C": "$D92C Floating point to integer.",
        "DB04": "$DB04 Add 0.5 to accumulator.",
        "DB0B": "$DB0B Subtract accumulator from memory.",
        "DB22": "$DB22 Add accumulator to memory.",
        "DCAF": "$DCAF Calculate LOG",
        "DCED": "$DCED Multiply the accumulator by memory.",
        "DD51": "$DD51 Move memory to the second accumulator.",
        "DDA7": "$DDA7 Multiply the accumulator by 10.",
        "DDC3": "$DDC3 Divide the accumulator by 10.",
        "DDE4": "$DDE4 Divide memory by the accumulator.",
        "DDE9": "$DDE9 Divide the second accumulator by the main accumulator.",
        "DE77": "$DE77 Move memory to the main accumulator.",
        "DEAD": "$DEAD Move the accumulator to memory.",
        "DED5": "$DED5 Move the second accumulator to the main accumulator.",
        "DEE5": "$DEE5 Move the main accumulator to the second accumulator.",
        "DF21": "$DF21 Calculate SGN.",
        "DF49": "$DF49 Calculate ABS.",
        "DFBD": "$DFBD Calculate INT.",
        "DFE7": "$DFE7 Input a floating-point number from a string of ASCII characters.",
        "E0D5": "$E0D5 Output a floating-point number into a string of ASCII characters.",
        "E22E": "$E22E Calculate the square root.",
        "E235": "$E235 Raise the second accumulator to the power of a number in memory.",
        "E271": "$E271 Negate the main accumulator.",
        "E34F": "$E34F Calculate RND.",
        "E38B": "$E38B Calculate COS.",
        "E392": "$E392 Calculate SIN.",
        "E3DB": "$E3DB Calculate TAN.",
        "E43F": "$E43F Calculate ATN.",
        "E56C": "$E56C Test for the end of a load from tape.",
        "E5F5": "$E5F5 Clear the top line.",
        "E5EA": "$E5EA Print message at far left of top line.",
        "E65E": "$E65E Output one byte to tape.",
        "E6C9": "$E6C9 Read byte from tape.",
        "E735": "$E735 Latch onto tape header.",
        "E75A": "$E75A Output a tape header.",
        "E76A": "$E76A Change the 6522 ready for cassette I/0.",
        "E790": "$E790 Compare filenames.",
        "E93D": "$E93D Reset the 6522 after the completion of tape I/0.",
        "EB78": "$EB78 Read a key without waiting.",
        "EC21": "$EC21 Switch to text mode.",
        "ECC3": "$ECC3 Switch to high-resolution mode.",
        "EE22": "$EE22 Poll timers.",
        "EDE0": "$EDE0 Start clock.",
        "EE1A": "$EE1A Stop clock.",
        "EE34": "$EE34 Service timers.",
        "EE8C": "$EE8C Clear timers.",
        "EE9D": "$EE9D Read timer.",
        "EEAB": "$EEAB Set timer.",
        "EEC9": "$EEC9 Wait for a given time.",
        "F0C8": "$F0C8 CURSET",
        "F0FD": "$F0FD CURMOV",
        "F110": "$F110 DRAW",
        "F12D": "$F12D CHAR",
        "F1C8": "$F1C8 POINT",
        "F204": "$F204 PAPER",
        "F210": "$F210 INK",
        "F268": "$F268 FILL",
        "F37F": "$F37F CIRCLE",
        "FA9F": "$FA9F PING",
        "FAB5": "$FAB5 SHOOT",
        "FACB": "$FACB EXPLODE",
        "FAE1": "$FAE1 ZAP",
        "FB40": "$FB40 SOUND",
        "FBD0": "$FBD0 PLAY",
        "FC18": "$FC18 MUSIC",
        "F77C": "$F77C Output character from X register to screen.",
        "F8B2": "$F8B2 Entry point for non-maskable interrupt (NMI)",
        "F865": "$F865 Output message to top line at position X.",
        "F523": "$F523 Poll keyboard.",
        "F590": "$F590 Write to the 8912 chip.",
        "F5C1": "$F5C1 Output character in A to the printer.",
        "F8D0": "$F8D0 Set up the ASCII character set.",
        "FA86": "$FA86 Load up all the 8912 registers.",
        "FB14": "$FB14 The high-pitched click.",
        "FB2A": "$FB2A The low-pitched click.",
        "0010": "Address of current HIRES position.",
        "0012": "Address of start of current line (in TEXT mode).",
        "0014": "Used by the 8912 register load subroutine.",
        "0018": "Used to point to the start of error messages.",
        "001A": "Contains a jump to the routine which prints \u2018Ready\u2019.",
        "001F": "Address of last PLOT position.",
        "0021": "Contains the DEF USR jump.",
        "0028": "The type of data which resulted from formula evaluation; 0 means numeric, #FF means a string.",
        "0029": "A flag that indicates whether the last variable used was an integer.",
        "002A": "A flag which is used in several places.",
        "0033": "Various uses, but often used to store a line number that is being located.",
        "0035": "The BASIC input buffer.",
        "0086": "Address of last temporary string.",
        "0088": "A table of temporary strings.",
        "009A": "Start of BASIC pointer.",
        "009C": "Start of variables pointer.",
        "009E": "Start of arrays pointer.",
        "00A0": "End of arrays pointer.",
        "00A2": "Pointer to next free string space.",
        "00A6": "Highest available memory location available to BASIC.",
        "00A8": "Current line number (read-only).",
        "00AA": "The current line number \u2013 saved for error messages.",
        "00AC": "Address of the start of the current instruction \u2013 1.",
        "00AE": "Current DATA line number \u2013 used only when printing error messy ges.",
        "00B0": "The address of the next DATA item \u2013 1.",
        "00B4": "The identity of the last variable used.",
        "00D0": "The main floating-point accumulator.",
        "00D8": "The second accumulator.",
        "00E2": "The get-character routine.",
        "00E8": "The second part of the get-character routine.",
        "00FA": "The current random number is stored here as a floating-point number",
        "0204": "Used when checking the range of values used in sound and graphics commands.",
        "0208": "Contains details of the last ordinary key pressed (but not the ASCII code).",
        "0209": "Contains details about the last shift or control key pressed.",
        "020C": "Caps lock. This contains either #7F or #FF \u2013 no other value will work!",
        "0212": "Contains the HIRES FB flag to indicate whether to draw, erase, or invert.",
        "0213": "The pattern register is stored here. You can POKE values here instead of using the PATTERN command.",
        "0215": "The graphics cursor mask.",
        "0219": "The HIRES cursor X value.",
        "021A": "The HIRES cursor Y value (do not forget to alter #10 and #11 as well)",
        "021F": "A graphics flag; 0 is TEXT, 1 is graphics.",
        "0220": "Memory size indicator; 0 means 48K, 1 means 16K.",
        "0228": "(version 1.1) Unused.",
        "022B": "(version 1.0) Jump vector to the non-maskable interrupt routine.",
        "0230": "(version 1.0) Jump vector to the slow interrupt routine.",
        "0238": "(version 1.1) Jump vector to VDU output routine.",
        "023B": "(version 1.1) Jump vector to the KEY$ routine.",
        "023E": "(version 1.1) Jump vector to the printer output subroutine.",
        "0241": "(version 1.1) Jump vector to the routine that prints on the top line of the screen.",
        "0244": "(version 1.1) Jump vector to the fast interrupt routine.",
        "0247": "(version 1.1) Jump vector to the NMI routine.",
        "024A": "(version 1.1) Jump vector to the slow interrupt routine.",
        "024D": "(version 1.1) Various uses in cassette I/0 \u2013 see Chapter 4.",
        "0268": "Cursor position down the screen, relative to the start address of the screen.",
        "0269": "Cursor position across the screen.",
        "026A": "Oric status byte.",
        "026B": "Text screen paper colour.",
        "026C": "Text screen ink colour.",
        "026D": "(version 1.0) Start of the TEXT screen \u2013 #28.",
        "026F": "(version 1.0) Number of lines to scroll.",
        "0272": "Timer 1 (used for reading the keyboard). W274 \u2013 t275 \u2013 Timer 2 (used by the flashing cursor).",
        "0276": "Timer 3 (used by WAIT, HIRES, and TEXT). #278 \u2013 #2BF \u2013 (version 1.0)",
        "0278": "(version 1.1) Start of TEXT screen + #28.",
        "027A": "(version 1.1) Start of the text screen.",
        "027C": "(version 1.1) Number of bytes to scroll \u2013 (#27E \u2013 1) * #28",
        "027E": "(version 1.1) Number of lines to scroll.",
        "027F": "(version 1.1) Used by the tape routines \u2013 (Chap. 4).",
        "02C0": "Graphics enable: 0 means TEXT with GRAB, 1 means TEXT with RELEASE, and 3 means HIRES.",
        "02C1": "Highest address with graphics enabled + 1.",
        "02DF": "The AS\u2019CII code for the last key pressed (with top bit set).",
        "02E0": "The parameter area for graphics and sound commands.",
        "02F1": "Print flag \u2013 set to 128 to make all print go to the printer, 0 for it to go to the screen.",
        "02F2": "A flag set by the EDIT command.",
        "02F4": "The trace flag.",
        "02F5": "Address of the ! extension command.",
        "02F7": "(version 1.0 only). The inverse flag. Try out different values!",
        "02FB": "A jump command to the & extension."
    },
    "excluded": [
        "C006",
        "C0EA",
        "C2A8",
        "C3C6",
        "C3F4",
        "C444",
        "C47C",
        "C4A8",
        "C4D3",
        "C4E0",
        "C524",
        "C55F",
        "C444",
        "C592",
        "C5E8",
        "C5FA",
        "C692",
        "C6B3",
        "C6EE",
        "C70D",
        "C748",
        "C7FD",
        "C809",
        "C816",
        "C82F",
        "C855",
        "C8C1",
        "C915",
        "C952",
        "C9A0",
        "C9BD",
        "C9C8",
        "C9E5",
        "CA12",
        "CA4E",
        "CA51",
        "CA70",
        "CA99",
        "CAC2",
        "CAE2",
        "CB1C",
        "CBAB",
        "CBF0",
        "CC59",
        "CCB0",
        "CCCE",
        "CD16",
        "CD46",
        "CD55",
        "CD89",
        "CE98",
        "CF03",
        "CF17",
        "CFAC",
        "D000",
        "D03C",
        "D059",
        "D07C",
        "D113",
        "D17E",
        "D188",
        "D361",
        "D3EB",
        "D47E",
        "D4A6",
        "D4BA",
        "D593",
        "D5A3",
        "D5B5",
        "D650",
        "D730",
        "D767",
        "D816",
        "D82A",
        "D856",
        "D861",
        "D8A6",
        "D8B5",
        "D8C5",
        "D922",
        "D938",
        "D94F",
        "D958",
        "D967",
        "D983",
        "D993",
        "D9B5",
        "D9DE",
        "DA0C",
        "DA3F",
        "DA51",
        "DAA1",
        "DAAB",
        "DADA",
        "DAF6",
        "DB92",
        "DBB9",
        "DCAF",
        "DD51",
        "DDA7",
        "DDC3",
        "DDD4",
        "DE77",
        "DEF4",
        "DF0B",
        "DF0F",
        "DF13",
        "DF21",
        "DF4C",
        "DF8C",
        "DFBD",
        "DFE7",
        "E076",
        "E0C5",
        "E22E",
        "E27C",
        "E22A",
        "E313",
        "E34F",
        "E38B",
        "E392",
        "E407",
        "E43F",
        "E46F",
        "E4AC",
        "E4E0",
        "E4F2",
        "E56C",
        "E57D",
        "E585",
        "E58C",
        "E594",
        "E5A4",
        "E5AB",
        "E5B6",
        "E5EA",
        "E5F5",
        "E607",
        "E65E",
        "E6C9",
        "E735",
        "E75A",
        "E76A",
        "E7B2",
        "E85B",
        "E903",
        "E909",
        "E946",
        "E987",
        "E9D1",
        "EAF0",
        "EB78",
        "EBCE",
        "EC0C",
        "EC21",
        "EC33",
        "EC45",
        "ECCC",
        "EDC4",
        "EDE0",
        "EE1A",
        "EE22",
        "EE8C",
        "EE1A",
        "EE9D",
        "EEAB",
        "EEC9",
        "EEE8",
        "EEF8",
        "F0C8",
        "F0FD",
        "F110",
        "F11D",
        "F12D",
        "F204",
        "F210",
        "F268",
        "F37F",
        "F495",
        "F4EF",
        "F523",
        "F561",
        "F590",
        "F5C1",
        "F602",
        "F71A",
        "F77C",
        "F7E4",
        "F816",
        "F865",
        "F88F",
        "F8AF",
        "F8B5",
        "F920",
        "F967",
        "F9AA",
        "F9C9",
        "FA14",
        "FA9F",
        "FAA7",
        "FAB5",
        "FABD",
        "FAB5",
        "FACB",
        "FAE1",
        "FB06",
        "FB14",
        "FB1C",
        "FB2A",
        "FB32",
        "FB14",
        "FB40",
        "FBD0",
        "FC18",
        "FC5E",
        "FC78",
        "FF78"
    ]
}
