{
 "schema": 1,
 "platform": "c64",
 "game": "explorer",
 "build": "a freezer backup of Electric Dreams' 1987 disk release, the TOSEC image Explorer (1987)(Electric Dreams) from the Internet Archive (MD5 858dc180\u2026672db); its code agrees byte for byte with Triad's crack of the same release",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    1023,
    "runtime: zero page, the stack and pages 2-3. zp_init copies zero page from zp_image ($0C92) at the start; pages 2 and 3 hold what the freezing machine left, and no instruction of the game reads them"
   ],
   [
    1024,
    2047,
    "not the game's: the freezing machine's text screen (its DOLPHINDOS start-up text and LOAD); the game shows VIC banks 1 and 3 only"
   ],
   [
    2048,
    2050,
    "not the game's: the byte before BASIC's start and the first two bytes of the backup's BASIC line, which Triad's crack has as other values; no instruction reads them"
   ],
   [
    16046,
    16383,
    "zeros after the last routine; no instruction reads them and the video chip never shows bank 0"
   ],
   [
    16384,
    17407,
    "runtime: the screen (colours) of VIC bank 1, which the game draws into and shows in turn with bank 3's"
   ],
   [
    19126,
    24575,
    "leftover bytes after the sight's picture: no instruction names an address there, no pointer table points there, and the video chip, which reads bank 1's screen at $4000, its characters at $4800-$49FF and its bitmap at $6000, never reads them"
   ],
   [
    24576,
    32767,
    "runtime: the bitmap of VIC bank 1, drawn by the game"
   ],
   [
    48318,
    48383,
    "zeros between the last picture and the font; nothing reads them"
   ],
   [
    50152,
    50175,
    "the bytes after bank 3's screen (the sprite pointers' page end); the game uses no sprites and nothing reads them"
   ],
   [
    50176,
    51199,
    "not the game's: the release's loader ($C400-$C45C), the names of the two files it loaded ($C49D-$C4BC) and zeros after them; the game never calls it (kit policy: the loader is described in orientation.md)"
   ],
   [
    51200,
    53247,
    "runtime: copy_charset's copy of map_charset at $C800-$C97F for bank 3, and zeros after it"
   ],
   [
    65344,
    65535,
    "the loader's copy of the picture ran 192 bytes past the bitmap, so these hold the first colours again; the last six are the NMI, reset and IRQ vectors init_machine sets"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2050,
   "type": "Undefined"
  },
  {
   "start": 2051,
   "end": 2500,
   "type": "Code"
  },
  {
   "start": 2501,
   "end": 2511,
   "type": "Byte"
  },
  {
   "start": 2512,
   "end": 3044,
   "type": "Code"
  },
  {
   "start": 3045,
   "end": 3206,
   "type": "Byte"
  },
  {
   "start": 3207,
   "end": 3217,
   "type": "Code"
  },
  {
   "start": 3218,
   "end": 3377,
   "type": "Byte"
  },
  {
   "start": 3378,
   "end": 3440,
   "type": "Code"
  },
  {
   "start": 3441,
   "end": 3513,
   "type": "Byte"
  },
  {
   "start": 3514,
   "end": 3600,
   "type": "Code"
  },
  {
   "start": 3601,
   "end": 3617,
   "type": "Byte"
  },
  {
   "start": 3618,
   "end": 4300,
   "type": "Code"
  },
  {
   "start": 4301,
   "end": 4327,
   "type": "Byte"
  },
  {
   "start": 4328,
   "end": 4590,
   "type": "Code"
  },
  {
   "start": 4591,
   "end": 4608,
   "type": "Address"
  },
  {
   "start": 4609,
   "end": 4626,
   "type": "Byte"
  },
  {
   "start": 4627,
   "end": 5303,
   "type": "Code"
  },
  {
   "start": 5304,
   "end": 5313,
   "type": "Address"
  },
  {
   "start": 5314,
   "end": 5321,
   "type": "Byte"
  },
  {
   "start": 5322,
   "end": 5531,
   "type": "Code"
  },
  {
   "start": 5532,
   "end": 5548,
   "type": "Byte"
  },
  {
   "start": 5549,
   "end": 6000,
   "type": "Code"
  },
  {
   "start": 6001,
   "end": 6296,
   "type": "Byte"
  },
  {
   "start": 6297,
   "end": 6720,
   "type": "Code"
  },
  {
   "start": 6721,
   "end": 6738,
   "type": "Byte"
  },
  {
   "start": 6739,
   "end": 7138,
   "type": "Code"
  },
  {
   "start": 7139,
   "end": 7164,
   "type": "Byte"
  },
  {
   "start": 7165,
   "end": 7611,
   "type": "Code"
  },
  {
   "start": 7612,
   "end": 7618,
   "type": "Byte"
  },
  {
   "start": 7619,
   "end": 8668,
   "type": "Code"
  },
  {
   "start": 8669,
   "end": 8758,
   "type": "Byte"
  },
  {
   "start": 8759,
   "end": 8973,
   "type": "Code"
  },
  {
   "start": 8974,
   "end": 8985,
   "type": "Byte"
  },
  {
   "start": 8986,
   "end": 10206,
   "type": "Code"
  },
  {
   "start": 10207,
   "end": 10251,
   "type": "Byte"
  },
  {
   "start": 10252,
   "end": 11784,
   "type": "Code"
  },
  {
   "start": 11785,
   "end": 11832,
   "type": "Byte"
  },
  {
   "start": 11833,
   "end": 11999,
   "type": "Code"
  },
  {
   "start": 12000,
   "end": 12003,
   "type": "Byte"
  },
  {
   "start": 12004,
   "end": 12040,
   "type": "Code"
  },
  {
   "start": 12041,
   "end": 12168,
   "type": "Byte"
  },
  {
   "start": 12169,
   "end": 13338,
   "type": "Code"
  },
  {
   "start": 13339,
   "end": 13378,
   "type": "Byte"
  },
  {
   "start": 13379,
   "end": 13434,
   "type": "Code"
  },
  {
   "start": 13435,
   "end": 13530,
   "type": "Address"
  },
  {
   "start": 13531,
   "end": 13712,
   "type": "Byte"
  },
  {
   "start": 13713,
   "end": 13886,
   "type": "Code"
  },
  {
   "start": 13887,
   "end": 14273,
   "type": "Byte"
  },
  {
   "start": 14274,
   "end": 14770,
   "type": "Code"
  },
  {
   "start": 14771,
   "end": 14908,
   "type": "Byte"
  },
  {
   "start": 14909,
   "end": 15252,
   "type": "Code"
  },
  {
   "start": 15253,
   "end": 15367,
   "type": "Byte"
  },
  {
   "start": 15368,
   "end": 15699,
   "type": "Code"
  },
  {
   "start": 15700,
   "end": 15782,
   "type": "Byte"
  },
  {
   "start": 15783,
   "end": 16045,
   "type": "Code"
  },
  {
   "start": 16046,
   "end": 17407,
   "type": "Undefined"
  },
  {
   "start": 17408,
   "end": 19125,
   "type": "Byte"
  },
  {
   "start": 19126,
   "end": 32767,
   "type": "Undefined"
  },
  {
   "start": 32768,
   "end": 48317,
   "type": "Byte"
  },
  {
   "start": 48318,
   "end": 48383,
   "type": "Undefined"
  },
  {
   "start": 48384,
   "end": 50151,
   "type": "Byte"
  },
  {
   "start": 50152,
   "end": 50175,
   "type": "Undefined"
  },
  {
   "start": 50176,
   "end": 50332,
   "type": "Code"
  },
  {
   "start": 50333,
   "end": 57343,
   "type": "Undefined"
  },
  {
   "start": 57344,
   "end": 65343,
   "type": "Byte"
  },
  {
   "start": 65344,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "cpu_port_ddr",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpf_01",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "tmp2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3,
   "name": "tmp3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4,
   "name": "tmp4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5,
   "name": "tmp5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6,
   "name": "tmp6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7,
   "name": "tmp7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8,
   "name": "draw_page",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9,
   "name": "tmp9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10,
   "name": "wb",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11,
   "name": "wb_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "wc",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13,
   "name": "wc_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14,
   "name": "we",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15,
   "name": "we_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16,
   "name": "ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17,
   "name": "ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18,
   "name": "ptr2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19,
   "name": "ptr2_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20,
   "name": "obj_image",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "obj_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23,
   "name": "obj_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24,
   "name": "obj_width",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25,
   "name": "pos_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26,
   "name": "pos_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "pos_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28,
   "name": "pos_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32,
   "name": "probe_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33,
   "name": "probe_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34,
   "name": "probe_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35,
   "name": "probe_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36,
   "name": "ground_height",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37,
   "name": "ground_height_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38,
   "name": "terrain",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39,
   "name": "scene_kind",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40,
   "name": "scene_near",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41,
   "name": "layer_sum",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42,
   "name": "layer_sum_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43,
   "name": "rnd_a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44,
   "name": "rnd_b",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45,
   "name": "scene_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46,
   "name": "obj_list",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "obj_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49,
   "name": "obj_id",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50,
   "name": "obj_mirror",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51,
   "name": "cell_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52,
   "name": "cell_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53,
   "name": "cell_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 54,
   "name": "cell_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55,
   "name": "heading",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56,
   "name": "key_repeat",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 57,
   "name": "key_delay",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58,
   "name": "key_shift",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59,
   "name": "key_shift_old",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61,
   "name": "key_old",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62,
   "name": "key_index",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63,
   "name": "key_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64,
   "name": "keymap_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "score",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 67,
   "name": "energy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 68,
   "name": "energy_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 69,
   "name": "win_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 70,
   "name": "win_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 71,
   "name": "win_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "win_width",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 73,
   "name": "win_height",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 74,
   "name": "text_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 75,
   "name": "input_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 76,
   "name": "input_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 77,
   "name": "zpa_4D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 78,
   "name": "zpa_4E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "near_dist",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 80,
   "name": "zpa_50",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "near_bearing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "near_index",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 84,
   "name": "zpf_54",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "fix_dist",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "fix_bearing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "fix_index",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "zpa_5B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "zpa_5C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 93,
   "name": "zpa_5D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 94,
   "name": "zpa_5E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 95,
   "name": "zpa_5F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 96,
   "name": "zpa_60",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpa_61",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 98,
   "name": "zpa_62",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpa_63",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 100,
   "name": "dx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 102,
   "name": "dy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 103,
   "name": "zpa_67",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "bearing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 105,
   "name": "zpa_69",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "bug_active",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 107,
   "name": "pause_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 108,
   "name": "zpa_6C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "key_buffer",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 110,
   "name": "zpf_6E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "attr_override",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 120,
   "name": "key_repeat_on",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 121,
   "name": "attr_force",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 122,
   "name": "name_len",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 123,
   "name": "name_buf",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 156,
   "name": "view_mode",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 157,
   "name": "landing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 158,
   "name": "tone_time",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 159,
   "name": "tone_time_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 251,
   "name": "zpa_FB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2051,
   "name": "start_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2110,
   "name": "b_083E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2125,
   "name": "b_084D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2138,
   "name": "b_085A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2214,
   "name": "b_08A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2220,
   "name": "b_08AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2226,
   "name": "shake",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2230,
   "name": "b_08B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2271,
   "name": "swap_hud_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2285,
   "name": "b_08ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2303,
   "name": "b_08FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2321,
   "name": "b_0911",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2325,
   "name": "b_0915",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2329,
   "name": "b_0919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2333,
   "name": "b_091D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2335,
   "name": "b_091F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2339,
   "name": "delay_short",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2343,
   "name": "b_0927",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2350,
   "name": "fine_x_0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2359,
   "name": "fine_x_7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2368,
   "name": "fine_y_0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2377,
   "name": "fine_y_7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2386,
   "name": "tone_wait",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2424,
   "name": "b_0978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2438,
   "name": "tone_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2448,
   "name": "b_0990",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2450,
   "name": "r_0992",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2451,
   "name": "wait_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2471,
   "name": "b_09A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2477,
   "name": "save_work",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2479,
   "name": "b_09AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2489,
   "name": "load_work",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2491,
   "name": "b_09BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2501,
   "name": "saved_work",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2512,
   "name": "bug_move_rts",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 2513,
   "name": "bug_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2559,
   "name": "b_09FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2566,
   "name": "b_0A06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2573,
   "name": "b_0A0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2580,
   "name": "b_0A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2622,
   "name": "b_0A3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2702,
   "name": "init_machine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2813,
   "name": "sid_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2818,
   "name": "b_0B02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2833,
   "name": "irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2853,
   "name": "scan_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2874,
   "name": "b_0B3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2888,
   "name": "b_0B48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2891,
   "name": "b_0B4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2899,
   "name": "b_0B53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2915,
   "name": "b_0B63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2917,
   "name": "b_0B65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2918,
   "name": "b_0B66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2934,
   "name": "b_0B76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2949,
   "name": "b_0B85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2964,
   "name": "b_0B94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2972,
   "name": "b_0B9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2980,
   "name": "b_0BA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2993,
   "name": "b_0BB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3017,
   "name": "b_0BC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3023,
   "name": "scan_joystick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3042,
   "name": "b_0BE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3045,
   "name": "joy_codes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3077,
   "name": "keymap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3142,
   "name": "keymap_shifted",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3207,
   "name": "zp_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3209,
   "name": "b_0C89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3218,
   "name": "zp_image",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3378,
   "name": "doorway_prompt",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3438,
   "name": "b_0D6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3441,
   "name": "str_enter_doorway",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3455,
   "name": "str_other_keys",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3473,
   "name": "str_name_spot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3514,
   "name": "check_win",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3526,
   "name": "b_0DC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3598,
   "name": "game_won_halt",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3601,
   "name": "str_you_did_it",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3618,
   "name": "check_win_rts",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 3619,
   "name": "name_destination",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3681,
   "name": "b_0E61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3709,
   "name": "b_0E7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3738,
   "name": "b_0E9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3766,
   "name": "b_0EB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3914,
   "name": "doorway_energy_skip",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3917,
   "name": "fill_hidden_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3937,
   "name": "j_0F61",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3951,
   "name": "b_0F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3960,
   "name": "b_0F78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3965,
   "name": "read_name",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3971,
   "name": "b_0F83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3985,
   "name": "b_0F91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4014,
   "name": "b_0FAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4039,
   "name": "b_0FC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4068,
   "name": "show_name",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4087,
   "name": "r_0FF7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4088,
   "name": "draw_compass",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4217,
   "name": "save_compass_cells",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4229,
   "name": "b_1085",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4250,
   "name": "b_109A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4259,
   "name": "load_compass_cells",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4271,
   "name": "b_10AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4292,
   "name": "b_10C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4301,
   "name": "compass_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4304,
   "name": "compass_bitmap",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4328,
   "name": "divide_8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4332,
   "name": "b_10EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4346,
   "name": "b_10FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4351,
   "name": "draw_scenery_at",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4385,
   "name": "j_1121",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4426,
   "name": "b_114A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4460,
   "name": "b_116C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4476,
   "name": "b_117C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4483,
   "name": "scenery_doorway",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4492,
   "name": "scenery_beacon",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4500,
   "name": "r_1194",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4501,
   "name": "draw_doorway",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4529,
   "name": "draw_beacon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4557,
   "name": "draw_fragment",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4591,
   "name": "fragment_images",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4592,
   "name": "f_11F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4609,
   "name": "fragment_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4610,
   "name": "f_1202",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4627,
   "name": "draw_fragments_here",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4639,
   "name": "b_121F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4674,
   "name": "b_1242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4696,
   "name": "draw_ground_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4784,
   "name": "hill_columns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4800,
   "name": "j_12C0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4884,
   "name": "b_1314",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4915,
   "name": "far_ring",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 5171,
   "name": "b_1433",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5174,
   "name": "maybe_new_bug",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 5181,
   "name": "b_143D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5188,
   "name": "b_1444",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5204,
   "name": "b_1454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5303,
   "name": "r_14B7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5304,
   "name": "bug_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5314,
   "name": "bug_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5315,
   "name": "a_14C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5316,
   "name": "bug_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5317,
   "name": "bug_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5318,
   "name": "sight_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5319,
   "name": "a_14C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5320,
   "name": "sight_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5321,
   "name": "sight_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5322,
   "name": "probe_east",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5326,
   "name": "probe_west",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5330,
   "name": "probe_north",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5334,
   "name": "probe_south",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5336,
   "name": "b_14D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5352,
   "name": "b_14E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5365,
   "name": "j_14F5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5369,
   "name": "ground_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5375,
   "name": "j_14FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5385,
   "name": "b_1509",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5392,
   "name": "b_1510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5399,
   "name": "b_1517",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5406,
   "name": "b_151E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5413,
   "name": "b_1525",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5419,
   "name": "walk_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5427,
   "name": "b_1533",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5434,
   "name": "b_153A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5441,
   "name": "b_1541",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5448,
   "name": "b_1548",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5451,
   "name": "step_stands",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5463,
   "name": "walk_turned",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5472,
   "name": "walk_turn_right",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5484,
   "name": "walk_turn_left",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5496,
   "name": "turn_right",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5508,
   "name": "turn_left",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5520,
   "name": "turn_about",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5532,
   "name": "sine_table",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5549,
   "name": "heading_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5569,
   "name": "j_15C1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5603,
   "name": "b_15E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5634,
   "name": "b_1602",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5641,
   "name": "b_1609",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5653,
   "name": "b_1615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5665,
   "name": "b_1621",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5677,
   "name": "step_forward",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5706,
   "name": "b_164A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5741,
   "name": "b_166D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5792,
   "name": "b_16A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5814,
   "name": "after_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5844,
   "name": "redraw_view",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5848,
   "name": "enter_doorway",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5868,
   "name": "b_16EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5898,
   "name": "b_170A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5928,
   "name": "take_off",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5942,
   "name": "b_1736",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5972,
   "name": "b_1754",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6001,
   "name": "str_impossible",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6012,
   "name": "str_not_dropped",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6024,
   "name": "str_out_of_range",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6037,
   "name": "str_objects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6045,
   "name": "str_beacons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6053,
   "name": "str_weapons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6061,
   "name": "str_energy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6067,
   "name": "energy_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6074,
   "name": "str_score",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6080,
   "name": "score_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6084,
   "name": "str_echo_nearest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6097,
   "name": "str_send_to_beacon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6112,
   "name": "str_found",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6117,
   "name": "found_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6128,
   "name": "str_drop_beacon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6140,
   "name": "str_pick_up_beacon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6155,
   "name": "str_fix_3_nearest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6169,
   "name": "str_carried",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6187,
   "name": "str_arrows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6196,
   "name": "str_fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6201,
   "name": "str_credit_graphics",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6225,
   "name": "str_credit_program",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6246,
   "name": "f_1866",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6247,
   "name": "row_offset_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6267,
   "name": "a_187B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6271,
   "name": "f_187F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6272,
   "name": "row_offset_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6292,
   "name": "a_1894",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6297,
   "name": "menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6379,
   "name": "b_18EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6420,
   "name": "b_1914",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6458,
   "name": "b_193A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6465,
   "name": "b_1941",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6472,
   "name": "b_1948",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6479,
   "name": "b_194F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6482,
   "name": "menu_objects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6558,
   "name": "b_199E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6565,
   "name": "b_19A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6568,
   "name": "echo_nearest",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6626,
   "name": "b_19E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6645,
   "name": "b_19F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6669,
   "name": "b_1A0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6718,
   "name": "b_1A3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6721,
   "name": "str_which_beacon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6738,
   "name": "send_fragment_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6739,
   "name": "send_to_beacon",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6747,
   "name": "b_1A5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6812,
   "name": "b_1A9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6819,
   "name": "b_1AA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6834,
   "name": "b_1AB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6902,
   "name": "b_1AF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6929,
   "name": "b_1B11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6956,
   "name": "menu_beacons",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7051,
   "name": "b_1B8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7058,
   "name": "b_1B92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7065,
   "name": "b_1B99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7068,
   "name": "drop_beacon",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7088,
   "name": "b_1BB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7104,
   "name": "b_1BC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7125,
   "name": "b_1BD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7128,
   "name": "pick_up_beacon",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7136,
   "name": "b_1BE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7139,
   "name": "fix_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7165,
   "name": "fix_beacons",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7255,
   "name": "b_1C57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7316,
   "name": "b_1C94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7377,
   "name": "b_1CD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7380,
   "name": "print_fix_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7392,
   "name": "put_number",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7417,
   "name": "b_1CF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7425,
   "name": "wait_close_window",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7428,
   "name": "close_window",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7431,
   "name": "say_impossible",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7448,
   "name": "say_in_window",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7456,
   "name": "j_1D20",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7462,
   "name": "say_not_dropped",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7482,
   "name": "say_out_of_range",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7501,
   "name": "show_credits",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7540,
   "name": "update_carried",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7560,
   "name": "b_1D88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7575,
   "name": "b_1D97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7581,
   "name": "j_1D9D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7612,
   "name": "number_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7615,
   "name": "f_1DBF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7617,
   "name": "key_text",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7619,
   "name": "number_to_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7623,
   "name": "b_1DC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7638,
   "name": "j_1DD6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7659,
   "name": "b_1DEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7669,
   "name": "b_1DF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7684,
   "name": "b_1E04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7688,
   "name": "b_1E08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7696,
   "name": "b_1E10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7705,
   "name": "b_1E19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7709,
   "name": "divide_10",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7759,
   "name": "b_1E4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7861,
   "name": "show_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7870,
   "name": "place_beacon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7882,
   "name": "b_1ECA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7916,
   "name": "take_beacon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7928,
   "name": "b_1EF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8007,
   "name": "b_1F47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8025,
   "name": "fragment_at_probe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8037,
   "name": "b_1F65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8052,
   "name": "b_1F74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8070,
   "name": "beacon_at_probe",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8082,
   "name": "b_1F92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8100,
   "name": "j_1FA4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8106,
   "name": "b_1FAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8121,
   "name": "j_1FB9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8124,
   "name": "near_probe_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8146,
   "name": "near_probe_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8165,
   "name": "j_1FE5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8185,
   "name": "b_1FF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8187,
   "name": "find_three_beacons",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8217,
   "name": "j_2019",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8248,
   "name": "j_2038",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8373,
   "name": "b_20B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8391,
   "name": "b_20C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8411,
   "name": "b_20DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8420,
   "name": "b_20E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8430,
   "name": "r_20EE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8431,
   "name": "nearest_fragment",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8459,
   "name": "b_210B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8559,
   "name": "b_216F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8594,
   "name": "r_2192",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8595,
   "name": "bearing_to",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8669,
   "name": "beacons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8723,
   "name": "fragments",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8724,
   "name": "a_2214",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8725,
   "name": "a_2215",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8726,
   "name": "a_2216",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8759,
   "name": "copy_bitmap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8785,
   "name": "copy_screen",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8810,
   "name": "b_226A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8821,
   "name": "b_2275",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8828,
   "name": "copy_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8829,
   "name": "copy_from",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8830,
   "name": "copy_from_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8832,
   "name": "copy_to",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8833,
   "name": "copy_to_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8847,
   "name": "copy_shown_to_hidden",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8877,
   "name": "restore_view",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8886,
   "name": "beacon_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8905,
   "name": "fragment_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8919,
   "name": "open_window",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8951,
   "name": "energy_spend",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8974,
   "name": "str_energy_gone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8986,
   "name": "energy_gone",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 9034,
   "name": "weapons_menu",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9040,
   "name": "weapons",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9088,
   "name": "b_2380",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9127,
   "name": "b_23A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9134,
   "name": "b_23AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9141,
   "name": "b_23B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9148,
   "name": "b_23BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9155,
   "name": "b_23C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9159,
   "name": "leave_weapons",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9171,
   "name": "sight_left",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9193,
   "name": "b_23E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9196,
   "name": "sight_right",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9218,
   "name": "b_2402",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9221,
   "name": "sight_down",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9243,
   "name": "b_241B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9246,
   "name": "sight_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9268,
   "name": "b_2434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9271,
   "name": "fire_laser",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9353,
   "name": "b_2489",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9378,
   "name": "b_24A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9382,
   "name": "b_24A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9434,
   "name": "bug_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9441,
   "name": "bug_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9448,
   "name": "bug_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9455,
   "name": "bug_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9459,
   "name": "j_24F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9466,
   "name": "bug_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9470,
   "name": "j_24FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9519,
   "name": "b_252F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9526,
   "name": "restore_cell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9585,
   "name": "b_2571",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9599,
   "name": "flash_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9619,
   "name": "j_2593",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9628,
   "name": "b_259C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9637,
   "name": "b_25A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9642,
   "name": "delay_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9645,
   "name": "b_25AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9655,
   "name": "sfx_crash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9699,
   "name": "sfx_drop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9741,
   "name": "b_260D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9770,
   "name": "sfx_land",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9819,
   "name": "sfx_drone",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9868,
   "name": "sfx_fly",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9922,
   "name": "sfx_laser",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9937,
   "name": "b_26D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10026,
   "name": "b_272A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10052,
   "name": "sfx_doorway",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10077,
   "name": "b_275D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10089,
   "name": "key_click",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10120,
   "name": "sfx_bump",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10149,
   "name": "sfx_fragment",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10183,
   "name": "sfx_take_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10207,
   "name": "map_cols",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10208,
   "name": "map_rows",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10209,
   "name": "map_west",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10210,
   "name": "a_27E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10211,
   "name": "map_south",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10212,
   "name": "a_27E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10213,
   "name": "map_row_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10214,
   "name": "a_27E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10215,
   "name": "map_row_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10216,
   "name": "a_27E8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10217,
   "name": "map_step_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10218,
   "name": "a_27EA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10219,
   "name": "map_step_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10220,
   "name": "a_27EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10221,
   "name": "map_draw_cols",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10222,
   "name": "map_draw_rows",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10223,
   "name": "map_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10224,
   "name": "map_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10225,
   "name": "map_first_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10226,
   "name": "map_first_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10227,
   "name": "height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10228,
   "name": "map_tiles",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10252,
   "name": "map_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10256,
   "name": "b_2810",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10292,
   "name": "fly",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10311,
   "name": "fly_loop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10323,
   "name": "b_2853",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10330,
   "name": "b_285A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10337,
   "name": "b_2861",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10344,
   "name": "b_2868",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10351,
   "name": "b_286F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10358,
   "name": "b_2876",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10361,
   "name": "go_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10404,
   "name": "go_down",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10433,
   "name": "j_28C1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10462,
   "name": "land",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 10467,
   "name": "b_28E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10527,
   "name": "b_291F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10530,
   "name": "map_origin",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10564,
   "name": "b_2944",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10604,
   "name": "b_296C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10623,
   "name": "map_centre",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10647,
   "name": "b_2997",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10686,
   "name": "b_29BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10702,
   "name": "scroll_south",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10745,
   "name": "scroll_north",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10774,
   "name": "b_2A16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10839,
   "name": "b_2A57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10860,
   "name": "scroll_west",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10903,
   "name": "scroll_east",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10928,
   "name": "b_2AB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10995,
   "name": "b_2AF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11016,
   "name": "draw_map_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11030,
   "name": "draw_map_col",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11041,
   "name": "j_2B21",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11045,
   "name": "draw_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11052,
   "name": "b_2B2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11072,
   "name": "j_2B40",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11106,
   "name": "j_2B62",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11125,
   "name": "b_2B75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11176,
   "name": "b_2BA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11197,
   "name": "b_2BBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11222,
   "name": "fill_crash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11226,
   "name": "b_2BDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11257,
   "name": "b_2BF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11267,
   "name": "crash",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11277,
   "name": "b_2C0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11340,
   "name": "b_2C4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11343,
   "name": "pause_or_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11357,
   "name": "r_2C5D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11358,
   "name": "fine_y_0_at_bottom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11374,
   "name": "fine_y_7_at_bottom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11390,
   "name": "delay_crash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11394,
   "name": "b_2C82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11401,
   "name": "scroll_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11481,
   "name": "copy_charset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11483,
   "name": "b_2CDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11501,
   "name": "clear_colour_ram",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11505,
   "name": "b_2CF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11521,
   "name": "shift_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11527,
   "name": "b_2D07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11557,
   "name": "b_2D25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11587,
   "name": "shift_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11593,
   "name": "b_2D49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11623,
   "name": "b_2D67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11653,
   "name": "shift_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11659,
   "name": "b_2D8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11689,
   "name": "b_2DA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11719,
   "name": "shift_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11725,
   "name": "b_2DCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11755,
   "name": "b_2DEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11785,
   "name": "map_tile_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11786,
   "name": "map_tile_chars_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11787,
   "name": "map_tile_chars_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11788,
   "name": "map_tile_chars_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11833,
   "name": "draw_map_tile",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11885,
   "name": "map_to_bitmap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11910,
   "name": "b_2E86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11965,
   "name": "b_2EBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11982,
   "name": "b_2ECE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12000,
   "name": "ecm_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12004,
   "name": "clear_bitmap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12019,
   "name": "b_2EF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12030,
   "name": "attr_to_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12041,
   "name": "attr_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12169,
   "name": "draw_object_plain",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12185,
   "name": "draw_image",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12237,
   "name": "b_2FCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12247,
   "name": "b_2FD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12252,
   "name": "b_2FDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12267,
   "name": "b_2FEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12274,
   "name": "b_2FF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12277,
   "name": "b_2FF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12280,
   "name": "b_2FF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12300,
   "name": "b_300C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12308,
   "name": "b_3014",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12327,
   "name": "b_3027",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12338,
   "name": "b_3032",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12341,
   "name": "draw_cell_masked",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12354,
   "name": "b_3042",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12375,
   "name": "b_3057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12394,
   "name": "b_306A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12414,
   "name": "bitmap_of_cell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12444,
   "name": "draw_object_mirrored",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12467,
   "name": "j_30B3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12526,
   "name": "b_30EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12541,
   "name": "b_30FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12552,
   "name": "b_3108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12555,
   "name": "b_310B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12558,
   "name": "b_310E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12578,
   "name": "b_3122",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12593,
   "name": "b_3131",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12612,
   "name": "b_3144",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12623,
   "name": "b_314F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12626,
   "name": "draw_cell_masked_mirrored",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12639,
   "name": "b_315F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12660,
   "name": "b_3174",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12684,
   "name": "b_318C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12708,
   "name": "swap_buffers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12752,
   "name": "flip_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12759,
   "name": "b_31D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12776,
   "name": "b_31E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12793,
   "name": "dec_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12800,
   "name": "b_3200",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12811,
   "name": "b_320B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12815,
   "name": "dec_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12822,
   "name": "b_3216",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12826,
   "name": "dec_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12833,
   "name": "b_3221",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12837,
   "name": "inc_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12843,
   "name": "r_322B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12844,
   "name": "inc_we",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12850,
   "name": "r_3232",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12851,
   "name": "inc_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12857,
   "name": "r_3239",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12864,
   "name": "r_3240",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12865,
   "name": "we_double",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12870,
   "name": "add_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12886,
   "name": "add_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12907,
   "name": "ptr_add_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12923,
   "name": "ptr_add_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12939,
   "name": "swap_we_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12962,
   "name": "sub_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12967,
   "name": "b_32A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12968,
   "name": "b_32A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12986,
   "name": "b_32BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12988,
   "name": "sub_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12993,
   "name": "b_32C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12994,
   "name": "b_32C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13012,
   "name": "b_32D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13014,
   "name": "terrain_at",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13033,
   "name": "b_32E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13046,
   "name": "b_32F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13059,
   "name": "b_3303",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13072,
   "name": "b_3310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13078,
   "name": "b_3316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13084,
   "name": "b_331C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13097,
   "name": "b_3329",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13103,
   "name": "b_332F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13109,
   "name": "b_3335",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13115,
   "name": "b_333B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13127,
   "name": "r_3347",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13128,
   "name": "layer_first",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13136,
   "name": "layer_sum_at",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13146,
   "name": "b_335A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13220,
   "name": "mul_coef",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13255,
   "name": "j_33C7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13265,
   "name": "r_33D1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13266,
   "name": "b_33D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13290,
   "name": "mul_step_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13311,
   "name": "r_33FF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13312,
   "name": "mul_step_sub",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13338,
   "name": "r_341A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13339,
   "name": "terrain_layers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13379,
   "name": "scenery_list_for",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13435,
   "name": "scenery_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13531,
   "name": "object_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13589,
   "name": "a_3515",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13591,
   "name": "a_3517",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13594,
   "name": "a_351A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13597,
   "name": "a_351D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13602,
   "name": "a_3522",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13605,
   "name": "a_3525",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13608,
   "name": "a_3528",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13613,
   "name": "a_352D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13684,
   "name": "a_3574",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13686,
   "name": "a_3576",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13689,
   "name": "a_3579",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13692,
   "name": "a_357C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13697,
   "name": "a_3581",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13700,
   "name": "a_3584",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13703,
   "name": "a_3587",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13708,
   "name": "a_358C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13713,
   "name": "draw_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13718,
   "name": "b_3596",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13731,
   "name": "b_35A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13735,
   "name": "b_35A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13863,
   "name": "r_3627",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13864,
   "name": "b_3628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13887,
   "name": "object_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14274,
   "name": "key_get",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14282,
   "name": "b_37CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14294,
   "name": "r_37D6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14295,
   "name": "hud_twinkle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14330,
   "name": "b_37FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14343,
   "name": "b_3807",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14356,
   "name": "b_3814",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14399,
   "name": "bearing_of",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14550,
   "name": "b_38D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14598,
   "name": "b_3906",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14603,
   "name": "j_390B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14650,
   "name": "b_393A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14688,
   "name": "b_3960",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14721,
   "name": "abs_wc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14738,
   "name": "r_3992",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14739,
   "name": "mul_8x16",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14749,
   "name": "b_399D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14760,
   "name": "b_39A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14771,
   "name": "tangent_table",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14899,
   "name": "search_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14900,
   "name": "search_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14901,
   "name": "dy_larger",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14902,
   "name": "quadrant",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14903,
   "name": "quadrant_offsets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14909,
   "name": "zoom_in",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14927,
   "name": "zoom_pass",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14941,
   "name": "walk_zoom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14955,
   "name": "stretch_strips",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14962,
   "name": "b_3A72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15042,
   "name": "stretch_strip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15046,
   "name": "b_3AC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15106,
   "name": "b_3B02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15141,
   "name": "double_bits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15143,
   "name": "b_3B27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15147,
   "name": "b_3B2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15176,
   "name": "b_3B48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15180,
   "name": "b_3B4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15213,
   "name": "b_3B6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15228,
   "name": "b_3B7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15246,
   "name": "b_3B8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15253,
   "name": "zoom_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15265,
   "name": "zoom_sources",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15301,
   "name": "doubled_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15305,
   "name": "doubled_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15309,
   "name": "doubled_tail",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15317,
   "name": "zoom_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15318,
   "name": "zoom_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15338,
   "name": "a_3BEA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15343,
   "name": "zoom_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15363,
   "name": "a_3C03",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15368,
   "name": "pause",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15376,
   "name": "b_3C10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15385,
   "name": "wc_add_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15401,
   "name": "ptr2_add_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15417,
   "name": "inc_ptr2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15423,
   "name": "r_3C3F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15424,
   "name": "dec_ptr2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15431,
   "name": "b_3C47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15435,
   "name": "ptr_sub_wb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15440,
   "name": "b_3C50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15441,
   "name": "b_3C51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15459,
   "name": "b_3C63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15461,
   "name": "rnd_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15479,
   "name": "rnd_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15507,
   "name": "b_3C93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15525,
   "name": "fill_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15528,
   "name": "b_3CA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15530,
   "name": "b_3CAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15587,
   "name": "draw_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15605,
   "name": "b_3CF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15618,
   "name": "b_3D02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15620,
   "name": "b_3D04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15631,
   "name": "j_3D0F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15641,
   "name": "b_3D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15651,
   "name": "b_3D23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15655,
   "name": "b_3D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15700,
   "name": "frame_cell",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15710,
   "name": "frame_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15783,
   "name": "fill_window",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15805,
   "name": "fill_rect",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15846,
   "name": "b_3DE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15862,
   "name": "b_3DF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15896,
   "name": "print_string",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15899,
   "name": "j_3E1B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15949,
   "name": "b_3E4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15984,
   "name": "b_3E70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16005,
   "name": "b_3E85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16009,
   "name": "add_wc_carry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16024,
   "name": "abs_diff",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16045,
   "name": "r_3EAD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "f_4000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16386,
   "name": "f_4002",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16424,
   "name": "f_4028",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16464,
   "name": "f_4050",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16604,
   "name": "f_40DC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16614,
   "name": "f_40E6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16624,
   "name": "f_40F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16626,
   "name": "f_40F2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16640,
   "name": "f_4100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16654,
   "name": "f_410E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16684,
   "name": "f_412C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16824,
   "name": "f_41B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16844,
   "name": "f_41CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16864,
   "name": "f_41E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16866,
   "name": "f_41E2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16884,
   "name": "f_41F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16896,
   "name": "f_4200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16904,
   "name": "f_4208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17044,
   "name": "f_4294",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17074,
   "name": "f_42B2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17104,
   "name": "f_42D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17106,
   "name": "f_42D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17114,
   "name": "f_42DA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17124,
   "name": "f_42E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17152,
   "name": "f_4300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17192,
   "name": "a_4328",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17344,
   "name": "f_43C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17408,
   "name": "mask_keep_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17664,
   "name": "mask_keep_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17920,
   "name": "bit_reverse",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18176,
   "name": "terrain_profile",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18432,
   "name": "map_charset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18624,
   "name": "map_charset_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18816,
   "name": "bug_1_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18876,
   "name": "bug_2_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18936,
   "name": "bug_3_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18996,
   "name": "bug_4_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19056,
   "name": "bug_5_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19116,
   "name": "sight_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "obj_01_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33078,
   "name": "obj_02_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33768,
   "name": "obj_03_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34678,
   "name": "obj_04_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35458,
   "name": "obj_05_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36358,
   "name": "obj_06_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37088,
   "name": "obj_17_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37208,
   "name": "obj_39_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37348,
   "name": "obj_07_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38158,
   "name": "obj_08_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39018,
   "name": "unused_image_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39258,
   "name": "obj_38_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39318,
   "name": "obj_19_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39438,
   "name": "obj_21_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39678,
   "name": "unused_image_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39758,
   "name": "obj_09_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39988,
   "name": "obj_10_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40298,
   "name": "obj_11_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40538,
   "name": "obj_12_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40818,
   "name": "obj_13_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "obj_13_image_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41008,
   "name": "obj_14_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41248,
   "name": "obj_15_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41518,
   "name": "obj_16_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41858,
   "name": "obj_40_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41978,
   "name": "obj_43_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42158,
   "name": "obj_22_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42348,
   "name": "obj_23_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42668,
   "name": "obj_24_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43128,
   "name": "obj_25_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43598,
   "name": "obj_26_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44078,
   "name": "obj_27_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44558,
   "name": "obj_28_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45048,
   "name": "obj_29_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45558,
   "name": "obj_30_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45698,
   "name": "obj_31_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45888,
   "name": "obj_32_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46008,
   "name": "obj_33_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46198,
   "name": "obj_34_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46308,
   "name": "obj_35_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46488,
   "name": "obj_36_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46668,
   "name": "obj_37_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46888,
   "name": "fragment_1_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46928,
   "name": "fragment_2_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46968,
   "name": "fragment_3_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47008,
   "name": "fragment_4_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47048,
   "name": "fragment_5_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47088,
   "name": "fragment_6_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47128,
   "name": "fragment_7_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47168,
   "name": "fragment_8_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47208,
   "name": "fragment_9_image",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47248,
   "name": "doorway_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47788,
   "name": "beacon_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47968,
   "name": "hill_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48058,
   "name": "obj_18_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48228,
   "name": "obj_20_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48384,
   "name": "font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "title_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49154,
   "name": "title_colours_c002",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49192,
   "name": "title_colours_c028",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49232,
   "name": "title_colours_c050",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49372,
   "name": "title_colours_c0dc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49382,
   "name": "title_colours_c0e6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49392,
   "name": "title_colours_c0f0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49394,
   "name": "title_colours_c0f2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49408,
   "name": "title_colours_c100",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49422,
   "name": "title_colours_c10e",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49452,
   "name": "title_colours_c12c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49592,
   "name": "title_colours_c1b8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49612,
   "name": "title_colours_c1cc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49632,
   "name": "title_colours_c1e0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49634,
   "name": "title_colours_c1e2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49652,
   "name": "title_colours_c1f4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49664,
   "name": "title_colours_c200",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49672,
   "name": "title_colours_c208",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49812,
   "name": "title_colours_c294",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49842,
   "name": "title_colours_c2b2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49872,
   "name": "title_colours_c2d0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49874,
   "name": "title_colours_c2d2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49882,
   "name": "title_colours_c2da",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49892,
   "name": "title_colours_c2e4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49920,
   "name": "title_colours_c300",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50112,
   "name": "title_colours_c3c0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50265,
   "name": "s_C459",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 50318,
   "name": "s_C48E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 51200,
   "name": "f_C800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51392,
   "name": "f_C8C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55552,
   "name": "f_D900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55808,
   "name": "f_DA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56064,
   "name": "f_DB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57344,
   "name": "title_bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58368,
   "name": "title_bitmap_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59392,
   "name": "title_bitmap_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60416,
   "name": "title_bitmap_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61440,
   "name": "title_bitmap_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62464,
   "name": "title_bitmap_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63488,
   "name": "title_bitmap_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64512,
   "name": "title_bitmap_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65466,
   "name": "KERNAL_SETLFS",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65469,
   "name": "KERNAL_SETNAM",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65493,
   "name": "KERNAL_LOAD",
   "type": "Predefined",
   "kind": "system"
  }
 ],
 "comments": [
  {
   "address": 8,
   "type": "line",
   "text": "the high byte of the screen the game draws into: $40 (bank 1, bitmap $6000) or $C0 (bank 3, bitmap $E000); swap_buffers flips it, and the other value is the screen on show"
  },
  {
   "address": 10,
   "type": "line",
   "text": "second operand of the 16-bit arithmetic routines (with $0B)"
  },
  {
   "address": 12,
   "type": "line",
   "text": "operand of the 16-bit arithmetic routines (with $0D), and the pointer to a string or an image for the drawing routines"
  },
  {
   "address": 14,
   "type": "line",
   "text": "the 16-bit accumulator of the arithmetic routines (with $0F), and the column and row for the drawing routines"
  },
  {
   "address": 16,
   "type": "line",
   "text": "pointer used for tables and records (with $11)"
  },
  {
   "address": 25,
   "type": "line",
   "text": "the explorer's east-west position, 16 bits (with $1A); the view from above keeps it on a multiple of 16"
  },
  {
   "address": 27,
   "type": "line",
   "text": "the explorer's north-south position, 16 bits (with $1C)"
  },
  {
   "address": 32,
   "type": "line",
   "text": "the point the terrain routines are asked about, 16 bits (with $21)"
  },
  {
   "address": 34,
   "type": "line",
   "text": "with $23, the probe's north-south coordinate"
  },
  {
   "address": 36,
   "type": "line",
   "text": "the height terrain_at returns for the probe (with $25); $C8 for water"
  },
  {
   "address": 38,
   "type": "line",
   "text": "the kind of ground terrain_at returns: 0, 2, 4, 6 or 8 by the heights of the layers, $0A for water"
  },
  {
   "address": 39,
   "type": "line",
   "text": "the low byte of the last layer's sum, kept by scenery_list_for; 12 makes the cell a doorway (scenery_doorway)"
  },
  {
   "address": 40,
   "type": "line",
   "text": "0 while the far ring of scenery is drawn, 2 for the near ring"
  },
  {
   "address": 41,
   "type": "line",
   "text": "one layer's height sum (with $2A), from layer_sum_at"
  },
  {
   "address": 43,
   "type": "line",
   "text": "the first of the two random bytes rnd_next steps (with rnd_b at $2C); seeded from the raster line at start, and again from the ground's height (ground_height) at the start of every cell's scenery in draw_scenery_at, so the objects at a place come out the same at every visit"
  },
  {
   "address": 45,
   "type": "line",
   "text": "the column, 0-63 round the horizon, where the next scenery object is drawn"
  },
  {
   "address": 46,
   "type": "line",
   "text": "pointer to the list of objects still to draw at one scenery position (with $2F)"
  },
  {
   "address": 49,
   "type": "line",
   "text": "the object draw_object draws: its number, negative for the mirror image"
  },
  {
   "address": 51,
   "type": "line",
   "text": "the explorer's position rounded down to the 16-unit grid (with $34), set by draw_ground_view"
  },
  {
   "address": 53,
   "type": "line",
   "text": "with $36, the north-south half of the grid cell"
  },
  {
   "address": 55,
   "type": "line",
   "text": "the compass bearing on the ground, 0-63 (64 steps to the circle, 16 to a right angle)"
  },
  {
   "address": 63,
   "type": "line",
   "text": "how many key codes wait in key_buffer"
  },
  {
   "address": 66,
   "type": "line",
   "text": "fragments found, shown as the score; each one counts once"
  },
  {
   "address": 67,
   "type": "line",
   "text": "16 bits (with $44); 40,000 at the start, 2,000 after it runs out"
  },
  {
   "address": 74,
   "type": "line",
   "text": "the attribute print_string gives each letter; $C0 leaves the colour as it is"
  },
  {
   "address": 104,
   "type": "line",
   "text": "the result of bearing_of, in degrees (with $69)"
  },
  {
   "address": 106,
   "type": "line",
   "text": "1 while a bug is on the view"
  },
  {
   "address": 109,
   "type": "line",
   "text": "up to ten key codes, oldest first"
  },
  {
   "address": 119,
   "type": "line",
   "text": "when not zero, the attribute every drawing routine uses instead of the image's own; the map's beacon cells use $C0 here"
  },
  {
   "address": 120,
   "type": "line",
   "text": "1 from zp_image, and nothing writes it: scan_keys repeats held keys"
  },
  {
   "address": 122,
   "type": "line",
   "text": "the length of the name typed at a doorway"
  },
  {
   "address": 123,
   "type": "line",
   "text": "the name typed at a doorway, up to 32 characters"
  },
  {
   "address": 156,
   "type": "line",
   "text": "what swap_buffers sets the video chip to: 1 extended-colour text (the view from above), 2 hires bitmap (the ground)"
  },
  {
   "address": 157,
   "type": "line",
   "text": "1 while the ground view is drawn for a landing, so no bug appears in it"
  },
  {
   "address": 158,
   "type": "line",
   "text": "the time left on tone_wait's tone (with $9F), counted down by the interrupt"
  },
  {
   "address": 2048,
   "type": "line",
   "text": "the two bytes before the game's entry: $0800 is the zero BASIC needs before a program, and $0801-$0802 hold the start of the backup's BASIC line, which Triad's crack has as other values; the game never reads them"
  },
  {
   "address": 2051,
   "type": "line",
   "text": "the game's entry, where the release's loader jumps: sets up the machine (init_machine), shows the title until a key or fire (wait_key), zooms the planet in (zoom_in) and picks the start position at random from the raster line; then flies the opening pass over the map with the map loop's key reading switched off (the RTS stored at $2847), puts fragment 1 at 160 east and 144 north of the start position (the pass scrolls only the map's edges, not the position), and lands at the centre of the map the pass ended on (go_down at height 8), which on jungle or water is a crash"
  },
  {
   "address": 2122,
   "type": "line",
   "text": "the opening fly-over: 80 steps, each scrolling the map one cell north (scroll_north); at step 40 the screen shakes (shake), and a key pressed meanwhile (key_get) also scrolls it one cell east when its code is even (8, for one) or west when it is odd (5)"
  },
  {
   "address": 2148,
   "type": "line",
   "text": "restores the JSR at $2847, so the map loop reads keys again"
  },
  {
   "address": 2226,
   "type": "line",
   "text": "shakes the screen ten times: the fine-scroll bits of $D016 set to 7 and those of $D011 to 0, then $D016's back to 0 and $D011's back to their usual 7, with delay_short between, and the map scrolled north at each pass"
  },
  {
   "address": 2271,
   "type": "line",
   "text": "swaps attribute bytes on the screen on show, all four pages: each byte equal to tmp2 becomes tmp3 and the reverse, and each equal to tmp4 becomes tmp5 and the reverse; then waits three times delay_short. hud_twinkle calls it with $9C/$C9 and $72/$27"
  },
  {
   "address": 2339,
   "type": "line",
   "text": "a delay loop of 14 x 256 passes, about 18,000 cycles"
  },
  {
   "address": 2350,
   "type": "line",
   "text": "sets the horizontal fine scroll ($D016 bits 0-2) to 0"
  },
  {
   "address": 2359,
   "type": "line",
   "text": "sets the horizontal fine scroll to 7"
  },
  {
   "address": 2368,
   "type": "line",
   "text": "sets the vertical fine scroll ($D011 bits 0-2) to 0"
  },
  {
   "address": 2377,
   "type": "line",
   "text": "sets the vertical fine scroll to 7"
  },
  {
   "address": 2386,
   "type": "line",
   "text": "plays a tone on voice 3 and waits for it to end: frequency from we, length in interrupts from wc, which the interrupt counts down in tone_time; the sonar's pings and their echoes. Silences the SID first (sid_reset)"
  },
  {
   "address": 2438,
   "type": "line",
   "text": "the interrupt's countdown of tone_time, by one each interrupt, until it reaches zero"
  },
  {
   "address": 2451,
   "type": "line",
   "text": "waits for a key and returns its code in A; while there is none it saves zero page $09-$13, lets the head-up display twinkle (hud_twinkle) and a bug move (bug_move), and puts them back. Clicks (key_click) when a key comes"
  },
  {
   "address": 2477,
   "type": "line",
   "text": "copies zero page $09-$13 to saved_work"
  },
  {
   "address": 2489,
   "type": "line",
   "text": "copies saved_work back to zero page $09-$13"
  },
  {
   "address": 2501,
   "type": "line",
   "text": "eleven bytes where save_work keeps zero page $09-$13 while wait_key runs other routines"
  },
  {
   "address": 2512,
   "type": "line",
   "text": "the RTS bug_move's early exits share"
  },
  {
   "address": 2513,
   "type": "line",
   "text": "moves the bug one step while the game waits for a key, if one is out (bug_active): the low four bits of the raster line pick the step (bit 0 right, bit 1 left, bit 2 up, bit 3 down; the values 0, 3, 12 and 15 make it stay); it restores the background under the old position from the screen on show (restore_cell, six cells), redraws the bug (bug_image) at the new one and the gun sight over it, and swaps the screens"
  },
  {
   "address": 2702,
   "type": "line",
   "text": "the start-up: copies zero page's first values from zp_image, clears colour RAM, copies the character set to the second bank, sets CIA 2 for VIC bank 3, sets the screen and charset pointers, turns the bitmap on, sets the background colours for extended-colour text (5, 7, 3 and 2), blacks the border, points the interrupt at irq and the NMI at an RTI, and enables interrupts"
  },
  {
   "address": 2813,
   "type": "line",
   "text": "silences the SID: clears its 24 registers and sets the volume to 15"
  },
  {
   "address": 2833,
   "type": "line",
   "text": "the interrupt, from CIA 1's timer: counts the tone down (tone_tick), scans the keyboard and joystick (scan_keys), acknowledges CIA 1 and returns"
  },
  {
   "address": 2852,
   "type": "line",
   "text": "the RTI the NMI vector points at, so RESTORE does nothing"
  },
  {
   "address": 2853,
   "type": "line",
   "text": "reads the keyboard matrix and joystick port 2 once an interrupt: finds the key held down (keymap gives its code, keymap_shifted when a shift key is held), and with no key the joystick (joy_codes). A new key goes into key_buffer at once; a key held down is added again after 16 interrupts and then every fourth interrupt, each time only if the buffer is empty. The branch for key_repeat_on clear, which would add a held key every interrupt, never runs: nothing changes it from 1"
  },
  {
   "address": 3023,
   "type": "line",
   "text": "no key is down: reads joystick port 2 through $DC00 and turns its direction and fire bits into a key code (joy_codes)"
  },
  {
   "address": 3045,
   "type": "line",
   "text": "32 key codes indexed by the joystick's five bits, read active-high: up gives '7' (forward, north), down '6' (about turn, south), left '5', right '8', fire 'F'; diagonals take up or down, up and down together give '7', the other combinations without fire give 'B', and every combination with fire gives 'F'"
  },
  {
   "address": 3077,
   "type": "line",
   "text": "the key code for each of the 64 keyboard matrix positions, scanned from column 0 ($DC00 = $FE) row by row, upper case; 1 marks a shift key, $3F a key with no code, $FF the end"
  },
  {
   "address": 3142,
   "type": "line",
   "text": "the same 65 entries with a shift key held: lower-case letters and the shifted punctuation"
  },
  {
   "address": 3207,
   "type": "line",
   "text": "copies zp_image to zero page, all 256 bytes ($00 and $01 included, which set the processor port to $2F/$05: RAM with the I/O area)"
  },
  {
   "address": 3218,
   "type": "line",
   "text": "the 256 bytes zp_init copies to zero page at start; the first 160 set the game's variables: energy 40,000 ($43), key repeat on ($78), the drawing page $40, empty fix and nearest results; the last 96 are the bytes after the table (the doorway code at $0D32 and its strings), which land in zero page $A0-$FF unused"
  },
  {
   "address": 3378,
   "type": "line",
   "text": "the explorer has walked into a doorway: draws a window, \"Enter doorway\" and \"(other keys skip)\", and waits for a key: E goes through (enter_doorway), any other key redraws the view"
  },
  {
   "address": 3441,
   "type": "line",
   "text": "\"Enter doorway\", zero-terminated"
  },
  {
   "address": 3455,
   "type": "line",
   "text": "\"(other keys skip)\""
  },
  {
   "address": 3473,
   "type": "line",
   "text": "\"Name the spot you wish to go to:\" and eight spaces"
  },
  {
   "address": 3514,
   "type": "line",
   "text": "the test for the end of the game: if all nine fragments' positions (fragments) equal the explorer's grid cell, draws a window with \"WOW, YOU DID IT!\" and stops there for good; otherwise returns at the first that differs"
  },
  {
   "address": 3598,
   "type": "line",
   "text": "the game's end: a jump to itself, with the win message on the screen"
  },
  {
   "address": 3601,
   "type": "line",
   "text": "\"WOW, YOU DID IT!\""
  },
  {
   "address": 3618,
   "type": "line",
   "text": "the RTS check_win returns by when a fragment is elsewhere"
  },
  {
   "address": 3619,
   "type": "line",
   "text": "the doorway's trip, also where a crash or running out of energy sends the explorer: draws the destination prompt (str_name_spot), reads a name (read_name), and turns it into a position. East: from 0, for each letter in order, add the letter, then rotate the 16 bits and the carry of that sum left five times; north: the same, over name_buf backwards from the zero after the name down to its second letter. HOME goes to 48,356 east and 48,609 north, in every game. Then works out an energy change (the name's length less 8, times 512, less a quarter of the distance gone, east plus north) but jumps past the store either way, so the trip costs nothing; then draws the ground there"
  },
  {
   "address": 3906,
   "type": "line",
   "text": "unreached: the store of the doorway's energy change into energy (lda we, sta energy, lda we_hi, sta energy_hi), which both branches before it jump over"
  },
  {
   "address": 3914,
   "type": "line",
   "text": "the other branch of the doorway's energy test, to the same place as the first"
  },
  {
   "address": 3917,
   "type": "line",
   "text": "fills the screen on show (draw_page EOR $80), 480 two-byte steps from $00, with the pair $27, $72, so that its colours come out in stripes"
  },
  {
   "address": 3965,
   "type": "line",
   "text": "reads a name into name_buf: up to 32 characters, letters folded to upper case, DEL rubs one out, RETURN ends; each character is drawn at input_col, input_row as it is typed"
  },
  {
   "address": 4068,
   "type": "line",
   "text": "prints name_buf at the input position (print_string)"
  },
  {
   "address": 4088,
   "type": "line",
   "text": "prints the compass bearing on the ground view at column 36, row 1, as three digits: v = (320 - 4 x heading) mod 256 is the heading clockwise from north in 256ths of a circle; t = 7v/8, and the degrees are t + t/2 + t/16 + t/32, each part rounded down. That is about 1.395 v where a circle needs 1.406 v: 0 for north, 88 for east, 178 for south, 267 for west, 349 one step west of north"
  },
  {
   "address": 4217,
   "type": "line",
   "text": "saves the three colour cells at screen offset $4C and the 24 bitmap bytes behind them, from the screen on show, into compass_cells"
  },
  {
   "address": 4259,
   "type": "line",
   "text": "puts back what save_compass_cells saved, into the screen on show"
  },
  {
   "address": 4301,
   "type": "line",
   "text": "three colour cells and 24 bitmap bytes kept by save_compass_cells"
  },
  {
   "address": 4304,
   "type": "line",
   "text": "compass_cells's 24 bitmap bytes, after its three colour bytes"
  },
  {
   "address": 4328,
   "type": "line",
   "text": "divides the byte in we by the byte in wb, we_hi zero on entry, by eight steps of shift and subtract: the quotient goes into we and the remainder into we_hi; wb_hi counts the steps"
  },
  {
   "address": 4351,
   "type": "line",
   "text": "draws the scenery of one grid cell around the explorer, at horizon column A + 4: finds the ground at the probe (terrain_at), takes the scenery list for its kind (scenery_list_for), seeds the random bytes with the ground's height, and draws a chain of objects: a list's first byte counts its entries, and the entry used is a random byte mixed with the random bytes' new values, modulo the count (divide_8), plus one, or the first once three objects are drawn; each object drawn names the list its successor comes from (draw_object), and an entry of 0 ends the chain. The same place therefore always shows the same objects. Then the doorway, when the cell's last layer sum ends in the byte 12, and a beacon, when one has been dropped within 8 units of the probe"
  },
  {
   "address": 4483,
   "type": "line",
   "text": "after the objects: a cell whose last layer sum has the low byte 12 is a doorway, drawn in front of the explorer (draw_doorway)"
  },
  {
   "address": 4492,
   "type": "line",
   "text": "a dropped beacon within 8 units of the probe is drawn in front of the explorer (draw_beacon)"
  },
  {
   "address": 4501,
   "type": "line",
   "text": "draws the doorway, the flashing striped patch doorway_image, at column 17, row 20, with its own attribute ($F2, flashing red on yellow) forced on every cell"
  },
  {
   "address": 4529,
   "type": "line",
   "text": "draws beacon_image at column 24, row 20, with its own attributes forced"
  },
  {
   "address": 4557,
   "type": "line",
   "text": "draws fragment number tmp9: its image from fragment_images, at column 5 and row 22 moved by its pair in fragment_offsets, so that the fragments in one cell pile up at the bottom left"
  },
  {
   "address": 4591,
   "type": "line",
   "text": "the address of each of the nine fragments' pictures, 2 x 2 cells each, from $B728 to $B868 in steps of 40 bytes"
  },
  {
   "address": 4592,
   "type": "line",
   "text": "fragment_images's high bytes, read one byte on"
  },
  {
   "address": 4609,
   "type": "line",
   "text": "a column and a row offset for each fragment's place in the pile: (0,-6), (2,-5), (0,-4), (2,-3), (0,-2), (2,-1), (0,0), (2,0), (1,-7)"
  },
  {
   "address": 4610,
   "type": "line",
   "text": "fragment_offsets's rows, read one byte on"
  },
  {
   "address": 4627,
   "type": "line",
   "text": "draws every fragment whose position (fragments) is the explorer's grid cell, with a short sound (sfx_fragment) for each"
  },
  {
   "address": 4696,
   "type": "line",
   "text": "draws the view on the ground into the hidden screen: takes 15 from energy (energy_spend); rounds the position to the grid (cell_x, cell_y); clears the bitmap; colours 17 rows of sky and 4 of ground; draws the distant hills (hill_columns); draws the scenery of the 16 cells two cells away and then of the 8 cells one away, each at its compass column relative to the heading (draw_scenery_at), with three rows of near ground between; then the explorer's own cell: a beacon, a fragment (the first sight of each adds one to the score and its digit to the Found list), the fragments lying there, and, unless landing or a bug is out, a new bug at random, more likely as the score rises"
  },
  {
   "address": 4758,
   "type": "line",
   "text": "the far ring is drawn with scene_near 0, the near one with 2"
  },
  {
   "address": 4784,
   "type": "line",
   "text": "the distant hills, 64 columns round the horizon of which the 40 facing the heading show: the height of hill i is entry 4i of terrain_profile divided by 32, drawn as a stack of that many cells under a crest (hill_images) ending at row 17. The skyline is the same everywhere on the planet and turns only with the heading"
  },
  {
   "address": 4915,
   "type": "line",
   "text": "the far ring: from two cells north, round the square of cells two away, 16 cells, each four columns further round the horizon"
  },
  {
   "address": 5044,
   "type": "line",
   "text": "three rows of near ground (attribute $60, bright green) at rows 21-23, then the near ring, the 8 cells next to the explorer's, eight columns apart"
  },
  {
   "address": 5130,
   "type": "line",
   "text": "the explorer's own cell: a beacon there, and the fragments"
  },
  {
   "address": 5152,
   "type": "line",
   "text": "a fragment within 8 units of the cell (fragment_at_probe, which numbers them 1-9): the first time, its digit goes into the Found list, one place after the colon for fragment 1, and the score goes up by one"
  },
  {
   "address": 5174,
   "type": "line",
   "text": "a new bug, only if none is out and the view is not a landing: one appears when the raster line's low byte is below score + 1, so more often as the score rises; its picture is one of bug_images (a random byte divided by 5, the remainder), its place in columns 3-34 and rows 4-19 from the raster line, and the weapons mode starts at once (weapons)"
  },
  {
   "address": 5304,
   "type": "line",
   "text": "the addresses of the five bug pictures, $4980 to $4A70 in steps of 60 bytes"
  },
  {
   "address": 5314,
   "type": "line",
   "text": "the picture of the bug that is out (with $14C3)"
  },
  {
   "address": 5315,
   "type": "line",
   "text": "bug_image's high byte"
  },
  {
   "address": 5316,
   "type": "line",
   "text": "the bug's column on the screen"
  },
  {
   "address": 5317,
   "type": "line",
   "text": "the bug's row"
  },
  {
   "address": 5318,
   "type": "line",
   "text": "the picture of the gun's sight, sight_picture at $4AAC (with $14C7)"
  },
  {
   "address": 5319,
   "type": "line",
   "text": "sight_image's high byte"
  },
  {
   "address": 5320,
   "type": "line",
   "text": "the sight's column, 12 at the start"
  },
  {
   "address": 5321,
   "type": "line",
   "text": "the sight's row, 19 at the start"
  },
  {
   "address": 5322,
   "type": "line",
   "text": "moves the probe 16 units east (probe_x up), and returns the heading in A with the carry clear for the caller to add a column to"
  },
  {
   "address": 5326,
   "type": "line",
   "text": "moves the probe 16 units west"
  },
  {
   "address": 5330,
   "type": "line",
   "text": "moves the probe 16 units north"
  },
  {
   "address": 5334,
   "type": "line",
   "text": "moves the probe 16 units south"
  },
  {
   "address": 5369,
   "type": "line",
   "text": "the ground's main loop: draws and shows the view, then waits for a key: 8 turns right, 5 left (two steps of 64 each), 6 turns about, 7 walks, U takes off; every other key opens the menu"
  },
  {
   "address": 5419,
   "type": "line",
   "text": "walking: steps forward (step_forward) until a key comes or a step is blocked (step_forward then bumps and goes back to ground_loop); 8 and 5 turn while walking, 7 steps again, any other key stops"
  },
  {
   "address": 5451,
   "type": "line",
   "text": "the step stands: the end-of-game and doorway tests, and the view at the new position (after_step), then the walking zoom (walk_zoom)"
  },
  {
   "address": 5463,
   "type": "line",
   "text": "turning while walking: redraws the view and walks on"
  },
  {
   "address": 5472,
   "type": "line",
   "text": "8 while walking: turns right two steps"
  },
  {
   "address": 5484,
   "type": "line",
   "text": "5 while walking: turns left two steps"
  },
  {
   "address": 5496,
   "type": "line",
   "text": "8 standing: turns right two steps"
  },
  {
   "address": 5508,
   "type": "line",
   "text": "5 standing: turns left two steps"
  },
  {
   "address": 5520,
   "type": "line",
   "text": "6: turns about, 32 steps"
  },
  {
   "address": 5532,
   "type": "line",
   "text": "17 values of 16 x sine for the angles 0 to 90 degrees in steps of 5.625 (0, 2, 3, 5, ... 16): the step forward for each heading"
  },
  {
   "address": 5549,
   "type": "line",
   "text": "the step of 16 units for heading A (0-63, counter-clockwise from east): returns the east step in wc and the north step in wc_hi, signed, from sine_table by quadrant"
  },
  {
   "address": 5677,
   "type": "line",
   "text": "one step of 16 units along the heading (heading_step). Before it stands, the attribute of the cell at row 3, column 19 of the view on show is compared with $30 (black on yellow): if they match, something stands in the way, so the old position is kept, a bump sounds (sfx_bump) and the view is redrawn; otherwise the step stands (after_step)"
  },
  {
   "address": 5814,
   "type": "line",
   "text": "after a step: checks for the end of the game (check_win), then whether the cell at row 19, column 19 of the view on show has the doorway's attribute ($F2); if so asks about the doorway (doorway_prompt), otherwise draws the view at the new position"
  },
  {
   "address": 5844,
   "type": "line",
   "text": "redraws the view and returns"
  },
  {
   "address": 5848,
   "type": "line",
   "text": "E at the doorway: a sound (sfx_doorway), two fades, then drops the return address and goes to the destination prompt (name_destination)"
  },
  {
   "address": 5862,
   "type": "line",
   "text": "unreached: 66 bytes of code no instruction calls or jumps to, which would copy the view's colours between the two screens (from $4000 to $C028 and $40E6 to $C10E, or the other way when draw_page is $C0)"
  },
  {
   "address": 5928,
   "type": "line",
   "text": "U on the ground: puts the compass cells back, a rising sound, and 18 steps of the view sliding down one row with a row of sky added at the top (scroll_down), the pitch going up three each step; takes 100 from energy and goes up to the view from above (fly)"
  },
  {
   "address": 6001,
   "type": "line",
   "text": "\"Impossible\""
  },
  {
   "address": 6012,
   "type": "line",
   "text": "\"Not dropped\""
  },
  {
   "address": 6024,
   "type": "line",
   "text": "\"Out of range\""
  },
  {
   "address": 6037,
   "type": "line",
   "text": "\"Objects\", the menu's first line"
  },
  {
   "address": 6045,
   "type": "line",
   "text": "\"Beacons\""
  },
  {
   "address": 6053,
   "type": "line",
   "text": "\"Weapons\""
  },
  {
   "address": 6061,
   "type": "line",
   "text": "\"Energy\", with six spaces that menu fills with the energy left"
  },
  {
   "address": 6067,
   "type": "line",
   "text": "the six places menu fills with the energy left"
  },
  {
   "address": 6074,
   "type": "line",
   "text": "\"Score\", with three spaces for the score"
  },
  {
   "address": 6080,
   "type": "line",
   "text": "the three places menu fills with the score"
  },
  {
   "address": 6084,
   "type": "line",
   "text": "\"Echo nearest\", the objects menu"
  },
  {
   "address": 6097,
   "type": "line",
   "text": "\"Send to beacon\""
  },
  {
   "address": 6112,
   "type": "line",
   "text": "\"Found:\" and nine spaces, where the digits of the fragments seen go"
  },
  {
   "address": 6117,
   "type": "line",
   "text": "the Found list's place in str_found: fragment n's digit goes n places after the colon here"
  },
  {
   "address": 6128,
   "type": "line",
   "text": "\"Drop beacon\", the beacons menu"
  },
  {
   "address": 6140,
   "type": "line",
   "text": "\"Pick up beacon\""
  },
  {
   "address": 6155,
   "type": "line",
   "text": "\"Fix 3 nearest\""
  },
  {
   "address": 6169,
   "type": "line",
   "text": "\"Carried:012345678\", the digits of the beacons carried, each replaced by a space when it is dropped"
  },
  {
   "address": 6187,
   "type": "line",
   "text": "\"<arrows>\", the weapons mode's first line"
  },
  {
   "address": 6196,
   "type": "line",
   "text": "\"Fire\""
  },
  {
   "address": 6201,
   "type": "line",
   "text": "\"graphics: Simon Dunstan\", shown by X in the menu"
  },
  {
   "address": 6225,
   "type": "line",
   "text": "\" program: Graham Relf\""
  },
  {
   "address": 6246,
   "type": "line",
   "text": "the row tables are read from one byte before their start by the map's tile drawing (draw_map_tile), which adds 1 to the row"
  },
  {
   "address": 6247,
   "type": "line",
   "text": "the low byte of each text row's offset in a screen, row x 40, rows 0-24 (with row_offset_hi)"
  },
  {
   "address": 6267,
   "type": "line",
   "text": "the low bytes of rows 20-24, the last of row_offset_lo"
  },
  {
   "address": 6271,
   "type": "line",
   "text": "row_offset_hi read one byte before, by draw_map_tile"
  },
  {
   "address": 6272,
   "type": "line",
   "text": "the high byte of each text row's offset"
  },
  {
   "address": 6292,
   "type": "line",
   "text": "the high bytes of rows 20-24, the last of row_offset_hi"
  },
  {
   "address": 6297,
   "type": "line",
   "text": "the head-up display's menu (any key on the ground but the moves): a window with Objects, Beacons, Weapons, the energy left and the score; then O opens the objects menu, B the beacons menu, W the weapons, X the credits, any other key closes it"
  },
  {
   "address": 6482,
   "type": "line",
   "text": "the objects menu: Echo nearest, Send to beacon, and the Found list; E echoes, S sends, any other key closes"
  },
  {
   "address": 6568,
   "type": "line",
   "text": "the sonar: a ping (tone_wait), then finds the nearest fragment (nearest_fragment); if it is within 1,279 units (the high byte of its distance below 5) a low tone lasts a quarter of the distance in interrupts and the echo sounds after it. Then its bearing in degrees in a window, and \"Out of range\" under it when there was no echo"
  },
  {
   "address": 6721,
   "type": "line",
   "text": "\"To which beacon?\""
  },
  {
   "address": 6738,
   "type": "line",
   "text": "the number of the fragment send_to_beacon is sending"
  },
  {
   "address": 6739,
   "type": "line",
   "text": "sends the fragment lying in the explorer's cell to a beacon, the anti-grav drone: \"Impossible\" when none lies there; asks \"To which beacon?\" and takes a digit 0-8; \"Impossible\" for any other key, \"Not dropped\" for a beacon still carried, \"Out of range\" when the beacon is 16,384 units or more away (the sum of the distances east and north); otherwise the fragment's position becomes the beacon's, 1,000 is taken from energy, and the view is redrawn with a sound (sfx_drone)"
  },
  {
   "address": 6956,
   "type": "line",
   "text": "the beacons menu: Drop beacon, Pick up beacon, Fix 3 nearest, and the Carried list; D, P and F choose"
  },
  {
   "address": 7068,
   "type": "line",
   "text": "drops the lowest-numbered beacon still carried at the explorer's grid cell (place_beacon); \"Impossible\" when all nine are down"
  },
  {
   "address": 7128,
   "type": "line",
   "text": "picks up a dropped beacon within 32 units each way (take_beacon); \"Impossible\" when there is none"
  },
  {
   "address": 7139,
   "type": "line",
   "text": "the line fix_beacons prints for each beacon: its digit, its distance, \"m.\", its bearing and \"degrees\""
  },
  {
   "address": 7165,
   "type": "line",
   "text": "Fix 3 nearest: finds the three nearest dropped beacons (find_three_beacons) and prints a line for each, the nearest on the last line: its number, its distance in metres (the sum of the distances east and north) and its bearing in degrees (bearing_of, wrong in the south-west quarter)"
  },
  {
   "address": 7380,
   "type": "line",
   "text": "prints fix_line at the row in we_hi, column 2"
  },
  {
   "address": 7392,
   "type": "line",
   "text": "writes the number in we as six characters (number_to_text) into the string at wc"
  },
  {
   "address": 7425,
   "type": "line",
   "text": "waits for a key, then closes the window"
  },
  {
   "address": 7428,
   "type": "line",
   "text": "wipes the window (restore_view)"
  },
  {
   "address": 7431,
   "type": "line",
   "text": "a window with \"Impossible\", then a key closes it"
  },
  {
   "address": 7448,
   "type": "line",
   "text": "prints the message at wc in the window's first line, waits for a key and closes it"
  },
  {
   "address": 7462,
   "type": "line",
   "text": "a window with \"Not dropped\""
  },
  {
   "address": 7482,
   "type": "line",
   "text": "\"Out of range\" on the window's second line"
  },
  {
   "address": 7501,
   "type": "line",
   "text": "X in the menu: a window with \"program: Graham Relf\" and \"graphics: Simon Dunstan\""
  },
  {
   "address": 7540,
   "type": "line",
   "text": "rewrites the digits of the Carried list: each beacon's digit if it is carried, a space if it is down; then redraws the view and sounds sfx_drop"
  },
  {
   "address": 7612,
   "type": "line",
   "text": "six characters number_to_text writes a number into, right-aligned; the last three also serve as the score's and the key's place"
  },
  {
   "address": 7615,
   "type": "line",
   "text": "number_text's last three characters, where menu takes the score from"
  },
  {
   "address": 7617,
   "type": "line",
   "text": "the digit typed for send_to_beacon, printed after the question"
  },
  {
   "address": 7619,
   "type": "line",
   "text": "writes the 16-bit number in we as decimal into number_text, right-aligned in spaces: takes digits off by divide_10, then a second pass carries any digit that came out as 10"
  },
  {
   "address": 7709,
   "type": "line",
   "text": "divides we by ten by multiplying it by a binary fraction near one tenth: the quotient in we, the remainder in A and tmp9. For one value in ten the quotient comes out one too low and the remainder 10 more (6,553 of the 65,536 values), which number_to_text corrects"
  },
  {
   "address": 7861,
   "type": "line",
   "text": "shows the hidden screen (swap_buffers), keeps what lies under the compass (save_compass_cells) and prints the compass (draw_compass)"
  },
  {
   "address": 7870,
   "type": "line",
   "text": "drops beacon A, if it is carried: writes the explorer's grid cell as its position and the bytes in wb ($10, $27) after it, which mark it down; returns A 0, or 1 when the beacon was down already"
  },
  {
   "address": 7916,
   "type": "line",
   "text": "picks up the first dropped beacon within 32 units of the grid cell each way: its last byte becomes $FF (carried); returns A 0, or 1 when there is none"
  },
  {
   "address": 8025,
   "type": "line",
   "text": "finds a fragment within 8 units of the probe each way: returns its number counted from 1 (1-9) with Z set, or Y = 1 and Z clear when there is none"
  },
  {
   "address": 8070,
   "type": "line",
   "text": "finds a dropped beacon within 8 units of the probe each way: returns its number with Z set, or Z clear when there is none"
  },
  {
   "address": 8124,
   "type": "line",
   "text": "the distance east-west from the probe to the record at ptr, less 8: carry set when it is under 8"
  },
  {
   "address": 8146,
   "type": "line",
   "text": "the same north-south"
  },
  {
   "address": 8187,
   "type": "line",
   "text": "finds the three nearest dropped beacons to the grid cell: three passes over the nine, each taking the nearest (by the sum of the distances east and north) not already taken, with its distance, number and bearing (bearing_to); fix_dist, fix_bearing and fix_index hold the result of each pass, moved up five bytes after it"
  },
  {
   "address": 8431,
   "type": "line",
   "text": "finds the fragment nearest the grid cell, by the sum of the distances east and north: its distance in near_dist, its number in near_index and its bearing in degrees (bearing_to) in near_bearing"
  },
  {
   "address": 8595,
   "type": "line",
   "text": "the bearing in degrees from the grid cell to the record at ptr (bearing_of)"
  },
  {
   "address": 8669,
   "type": "line",
   "text": "the nine beacons, six bytes each: east and north position (16 bits each), then two bytes: $FF $FF while it is carried, $10 $27 once it is dropped; all nine are carried at the start"
  },
  {
   "address": 8723,
   "type": "line",
   "text": "the nine fragments of the spacecraft, four bytes each: east and north position, 16 bits each, in the order the game numbers them 1 to 9. Fragment 1's is set 160 east and 144 north of the start; the other eight are fixed, the same in every game"
  },
  {
   "address": 8724,
   "type": "line",
   "text": "fragment 1's east position, high byte (set at the start)"
  },
  {
   "address": 8725,
   "type": "line",
   "text": "fragment 1's north position, low byte"
  },
  {
   "address": 8726,
   "type": "line",
   "text": "fragment 1's north position, high byte, then fragments 2-9 at $2217-$2236"
  },
  {
   "address": 8759,
   "type": "line",
   "text": "copies 30 pages of bitmap between the screens with the copy loop at $227C, its addresses set from draw_page"
  },
  {
   "address": 8785,
   "type": "line",
   "text": "copies the screen on show's colours (960 bytes) into the hidden screen with the same loop"
  },
  {
   "address": 8828,
   "type": "line",
   "text": "the copy loop: its load and store addresses (copy_from, copy_to) are written by its callers"
  },
  {
   "address": 8829,
   "type": "line",
   "text": "the address the copy loop reads (the operand of the LDA at $227C)"
  },
  {
   "address": 8830,
   "type": "line",
   "text": "copy_from's high byte"
  },
  {
   "address": 8832,
   "type": "line",
   "text": "the address the copy loop writes (the operand of the STA at $227F)"
  },
  {
   "address": 8833,
   "type": "line",
   "text": "copy_to's high byte, which copy_bitmap and copy_screen set"
  },
  {
   "address": 8847,
   "type": "line",
   "text": "copies the screen on show, bitmap and colours, into the hidden one, so the next window is drawn over the same view"
  },
  {
   "address": 8877,
   "type": "line",
   "text": "copies the hidden screen, which holds the view without the window, over the screen on show (copy_shown_to_hidden with the pages swapped round), wiping the window drawn there"
  },
  {
   "address": 8886,
   "type": "line",
   "text": "points ptr at beacon A's record (beacons + 6 x A)"
  },
  {
   "address": 8905,
   "type": "line",
   "text": "points ptr at the record of the fragment the game numbers A + 1 (fragments + 4 x A)"
  },
  {
   "address": 8919,
   "type": "line",
   "text": "opens a window at the top left of the view on show: attribute A, X cells wide and Y high inside; wipes any window there, draws a frame one cell wide round it (draw_frame) and fills the inside (fill_window); text in it is printed with its colour kept ($C0)"
  },
  {
   "address": 8951,
   "type": "line",
   "text": "takes wc from energy; if the energy would go below zero it drops two return addresses, says \"Energy gone\", sets the energy to 2,000 and sends the explorer to the doorway's destination prompt (name_destination)"
  },
  {
   "address": 8974,
   "type": "line",
   "text": "\"Energy gone\""
  },
  {
   "address": 8986,
   "type": "line",
   "text": "the energy has run out: drops energy_spend's caller and its caller, says \"Energy gone\", waits for a key and starts again at the destination prompt (name_destination) with 2,000"
  },
  {
   "address": 9034,
   "type": "line",
   "text": "W in the menu: the weapons mode (weapons), then the view again"
  },
  {
   "address": 9040,
   "type": "line",
   "text": "the weapons mode, which a bug starts and W in the menu opens: a window with \"<arrows>\" and \"Fire\"; the sight is drawn on the view and moved by 5, 8, 7 and 6 (left, right, up, down, kept inside columns 2-37 and rows 2-21), F fires (fire_laser); any other key leaves, but not while a bug is out"
  },
  {
   "address": 9159,
   "type": "line",
   "text": "the bug is gone (or there was none): clears bug_active, redraws the view and empties the key buffer"
  },
  {
   "address": 9171,
   "type": "line",
   "text": "5: the sight one column left, after putting back the cell under it (restore_cell)"
  },
  {
   "address": 9196,
   "type": "line",
   "text": "8: the sight one column right"
  },
  {
   "address": 9221,
   "type": "line",
   "text": "6: the sight one row down"
  },
  {
   "address": 9246,
   "type": "line",
   "text": "7: the sight one row up"
  },
  {
   "address": 9271,
   "type": "line",
   "text": "fires: the screen flashes red (flash_screen), a red square of 5 x 5 cells and then a square of 3 x 3 in a random colour are drawn round the sight, with the laser's sound; 500 is taken from energy. With no bug out the mode ends; a bug is hit when the sight's column is the bug's or one right of it and its row is the bug's or up to two above, and then it is gone; a miss puts the view back, redraws the bug and goes on aiming. The bug itself takes no energy: it holds the explorer in this mode until it is hit, and each shot costs 500"
  },
  {
   "address": 9434,
   "type": "line",
   "text": "bug_move's step one column right (bug_step)"
  },
  {
   "address": 9441,
   "type": "line",
   "text": "one column left"
  },
  {
   "address": 9448,
   "type": "line",
   "text": "one row up"
  },
  {
   "address": 9455,
   "type": "line",
   "text": "one row down"
  },
  {
   "address": 9466,
   "type": "line",
   "text": "moves the bug by wc (columns) and wc_hi (rows) from the place in we, if the new place is inside columns 0-35 and rows 3-22: then it goes into bug_col, bug_row, with the old place in wc; otherwise we keeps the old place"
  },
  {
   "address": 9526,
   "type": "line",
   "text": "copies one cell, its colour and its eight bitmap bytes, at column we, row we_hi from the hidden screen to the one on show: wipes what was drawn there on the screen on show"
  },
  {
   "address": 9599,
   "type": "line",
   "text": "fills the colours of the screen on show with $2A (red on light red), 961 bytes"
  },
  {
   "address": 9642,
   "type": "line",
   "text": "a delay of X x 256 passes of a loop of additions"
  },
  {
   "address": 9655,
   "type": "line",
   "text": "the crash's sound: noise on voice 1 through the filter"
  },
  {
   "address": 9699,
   "type": "line",
   "text": "a beacon dropped or picked up: a sawtooth on voice 1 warbling up and down 20 times"
  },
  {
   "address": 9770,
   "type": "line",
   "text": "a safe landing's sound: voices 1 and 3 ring-modulated"
  },
  {
   "address": 9819,
   "type": "line",
   "text": "a fragment sent to a beacon: voices 1 and 3 ring-modulated, higher"
  },
  {
   "address": 9868,
   "type": "line",
   "text": "the sound as the view from above comes up"
  },
  {
   "address": 9922,
   "type": "line",
   "text": "the laser: voice 1 ring-modulated by voice 3, both stepped to the raster line 200 times"
  },
  {
   "address": 9984,
   "type": "line",
   "text": "unreached: 68 bytes of code no instruction calls or jumps to, a sound like sfx_drop that warbles from a higher pitch downwards"
  },
  {
   "address": 10052,
   "type": "line",
   "text": "going through a doorway: a pulse wave on voice 2 whose width falls in 16 steps"
  },
  {
   "address": 10089,
   "type": "line",
   "text": "the click of a key taken: a short triangle note on voice 2"
  },
  {
   "address": 10120,
   "type": "line",
   "text": "a step blocked: a short noise on voice 1"
  },
  {
   "address": 10149,
   "type": "line",
   "text": "a fragment in view: ring-modulated voices 1 and 3"
  },
  {
   "address": 10183,
   "type": "line",
   "text": "taking off: voice 1 ring-modulated by voice 3, whose pitch take_off then raises"
  },
  {
   "address": 10207,
   "type": "line",
   "text": "the width of the view from above in map cells, 20"
  },
  {
   "address": 10208,
   "type": "line",
   "text": "its height in map cells, 12"
  },
  {
   "address": 10209,
   "type": "line",
   "text": "the east-west position of the map's west edge (with $27E2)"
  },
  {
   "address": 10210,
   "type": "line",
   "text": "map_west's high byte"
  },
  {
   "address": 10211,
   "type": "line",
   "text": "the north-south position of its south edge (with $27E4)"
  },
  {
   "address": 10212,
   "type": "line",
   "text": "map_south's high byte"
  },
  {
   "address": 10213,
   "type": "line",
   "text": "draw_map's working copies of the map's edges, the position of the row being drawn"
  },
  {
   "address": 10214,
   "type": "line",
   "text": "map_row_x's high byte"
  },
  {
   "address": 10215,
   "type": "line",
   "text": "the north-south position of the map row being drawn (with $27E8)"
  },
  {
   "address": 10216,
   "type": "line",
   "text": "map_row_y's high byte"
  },
  {
   "address": 10217,
   "type": "line",
   "text": "the distance east-west between map cells (with $27EA): 16 at the lower height, 32 at the upper"
  },
  {
   "address": 10218,
   "type": "line",
   "text": "map_step_x's high byte"
  },
  {
   "address": 10219,
   "type": "line",
   "text": "the distance north-south between map cells (with $27EC)"
  },
  {
   "address": 10220,
   "type": "line",
   "text": "map_step_y's high byte"
  },
  {
   "address": 10221,
   "type": "line",
   "text": "how many columns draw_map draws, all 20 or the 1 a scroll uncovers"
  },
  {
   "address": 10222,
   "type": "line",
   "text": "how many rows draw_map draws"
  },
  {
   "address": 10223,
   "type": "line",
   "text": "the column draw_map is drawing"
  },
  {
   "address": 10224,
   "type": "line",
   "text": "the row draw_map is drawing"
  },
  {
   "address": 10225,
   "type": "line",
   "text": "the first column to draw"
  },
  {
   "address": 10226,
   "type": "line",
   "text": "the first row to draw"
  },
  {
   "address": 10227,
   "type": "line",
   "text": "the height of the view from above: 8 when taking off, 9 after U; D at 9 comes down to 8, D at 8 lands"
  },
  {
   "address": 10228,
   "type": "line",
   "text": "for each kind of ground (0, 2, 4, 6, 8 and water) and bits 1-2 of the last layer's sum (layer_sum, as terrain_at leaves it), the first of four characters in map_tile_chars: jungle for kinds 0 and 2, open ground for 4, open ground with a feature for some cells of 6 and 8, and water"
  },
  {
   "address": 10252,
   "type": "line",
   "text": "sets the view from above to its start: 20 x 12 cells, 16 units apart, height 8"
  },
  {
   "address": 10292,
   "type": "line",
   "text": "the view from above: extended-colour text, the map round the position, the flying sound; then its loop: 8 east, 7 north, 6 south and 5 west scroll the map one cell, U goes up, D goes down or lands. The start of the game stores an RTS at $2847 to return from here after the first map; each scroll also turns the heading to its direction (east 0, north 16, west 32, south 48), which the view on the ground keeps after landing"
  },
  {
   "address": 10311,
   "type": "line",
   "text": "waits for a key (key_get) and acts on it; the opening sequence turns the JSR here into an RTS and back"
  },
  {
   "address": 10361,
   "type": "line",
   "text": "U: from height 8 to 9, the map cells twice as far apart; takes 50 from energy"
  },
  {
   "address": 10404,
   "type": "line",
   "text": "D: at height 9 back to 8, the map cells half as far apart; at 8 it lands"
  },
  {
   "address": 10462,
   "type": "line",
   "text": "lands at the map's centre: the map is turned into a bitmap (map_to_bitmap), the view on the ground drawn and zoomed in; on open ground (kinds 4, 6 and 8) the landing sound and the ground's loop, on jungle or water a crash (crash)"
  },
  {
   "address": 10530,
   "type": "line",
   "text": "works out the map's west and south edges from the position (rounded to 16): 9 cells west and 5 south, so the explorer is the tenth column from the left and the sixth row from the bottom"
  },
  {
   "address": 10623,
   "type": "line",
   "text": "the position from the map's edges, the inverse of map_origin"
  },
  {
   "address": 10702,
   "type": "line",
   "text": "6: scrolls the map one cell south: moves the picture up two rows into the other screen (shift_up) and draws the new bottom row"
  },
  {
   "address": 10745,
   "type": "line",
   "text": "7: one cell north: moves the picture down two rows (shift_down) and draws the new top row"
  },
  {
   "address": 10860,
   "type": "line",
   "text": "5: one cell west: moves the picture right two columns (shift_right) and draws the new column at the left"
  },
  {
   "address": 10903,
   "type": "line",
   "text": "8: one cell east: moves the picture left two columns (shift_left) and draws the new column at the right"
  },
  {
   "address": 11016,
   "type": "line",
   "text": "draws one row of the map, the first of map_first_row"
  },
  {
   "address": 11030,
   "type": "line",
   "text": "draws one column of the map"
  },
  {
   "address": 11045,
   "type": "line",
   "text": "draws the view from above into the hidden screen, as extended-colour text: each map cell is 2 x 2 characters (draw_map_tile) chosen by the ground there (terrain_at, map_tiles), in the beacon colour (background 3) when a beacon lies within 8 units; rows are drawn from the bottom up, map_draw_cols by map_draw_rows cells from map_first_col, map_first_row"
  },
  {
   "address": 11222,
   "type": "line",
   "text": "fills both screens' colours with $01 and the bottom row with $11, for the crash"
  },
  {
   "address": 11267,
   "type": "line",
   "text": "a crash on landing: the screen fills (fill_crash), the crash's sound, the picture shakes up and down 30 times, then a pause that a key cuts short; 500 is taken from energy if there is that much (otherwise it stays), and the explorer is sent to the doorway's destination prompt (name_destination)"
  },
  {
   "address": 11343,
   "type": "line",
   "text": "counts wb down to zero, returning early if a key is pressed"
  },
  {
   "address": 11358,
   "type": "line",
   "text": "waits for raster line 250 and sets the vertical fine scroll to 0"
  },
  {
   "address": 11374,
   "type": "line",
   "text": "waits for raster line 250 and sets the vertical fine scroll to 7"
  },
  {
   "address": 11390,
   "type": "line",
   "text": "a delay of 48 x 256 passes"
  },
  {
   "address": 11401,
   "type": "line",
   "text": "moves the view on show down one row into the hidden screen, colours and bitmap, and shows it"
  },
  {
   "address": 11441,
   "type": "line",
   "text": "unreached: 40 bytes of code no instruction calls or jumps to, scroll_down's counterpart that would move the view up one row"
  },
  {
   "address": 11481,
   "type": "line",
   "text": "copies the character set at $4800 (192 bytes at $4800 and 192 at $48C0) to $C800 for bank 3"
  },
  {
   "address": 11501,
   "type": "line",
   "text": "clears the colour RAM, $D800-$DBFF, to 0"
  },
  {
   "address": 11521,
   "type": "line",
   "text": "the map's picture, 960 characters, moved two columns right from the screen on show into the hidden one"
  },
  {
   "address": 11587,
   "type": "line",
   "text": "the picture moved two columns left"
  },
  {
   "address": 11653,
   "type": "line",
   "text": "the picture moved up two rows"
  },
  {
   "address": 11719,
   "type": "line",
   "text": "the picture moved down two rows"
  },
  {
   "address": 11785,
   "type": "line",
   "text": "the characters of the map's tiles, in fours: two for the lower row and two for the upper; the codes with bit 6 set take a second background colour"
  },
  {
   "address": 11786,
   "type": "line",
   "text": "map_tile_chars one byte on: the second character of a tile's lower row"
  },
  {
   "address": 11787,
   "type": "line",
   "text": "map_tile_chars two bytes on: the first of the upper row"
  },
  {
   "address": 11788,
   "type": "line",
   "text": "map_tile_chars three bytes on, where draw_map_tile reads a tile's last character; the table runs on to $2E38"
  },
  {
   "address": 11833,
   "type": "line",
   "text": "puts map tile X (four characters from map_tile_chars, each ORed with attr_override) at column we, rows we_hi - 1 and we_hi of the hidden screen"
  },
  {
   "address": 11885,
   "type": "line",
   "text": "turns the map on show into a hires bitmap in the hidden screen for the landing: each character's eight bytes from the character set at $4800 into the bitmap, and its background (the character code's top two bits, through ecm_colours) into the colour byte, 960 characters; then shows it"
  },
  {
   "address": 12000,
   "type": "line",
   "text": "the colour byte map_to_bitmap gives each of the four extended-colour backgrounds: $05, $07, $03, $02 (green, yellow, cyan, red, behind black pixels)"
  },
  {
   "address": 12004,
   "type": "line",
   "text": "clears 30 pages of the hidden screen's bitmap, rows 0-23"
  },
  {
   "address": 12030,
   "type": "line",
   "text": "turns a Spectrum attribute byte in A (ink in bits 0-2, paper in bits 3-5, bright in bit 6; the flash bit 7 is ignored) into a C64 hires colour byte (attr_colours); X is kept"
  },
  {
   "address": 12041,
   "type": "line",
   "text": "the C64 colour byte for each of the 128 Spectrum attributes without flash: the ink's colour in the high nibble, the paper's in the low. Black, blue, red, magenta, green, cyan, yellow and white become C64 black, blue, red, purple, green, cyan, yellow and white, and with bright black, light blue, light red, brown, light green, grey, orange and light grey. One entry breaks the pattern: $72 (bright red on yellow), the doorway's, is $A2, light red on red"
  },
  {
   "address": 12169,
   "type": "line",
   "text": "draws the object set up by draw_object (image obj_image at obj_col, obj_row), unmirrored"
  },
  {
   "address": 12185,
   "type": "line",
   "text": "draws an image at column we, row we_hi of the hidden screen: an image is a run of cells, each an attribute and eight bitmap bytes, followed by a step byte (columns in the low nibble, rows in the high, signed) to the next cell, 0 ending it. Columns wrap round 64 and cells outside the 40 x 24 screen are skipped. The attribute says how to draw: $28 leaves the colour as it is, $7F skips the cell, $80-$BF and $C0-$FF draw the pixels over the ground behind a mask (mask_keep_right, mask_keep_left), and the rest set the colour (attr_to_colour) and replace the eight bytes. attr_override and attr_force change this"
  },
  {
   "address": 12341,
   "type": "line",
   "text": "a masked cell: the colour unless the attribute's low six bits are $28, then each byte ORed in after a mask has cleared the ground behind it (mask_keep_right for attributes $C0 and up, mask_keep_left for $80-$BF)"
  },
  {
   "address": 12414,
   "type": "line",
   "text": "the bitmap address of the screen offset in we: offset x 8 + the hidden bitmap's page, into wb"
  },
  {
   "address": 12444,
   "type": "line",
   "text": "draws the object set up by draw_object mirrored left to right: obj_width columns further on, each cell's bytes reversed (bit_reverse) and the steps' column part negated"
  },
  {
   "address": 12626,
   "type": "line",
   "text": "a masked cell, mirrored: as at $3035 with the bytes reversed first (bit_reverse) and the masks the other way round: mask_keep_left for attributes $C0 and up, mask_keep_right for $80-$BF"
  },
  {
   "address": 12708,
   "type": "line",
   "text": "waits for raster line 250, then shows the screen just drawn: flips CIA 2's bank bit between VIC banks 1 and 3, sets the mode by view_mode (extended-colour text with the charset at $0800 of the bank for 1, hires bitmap for 2), and flips draw_page"
  },
  {
   "address": 12752,
   "type": "line",
   "text": "flips draw_page between $40 and $C0 without touching the video chip; called in pairs round drawing that goes straight onto the screen on show"
  },
  {
   "address": 12793,
   "type": "line",
   "text": "ptr less one"
  },
  {
   "address": 12804,
   "type": "line",
   "text": "unreached: we less one, a routine nothing calls"
  },
  {
   "address": 12815,
   "type": "line",
   "text": "wc less one"
  },
  {
   "address": 12826,
   "type": "line",
   "text": "wb less one"
  },
  {
   "address": 12837,
   "type": "line",
   "text": "ptr plus one"
  },
  {
   "address": 12844,
   "type": "line",
   "text": "we plus one"
  },
  {
   "address": 12851,
   "type": "line",
   "text": "wc plus one"
  },
  {
   "address": 12858,
   "type": "line",
   "text": "unreached: wb plus one, a routine nothing calls"
  },
  {
   "address": 12865,
   "type": "line",
   "text": "we times two"
  },
  {
   "address": 12870,
   "type": "line",
   "text": "we = we + wc"
  },
  {
   "address": 12886,
   "type": "line",
   "text": "we = we + wb"
  },
  {
   "address": 12902,
   "type": "line",
   "text": "unreached: ptr times two, a routine nothing calls"
  },
  {
   "address": 12907,
   "type": "line",
   "text": "ptr = ptr + wc"
  },
  {
   "address": 12923,
   "type": "line",
   "text": "ptr = ptr + wb"
  },
  {
   "address": 12939,
   "type": "line",
   "text": "exchanges we and wc"
  },
  {
   "address": 12962,
   "type": "line",
   "text": "we = we - wc, less one more when the carry is set on entry; the carry stands for a borrow, the other way round from SBC, on the way in and on the way out: clear when there was no borrow, set when we went below zero"
  },
  {
   "address": 12988,
   "type": "line",
   "text": "we = we - wb, with the carry used as in sub_wc"
  },
  {
   "address": 13014,
   "type": "line",
   "text": "the ground at the probe: the height is the first layer's sum (layer_sum_at with the first ten of terrain_layers); 204 or less is water (kind $0A, height $C8). Otherwise the kind comes from the next layers: the second's sum 150 or less gives 8; then the third's and fourth's sums against 255 give 6 (both at most 255), 4 (the fourth over), 2 (the third over) or 0 (both over)"
  },
  {
   "address": 13128,
   "type": "line",
   "text": "points ptr at terrain_layers and falls into layer_sum_at"
  },
  {
   "address": 13136,
   "type": "line",
   "text": "one layer of the ground: five terms, each the low byte of a x probe_x + b x probe_y (mul_coef, a and b from the next two bytes at ptr), used to look up terrain_profile; the five looked-up values are added into layer_sum. ptr is left at the next layer"
  },
  {
   "address": 13220,
   "type": "line",
   "text": "multiplies the 16-bit value in wc by the coefficient at ptr (a sign bit and seven bits), keeping the product divided by 128 in we, and steps ptr on. Only the low byte of the result is used, and for that a negative coefficient gives the negated product"
  },
  {
   "address": 13290,
   "type": "line",
   "text": "one step of mul_coef for a positive coefficient: shifts we and the coefficient right and adds wc when the bit out was 1"
  },
  {
   "address": 13312,
   "type": "line",
   "text": "one step of mul_coef for a negative coefficient: subtracts wc instead, with the borrow turned round for the next shift"
  },
  {
   "address": 13339,
   "type": "line",
   "text": "the planet's shape: four layers of five pairs of coefficients (a for east, b for north; bit 7 the sign, bits 0-6 the size); with terrain_profile these 40 bytes are the whole of the landscape"
  },
  {
   "address": 13379,
   "type": "line",
   "text": "picks the scenery list for the ground just found: from scenery_lists by the kind (terrain), bits 1-2 of the last layer sum and the ring (scene_near), into wc; keeps the sum's low byte in scene_kind, which draw_scenery_at tests for a doorway"
  },
  {
   "address": 13435,
   "type": "line",
   "text": "the address of the list of objects to start from, 48 entries: for each of the six kinds of ground, four variants by bits 1-2 of the last layer's sum (layer_sum, as terrain_at leaves it), each for the far ring and the near one"
  },
  {
   "address": 13531,
   "type": "line",
   "text": "the lists of objects scenery_lists and the object records name: each a count n, then n object numbers to pick one from at random (negative for the mirror image, 0 for nothing more); 182 bytes"
  },
  {
   "address": 13533,
   "type": "line",
   "text": "a list of 6: objects 2, 2 mirrored, 3, 3 mirrored, 4, 6"
  },
  {
   "address": 13540,
   "type": "line",
   "text": "a list of 8: objects 1 mirrored, 1 mirrored, 1 mirrored, 1 mirrored, 3, 3 mirrored, 1 mirrored, 1 mirrored"
  },
  {
   "address": 13549,
   "type": "line",
   "text": "a list of 2: objects 5, 5 mirrored"
  },
  {
   "address": 13552,
   "type": "line",
   "text": "a list of 2: objects 4 mirrored, 6 mirrored"
  },
  {
   "address": 13555,
   "type": "line",
   "text": "a list of 3: objects 7 mirrored, 8, 8 mirrored"
  },
  {
   "address": 13559,
   "type": "line",
   "text": "a list of 2: objects 10, 10 mirrored"
  },
  {
   "address": 13562,
   "type": "line",
   "text": "a list of 4: objects 11, 9 mirrored, 10, 10 mirrored"
  },
  {
   "address": 13567,
   "type": "line",
   "text": "a list of 3: objects 15, 15, 14 mirrored"
  },
  {
   "address": 13571,
   "type": "line",
   "text": "a list of 3: objects 14 mirrored, 14 mirrored, 15"
  },
  {
   "address": 13575,
   "type": "line",
   "text": "a list of 3: objects nothing, 17 mirrored, 17"
  },
  {
   "address": 13579,
   "type": "line",
   "text": "a list of 2: objects 19, 19 mirrored"
  },
  {
   "address": 13582,
   "type": "line",
   "text": "a list of 6: objects 18 mirrored, 19, 19 mirrored, 19, 19 mirrored, 21 mirrored"
  },
  {
   "address": 13589,
   "type": "line",
   "text": "a list of 1: object 7"
  },
  {
   "address": 13591,
   "type": "line",
   "text": "a list of 2: objects 9, 11 mirrored"
  },
  {
   "address": 13594,
   "type": "line",
   "text": "a list of 2: objects 13, 13 mirrored"
  },
  {
   "address": 13597,
   "type": "line",
   "text": "a list of 4: objects 12, 12 mirrored, 14, 15 mirrored"
  },
  {
   "address": 13602,
   "type": "line",
   "text": "a list of 2: objects 16, 16 mirrored"
  },
  {
   "address": 13605,
   "type": "line",
   "text": "a list of 2: objects 17, 17 mirrored"
  },
  {
   "address": 13608,
   "type": "line",
   "text": "a list of 4: objects 18, 18, 18, 21"
  },
  {
   "address": 13613,
   "type": "line",
   "text": "a list of 1: object 1"
  },
  {
   "address": 13615,
   "type": "line",
   "text": "a list of 3: objects 28 mirrored, 29, 29 mirrored"
  },
  {
   "address": 13619,
   "type": "line",
   "text": "a list of 2: objects 31, 31 mirrored"
  },
  {
   "address": 13622,
   "type": "line",
   "text": "a list of 4: objects 32, 30 mirrored, 31, 31 mirrored"
  },
  {
   "address": 13627,
   "type": "line",
   "text": "a list of 5: objects nothing, 41 mirrored, 42, 42 mirrored, 41"
  },
  {
   "address": 13633,
   "type": "line",
   "text": "a list of 1: object 36"
  },
  {
   "address": 13635,
   "type": "line",
   "text": "a list of 1: object 35 mirrored"
  },
  {
   "address": 13637,
   "type": "line",
   "text": "a list of 3: objects nothing, 38, 38 mirrored"
  },
  {
   "address": 13641,
   "type": "line",
   "text": "a list of 2: objects 40, 40 mirrored"
  },
  {
   "address": 13644,
   "type": "line",
   "text": "a list of 6: objects 39 mirrored, 40 mirrored, 40, 40 mirrored, 40, 43 mirrored"
  },
  {
   "address": 13651,
   "type": "line",
   "text": "a list of 3: objects 23, 24, 27 mirrored"
  },
  {
   "address": 13655,
   "type": "line",
   "text": "a list of 9: objects 24, 27 mirrored, 25, 25 mirrored, 26, 26 mirrored, 24 mirrored, 27, 22 mirrored"
  },
  {
   "address": 13665,
   "type": "line",
   "text": "a list of 7: objects 25, 26, 26 mirrored, 24 mirrored, 27, 23 mirrored, 25 mirrored"
  },
  {
   "address": 13673,
   "type": "line",
   "text": "a list of 3: objects 24 mirrored, 27, 23 mirrored"
  },
  {
   "address": 13677,
   "type": "line",
   "text": "a list of 3: objects 23 mirrored, 22 mirrored, nothing"
  },
  {
   "address": 13681,
   "type": "line",
   "text": "a list of 2: objects 22 mirrored, nothing"
  },
  {
   "address": 13684,
   "type": "line",
   "text": "a list of 1: object 28"
  },
  {
   "address": 13686,
   "type": "line",
   "text": "a list of 2: objects 30, 32 mirrored"
  },
  {
   "address": 13689,
   "type": "line",
   "text": "a list of 2: objects 34, 34 mirrored"
  },
  {
   "address": 13692,
   "type": "line",
   "text": "a list of 4: objects 33, 33 mirrored, 35, 36 mirrored"
  },
  {
   "address": 13697,
   "type": "line",
   "text": "a list of 2: objects 37, 37 mirrored"
  },
  {
   "address": 13700,
   "type": "line",
   "text": "a list of 2: objects 38, 38 mirrored"
  },
  {
   "address": 13703,
   "type": "line",
   "text": "a list of 4: objects 39, 39, 39, 43"
  },
  {
   "address": 13708,
   "type": "line",
   "text": "a list of 4: objects 22, 23, 24, 27 mirrored"
  },
  {
   "address": 13713,
   "type": "line",
   "text": "draws object obj_id at horizon column scene_col: its record (object_records, nine bytes from (id - 1) x 9) gives the image, the column and row it is drawn at, and its width; scene_col moves on by the width plus one for the next object. A negative number draws the mirror image. The record also names the list the next object of the chain is picked from, one for the plain and one for the mirrored drawing. The object is drawn only when its column plus 2 is below 42 (round the 64-column horizon)"
  },
  {
   "address": 13887,
   "type": "line",
   "text": "43 objects of the ground view, nine bytes each: image address, column offset, row, width, the list of the next object when drawn plain, the list when mirrored. Images lie from $8000 up"
  },
  {
   "address": 14274,
   "type": "line",
   "text": "takes the oldest key code from key_buffer into A, moving the rest up; Z set and A 0 when there is none"
  },
  {
   "address": 14295,
   "type": "line",
   "text": "the head-up display's animation, run while the game waits for a key: on the screen on show, in the bottom four rows (20-23), rolls the eight bitmap bytes of each cell whose colour byte is $16 down by one; then swaps two pairs of colours over the whole screen (swap_hud_colours, $9C with $C9 and $72 with $27)"
  },
  {
   "address": 14399,
   "type": "line",
   "text": "the bearing in degrees, clockwise from north, of a difference east (dx) and north (dy), 16 bits each: the smaller over the larger is found in tangent_table by a binary search of five halving steps from the middle (mul_8x16 for each try), giving an angle of 0-45 from the table's second half; when dx is the larger it becomes 90 less the angle. In the north-east quadrant that is the bearing; in the others quadrant_offsets gives 180, 360 or 270 less the angle. 270 less it is wrong for the south-west, where 180 plus it was needed: every bearing there comes out reflected about 225 degrees (264 reads 185, 186 reads 265). The result goes into bearing; zero page $0A-$11 are saved and restored"
  },
  {
   "address": 14721,
   "type": "line",
   "text": "makes the 16-bit wc positive"
  },
  {
   "address": 14739,
   "type": "line",
   "text": "multiplies the 16-bit wc by the byte in A: the top 16 bits of the 24-bit product go into we"
  },
  {
   "address": 14771,
   "type": "line",
   "text": "64 values of 256 x the tangent of 0 to 45 degrees in 64 steps, then the 64 angles in degrees each one stands for"
  },
  {
   "address": 14899,
   "type": "line",
   "text": "bearing_of's place in tangent_table, starting at 32 (with $3A34, the step, starting at 16 and halved each try; $3A35, set when dy is the larger; and $3A36, the quadrant: 2 when dx is negative, plus 1 when dy is)"
  },
  {
   "address": 14900,
   "type": "line",
   "text": "bearing_of's step through tangent_table, 16 halved each try"
  },
  {
   "address": 14901,
   "type": "line",
   "text": "1 when bearing_of found dy the larger and swapped the two"
  },
  {
   "address": 14902,
   "type": "line",
   "text": "bearing_of's quadrant: 2 when dx is negative, plus 1 when dy is"
  },
  {
   "address": 14903,
   "type": "line",
   "text": "the low bytes of 180, 360 and 270 ($3A37-$3A39) and their high bytes ($3A3A-$3A3C), read through the quadrant number from $3A36 on: south-east, north-west and south-west"
  },
  {
   "address": 14909,
   "type": "line",
   "text": "three passes of zoom_pass: the middle of the picture stretched out to fill the screen, as the planet comes up and on landing"
  },
  {
   "address": 14918,
   "type": "line",
   "text": "unreached: three calls to walk_zoom, code nothing calls"
  },
  {
   "address": 14927,
   "type": "line",
   "text": "one pass of the zoom from the start of zoom_order: stretches twelve strips into the screen on show (stretch_strips, between two page flips) and waits (pause)"
  },
  {
   "address": 14941,
   "type": "line",
   "text": "the zoom after a step forward: one pass from entry 24 of zoom_order"
  },
  {
   "address": 14955,
   "type": "line",
   "text": "twelve strips, each a pair of rows from zoom_order (where to and where from): copies ten cells of the source row, from column 10, into the destination row with every pixel doubled (stretch_strip)"
  },
  {
   "address": 15042,
   "type": "line",
   "text": "stretches one strip: ten character cells, each byte's eight pixels doubled into two bytes (double_bits) and each colour byte written twice, then ten more taken the other way along the row"
  },
  {
   "address": 15141,
   "type": "line",
   "text": "doubles the pixels of eight bitmap bytes at ptr: each byte becomes two bytes, every bit twice"
  },
  {
   "address": 15253,
   "type": "line",
   "text": "the rows of the zoom's strips: twelve destination rows (0, 22, 2, 20 ... 12, from the outside in) and the twelve source rows (6, 17, 7, 16 ... 12) for zoom_in, then twelve and twelve more for walk_zoom"
  },
  {
   "address": 15265,
   "type": "line",
   "text": "the second half of zoom_order: the source row for each destination row"
  },
  {
   "address": 15301,
   "type": "line",
   "text": "double_bits's output for the left half of a cell"
  },
  {
   "address": 15305,
   "type": "line",
   "text": "its output for the right half"
  },
  {
   "address": 15309,
   "type": "line",
   "text": "double_bits's output for the last four bytes"
  },
  {
   "address": 15317,
   "type": "line",
   "text": "the entry of zoom_order stretch_strips is on"
  },
  {
   "address": 15318,
   "type": "line",
   "text": "the low byte of each zoom strip's bitmap address (with zoom_row_hi)"
  },
  {
   "address": 15338,
   "type": "line",
   "text": "zoom_row_lo's entries 20-24; hud_twinkle reads entry 20 for the bitmap's row 20"
  },
  {
   "address": 15343,
   "type": "line",
   "text": "the high byte of each zoom strip's bitmap address, relative to the bitmap's start"
  },
  {
   "address": 15363,
   "type": "line",
   "text": "zoom_row_hi's entries 20-24"
  },
  {
   "address": 15368,
   "type": "line",
   "text": "a delay of pause_count passes"
  },
  {
   "address": 15385,
   "type": "line",
   "text": "wc = wc + wb"
  },
  {
   "address": 15401,
   "type": "line",
   "text": "ptr2 = ptr2 + wb"
  },
  {
   "address": 15417,
   "type": "line",
   "text": "ptr2 plus one"
  },
  {
   "address": 15424,
   "type": "line",
   "text": "ptr2 less one"
  },
  {
   "address": 15435,
   "type": "line",
   "text": "ptr = ptr - wb, with the carry used as in sub_wc"
  },
  {
   "address": 15461,
   "type": "line",
   "text": "steps the two random bytes rnd_a and rnd_b (rnd_step each), returning the new rnd_b in A"
  },
  {
   "address": 15479,
   "type": "line",
   "text": "the random step of the byte at wc: about three times it, folded back below 256 (x x 3 - 1 up to 85, x x 3 - 256 from 86 to 170, and so on); every byte falls into a cycle of 32 values or fewer"
  },
  {
   "address": 15525,
   "type": "line",
   "text": "fills X rows of 40 colour bytes from we with attribute A"
  },
  {
   "address": 15554,
   "type": "line",
   "text": "unreached: 33 bytes of code nothing calls, which would work out a cell's screen and bitmap addresses from an offset in wc"
  },
  {
   "address": 15587,
   "type": "line",
   "text": "draws a window's frame: copies nine bytes from the first non-zero byte at a random place from $8000 up into frame_cell, gives it one of 73 attributes (frame_colours, by its first byte less 73 until it fits), and draws that cell over a rectangle (win_width + 2) x (win_height + 2) from win_col, win_row of the screen on show"
  },
  {
   "address": 15700,
   "type": "line",
   "text": "the cell draw_frame draws its frame with: an attribute and eight bitmap bytes"
  },
  {
   "address": 15710,
   "type": "line",
   "text": "the 73 attributes a window's frame can take"
  },
  {
   "address": 15783,
   "type": "line",
   "text": "fills the window's inside: win_width x win_height cells from win_col, win_row of the screen on show with attribute win_colour, the bitmap cleared"
  },
  {
   "address": 15805,
   "type": "line",
   "text": "the fill, row by row: colour bytes set, bitmap bytes zeroed"
  },
  {
   "address": 15880,
   "type": "line",
   "text": "unreached: 16 bytes of code nothing calls, which would load wc and we from zero page $4B-$4E"
  },
  {
   "address": 15896,
   "type": "line",
   "text": "prints the zero-terminated string at wc on the screen on show, from column we, row we_hi: each character from the font at $BD00 (from the space up, eight bytes each) into the bitmap, its cell in text_colour (unless that is $C0)"
  },
  {
   "address": 16009,
   "type": "line",
   "text": "we = we + wc + the carry"
  },
  {
   "address": 16024,
   "type": "line",
   "text": "we = the distance between we and wc, always positive"
  },
  {
   "address": 16046,
   "type": "line",
   "text": "the bytes from here to the end of the page are zero; nothing reads them"
  },
  {
   "address": 17408,
   "type": "line",
   "text": "for each byte of pixels, the mask a masked cell clears the ground with when it is drawn plain with an attribute of $C0 and up, or mirrored with one of $80-$BF: only the pixels more than one to the right of the byte's rightmost set pixel are kept ($7F for an empty byte)"
  },
  {
   "address": 17664,
   "type": "line",
   "text": "the mask for plain cells with attributes $80-$BF and mirrored ones with $C0 and up: only the pixels more than one to the left of the byte's leftmost set pixel are kept ($FE for an empty byte)"
  },
  {
   "address": 17920,
   "type": "line",
   "text": "each byte with its bits in the opposite order, for drawing a picture mirrored"
  },
  {
   "address": 18176,
   "type": "line",
   "text": "the planet's one profile: 256 heights (2 to 138) along a line, read by every term of every layer of terrain_at and, every fourth entry, by the distant hills; the whole landscape is made of these bytes and terrain_layers"
  },
  {
   "address": 18432,
   "type": "line",
   "text": "the character set of the view from above, 48 characters: the jungle, open ground, features and water of map_tile_chars; copy_charset puts a copy at $C800 for bank 3"
  },
  {
   "address": 18624,
   "type": "line",
   "text": "map_charset's characters 24-47, which copy_charset copies in its second stream"
  },
  {
   "address": 18816,
   "type": "line",
   "text": "the first of the five bugs, 2 x 3 cells: a face with goggle eyes and teeth"
  },
  {
   "address": 18876,
   "type": "line",
   "text": "the second bug, 2 x 3 cells"
  },
  {
   "address": 18936,
   "type": "line",
   "text": "the third bug, 2 x 3 cells"
  },
  {
   "address": 18996,
   "type": "line",
   "text": "the fourth bug, 2 x 3 cells"
  },
  {
   "address": 19056,
   "type": "line",
   "text": "the fifth bug, 2 x 3 cells"
  },
  {
   "address": 19116,
   "type": "line",
   "text": "the gun's sight, one cell: a ring with a dot above and below, in attribute $78"
  },
  {
   "address": 32768,
   "type": "line",
   "text": "object 1, 4 x 23 cells: palm fronds at the top and grass at the foot, open between"
  },
  {
   "address": 33078,
   "type": "line",
   "text": "object 2, 4 x 23 cells: a tall palm with a ladder-like trunk"
  },
  {
   "address": 33768,
   "type": "line",
   "text": "object 3, 4 x 23 cells: two dark trunks under one canopy, grass at the foot"
  },
  {
   "address": 34678,
   "type": "line",
   "text": "object 4, 4 x 23 cells: tree trunks under the canopy"
  },
  {
   "address": 35458,
   "type": "line",
   "text": "object 5, 4 x 23 cells: pale trunks, close together"
  },
  {
   "address": 36358,
   "type": "line",
   "text": "object 6, 4 x 23 cells: a tree standing on splayed roots, a creeper on its trunk"
  },
  {
   "address": 37088,
   "type": "line",
   "text": "object 17, 4 x 3 cells: a strip of grass"
  },
  {
   "address": 37208,
   "type": "line",
   "text": "object 39, 3 x 5 cells: the edge of water"
  },
  {
   "address": 37348,
   "type": "line",
   "text": "object 7, 4 x 22 cells: a pillar of rock"
  },
  {
   "address": 38158,
   "type": "line",
   "text": "object 8, 4 x 22 cells: a wall of stone blocks"
  },
  {
   "address": 39018,
   "type": "line",
   "text": "a picture no object record names, 4 x 7 cells: a post and a rail over water"
  },
  {
   "address": 39258,
   "type": "line",
   "text": "object 38, 3 x 2 cells: grass and a low bush"
  },
  {
   "address": 39318,
   "type": "line",
   "text": "object 19, 4 x 3 cells: water"
  },
  {
   "address": 39438,
   "type": "line",
   "text": "object 21, 4 x 7 cells: a jetty over water"
  },
  {
   "address": 39678,
   "type": "line",
   "text": "a picture no object record names, 3 x 5 cells: a post and a short rail over water"
  },
  {
   "address": 39758,
   "type": "line",
   "text": "object 9, 4 x 7 cells: a lamp on a post above steps"
  },
  {
   "address": 39988,
   "type": "line",
   "text": "object 10, 4 x 9 cells: a temple's doorway"
  },
  {
   "address": 40298,
   "type": "line",
   "text": "object 11, 4 x 7 cells: steps with a post"
  },
  {
   "address": 40538,
   "type": "line",
   "text": "object 12, 4 x 8 cells: a thatched hut on stilts"
  },
  {
   "address": 40818,
   "type": "line",
   "text": "object 13, 4 x 5 cells: a small arched door"
  },
  {
   "address": 40960,
   "type": "line",
   "text": "object 13's picture, the small arched door, from $A000 to its end at $A02F (it starts at $9F72)"
  },
  {
   "address": 41008,
   "type": "line",
   "text": "object 14, 4 x 7 cells: a thatched hut"
  },
  {
   "address": 41248,
   "type": "line",
   "text": "object 15, 4 x 7 cells: a thatched hut, the other way round"
  },
  {
   "address": 41518,
   "type": "line",
   "text": "object 16, 4 x 10 cells: a young tree tangled in creepers"
  },
  {
   "address": 41858,
   "type": "line",
   "text": "object 40, 3 x 4 cells: water"
  },
  {
   "address": 41978,
   "type": "line",
   "text": "object 43, 3 x 8 cells: a jetty into water"
  },
  {
   "address": 42158,
   "type": "line",
   "text": "object 22, 3 x 7 cells: a small palm in black silhouette (the far ring's)"
  },
  {
   "address": 42348,
   "type": "line",
   "text": "object 23, 3 x 12 cells: palms in black silhouette, taller"
  },
  {
   "address": 42668,
   "type": "line",
   "text": "object 24, 3 x 16 cells: distant jungle in black silhouette"
  },
  {
   "address": 43128,
   "type": "line",
   "text": "object 25, 3 x 16 cells: distant jungle in black silhouette, yellow trunks at its foot"
  },
  {
   "address": 43598,
   "type": "line",
   "text": "object 26, 3 x 16 cells: dark jungle"
  },
  {
   "address": 44078,
   "type": "line",
   "text": "object 27, 3 x 16 cells: dark jungle, darker"
  },
  {
   "address": 44558,
   "type": "line",
   "text": "object 28, 3 x 17 cells: a pillar of rock, smaller"
  },
  {
   "address": 45048,
   "type": "line",
   "text": "object 29, 3 x 17 cells: a wall of stone blocks, smaller"
  },
  {
   "address": 45558,
   "type": "line",
   "text": "object 30, 3 x 5 cells: the lamp on its steps, smaller"
  },
  {
   "address": 45698,
   "type": "line",
   "text": "object 31, 3 x 7 cells: the temple's doorway, smaller"
  },
  {
   "address": 45888,
   "type": "line",
   "text": "object 32, 3 x 5 cells: steps with a post, smaller"
  },
  {
   "address": 46008,
   "type": "line",
   "text": "object 33, 3 x 7 cells: the hut on stilts, smaller"
  },
  {
   "address": 46198,
   "type": "line",
   "text": "object 34, 3 x 4 cells: the arched door, smaller"
  },
  {
   "address": 46308,
   "type": "line",
   "text": "object 35, 3 x 6 cells: a thatched hut, smaller"
  },
  {
   "address": 46488,
   "type": "line",
   "text": "object 36, 3 x 6 cells: the other thatched hut, smaller"
  },
  {
   "address": 46668,
   "type": "line",
   "text": "object 37, 3 x 8 cells: the creeper, smaller"
  },
  {
   "address": 46888,
   "type": "line",
   "text": "fragment 1 of the spacecraft, 2 x 2 cells; object 41's record names it too, at row 8"
  },
  {
   "address": 46928,
   "type": "line",
   "text": "fragment 2, 2 x 2 cells"
  },
  {
   "address": 46968,
   "type": "line",
   "text": "fragment 3, 2 x 2 cells"
  },
  {
   "address": 47008,
   "type": "line",
   "text": "fragment 4, 2 x 2 cells"
  },
  {
   "address": 47048,
   "type": "line",
   "text": "fragment 5, 2 x 2 cells"
  },
  {
   "address": 47088,
   "type": "line",
   "text": "fragment 6, 2 x 2 cells"
  },
  {
   "address": 47128,
   "type": "line",
   "text": "fragment 7, 2 x 2 cells"
  },
  {
   "address": 47168,
   "type": "line",
   "text": "fragment 8, 2 x 2 cells"
  },
  {
   "address": 47208,
   "type": "line",
   "text": "fragment 9, 2 x 2 cells"
  },
  {
   "address": 47248,
   "type": "line",
   "text": "the doorway, 6 x 9 cells of checks that narrow towards the middle, all in attribute $F2 (flashing bright red on yellow), which the C64 shows as light red on red"
  },
  {
   "address": 47788,
   "type": "line",
   "text": "the beacon, 2 x 9 cells: a striped mast; object 42's record starts at its seventh cell, $BAE8"
  },
  {
   "address": 47968,
   "type": "line",
   "text": "the distant hills: a column of cells of hillside, each followed by a step one row up, ending in a three-cell crest at $BB9C; hill_columns starts h cells before the crest for a hill of height h. The first two cells, for heights 5 and 6, are never used, as terrain_profile / 32 is at most 4"
  },
  {
   "address": 48058,
   "type": "line",
   "text": "object 18, 4 x 5 cells: the water's edge with reeds"
  },
  {
   "address": 48228,
   "type": "line",
   "text": "object 20, 4 x 3 cells: the edge of water"
  },
  {
   "address": 48384,
   "type": "line",
   "text": "the font print_string uses: 96 characters of eight bytes, from the space ($20) to $7F, upper and lower case"
  },
  {
   "address": 49152,
   "type": "line",
   "text": "the title picture's colours, 1,000 bytes, which the release's loader copied here from its picture file; the start shows them with title_bitmap until a key is pressed, and the game's screens overwrite them"
  },
  {
   "address": 49154,
   "type": "line",
   "text": "the title picture's colours from row 0, column 2 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49192,
   "type": "line",
   "text": "the title picture's colours from row 1, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49232,
   "type": "line",
   "text": "the title picture's colours from row 2, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49372,
   "type": "line",
   "text": "the title picture's colours from row 5, column 20 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49382,
   "type": "line",
   "text": "the title picture's colours from row 5, column 30 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49392,
   "type": "line",
   "text": "the title picture's colours from row 6, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49394,
   "type": "line",
   "text": "the title picture's colours from row 6, column 2 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49408,
   "type": "line",
   "text": "the title picture's colours from row 6, column 16 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49422,
   "type": "line",
   "text": "the title picture's colours from row 6, column 30 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49452,
   "type": "line",
   "text": "the title picture's colours from row 7, column 20 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49592,
   "type": "line",
   "text": "the title picture's colours from row 11, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49612,
   "type": "line",
   "text": "the title picture's colours from row 11, column 20 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49632,
   "type": "line",
   "text": "the title picture's colours from row 12, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49634,
   "type": "line",
   "text": "the title picture's colours from row 12, column 2 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49652,
   "type": "line",
   "text": "the title picture's colours from row 12, column 20 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49664,
   "type": "line",
   "text": "the title picture's colours from row 12, column 32 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49672,
   "type": "line",
   "text": "the title picture's colours from row 13, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49812,
   "type": "line",
   "text": "the title picture's colours from row 16, column 20 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49842,
   "type": "line",
   "text": "the title picture's colours from row 17, column 10 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49872,
   "type": "line",
   "text": "the title picture's colours from row 18, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49874,
   "type": "line",
   "text": "the title picture's colours from row 18, column 2 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49882,
   "type": "line",
   "text": "the title picture's colours from row 18, column 10 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49892,
   "type": "line",
   "text": "the title picture's colours from row 18, column 20 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 49920,
   "type": "line",
   "text": "the title picture's colours from row 19, column 8 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 50112,
   "type": "line",
   "text": "the title picture's colours from row 24, column 0 on; a copy loop of the map's scrolling (or the unreached copy at $16E6) names this place in bank 3's screen"
  },
  {
   "address": 57344,
   "type": "line",
   "text": "the title picture's bitmap, character rows 0-3, loaded with title_colours"
  },
  {
   "address": 58368,
   "type": "line",
   "text": "the title picture's bitmap, rows 3-6"
  },
  {
   "address": 59392,
   "type": "line",
   "text": "the title picture's bitmap, rows 6-9"
  },
  {
   "address": 60416,
   "type": "line",
   "text": "the title picture's bitmap, rows 9-12"
  },
  {
   "address": 61440,
   "type": "line",
   "text": "the title picture's bitmap, rows 12-15"
  },
  {
   "address": 62464,
   "type": "line",
   "text": "the title picture's bitmap, rows 16-19"
  },
  {
   "address": 63488,
   "type": "line",
   "text": "the title picture's bitmap, rows 19-22"
  },
  {
   "address": 64512,
   "type": "line",
   "text": "the title picture's bitmap, rows 22-24"
  }
 ]
}