{
    "platform_name": "BBC Micro",
    "enabled": false,
    "labels": {
        "SYSTEM": {
            "FFB6": "ROM_VECTAB",
            "FFB9": "ROM_OSRDSC",
            "FFBC": "ROM_OSVDU",
            "FFBF": "ROM_OSEVEN",
            "FFC2": "ROM_GSINIT",
            "FFC5": "ROM_GSREAD",
            "FFC8": "ROM_NVRDCH",
            "FFCB": "ROM_NVWRCH",
            "FFCE": "ROM_OSFIND",
            "FFD1": "ROM_OSGBPB",
            "FFD4": "ROM_OSBPUT",
            "FFD7": "ROM_OSBGET",
            "FFDA": "ROM_OSARGS",
            "FFDD": "ROM_OSFILE",
            "FFE0": "ROM_OSRDCH",
            "FFE3": "ROM_OSASCI",
            "FFE7": "ROM_OSNEWL",
            "FFEC": "ROM_OSWRCR",
            "FFEE": "ROM_OSWRCH",
            "FFF1": "ROM_OSWORD",
            "FFF4": "ROM_OSBYTE",
            "FFF7": "ROM_OSCLI",
            "FFFA": "RAM_NMIV",
            "FFFC": "RAM_RESETV",
            "FFFE": "RAM_IRQV",
            "0200": "RAM_USERV",
            "0202": "RAM_BRKV",
            "0204": "RAM_IRQ1V",
            "0206": "RAM_IRQ2V",
            "0208": "RAM_CLIV",
            "020A": "RAM_BYTEV",
            "020C": "RAM_WORDV",
            "020E": "RAM_WRCHV",
            "0210": "RAM_RDCHV",
            "0212": "RAM_FILEV",
            "0214": "RAM_ARGSV",
            "0216": "RAM_BGETV",
            "0218": "RAM_BPUTV",
            "021A": "RAM_GBPBV",
            "021C": "RAM_FINDV",
            "021E": "RAM_FSCV",
            "0220": "RAM_EVNTV",
            "0222": "RAM_UPTV",
            "0224": "RAM_NETV",
            "0226": "RAM_VDUV",
            "0228": "RAM_KEYV",
            "022A": "RAM_INSV",
            "022C": "RAM_REMV",
            "022E": "RAM_CNPV",
            "0230": "RAM_IND1V",
            "0232": "RAM_IND2V",
            "0234": "RAM_IND3V",
            "0D9F": "RAM_XUSERV",
            "0DA2": "RAM_XBRKV",
            "0DA5": "RAM_XIRQ1V",
            "0DA8": "RAM_XIRQ2V",
            "0DAB": "RAM_XCLIV",
            "0DAE": "RAM_XBYTEV",
            "0DB1": "RAM_XWORDV",
            "0DB4": "RAM_XWRCHV",
            "0DB7": "RAM_XRDCHV",
            "0DBA": "RAM_XFILEV",
            "0DBD": "RAM_XARGSV",
            "0DC0": "RAM_XBGETV",
            "0DC3": "RAM_XBPUTV",
            "0DC6": "RAM_XGBPBV",
            "0DC9": "RAM_XFINDV",
            "0DCC": "RAM_XFSCV",
            "0DCF": "RAM_XEVNTV",
            "0DD2": "RAM_XUPTV",
            "0DD5": "RAM_XNETV",
            "0DD8": "RAM_XVDUV",
            "0DDB": "RAM_XKEYV",
            "0DDE": "RAM_XINSV",
            "0DE1": "RAM_XREMV",
            "0DE4": "RAM_XCNPV",
            "0DE7": "RAM_XIND1V",
            "0DEA": "RAM_XIND2V",
            "0DED": "RAM_XIND3V"
        }
    },
    "comments": {
        "C4C0": "$C4C0 check VDU command, if normal character, PRINT it",
        "C4ED": "$C4ED RUBOUT",
        "C511": "$C511 YDU 27 - do nothing",
        "C53B": "$C53B VDU 01 - send next character to printer only",
        "C55E": "$C55E confirm input, output cursors not separated",
        "C565": "$C565 prepare cursor character for display",
        "C568": "$C568 interchange cursors, set CRTC address registers, toggle VDU screen status",
        "C588": "$C588 get graphics cursor printing status bit",
        "C58D": "$C58D YDU 14 - paged mode on",
        "C596": "$C596 YDU 02 - enable printer",
        "C59B": "$C59B VDU 21 - disable VDU drivers or delete current line",
        "C59D": "$C59D set VDU status or, if zero, reset default",
        "C5A1": "$C5A1 VDU 03 - disable printer",
        "C5A6": "$C5A6 YDU 15 - paged mode off",
        "C5A8": "$C5A8 reset specified VDU status bits",
        "C5AD": "$C5AD VDU 04 - write text at text cursor",
        "C5B9": "$C5B9 VDU 05 - write text at graphics cursor",
        "C5C5": "$C5C5 VDU 08 - backspace one character",
        "C621": "$C621 move graphics cursor one position",
        "C65B": "$C65B VDU 11 - move cursor up one line",
        "C664": "$C664 VDU 09 - advance tent cursor if enabled",
        "C684": "$C684 set text cursor to new line, scrolling if required",
        "C6AC": "$C6AC clear text line to background, calculate offset, set CRTC address",
        "C6AF": "$C6AF calculate offsets of character row, set text cursor address register",
        "C6B4": "$C6B4 paged mode scrolling",
        "C6F0": "$C6F0 VDU 10 - move cursor down one line (line feed)",
        "C6FA": "$C6FA VDU 28 - define test window",
        "C735": "$C735 OSWORD 09 - read pixel value",
        "C74B": "$C74B OSWORD 0B - read palette",
        "C759": "$C759 VDU 12 - clear test area",
        "C779": "$C779 VDU 30 - home text cursor to top left",
        "C787": "$C787 VDU 31 - move test cursor to 0,9",
        "C7AB": "$C7AB interchange current tent cursor with value from general graphics coordinate workspace",
        "C7AF": "$C7AF VDU 13 - move cursor to start of current line",
        "C7C0": "$C7C0 VDU 16 - clear graphics area",
        "C7F9": "$C7F9 VDU 17 - define text colour",
        "C7FD": "$C7FD VDU 18 - define graphics colour",
        "C839": "$C839 VDU 20 - restore default logical colour",
        "C88F": "$C88F save colour index and define logical colour",
        "C892": "$C892 VDU 19 - define logical colour",
        "C89E": "$C89E set logical/physical colour relationship",
        "C8E0": "$C8E0 OSWORD OC - write palette",
        "C8EB": "$C8EB VDU 22 - select screen MODE",
        "C8F1": "$C8F1 VDU 23 - re-program display character or write to CRTC",
        "C938": "$C938 process unrecognised VDU command",
        "C93F": "$C93F setup CRTC",
        "C951": "$C951 set 6845 cursor register to previous value",
        "C954": "$C954 set 6845 cursor parameters register = A-register",
        "C958": "$C958 write parameter from VDU queue to specified CRTC register",
        "C95E": "$C95E set specified CRTC register",
        "C98C": "$C98C VDU 25 - PLOT k,X,Y",
        "C994": "$C994 backspace one row, set CRTC screen start address registers",
        "C9A4": "$C9A4 advance one row, set CRTC screen start address registers",
        "C9B3": "$C9B3 set 6845 CRTC screen start address registers",
        "C9BD": "$C9BD VDU 26 - restore default windows",
        "C9F6": "$C9F6 save 6845 test cursor position address, set corresponding 6845 registers",
        "CA02": "$CA02 set 6845 text cursor address registers",
        "CA0E": "$CA0E set 6845 CRTC registers indexed by 9-register",
        "CA2B": "$CA2B write two bytes to consecutive 6845 registers",
        "CA39": "$CA39 VDU 24 - define graphics window",
        "CA88": "$CA88 set test window width according to character size",
        "CAA2": "$CAA2 VDU 29 - define graphics origin",
        "CAAC": "$CAAC VDU 127 - backspace and delete",
        "CAD4": "$CAD4 add number of bytes in row to display address",
        "CAE0": "$CAE0 zero POINT line counter and scroll if enabled",
        "CAE3": "$CAE3 scroll if enabled",
        "CB14": "$CB14 zero page PRINT line counter",
        "CB1D": "$CB1D initialise video display parameters and workspace",
        "CB33": "$CB33 set up video display parameters table",
        "CBC1": "$CBC1 initialise screen display parameters",
        "CBF3": "$CBF3 OSWORD 0A - read character definition",
        "CC02": "$CC02 character font definition indirection vector lookup table",
        "CCF5": "$CCF5 process unrecognised VDU command",
        "CCF8": "$CCF8 scroll back one row, check if wrap-round seeded",
        "CD07": "$CD07 OSBYTE 14 - explode soft character ROM allocation",
        "CD3F": "$CD3F move text cursor to next line",
        "CD6A": "$CD6A process character for display",
        "CD77": "$CD77 recover A-register, processor status from stack",
        "CD7A": "$CD7A process cursor character for display",
        "CDA4": "$CDA4 soft scroll one line",
        "CDCE": "$CDCE set scan line address, scroll back until counter zero",
        "CDDA": "$CDDA interchange current test cursor with value from coordinate workspace",
        "CDDE": "$CDDE interchange two Page 3 bytes indexed by X,Y",
        "CDE2": "$CDE2 interchange old and current graphics cursors",
        "CDE4": "$CDE4 interchange old graphics cursor with value from coordinate workspace",
        "CDE6": "$CDE6 interchange four-byte block indexed by X,Y in Page 3",
        "CDFF": "$CDFF scroll text one line",
        "CE2A": "$CE2A set scan line address source line address",
        "CE38": "$CE38 copy source line to scan line",
        "CE5B": "$CE5B determine test window height, if non-zero do CR",
        "CE6E": "$CE6E set text cursor U-coordinate to left-hand side of text window",
        "CE73": "$CE73 add character to scan line",
        "CEE8": "$CEE8 confirm cursor in text window, calculate character row offset",
        "CF06": "$CF06 calculate address of text cursor",
        "CF63": "$CF63 PRINT character at graphics cursor",
        "C046": "$C046 home graphics cursor",
        "CFAD": "$CFAD set graphics cursor X-coordinate to left-hand column",
        "CFB7": "$CFB7 set up character definition and display character",
        "CFBF": "$CFBF display character",
        "CFDC": "$CFDC insert teletext character in scan line, convert if required",
        "D03E": "$D03E set up character definition pointers",
        "D060": "$D060 process PLOT command",
        "D0B3": "$D0B3 set Page 0 colour processing bytes",
        "D0D9": "$D0D9 move graphics cursor to absolute position",
        "D0DC": "$D0DC copy current graphics cursor coordinates from VDU queue",
        "D0DE": "$D0DE copy four bytes from VDU queue",
        "D0E3": "$D0E3 set colour of point at current graphics cursor",
        "D0EB": "$D0EB omit last paint in line",
        "D0F0": "$D0F0 set colour of current graphics point, save to graphics scan line",
        "D0F3": "$D0F3 process colour and save to graphics scan line",
        "D104": "$D104 process colour of current graphics point",
        "D10D": "$D10D check current graphics cursor position with respect to to window boundaries",
        "D10F": "$D10F check position of indexed graphics coordinates with respect to window boundaries",
        "D128": "$D128 check current graphics point position with respect to window boundaries",
        "D149": "$D149 adjust coordinates according to display MODE",
        "D14D": "$D14D adjust PLOT coordinate according to display options",
        "D176": "$D176 adjust coordinate for relative/absolute PLOT, divide it by 2",
        "D1AD": "$D1AD divide PLOT coordinate by 2",
        "D1B8": "$D1B8 calculate graphics cursor offset according to display MODE",
        "D1D5": "$D1D5 adjust cursor coordinates, calculate cursor offset",
        "D1E3": "$D1E3 use graphics origin to calculate cursor offset",
        "D1ED": "$D1ED execute PLOT command",
        "D214": "$D214 set up branch loops, PLOT parameters",
        "D2E3": "$D2E3 set scan byte if appropriate, adjust coordinates and scan position",
        "D3D3": "$D3D3 decrement graphics cell top line address by one raw, set Y=7",
        "D3ED": "$D3ED set graphics cask left-hand colour cask, increment graphics cell by use line",
        "D3FD": "$D3FD set graphics mask right-hand colour cask, decrement graphics cell by one line",
        "DA0D": "$DA0D calculate graphics cursor relative to graphics window",
        "D411": "$D411 calculate graphics coordinates relative to specified paint",
        "D418": "$D418 calculate graphics coordinate offset",
        "D42C": "$D42C make positive, divide Y by 2",
        "D459": "$D459 take modulus of working coordinate, divide Y coordinate by 2",
        "D467": "$D467 change sign of working coordinate, if negative",
        "D47C": "$D47C copy 8 Page 3 bytes to new location (indexed by X,Y)",
        "D480": "$D480 copy two Page 3 bytes to coordinate workspace",
        "D482": "$D482 copy two Page 3 bytes to new location (indexed by X,Y)",
        "D486": "$D486 copy current graphics cursor to coordinate workspace",
        "D488": "$D488 copy current graphics cursor to new Page 3 location (indexed by Y)",
        "D48A": "$D48A copy four Page 3 bytes to new location (indexed by X,Y)",
        "D49B": "$D49B fore 2s complement of number in Y-,A-registers",
        "D4AA": "$D4AA if byte legal, process colour, else, discard it and cove cursor",
        "D4BF": "$D4BF omit last point in inverting actions",
        "D506": "$D506 PLOT with dotted line",
        "D545": "$D545 move graphics cursor and calculate offset for MODE",
        "D548": "$D548 get current graphics byte cask, set colour, save byte to scan line",
        "D574": "$D574 reset graphics byte and save to scan line",
        "D592": "$D592 check X coordinate from VDU queue against graphics window boundary",
        "D5AC": "$D5AC process working I coordinate, transfer to YOU queue",
        "D5CC": "$D5CC OSWORD 0D - read last two graphics cursor positions",
        "D5DE": "$D5DE OSWORD 0D - read old and current graphics position",
        "D5D5": "$D5D5 transfer four bytes index by 4-register to OS buffer",
        "D5EA": "$D5EA PLOT and fill triangle",
        "D632": "$D632 11 old graphics cursor greater than new PLOT point, interchange thee",
        "D636": "$D636 of source coordinate greater than destination coordinate, interchange points",
        "D647": "$D647 OSBYTE 86 - read text cursor position (POS and VPOS)",
        "D658": "$D658 process coordinates and PLOT points til target reached",
        "D6A2": "$D6A2 set and arrange working coordinates\u00e2\u20ac\u00a6",
        "D6A6": "$D6A6 arrange working coordinates, process colour mask, save to scan line",
        "D70E": "$D70E recover target coordinates from stack",
        "D774": "$D774 derive coordinates for next point in triangular PLOT",
        "D7AC": "$D7AC add stored value to working coordinate, increment counter if necessary",
        "D7C2": "$D7C2 OSBYTE 87 - read character at text cursor position",
        "D808": "$D808 derive character definition from displayed character",
        "D839": "$D839 determine logical colour of specified point",
        "D85D": "$D85D get coordinates from YOU queue, set up graphics line address, colour mask",
        "D85F": "$D85F set coordinate source index, set up line address, colour mask",
        "D864": "$D864 set up graphics line address",
        "D8CE": "$D8CE if enabled, PRINT at cursor position",
        "D905": "$D905 if test cursor enabled, read character",
        "D918": "$D918 reset CRTC cursor register, cursors together, enable screen, set 4-register to 80",
        "D923": "$D923 OSBYTE 85 - read HIMEM",
        "8926": "$8926 OSBYTE 85 - read address of screen buffer for MODE",
        "FFCE": "OSFIND - Open or close a file",
        "FFD1": "OSGBPB - Read or write multiple bytes",
        "FFD4": "OSBPUT - Put a single byte to a stream",
        "FFD7": "OSBGET - Get a single byte from a stream",
        "FFDA": "OSARGS - Read information on open files",
        "FFDD": "OSFILE - Perform actions on whole files",
        "FFE0": "OSRDCH - Read character from input stream",
        "FFE3": "OSASCI - Write ASCII character to output stream",
        "FFE7": "OSNEWL - Write LF/CR to output stream",
        "FFEE": "OSWRCH - Write character to output stream",
        "FFF1": "OSWORD - Perform actions in control block",
        "FFF4": "OSBYTE - Perform actions in registers",
        "FFF7": "OSCLI  - Interpret command string",
        "0200": "$0200 USERV - User vector, called by *LINE, *CODE, OSWORD >=&E0",
        "0202": "$0202 BRKV  - The BRK vector",
        "0204": "$0204 IRQ1V - Main interrupt vector",
        "0206": "$0206 IRQ2V - Secondary interrupt vector",
        "0208": "$0208 CLIV  - Command Line Interpreter vector",
        "020A": "$020A BYTEV - OSBYTE (*FX) calls",
        "020C": "$020C WORDV - OSWORD calls",
        "020E": "$020E WRCHV - Send character to current output stream",
        "0210": "$0210 RDCHV - Wait for a character from current input stream",
        "0212": "$0212 FILEV - Operate on a whole file, eg loading/saving/delete/etc",
        "0214": "$0214 ARGSV - Read/Write arguments on an open file",
        "0216": "$0216 BGETV - Read a byte from an open file",
        "0218": "$0218 BPUTV - Write a byte to an open file",
        "021A": "$021A GBPBV - Read/Write block of data from/to open file or device",
        "021C": "$021C FINDV - Open or close a file",
        "021E": "$021E FSCV  - Various filing system control calls",
        "0220": "$0220 EVNTV - Event handler",
        "0222": "$0222 UPTV  - User Print vector",
        "0224": "$0224 NETV  - Network Print vector",
        "0226": "$0226 VDUV  - Unrecognised VDU commands",
        "0228": "$0228 KEYV  - Read the keyboard",
        "022A": "$022A INSV  - Insert characters into a buffer",
        "022C": "$022C REMV  - Remove characters from a buffer",
        "022E": "$022E CNPV  - Count or Purge a buffer",
        "0230": "$0230 IND1V - Spare",
        "0232": "$0232 IND2V - Spare",
        "0234": "$0234 IND3V - Spare",
        "00D0": "VDU Status as read by OSBYTE &75",
        "00D1": "Graphics pixel mask",
        "00D2": "Text colour OR mask",
        "00D3": "Text colour EOR mask",
        "00D4": "Graphics colour OR mask",
        "00D5": "Graphics colour EOR mask",
        "00E2": "Cassette/RFS filing system status",
        "00E3": "Cassette/RFS filing system options",
        "00E4": "GSREAD quote flag",
        "00E5": "GSREAD character accumulator",
        "00E6": "General OS workspace",
        "00E7": "Auto repeat countdown timer",
        "00E8": "Input buffer pointer for OSWORD 0",
        "00EA": "RS423 timeout counter, unused if no RS423",
        "00EB": "CFS/RFS 'critical' flag",
        "00EC": "Internal key number (last)",
        "00ED": "Internal key number (first)",
        "00EE": "Internal key number of character to be ignored by OSBYTE &79 also the 1MHz bus paging register RAM copy",
        "00EF": "OSBYTE/OSWORD A reg value",
        "00F0": "OSBYTE/OSWORD X reg value",
        "00F1": "OSBYTE/OSWORD Y reg value",
        "00F2": "OS Text pointer (eg star commands and filenames)",
        "00F4": "Currently selected ROM",
        "00F5": "Current PHROM or RFS ROM number",
        "00F6": "PHROM/RFSROM/OSRDSC pointer",
        "00F8": "BBC, Electron: Unused, Master: Soft key expansion pointer",
        "00FA": "General OS workspace, used by buffer access code in interrupts",
        "00FC": "Interrupt Temp A reg store",
        "00FD": "Error message pointer, initially set to language version string",
        "00FF": "Escape flag (bit 7)",
        "0236": "Address of OS variables",
        "0238": "Address of extended vector table",
        "023A": "Address of ROM info table",
        "023C": "Address of key translation table",
        "023E": "Address of VDU variables",
        "0240": "CFS timeout counter, decremented every frame flyback",
        "0241": "Currently selected input stream set with FX2",
        "0242": "BBC, Master: Keyboard semaphore, Electron: undefined",
        "0243": "Primary OSHWM",
        "0244": "Current OSHWM",
        "0245": "RS423 mode",
        "0246": "BBC, Electron: Character definition explosion status, Master: Printer ignore character status",
        "0247": "CFS/RFS switch",
        "0248": "BBC, Master: RAM copy of VIDPROC control register, Election: undefined",
        "0249": "BBC, Master: RAM copy of VIDPROC palette register, Electron: ROM polling semaphore",
        "024A": "ROM active last BRK",
        "024B": "BASIC ROM number",
        "024C": "Current ADC Channel",
        "024D": "Maximum ADC Channel number",
        "024E": "ADC conversion type/accuracy",
        "024F": "RS423 use flag",
        "0250": "RAM copy of RS423 control register",
        "0251": "Flashing colour countdown timer",
        "0252": "Flashing colour space period count set by FX9",
        "0253": "Flashing colour mark period count set by FX10",
        "0254": "Keyboard auto-repeat delay set by FX11",
        "0255": "Keyboard auto-repeat period set by FX12",
        "0256": "*EXEC file handle",
        "0257": "*SPOOL file handle",
        "0258": "ESCAPE, BREAK effect",
        "0259": "Keyboard disable",
        "025A": "Keyboard status byte",
        "025B": "BBC, Master: Serial input buffer extent, Election: ULA interupt mask",
        "025C": "BBC, Master: Serial input supression flag, Electron: Firm key pointer",
        "025D": "BBC, Master: Serial/cassette selection flag, Electron: Firm key string length",
        "025E": "Econet OSBYTE/OSWORD intercept flag",
        "025F": "Econet OSRDCH intercept flag",
        "0260": "Econet OSWRCH intercept flag",
        "0261": "Speech suppression status",
        "0262": "Sound suppression status",
        "0263": "BELL channel number",
        "0264": "BELL envelope number/amplitude",
        "0265": "BELL frequency",
        "0266": "BELL duration",
        "0267": "Startup display and BOOT error options",
        "0268": "Soft key string length",
        "0269": "Screen lines since last page",
        "026A": "256-number of items in VDU queue",
        "026B": "BBC, Master: TAB key character, Electron: external sound flag",
        "026C": "ESCAPE character",
        "026D": "Char &C0-&CF buffer insert interpretation",
        "026E": "Char &D0-&DF buffer insert interpretation",
        "026F": "Char &E0-&EF buffer insert interpretation",
        "0270": "Char &F0-&FF buffer insert interpretation",
        "0271": "Char &80-&8F buffer insert interpretation (FKey)",
        "0272": "Char &90-&9F buffer insert interpretation (Sh+FKey)",
        "0273": "Char &A0-&AF buffer insert interpretation (Ct+FKey)",
        "0274": "Char &B0-&BF buffer insert interpretation (Ct+Sh+FKey)",
        "0275": "ESCAPE key action",
        "0276": "ESCAPE effects",
        "0277": "BBC, Master: User 6522 VIA IRQ mask, Electron: Reserved for 6522 expansion IRQ mask",
        "0278": "BBC, Master: 6850 ACIA IRQ bit mask, Electron: Sound semaphore",
        "0279": "BBC, Master: System 6522 VIA IRQ mask, Electron: Soft key pointer",
        "027A": "Tube presence flag",
        "027B": "Speech processor presence flag",
        "027C": "Output stream character destination, set with FX3",
        "027D": "Cursor key status, set with FX4",
        "027E": "BBC, Electron: unused, Master: Base value for numeric keypad",
        "027F": "Shadow RAM flag",
        "0280": "Country code",
        "0281": "User flag location, set with FX1",
        "0282": "BBC, Master: RAM copy of SERPROC control register, Electron: RAM copy of ULA miscellaneous register",
        "0283": "Timer switch state",
        "0284": "Soft key consistancy flag",
        "0285": "Printer destination, set with FX5",
        "0286": "Printer ignore character, set with FX6",
        "0287": "Break Intercept Vector JMP",
        "0288": "Break Intercept Vector address low byte",
        "0289": "Break Intercept Vector address high byte",
        "028A": "BBC, Electron: unused, unless shadow screen present,BBC/Elk+shadow screen, Master: Memory used by VDU drivers, set with FX112",
        "028B": "BBC, Electron: unused, unless shadow screen present",
        "028C": "Current language ROM",
        "028D": "Last BREAK type",
        "028E": "Available RAM BBC: &40 or &80, Electron: &00, Master: Numeric keypad SHIFT key effect",
        "028F": "Startup options",
        "0290": "VDU vertical adjust, *TV first parameter",
        "0291": "Interlace toggle flag, *TV second parameter",
        "0292": "TIME value 1, high byte...low byte",
        "0297": "TIME value 2, high byte...low byte",
        "029C": "OSWORD 3/4 Countdown interval timer value",
        "02A1": "Paged ROM type table",
        "02B1": "INKEY countdown timer",
        "02B3": "OSWORD 0 maximum line length",
        "02B4": "OSWORD 0 minimum character",
        "02B5": "OSWORD 0 maximum character",
        "02B6": "Channel 1 ADC value low",
        "02B7": "Channel 2 ADC value low",
        "02B8": "Channel 3 ADC value low",
        "02B9": "Channel 4 ADC value low",
        "02BA": "Channel 1 ADC value high",
        "02BB": "Channel 2 ADC value high",
        "02BC": "Channel 3 ADC value high",
        "02BD": "Channel 4 ADC value high",
        "02BE": "Last ADC channel converted",
        "0300": "Current graphics window left column in pixels",
        "0380": "BPUT file header:",
        "03E0": "Keyboard buffer",
        "0302": "Current graphics window bottom row in pixels",
        "0304": "Current graphics window right column in pixels",
        "0306": "Current graphics window top row in pixels",
        "0308": "Current text window left hand column",
        "0309": "Current text window bottom row",
        "030A": "Current text window right hand column",
        "030B": "Current text window top column",
        "030C": "Current graphics origin in external coordinates",
        "0310": "Current graphics cursor in external coordinates",
        "0314": "Old graphics cursor in external coordinates",
        "0318": "Current text cursor X",
        "0319": "Current text cursor Y",
        "031A": "Line withing current graphics cell of graphics cursor",
        "031B": "Graphics workspace/VDU queue",
        "031F": "VDU queue",
        "0324": "Current graphics cursor in internal coordinates",
        "0328": "Bitmap read from screen by OSBYTE 135",
        "0330": "Graphics workspace",
        "034A": "Text cursor address for 6845",
        "034C": "Text window width in bytes",
        "034E": "High byte of bottom of screen memory",
        "034F": "Bytes per character for current mode",
        "0350": "Screen display start address for 6845",
        "0352": "Bytes per screen row",
        "0354": "Screen memory size high byte",
        "0355": "Current screen mode",
        "0356": "Memory map type",
        "0357": "Foreground text colour",
        "0358": "Background text colour",
        "0359": "Foreground graphics colour",
        "035A": "Background graphics colour",
        "035B": "Foreground plot mode",
        "035C": "Background plot mode",
        "035D": "General VDU jump vector",
        "035F": "Cursor start register previous setting",
        "0360": "Number logical colours -1",
        "0361": "Pixels per byte -1 (zero if text only mode)",
        "0362": "Leftmost pixel colour mask",
        "0363": "Rightmost pixel colour mask",
        "0364": "Text input cursor X",
        "0365": "Text input cursor Y",
        "0366": "Teletext output cursor character",
        "0367": "Font explosion flags, b1=224-255",
        "0368": "Font location, characters 32-63",
        "0369": "Font location, characters 64-95",
        "036A": "Font location, characters 96-127",
        "036B": "Font location, characters 128-159",
        "036C": "Font location, characters 160-191",
        "036D": "Font location, characters 192-223",
        "036E": "Font location, characters 224-225",
        "036F": "Palette for colours 0 to 15",
        "039D": "BPUT buffer offset",
        "039E": "BGET buffer offset",
        "039F": "Unused",
        "03A4": "GXR flag byte",
        "03A5": "Unused",
        "03A7": "BGET filename",
        "03B2": "Most recent block header read:",
        "03D1": "Sequential block gap, set by *OPT 3. Set to 19 on Reset",
        "03D2": "Filename being searched",
        "03DD": "b0-b5=BCD day of month, b6-b7=set if date valid",
        "03DF": "BCD year, if >7F year is 19xx, else year is 20xx",
        "03D0": "NullKBD intercept if no keyboard present",
        "03DA": "TIME backup over Break",
        "03DE": "b0-b4=BCD month, b5-b7=day of week",
        "0800": "Sound workspace",
        "0840": "Sound channel 0 buffer",
        "0880": "Printer buffer",
        "08C0": "Definition of ENVELOPE 1",
        "0804": "Sound queue occupancy flag",
        "0808": "Current amplitude",
        "080C": "Number of amplitude phases processed",
        "0810": "Absolute pitch value",
        "0814": "Number of pitch phases processed",
        "0818": "Number of steps to process",
        "081C": "Duration",
        "0820": "Interval multiplier",
        "0824": "Envelope number/auto repeat parameter",
        "0828": "Length of remaining note interval",
        "082C": "Sunc hold parameter",
        "0830": "Sound chip current pitch setting",
        "0834": "Pitch deviation",
        "0838": "Number of channels required for sync",
        "0839": "Current amplitide step",
        "083A": "Current target amplitude",
        "083B": "Number of channels on hold for sync",
        "083C": "Sound parameter calculation workspace",
        "083D": "Low order frequency parameter as sent to the sound generator",
        "083E": "High order frequency parameter as sent to the sound generator",
        "0850": "Sound channel 1 buffer",
        "0860": "Sound channel 2 buffer",
        "0870": "Sound channel 3 buffer",
        "08D0": "Definition of ENVELOPE 2",
        "08E0": "Definition of ENVELOPE 3",
        "08F0": "Definition of ENVELOPE 4",
        "0900": "ENVELOPES 5 to 16",
        "09C0": "Speech buffer",
        "0A00": "Cassette/RS423 input buffer (nb: *not* used by LOAD)",
        "0B00": "Soft key pointers",
        "0B11": "Soft key definitions",
        "0B01": "Station number",
        "0B02": "File server station number",
        "0B03": "File server network number",
        "0B18": "Print server type string",
        "0C00": "Master: Econet workspace",
        "0D00": "NMI handler code and workspace",
        "0D60": "Econet workspace",
        "0D68": "Econet workspace/Electron expansion workspace",
        "0D80": "Econet over other hardware workspace",
        "0D92": "Mouse/trackerball workspace",
        "0D9F": "XUSERV address, ROM number",
        "0DF0": "Sideways ROMs private workspace address high bytes",
        "0D3D": "Received scout",
        "0D62": "b7=Tranmission in progress",
        "0D63": "Protection mask",
        "0D64": "b2=Halted",
        "0D65": "Saved protection mask",
        "0D66": "b7=Econet using NMI code",
        "0D67": "b7=Tube present",
        "0D99": "Old IRQ1V",
        "0D9B": "Old BYTEV",
        "0D9D": "Old WORDV",
        "0DA5": "XIRQ1V address, ROM number, also mouse/trackerball state",
        "0DA6": "Mouse/trackerball X position",
        "0DA8": "XIRQ2V address, ROM number, also mouse/trackerball state",
        "0DAA": "Mouse/trackerball speed",
        "0DA2": "XBRKV address, ROM number",
        "0DAB": "XCLIV address, ROM number",
        "0DAE": "XBYTEV address, ROM number",
        "0DB1": "XWORDV address, ROM number",
        "0DB4": "XWRCHV address, ROM number",
        "0DB7": "XRDCHV address, ROM number",
        "0DBA": "XFILEV address, ROM number",
        "0DBD": "XARGSV address, ROM number",
        "0DC0": "XBGETV address, ROM number",
        "0DC3": "XBPUTV address, ROM number",
        "0DC6": "XGBPBV address, ROM number",
        "0DC9": "XFINDV address, ROM number",
        "0DCC": "XFSCV address, ROM number",
        "0DCF": "XEVNTV address, ROM number",
        "0DD2": "XUPTV address, ROM number",
        "0DD5": "XNETV address, ROM number",
        "0DD8": "XVDUV address, ROM number",
        "0DDB": "XKEYV address, ROM number",
        "0DDE": "XINSV address, ROM number",
        "0DE1": "XREMV address, ROM number",
        "0DE4": "XCNPV address, ROM number",
        "0DE7": "XIND1V address, ROM number",
        "0DEA": "XIND2V address, ROM number",
        "0DED": "XIND3V address, ROM number",
        "DF00": "Current filing system number",
        "DF01": "Active filing system number",
        "DF02": "Library filing system number",
        "DF03": "ROM number of current filing system",
        "DF04": "Transient command line address",
        "DF06": "Up to 17 Filing System information blocks",
        "DFC2": "b7=GSPRINT inhibit for *TYPE, *LIST",
        "DFC3": "BCD line number for *BUILD, *APPEND, *LIST",
        "DFC5": "Last character printed by *LIST, *TYPE for CRLF processing",
        "DFC6": "Temporary filing system flag",
        "DFC7": "OSGBPB control block for *MOVE",
        "DFD4": "Source handle for *MOVE",
        "DFD5": "Destination handle for *MOVE",
        "DFD6": "High byte of *MOVE buffer address",
        "DFD7": "Length of *MOVE buffer in pages",
        "DFD8": "Pointer to *MOVE destination filename",
        "DFDA": "Copy of FSCV for active filing system",
        "DFDC": "Copy of ACCCON for *MOVE",
        "DFDD": "If nonzero, *MOVE had changed ACCCON",
        "FC00": "Byte-Wide Expansion RAM",
        "FC08": "Ample M2000 MIDI Interface (see also FCF0)",
        "FC10": "Teletext Hardware",
        "FC14": "Prestel Hardware",
        "FC20": "IEEE Interface",
        "FC28": "Electron Econet",
        "FC30": "Cambridge Ring interface",
        "FC40": "Hard Drive Access",
        "FC60": "Electron Serial",
        "FC70": "Electron expansion",
        "FC80": "LCD Display Control",
        "FC90": "Electron sound and speech",
        "FCB0": "Electron 6522 VIA expansion",
        "FCC0": "Electron floppy disk expansion",
        "FCDC": "PRES Battery-backed RAM",
        "FCE0": "Electron Tube expansion",
        "FCF0": "JGH/ETI MIDI Control (see also FC08)",
        "FCF8": "USB port",
        "FCFC": "Page-Wide Expansion RAM",
        "FD00": "Page-wide expansion RAM window",
        "FD40": "Torch SASI/SCSI Hard Drive Access",
        "FDFE": "Reset Test vector",
        "FE00": "6845 CTRC Video controller",
        "FE08": "6850 ACIA Serial controller",
        "FE10": "Serial ULA",
        "FE18": "Analogue-to-Digital Convertor (Master)",
        "FE20": "Video ULA, border control, network NMI control",
        "FE24": "Disk control (Master)",
        "FE28": "1770 Floppy Disk Controller (Master)",
        "FE30": "Memory control",
        "FE40": "System VIA",
        "FE60": "User VIA",
        "FE80": "Videodisk SCSI controller (Master)",
        "FEA0": "6854 ADLC Econet controller",
        "FEC0": "\"Network interface\" (not the Econet 6854 ADLC Econet)",
        "FEE0": "Tube control",
        "FF00": "Extended vector jumpblock",
        "FF50": "MOS Code",
        "FFB3": "BBC, Electron: MOS code, Master: OSWRSC - Write a byte to screen",
        "FFB6": "VECTAB - Length, address of default vector table",
        "FFB9": "OSRDSC - Read a byte from screem or sideways ROM/RAM",
        "FFBC": "OSVDU  - Raw VDU entry point",
        "FFBF": "OSEVEN - Generate an event",
        "FFC2": "GSINIT - Initialise string reading",
        "FFC5": "GSREAD - Read a character from a string",
        "FFC8": "NVRDCH - Nonvectored OSRDCH",
        "FFCB": "NVWRCH - Nonvectored OSWRCH",
        "FFEC": "OSWRCR - Write CR to output stream",
        "FFFA": "NMIV   - NMI vector",
        "FFFC": "RESETV - RESET vector",
        "FFFE": "IRQV   - IRQ vector",
        "02F8": "Electron ADC channel 1 low",
        "02F9": "Electron ADC channel 2 low",
        "02FA": "Electron ADC channel 3 low",
        "02FB": "Electron ADC channel 4 low",
        "02FC": "Electron ADC channel 1 high",
        "02FD": "Electron ADC channel 2 high",
        "02FE": "Electron ADC channel 3 high",
        "02FF": "Electron ADC channel 4 high"
    },
    "excluded": [
        "FFB6",
        "FFB9",
        "FFBC",
        "FFBF",
        "FFC2",
        "FFC5",
        "FFC8",
        "FFCB",
        "FFCE",
        "FFD1",
        "FFD4",
        "FFD7",
        "FFDA",
        "FFDD",
        "FFE0",
        "FFE3",
        "FFE7",
        "FFEC",
        "FFEE",
        "FFF1",
        "FFF4",
        "FFF7",
        "FFFA",
        "FFFC",
        "FFFE",
        "0200",
        "0202",
        "0204",
        "0206",
        "0208",
        "020A",
        "020C",
        "020E",
        "0210",
        "0212",
        "0214",
        "0216",
        "0218",
        "021A",
        "021C",
        "021E",
        "0220",
        "0222",
        "0224",
        "0226",
        "0228",
        "022A",
        "022C",
        "022E",
        "0230",
        "0232",
        "0234",
        "0D9F",
        "0DA2",
        "0DA5",
        "0DA8",
        "0DAB",
        "0DAE",
        "0DB1",
        "0DB4",
        "0DB7",
        "0DBA",
        "0DBD",
        "0DC0",
        "0DC3",
        "0DC6",
        "0DC9",
        "0DCC",
        "0DCF",
        "0DD2",
        "0DD5",
        "0DD8",
        "0DDB",
        "0DDE",
        "0DE1",
        "0DE4",
        "0DE7",
        "0DEA",
        "0DED"
    ]
}
