{
 "schema": 1,
 "platform": "c64",
 "game": "lemmings",
 "part": "menu",
 "build": "PAL disk release, three disks (Psygnosis 1994); the boot disk unpatched, analysed at the title and at level 1 of Fun",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    2048,
    "Resident: the loader and the variables"
   ],
   [
    2049,
    16383,
    "The game"
   ],
   [
    27824,
    32767,
    "The game"
   ],
   [
    41649,
    41983,
    "The game"
   ],
   [
    46080,
    51999,
    "The game"
   ],
   [
    52000,
    57343,
    "Resident: the loader and the variables"
   ],
   [
    57344,
    65529,
    "The game"
   ],
   [
    65530,
    65535,
    "Resident: the loader and the variables"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    2048,
    "Resident: the loader and the variables"
   ],
   [
    2049,
    16383,
    "The game"
   ],
   [
    27824,
    32767,
    "The game"
   ],
   [
    41649,
    41983,
    "The game"
   ],
   [
    46080,
    51999,
    "The game"
   ],
   [
    52000,
    57343,
    "Resident: the loader and the variables"
   ],
   [
    57344,
    65529,
    "The game"
   ],
   [
    65530,
    65535,
    "Resident: the loader and the variables"
   ]
  ]
 },
 "blocks": [
  {
   "start": 16384,
   "end": 24383,
   "type": "Byte"
  },
  {
   "start": 24384,
   "end": 24575,
   "type": "Undefined"
  },
  {
   "start": 24576,
   "end": 27823,
   "type": "Byte"
  },
  {
   "start": 32768,
   "end": 37199,
   "type": "Byte"
  },
  {
   "start": 37200,
   "end": 37698,
   "type": "Code"
  },
  {
   "start": 37699,
   "end": 37704,
   "type": "Undefined"
  },
  {
   "start": 37705,
   "end": 37818,
   "type": "Code"
  },
  {
   "start": 37819,
   "end": 37821,
   "type": "Undefined"
  },
  {
   "start": 37822,
   "end": 37929,
   "type": "Code"
  },
  {
   "start": 37930,
   "end": 37931,
   "type": "Undefined"
  },
  {
   "start": 37932,
   "end": 38093,
   "type": "Code"
  },
  {
   "start": 38094,
   "end": 38115,
   "type": "Undefined"
  },
  {
   "start": 38116,
   "end": 38256,
   "type": "Code"
  },
  {
   "start": 38257,
   "end": 38416,
   "type": "Undefined"
  },
  {
   "start": 38417,
   "end": 39656,
   "type": "Byte"
  },
  {
   "start": 39657,
   "end": 39863,
   "type": "Code"
  },
  {
   "start": 39864,
   "end": 39875,
   "type": "Undefined"
  },
  {
   "start": 39876,
   "end": 40058,
   "type": "Code"
  },
  {
   "start": 40059,
   "end": 40064,
   "type": "Undefined"
  },
  {
   "start": 40065,
   "end": 40110,
   "type": "Code"
  },
  {
   "start": 40111,
   "end": 40115,
   "type": "Undefined"
  },
  {
   "start": 40116,
   "end": 40141,
   "type": "Code"
  },
  {
   "start": 40142,
   "end": 40152,
   "type": "Undefined"
  },
  {
   "start": 40153,
   "end": 40241,
   "type": "Code"
  },
  {
   "start": 40242,
   "end": 40693,
   "type": "Undefined"
  },
  {
   "start": 40694,
   "end": 40841,
   "type": "Code"
  },
  {
   "start": 40842,
   "end": 41119,
   "type": "Undefined"
  },
  {
   "start": 41120,
   "end": 41347,
   "type": "Code"
  },
  {
   "start": 41348,
   "end": 41387,
   "type": "Undefined"
  },
  {
   "start": 41388,
   "end": 41492,
   "type": "Code"
  },
  {
   "start": 41493,
   "end": 41500,
   "type": "Undefined"
  },
  {
   "start": 41501,
   "end": 41539,
   "type": "Code"
  },
  {
   "start": 41540,
   "end": 41592,
   "type": "Undefined"
  },
  {
   "start": 41593,
   "end": 41648,
   "type": "Code"
  },
  {
   "start": 41984,
   "end": 46079,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 16384,
   "name": "title_bitmap_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17408,
   "name": "title_bitmap_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18432,
   "name": "title_bitmap_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19456,
   "name": "title_bitmap_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20480,
   "name": "title_bitmap_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21504,
   "name": "title_bitmap_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "title_bitmap_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23104,
   "name": "scroller_start",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23113,
   "name": "scroller_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23552,
   "name": "title_bitmap_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24384,
   "name": "scroller_text_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24576,
   "name": "title_screen_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24832,
   "name": "title_colours_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25088,
   "name": "title_colours_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25344,
   "name": "title_colours_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25416,
   "name": "scroller_row_top",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25456,
   "name": "scroller_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25457,
   "name": "scroller_row_src",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25495,
   "name": "scroller_new",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25496,
   "name": "scroller_row_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25497,
   "name": "scroller_row_low_src",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25535,
   "name": "scroller_new_low",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25536,
   "name": "scroller_row_below",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25592,
   "name": "sprite_ptrs_menu",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25600,
   "name": "menu_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25856,
   "name": "picture_sprites",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26624,
   "name": "menu_font_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27648,
   "name": "menu_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "icon_gfx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33792,
   "name": "icon_graphics_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34816,
   "name": "icon_graphics_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35200,
   "name": "title_colours_src",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35456,
   "name": "title_colours_src_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35712,
   "name": "title_colours_src_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35968,
   "name": "title_colours_src_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36200,
   "name": "title_colour_ram",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36456,
   "name": "title_colour_ram_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36712,
   "name": "title_colour_ram_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36968,
   "name": "title_colour_ram_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37200,
   "name": "menu_entry",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37269,
   "name": "title_screen",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 37316,
   "name": "j_91C4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37338,
   "name": "b_91DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37344,
   "name": "b_91E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37362,
   "name": "b_91F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37377,
   "name": "b_9201",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37387,
   "name": "b_920B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37397,
   "name": "b_9215",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37411,
   "name": "b_9223",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37438,
   "name": "b_923E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37453,
   "name": "leave_menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37471,
   "name": "b_925F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37491,
   "name": "irq_title",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37530,
   "name": "b_929A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37535,
   "name": "b_929F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37541,
   "name": "b_92A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37556,
   "name": "b_92B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37571,
   "name": "b_92C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37580,
   "name": "irq_scroller",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37605,
   "name": "b_92E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37610,
   "name": "b_92EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37616,
   "name": "b_92F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37630,
   "name": "b_92FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37677,
   "name": "level_to_menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37683,
   "name": "b_9333",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37699,
   "name": "code_addr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37700,
   "name": "code_addr_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37701,
   "name": "rating_first",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37705,
   "name": "menu_to_level",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37777,
   "name": "b_9391",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37780,
   "name": "a_9394",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37795,
   "name": "toggle_music",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37803,
   "name": "music_icon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37819,
   "name": "scroller_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37821,
   "name": "scroller_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37822,
   "name": "scroll_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37838,
   "name": "b_93CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37847,
   "name": "b_93D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37865,
   "name": "a_93E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37866,
   "name": "a_93EA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37884,
   "name": "b_93FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37904,
   "name": "b_9410",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37924,
   "name": "b_9424",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37926,
   "name": "b_9426",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37929,
   "name": "r_9429",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37930,
   "name": "scroller_pause",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37931,
   "name": "scroller_fine",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37932,
   "name": "scroller_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37952,
   "name": "b_9440",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37995,
   "name": "bar_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37997,
   "name": "b_946D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38009,
   "name": "title_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38011,
   "name": "b_947B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38062,
   "name": "screen_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38094,
   "name": "music_icon_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38095,
   "name": "player_icon_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38096,
   "name": "rating_icon_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38097,
   "name": "icon_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38098,
   "name": "icon_cell",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38099,
   "name": "icon_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38100,
   "name": "icon_graphics",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38108,
   "name": "icon_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38116,
   "name": "draw_icon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38130,
   "name": "b_94F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38137,
   "name": "b_94F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38152,
   "name": "draw_icon_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38220,
   "name": "b_954C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38231,
   "name": "b_9557",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38257,
   "name": "icon_bitmap_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38297,
   "name": "icon_bitmap_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38337,
   "name": "icon_screen_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38377,
   "name": "icon_screen_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38417,
   "name": "icon_rows_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38418,
   "name": "icon_rows_lo_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38419,
   "name": "icon_rows_lo_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38537,
   "name": "icon_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38538,
   "name": "icon_rows_hi_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38539,
   "name": "icon_rows_hi_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38657,
   "name": "access_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39270,
   "name": "access_codes_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39657,
   "name": "clear_bars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39660,
   "name": "b_9AEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39667,
   "name": "text_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39672,
   "name": "b_9AF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39709,
   "name": "enter_access_code",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39724,
   "name": "b_9B2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39748,
   "name": "j_9B44",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39751,
   "name": "b_9B47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39756,
   "name": "b_9B4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39774,
   "name": "f_9B5E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 39791,
   "name": "b_9B6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39850,
   "name": "wait_frames_menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39864,
   "name": "typed_access_code",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39874,
   "name": "menu_level",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39875,
   "name": "menu_rating",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39876,
   "name": "find_access_code",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39878,
   "name": "b_9BC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39901,
   "name": "b_9BDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39906,
   "name": "b_9BE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39914,
   "name": "b_9BEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39915,
   "name": "a_9BEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39916,
   "name": "a_9BEC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39918,
   "name": "a_9BEE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39935,
   "name": "b_9BFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39987,
   "name": "code_found",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40013,
   "name": "b_9C4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40021,
   "name": "b_9C55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40059,
   "name": "rating_text_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40063,
   "name": "text_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40064,
   "name": "frame_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40065,
   "name": "blink_cursor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40087,
   "name": "r_9C97",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40088,
   "name": "blink_cursor_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40110,
   "name": "r_9CAE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40111,
   "name": "blink_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40112,
   "name": "entry_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40113,
   "name": "cursor_chars",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40115,
   "name": "line_list_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40116,
   "name": "print_lines",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40119,
   "name": "b_9CB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40131,
   "name": "b_9CC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40142,
   "name": "screen_lines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40144,
   "name": "result_lines",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40145,
   "name": "result_line_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40148,
   "name": "sheet_lines",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40149,
   "name": "sheet_line_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40150,
   "name": "line_number_m",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40151,
   "name": "line_column_m",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40152,
   "name": "line_pos_m",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40153,
   "name": "print_menu_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40188,
   "name": "a_9CFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40194,
   "name": "b_9D02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40212,
   "name": "b_9D14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40241,
   "name": "r_9D31",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40242,
   "name": "level_tens_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40267,
   "name": "level_units_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40292,
   "name": "rating_texts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40316,
   "name": "menu_font_map",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40372,
   "name": "menu_lines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40411,
   "name": "line_addr_lo_m",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40422,
   "name": "line_addr_hi_m",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40462,
   "name": "access_code_typed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40509,
   "name": "code_level_text",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40510,
   "name": "code_rating_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40523,
   "name": "code_rating_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40550,
   "name": "question_ordinal",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40607,
   "name": "typed_code",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40671,
   "name": "menu_texts_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40694,
   "name": "choose_question",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40704,
   "name": "b_9F00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40727,
   "name": "j_9F17",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40743,
   "name": "b_9F27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40776,
   "name": "b_9F48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40828,
   "name": "f_9F7C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 40829,
   "name": "a_9F7D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40834,
   "name": "a_9F82",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40838,
   "name": "b_9F86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40841,
   "name": "r_9F89",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40842,
   "name": "question_page",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40843,
   "name": "question_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40907,
   "name": "menu_vars_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40924,
   "name": "bar_colours_src",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40956,
   "name": "ordinals",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "ordinals_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41072,
   "name": "page_first_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41088,
   "name": "page_first_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41104,
   "name": "code_value",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41105,
   "name": "code_value_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41106,
   "name": "code_expected",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41107,
   "name": "code_expected_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41108,
   "name": "code_carry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41109,
   "name": "decimal_weights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41114,
   "name": "decimal_weights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41119,
   "name": "digit_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41120,
   "name": "code_to_number",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41132,
   "name": "b_A0AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41146,
   "name": "b_A0BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41168,
   "name": "b_A0D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41172,
   "name": "b_A0D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41176,
   "name": "code_sheet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41183,
   "name": "b_A0DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41210,
   "name": "b_A0FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41248,
   "name": "b_A120",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41251,
   "name": "b_A123",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41256,
   "name": "code_entry_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 41297,
   "name": "b_A151",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41324,
   "name": "b_A16C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41335,
   "name": "b_A177",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41348,
   "name": "lemniverse_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41388,
   "name": "check_code",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41410,
   "name": "b_A1C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41423,
   "name": "show_page_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41431,
   "name": "b_A1D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41433,
   "name": "a_A1D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41461,
   "name": "b_A1F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41493,
   "name": "picture_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41497,
   "name": "picture_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41501,
   "name": "menu_row_ptrs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41540,
   "name": "menu_rows_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41541,
   "name": "menu_rows_lo_next",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41565,
   "name": "menu_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41566,
   "name": "menu_rows_hi_next",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41590,
   "name": "porta_saved",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41591,
   "name": "mouse_present",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41592,
   "name": "mouse_debounce",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41593,
   "name": "mouse_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41632,
   "name": "b_A2A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41642,
   "name": "b_A2AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41984,
   "name": "page_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43008,
   "name": "page_pictures_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44032,
   "name": "page_pictures_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45056,
   "name": "page_pictures_12",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 16384,
   "type": "line",
   "text": "the title picture, a multicolour bitmap shown at $4000 with its colours at $6000 (the file CA): the Lemmings logo and five lemmings holding the menu's signs; $4000-$43FF"
  },
  {
   "address": 17408,
   "type": "line",
   "text": "the title picture's bitmap, $4400-$47FF"
  },
  {
   "address": 18256,
   "type": "line",
   "text": "the intro's entry, where the loader's $CD2D jumps once IA and IB are in; in the menu's memory the bytes are the title picture's"
  },
  {
   "address": 18432,
   "type": "line",
   "text": "the title picture's bitmap, $4800-$4BFF"
  },
  {
   "address": 19456,
   "type": "line",
   "text": "the title picture's bitmap, $4C00-$4FFF"
  },
  {
   "address": 20480,
   "type": "line",
   "text": "the title picture's bitmap, $5000-$53FF; the game loop calls $5000 once the game's files are in, so here it is only picture"
  },
  {
   "address": 21504,
   "type": "line",
   "text": "the title picture's bitmap, $5400-$57FF"
  },
  {
   "address": 22528,
   "type": "line",
   "text": "the title picture's bitmap, $5800-$5A3F"
  },
  {
   "address": 23104,
   "type": "line",
   "text": "the scroller's text, from the blanks before \"Lemmings by DMA Design\""
  },
  {
   "address": 23113,
   "type": "line",
   "text": "the title scroller's text, mixed-case screen codes: credits, then hints and a disclaimer"
  },
  {
   "address": 23552,
   "type": "line",
   "text": "the title picture's bitmap, $5C00-$5F3F (the scroller's text runs to $5F8F, inside the picture's area: the rows the scroller covers)"
  },
  {
   "address": 24384,
   "type": "line",
   "text": "the scroller's text from $5F40 to its $FF at $5FE1, past the end of the title's bitmap"
  },
  {
   "address": 24576,
   "type": "line",
   "text": "the title picture's screen colours at $6000-$63FF, copied in by $9479 from $8980; the rest of the file CA follows: the scroller's font from $6800"
  },
  {
   "address": 24832,
   "type": "line",
   "text": "the screen colours, $6100-$61FF"
  },
  {
   "address": 25088,
   "type": "line",
   "text": "the screen colours, $6200-$62FF"
  },
  {
   "address": 25344,
   "type": "line",
   "text": "the screen colours, $6300-$63FF; rows 21 and 22 ($6348, $6370, $6398, $63C0) are the scroller's text and its lower half"
  },
  {
   "address": 25416,
   "type": "line",
   "text": "the row above the scroller, filled with character $49 by $942C"
  },
  {
   "address": 25456,
   "type": "line",
   "text": "the scroller's top row of characters ($6370-$6397), shifted left a cell at a time"
  },
  {
   "address": 25457,
   "type": "line",
   "text": "the scroller's top row from its second cell, read by the shift"
  },
  {
   "address": 25495,
   "type": "line",
   "text": "the cell where the next character of the scroller comes in"
  },
  {
   "address": 25496,
   "type": "line",
   "text": "the scroller's lower row ($6398-$63BF)"
  },
  {
   "address": 25497,
   "type": "line",
   "text": "the lower row from its second cell"
  },
  {
   "address": 25535,
   "type": "line",
   "text": "the cell where the next character's lower half comes in"
  },
  {
   "address": 25536,
   "type": "line",
   "text": "the row under the scroller, filled with character $94"
  },
  {
   "address": 25592,
   "type": "line",
   "text": "the sprite pointers of the screen at $6000: the code sheet's picture uses four, $94-$97"
  },
  {
   "address": 25600,
   "type": "line",
   "text": "the menu's and the scroller's character set, $6400-$67FF"
  },
  {
   "address": 25856,
   "type": "line",
   "text": "where the code sheet's picture goes: four sprites of 64 bytes, $6500-$65FF, copied from $A400 by page"
  },
  {
   "address": 26624,
   "type": "line",
   "text": "the menu's character set, continued, $6800-$6BFF"
  },
  {
   "address": 27648,
   "type": "line",
   "text": "the end of the file CA, $6C00-$6CAF: the colour bar table at $6CCE lies just past it"
  },
  {
   "address": 32768,
   "type": "line",
   "text": "the title's five icons in every state (1 PLAYER with a joystick or a mouse, INTRO, NEW LEVEL, the note or FX, the four ratings), 60 bytes a row: 48 bitmap bytes, 6 screen colours and 6 colour RAM values; $8000-$83FF"
  },
  {
   "address": 33792,
   "type": "line",
   "text": "the icon graphics, $8400-$87FF"
  },
  {
   "address": 34816,
   "type": "line",
   "text": "the icon graphics, $8800-$897F"
  },
  {
   "address": 35200,
   "type": "line",
   "text": "the title picture's screen colours as they are kept, copied to $6000 by $9479: $8980-$8A7F"
  },
  {
   "address": 35456,
   "type": "line",
   "text": "the screen colours, $8A80-$8B7F"
  },
  {
   "address": 35712,
   "type": "line",
   "text": "the screen colours, $8B80-$8C7F"
  },
  {
   "address": 35968,
   "type": "line",
   "text": "the screen colours, $8C80-$8D67"
  },
  {
   "address": 36200,
   "type": "line",
   "text": "the title picture's colour RAM values, copied to $D800 by $9479: $8D68-$8E67"
  },
  {
   "address": 36456,
   "type": "line",
   "text": "the colour RAM values, $8E68-$8F67"
  },
  {
   "address": 36712,
   "type": "line",
   "text": "the colour RAM values, $8F68-$9067"
  },
  {
   "address": 36968,
   "type": "line",
   "text": "the colour RAM values, $9068-$9167, the last of them up to the menu's code"
  },
  {
   "address": 37200,
   "type": "line",
   "text": "the menu, from the loader ($CD53): the title's interrupt at $9273 on line $2D, the level's rating and number from $CB48 ($932D), the screen set up ($94AE), the mouse test ($A279); the code sheet the first time only ($A0D8, then $CB5E is set so CC is not loaded again); then the title ($9195)"
  },
  {
   "address": 37269,
   "type": "line",
   "text": "draws the title: colour bars ($9AE9, $946B), the picture's colours ($9479), the icons for music or sound effects ($93AB) and the rating ($94E4), the scroller ($942C); then reads keys with GETIN: 1 starts the game, 2 the intro, 3 the access code, 4 music or effects, cursor up and down the rating. A change in the mouse test redraws the 1 PLAYER icon for mouse or joystick"
  },
  {
   "address": 37453,
   "type": "line",
   "text": "screen off, the KERNAL's interrupt and video chip registers back, the keyboard and screen as devices, then the KERNAL's $FF5E"
  },
  {
   "address": 37491,
   "type": "line",
   "text": "the title's raster interrupt from line $2D: the mouse test, a frame count ($9C80, by $10), and on a text screen ($9C7F) the colour bars behind each line ($6CCE); on the title, hands over to $92CC on line $DA"
  },
  {
   "address": 37580,
   "type": "line",
   "text": "the title's bottom band: text mode with the scroller's characters ($D018 $8A, $D016 from the scroll's fine position $942B), the colour bars, then at line $FD back to the bitmap ($D011 $3B, $D018 $80) and the interrupt at $9273; moves the scroller ($93BE)"
  },
  {
   "address": 37677,
   "type": "line",
   "text": "splits the level number at $CB48 into the rating ($9BC3, by 25s) and the level within it ($9BC2)"
  },
  {
   "address": 37699,
   "type": "line",
   "text": "the address of the chosen level's access code in the table ($9343/$9344, level times 10 plus $9701)"
  },
  {
   "address": 37700,
   "type": "line",
   "text": "the high byte of the access code's address"
  },
  {
   "address": 37701,
   "type": "line",
   "text": "the first level number of each rating: 0, 25, 50, 75"
  },
  {
   "address": 37705,
   "type": "line",
   "text": "sets $CB48 from the rating and level chosen, and copies that level's access code from the table at $9701 into $CB49, each letter decoded with the one before it (the EOR's operand at $9394 holds it, cleared for each code)"
  },
  {
   "address": 37780,
   "type": "line",
   "text": "the operand of the EOR at $9393, rewritten as the game runs, by $938E, $9395"
  },
  {
   "address": 37795,
   "type": "line",
   "text": "key 4: flips music and sound effects ($CB47 bit 7) and redraws its icon"
  },
  {
   "address": 37803,
   "type": "line",
   "text": "draws the icon for music (a note) or sound effects (FX)"
  },
  {
   "address": 37819,
   "type": "line",
   "text": "bit 7 set while the scroller runs"
  },
  {
   "address": 37821,
   "type": "line",
   "text": "characters scrolled since the last pause"
  },
  {
   "address": 37822,
   "type": "line",
   "text": "moves the scroller two pixels a frame: when a character has gone, shifts the two text rows left a cell and adds the next character of the text at $5A40 (two characters, the lower $4B on); $FF in the text starts it again; a pause of 100 frames every 40 characters"
  },
  {
   "address": 37865,
   "type": "line",
   "text": "the low byte of the LDX at $93E8, rewritten as the game runs, by $93F3, $9408, $9430"
  },
  {
   "address": 37866,
   "type": "line",
   "text": "the high byte of the LDX at $93E8, rewritten as the game runs, by $93F6, $940D, $9433"
  },
  {
   "address": 37930,
   "type": "line",
   "text": "frames left of the scroller's pause"
  },
  {
   "address": 37931,
   "type": "line",
   "text": "the scroller's fine position, written to $D016 by $92CC"
  },
  {
   "address": 37932,
   "type": "line",
   "text": "clears the scroller's two rows and their colours and starts it at the text's beginning"
  },
  {
   "address": 37995,
   "type": "line",
   "text": "copies the title's colour bars from $9FEC into $6DB0"
  },
  {
   "address": 38009,
   "type": "line",
   "text": "copies the picture's screen colours ($8980-$8D67) to $6000-$63FF and its colour RAM ($8D68-$9067) to $D800-$DBFF, then sets the screen up ($94AE)"
  },
  {
   "address": 38062,
   "type": "line",
   "text": "picks the code sheet's question ($9EF6), video bank 1, sprites off, the bitmap at $4000 with its colours at $6000, black border and background"
  },
  {
   "address": 38094,
   "type": "line",
   "text": "0 for sound effects, 1 for music"
  },
  {
   "address": 38095,
   "type": "line",
   "text": "the 1 PLAYER icon: 2 with a mouse, 3 with the joystick"
  },
  {
   "address": 38096,
   "type": "line",
   "text": "the rating icon: 4 to 7 for Fun, Tricky, Taxing and Mayhem"
  },
  {
   "address": 38097,
   "type": "line",
   "text": "working bytes of the icon drawing: the graphics' index ($94D1), the cell ($94D2), the row ($94D3)"
  },
  {
   "address": 38098,
   "type": "line",
   "text": "the screen cell of the icon row being drawn"
  },
  {
   "address": 38099,
   "type": "line",
   "text": "the icon's row being drawn, 0-4"
  },
  {
   "address": 38100,
   "type": "line",
   "text": "for each icon picture, the index of its first row in the graphics tables"
  },
  {
   "address": 38108,
   "type": "line",
   "text": "for each icon picture, the first of its five rows on the screen"
  },
  {
   "address": 38116,
   "type": "line",
   "text": "draws icon picture X in five rows of 48 bitmap bytes, 6 screen colours and 6 colour RAM values each, from line $B2 of the frame"
  },
  {
   "address": 38152,
   "type": "line",
   "text": "one row of an icon: its 48 bitmap bytes, 6 screen colours and 6 colour RAM values through icon_rows_lo/hi and the tables one and two entries on, to the bitmap, screen and colour RAM addresses from $9571-$95E9"
  },
  {
   "address": 38257,
   "type": "line",
   "text": "the icon rows' bitmap addresses, low bytes"
  },
  {
   "address": 38297,
   "type": "line",
   "text": "their high bytes"
  },
  {
   "address": 38337,
   "type": "line",
   "text": "the icon rows' screen addresses, low bytes (colour RAM's the same, $78 pages on)"
  },
  {
   "address": 38377,
   "type": "line",
   "text": "the icon rows' screen addresses, high bytes (40)"
  },
  {
   "address": 38417,
   "type": "line",
   "text": "the low bytes of the icon graphics' rows, three tables a row apart"
  },
  {
   "address": 38418,
   "type": "line",
   "text": "icon_rows_lo from its second entry, read for the row's second third"
  },
  {
   "address": 38419,
   "type": "line",
   "text": "icon_rows_lo from its third entry, read for the row's last third"
  },
  {
   "address": 38537,
   "type": "line",
   "text": "the high bytes of the same"
  },
  {
   "address": 38538,
   "type": "line",
   "text": "icon_rows_hi from its second entry"
  },
  {
   "address": 38539,
   "type": "line",
   "text": "icon_rows_hi from its third entry"
  },
  {
   "address": 38657,
   "type": "line",
   "text": "the access codes of all 100 levels, ten letters each, every letter EOR the one before it within its code: Fun 1 to Mayhem 25"
  },
  {
   "address": 39270,
   "type": "line",
   "text": "the access codes, continued: from Tricky 18 on"
  },
  {
   "address": 39657,
   "type": "line",
   "text": "clears the colour bar table at $6D00"
  },
  {
   "address": 39667,
   "type": "line",
   "text": "clears the screen at $6000 to character $46 and colour RAM, and marks a text screen ($9C7F) so the interrupt draws the colour bars"
  },
  {
   "address": 39709,
   "type": "line",
   "text": "key 3: \"Enter the access code\": reads up to ten letters with GETIN (DEL takes one back), then looks the code up ($9BC4) and shows the result for 20 frames: the level and rating, or a refusal"
  },
  {
   "address": 39774,
   "type": "line",
   "text": "the BNE of the access code's entry; named as the base of the STA at $9BC9, which indexes from it by $5A to reach typed_access_code at $9BB8"
  },
  {
   "address": 39850,
   "type": "line",
   "text": "waits Y frames by the interrupt's count at $9C80"
  },
  {
   "address": 39864,
   "type": "line",
   "text": "the ten letters typed at \"Enter the access code\""
  },
  {
   "address": 39874,
   "type": "line",
   "text": "the level within the rating chosen at the menu (0-24)"
  },
  {
   "address": 39875,
   "type": "line",
   "text": "the rating chosen at the menu (0-3)"
  },
  {
   "address": 39876,
   "type": "line",
   "text": "compares the typed code with every level's code in the table, decoding each as $9349 does. A match with level 1's own code, WANNABFREE, turns the cheat on ($CB61 = $80) and shows \"Cheatmode Activated\" (line $0B); any other match sets the rating and level and shows \"Code for Level N, Rating\"; no match shows message 3"
  },
  {
   "address": 39915,
   "type": "line",
   "text": "the low byte of the LDA at $9BEA, rewritten as the game runs, by $9BD3, $9C05"
  },
  {
   "address": 39916,
   "type": "line",
   "text": "the high byte of the LDA at $9BEA, rewritten as the game runs, by $9BD8, $9C0D"
  },
  {
   "address": 39918,
   "type": "line",
   "text": "the operand of the EOR at $9BED, rewritten as the game runs, by $9BE7, $9BF4"
  },
  {
   "address": 39987,
   "type": "line",
   "text": "the code was found: level 1's turns on the cheat (giving up a level then counts as 100 % saved); others set the menu's rating and level and the result's texts"
  },
  {
   "address": 40059,
   "type": "line",
   "text": "each rating's offset in the rating names at $9D64"
  },
  {
   "address": 40063,
   "type": "line",
   "text": "bit 7 set while a text screen (the code sheet, the access code) is shown"
  },
  {
   "address": 40064,
   "type": "line",
   "text": "bit 7 set by the interrupt each frame; the loops wait on it"
  },
  {
   "address": 40065,
   "type": "line",
   "text": "blinks the cursor of the access code's entry at the next letter"
  },
  {
   "address": 40088,
   "type": "line",
   "text": "the same for the code sheet's digits"
  },
  {
   "address": 40111,
   "type": "line",
   "text": "which of the two cursor characters shows"
  },
  {
   "address": 40112,
   "type": "line",
   "text": "how many letters or digits have been typed"
  },
  {
   "address": 40113,
   "type": "line",
   "text": "the cursor's two characters, and the empty slot's"
  },
  {
   "address": 40115,
   "type": "line",
   "text": "the position in the list of lines being printed"
  },
  {
   "address": 40116,
   "type": "line",
   "text": "prints the lines listed from $9CCE+X up to four, 0 for none"
  },
  {
   "address": 40142,
   "type": "line",
   "text": "the lines of the menu's text screens, four to a screen"
  },
  {
   "address": 40144,
   "type": "line",
   "text": "the two lines of the access code's result ($9CD0/$9CD1)"
  },
  {
   "address": 40145,
   "type": "line",
   "text": "the second of them"
  },
  {
   "address": 40148,
   "type": "line",
   "text": "the two lines of the code sheet's result ($9CD4/$9CD5)"
  },
  {
   "address": 40149,
   "type": "line",
   "text": "the second line of the code sheet's result"
  },
  {
   "address": 40150,
   "type": "line",
   "text": "the line being printed"
  },
  {
   "address": 40151,
   "type": "line",
   "text": "the column the next character goes to"
  },
  {
   "address": 40152,
   "type": "line",
   "text": "the position in the line's text"
  },
  {
   "address": 40153,
   "type": "line",
   "text": "prints line X of the menu's texts: its row from $9DDB/$9DE6, its colour bar from $9F7C, then its characters through $9D7C (each letter two characters, the lower $4B further on)"
  },
  {
   "address": 40188,
   "type": "line",
   "text": "the operand of the LDX at $9CFB, rewritten as the game runs, by $9CEE"
  },
  {
   "address": 40242,
   "type": "line",
   "text": "the level number's tens digit as text, by level 0-24"
  },
  {
   "address": 40267,
   "type": "line",
   "text": "the units digit"
  },
  {
   "address": 40292,
   "type": "line",
   "text": "the ratings' names: FUN, TRICKY, TAXING, MAYHEM, six characters each"
  },
  {
   "address": 40316,
   "type": "line",
   "text": "maps a text character to the menu font's character"
  },
  {
   "address": 40372,
   "type": "line",
   "text": "the menu's text lines: row, column, colour bar, then the characters, $FF ending each"
  },
  {
   "address": 40411,
   "type": "line",
   "text": "the low bytes of the menu lines' addresses"
  },
  {
   "address": 40422,
   "type": "line",
   "text": "the menu lines' addresses, high bytes (11)"
  },
  {
   "address": 40462,
   "type": "line",
   "text": "the access code's ten letters as they are typed"
  },
  {
   "address": 40509,
   "type": "line",
   "text": "the level's number in \"Code for Level N\""
  },
  {
   "address": 40510,
   "type": "line",
   "text": "the level number's units digit in \"Code for Level N\""
  },
  {
   "address": 40523,
   "type": "line",
   "text": "the rating's name in the result"
  },
  {
   "address": 40550,
   "type": "line",
   "text": "the code sheet's \"6th\": the ordinal written into the question"
  },
  {
   "address": 40607,
   "type": "line",
   "text": "the digits typed at the code sheet, as PETSCII, five of them"
  },
  {
   "address": 40671,
   "type": "line",
   "text": "the end of the menu's text lines, $9EDF-$9EF4: \"Check your manual and try again !\""
  },
  {
   "address": 40694,
   "type": "line",
   "text": "chooses the code sheet's question: mixes the raster line read over 256 loops into two numbers, a page (0-15, one of the manual's sixteen pictures) and a line (0-19); the answer is the page's first number ($A070/$A080) plus 23,171 for each line, less 56,831 when it passes it ($A092)"
  },
  {
   "address": 40828,
   "type": "line",
   "text": "the LDA of the expected number's reduction; also the base the line printer indexes into for the colour bars ($9D02)"
  },
  {
   "address": 40829,
   "type": "line",
   "text": "the operand of the LDA at $9F7C, rewritten as the game runs, by $9F6F"
  },
  {
   "address": 40834,
   "type": "line",
   "text": "the operand of the LDA at $9F81, rewritten as the game runs, by $9F67"
  },
  {
   "address": 40842,
   "type": "line",
   "text": "the code sheet's page, 0-15"
  },
  {
   "address": 40843,
   "type": "line",
   "text": "the code sheet's line, 0-19"
  },
  {
   "address": 40907,
   "type": "line",
   "text": "bytes after question_line up to the colour bar source, $9FCB-$9FDB; not named by any instruction"
  },
  {
   "address": 40924,
   "type": "line",
   "text": "the colour bar for the title, copied by $946B"
  },
  {
   "address": 40956,
   "type": "line",
   "text": "the ordinals for the question, four characters each: 1st, 2nd, 3rd ... 20th"
  },
  {
   "address": 40960,
   "type": "line",
   "text": "the ordinals from \"13th\" to \"20th\", $A000-$A06F, and the bytes up to the page numbers"
  },
  {
   "address": 41072,
   "type": "line",
   "text": "the first number on each of the manual's sixteen code pages, low bytes: 14773, 31433, 48093, 7922 ... 37349"
  },
  {
   "address": 41088,
   "type": "line",
   "text": "the first numbers of the code pages, high bytes (16)"
  },
  {
   "address": 41104,
   "type": "line",
   "text": "the typed code as a 16-bit number, low byte first"
  },
  {
   "address": 41105,
   "type": "line",
   "text": "the typed number's high byte"
  },
  {
   "address": 41106,
   "type": "line",
   "text": "the number the code sheet wants, low byte first"
  },
  {
   "address": 41107,
   "type": "line",
   "text": "the expected number's high byte"
  },
  {
   "address": 41108,
   "type": "line",
   "text": "a third byte for the sum while the expected number is worked out"
  },
  {
   "address": 41109,
   "type": "line",
   "text": "1, 10, 100, 1000, 10000 as low bytes here and high bytes at $A09A"
  },
  {
   "address": 41114,
   "type": "line",
   "text": "the decimal weights' high bytes"
  },
  {
   "address": 41119,
   "type": "line",
   "text": "the digit being added"
  },
  {
   "address": 41120,
   "type": "line",
   "text": "adds each typed digit times its decimal weight into $A090/$A091"
  },
  {
   "address": 41176,
   "type": "line",
   "text": "the code sheet: the question with its ordinal ($9FFC), the page's lemming picture ($A1CF), then the digits ($A128), checked by $A1AC; a wrong code says so for 30 frames and asks again"
  },
  {
   "address": 41256,
   "type": "line",
   "text": "waits a frame, reads a key with GETIN: RETURN checks the code, DEL removes a digit, 0-9 adds one (five at most)"
  },
  {
   "address": 41348,
   "type": "line",
   "text": "unused-looking text \"HACKING AT THE END OF THE LEMNIVERSE\""
  },
  {
   "address": 41388,
   "type": "line",
   "text": "compares $A090/$A091 with $A092/$A093; A=0 when equal, $80 otherwise"
  },
  {
   "address": 41423,
   "type": "line",
   "text": "puts the picture of page A on the screen: copies its 256 bytes from $A400 + A x 256 to $6500 and shows them as four sprites ($94-$97), white, two by two"
  },
  {
   "address": 41433,
   "type": "line",
   "text": "the high byte of the LDA at $A1D7, rewritten as the game runs, by $A1D2"
  },
  {
   "address": 41493,
   "type": "line",
   "text": "the four sprites' X positions"
  },
  {
   "address": 41497,
   "type": "line",
   "text": "their Y positions"
  },
  {
   "address": 41501,
   "type": "line",
   "text": "the screen and colour RAM pointers for menu text row X ($D9-$E0)"
  },
  {
   "address": 41540,
   "type": "line",
   "text": "the low bytes of the text screen's rows"
  },
  {
   "address": 41541,
   "type": "line",
   "text": "menu_rows_lo from its second entry: the next row"
  },
  {
   "address": 41565,
   "type": "line",
   "text": "the text screen's rows, high bytes ($60-$63)"
  },
  {
   "address": 41566,
   "type": "line",
   "text": "menu_rows_hi from its second entry"
  },
  {
   "address": 41590,
   "type": "line",
   "text": "$DC00 as it was before the mouse test"
  },
  {
   "address": 41591,
   "type": "line",
   "text": "$80 when the mouse test sees a mouse"
  },
  {
   "address": 41592,
   "type": "line",
   "text": "how many frames of no mouse before it counts as gone"
  },
  {
   "address": 41593,
   "type": "line",
   "text": "selects control port 2's paddle lines and reads $D419 and $D41A: a 1351 mouse in proportional mode returns other values than the $FF both read with nothing there"
  },
  {
   "address": 41984,
   "type": "line",
   "text": "the code sheet's sixteen lemming pictures, one for each page of codes in the manual, 256 bytes each as four sprites of 64 ($A400-$B3FF, the file CC)"
  },
  {
   "address": 43008,
   "type": "line",
   "text": "the code sheet's pictures, pages 4-7, $A800-$ABFF"
  },
  {
   "address": 43757,
   "type": "line",
   "text": "named by a trace through bytes that are not code; part of page 6's picture"
  },
  {
   "address": 44032,
   "type": "line",
   "text": "the code sheet's pictures, pages 8-11, $AC00-$AFFF"
  },
  {
   "address": 45056,
   "type": "line",
   "text": "the code sheet's pictures, pages 12-15, $B000-$B3FF"
  }
 ]
}