{
 "schema": 1,
 "platform": "c64",
 "game": "ace-2",
 "build": "Cascade Games UK disk, labelled v1.1L by the C64 Preservation Project",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53760,
    55295,
    "I/O and colour RAM"
   ],
   [
    0,
    2303,
    "zero page, the stack and pages 2 to 8: the game's variables, never loaded; $30D9 clears zero page and pages 2 to 4 at each start, and no recorded run touches pages 5 to 8"
   ],
   [
    32768,
    34815,
    "the two screens the game draws into and shows in turn; at the hand-over they hold the end of the loading picture"
   ],
   [
    53760,
    55295,
    "under the I/O chips, never read: every byte is $FD, a zero byte on the disk after the loader's EOR $FD"
   ],
   [
    52224,
    52735,
    "never loaded or used: the RAM's power-on pattern"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2303,
   "type": "Undefined"
  },
  {
   "start": 2304,
   "end": 2306,
   "type": "Code"
  },
  {
   "start": 2307,
   "end": 2442,
   "type": "Undefined"
  },
  {
   "start": 2443,
   "end": 5591,
   "type": "Code"
  },
  {
   "start": 5592,
   "end": 5594,
   "type": "Undefined"
  },
  {
   "start": 5595,
   "end": 7971,
   "type": "Code"
  },
  {
   "start": 7972,
   "end": 7983,
   "type": "Undefined"
  },
  {
   "start": 7984,
   "end": 8024,
   "type": "Code"
  },
  {
   "start": 8025,
   "end": 8031,
   "type": "Undefined"
  },
  {
   "start": 8032,
   "end": 10947,
   "type": "Code"
  },
  {
   "start": 10948,
   "end": 10950,
   "type": "Undefined"
  },
  {
   "start": 10951,
   "end": 17305,
   "type": "Code"
  },
  {
   "start": 17306,
   "end": 17306,
   "type": "Undefined"
  },
  {
   "start": 17307,
   "end": 19442,
   "type": "Code"
  },
  {
   "start": 19443,
   "end": 19452,
   "type": "Address"
  },
  {
   "start": 19453,
   "end": 19471,
   "type": "Code"
  },
  {
   "start": 19472,
   "end": 19481,
   "type": "Address"
  },
  {
   "start": 19482,
   "end": 19896,
   "type": "Code"
  },
  {
   "start": 19897,
   "end": 19962,
   "type": "Undefined"
  },
  {
   "start": 19963,
   "end": 20140,
   "type": "Code"
  },
  {
   "start": 20141,
   "end": 20141,
   "type": "Undefined"
  },
  {
   "start": 20142,
   "end": 20915,
   "type": "Code"
  },
  {
   "start": 20916,
   "end": 21459,
   "type": "Undefined"
  },
  {
   "start": 21460,
   "end": 21667,
   "type": "Code"
  },
  {
   "start": 21668,
   "end": 21695,
   "type": "Undefined"
  },
  {
   "start": 21696,
   "end": 22114,
   "type": "Code"
  },
  {
   "start": 22115,
   "end": 22178,
   "type": "Undefined"
  },
  {
   "start": 22179,
   "end": 22840,
   "type": "Code"
  },
  {
   "start": 22841,
   "end": 22862,
   "type": "Undefined"
  },
  {
   "start": 22863,
   "end": 24377,
   "type": "Code"
  },
  {
   "start": 24378,
   "end": 24378,
   "type": "Byte"
  },
  {
   "start": 24379,
   "end": 25933,
   "type": "Code"
  },
  {
   "start": 25934,
   "end": 32767,
   "type": "Byte"
  },
  {
   "start": 32768,
   "end": 34815,
   "type": "Undefined"
  },
  {
   "start": 34816,
   "end": 52223,
   "type": "Byte"
  },
  {
   "start": 52224,
   "end": 52735,
   "type": "Undefined"
  },
  {
   "start": 52736,
   "end": 53759,
   "type": "Byte"
  },
  {
   "start": 53760,
   "end": 55295,
   "type": "Undefined"
  },
  {
   "start": 55296,
   "end": 57406,
   "type": "Byte"
  },
  {
   "start": 57407,
   "end": 58339,
   "type": "Code"
  },
  {
   "start": 58340,
   "end": 58355,
   "type": "Undefined"
  },
  {
   "start": 58356,
   "end": 58505,
   "type": "Code"
  },
  {
   "start": 58506,
   "end": 65529,
   "type": "Byte"
  },
  {
   "start": 65530,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpa_02",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpa_13",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "zpa_17",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26,
   "name": "zpa_1A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28,
   "name": "zpa_1C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29,
   "name": "zpa_1D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30,
   "name": "zpa_1E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31,
   "name": "zpa_1F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32,
   "name": "zpa_20",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpa_23",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "zpa_2C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45,
   "name": "zpa_2D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "zpa_34",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpa_35",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpa_37",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56,
   "name": "zpa_38",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpa_39",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60,
   "name": "zpa_3C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "zpp_3D",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 62,
   "name": "zpa_3E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpa_45",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "zpa_46",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpa_47",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 72,
   "name": "zpf_48",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpa_4A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpa_4B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpa_4D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 78,
   "name": "zpf_4E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "zpa_4F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 80,
   "name": "zpf_50",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "zpa_51",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 82,
   "name": "zpf_52",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpa_53",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 84,
   "name": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "zpa_55",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "zpa_57",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "zpa_59",
   "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": "zpf_60",
   "type": "ZeroPageField",
   "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": "zpa_64",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 102,
   "name": "zpa_66",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 103,
   "name": "zpa_67",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "zpa_69",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "zpa_6A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpa_6B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpa_6D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 110,
   "name": "zpa_6E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpa_6F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 112,
   "name": "zpa_70",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 113,
   "name": "zpa_71",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 114,
   "name": "zpa_72",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpa_74",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpa_79",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpa_7A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpa_7D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 126,
   "name": "zpa_7E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "zpa_7F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 128,
   "name": "zpa_80",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpa_81",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpa_82",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpa_83",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "zpa_84",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "zpa_85",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpa_86",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 135,
   "name": "zpa_87",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpa_88",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 137,
   "name": "zpa_89",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpa_8A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 144,
   "name": "zpa_90",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 145,
   "name": "zpa_91",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "zpa_93",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 148,
   "name": "zpa_94",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 149,
   "name": "zpa_95",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 150,
   "name": "zpa_96",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 151,
   "name": "zpa_97",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 152,
   "name": "zpa_98",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 153,
   "name": "zpa_99",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 154,
   "name": "zpa_9A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 156,
   "name": "zpa_9C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 157,
   "name": "zpa_9D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 158,
   "name": "zpa_9E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 159,
   "name": "zpa_9F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 160,
   "name": "zpa_A0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "zpa_A2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 163,
   "name": "zpa_A3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpa_A7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpa_A8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 169,
   "name": "zpf_A9",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "zpa_AA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 171,
   "name": "zpa_AB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 172,
   "name": "zpa_AC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 173,
   "name": "zpa_AD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 175,
   "name": "zpa_AF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 176,
   "name": "zpa_B0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 177,
   "name": "zpa_B1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 178,
   "name": "zpa_B2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 179,
   "name": "zpa_B3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 180,
   "name": "zpa_B4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 181,
   "name": "zpa_B5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 182,
   "name": "zpa_B6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 187,
   "name": "zpa_BB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 188,
   "name": "zpa_BC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 189,
   "name": "zpa_BD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 190,
   "name": "zpa_BE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpf_C0",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpa_C1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 194,
   "name": "zpa_C2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpa_C3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 196,
   "name": "zpa_C4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 197,
   "name": "zpa_C5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpa_C7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpf_C8",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 201,
   "name": "zpa_C9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 202,
   "name": "zpa_CA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 203,
   "name": "zpa_CB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 204,
   "name": "zpa_CC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 205,
   "name": "zpa_CD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 206,
   "name": "zpa_CE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 207,
   "name": "zpa_CF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpa_D0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "zpa_D1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpa_D2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 211,
   "name": "zpa_D3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 212,
   "name": "zpa_D4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 214,
   "name": "zpa_D6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 215,
   "name": "zpa_D7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 216,
   "name": "zpa_D8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 217,
   "name": "zpa_D9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 218,
   "name": "zpa_DA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 219,
   "name": "zpa_DB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 220,
   "name": "zpa_DC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 221,
   "name": "zpa_DD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 222,
   "name": "zpa_DE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 223,
   "name": "zpa_DF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 224,
   "name": "zpf_E0",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 225,
   "name": "zpa_E1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 226,
   "name": "zpa_E2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpa_E3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 228,
   "name": "zpa_E4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 229,
   "name": "zpa_E5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 230,
   "name": "zpa_E6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 231,
   "name": "zpa_E7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 232,
   "name": "zpa_E8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 233,
   "name": "zpa_E9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 234,
   "name": "zpa_EA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 235,
   "name": "zpa_EB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 236,
   "name": "zpf_EC",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 237,
   "name": "zpa_ED",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 238,
   "name": "zpa_EE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 239,
   "name": "zpa_EF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 240,
   "name": "zpa_F0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 241,
   "name": "zpa_F1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 242,
   "name": "zpa_F2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 243,
   "name": "zpa_F3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 244,
   "name": "zpa_F4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 245,
   "name": "zpa_F5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 246,
   "name": "zpa_F6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 247,
   "name": "zpa_F7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 248,
   "name": "zpa_F8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 249,
   "name": "zpa_F9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 250,
   "name": "zpa_FA",
   "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": 255,
   "name": "zpa_FF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 512,
   "name": "a_0200",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 513,
   "name": "a_0201",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 514,
   "name": "a_0202",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 515,
   "name": "a_0203",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 516,
   "name": "a_0204",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 517,
   "name": "a_0205",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 518,
   "name": "a_0206",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 519,
   "name": "a_0207",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 520,
   "name": "a_0208",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 521,
   "name": "a_0209",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 522,
   "name": "a_020A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 523,
   "name": "a_020B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 524,
   "name": "a_020C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 525,
   "name": "a_020D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 528,
   "name": "a_0210",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 529,
   "name": "a_0211",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 530,
   "name": "a_0212",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 533,
   "name": "a_0215",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 534,
   "name": "a_0216",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 536,
   "name": "a_0218",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 537,
   "name": "a_0219",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 539,
   "name": "a_021B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 540,
   "name": "a_021C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 541,
   "name": "a_021D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 542,
   "name": "a_021E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 543,
   "name": "a_021F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 544,
   "name": "a_0220",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 545,
   "name": "a_0221",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 546,
   "name": "a_0222",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 547,
   "name": "a_0223",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 548,
   "name": "a_0224",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 549,
   "name": "a_0225",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 550,
   "name": "a_0226",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 551,
   "name": "a_0227",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 552,
   "name": "a_0228",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 553,
   "name": "a_0229",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 554,
   "name": "a_022A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 555,
   "name": "a_022B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 574,
   "name": "f_023E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 576,
   "name": "f_0240",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 578,
   "name": "f_0242",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 592,
   "name": "f_0250",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 593,
   "name": "a_0251",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 594,
   "name": "a_0252",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 595,
   "name": "a_0253",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 596,
   "name": "f_0254",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 597,
   "name": "a_0255",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 598,
   "name": "a_0256",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 599,
   "name": "a_0257",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 602,
   "name": "f_025A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 604,
   "name": "f_025C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 606,
   "name": "f_025E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 608,
   "name": "a_0260",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 610,
   "name": "f_0262",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 612,
   "name": "f_0264",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 613,
   "name": "a_0265",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 614,
   "name": "f_0266",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 618,
   "name": "f_026A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 619,
   "name": "a_026B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 620,
   "name": "f_026C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 621,
   "name": "a_026D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 622,
   "name": "f_026E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 623,
   "name": "a_026F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 624,
   "name": "f_0270",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 626,
   "name": "f_0272",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 628,
   "name": "f_0274",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 630,
   "name": "f_0276",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 632,
   "name": "a_0278",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 633,
   "name": "a_0279",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 634,
   "name": "f_027A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 635,
   "name": "a_027B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 636,
   "name": "f_027C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 638,
   "name": "f_027E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 640,
   "name": "f_0280",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 642,
   "name": "f_0282",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 644,
   "name": "a_0284",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 645,
   "name": "a_0285",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 646,
   "name": "f_0286",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 648,
   "name": "a_0288",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 649,
   "name": "a_0289",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 650,
   "name": "a_028A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 651,
   "name": "a_028B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 652,
   "name": "f_028C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 654,
   "name": "f_028E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 656,
   "name": "f_0290",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 658,
   "name": "f_0292",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 662,
   "name": "f_0296",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 668,
   "name": "f_029C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 669,
   "name": "a_029D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 670,
   "name": "f_029E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 672,
   "name": "a_02A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 673,
   "name": "a_02A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 674,
   "name": "f_02A2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 676,
   "name": "f_02A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 678,
   "name": "a_02A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 680,
   "name": "f_02A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 686,
   "name": "f_02AE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 688,
   "name": "f_02B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 690,
   "name": "a_02B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 691,
   "name": "a_02B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 692,
   "name": "a_02B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 693,
   "name": "a_02B5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 694,
   "name": "a_02B6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 695,
   "name": "a_02B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 696,
   "name": "a_02B8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 697,
   "name": "a_02B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 698,
   "name": "f_02BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 700,
   "name": "f_02BC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 704,
   "name": "f_02C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 710,
   "name": "a_02C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 711,
   "name": "a_02C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 716,
   "name": "f_02CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 718,
   "name": "f_02CE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 722,
   "name": "f_02D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 728,
   "name": "f_02D8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 734,
   "name": "a_02DE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 735,
   "name": "a_02DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 736,
   "name": "f_02E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 740,
   "name": "a_02E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 741,
   "name": "a_02E5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 742,
   "name": "f_02E6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 746,
   "name": "a_02EA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 747,
   "name": "a_02EB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 748,
   "name": "f_02EC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 749,
   "name": "a_02ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 752,
   "name": "a_02F0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 753,
   "name": "a_02F1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 754,
   "name": "a_02F2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 755,
   "name": "a_02F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 756,
   "name": "f_02F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 757,
   "name": "a_02F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 768,
   "name": "f_0300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 771,
   "name": "a_0303",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 775,
   "name": "a_0307",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 776,
   "name": "a_0308",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 777,
   "name": "a_0309",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 781,
   "name": "a_030D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 782,
   "name": "a_030E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 783,
   "name": "a_030F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 791,
   "name": "a_0317",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 793,
   "name": "a_0319",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 796,
   "name": "a_031C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 797,
   "name": "a_031D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 798,
   "name": "a_031E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 799,
   "name": "a_031F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 800,
   "name": "f_0320",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 803,
   "name": "a_0323",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 805,
   "name": "a_0325",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 807,
   "name": "a_0327",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 808,
   "name": "a_0328",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 809,
   "name": "a_0329",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 813,
   "name": "a_032D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 814,
   "name": "a_032E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 815,
   "name": "a_032F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 821,
   "name": "a_0335",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 823,
   "name": "a_0337",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 825,
   "name": "a_0339",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 828,
   "name": "a_033C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 829,
   "name": "a_033D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 830,
   "name": "a_033E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 831,
   "name": "a_033F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 832,
   "name": "f_0340",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 833,
   "name": "f_0341",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 834,
   "name": "f_0342",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 836,
   "name": "f_0344",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 838,
   "name": "f_0346",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 840,
   "name": "f_0348",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 841,
   "name": "a_0349",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 842,
   "name": "a_034A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 844,
   "name": "a_034C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 846,
   "name": "a_034E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 848,
   "name": "f_0350",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 880,
   "name": "f_0370",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 928,
   "name": "f_03A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 952,
   "name": "f_03B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 976,
   "name": "f_03D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1000,
   "name": "f_03E8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1056,
   "name": "f_0420",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1072,
   "name": "f_0430",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1096,
   "name": "f_0448",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1152,
   "name": "a_0480",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1153,
   "name": "a_0481",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1154,
   "name": "f_0482",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1155,
   "name": "a_0483",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1156,
   "name": "a_0484",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1157,
   "name": "a_0485",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1158,
   "name": "a_0486",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1159,
   "name": "a_0487",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1160,
   "name": "a_0488",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1161,
   "name": "a_0489",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1162,
   "name": "a_048A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1163,
   "name": "a_048B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1164,
   "name": "a_048C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1165,
   "name": "a_048D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1166,
   "name": "a_048E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1167,
   "name": "a_048F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1168,
   "name": "f_0490",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1169,
   "name": "a_0491",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1170,
   "name": "a_0492",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1171,
   "name": "a_0493",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1172,
   "name": "a_0494",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1173,
   "name": "a_0495",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1174,
   "name": "a_0496",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1175,
   "name": "a_0497",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1176,
   "name": "a_0498",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1177,
   "name": "a_0499",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1178,
   "name": "a_049A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1179,
   "name": "a_049B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1180,
   "name": "a_049C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1181,
   "name": "a_049D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1182,
   "name": "a_049E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1183,
   "name": "a_049F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2304,
   "name": "game_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2307,
   "name": "options_record",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2314,
   "name": "opt_crash",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2315,
   "name": "opt_players",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2316,
   "name": "opt_planes",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2317,
   "name": "opt_skill",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2318,
   "name": "opt_scenario",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2319,
   "name": "opt_hits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2336,
   "name": "hiscore_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2346,
   "name": "hiscore_scores",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2347,
   "name": "f_092B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2356,
   "name": "hiscore_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2421,
   "name": "immortal_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2422,
   "name": "demo_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2423,
   "name": "demo_save8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2431,
   "name": "demo_saved_options",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2439,
   "name": "title_page",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2440,
   "name": "vector_ptr_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2441,
   "name": "title_from_scores",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2442,
   "name": "security_tries",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2443,
   "name": "start_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2464,
   "name": "b_09A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2511,
   "name": "b_09CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2524,
   "name": "b_09DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2533,
   "name": "b_09E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2535,
   "name": "b_09E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2548,
   "name": "b_09F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2557,
   "name": "b_09FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2561,
   "name": "title_restart",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2565,
   "name": "title_restart_scores",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2567,
   "name": "b_0A07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2637,
   "name": "b_0A4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2709,
   "name": "b_0A95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2732,
   "name": "b_0AAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2743,
   "name": "b_0AB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2775,
   "name": "title_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2780,
   "name": "j_0ADC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2795,
   "name": "b_0AEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2879,
   "name": "j_0B3F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2901,
   "name": "b_0B55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2908,
   "name": "b_0B5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2916,
   "name": "b_0B64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2919,
   "name": "options_screen",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2951,
   "name": "j_0B87",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2989,
   "name": "b_0BAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3001,
   "name": "commence_conflict",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3018,
   "name": "demo_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3025,
   "name": "b_0BD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3062,
   "name": "b_0BF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3071,
   "name": "game_setup",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3195,
   "name": "b_0C7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3199,
   "name": "b_0C7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3230,
   "name": "b_0C9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3324,
   "name": "b_0CFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3327,
   "name": "pass_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3352,
   "name": "b_0D18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3376,
   "name": "b_0D30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3387,
   "name": "plane1_fly",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3411,
   "name": "b_0D53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3429,
   "name": "b_0D65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3503,
   "name": "b_0DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3523,
   "name": "b_0DC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3535,
   "name": "plane1_cockpit",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3543,
   "name": "b_0DD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3560,
   "name": "b_0DE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3573,
   "name": "b_0DF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3586,
   "name": "b_0E02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3588,
   "name": "b_0E04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3600,
   "name": "plane1_map",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3613,
   "name": "plane1_other_states",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3621,
   "name": "b_0E25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3627,
   "name": "j_0E2B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3660,
   "name": "b_0E4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3668,
   "name": "b_0E54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3676,
   "name": "b_0E5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3679,
   "name": "b_0E5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3686,
   "name": "plane1_hangar",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3730,
   "name": "b_0E92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3745,
   "name": "b_0EA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3748,
   "name": "b_0EA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3778,
   "name": "b_0EC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3789,
   "name": "j_0ECD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3813,
   "name": "b_0EE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3831,
   "name": "j_0EF7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3842,
   "name": "b_0F02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3853,
   "name": "plane1_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3888,
   "name": "plane2_pass",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3890,
   "name": "b_0F32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3914,
   "name": "b_0F4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3938,
   "name": "b_0F62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3949,
   "name": "b_0F6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3977,
   "name": "b_0F89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4004,
   "name": "b_0FA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4020,
   "name": "b_0FB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4035,
   "name": "b_0FC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4104,
   "name": "b_1008",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4124,
   "name": "b_101C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4130,
   "name": "plane2_cockpit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4138,
   "name": "b_102A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4164,
   "name": "b_1044",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4177,
   "name": "b_1051",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4180,
   "name": "b_1054",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4190,
   "name": "plane2_other_states",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4194,
   "name": "j_1062",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4227,
   "name": "b_1083",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4240,
   "name": "b_1090",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4243,
   "name": "b_1093",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4246,
   "name": "b_1096",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4253,
   "name": "plane2_hangar",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4301,
   "name": "b_10CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4316,
   "name": "b_10DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4319,
   "name": "b_10DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4327,
   "name": "b_10E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4360,
   "name": "b_1108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4367,
   "name": "b_110F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4377,
   "name": "j_1119",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4389,
   "name": "b_1125",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4398,
   "name": "b_112E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4402,
   "name": "b_1132",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4405,
   "name": "b_1135",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4408,
   "name": "b_1138",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4420,
   "name": "b_1144",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4442,
   "name": "j_115A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4466,
   "name": "b_1172",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4468,
   "name": "b_1174",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4480,
   "name": "b_1180",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4487,
   "name": "b_1187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4496,
   "name": "j_1190",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4508,
   "name": "b_119C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4522,
   "name": "j_11AA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4533,
   "name": "b_11B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4544,
   "name": "plane2_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4585,
   "name": "pass_shared",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4587,
   "name": "b_11EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4605,
   "name": "b_11FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4626,
   "name": "b_1212",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4629,
   "name": "b_1215",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4653,
   "name": "b_122D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4660,
   "name": "b_1234",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4699,
   "name": "b_125B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4714,
   "name": "b_126A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4736,
   "name": "b_1280",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4758,
   "name": "b_1296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4774,
   "name": "b_12A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4803,
   "name": "b_12C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4811,
   "name": "b_12CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4819,
   "name": "b_12D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4832,
   "name": "b_12E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4843,
   "name": "b_12EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4850,
   "name": "b_12F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4863,
   "name": "pause_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4883,
   "name": "b_1313",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4891,
   "name": "b_131B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4910,
   "name": "b_132E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4920,
   "name": "b_1338",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4939,
   "name": "b_134B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4960,
   "name": "b_1360",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4963,
   "name": "menu_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4979,
   "name": "b_1373",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4991,
   "name": "b_137F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5003,
   "name": "b_138B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5024,
   "name": "j_13A0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5043,
   "name": "b_13B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5057,
   "name": "r_13C1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5058,
   "name": "s_13C2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 5068,
   "name": "horizon_slopes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5095,
   "name": "b_13E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5097,
   "name": "r_13E9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5098,
   "name": "map_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5123,
   "name": "j_1403",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5133,
   "name": "b_140D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5215,
   "name": "b_145F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5229,
   "name": "b_146D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5244,
   "name": "b_147C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5246,
   "name": "j_147E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5266,
   "name": "b_1492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5275,
   "name": "j_149B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5289,
   "name": "b_14A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5292,
   "name": "b_14AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5295,
   "name": "map_square_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5307,
   "name": "b_14BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5314,
   "name": "b_14C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5408,
   "name": "b_1520",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5419,
   "name": "b_152B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5444,
   "name": "b_1544",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5458,
   "name": "b_1552",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5468,
   "name": "r_155C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5469,
   "name": "unused_set_weapon_stock",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5483,
   "name": "b_156B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5491,
   "name": "b_1573",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5505,
   "name": "shape_build",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5521,
   "name": "b_1591",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5523,
   "name": "b_1593",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5569,
   "name": "b_15C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5574,
   "name": "b_15C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5575,
   "name": "a_15C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5576,
   "name": "a_15C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5578,
   "name": "a_15CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5579,
   "name": "a_15CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5584,
   "name": "a_15D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5592,
   "name": "shape_last_byte",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5595,
   "name": "shape_shift",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5631,
   "name": "b_15FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5648,
   "name": "b_1610",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5654,
   "name": "b_1616",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5658,
   "name": "b_161A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5662,
   "name": "b_161E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5676,
   "name": "r_162C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5677,
   "name": "b_162D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5679,
   "name": "b_162F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5695,
   "name": "b_163F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5732,
   "name": "b_1664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5753,
   "name": "b_1679",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5760,
   "name": "b_1680",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5764,
   "name": "b_1684",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5768,
   "name": "b_1688",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5782,
   "name": "b_1696",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5784,
   "name": "b_1698",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5799,
   "name": "shape_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5838,
   "name": "a_16CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5845,
   "name": "j_16D5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5846,
   "name": "a_16D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5853,
   "name": "j_16DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5865,
   "name": "b_16E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5913,
   "name": "b_1719",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5925,
   "name": "b_1725",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5926,
   "name": "a_1726",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5927,
   "name": "a_1727",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5938,
   "name": "a_1732",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5939,
   "name": "a_1733",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5946,
   "name": "j_173A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5947,
   "name": "a_173B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5948,
   "name": "a_173C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5959,
   "name": "b_1747",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5964,
   "name": "j_174C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5975,
   "name": "b_1757",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5984,
   "name": "r_1760",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5985,
   "name": "b_1761",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5988,
   "name": "a_1764",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5989,
   "name": "a_1765",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5993,
   "name": "gun_sight",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6005,
   "name": "b_1775",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6029,
   "name": "b_178D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6035,
   "name": "b_1793",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6039,
   "name": "b_1797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6058,
   "name": "b_17AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6064,
   "name": "b_17B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6068,
   "name": "b_17B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6070,
   "name": "b_17B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6096,
   "name": "r_17D0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6097,
   "name": "draw_message_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6113,
   "name": "b_17E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6128,
   "name": "b_17F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6129,
   "name": "a_17F1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6130,
   "name": "a_17F2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6139,
   "name": "b_17FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6140,
   "name": "a_17FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6143,
   "name": "a_17FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6144,
   "name": "a_1800",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6153,
   "name": "a_1809",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6171,
   "name": "cannon_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6186,
   "name": "b_182A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6197,
   "name": "b_1835",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6208,
   "name": "b_1840",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6219,
   "name": "b_184B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6222,
   "name": "j_184E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6274,
   "name": "b_1882",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6289,
   "name": "b_1891",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6292,
   "name": "a_1894",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6296,
   "name": "a_1898",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6320,
   "name": "b_18B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6340,
   "name": "b_18C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6367,
   "name": "r_18DF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6368,
   "name": "print_panel_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6399,
   "name": "b_18FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6400,
   "name": "a_1900",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6401,
   "name": "a_1901",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6408,
   "name": "b_1908",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6420,
   "name": "b_1914",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6434,
   "name": "copy_radar_template",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6483,
   "name": "b_1953",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6489,
   "name": "b_1959",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6497,
   "name": "b_1961",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6498,
   "name": "a_1962",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6499,
   "name": "a_1963",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6507,
   "name": "b_196B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6552,
   "name": "b_1998",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6561,
   "name": "bank_indicators",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6592,
   "name": "b_19C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6603,
   "name": "b_19CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6604,
   "name": "a_19CC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6605,
   "name": "a_19CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6609,
   "name": "a_19D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6611,
   "name": "a_19D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6650,
   "name": "b_19FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6667,
   "name": "b_1A0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6668,
   "name": "a_1A0C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6669,
   "name": "a_1A0D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6673,
   "name": "a_1A11",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6675,
   "name": "a_1A13",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6676,
   "name": "a_1A14",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6696,
   "name": "slow_instruments",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 6749,
   "name": "b_1A5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6765,
   "name": "b_1A6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6771,
   "name": "j_1A73",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6777,
   "name": "b_1A79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6783,
   "name": "b_1A7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6807,
   "name": "b_1A97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6823,
   "name": "b_1AA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6881,
   "name": "b_1AE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6886,
   "name": "b_1AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6887,
   "name": "a_1AE7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6888,
   "name": "a_1AE8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6892,
   "name": "a_1AEC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6894,
   "name": "a_1AEE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6905,
   "name": "slow_instruments_two",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 6965,
   "name": "b_1B35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6981,
   "name": "b_1B45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6990,
   "name": "b_1B4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7006,
   "name": "b_1B5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7012,
   "name": "j_1B64",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7018,
   "name": "b_1B6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7024,
   "name": "b_1B70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7096,
   "name": "b_1BB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7101,
   "name": "b_1BBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7102,
   "name": "a_1BBE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7103,
   "name": "a_1BBF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7107,
   "name": "a_1BC3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7109,
   "name": "a_1BC5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7110,
   "name": "a_1BC6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7120,
   "name": "r_1BD0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7121,
   "name": "copy_screen_block",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7131,
   "name": "b_1BDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7133,
   "name": "b_1BDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7160,
   "name": "sprite_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7180,
   "name": "b_1C0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7205,
   "name": "add_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7230,
   "name": "b_1C3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7236,
   "name": "side_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7274,
   "name": "b_1C6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7286,
   "name": "b_1C76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7344,
   "name": "b_1CB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7365,
   "name": "j_1CC5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7378,
   "name": "b_1CD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7404,
   "name": "b_1CEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7411,
   "name": "r_1CF3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7412,
   "name": "planes_left_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7437,
   "name": "fill_colour_ram",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7450,
   "name": "b_1D1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7453,
   "name": "a_1D1D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7454,
   "name": "b_1D1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7466,
   "name": "select_draw_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7474,
   "name": "b_1D32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7477,
   "name": "set_print_position",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7484,
   "name": "read_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7506,
   "name": "b_1D52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7509,
   "name": "b_1D55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7517,
   "name": "b_1D5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7524,
   "name": "b_1D64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7540,
   "name": "b_1D74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7541,
   "name": "b_1D75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7547,
   "name": "ai_hold_altitude",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7555,
   "name": "b_1D83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7606,
   "name": "b_1DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7616,
   "name": "b_1DC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7623,
   "name": "b_1DC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7626,
   "name": "r_1DCA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7627,
   "name": "b_1DCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7642,
   "name": "wait_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7646,
   "name": "b_1DDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7651,
   "name": "roll_quarter_flags",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7662,
   "name": "b_1DEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7669,
   "name": "random_height",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7697,
   "name": "clear_shown_half",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7726,
   "name": "unused_send_disk_command",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7762,
   "name": "b_1E52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7763,
   "name": "a_1E53",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7764,
   "name": "a_1E54",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7775,
   "name": "b_1E5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7778,
   "name": "kernal_prepare",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7803,
   "name": "b_1E7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7813,
   "name": "b_1E85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7832,
   "name": "save_options",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7845,
   "name": "b_1EA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7876,
   "name": "write_disk_block",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7919,
   "name": "b_1EEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7942,
   "name": "b_1F06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7972,
   "name": "block_write_command",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7982,
   "name": "block_write_sector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7983,
   "name": "buffer_channel_name",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7984,
   "name": "save_high_scores",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7994,
   "name": "b_1F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8025,
   "name": "unused_bytes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8032,
   "name": "centre_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8047,
   "name": "b_1F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8078,
   "name": "music_restart",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8091,
   "name": "r_1F9B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8092,
   "name": "effects_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8108,
   "name": "r_1FAC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8109,
   "name": "landing_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8168,
   "name": "b_1FE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8171,
   "name": "b_1FEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8188,
   "name": "hangar_menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8199,
   "name": "b_2007",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8221,
   "name": "b_201D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8232,
   "name": "b_2028",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8236,
   "name": "j_202C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8294,
   "name": "b_2066",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8299,
   "name": "r_206B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8300,
   "name": "select_weapon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8305,
   "name": "lose_plane",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8313,
   "name": "b_2079",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8333,
   "name": "r_208D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8334,
   "name": "reset_plane",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8409,
   "name": "b_20D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8429,
   "name": "b_20ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8436,
   "name": "b_20F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8443,
   "name": "clear_hangar_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8464,
   "name": "b_2110",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8468,
   "name": "b_2114",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8480,
   "name": "start_explosion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8506,
   "name": "set_explosion_kind",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8518,
   "name": "b_2146",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8522,
   "name": "step_explosion",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8541,
   "name": "b_215D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8550,
   "name": "b_2166",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8558,
   "name": "row_pointer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8572,
   "name": "ai_set_pitch",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8583,
   "name": "b_2187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8597,
   "name": "b_2195",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8609,
   "name": "b_21A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8627,
   "name": "b_21B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8630,
   "name": "ai_set_throttle",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8649,
   "name": "b_21C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8653,
   "name": "b_21CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8668,
   "name": "b_21DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8675,
   "name": "char_address_high",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8692,
   "name": "row_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8706,
   "name": "row_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8720,
   "name": "fill_rows",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8740,
   "name": "b_2224",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8742,
   "name": "b_2226",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8743,
   "name": "a_2227",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8745,
   "name": "a_2229",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8746,
   "name": "a_222A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8771,
   "name": "fire_weapon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8778,
   "name": "b_224A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8786,
   "name": "b_2252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8798,
   "name": "r_225E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8799,
   "name": "b_225F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8813,
   "name": "b_226D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8821,
   "name": "b_2275",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8841,
   "name": "b_2289",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8850,
   "name": "r_2292",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8851,
   "name": "b_2293",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8925,
   "name": "b_22DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8931,
   "name": "b_22E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8944,
   "name": "b_22F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9034,
   "name": "r_234A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9035,
   "name": "lock_box",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9084,
   "name": "b_237C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9096,
   "name": "b_2388",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9137,
   "name": "b_23B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9149,
   "name": "b_23BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9164,
   "name": "b_23CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9170,
   "name": "b_23D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9184,
   "name": "weapons_aim",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9191,
   "name": "b_23E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9227,
   "name": "b_240B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9238,
   "name": "b_2416",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9241,
   "name": "b_2419",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9253,
   "name": "b_2425",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9268,
   "name": "b_2434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9289,
   "name": "r_2449",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9290,
   "name": "b_244A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9311,
   "name": "b_245F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9338,
   "name": "b_247A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9349,
   "name": "b_2485",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9352,
   "name": "range_readout",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9358,
   "name": "range_readout_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9387,
   "name": "r_24AB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9388,
   "name": "b_24AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9403,
   "name": "b_24BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9417,
   "name": "b_24C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9435,
   "name": "missile_hits_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9471,
   "name": "b_24FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9483,
   "name": "r_250B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9484,
   "name": "target_burning",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9520,
   "name": "r_2530",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9521,
   "name": "decoys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9529,
   "name": "b_2539",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9552,
   "name": "b_2550",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9564,
   "name": "j_255C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9571,
   "name": "r_2563",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9572,
   "name": "b_2564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9588,
   "name": "b_2574",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9602,
   "name": "b_2582",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9619,
   "name": "b_2593",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9649,
   "name": "b_25B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9679,
   "name": "b_25CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9694,
   "name": "b_25DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9711,
   "name": "b_25EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9719,
   "name": "b_25F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9818,
   "name": "r_265A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9819,
   "name": "missile_fly",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9827,
   "name": "b_2663",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9835,
   "name": "b_266B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9847,
   "name": "b_2677",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9857,
   "name": "b_2681",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9868,
   "name": "b_268C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9889,
   "name": "b_26A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9900,
   "name": "b_26AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9912,
   "name": "b_26B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9952,
   "name": "b_26E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9961,
   "name": "b_26E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9975,
   "name": "b_26F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10005,
   "name": "b_2715",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10014,
   "name": "b_271E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10023,
   "name": "b_2727",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10045,
   "name": "b_273D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10061,
   "name": "b_274D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10068,
   "name": "b_2754",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10071,
   "name": "j_2757",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10080,
   "name": "j_2760",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10086,
   "name": "missile_climb",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10141,
   "name": "b_279D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10154,
   "name": "b_27AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10178,
   "name": "b_27C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10195,
   "name": "r_27D3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10196,
   "name": "air_ground_missile",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10211,
   "name": "b_27E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10216,
   "name": "b_27E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10232,
   "name": "b_27F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10235,
   "name": "add_damage",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10249,
   "name": "b_2809",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10259,
   "name": "b_2813",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10283,
   "name": "b_282B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10287,
   "name": "warnings",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10295,
   "name": "b_2837",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10353,
   "name": "b_2871",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10394,
   "name": "b_289A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10398,
   "name": "b_289E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10420,
   "name": "b_28B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10447,
   "name": "b_28CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10463,
   "name": "r_28DF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10464,
   "name": "stick_roll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10471,
   "name": "b_28E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10481,
   "name": "b_28F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10494,
   "name": "b_28FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10496,
   "name": "b_2900",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10526,
   "name": "b_291E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10545,
   "name": "b_2931",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10555,
   "name": "b_293B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10563,
   "name": "r_2943",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10564,
   "name": "b_2944",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10583,
   "name": "b_2957",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10608,
   "name": "options_screen_input",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10629,
   "name": "r_2985",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10630,
   "name": "b_2986",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10664,
   "name": "b_29A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10685,
   "name": "b_29BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10694,
   "name": "b_29C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10703,
   "name": "b_29CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10719,
   "name": "b_29DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10728,
   "name": "b_29E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10744,
   "name": "b_29F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10748,
   "name": "stick_pitch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10766,
   "name": "b_2A0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10776,
   "name": "b_2A18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10780,
   "name": "b_2A1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10792,
   "name": "r_2A28",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10793,
   "name": "b_2A29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10820,
   "name": "b_2A44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10826,
   "name": "b_2A4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10832,
   "name": "options_cursor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10863,
   "name": "menu_cursor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10893,
   "name": "name_cursor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10918,
   "name": "nmi_repair",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10948,
   "name": "nmi_saved_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10951,
   "name": "wipe_to_black",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10961,
   "name": "b_2AD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10994,
   "name": "b_2AF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11030,
   "name": "b_2B16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11049,
   "name": "wipe_to_white",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11057,
   "name": "b_2B31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11090,
   "name": "b_2B52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11128,
   "name": "b_2B78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11147,
   "name": "ai_hold_present_height",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11158,
   "name": "ai_turn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11168,
   "name": "b_2BA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11182,
   "name": "b_2BAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11192,
   "name": "b_2BB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11200,
   "name": "b_2BC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11213,
   "name": "b_2BCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11222,
   "name": "b_2BD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11229,
   "name": "b_2BDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11230,
   "name": "b_2BDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11233,
   "name": "ai_attack",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11281,
   "name": "b_2C11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11298,
   "name": "r_2C22",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11299,
   "name": "ai_match_speed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11317,
   "name": "b_2C35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11322,
   "name": "ai_bank",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11333,
   "name": "b_2C45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11345,
   "name": "b_2C51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11363,
   "name": "b_2C63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11371,
   "name": "b_2C6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11373,
   "name": "b_2C6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11385,
   "name": "b_2C79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11390,
   "name": "b_2C7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11395,
   "name": "b_2C83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11398,
   "name": "enemy_in_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11416,
   "name": "b_2C98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11419,
   "name": "b_2C9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11462,
   "name": "b_2CC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11472,
   "name": "b_2CD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11478,
   "name": "j_2CD6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11482,
   "name": "b_2CDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11490,
   "name": "b_2CE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11494,
   "name": "b_2CE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11497,
   "name": "b_2CE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11507,
   "name": "b_2CF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11510,
   "name": "b_2CF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11590,
   "name": "b_2D46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11598,
   "name": "b_2D4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11702,
   "name": "b_2DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11774,
   "name": "j_2DFE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11812,
   "name": "j_2E24",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11824,
   "name": "j_2E30",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11832,
   "name": "b_2E38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11837,
   "name": "j_2E3D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11850,
   "name": "j_2E4A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11863,
   "name": "message_rotation",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11871,
   "name": "b_2E5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11878,
   "name": "b_2E66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11885,
   "name": "b_2E6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11908,
   "name": "b_2E84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11920,
   "name": "b_2E90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11924,
   "name": "b_2E94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11937,
   "name": "b_2EA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11955,
   "name": "b_2EB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11985,
   "name": "b_2ED1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12043,
   "name": "j_2F0B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12056,
   "name": "b_2F18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12069,
   "name": "b_2F25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12085,
   "name": "b_2F35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12115,
   "name": "b_2F53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12173,
   "name": "r_2F8D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12174,
   "name": "take_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12197,
   "name": "b_2FA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12198,
   "name": "a_2FA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12199,
   "name": "a_2FA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12209,
   "name": "b_2FB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12228,
   "name": "b_2FC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12229,
   "name": "a_2FC5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12230,
   "name": "a_2FC6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12237,
   "name": "j_2FCD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12324,
   "name": "b_3024",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12341,
   "name": "b_3035",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12365,
   "name": "b_304D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12375,
   "name": "b_3057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12417,
   "name": "b_3081",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12428,
   "name": "place_targets",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12459,
   "name": "r_30AB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12460,
   "name": "store_attitude",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12474,
   "name": "b_30BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12501,
   "name": "b_30D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12505,
   "name": "clear_variables",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12509,
   "name": "b_30DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12516,
   "name": "b_30E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12539,
   "name": "colour_view_one",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12541,
   "name": "b_30FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12569,
   "name": "colour_panel_one",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12571,
   "name": "b_311B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12587,
   "name": "colour_view_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12589,
   "name": "b_312D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12617,
   "name": "colour_panel_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12619,
   "name": "b_314B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12635,
   "name": "draw_horizon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12677,
   "name": "b_3185",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12682,
   "name": "a_318A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12717,
   "name": "b_31AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12721,
   "name": "a_31B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12722,
   "name": "a_31B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12736,
   "name": "b_31C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12739,
   "name": "b_31C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12746,
   "name": "b_31CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12752,
   "name": "b_31D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12764,
   "name": "b_31DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12767,
   "name": "b_31DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12783,
   "name": "b_31EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12801,
   "name": "b_3201",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12803,
   "name": "b_3203",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12810,
   "name": "b_320A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12845,
   "name": "b_322D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12846,
   "name": "a_322E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12847,
   "name": "a_322F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12857,
   "name": "b_3239",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12859,
   "name": "b_323B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12860,
   "name": "a_323C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12861,
   "name": "a_323D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12868,
   "name": "b_3244",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12890,
   "name": "b_325A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12902,
   "name": "j_3266",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12912,
   "name": "b_3270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12921,
   "name": "b_3279",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12923,
   "name": "b_327B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12935,
   "name": "b_3287",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12955,
   "name": "b_329B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12962,
   "name": "b_32A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12981,
   "name": "b_32B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12999,
   "name": "b_32C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13013,
   "name": "b_32D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13022,
   "name": "b_32DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13039,
   "name": "b_32EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13047,
   "name": "b_32F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13050,
   "name": "b_32FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13065,
   "name": "j_3309",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13075,
   "name": "b_3313",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13082,
   "name": "b_331A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13084,
   "name": "b_331C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13101,
   "name": "b_332D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13115,
   "name": "b_333B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13120,
   "name": "b_3340",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13143,
   "name": "b_3357",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13161,
   "name": "b_3369",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13175,
   "name": "j_3377",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13187,
   "name": "b_3383",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13223,
   "name": "b_33A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13239,
   "name": "b_33B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13240,
   "name": "a_33B8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13241,
   "name": "a_33B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13246,
   "name": "a_33BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13248,
   "name": "a_33C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13251,
   "name": "a_33C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13255,
   "name": "j_33C7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13261,
   "name": "b_33CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13265,
   "name": "a_33D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13268,
   "name": "a_33D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13273,
   "name": "j_33D9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13285,
   "name": "b_33E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13288,
   "name": "b_33E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13297,
   "name": "j_33F1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13305,
   "name": "b_33F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13309,
   "name": "b_33FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13317,
   "name": "b_3405",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13323,
   "name": "j_340B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13337,
   "name": "b_3419",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13357,
   "name": "b_342D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13363,
   "name": "view_all_sky_or_ground",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13387,
   "name": "b_344B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13392,
   "name": "a_3450",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13397,
   "name": "bar_plane_one",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13426,
   "name": "b_3472",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13442,
   "name": "b_3482",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13448,
   "name": "b_3488",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13449,
   "name": "a_3489",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13469,
   "name": "bar_plane_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13503,
   "name": "b_34BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13519,
   "name": "b_34CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13525,
   "name": "b_34D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13531,
   "name": "b_34DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13532,
   "name": "a_34DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13533,
   "name": "a_34DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13560,
   "name": "post_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13583,
   "name": "b_350F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13588,
   "name": "b_3514",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13607,
   "name": "b_3527",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13612,
   "name": "medium_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13658,
   "name": "b_355A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13711,
   "name": "b_358F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13767,
   "name": "print_big_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13791,
   "name": "j_35DF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13794,
   "name": "a_35E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13795,
   "name": "a_35E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13812,
   "name": "b_35F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13818,
   "name": "b_35FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13836,
   "name": "b_360C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13848,
   "name": "b_3618",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13869,
   "name": "b_362D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13879,
   "name": "draw_big_text_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13883,
   "name": "b_363B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13892,
   "name": "b_3644",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13912,
   "name": "b_3658",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13919,
   "name": "b_365F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13931,
   "name": "read_controls",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13978,
   "name": "b_369A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13984,
   "name": "b_36A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14012,
   "name": "b_36BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14017,
   "name": "b_36C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14023,
   "name": "b_36C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14028,
   "name": "b_36CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14044,
   "name": "b_36DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14049,
   "name": "b_36E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14055,
   "name": "b_36E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14060,
   "name": "b_36EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14076,
   "name": "b_36FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14081,
   "name": "b_3701",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14106,
   "name": "b_371A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14133,
   "name": "b_3735",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14137,
   "name": "b_3739",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14152,
   "name": "b_3748",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14159,
   "name": "b_374F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14166,
   "name": "b_3756",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14175,
   "name": "b_375F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14182,
   "name": "b_3766",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14189,
   "name": "b_376D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14196,
   "name": "b_3774",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14203,
   "name": "b_377B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14210,
   "name": "b_3782",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14218,
   "name": "b_378A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14225,
   "name": "b_3791",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14232,
   "name": "b_3798",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14239,
   "name": "b_379F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14246,
   "name": "b_37A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14284,
   "name": "b_37CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14294,
   "name": "b_37D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14304,
   "name": "r_37E0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14305,
   "name": "security_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14311,
   "name": "b_37E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14332,
   "name": "b_37FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14383,
   "name": "j_382F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14425,
   "name": "b_3859",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14433,
   "name": "b_3861",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14435,
   "name": "b_3863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14452,
   "name": "b_3874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14465,
   "name": "b_3881",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14477,
   "name": "b_388D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14499,
   "name": "b_38A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14501,
   "name": "b_38A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14521,
   "name": "b_38B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14544,
   "name": "b_38D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14555,
   "name": "b_38DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14568,
   "name": "draw_title_logo",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14570,
   "name": "b_38EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14607,
   "name": "b_390F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14626,
   "name": "colour_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14638,
   "name": "b_392E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14656,
   "name": "a_3940",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14657,
   "name": "a_3941",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14663,
   "name": "r_3947",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14664,
   "name": "project_to_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14673,
   "name": "b_3951",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14692,
   "name": "b_3964",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14717,
   "name": "b_397D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14725,
   "name": "j_3985",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14850,
   "name": "b_3A02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14868,
   "name": "j_3A14",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14877,
   "name": "j_3A1D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14892,
   "name": "b_3A2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14917,
   "name": "b_3A45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14924,
   "name": "b_3A4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14940,
   "name": "j_3A5C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14965,
   "name": "target_geometry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15049,
   "name": "b_3AC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15057,
   "name": "b_3AD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15077,
   "name": "b_3AE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15103,
   "name": "b_3AFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15137,
   "name": "b_3B21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15145,
   "name": "b_3B29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15165,
   "name": "b_3B3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15191,
   "name": "r_3B57",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15192,
   "name": "missile_geometry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15276,
   "name": "b_3BAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15284,
   "name": "b_3BB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15338,
   "name": "b_3BEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15366,
   "name": "r_3C06",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15367,
   "name": "plane_geometry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15405,
   "name": "missiles_in_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15409,
   "name": "j_3C31",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15448,
   "name": "b_3C58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15451,
   "name": "b_3C5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15476,
   "name": "b_3C74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15496,
   "name": "j_3C88",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15512,
   "name": "j_3C98",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15519,
   "name": "r_3C9F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15520,
   "name": "r_3CA0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15521,
   "name": "radar_dot",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15547,
   "name": "b_3CBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15563,
   "name": "b_3CCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15573,
   "name": "b_3CD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15586,
   "name": "b_3CE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15596,
   "name": "b_3CEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15606,
   "name": "b_3CF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15702,
   "name": "r_3D56",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15703,
   "name": "move_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15711,
   "name": "b_3D5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15751,
   "name": "b_3D87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15759,
   "name": "b_3D8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15761,
   "name": "b_3D91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15779,
   "name": "b_3DA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15822,
   "name": "b_3DCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15824,
   "name": "b_3DD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15840,
   "name": "j_3DE0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15882,
   "name": "j_3E0A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15888,
   "name": "b_3E10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15905,
   "name": "b_3E21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15956,
   "name": "r_3E54",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15957,
   "name": "set_velocity",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15976,
   "name": "b_3E68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16001,
   "name": "b_3E81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16084,
   "name": "to_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16095,
   "name": "b_3EDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16111,
   "name": "b_3EEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16121,
   "name": "j_3EF9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16131,
   "name": "b_3F03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16137,
   "name": "b_3F09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16155,
   "name": "b_3F1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16161,
   "name": "j_3F21",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16174,
   "name": "range_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16200,
   "name": "b_3F48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16208,
   "name": "j_3F50",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16221,
   "name": "b_3F5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16225,
   "name": "r_3F61",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16226,
   "name": "drop_leading_zeros",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16230,
   "name": "b_3F66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16239,
   "name": "b_3F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16252,
   "name": "b_3F7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16262,
   "name": "r_3F86",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16263,
   "name": "unused_blank_zeros",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16265,
   "name": "b_3F89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16278,
   "name": "r_3F96",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16279,
   "name": "geometry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16292,
   "name": "b_3FA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16461,
   "name": "b_404D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16474,
   "name": "b_405A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16504,
   "name": "b_4078",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16506,
   "name": "j_407A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16525,
   "name": "b_408D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16540,
   "name": "b_409C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16551,
   "name": "b_40A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16559,
   "name": "j_40AF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16575,
   "name": "j_40BF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16585,
   "name": "b_40C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16591,
   "name": "b_40CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16615,
   "name": "b_40E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16632,
   "name": "b_40F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16656,
   "name": "b_4110",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16671,
   "name": "j_411F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16677,
   "name": "j_4125",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16690,
   "name": "b_4132",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16705,
   "name": "b_4141",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16722,
   "name": "j_4152",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16734,
   "name": "j_415E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16778,
   "name": "b_418A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16788,
   "name": "b_4194",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16808,
   "name": "b_41A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16810,
   "name": "j_41AA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16829,
   "name": "b_41BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16840,
   "name": "b_41C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16855,
   "name": "b_41D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16865,
   "name": "j_41E1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16881,
   "name": "b_41F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16890,
   "name": "r_41FA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16891,
   "name": "speed_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16919,
   "name": "b_4217",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16935,
   "name": "b_4227",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16945,
   "name": "r_4231",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16946,
   "name": "slow_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16977,
   "name": "r_4251",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16978,
   "name": "flight_model",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16992,
   "name": "b_4260",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17004,
   "name": "b_426C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17018,
   "name": "b_427A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17033,
   "name": "b_4289",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17038,
   "name": "b_428E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17047,
   "name": "b_4297",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17049,
   "name": "b_4299",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17102,
   "name": "b_42CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17107,
   "name": "b_42D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17140,
   "name": "b_42F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17148,
   "name": "j_42FC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 17168,
   "name": "b_4310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17200,
   "name": "b_4330",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17203,
   "name": "r_4333",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 17204,
   "name": "multiply_high",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17213,
   "name": "b_433D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17219,
   "name": "a_4343",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17220,
   "name": "b_4344",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17225,
   "name": "multiply",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17236,
   "name": "b_4354",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17242,
   "name": "a_435A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17243,
   "name": "b_435B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17250,
   "name": "ai_pursue",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17279,
   "name": "b_437F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17282,
   "name": "b_4382",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17289,
   "name": "clear_name_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17296,
   "name": "b_4390",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17306,
   "name": "a_439A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17307,
   "name": "title_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17344,
   "name": "b_43C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17362,
   "name": "b_43D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17366,
   "name": "a_43D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17377,
   "name": "b_43E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17383,
   "name": "b_43E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17404,
   "name": "play_irq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17427,
   "name": "b_4413",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17435,
   "name": "b_441B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17441,
   "name": "b_4421",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17453,
   "name": "b_442D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17461,
   "name": "a_4435",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17469,
   "name": "b_443D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17472,
   "name": "b_4440",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17482,
   "name": "b_444A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17492,
   "name": "b_4454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17501,
   "name": "b_445D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17523,
   "name": "b_4473",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17531,
   "name": "b_447B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17544,
   "name": "b_4488",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17554,
   "name": "b_4492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17568,
   "name": "b_44A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17571,
   "name": "b_44A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17578,
   "name": "b_44AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17588,
   "name": "b_44B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17593,
   "name": "b_44B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17611,
   "name": "b_44CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17638,
   "name": "b_44E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17662,
   "name": "b_44FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17680,
   "name": "b_4510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17768,
   "name": "b_4568",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17802,
   "name": "b_458A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17812,
   "name": "b_4594",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17846,
   "name": "b_45B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17873,
   "name": "b_45D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17876,
   "name": "b_45D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17878,
   "name": "b_45D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17904,
   "name": "b_45F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17907,
   "name": "j_45F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 18001,
   "name": "b_4651",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18013,
   "name": "b_465D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18021,
   "name": "b_4665",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18032,
   "name": "b_4670",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18037,
   "name": "raster_chain_jump",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 18038,
   "name": "a_4676",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18039,
   "name": "a_4677",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18040,
   "name": "raster_irq_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18057,
   "name": "a_4689",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18058,
   "name": "a_468A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18059,
   "name": "irq_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 18066,
   "name": "next_irq_two",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 18084,
   "name": "next_irq_bottom",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 18102,
   "name": "set_view_state",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18113,
   "name": "b_46C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18120,
   "name": "redraw_half_one",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18139,
   "name": "b_46DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18154,
   "name": "b_46EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18158,
   "name": "a_46EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18171,
   "name": "b_46FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18189,
   "name": "b_470D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18202,
   "name": "b_471A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18207,
   "name": "b_471F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18221,
   "name": "b_472D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18234,
   "name": "b_473A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18244,
   "name": "b_4744",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18297,
   "name": "redraw_half_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18308,
   "name": "b_4784",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18319,
   "name": "b_478F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18334,
   "name": "b_479E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18338,
   "name": "a_47A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18349,
   "name": "b_47AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18359,
   "name": "b_47B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18386,
   "name": "j_47D2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 18399,
   "name": "b_47DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18404,
   "name": "b_47E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18423,
   "name": "b_47F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18436,
   "name": "b_4804",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18446,
   "name": "b_480E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18499,
   "name": "raster_cockpit_one",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18506,
   "name": "a_484A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18511,
   "name": "a_484F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18516,
   "name": "a_4854",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18548,
   "name": "b_4874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18615,
   "name": "b_48B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18635,
   "name": "b_48CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18636,
   "name": "a_48CC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18661,
   "name": "b_48E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18669,
   "name": "raster_map_one",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18670,
   "name": "a_48EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18690,
   "name": "raster_hangar_one",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18707,
   "name": "a_4913",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18719,
   "name": "b_491F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18720,
   "name": "a_4920",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18730,
   "name": "b_492A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18731,
   "name": "a_492B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18816,
   "name": "b_4980",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18819,
   "name": "b_4983",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18832,
   "name": "b_4990",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18845,
   "name": "raster_hangar_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18869,
   "name": "a_49B5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18881,
   "name": "b_49C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18882,
   "name": "a_49C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18889,
   "name": "b_49C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18890,
   "name": "a_49CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18917,
   "name": "b_49E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18930,
   "name": "b_49F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18943,
   "name": "b_49FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19013,
   "name": "b_4A45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19021,
   "name": "raster_map_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19022,
   "name": "a_4A4E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19049,
   "name": "raster_shot_one",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19050,
   "name": "a_4A6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19080,
   "name": "b_4A88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19086,
   "name": "raster_arming_one",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19087,
   "name": "a_4A8F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19107,
   "name": "raster_shot_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19108,
   "name": "a_4AA4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19143,
   "name": "b_4AC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19151,
   "name": "raster_arming_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19152,
   "name": "a_4AD0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19174,
   "name": "raster_cockpit_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19192,
   "name": "b_4AF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19193,
   "name": "a_4AF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19198,
   "name": "a_4AFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19203,
   "name": "a_4B03",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19235,
   "name": "b_4B23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19237,
   "name": "a_4B25",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19262,
   "name": "b_4B3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19265,
   "name": "j_4B41",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19338,
   "name": "j_4B8A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19399,
   "name": "b_4BC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19424,
   "name": "latch_view_one",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 19443,
   "name": "view_handlers_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19444,
   "name": "f_4BF4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19453,
   "name": "latch_view_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 19472,
   "name": "view_handlers_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19473,
   "name": "f_4C11",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19482,
   "name": "weapon_selector_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 19502,
   "name": "b_4C2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19507,
   "name": "j_4C33",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19511,
   "name": "b_4C37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19524,
   "name": "b_4C44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19538,
   "name": "b_4C52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19547,
   "name": "r_4C5B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 19548,
   "name": "flip_screens",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 19633,
   "name": "b_4CB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19703,
   "name": "j_4CF7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19710,
   "name": "b_4CFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19717,
   "name": "b_4D05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19725,
   "name": "b_4D0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19783,
   "name": "b_4D47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19790,
   "name": "j_4D4E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19827,
   "name": "b_4D73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19839,
   "name": "b_4D7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19881,
   "name": "b_4DA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19882,
   "name": "a_4DAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19883,
   "name": "a_4DAB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19888,
   "name": "a_4DB0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19889,
   "name": "a_4DB1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19897,
   "name": "explosion_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19898,
   "name": "f_4DBA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19921,
   "name": "explosion_sequence",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19963,
   "name": "noise_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20011,
   "name": "r_4E2B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20012,
   "name": "clear_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20016,
   "name": "b_4E30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20034,
   "name": "middle_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20128,
   "name": "b_4EA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20141,
   "name": "sound_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20142,
   "name": "sound_effects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20152,
   "name": "r_4EB8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20153,
   "name": "b_4EB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20200,
   "name": "b_4EE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20271,
   "name": "b_4F2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20281,
   "name": "b_4F39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20294,
   "name": "b_4F46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20297,
   "name": "b_4F49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20340,
   "name": "b_4F74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20372,
   "name": "b_4F94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20384,
   "name": "b_4FA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20427,
   "name": "b_4FCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20460,
   "name": "b_4FEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20474,
   "name": "b_4FFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20477,
   "name": "b_4FFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20542,
   "name": "b_503E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20607,
   "name": "j_507F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 20641,
   "name": "b_50A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20656,
   "name": "b_50B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20674,
   "name": "b_50C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20700,
   "name": "b_50DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20737,
   "name": "j_5101",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 20748,
   "name": "b_510C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20770,
   "name": "b_5122",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20803,
   "name": "turn_rate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20823,
   "name": "b_5157",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20827,
   "name": "b_515B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20838,
   "name": "b_5166",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20852,
   "name": "b_5174",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20857,
   "name": "one_second",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20871,
   "name": "b_5187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20879,
   "name": "b_518F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20887,
   "name": "b_5197",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20902,
   "name": "b_51A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20915,
   "name": "r_51B3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20916,
   "name": "programmer_message",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21460,
   "name": "swap_panel_charset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21489,
   "name": "b_53F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21491,
   "name": "a_53F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21494,
   "name": "a_53F6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21497,
   "name": "a_53F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21501,
   "name": "a_53FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21529,
   "name": "security_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21601,
   "name": "b_5461",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21668,
   "name": "colour_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21669,
   "name": "f_54A5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21696,
   "name": "game_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 21707,
   "name": "j_54CB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21709,
   "name": "b_54CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21723,
   "name": "b_54DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21736,
   "name": "b_54E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21745,
   "name": "b_54F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21749,
   "name": "j_54F5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21792,
   "name": "b_5520",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21804,
   "name": "b_552C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21867,
   "name": "b_556B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21881,
   "name": "b_5579",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21892,
   "name": "j_5584",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21921,
   "name": "b_55A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21980,
   "name": "b_55DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22003,
   "name": "b_55F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22014,
   "name": "b_55FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22043,
   "name": "b_561B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22058,
   "name": "b_562A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22068,
   "name": "hamster_check",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22070,
   "name": "b_5636",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22086,
   "name": "b_5646",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22102,
   "name": "b_5656",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22112,
   "name": "b_5660",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22115,
   "name": "key_letters",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22179,
   "name": "print_string",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22183,
   "name": "b_56A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22221,
   "name": "b_56CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22237,
   "name": "b_56DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22256,
   "name": "b_56F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22280,
   "name": "b_5708",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22288,
   "name": "r_5710",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22289,
   "name": "fill_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22307,
   "name": "b_5723",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22309,
   "name": "a_5725",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22312,
   "name": "a_5728",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22315,
   "name": "a_572B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22321,
   "name": "b_5731",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22323,
   "name": "a_5733",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22328,
   "name": "high_score_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22358,
   "name": "b_5756",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22424,
   "name": "b_5798",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22440,
   "name": "b_57A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22475,
   "name": "divide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22483,
   "name": "b_57D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22494,
   "name": "b_57DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22501,
   "name": "b_57E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22510,
   "name": "b_57EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22528,
   "name": "b_5800",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22533,
   "name": "b_5805",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22554,
   "name": "subtract_24",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22609,
   "name": "r_5851",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22610,
   "name": "arming_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22616,
   "name": "b_5858",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22637,
   "name": "b_586D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22639,
   "name": "b_586F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22657,
   "name": "j_5881",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22749,
   "name": "b_58DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22757,
   "name": "b_58E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22783,
   "name": "b_58FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22803,
   "name": "b_5913",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22819,
   "name": "b_5923",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22841,
   "name": "arming_ground",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22847,
   "name": "arming_ship",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22853,
   "name": "arming_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22857,
   "name": "third_kind_weight",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22860,
   "name": "arming_limits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22863,
   "name": "out_of_fuel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22885,
   "name": "b_5965",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22891,
   "name": "r_596B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22892,
   "name": "pilots",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22900,
   "name": "b_5974",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22904,
   "name": "b_5978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22920,
   "name": "j_5988",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22922,
   "name": "b_598A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22943,
   "name": "b_599F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22950,
   "name": "b_59A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22975,
   "name": "b_59BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22987,
   "name": "b_59CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23011,
   "name": "r_59E3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23012,
   "name": "b_59E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23037,
   "name": "b_59FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23043,
   "name": "b_5A03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23050,
   "name": "b_5A0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23057,
   "name": "b_5A11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23060,
   "name": "b_5A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23068,
   "name": "plane_limits",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 23100,
   "name": "b_5A3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23125,
   "name": "b_5A55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23132,
   "name": "b_5A5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23149,
   "name": "b_5A6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23174,
   "name": "b_5A86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23179,
   "name": "b_5A8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23187,
   "name": "b_5A93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23199,
   "name": "b_5A9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23237,
   "name": "b_5AC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23266,
   "name": "b_5AE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23273,
   "name": "b_5AE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23280,
   "name": "b_5AF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23296,
   "name": "b_5B00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23306,
   "name": "b_5B0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23320,
   "name": "b_5B18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23327,
   "name": "b_5B1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23330,
   "name": "b_5B22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23338,
   "name": "r_5B2A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23339,
   "name": "b_5B2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23349,
   "name": "b_5B35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23353,
   "name": "b_5B39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23367,
   "name": "computer_pilot",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 23381,
   "name": "r_5B55",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23382,
   "name": "b_5B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23402,
   "name": "b_5B6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23425,
   "name": "b_5B81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23439,
   "name": "b_5B8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23459,
   "name": "b_5BA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23466,
   "name": "b_5BAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23487,
   "name": "b_5BBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23515,
   "name": "b_5BDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23534,
   "name": "j_5BEE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23549,
   "name": "b_5BFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23564,
   "name": "b_5C0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23567,
   "name": "j_5C0F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23588,
   "name": "b_5C24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23593,
   "name": "demo_plane_one",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 23619,
   "name": "computer_plane_two",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 23629,
   "name": "b_5C4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23660,
   "name": "b_5C6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23677,
   "name": "b_5C7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23692,
   "name": "b_5C8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23705,
   "name": "b_5C99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23733,
   "name": "b_5CB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23747,
   "name": "b_5CC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23756,
   "name": "b_5CCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23780,
   "name": "b_5CE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23783,
   "name": "b_5CE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23795,
   "name": "b_5CF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23814,
   "name": "b_5D06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23837,
   "name": "b_5D1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23856,
   "name": "computer_dogfight",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 23896,
   "name": "b_5D58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23899,
   "name": "b_5D5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23943,
   "name": "b_5D87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23949,
   "name": "b_5D8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23956,
   "name": "r_5D94",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23957,
   "name": "b_5D95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23972,
   "name": "b_5DA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23980,
   "name": "b_5DAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24018,
   "name": "r_5DD2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24019,
   "name": "b_5DD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24046,
   "name": "b_5DEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24055,
   "name": "b_5DF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24062,
   "name": "b_5DFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24084,
   "name": "r_5E14",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24085,
   "name": "b_5E15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24094,
   "name": "b_5E1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24109,
   "name": "computer_attack",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24119,
   "name": "b_5E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24127,
   "name": "computer_home",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24149,
   "name": "b_5E55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24163,
   "name": "b_5E63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24176,
   "name": "b_5E70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24191,
   "name": "b_5E7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24210,
   "name": "b_5E92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24254,
   "name": "b_5EBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24281,
   "name": "r_5ED9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24282,
   "name": "b_5EDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24285,
   "name": "j_5EDD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24301,
   "name": "computer_escape",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24315,
   "name": "b_5EFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24334,
   "name": "r_5F0E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24335,
   "name": "b_5F0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24359,
   "name": "b_5F27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24379,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24388,
   "name": "a_5F44",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24394,
   "name": "b_5F4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24395,
   "name": "a_5F4B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24408,
   "name": "weapon_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24418,
   "name": "r_5F62",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24419,
   "name": "b_5F63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24423,
   "name": "b_5F67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24441,
   "name": "b_5F79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24453,
   "name": "b_5F85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24457,
   "name": "weapon_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24494,
   "name": "b_5FAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24517,
   "name": "r_5FC5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24518,
   "name": "b_5FC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24532,
   "name": "dot_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24542,
   "name": "b_5FDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24604,
   "name": "r_601C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 24605,
   "name": "b_601D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24639,
   "name": "reset_vector_target",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24642,
   "name": "wipe_start_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24652,
   "name": "b_604C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24663,
   "name": "b_6057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24678,
   "name": "break_and_arm",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24730,
   "name": "b_609A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24734,
   "name": "targets_in_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24738,
   "name": "j_60A2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24777,
   "name": "b_60C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24786,
   "name": "b_60D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24792,
   "name": "b_60D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24807,
   "name": "b_60E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24840,
   "name": "b_6108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24849,
   "name": "b_6111",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24852,
   "name": "b_6114",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24925,
   "name": "b_615D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24944,
   "name": "b_6170",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24947,
   "name": "b_6173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24996,
   "name": "b_61A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25015,
   "name": "j_61B7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25038,
   "name": "b_61CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25066,
   "name": "j_61EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25077,
   "name": "j_61F5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25117,
   "name": "j_621D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25124,
   "name": "r_6224",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25125,
   "name": "cockpit_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25152,
   "name": "draw_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25198,
   "name": "b_626E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25217,
   "name": "b_6281",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25243,
   "name": "b_629B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25253,
   "name": "engine_pitch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25354,
   "name": "b_630A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25367,
   "name": "b_6317",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25381,
   "name": "j_6325",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25401,
   "name": "out_of_planes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25437,
   "name": "options_screen_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25516,
   "name": "b_63AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25575,
   "name": "j_63E7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25714,
   "name": "b_6472",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25780,
   "name": "mission_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25802,
   "name": "b_64CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25805,
   "name": "sam_site",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25824,
   "name": "b_64E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25902,
   "name": "b_652E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25908,
   "name": "b_6534",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25923,
   "name": "r_6543",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25924,
   "name": "b_6544",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25934,
   "name": "bank_pictures_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25935,
   "name": "f_654F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25942,
   "name": "bank_pictures_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25943,
   "name": "f_6557",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25950,
   "name": "bank_picture_index",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25966,
   "name": "bank_layout_two_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25970,
   "name": "bank_layout_two_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25974,
   "name": "enemy_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25975,
   "name": "f_6577",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25986,
   "name": "pitch_to_climb",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26006,
   "name": "missile_dot_size",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26014,
   "name": "dot_masks_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26017,
   "name": "f_65A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26018,
   "name": "dot_masks_wide",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26022,
   "name": "options_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26030,
   "name": "kernal_vectors",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26107,
   "name": "radar_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26108,
   "name": "f_65FC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26115,
   "name": "radar_dot_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26119,
   "name": "medium_view_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26167,
   "name": "medium_view_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26215,
   "name": "medium_view_choices",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26231,
   "name": "medium_view_rows_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26279,
   "name": "medium_view_columns_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26299,
   "name": "f_66BB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26327,
   "name": "medium_view_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26341,
   "name": "title_font_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26432,
   "name": "title_texts_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26433,
   "name": "f_6741",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26442,
   "name": "title_texts_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26443,
   "name": "f_674B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26452,
   "name": "title_texts_three",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26453,
   "name": "f_6755",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26462,
   "name": "security_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26463,
   "name": "f_675F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26526,
   "name": "security_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26527,
   "name": "f_679F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26566,
   "name": "colour_name_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26669,
   "name": "security_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26795,
   "name": "a_68AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26796,
   "name": "a_68AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26798,
   "name": "a_68AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26799,
   "name": "a_68AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26801,
   "name": "security_warning",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26880,
   "name": "name_entry_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26931,
   "name": "name_field",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26942,
   "name": "scenario_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27184,
   "name": "hamster_name",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27193,
   "name": "options_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27279,
   "name": "a_6A8F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27280,
   "name": "a_6A90",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27282,
   "name": "options_texts_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27382,
   "name": "a_6AF6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27411,
   "name": "credits_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27613,
   "name": "a_6BDD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27614,
   "name": "a_6BDE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27626,
   "name": "f_6BEA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27659,
   "name": "a_6C0B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27660,
   "name": "skill_digit_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27905,
   "name": "f_6D01",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27919,
   "name": "f_6D0F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27961,
   "name": "f_6D39",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27989,
   "name": "f_6D55",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28003,
   "name": "f_6D63",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28044,
   "name": "a_6D8C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28051,
   "name": "a_6D93",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28058,
   "name": "a_6D9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28065,
   "name": "chaff_digit_two",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28143,
   "name": "f_6DEF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28157,
   "name": "range_digits_27_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28350,
   "name": "scenario_text_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28351,
   "name": "f_6EBF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28354,
   "name": "panel_sprite_ptrs_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28360,
   "name": "panel_sprite_ptrs_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28364,
   "name": "top_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28370,
   "name": "cockpit_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28374,
   "name": "turn_by_bank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28390,
   "name": "turn_by_stick",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28406,
   "name": "tracer_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28410,
   "name": "tracer_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28414,
   "name": "pitch_cosine",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28438,
   "name": "view_scale",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28502,
   "name": "pitch_rate_by_bank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28518,
   "name": "message_glyphs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28543,
   "name": "cipher",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28633,
   "name": "horizon_sign_column",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28637,
   "name": "horizon_sign_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28641,
   "name": "horizon_slope_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28657,
   "name": "horizon_slope_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28673,
   "name": "key_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28681,
   "name": "missile_damage",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28685,
   "name": "row_offsets_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28710,
   "name": "row_offsets_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28735,
   "name": "half_row_offsets_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28760,
   "name": "half_row_offsets_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28785,
   "name": "horizon_edge_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28786,
   "name": "f_7072",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28815,
   "name": "horizon_edge_lengths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28897,
   "name": "horizon_column_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28913,
   "name": "horizon_row_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28929,
   "name": "sky_ground_fill",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28945,
   "name": "horizon_edge_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28946,
   "name": "f_7112",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28977,
   "name": "horizon_edge_sizes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28993,
   "name": "bar_partial",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28997,
   "name": "bank_layout_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29001,
   "name": "instrument_faces_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29013,
   "name": "pitch_ladder_down",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29037,
   "name": "pitch_ladder_up",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29065,
   "name": "compass_pictures_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29066,
   "name": "f_718A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29079,
   "name": "compass_pictures_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29080,
   "name": "f_7198",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29093,
   "name": "compass_picture_index",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29109,
   "name": "compass_layout_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29113,
   "name": "compass_layout_two_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29117,
   "name": "compass_layout_two_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29121,
   "name": "shape_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29124,
   "name": "view_sign_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29128,
   "name": "view_sign_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29132,
   "name": "view_sign_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29136,
   "name": "map_rows_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29148,
   "name": "map_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29160,
   "name": "lock_box_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29161,
   "name": "f_71E9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29176,
   "name": "weapon_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29177,
   "name": "weapon_names_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29249,
   "name": "shape_orders",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29250,
   "name": "shape_orders_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29617,
   "name": "panel_codes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29708,
   "name": "climb_by_pitch",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29736,
   "name": "powers_of_ten_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29741,
   "name": "powers_of_ten_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29746,
   "name": "messages_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29747,
   "name": "f_7433",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29810,
   "name": "messages_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29811,
   "name": "f_7473",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29874,
   "name": "title_sprite_regs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29921,
   "name": "title_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29937,
   "name": "loadout_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29939,
   "name": "a_74F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29941,
   "name": "a_74F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29943,
   "name": "a_74F7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29955,
   "name": "f_7503",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29957,
   "name": "a_7505",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29959,
   "name": "a_7507",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29961,
   "name": "computer_load_air",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29967,
   "name": "computer_load_ground",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29973,
   "name": "title_logo_row_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29986,
   "name": "title_logo_row_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29999,
   "name": "title_logo_row_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30012,
   "name": "title_logo_row_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30025,
   "name": "title_logo_row_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30046,
   "name": "score_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30047,
   "name": "f_755F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30056,
   "name": "loadouts_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30057,
   "name": "f_7569",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30060,
   "name": "loadouts_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30061,
   "name": "f_756D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30064,
   "name": "target_picture_by_roll",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30128,
   "name": "large_view_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30216,
   "name": "large_view_step_three",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30280,
   "name": "large_view_step_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30328,
   "name": "large_view_step_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30712,
   "name": "large_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30713,
   "name": "f_77F9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30742,
   "name": "large_view_pitch_blocks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30743,
   "name": "f_7817",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30752,
   "name": "spy_ship_small",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30753,
   "name": "f_7821",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30768,
   "name": "spy_ship_large",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30769,
   "name": "f_7831",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30784,
   "name": "radar_station_small",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30785,
   "name": "f_7841",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30800,
   "name": "radar_station_large",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30801,
   "name": "f_7851",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30816,
   "name": "missile_top_speeds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30848,
   "name": "copy_of_3000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31872,
   "name": "copy_of_3400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32766,
   "name": "start_vector",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32861,
   "name": "f_805D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32901,
   "name": "f_8085",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32941,
   "name": "f_80AD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32981,
   "name": "f_80D5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33021,
   "name": "f_80FD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33098,
   "name": "a_814A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33248,
   "name": "f_81E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33618,
   "name": "a_8352",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33700,
   "name": "f_83A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33740,
   "name": "f_83CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33784,
   "name": "f_83F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33788,
   "name": "a_83FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33789,
   "name": "a_83FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33790,
   "name": "a_83FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33791,
   "name": "a_83FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34122,
   "name": "a_854A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34272,
   "name": "f_85E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34642,
   "name": "a_8752",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34808,
   "name": "f_87F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34812,
   "name": "a_87FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34813,
   "name": "a_87FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34814,
   "name": "a_87FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34815,
   "name": "a_87FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34816,
   "name": "panel_two_set",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35072,
   "name": "selector_strip_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35424,
   "name": "bars_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35488,
   "name": "message_col_21",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35528,
   "name": "message_col_22",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35568,
   "name": "message_col_23",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35608,
   "name": "message_col_24",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35627,
   "name": "radar_col_25",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35648,
   "name": "message_col_25",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35667,
   "name": "radar_col_26",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35688,
   "name": "message_col_26",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35707,
   "name": "radar_col_27",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35728,
   "name": "message_col_27",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35747,
   "name": "radar_col_28",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35768,
   "name": "message_col_28",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35874,
   "name": "pitch_ladder_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35912,
   "name": "bank_dial_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36112,
   "name": "compass_dial_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36864,
   "name": "mirror_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37120,
   "name": "horizon_edges",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37584,
   "name": "sine_quarter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37648,
   "name": "cosine_quarter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37720,
   "name": "medium_picture_codes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37768,
   "name": "medium_byte_sets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37848,
   "name": "panel_one_codes",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37968,
   "name": "panel_two_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37998,
   "name": "panel_two_row_21",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38128,
   "name": "fire_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38144,
   "name": "small_font",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38344,
   "name": "gun_sight_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38400,
   "name": "bank_shapes_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38656,
   "name": "orient_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38912,
   "name": "map_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39272,
   "name": "compass_face_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39368,
   "name": "compass_shapes_one",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39720,
   "name": "radar_template_one",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39816,
   "name": "spy_ship_small_sets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39880,
   "name": "heading_sine",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39896,
   "name": "heading_cosine",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39912,
   "name": "bearing_scale",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39944,
   "name": "roll_rate_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39960,
   "name": "roll_rate_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39976,
   "name": "sight_box_pictures",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40264,
   "name": "tracer_mask_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40392,
   "name": "bank_face_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40464,
   "name": "compass_face_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40552,
   "name": "radar_template_one_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40648,
   "name": "selector_marker",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40656,
   "name": "selector_strip",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40704,
   "name": "overlay_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "panel_one_set",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41176,
   "name": "compass_dial_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41312,
   "name": "bars_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41456,
   "name": "bank_dial_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41544,
   "name": "radar_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41689,
   "name": "pitch_ladder_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41733,
   "name": "message_col_11",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41765,
   "name": "message_col_12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41797,
   "name": "message_col_13",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41829,
   "name": "message_col_14",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41861,
   "name": "message_col_15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41893,
   "name": "message_col_16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41925,
   "name": "message_col_17",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41957,
   "name": "message_col_18",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42600,
   "name": "hangar_chars_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42624,
   "name": "title_logo_fill",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42944,
   "name": "hangar_emblem_one",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43008,
   "name": "view_two_set",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44992,
   "name": "hangar_emblem_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45056,
   "name": "view_one_set_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46720,
   "name": "title_logo_outline",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47104,
   "name": "font_set",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48000,
   "name": "explosion_sprite_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48064,
   "name": "explosion_sprite_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48744,
   "name": "hangar_chars_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "old_data_copy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51712,
   "name": "loader_leftovers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52736,
   "name": "options_sector",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52992,
   "name": "hiscore_sector",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "logo_fill_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53504,
   "name": "logo_outline_sprites",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "title_font",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55306,
   "name": "f_D80A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55346,
   "name": "f_D832",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55386,
   "name": "f_D85A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55389,
   "name": "f_D85D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55426,
   "name": "f_D882",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55429,
   "name": "f_D885",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55466,
   "name": "f_D8AA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55469,
   "name": "f_D8AD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55488,
   "name": "a_D8C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55489,
   "name": "a_D8C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55490,
   "name": "a_D8C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55491,
   "name": "a_D8C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55506,
   "name": "f_D8D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55509,
   "name": "f_D8D5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55546,
   "name": "f_D8FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55549,
   "name": "f_D8FD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55568,
   "name": "a_D910",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55569,
   "name": "a_D911",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55570,
   "name": "a_D912",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55571,
   "name": "a_D913",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55572,
   "name": "a_D914",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55586,
   "name": "f_D922",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55616,
   "name": "f_D940",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55626,
   "name": "f_D94A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55648,
   "name": "a_D960",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55649,
   "name": "a_D961",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55650,
   "name": "a_D962",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55651,
   "name": "a_D963",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55652,
   "name": "a_D964",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55666,
   "name": "f_D972",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55706,
   "name": "f_D99A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55730,
   "name": "a_D9B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55746,
   "name": "f_D9C2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55767,
   "name": "a_D9D7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55826,
   "name": "f_DA12",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55866,
   "name": "f_DA3A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55906,
   "name": "f_DA62",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55946,
   "name": "f_DA8A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55986,
   "name": "f_DAB2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56008,
   "name": "a_DAC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56009,
   "name": "a_DAC9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56010,
   "name": "a_DACA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56011,
   "name": "a_DACB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56026,
   "name": "f_DADA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56066,
   "name": "f_DB02",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56088,
   "name": "a_DB18",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56089,
   "name": "a_DB19",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56090,
   "name": "a_DB1A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56091,
   "name": "a_DB1B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56092,
   "name": "a_DB1C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56106,
   "name": "f_DB2A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56116,
   "name": "f_DB34",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56134,
   "name": "a_DB46",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56146,
   "name": "f_DB52",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56156,
   "name": "f_DB5C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56160,
   "name": "a_DB60",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56168,
   "name": "a_DB68",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56169,
   "name": "a_DB69",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56170,
   "name": "a_DB6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56171,
   "name": "a_DB6B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56172,
   "name": "a_DB6C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56186,
   "name": "f_DB7A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56196,
   "name": "f_DB84",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56197,
   "name": "a_DB85",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56226,
   "name": "f_DBA2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56236,
   "name": "f_DBAC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56266,
   "name": "f_DBCA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56276,
   "name": "colour_row_23_c20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56560,
   "name": "f_DCF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56561,
   "name": "f_DCF1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56569,
   "name": "f_DCF9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56570,
   "name": "cia2_cra_via_x14",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "vibrato_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57347,
   "name": "vibrato_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57391,
   "name": "vibrato_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57407,
   "name": "music_driver",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57422,
   "name": "b_E04E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57459,
   "name": "b_E073",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57466,
   "name": "b_E07A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57480,
   "name": "b_E088",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57483,
   "name": "b_E08B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57499,
   "name": "b_E09B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57510,
   "name": "j_E0A6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57548,
   "name": "b_E0CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57551,
   "name": "b_E0CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57572,
   "name": "b_E0E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57653,
   "name": "b_E135",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57656,
   "name": "j_E138",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57659,
   "name": "b_E13B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57687,
   "name": "b_E157",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57706,
   "name": "j_E16A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57783,
   "name": "b_E1B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57789,
   "name": "j_E1BD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57812,
   "name": "b_E1D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57815,
   "name": "j_E1D7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57835,
   "name": "j_E1EB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57865,
   "name": "b_E209",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57895,
   "name": "b_E227",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57915,
   "name": "b_E23B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57923,
   "name": "b_E243",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57943,
   "name": "j_E257",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57954,
   "name": "b_E262",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57971,
   "name": "j_E273",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57990,
   "name": "b_E286",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58000,
   "name": "j_E290",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58019,
   "name": "b_E2A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58029,
   "name": "j_E2AD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58077,
   "name": "pulse_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58086,
   "name": "b_E2E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58103,
   "name": "pulse_bottom",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58109,
   "name": "b_E2FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58126,
   "name": "b_E30E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58154,
   "name": "slide_down_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58161,
   "name": "b_E331",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58180,
   "name": "slide_up_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58184,
   "name": "b_E348",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58227,
   "name": "b_E373",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58250,
   "name": "b_E38A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58280,
   "name": "b_E3A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58303,
   "name": "b_E3BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58306,
   "name": "j_E3C2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58309,
   "name": "b_E3C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58330,
   "name": "b_E3DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58333,
   "name": "j_E3DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58356,
   "name": "arpeggio",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 58395,
   "name": "j_E41B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58421,
   "name": "b_E435",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58440,
   "name": "b_E448",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58448,
   "name": "j_E450",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58462,
   "name": "j_E45E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58486,
   "name": "j_E476",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58495,
   "name": "j_E47F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58504,
   "name": "f_E488",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58505,
   "name": "f_E489",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58506,
   "name": "note_frequencies",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58507,
   "name": "note_frequencies_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58700,
   "name": "voice_registers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58703,
   "name": "voice_register",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58704,
   "name": "track_position",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58707,
   "name": "pattern_position",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58710,
   "name": "note_steps_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58713,
   "name": "voice_waveform",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58716,
   "name": "note_first_byte",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58718,
   "name": "voice_save",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58731,
   "name": "vibrato_shift",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58732,
   "name": "pulse_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58733,
   "name": "pulse_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58736,
   "name": "tempo_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58737,
   "name": "tempo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58738,
   "name": "beat_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58739,
   "name": "instrument_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58740,
   "name": "music_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58741,
   "name": "frequency_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58744,
   "name": "slide_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58747,
   "name": "effect_bits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58749,
   "name": "note_byte",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58750,
   "name": "pulse_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58753,
   "name": "pulse_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58756,
   "name": "effect_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58759,
   "name": "note_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58765,
   "name": "filter_cutoff",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58768,
   "name": "three_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58772,
   "name": "arpeggio_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58773,
   "name": "arpeggio_value",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58775,
   "name": "arpeggio_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58827,
   "name": "instruments",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58828,
   "name": "instrument_pulse_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58829,
   "name": "instrument_waveform",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58830,
   "name": "instrument_attack_decay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58831,
   "name": "instrument_sustain_release",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58832,
   "name": "instrument_vibrato",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58833,
   "name": "instrument_pulse_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58834,
   "name": "instrument_effects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58915,
   "name": "last_voice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58916,
   "name": "instruments_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58917,
   "name": "instrument_start_waveform",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58918,
   "name": "instrument_alt_waveform",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58919,
   "name": "instrument_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58921,
   "name": "instrument_pulse_limits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58922,
   "name": "instrument_resonance",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58923,
   "name": "instrument_filter_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59004,
   "name": "track_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59007,
   "name": "track_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59010,
   "name": "pattern_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59048,
   "name": "pattern_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59584,
   "name": "note_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59663,
   "name": "voice_note",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59731,
   "name": "gate_mask",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59885,
   "name": "start_waveform",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59974,
   "name": "voice_instrument",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60054,
   "name": "voice_unread",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60232,
   "name": "voice_slide",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60359,
   "name": "drum_position",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60578,
   "name": "frequency_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60672,
   "name": "radar_template_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60768,
   "name": "radar_template_two_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60864,
   "name": "bank_shapes_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61090,
   "name": "compass_shapes_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61478,
   "name": "explosion_shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62131,
   "name": "hangar_codes_one",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62401,
   "name": "hangar_codes_two",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62671,
   "name": "arming_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62795,
   "name": "arming_count_heat",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62855,
   "name": "arming_count_radar",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62915,
   "name": "arming_count_third",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62921,
   "name": "arming_third_name",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63031,
   "name": "hangar_chars_copy_one",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63287,
   "name": "hangar_chars_copy_two",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63392,
   "name": "map_target_four",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63424,
   "name": "map_target_five",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63488,
   "name": "arctangent",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63744,
   "name": "kernal_zero_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64000,
   "name": "security_grid",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64001,
   "name": "security_grid_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64002,
   "name": "security_grid_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64160,
   "name": "spy_ship_large_shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64416,
   "name": "radar_small_shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64480,
   "name": "radar_large_shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65024,
   "name": "large_shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65280,
   "name": "f_FF00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 65384,
   "name": "f_FF68",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 65427,
   "name": "KERNAL_SECOND",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65448,
   "name": "KERNAL_CIOUT",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65454,
   "name": "KERNAL_UNLSN",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65457,
   "name": "KERNAL_LISTEN",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65466,
   "name": "KERNAL_SETLFS",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65469,
   "name": "KERNAL_SETNAM",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65472,
   "name": "KERNAL_OPEN",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65475,
   "name": "KERNAL_CLOSE",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65481,
   "name": "KERNAL_CHKOUT",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65484,
   "name": "KERNAL_CLRCHN",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65490,
   "name": "KERNAL_CHROUT",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65504,
   "name": "f_FFE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 65511,
   "name": "KERNAL_CLALL",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65520,
   "name": "KERNAL_PLOT",
   "type": "Predefined",
   "kind": "system"
  }
 ],
 "comments": [
  {
   "address": 2304,
   "type": "line",
   "text": "The loader jumps here ($7FFE holds $0900). Jumps over the options and high-score records to the start-up code at $098B."
  },
  {
   "address": 2307,
   "type": "line",
   "text": "The options record, 17 bytes, $0903-$0913: the word OPTIONS in plain ASCII as a signature, then crash detection ($090A), combatants ($090B), planes each ($090C), the computer's skill ($090D), the scenario ($090E), missile hits to kill ($090F) and four more bytes ($0910-$0913) that are copied and saved with the rest. Start-up ($09CD) takes the record from the disk's copy at $CE00 when the disk's first eight bytes match these; saving ($1E98) writes it to track 18, sector 2. The values here are the ones the program was built with; the disk's copy replaces them."
  },
  {
   "address": 2314,
   "type": "line",
   "text": "Option: crash detection, 1 on, 0 off (the options screen toggles it, $29C6)."
  },
  {
   "address": 2315,
   "type": "line",
   "text": "Option: combatants, 0 one player (the computer flies plane two), 1 two players ($29BD toggles it)."
  },
  {
   "address": 2316,
   "type": "line",
   "text": "Option: planes each pilot starts with, 3 to 20 ($29CF); copied to the planes-left counters $02F0/$02F1 when a game starts ($0C32)."
  },
  {
   "address": 2317,
   "type": "line",
   "text": "Option: the computer opponent's skill level, 1 to 20 ($29A8 steps it, only with one player); demo mode sets 20."
  },
  {
   "address": 2318,
   "type": "line",
   "text": "Option: the combat scenario, 0 the close-range dogfight, 1 the full-scale aerial and ground attack ($29DF toggles it)."
  },
  {
   "address": 2319,
   "type": "line",
   "text": "Option: missile hits to kill an aircraft, 1 to 3 ($29E8); $263C indexes the damage table at $7009 with it."
  },
  {
   "address": 2320,
   "type": "line",
   "text": "Four bytes at the end of the options record ($0D, $00, $09, $09), copied from the disk and saved with it; no instruction names them."
  },
  {
   "address": 2324,
   "type": "line",
   "text": "Bytes after the options record: plain ASCII that reads \"INC SAVESTRI\", left over from the assembler's buffer. Nothing reads them."
  },
  {
   "address": 2336,
   "type": "line",
   "text": "The high-score table, 86 bytes, $0920-$0975: \"HIGHSCORES\" in plain ASCII as a signature, five scores as 16-bit words in tens ($092A-$0933, highest first), five names of twelve enciphered letters each ended by $FF ($0934-$0974), and the immortal flag $0975. Start-up ($09E5) replaces it with the disk's copy at $CF00 when the signature matches; a new entry saves it to track 18, sector 3 ($1F30). The built-in names all read CASCADE and the scores are 500 down to 100; the disk's copy has the table the title shows."
  },
  {
   "address": 2346,
   "type": "line",
   "text": "Five high scores, 16-bit little-endian words counted in tens of points (the screen adds a zero), highest first."
  },
  {
   "address": 2347,
   "type": "line",
   "text": "The high bytes of the five high scores, read with $092A (scores are words in tens of points: 50, 40, 30, 20 and 10 at the hand-over, 500 to 100 points on screen)."
  },
  {
   "address": 2356,
   "type": "line",
   "text": "Five names, 13 bytes each: twelve letters in the game's letter cipher (deciphered through $6F7F) and an $FF terminator."
  },
  {
   "address": 2421,
   "type": "line",
   "text": "The immortal flag, 0 or 1. The game sets it at $5643 when the name buffer ($6933) begins with the eight letters at $6A30 (DUSTY BU), which $5634 checks after every game whether or not a name was entered, and start-up's copy of the saved high-score table ($09F4-$09FB) loads it from the disk; nothing clears it. While it is set, plane one does not die (checked at $0D93), burns no fuel ($44C6), the side panel says IMMORTAL ($1C5C), and whenever a plane's damage reaches 255 plane one's damage is cleared first ($2809). It sits inside the high-score block, so saving the table writes it to the disk."
  },
  {
   "address": 2422,
   "type": "line",
   "text": "Demo mode: 1 while the computer flies both planes between title pages ($0BCA sets it), 0 in a real game ($0BBE)."
  },
  {
   "address": 2423,
   "type": "line",
   "text": "Eight bytes swapped with $74F1 for demo mode: $0BF6 copies $74F1-$74F8 here when the demo starts and $598A copies them back when it ends."
  },
  {
   "address": 2431,
   "type": "line",
   "text": "Eight bytes that hold the real options ($090A-$0911) while the demo runs with its own settings ($0BCF); $598A puts them back."
  },
  {
   "address": 2439,
   "type": "line",
   "text": "Which title page is showing: $FF before the first, then 0-4 for the text pages (THE ULTIMATE HEAD TO HEAD CONFLICT; CREATED BY CASCADE GAMES 1987; PROGRAMMED AND DESIGNED BY IAN MARTIN; GRAPHICS BY DAMON REDMOND; TITLE MUSIC BY ROB HUBBARD; three lines each from the pointer tables at $6740, $674A and $6754), 5 for the high-score table, and at 11 the demo starts ($0AF7)."
  },
  {
   "address": 2440,
   "type": "line",
   "text": "$34, copied to zero page $3D by $30F0; with $439A ($FF) it makes the pointer $FF34, through which $0A2F writes the NMI and reset vectors at $FFFA-$FFFD without naming them."
  },
  {
   "address": 2441,
   "type": "line",
   "text": "1 when the title pages restart from the high-score table (after a name was entered, $0A05), 0 to start from the first page ($0A01)."
  },
  {
   "address": 2442,
   "type": "line",
   "text": "Colour-code tries left, 3 at load; each wrong answer takes one ($3867) and the last wipes memory; a right answer sets it to 0 ($38BB), so the question is asked once per load."
  },
  {
   "address": 2443,
   "type": "line",
   "text": "Start-up, run once from the hand-over. Sets the stack, banks out BASIC and the KERNAL ($01 = $35), and stores $FF, or $D4 on an NTSC machine ($02A6 = 0), as the operand at $4435 and $43D6: the interrupt handlers add it plus one to the counter $BF and run the music and the once-a-tick work on each carry, so a PAL machine runs them every frame and an NTSC one on 213 frames in 256: 50 times a second on both, which keeps the tempo and the game's clocks the same. Asks for the title music ($40 in $E574 and $4EAD), starts CIA 1 timer A free-running from $FFFF (the random number source, $5F3B), selects VIC bank 2 ($8000-$BFFF) through CIA 2, then takes the options record and the high-score table from the disk's copies at $CE00 and $CF00 when their signatures match, and goes to $6042."
  },
  {
   "address": 2509,
   "type": "line",
   "text": "Options: compare the first eight bytes at $CE00 with the record's ($0903-$090A, which includes the crash-detection byte) and copy all 17 when they match."
  },
  {
   "address": 2533,
   "type": "line",
   "text": "High scores: compare the ten signature bytes at $CF00 with \"HIGHSCORES\" and copy all 86 bytes when they match."
  },
  {
   "address": 2561,
   "type": "line",
   "text": "Restart from the first title page; reached after a game ends, from the options screen's SAVE, and after a wrong colour code wipes memory. $0A05 is the entry that starts at the high-score table instead."
  },
  {
   "address": 2565,
   "type": "line",
   "text": "Restart the title sequence at the high-score table (after a name has been entered, $565D)."
  },
  {
   "address": 2567,
   "type": "line",
   "text": "Common title set-up: stack reset, CIA interrupts off, screen and sprites off, zero page and pages 2-4 cleared ($30D9), music state checked ($1F8E), then the NMI vector set to $2AA6 and the reset vector to $603F through the pointer at $3D (= $FF34, plus $C6 and $C8). Waits for both fire buttons to be released, starts the title raster interrupt at $439B on line 252, sets the title screen up and copies 256 bytes from under the I/O ($D000-$D1FF, read with $01 = $34) to $A680 and $B680, then puts the title's sprites ($74B2, $74E1) up."
  },
  {
   "address": 2709,
   "type": "line",
   "text": "With all ROM and I/O banked out, copy $D000-$D0FF to $A680 and $D100-$D1FF to $B680: graphics kept in the RAM under the I/O chips until now."
  },
  {
   "address": 2775,
   "type": "line",
   "text": "Title page loop: a fire press on either joystick ($030F, edge against $031F) opens the options screen ($0B67); otherwise, each time the page timer zpp_91 reaches 5, the next page comes up: for pages 0-4 the screen effect at $2AC7, three text lines from the tables at $6740/$674A/$6754 (s_35C7) and the effect at $2B29; at page 5 the high-score table ($5738); at page 11 the demo ($0BCA)."
  },
  {
   "address": 2919,
   "type": "line",
   "text": "The options screen: blank, clear the colours ($1D0D with 15), border black, background dark grey, then loop: draw the screen ($635D), and unless COMMENCE CONFLICT has been chosen ($0224), mark the cursor line ($2A50), act on the stick ($2970), wait for the frame and repeat."
  },
  {
   "address": 3001,
   "type": "line",
   "text": "COMMENCE CONFLICT: the colour-code question ($37E1, which returns at once once it has been answered), demo off, the music stopped and the sound effects started unless in the demo ($1F9C), the sound chip cleared ($4E2C), and on to the game set-up at $0BFF."
  },
  {
   "address": 3018,
   "type": "line",
   "text": "Start demo mode: set the demo flag, keep the real options in $097F, play a one-player dogfight against the computer at skill 20 with three planes each and one hit to kill, swap in eight bytes from $74F1, and fall into the game set-up."
  },
  {
   "address": 3071,
   "type": "line",
   "text": "Set up a game (from COMMENCE CONFLICT or the demo): swap the panel character set in from under the I/O ($53D4), black screen, sprites off, multicolour text mode, zero page and pages 2-4 cleared ($30D9), fire treated as held for both sticks so a press still down does not count, planes left from the options ($090C), the raster chain for the two halves of the screen started at $4902 and $499D, the play interrupt at $43FC on line 252, the left ten columns of colour RAM white, both screens filled with character 10 ($5711), the first 128 bytes of the character set at $B000 copied to $8800 and $A000, sprites set up ($1BF8), both pilots on their hangar screens (state 3), fuel full ($0284/$0285 = $FF), six chaff and six flares each ($0288-$028B), the ground targets placed in the full-scale game ($308C), the hangar cursors on TAKE OFF ($0256/$0257 = 10), and the stick's top turn rate ($022B) 24, or 30 in the full-scale game."
  },
  {
   "address": 3327,
   "type": "line",
   "text": "The main loop; a pass takes at least one frame ($24). Plane one's half, then plane two's, then the shared work. For plane one: the plane's 32-byte record at $0300 is copied to zero page $60-$7F, its screen rows are 0-7 ($C4/$C5), $D1 = 0 (this plane) and $55 = 1 (the other). The view state ($46: 0 cockpit, 1 map, 2 shot down, 3 hangar, 4 arming, or ALL AIRCRAFT DESTROYED when the pilot has no planes left) chooses the work: flying states run the checks and controls below; the others run their screens from $0E1D."
  },
  {
   "address": 3387,
   "type": "line",
   "text": "Plane one flying (state 0 or 1): the warnings and the damage ($282F), message 31 (a blank) kept in the message rotation, the map square under the plane ($14AF), landing ($1FAD, which ends the flight when the plane is down), a return to the hangar ordered when the other plane was shot down in the full-scale game ($0250), then the controls: the stick ($1DE3, $596C, $594F), Q for flares and chaff ($2531), F and S for power ($4252), E for the weapon ($5F58), the turn and pitch ($28E0, $29FC, $30AC). A crash or a kill ($3A) sends the plane to state 2 and scores the other pilot ($213A), unless the immortal flag is set."
  },
  {
   "address": 3503,
   "type": "line",
   "text": "X toggles plane one between the cockpit and the map (states 0 and 1), on the press only (the last state is kept in $64)."
  },
  {
   "address": 3535,
   "type": "line",
   "text": "Plane one in the cockpit: draw the view into the character set at $A000 or $B000 (whichever is not being shown, $59), through $6225; with Q held show the flare and chaff counts (message 22); put back the four rows of the instrument panel's screen codes from $93D8 when either screen's copy has been overwritten (one cell of each is compared); copy the 93 bytes of instrument graphics at $03A0 into the character set at $A248."
  },
  {
   "address": 3600,
   "type": "line",
   "text": "Plane one on the map: rows 0-12 ($C5 = 12), drawn by $13EA."
  },
  {
   "address": 3613,
   "type": "line",
   "text": "Plane one not flying: in the demo the computer pilot still runs ($596C). State 2 (shot down) waits for the explosion's time ($02F2 reaching $82), then takes one of the pilot's planes ($2071, $02F0) and returns to the hangar; with none left it shows ALL AIRCRAFT DESTROYED (state 4) or ends the game when the other pilot has none either ($54C0). State 3 is the hangar: in the dogfight PRESS FIRE TO TAKE OFF, in the full-scale game the TAKE OFF and ARM AIRCRAFT menu ($1FFC). With no planes left it shows MISSION COMPLETED - PRESS FIRE, and fire ends the game. State 4 is the arming screen ($5852), or ALL AIRCRAFT DESTROYED ($6339). Then the SAM sites ($64CD) and the mission check ($64B4): when the other pilot has no planes and its ground target is gone, this pilot's hangar shows MISSION COMPLETED (its planes set to 0)."
  },
  {
   "address": 3686,
   "type": "line",
   "text": "Plane one's hangar screen: clear the view ($20FB), draw the hangar picture's screen codes from $F2B3 ($1BD1, 9 rows), and with planes left draw TAKE OFF and ARM AIRCRAFT ($1FFC) or, in the dogfight, PRESS FIRE TO TAKE OFF; fire takes off ($2F8E puts the plane in the air, $1E11 redraws). With no planes left a fire press ends the game."
  },
  {
   "address": 3853,
   "type": "line",
   "text": "End of plane one's part: the ground site's missile launch ($64CD), plane one's missile ($265B), a destroyed ground target's score ($250C), and the check that the other pilot is out of planes and ground targets ($64B4, which ends the mission). Then plane one's zero-page record goes back to $0300."
  },
  {
   "address": 3888,
   "type": "line",
   "text": "Plane two's half of the pass, the same work for the record at $0320: screen rows 13-19 ($C4/$C5), $D1 = 1, $55 = 0. Its view state is $47; its keys are H and K for power, U for the weapon, T for flares, V for the map."
  },
  {
   "address": 3977,
   "type": "line",
   "text": "Plane two's bearing to plane one, as seen from plane two: $99 turned round by 128 and less plane two's heading gives $98; $9A is negated."
  },
  {
   "address": 4004,
   "type": "line",
   "text": "Plane two flying: the instrument and message work as for plane one, and when its weapon selector has reached the chosen weapon ($0F = weapon \u00d7 8) the weapon panel is redrawn ($5F89)."
  },
  {
   "address": 4130,
   "type": "line",
   "text": "Plane two in the cockpit: draw the view into the character set at $A800 or $B800 ($6225), save the turn values ($D9 to $DA, $0E to $9E) and put back its instrument panel's screen codes from $946E the same way."
  },
  {
   "address": 4190,
   "type": "line",
   "text": "Plane two not flying: shot down (state 2), the hangar (3) and arming or out of planes (4), as for plane one at $0E1D; the computer pilot takes off by itself after a delay ($1125)."
  },
  {
   "address": 4253,
   "type": "line",
   "text": "Plane two's hangar screen: the hangar picture's screen codes from $F3C1 ($1BD1, 9 rows), TAKE OFF and ARM AIRCRAFT for a second player, or COMPUTER PILOT - STANDING BY. In the full-scale game the computer arms its plane by chance ($5F3B): a full air-to-air load ($7509) or one with air-to-ground missiles ($750F)."
  },
  {
   "address": 4544,
   "type": "line",
   "text": "End of plane two's part, as $0F0D: the site's launch, the missile, the target score and the mission check. Then the record goes back to $0320."
  },
  {
   "address": 4585,
   "type": "line",
   "text": "Work shared by both planes once a pass: F3 held for ten passes ends the game ($54C0); the engine sounds' pitches ($62A5); the bank indicators ($19A1); F5 held for ten passes switches between the music and the sound effects ($4EAD/$E574); the cockpit messages ($2E57); the instruments ($3C07, $3F2E, $3ED4, $3F62: digits copied to $6D39, $6D63, $6D55); the radar ($3B58, $3A75); the instrument graphics at $03A0-$03FF copied into the character set at $8B2B; and every message timer at $0350 and $0370 counted down."
  },
  {
   "address": 4822,
   "type": "line",
   "text": "Wait for the interrupt to finish showing the last frame ($5D), redraw either half whose state changed ($46C8, $4779), then wait for the frame counter $24 to run out (at least two frames a pass) and turn the screen on."
  },
  {
   "address": 4863,
   "type": "line",
   "text": "RUN/STOP pauses: the sound is silenced, then the game waits for the key to be released, shows PAUSE ON in the view ($18E0) until RUN/STOP is pressed again, and goes on. In the demo, DEMO MODE is drawn here each pass."
  },
  {
   "address": 4963,
   "type": "line",
   "text": "Move a menu cursor with the stick: X and Y give the lowest and highest line, and up or down ($6D) steps the cursor at $0256,X (X = $D1). The stick is compared with $7E, which only the computer's escape sets (to 1, $5EF1) and the zero-page clear zeroes: while they differ, $7B goes back to 1 and the cursor moves on this call; while they are equal, the call waits until $7B has counted to 4. With $7E at 0, as on every menu, a stick held up or down moves the cursor on every call, which off the game ($81 = 0) is held to every fourth frame ($93). With two players the options screen's skill line is stepped over."
  },
  {
   "address": 5058,
   "type": "line",
   "text": "After a frame, fill the current plane's half (12 rows of 30 cells from row $C4) with character $23 ($2210)."
  },
  {
   "address": 5068,
   "type": "line",
   "text": "Part of the cockpit view ($6228): reads two values for the bank angle ($75) from $6FE1 and $6FF1 into $C1/$C2, and adds one to $29 unless the roll is in its second or fourth quarter ($79 odd) with the wings banked ($75 not 0)."
  },
  {
   "address": 5098,
   "type": "line",
   "text": "Draw the map for the current pilot: the 30 by 12 map picture at $9800 copied into the pilot's half of the screen ($1BD1), the character set at $B000 chosen ($C6), then every object from number $32 down to $33 (counting down and wrapping from 0 to 5; the interrupt turns both, $4469, so a different object is drawn last): each active object's position (across $0296/$029C, down $02A8/$02AE, divided by 8) gives its cell and fine position. Ground target 4 is drawn from the shape at $F7A0 and target 5 from $F7C0, in characters $70 and $74; the planes and missiles (0-3) are drawn only on alternate phases of the blink ($34), through $5FD4, in characters $78 up."
  },
  {
   "address": 5295,
   "type": "line",
   "text": "Find what the current plane is over. With the off-map state $0262,X at 2 it does nothing; at 1 it shows FLYING OFF MAP (message 15) and clears the state. Then it reads the map picture under the plane: the row pointer from $71D0/$71DC (Y / 8), the character at X / 8, and the pair of pixels inside that character's shape in the character set at $B000 (row from Y's low byte, pair from X's). Sea (%01) or land (%11) that differs from the last one ($6A) is stored as 0 or 1 in record byte 7 ($0307 or $0327) and in $67, and the view is redrawn ($46B6): the cockpit's ground is blue over the sea and yellow over land ($46D4), and each ground target shows in the view only over its own kind ($61E4: the spy ship over the sea, the radar station over land). Colours %00 and %10 change nothing."
  },
  {
   "address": 5469,
   "type": "line",
   "text": "Never called (no instruction or table points here): stores A as the stock of weapon slot X ($0340 + 2X), but 5000 when X is 0 or 4, the two cannons."
  },
  {
   "address": 5505,
   "type": "line",
   "text": "Build an object's picture in the work buffer at $0420 (cleared for 32 bytes, or 72 when the size $5E is not 0): the shape's bytes come from a pointer in the table at $7241 (8 bytes per size, 2 per frame; X is the frame, kept in $2C), each looked up through the colour table A/Y, and through the mirror table at $9000 when the frame number is odd (the instruction at $15D0 is NOP then, TYA for even frames)."
  },
  {
   "address": 5575,
   "type": "line",
   "text": "Low byte of the shape's address, patched by $15AE from the pointer table at $7241."
  },
  {
   "address": 5576,
   "type": "line",
   "text": "High byte of the shape's address, patched by $15B4."
  },
  {
   "address": 5578,
   "type": "line",
   "text": "Low byte of the colour table the caller gave in A, patched at $1581."
  },
  {
   "address": 5579,
   "type": "line",
   "text": "High byte of the colour table the caller gave in Y, patched at $1584."
  },
  {
   "address": 5584,
   "type": "line",
   "text": "TYA for an even frame (the shape's byte as it is) or NOP for an odd one (the mirrored byte from $9000 kept), patched by $15C1."
  },
  {
   "address": 5592,
   "type": "line",
   "text": "The last byte of each object size's picture ($5E = 0, 1, 2): 7, 31, 71."
  },
  {
   "address": 5595,
   "type": "line",
   "text": "Move the picture built at $0420 to its place inside the character cells: down by the top three bits of the low byte of the vertical position ($05, 0-7 rows) and right by 0-3 double-width pixels from the top two bits of the horizontal one ($06). The large size ($5E not 0) swaps the buffer with zero page $B0-$F7 to use zero-page indexing, shifts it there and swaps it back."
  },
  {
   "address": 5799,
   "type": "line",
   "text": "Draw an object's picture (A/Y; eight bytes a cell, a column of cells after another) into the current half of the screen: $07 and $08 are the top-left cell, $5E the size (1, 2 or 3 cells a side, $71C1), $5F the first character code to use. Each cell inside rows $C4-$C5 and columns 0-29 gets a fresh character: the background character's eight bytes (from the character set $C6) are copied into it, with the object laid over them where its bytes are not 0, through the multicolour mask table at $9F00, so the background shows round it."
  },
  {
   "address": 5838,
   "type": "line",
   "text": "The number of cell rows to draw, patched by $16B2 from $71C1 by the size."
  },
  {
   "address": 5846,
   "type": "line",
   "text": "The number of cell columns to draw, patched by $16B5 from the same table."
  },
  {
   "address": 5926,
   "type": "line",
   "text": "Low byte of the object's picture, patched by $16A7 from A."
  },
  {
   "address": 5927,
   "type": "line",
   "text": "High byte of the object's picture, patched by $16AA from Y."
  },
  {
   "address": 5938,
   "type": "line",
   "text": "Low byte of the background character's shape, patched by $1713 when the cell's character changes."
  },
  {
   "address": 5939,
   "type": "line",
   "text": "High byte of the background character's shape, patched by $170B."
  },
  {
   "address": 5947,
   "type": "line",
   "text": "Low byte of the fresh character's shape (the first character $5F \u00d7 8), patched by $16C4."
  },
  {
   "address": 5948,
   "type": "line",
   "text": "High byte of the fresh character's shape, patched by $16BF."
  },
  {
   "address": 5988,
   "type": "line",
   "text": "Low byte of the background shape for the bytes the object leaves empty, patched by $1716."
  },
  {
   "address": 5989,
   "type": "line",
   "text": "High byte of that background shape, patched by $170E."
  },
  {
   "address": 5993,
   "type": "line",
   "text": "With the cannon selected ($65 = 0), and for plane two only when its weapon selector has come to rest on the cannon ($0F = 0): set $D9 when the enemy plane is visible ($D8) and within half a cell of the sight's centre (column 15 by $DB and $57, row 4 of the view by $BE and $58), then draw the gun sight's shape ($95C8) at column 14, row 3 ($16A7)."
  },
  {
   "address": 6097,
   "type": "line",
   "text": "Draw X letters of the string at A/Y into a panel's graphics at ($0C): each letter's five rows come from the small font in page $95 ($6F66 gives each letter's offset), and letters are 32 bytes apart (40 for plane two, $D1 = 1)."
  },
  {
   "address": 6129,
   "type": "line",
   "text": "Low byte of the message text, patched by $17D1."
  },
  {
   "address": 6130,
   "type": "line",
   "text": "High byte of the message text, patched by $17D4."
  },
  {
   "address": 6140,
   "type": "line",
   "text": "The letter's offset in the small font's page $95, patched by $17F6 from $6F66."
  },
  {
   "address": 6143,
   "type": "line",
   "text": "Low byte of where the letter goes in the panel, from $0C and stepped by the letter spacing ($1804, $180A)."
  },
  {
   "address": 6144,
   "type": "line",
   "text": "High byte of where the letter goes, from $0D and carried by $1812."
  },
  {
   "address": 6153,
   "type": "line",
   "text": "The letter spacing, 32 for plane one or 40 for plane two, patched by $17E1."
  },
  {
   "address": 6171,
   "type": "line",
   "text": "The cannon's tracers and hits. Firing ($C0, set at $228D) restarts both counters $0264/$0266 at 3; they count down after the trigger is let go. While either runs, the tracer pictures (one of four frames, $74 and $6EF6) are drawn over the background into four characters at $FF68 and shown in cells round row 4, column 24, and a column of shot marks (characters $CD up) is drawn. The counters are compared with plane one's $0266 for both planes ($18B9). When the enemy is in the sight ($D9), each pass has a one in four chance ($5F3B below $40) of a hit: 20 damage with timer 8 to the other plane ($27FB) and 20 points ($1C25)."
  },
  {
   "address": 6292,
   "type": "line",
   "text": "The tracer frame's mask offset in $9D48, patched by $185A from $6EF6."
  },
  {
   "address": 6296,
   "type": "line",
   "text": "The page of the character set the tracer cells are built in ($C6 + 6), patched by $1879."
  },
  {
   "address": 6368,
   "type": "line",
   "text": "Print nine characters of the string at A/Y on row X of the left panel, on both screens ($8000 and $8400): values 0-9 as the digits, letters deciphered through $6F7F, each mapped to a screen code through $73B1."
  },
  {
   "address": 6400,
   "type": "line",
   "text": "Low byte of the panel string, patched by $18E0."
  },
  {
   "address": 6401,
   "type": "line",
   "text": "High byte of the panel string, patched by $18E3."
  },
  {
   "address": 6434,
   "type": "line",
   "text": "Choose the radar scope for the current plane and copy its 94 bytes to $03A0: plane one from $9B28 (or $9E68 when $0487 is set and the distance $94/$95 is $0180 or more), plane two from $ED00 (or $ED60 by $048B the same way); sets the limits $B9-$BC and $BD (1 for the second scope)."
  },
  {
   "address": 6498,
   "type": "line",
   "text": "Low byte of the chosen instrument template, patched by $1959."
  },
  {
   "address": 6499,
   "type": "line",
   "text": "High byte of the chosen instrument template, patched by $195C."
  },
  {
   "address": 6561,
   "type": "line",
   "text": "Draw both planes' bank indicators: one of the pictures listed at $654E (plane one) and $6556 (plane two), chosen through $655E by the bank angle (record byte $15), written into the panel graphics ($A1F0, and $8C48 over $9DC8 for plane two) through index tables chosen by the quarter of the roll (byte $19), for plane one in page $97 ($7145) and for plane two at $7389, $7301, $72A1 and $7259 ($656E, $6572), and mirrored through $9000 in quarters 0 and 1. Every fourth pass ($1F) it also redraws the slow instruments ($1A28)."
  },
  {
   "address": 6604,
   "type": "line",
   "text": "Low byte of plane one's bank picture, patched by $19AC from $654E."
  },
  {
   "address": 6605,
   "type": "line",
   "text": "High byte of plane one's bank picture, patched by $19B2."
  },
  {
   "address": 6609,
   "type": "line",
   "text": "TYA (not mirrored) or NOP (mirrored) for plane one's bank picture by its roll quarter, patched by $19C0."
  },
  {
   "address": 6611,
   "type": "line",
   "text": "Low byte of the index table in page $97 for plane one's bank picture, patched by $19C6 from $7145."
  },
  {
   "address": 6668,
   "type": "line",
   "text": "Low byte of plane two's bank picture, patched by $19E6 from $6556."
  },
  {
   "address": 6669,
   "type": "line",
   "text": "High byte of plane two's bank picture, patched by $19EC."
  },
  {
   "address": 6673,
   "type": "line",
   "text": "TYA or NOP for plane two's bank picture, patched by $19FA."
  },
  {
   "address": 6675,
   "type": "line",
   "text": "Low byte of plane two's index table, patched by $1A00 from $656E."
  },
  {
   "address": 6676,
   "type": "line",
   "text": "High byte of plane two's index table, patched by $1A06 from $6572."
  },
  {
   "address": 6696,
   "type": "line",
   "text": "The slow instruments for both pilots. Plane one: the altitude's five digits ($6D63), the speed's four digits ($42/$44 through $3ED4), the pitch ladder (20 rows at $A2D9 with a mark at the row from $7155 or $716D by the pitch, record byte $17, the table chosen by bytes 3 and $1C), the power bar when the throttle ($0308) has changed, the fuel bar when the fuel ($0284) has changed, and the compass when the heading ($02EA) has changed (heading / 8: one of the pictures listed at $7189 chosen through $71A5, mirrored through $9000 for the second half of the circle)."
  },
  {
   "address": 6887,
   "type": "line",
   "text": "Low byte of plane one's compass picture, patched by $1AC2 from $7189."
  },
  {
   "address": 6888,
   "type": "line",
   "text": "High byte of plane one's compass picture, patched by $1AC8."
  },
  {
   "address": 6892,
   "type": "line",
   "text": "TYA or NOP: plane one's compass mirrored for the second half of the circle, patched by $1AE1."
  },
  {
   "address": 6894,
   "type": "line",
   "text": "Low byte of the index table in page $97 for the compass, patched by $1AD4 from $71B5."
  },
  {
   "address": 6905,
   "type": "line",
   "text": "The same for plane two: altitude ($6D55), speed ($43/$45), power ($0328), fuel ($0285), pitch ladder ($8C22) and compass ($02EB, pictures listed at $7197)."
  },
  {
   "address": 7102,
   "type": "line",
   "text": "Low byte of plane two's compass picture, patched by $1B93 from $7197."
  },
  {
   "address": 7103,
   "type": "line",
   "text": "High byte of plane two's compass picture, patched by $1B99."
  },
  {
   "address": 7107,
   "type": "line",
   "text": "TYA or NOP: plane two's compass mirrored, patched by $1BB8."
  },
  {
   "address": 7109,
   "type": "line",
   "text": "Low byte of plane two's compass index table, patched by $1BA5 from $71B9."
  },
  {
   "address": 7110,
   "type": "line",
   "text": "High byte of plane two's compass index table, patched by $1BAB from $71BD."
  },
  {
   "address": 7121,
   "type": "line",
   "text": "Copy X rows of 30 screen codes from the address A + 256 \u00d7 $AF to the current half of the screen, starting at row Y + $C4, column 10."
  },
  {
   "address": 7160,
   "type": "line",
   "text": "Sprites for the game: all off, in front of the background, unexpanded, sprites 6 and 7 multicolour; colours 0 (black) for sprites 0-5 and 9 (brown) for 6 and 7; multicolours 8 (orange) and 7 (yellow)."
  },
  {
   "address": 7205,
   "type": "line",
   "text": "Add A (in tens of points) to pilot X's score ($025A/$025C), stopping at 65535, and ask for both side panels to be redrawn ($0223 = 2)."
  },
  {
   "address": 7236,
   "type": "line",
   "text": "Redraw the current pilot's side panel ($0223 counts the redraws still owed). Plane one: PILOT ONE, PLANES and the planes left (IMMORTAL in their place when the flag at $0975 is set), SCORE and the score. Plane two: the planes left, then COMPUTER and LEVEL with the skill when the computer flies it outside the demo, otherwise PILOT TWO, SCORE and the score. A score is shown as its five digits between zeros, ten times the stored number."
  },
  {
   "address": 7412,
   "type": "line",
   "text": "Put the current pilot's planes left ($02F0,X) as two digits into the PLANES string ($6BDD) and return its address in A/Y."
  },
  {
   "address": 7437,
   "type": "line",
   "text": "Fill colour RAM's 25 rows of 40 with the colour in A."
  },
  {
   "address": 7453,
   "type": "line",
   "text": "The colour to fill colour RAM with, patched by $1D0D."
  },
  {
   "address": 7466,
   "type": "line",
   "text": "Point $C3 at the screen being drawn: $80 or $84, the one the interrupt is not showing ($59 bit 7)."
  },
  {
   "address": 7477,
   "type": "line",
   "text": "Set the text printer's column (X), row (Y) and colour (A)."
  },
  {
   "address": 7484,
   "type": "line",
   "text": "Scan the whole keyboard and return in $2D the number (8 \u00d7 column + row, counted from 0) of the last key found down, or $40 for none; used by the name entry."
  },
  {
   "address": 7547,
   "type": "line",
   "text": "The computer pilot's height keeping: A/Y is the height wanted (800 feet when the high byte is below 3). Unless the plane is banked 7 or more, subtract the plane's altitude ($02DE/$02E4, $581A) and ask $217C to pitch towards it: the difference's high byte, up to 17, or 1 between 100 and 255 feet; within 100 feet it levels the nose when the pitch is below 2."
  },
  {
   "address": 7642,
   "type": "line",
   "text": "Wait for the next frame: set $54 and wait for the interrupt to clear it."
  },
  {
   "address": 7651,
   "type": "line",
   "text": "From the quarter of the roll ($79, 0-3): $63 = 1 in quarters 1 and 2 and $CD = 1 in quarters 1 and 3."
  },
  {
   "address": 7669,
   "type": "line",
   "text": "Set object X's height to A/Y plus a random 0-1023 ($5F3B)."
  },
  {
   "address": 7697,
   "type": "line",
   "text": "Clear the current pilot's half of the screen that is being shown: swap the screens' roles ($59), fill 12 rows with character 10 ($2210) and swap back."
  },
  {
   "address": 7726,
   "type": "line",
   "text": "Never called: stores A/Y as a string pointer, sends \"I\" (initialise) to drive 8's command channel through the KERNAL's LISTEN, SECOND and CIOUT, then the string at the pointer up to an $FF. Left from another way of using the disk."
  },
  {
   "address": 7763,
   "type": "line",
   "text": "Low byte of the unused disk command string, patched by $1E2E."
  },
  {
   "address": 7764,
   "type": "line",
   "text": "High byte of the unused disk command string, patched by $1E31."
  },
  {
   "address": 7778,
   "type": "line",
   "text": "Hand the machine back to the KERNAL for a disk write: sound stopped ($1F9C, $4E2C), the screen blanked, interrupts off, CIA 1's interrupts off, zero page replaced by the KERNAL's copy at $F900, the KERNAL's vectors at $0300-$033F restored from $65AE, the ROMs banked in ($01 = $37) and the raster interrupt off."
  },
  {
   "address": 7832,
   "type": "line",
   "text": "SAVE OPTIONS: the panel character set swapped out ($53D4), the KERNAL brought back ($1E62), the 17 bytes of the options record ($0903-$0913) copied to $CF00, and that buffer written to track 18 sector 2 ($1EC4 with \"2\"); then the ROMs banked out, the title music asked for again ($E574/$4EAD = $40) and the screen on."
  },
  {
   "address": 7876,
   "type": "line",
   "text": "Write the 256 bytes at $CF00 to the disk: open the command channel (15) and a buffer channel (5, name \"#\"), send the bytes in the order $CF01-$CFFF then $CF00, then send \"U2:5,0,18,n\" (block write from channel 5 to drive 0, track 18, sector n from $1F2E) and close both."
  },
  {
   "address": 7972,
   "type": "line",
   "text": "\"U2:5,0,18,\" and the sector number, which the callers set: \"2\" for the options, \"3\" for the high scores."
  },
  {
   "address": 7982,
   "type": "line",
   "text": "The sector of the block write: \"2\" or \"3\" ($58, \"X\", in the file)."
  },
  {
   "address": 7983,
   "type": "line",
   "text": "\"#\": the name that opens a buffer in the drive."
  },
  {
   "address": 7984,
   "type": "line",
   "text": "Save the high-score table: the KERNAL brought back ($1E62), the table at $0920-$0975 (signature, scores, names and the immortal flag) copied to $CF00 and written to track 18 sector 3 ($1EC4 with \"3\"); then the ROMs banked out, the title music asked for again and the screen on."
  },
  {
   "address": 8025,
   "type": "line",
   "text": "Seven bytes no code reads: $60 (an RTS), then \"S0:Z\", $FF, \"Z\": a scratch command to the drive for a file called Z, left from an earlier way of saving."
  },
  {
   "address": 8032,
   "type": "line",
   "text": "Move an object's position ($06/$07 across, $05/$08 down, in 256ths of a cell) up and left by half its size ($5E: 0 half a cell, 1 one cell, 2 one and a half), so it is drawn centred on its position."
  },
  {
   "address": 8078,
   "type": "line",
   "text": "If the music is stopped ($E574 bit 7, the sound effects running), ask for it again: $40 into $E574 and $4EAD."
  },
  {
   "address": 8092,
   "type": "line",
   "text": "Outside the demo, stop the music and switch to the sound effects ($C0 into $E574 and $4EAD), and start the engine sound ($4DFB)."
  },
  {
   "address": 8109,
   "type": "line",
   "text": "Landing: only over a place where the plane can land ($0262,X at 2 or more, set elsewhere). Below 1024 feet ($02E4 under 4) with the pitch below 4 it shows OK FOR LANDING (message 24) and sets $6B; with the wings level ($75 = 0) and upright ($63 = 0) the plane lands: it is reset for the hangar ($208E), its view goes to the hangar (state 3) and A = 1. Higher or steeper it shows REDUCE ALT and TO LAND (messages 7 and 8). A = 0 when the plane did not land."
  },
  {
   "address": 8188,
   "type": "line",
   "text": "The full-scale game's hangar menu: lines 10 and 11, TAKE OFF and ARM AIRCRAFT, moved between with the stick ($1363), the cursor drawn by $2A6F. Fire on ARM AIRCRAFT sets $0252 to 1 and the view to the arming screen (state 4); fire on TAKE OFF sets $0252 to 2, which the caller turns into a take-off."
  },
  {
   "address": 8300,
   "type": "line",
   "text": "Make A the current weapon ($65) and redraw the weapon panel ($5F89)."
  },
  {
   "address": 8305,
   "type": "line",
   "text": "A pilot was shot down: outside the demo reset the plane for the hangar ($208E), and clear the other pilot's return-to-hangar flag ($0250), setting it to 1 in the dogfight."
  },
  {
   "address": 8334,
   "type": "line",
   "text": "Reset pilot X's plane for the hangar: $021B/$021C = $4268, view state 3, both missiles ($02B6/$02B7) and $91 cleared, the plane's damage, explosion and cannon counters cleared, the plane inactive ($02B4), the hangar cursor on TAKE OFF ($0256 = 10), fuel full ($0284/$0286 = $FF), six chaff and six flares, the other plane's explosion counter cleared, the zero-page record $60-$7F cleared with fire treated as held, and the pilot's message timers ($0350 or $0370) cleared."
  },
  {
   "address": 8443,
   "type": "line",
   "text": "Fill three rows (rows 9-11 of the current half, columns 10-39) with character 10."
  },
  {
   "address": 8480,
   "type": "line",
   "text": "Start an explosion at the position in $05-$08 for object X: kept in $027C/$027E/$0280/$0282, and its flag $0278 set."
  },
  {
   "address": 8506,
   "type": "line",
   "text": "Start object X's explosion counter $027A: 1 for objects 0-5 (A below 6), $20 for others."
  },
  {
   "address": 8522,
   "type": "line",
   "text": "Step the current plane's explosion counter $027A: from 1 it counts to $1F, from $20 to $27, then the explosion ends ($0278 and $027A cleared)."
  },
  {
   "address": 8558,
   "type": "line",
   "text": "Point $C9/$CA at row Y, column 10 of the screen being drawn ($703F/$7058 and $C3)."
  },
  {
   "address": 8572,
   "type": "line",
   "text": "The computer pilot's elevator: A is the pitch wanted ($36), X its direction (0 or 1). Sets the stick's vertical $6D to -1, 0 or 1 to reach it: first back through zero if the plane is pitched the other way ($7C), then towards the wanted pitch."
  },
  {
   "address": 8630,
   "type": "line",
   "text": "The computer pilot's throttle: compare A with the throttle $68 and press this plane's power keys: more (F, $0205; K, $0207 for plane two) when A is higher, less (S, $0204; H, $0206) when lower, neither when equal."
  },
  {
   "address": 8675,
   "type": "line",
   "text": "The high byte of character A's shape in the current character set (A \u00d7 8 + 256 \u00d7 $C6); the low byte is left in $AE."
  },
  {
   "address": 8692,
   "type": "line",
   "text": "Add 40 to the pointer $C9/$CA: the next screen row."
  },
  {
   "address": 8706,
   "type": "line",
   "text": "Subtract 40 from the pointer $C9/$CA: the row above."
  },
  {
   "address": 8720,
   "type": "line",
   "text": "Fill X rows of the current half (from row $C4, columns 10-39) with character A."
  },
  {
   "address": 8743,
   "type": "line",
   "text": "The fill character, patched by $2210."
  },
  {
   "address": 8745,
   "type": "line",
   "text": "Low byte of the row being filled, from $703F and stepped by 40 ($222E, $2234)."
  },
  {
   "address": 8746,
   "type": "line",
   "text": "High byte of the row being filled, from $7058 plus the screen's page."
  },
  {
   "address": 8771,
   "type": "line",
   "text": "The trigger. The weapon panel is refreshed while the trigger is up ($70 = 0); a press arms it ($70). With the trigger held and the current weapon's stock not zero (slot $65, plus 4 for plane two, at $0340), the cannon sets $C0 for this pass ($181B fires it). A missile launches only when none of this plane's is in flight and the target is locked ($17): it starts at the plane's position and 40 feet below it (object 2 or 3), is pushed out sideways to the left or the right wing in turn (the heading plus or minus $30 by the stock's lowest bit, moved once by $3E55 and $3D57), flies on the plane's heading at the plane's speed / 8 ($1A), the other plane's missile warnings are raised ($0483/$048B, or $0487/$048F), one is taken from the stock and MISSILE LAUNCH (message 23) shows. Plane two fires only once its sliding weapon selector has reached the weapon ($0F = weapon \u00d7 8)."
  },
  {
   "address": 9035,
   "type": "line",
   "text": "Draw the missile sight's box round the enemy plane when it is in view ($18) and a missile is selected: the enemy's cell column ($DB) must be 11-18 and its row ($BE, within the half) 2-9; the box (shape from $71E8 by the fine position, characters $D1 up, size 2) is held inside columns 11-16.5 and rows 1-6, and $0E is set to say the enemy is boxed."
  },
  {
   "address": 9184,
   "type": "line",
   "text": "Per pass, for the current pilot: the gun sight with the cannon ($1769). With no missile in flight: lock cleared ($17), the range read-out ($2488); in range (distance $9F below 100, and within 8 for the heat seeker, 25 for the radar missile, 4 for air-to-ground) the box is drawn ($234B), and ten passes with the enemy boxed (air-to-ground also below 2304 feet) lock the target: $17 set and TARGET LOCKED (message 20). Out of range: OUT OF RANGE (28). With a missile in flight: the heat seeker needs nothing more; the radar and air-to-ground missiles need the box kept on the target, and when the enemy leaves it for longer than the lock counter ($71) the lock is broken: the missile is lost and LOCK BROKEN (21) shows."
  },
  {
   "address": 9352,
   "type": "line",
   "text": "The range messages: for the air-to-ground missile the radar station's range ($248E first, then RADAR STATION and RANGE, messages 26 and 27, from the table at $0490), otherwise the enemy plane's: with the distance ($95, kept in $9F) below 100, ENEMY PLANE, RANGE and ALT (messages 16, 17 and 18)."
  },
  {
   "address": 9358,
   "type": "line",
   "text": "The range warnings for the current pilot: $95 (the enemy's distance) into $9F, and below 100 messages 16, 17 and 18 (ENEMY PLANE, its RANGE and ALT) for 3 ticks each; reached from $24AC, which with an air-to-ground or air-to-ship missile selected ($65 = 3) also shows messages 26 and 27 (the target and its RANGE) while this pilot's target is within 100."
  },
  {
   "address": 9435,
   "type": "line",
   "text": "A missile Y has reached a ground target X (with $EA = 0 and $EB below 100): the missile is removed and the target's hit count ($023E) goes up; the first hit starts a small explosion (kind 10), the second a big one (kind 1) and the count goes to 3, which starts the target's burning ($250C)."
  },
  {
   "address": 9484,
   "type": "line",
   "text": "A ground target hit twice burns for 29 passes ($0242 counting from 3 to $20), then disappears ($02B8 cleared) and the other pilot scores 2000 points ($1C25 with 200)."
  },
  {
   "address": 9521,
   "type": "line",
   "text": "Flares and chaff (A is this pilot's decoy key, Q or T). With no enemy missile in flight the key shows the counts (FLARES n CHAFF n, message 22, the digits written into it). With one in flight (other than an air-to-ground missile): FLARE DROPPED or CHAFF DROPPED while a decoy is working, ENEMY MISSILE (14) and its RANGE (13) when it is close; the key drops chaff against a radar missile (timer 8) and flares against a heat seeker (timer 5), or says NO CHAFF or NO FLARES. Then the hit test: within 100 across ($0482/$0483 by this pilot's index $D4) and 50 feet in height, the missile is removed and does 25-32 to the damage timer and a damage of $7009 by the hits option (255, 128 or 96) through $27FB, starts an explosion, and scores 50 points for the other pilot."
  },
  {
   "address": 9711,
   "type": "line",
   "text": "Bug: with no chaff left, the call to $34F8 that shows NO CHAFF returns with X still 11, the message number, and there is no jump past this code, so instead of this pilot's count and timer it decrements $0293 (the low byte of plane two's missile's position across) and writes 8 into $0297 (the middle byte of plane two's position across), whichever pilot pressed the key: plane two moves by less than an eighth of a square of the map."
  },
  {
   "address": 9819,
   "type": "line",
   "text": "Fly the current pilot's missile (object 2 + X) when it is active. Air-to-ground missiles go to $27D4. The speed ($0270) rises by 4 a pass to the type's top speed ($7860: 250 for the heat seeker, 255 for the radar missile), and is quartered near the target ($0482/$0483 below 25). A heat seeker lives 14 ticks of $026C and a radar missile 40, then disappears ($2760). A decoy can turn it away: a radar missile meets chaff with a chance of 180 in 256, or 200 for the human pilot's missile against the computer; a heat seeker meets flares within 2 with a chance of 220 in 256, or 230 plus the skill level for the human's missile against the computer. A decoyed missile turns $30 off its course and halves its speed. A locked missile ($17) steers towards the target by up to 5 a pass ($4E); then it moves ($2766, $3E55)."
  },
  {
   "address": 10086,
   "type": "line",
   "text": "Move the missile's height towards the target's ($50/$52): the speed adds into $025E, and on each carry it climbs $82 or dives $8B feet, or matches the height when it is within $8C."
  },
  {
   "address": 10196,
   "type": "line",
   "text": "The air-to-ground missile: speed up by 8 a pass to at most $C0, a life of 20 ticks, then the shared guidance at $271E."
  },
  {
   "address": 10235,
   "type": "line",
   "text": "Damage pilot X: A goes to its timer $0254, Y is added to the damage $0276. Reaching 255 kills the plane ($0276 = $FF) and makes the explosion sound ($4DFB, with the demo flag cleared for the call so it sounds in the demo too). With the immortal flag set, plane one's damage is cleared first, which matters when the plane killed is plane two: shooting down the computer repairs the immortal plane."
  },
  {
   "address": 10287,
   "type": "line",
   "text": "Per pass: the plane's weight $69 from the three missile stocks ($0342-$0346, the air-to-ground stock through $5949) and plane one's fuel ($0284 / 64, for both planes), CRASH WARNING (message 1) below 2816 feet in a dive steeper than 1, the kill when the damage reached $FF (the other pilot scores 200 points; below 4864 feet a chance of 160 in 256 of a spin, $6B = 2, otherwise the plane is lost at once, $3A), FUEL IS LOW (4) flashing below fuel $30, ENEMY CLOSE (9) when the planes are within $50 across and 100 in height, and a collision ($3A) within $1A and $1E."
  },
  {
   "address": 10464,
   "type": "line",
   "text": "The stick's left and right: rolls the plane. Holding it accelerates the roll ($7B, from 4 up to the top rate $022B) and the rate is scaled by the bank ($9C08 or $9C18 by $75, $4349); the bank $75/$76 runs 0-15, and passing either end moves the roll to the next quarter ($79)."
  },
  {
   "address": 10608,
   "type": "line",
   "text": "The options screen's fire: on the press only, act on the line under the cursor ($0256): 0 COMMENCE CONFLICT ($0224), 1 players, 2 skill (1-20, one player only), 3 scenario, 4 planes (3-20), 5 crash detection, 6 missile hits (1-3), 7 SAVE OPTIONS ($1E98, then back to the title)."
  },
  {
   "address": 10748,
   "type": "line",
   "text": "The stick's up and down: changes the pitch ($77, 0-18, with its direction $7C). How often it acts depends on the bank ($6F56 adds into $72), and the plane's attitude ($63) decides which way the stick moves the nose. Pulling past 18 takes the plane over the top: the roll moves a quarter ($79) and the heading turns half a circle ($02EA EOR $80)."
  },
  {
   "address": 10832,
   "type": "line",
   "text": "Draw the options cursor (characters $1E and $1F) at columns 1-2 of the row for the line under the cursor ($65A6)."
  },
  {
   "address": 10863,
   "type": "line",
   "text": "Draw a menu cursor (characters $1E and $1F) at columns 11-12 of row Y of the current half."
  },
  {
   "address": 10893,
   "type": "line",
   "text": "Draw the cursor (characters $1E and $1F) at columns 6-7 of screen row Y."
  },
  {
   "address": 10918,
   "type": "line",
   "text": "The NMI handler, which CIA 2's timer A fires a few cycles after $6066 starts it: acknowledges CIA 2, then puts back the two bytes $6066 broke: $85 (STA) at $43FC, the first instruction of the play interrupt, and $EA (NOP) at $16E9 in the object drawer. If the NMI never comes (its vector changed, a freezer cartridge), the play interrupt starts with STX $02 and so returns the wrong A to the main program, and the object drawer returns at once: nothing is drawn."
  },
  {
   "address": 10948,
   "type": "line",
   "text": "One byte where the NMI handler keeps A ($2AA6) and from which it takes it back before RTI ($2AC0); the two bytes after it are not used."
  },
  {
   "address": 10951,
   "type": "line",
   "text": "A title wipe: two edges of light grey, grey and dark grey (colours 15, 12, 11) close in from both sides of the screen to the middle, one column a frame, leaving black text colour behind them ($3922 colours one column of rows $B5 up to $B7)."
  },
  {
   "address": 11049,
   "type": "line",
   "text": "A title wipe the other way: the grey edges open from the middle outwards, one column a frame, leaving white text colour behind."
  },
  {
   "address": 11147,
   "type": "line",
   "text": "The computer pilot: keep the plane at the height it has ($1D7B with its own altitude)."
  },
  {
   "address": 11158,
   "type": "line",
   "text": "The computer pilot's turn towards a bearing A (relative to its heading; $2E keeps it). A bank of 15 pulls the stick back; a bank of 9 or more lets the pitch fall a step. Within two steps of the bearing the heading is corrected directly and the wanted bank is 0; within $20 the wanted bank is twice the bearing's size, at most 11; further off it is 15. Then $2C3A banks towards it."
  },
  {
   "address": 11233,
   "type": "line",
   "text": "The computer pilot chasing the enemy: when the enemy is behind it ($98 + $40 negative), upright, banked below 8, and with a chance of 32 in 256, plane two at skill 5 or more starts its escape manoeuvre ($B8 = 1, $12 = 0) outside the demo. Otherwise it pursues ($4362) and opens the throttle to $60 when the bearing is more than $18 off."
  },
  {
   "address": 11299,
   "type": "line",
   "text": "The computer pilot's throttle in a chase: with the planes close ($95 = 0), plane one's throttle less its byte 9 plus plane two's byte 9; otherwise full ($FF), through $21B6."
  },
  {
   "address": 11322,
   "type": "line",
   "text": "The computer pilot's roll towards the bank $2F. Inverted ($63) it pushes the stick right; when the roll is in the quarter that suits the turn (quarter 0 for a positive bearing, 3 for a negative one) it moves the bank $75 itself, up to two steps a pass towards $2F, without touching the stick; otherwise it pushes the stick ($6E) to roll round to that quarter."
  },
  {
   "address": 11398,
   "type": "line",
   "text": "Draw the enemy plane in the cockpit view. Only when it is ahead (bearing $98 within $20 either side) and nearer than 25 ($95): its place on the screen from $3948 ($DB/$57 across, $BE/$58 down); an explosion is started there when it has been shot down or is being hit ($0254, $2120). By distance: 6 or more an empty cell; 2 to 5 one or two dots ($5FD4); closer, a medium picture (2 cells, $352C and the shapes at $6576), and nearest (within $78 across and $13 in height) the large picture (3 cells), chosen from the enemy's heading relative to ours ($56), its roll ($0272) and its pitch ($0274) through the view tables at $7816, $7678, $7648, $7608 and $75B0, and built by $1581 and $15DB. $D8 says the medium or large picture is showing and $18 that something was drawn. Then the radar ($3CA1)."
  },
  {
   "address": 11863,
   "type": "line",
   "text": "The cockpit messages. Counts each pilot's live messages (timers at $0350 and $0370, into $02F4/$02F5). About every 14 passes ($80 adds $12 a pass) each pilot's panel moves on to its next live message, wrapping within 16 when any are live, and draws its two lines of seven letters ($17D1; the text pointers at $7432 and $7472) into the message panel ($A325 for plane one, $8AA0 for plane two), or clears the panel when none is live."
  },
  {
   "address": 12174,
   "type": "line",
   "text": "Prepare the current plane for take-off: its weapon stocks loaded from its loadout (dogfight $74E9 or $74F9: 3000 cannon rounds and 8 heat seekers; full-scale $74F1 or $7501: 3000 rounds, 6 heat seekers and 4 radar missiles, which the arming screen changes), fractions and the death timer cleared, the throttle $BF and the speed 500 ($42/$44). In the dogfight it starts at 20,000 feet plus up to 1023 on a random heading, near the middle of the map or within 20 of the other plane when that is flying. In the full-scale game it starts at 1000 feet plus up to 1023 by its base: plane one at across $0A, down $20, heading $40; plane two at across $E8, heading $C0."
  },
  {
   "address": 12198,
   "type": "line",
   "text": "Low byte of plane one's loadout for the scenario, patched by $2F9A from $7568."
  },
  {
   "address": 12199,
   "type": "line",
   "text": "High byte of plane one's loadout, patched by $2FA0."
  },
  {
   "address": 12229,
   "type": "line",
   "text": "Low byte of plane two's loadout, patched by $2FB9 from $756C."
  },
  {
   "address": 12230,
   "type": "line",
   "text": "High byte of plane two's loadout, patched by $2FBF."
  },
  {
   "address": 12428,
   "type": "line",
   "text": "In the full-scale game, put the two ground targets on the map: target 4 at across $58, down $38, target 5 at across $98, down $10, both active ($02B8/$02B9)."
  },
  {
   "address": 12460,
   "type": "line",
   "text": "Keep the current plane's attitude for both cockpit views: $0272,X = the roll as 0-63 (the quarter \u00d7 16 plus the bank, mirrored in quarters 1 and 3) and $0274,X = the pitch's height change ($6582 by the pitch, negative when diving). The other plane's view reads them with Y to draw this plane ($2D22, $2D30, $353C, $354A); this plane's own view reads them with X = $D1 to choose the enemy's and the ground targets' pictures by its own roll and pitch ($2D74, $2DA6, $356D, $357F, $6135, $617C)."
  },
  {
   "address": 12505,
   "type": "line",
   "text": "Clear zero page $02-$FB and pages 2 to 4 ($0200-$04FF), then set $3D/$3E from $0988 and $439A."
  },
  {
   "address": 12539,
   "type": "line",
   "text": "Colour plane one's view (rows 0-7, columns 10-39 of colour RAM) with A."
  },
  {
   "address": 12569,
   "type": "line",
   "text": "Colour plane one's instrument rows (8-11, columns 10-39) with A."
  },
  {
   "address": 12587,
   "type": "line",
   "text": "Colour plane two's view with A: colour RAM rows 13-20, columns 10-39. Plane two's view is rows 13-19 ($0F52-$0F58); row 20 is the top row of plane two's panel, which $3149 (rows 21-24) leaves to this routine."
  },
  {
   "address": 12617,
   "type": "line",
   "text": "Colour plane two's instrument rows (21-24, columns 10-39) with A."
  },
  {
   "address": 12635,
   "type": "line",
   "text": "Draw the horizon across the current pilot's view, as characters. The line's slope comes from the bank ($75, through $6FE1 and $6FF1 scaled by the pitch, $4334) and its place from the pitch: $28 is the column where it crosses and $29 its row. Characters $DC (sky) and $DD (ground) fill each side, swapped in quarters 1 and 3 ($CD); along the line go edge characters, taken for the bank from the lists at $7071 ($708F long), stepping $70E1 columns every $70F1 rows. With the wings level ($75 = 0) the rows are filled with sky above and ground below ($33D9); at bank 15 the line is upright. Last, the edge and fill characters' shapes are copied into the character set ($7111 and $7101, mirrored through $9000 and with the colours swapped by EOR $AA when the plane is inverted), and $D3 is set to say the horizon is in view."
  },
  {
   "address": 12682,
   "type": "line",
   "text": "ADC or SBC (opcode $65 or $E5) for the horizon's crossing column, by the slope's sign $F3; patched by $3185."
  },
  {
   "address": 12721,
   "type": "line",
   "text": "The view's first row ($C4) plus 3: the row where the horizon line is placed, patched by $3193."
  },
  {
   "address": 12722,
   "type": "line",
   "text": "ADC or SBC for the horizon's row, by the sign $F4; patched by $31AD."
  },
  {
   "address": 12846,
   "type": "line",
   "text": "Low byte of the edge characters for this bank (left to right), patched by $3212 from $7071."
  },
  {
   "address": 12847,
   "type": "line",
   "text": "High byte of the edge characters, patched by $321B."
  },
  {
   "address": 12860,
   "type": "line",
   "text": "Low byte of the edge characters read the other way (quarters 1 and 3), patched by $3215."
  },
  {
   "address": 12861,
   "type": "line",
   "text": "High byte of the same, patched by $321E."
  },
  {
   "address": 13240,
   "type": "line",
   "text": "Low byte of the edge characters' shapes for this bank, patched by $3391 from $7111."
  },
  {
   "address": 13241,
   "type": "line",
   "text": "High byte of those shapes, patched by $3397."
  },
  {
   "address": 13246,
   "type": "line",
   "text": "TYA or NOP: the edge shapes mirrored when the sky is on the right ($CD), patched by $33A7."
  },
  {
   "address": 13248,
   "type": "line",
   "text": "0 or $AA: the edge shapes' colours swapped when the plane is inverted, patched by $3386."
  },
  {
   "address": 13251,
   "type": "line",
   "text": "The character set's page plus 6, where the edge shapes go ($F0 up), patched by $33AF."
  },
  {
   "address": 13265,
   "type": "line",
   "text": "0 or $AA for the sky and ground shapes, patched by $3383 and $342D."
  },
  {
   "address": 13268,
   "type": "line",
   "text": "The page for the sky and ground shapes ($E0 up), patched by $33B2 and $341E."
  },
  {
   "address": 13363,
   "type": "line",
   "text": "When the horizon is off the view: fill it with sky or ground (character $E0 plus the pitch direction $7C) and copy the fill shapes from $7101 into the character set; $D3 cleared."
  },
  {
   "address": 13392,
   "type": "line",
   "text": "The page for the fill shapes when the horizon is off the view, patched by $3446."
  },
  {
   "address": 13397,
   "type": "line",
   "text": "Draw a bar on plane one's instrument panel: A is the value (0-255), X the low byte of its place in page $A1. Four cells, 32 bytes apart, four rows each: full for each 64 of the value, then a partial cell from $7141, then empty; the first cell's left edge is kept."
  },
  {
   "address": 13449,
   "type": "line",
   "text": "Low byte of the bar's next cell in page $A1, from X and stepped by 32 ($348E, $3494)."
  },
  {
   "address": 13469,
   "type": "line",
   "text": "The same bar for plane two's panel in page $8A: cells 40 bytes apart, five rows each, the last cell's right edge kept."
  },
  {
   "address": 13532,
   "type": "line",
   "text": "Low byte of plane two's bar's next cell, from X and stepped by 40 ($34E1, $34E7)."
  },
  {
   "address": 13533,
   "type": "line",
   "text": "High byte of plane two's bar's next cell, from $8A and carried ($34EA, $34EF)."
  },
  {
   "address": 13560,
   "type": "line",
   "text": "Show message X (0-31, the texts listed at $7432) to the current pilot for Y ticks: the timer goes to $0350,X (plane one) or $0370,X (plane two). When the message was not already live, the pilot's panel is told to show it next ($82 or $83 = X - 1, and $80 = $FF so the change happens on the next pass). Every caller loads X with a fixed number, and none passes 12 (YOU TRAITOR) or 19 (the first TARGET LOCKED); nothing else writes those timers, so those two messages never appear."
  },
  {
   "address": 13612,
   "type": "line",
   "text": "Choose the medium-sized picture of the enemy: from its heading relative to ours, its roll ($0272) and its pitch ($0274), and our own roll and pitch, through the tables at $6607, $6637, $6667, $6677, $66A7 and $66D7 to a code from $9358; X returns the picture's pointer number (code / 8) and $A0 the code."
  },
  {
   "address": 13767,
   "type": "line",
   "text": "Print the string at A/Y centred on screen row X in the title's two-row letters: each character's top-row codes come from $66BB and its width in cells from $66E5, the bottom row's codes are one more; spaces and punctuation are blank cells ($FF). Both rows are built at $0420 and $0448, the row cleared, then drawn from column (39 - width) / 2 ($3637)."
  },
  {
   "address": 13794,
   "type": "line",
   "text": "Low byte of the big text's string, patched by $35C7."
  },
  {
   "address": 13795,
   "type": "line",
   "text": "High byte of the big text's string, patched by $35CA."
  },
  {
   "address": 13879,
   "type": "line",
   "text": "Draw the two rows of big letters built at $0420/$0448 ($A2 cells wide) at column $A0 of the row at $C9/$CA and the row below, clearing both rows first."
  },
  {
   "address": 13931,
   "type": "line",
   "text": "Read both joysticks and the keyboard. The last stick values are kept (record bytes $1D-$1F), then the eight keyboard rows are scanned (rows in the order 7, 1-6, 0, kept at $A0-$A7). Joystick port 1 shares $DC01 with the keys, so the OR of all eight scans holds only the stick: a key pulls one row low, the stick all of them. From it and from $DC00 (port 2) come vertical ($030D/$032D: -1 up, +1 down), horizontal ($030E/$032E) and fire ($030F/$032F). Outside a game, in a one-player game, or when neither pilot has planes, port 2 also drives plane one. Then the key flags at $0200-$020D: RUN/STOP, X, V, C=, S, F, H, K, F3, Q, T, E, U, F5. On frames with $59 bit 7 set any stick movement clears F3, F5, RUN/STOP and C=; U clears T and E clears Q."
  },
  {
   "address": 14305,
   "type": "line",
   "text": "The colour code security system: three tries ($098A). A square is picked at random from the 40 in the table at $FA00 (four bytes each: column, row, colour); its column and row names are written into the question ($675E and $679E into $68AB-$68AF) and its colour kept in $E0. The cursor ($0256, from $10) moves down the 14 colours with the stick ($1363) and the border shows the colour under it. Fire answers: light green counts as green (13 as 5) and cyan as blue (3 as 6). Right: the tries are cleared and this routine's own code from $37E7 to $38B8 is overwritten with random bytes. Wrong: another square; after the third wrong answer memory from $CFFF down to $0100 is filled with one random byte and the game jumps to $0A01, into the wreckage."
  },
  {
   "address": 14568,
   "type": "line",
   "text": "Draw the title logo, 13 by 5 characters from $7515, at row 2, column 13 of the screen at $8000, coloured red."
  },
  {
   "address": 14626,
   "type": "line",
   "text": "Colour column X of colour RAM with A in rows $B5 up to $B7, when X is between $A3 and $A4; used by the title wipes."
  },
  {
   "address": 14656,
   "type": "line",
   "text": "Low byte of the colour RAM row, patched by $3931 from $700D."
  },
  {
   "address": 14657,
   "type": "line",
   "text": "High byte of the colour RAM row ($D8 plus $7026), patched by $393A."
  },
  {
   "address": 14664,
   "type": "line",
   "text": "Put a point on the cockpit view: A is its bearing from the plane's nose, Y its elevation (both signed). Scaled through $9BE8 and $6F16 and turned by the plane's roll (the horizon's slopes $C1/$C2 and the roll's quarter, tables $71C4-$71CC), the point is placed relative to where the horizon crosses the view ($28, $29). Returns its cell and fine position in $07/$06 (column) and $08/$05 (row), or a place off the view when it falls outside the current half."
  },
  {
   "address": 14965,
   "type": "line",
   "text": "Bearings, elevations and ranges between the planes and the ground targets, four bytes each ($3F97: bearing, elevation, range low, high): plane one to target 4 at $0490, plane two to target 5 at $049C, plane one to target 5 at $0494, plane two to target 4 at $0498. A range below 100 is also written as digits into the RANGE messages ($6DEF, $6DFD). An air-to-ground missile in flight is aimed at its target and tested for a hit ($24DB)."
  },
  {
   "address": 15192,
   "type": "line",
   "text": "The same for the missiles: plane one to its own missile (object 2) at $0480, plane two to its own (3) at $048C, plane one to plane two's missile at $0484, plane two to plane one's at $0488; the enemy missile's range as digits into the RANGE message ($6D01, $6D0F). Each missile's course to its target ($4E/$4F: the bearing from the missile, against its heading) and the target's height ($50-$53) are kept for its guidance."
  },
  {
   "address": 15367,
   "type": "line",
   "text": "The same from plane one to plane two, kept in zero page: bearing from plane one's nose $98, elevation $9A, compass bearing $99, range $94/$95, height difference $96/$97 and its sign $D7."
  },
  {
   "address": 15405,
   "type": "line",
   "text": "Draw both missiles for the current pilot ($38 = 1, then 0; the range table entry from $0480 by $D4): a missile within range 8 and within $20 of the nose is drawn in the cockpit view (a shape from $6596 by its range, characters $DA/$DB), and every missile goes on the radar ($3CA1)."
  },
  {
   "address": 15521,
   "type": "line",
   "text": "Plot a dot on the current pilot's radar scope, on alternate blink phases ($34): X is the bearing, A/Y the range (nothing at 100 or more, ranges of 9 or more drawn at the edge). The range is scaled (\u00d78 unless the close-range template is in use, $BD) and kept at least 4, turned by the bearing through the sine and cosine tables ($92D0, $9310, $4334), offset from the scope's centre ($BB/$BC) and kept inside its limits ($B9/$BA), then set into the panel's graphics (row pointers $65FB, pixel masks $6603). The enemy plane ($0E set) is two pixels tall."
  },
  {
   "address": 15703,
   "type": "line",
   "text": "Move object X by its velocity: across by $02BA/$02C0 in the direction $02C6, down by $02CC/$02D2 in the direction $02D8, in 24-bit positions. The map runs from 4 to $EB across and from 4 to $5B down (high bytes). A missile that leaves it is removed. A plane is held at the edge and its off-map state $0262 set: reaching its own side's edge (the left for plane one, the right for plane two) gives 2, where it may land; the far edge, the top or the bottom gives 1, FLYING OFF MAP."
  },
  {
   "address": 15957,
   "type": "line",
   "text": "Set object X's velocity from its heading ($02EA: 0 up the map, $40 right, $80 down, $C0 left) and the speed in $39: the direction signs $02C6 (across) and $02D8 (down), and the speed times the heading's sine and cosine ($9BC8, $9BD8, by heading / 8), over 16, into $02BA/$02C0 and $02CC/$02D2."
  },
  {
   "address": 16084,
   "type": "line",
   "text": "Turn A/Y (0-65535) into five decimal digits, 0-9 each, at $A9-$AD, by subtracting the powers of ten at $7428/$742D."
  },
  {
   "address": 16174,
   "type": "line",
   "text": "Turn a range A/Y into text at $A9: the high byte as digits, a point, and the low byte / 26 as tenths; nothing when the high byte is 100 or more."
  },
  {
   "address": 16226,
   "type": "line",
   "text": "Remove the leading zeros (up to four) from the five digits at $A9-$AD and pad the end with spaces."
  },
  {
   "address": 16263,
   "type": "line",
   "text": "Never called: blanks the leading zeros of the digits at $A9 in place."
  },
  {
   "address": 16279,
   "type": "line",
   "text": "From object X to object Y (planes, missiles, targets): when either is inactive the range is $FF. Otherwise the height difference ($DD/$DF, sign $E0), the difference across and down (24-bit, with signs), the compass bearing $EE (0-255) from the arctangent table at $F800 of the smaller difference over the larger ($57CB divides), the bearing from X's nose $DC (bearing less X's heading), the range $EA/$EB (the larger difference over the cosine or sine from $9310 or $92D0, then / 4), and in A the elevation, the arctangent of the height (/ 16) over the range, negative when Y is below."
  },
  {
   "address": 16891,
   "type": "line",
   "text": "Add Y to the current plane's speed ($42/$44 by $D1), holding it at 2300 at most."
  },
  {
   "address": 16946,
   "type": "line",
   "text": "Subtract Y from the current plane's speed, stopping at 0."
  },
  {
   "address": 16978,
   "type": "line",
   "text": "The power keys and the plane's motion for a pass. X and Y are this pilot's more and less keys (F and S, or K and H): holding one moves the throttle $68 (0-255) by a step that grows from 4 to 16 while it is held ($61). Then: the speed over 8 ($1A; for plane two the low byte is read from plane one's $42, $42A4) times the pitch's cosine ($6EFE) gives the ground speed $39, which sets the velocity ($3E55). Thrust is the throttle less the bank, halved below the afterburner ($C0) and halved again, times 126 plus the altitude / 512, over 256; drag is the weight $69 times the speed over 8, over 256; half the difference is added to or taken from the speed ($41FB, $4232). The climb rate $4A (at least 1 with the nose off level) is the speed times $740C by the pitch, with its direction in $48. With the nose up the plane loses speed and with it down gains it, a step of the pitch about every third pass ($62 adds $60)."
  },
  {
   "address": 17204,
   "type": "line",
   "text": "X \u00d7 Y / 256 in A (the product's high byte; the low byte is lost)."
  },
  {
   "address": 17219,
   "type": "line",
   "text": "The multiplicand X of the 8-bit multiply, patched by $4334."
  },
  {
   "address": 17225,
   "type": "line",
   "text": "X \u00d7 Y: the high byte in A, the low byte in $11."
  },
  {
   "address": 17242,
   "type": "line",
   "text": "The multiplicand X of the 16-bit-result multiply, patched by $4349."
  },
  {
   "address": 17250,
   "type": "line",
   "text": "The computer pilot chasing: turn towards the enemy's bearing ($98, $2B96), full throttle ($21B6), and its height: plane one's height when the range ($95) is below 10, its own height between 10 and 26, and 50,000 feet ($C350) further off."
  },
  {
   "address": 17289,
   "type": "line",
   "text": "Wait a frame and blank nine cells of row 12, column 0 on both screens (character 10)."
  },
  {
   "address": 17306,
   "type": "line",
   "text": "$FF, read by $30D9 into $3E: the high byte of the pointer whose low byte is $0988."
  },
  {
   "address": 17307,
   "type": "line",
   "text": "The title's raster interrupt (line 252): screens flipped when the main loop asks ($5D), the character set chosen ($D018 = $02, or $0E/$1E when $27 is set), the music on its ticks ($BF, $E03F), the frame countdown $93, the clocks ($5179), and the two bytes the NMI repairs broken again ($6066)."
  },
  {
   "address": 17366,
   "type": "line",
   "text": "The title interrupt's music-clock step: $FF for PAL, $D4 for NTSC, patched at start-up ($09A3)."
  },
  {
   "address": 17404,
   "type": "line",
   "text": "The play interrupt's first part. Below line $F0 it passes to the raster chain through the vector at $4676; at the bottom of the frame it does the frame's work: the frame counters $93 and $24, the screen flip when asked ($4C5C), the sound effects ($4EAE). Then, on each tick of the music clock ($BF; 50 a second): the music when it is on ($4EAD = $40); the blink phase $34 (on for 10 ticks of 20) and the map's drawing order; the hit shake ($0254 counts down and $9C/$9D toggle every fourth tick, moving the cockpit sprites a pixel); unless paused ($0215): fuel burnt by each throttle (halved below $C0; 3 units each time $0240 overflows; none for an immortal plane one), the clocks ($5179), the missile clocks (a second each 50 ticks into $026C/$026D), the turn: each plane's heading changed by $5143 from its bank, roll quarter and stick; the cannon's rounds (2 a tick while $0264 is 2 or more); the heights (every third tick, the climb rate $4A up or down, held to 0-65535); and every active object moved ($3D57), radar missiles twice. Last, plane two's weapon selector ($4C1A), plane one's cockpit sprites, the sprites on for each view, and the repair bytes broken again ($6066)."
  },
  {
   "address": 17461,
   "type": "line",
   "text": "The play interrupt's music-clock step, $FF or $D4, patched at start-up ($09A0)."
  },
  {
   "address": 18037,
   "type": "line",
   "text": "JMP through $4676, set by $4BE0 to the raster handler for plane one's view."
  },
  {
   "address": 18038,
   "type": "line",
   "text": "Low byte of plane one's raster handler, set at $0C3D and by $4BE9."
  },
  {
   "address": 18039,
   "type": "line",
   "text": "High byte of plane one's raster handler, set at $0C42 and by $4BEF."
  },
  {
   "address": 18040,
   "type": "line",
   "text": "The second raster interrupt (line $95): JMP through $4689, set by $4BFD for plane two's view."
  },
  {
   "address": 18057,
   "type": "line",
   "text": "Low byte of plane two's raster handler, set at $0C47 and by $4C06."
  },
  {
   "address": 18058,
   "type": "line",
   "text": "High byte of plane two's raster handler, set at $0C4C and by $4C0C."
  },
  {
   "address": 18059,
   "type": "line",
   "text": "Restore A, X and Y from $02-$04 and return from the interrupt."
  },
  {
   "address": 18066,
   "type": "line",
   "text": "Point the next interrupt at $4678 on line $95 and return."
  },
  {
   "address": 18084,
   "type": "line",
   "text": "Point the next interrupt at $43FC on line 252 and return."
  },
  {
   "address": 18102,
   "type": "line",
   "text": "Ask for the current pilot's view state A (0 cockpit, 1 map, 2 shot down, 3 hangar, 4 arming): $2A or $2B, and $5B or $5C to redraw that half."
  },
  {
   "address": 18120,
   "type": "line",
   "text": "Colour plane one's half for its new view state. Cockpit: the view's colour RAM $0E or $0F by the ground under the plane ($0307); in multicolour the %11 pixels take its low three bits, so the ground shows blue over the sea and yellow over land; the instrument rows green (13), the instrument faces brown ($7149) and two cells light red. Map: all $0F, so the map's land shows yellow. Shot down: unchanged. Hangar: brown, the hangar picture's last 32 characters ($CD-$EC, which the view draws over in flight) copied back to $A668 from $F637, two rows white. Arming: white with brown cells."
  },
  {
   "address": 18145,
   "type": "line",
   "text": "Plane one's second multicolour ($4854), chosen by plane two's ground ($0327) between 1 and 1: white either way."
  },
  {
   "address": 18158,
   "type": "line",
   "text": "Plane one's view colour RAM value, $0E over the sea or $0F over land ($0307), patched by $46DE: the ground shows blue or yellow."
  },
  {
   "address": 18297,
   "type": "line",
   "text": "The same for plane two's half (rows 13-24); its hangar picture's characters $CD-$D9 come back from $F737 to $BE68."
  },
  {
   "address": 18338,
   "type": "line",
   "text": "Plane two's view colour, patched by $4792."
  },
  {
   "address": 18499,
   "type": "line",
   "text": "Raster splits for plane one's cockpit: at the bottom of the frame the character set and multicolours for its top rows, the sprite pointer $EE and the shake; on line $5C-ish the four cockpit frame sprites (expanded, pointers $6ED2); on line $72 the instrument multicolours; then on to $4692."
  },
  {
   "address": 18506,
   "type": "line",
   "text": "$D018 for plane one's cockpit at the top of the frame, set for the screen being shown by $4C5C."
  },
  {
   "address": 18511,
   "type": "line",
   "text": "Plane one's cockpit multicolour 1, patched by $46DB."
  },
  {
   "address": 18516,
   "type": "line",
   "text": "Plane one's cockpit multicolour 2, patched by $46EA."
  },
  {
   "address": 18636,
   "type": "line",
   "text": "$D018 for plane one's instrument rows, set by $4C5C."
  },
  {
   "address": 18669,
   "type": "line",
   "text": "Raster split for plane one's map: multicolours light blue and white, the panel sprites ($4E42)."
  },
  {
   "address": 18670,
   "type": "line",
   "text": "$D018 for plane one's map, set by $4C5C."
  },
  {
   "address": 18690,
   "type": "line",
   "text": "Raster splits for plane one's hangar: multicolours, and in the hangar (state 3) the two sprites showing its plane (pointers $9F/$BF, orange)."
  },
  {
   "address": 18707,
   "type": "line",
   "text": "$D018 in plane one's hangar handler for the split before line $66, set by $4C5C."
  },
  {
   "address": 18720,
   "type": "line",
   "text": "$D018 in plane one's hangar handler for the split at line $7A or later, set by $4C5C."
  },
  {
   "address": 18731,
   "type": "line",
   "text": "$D018 in plane one's hangar handler at the bottom of the frame (the top of its rows), set by $4C5C."
  },
  {
   "address": 18845,
   "type": "line",
   "text": "Raster splits for plane two's hangar and arming screens."
  },
  {
   "address": 18869,
   "type": "line",
   "text": "$D018 in plane two's hangar handler for its middle split (before line $CC), set by $4C5C."
  },
  {
   "address": 18882,
   "type": "line",
   "text": "$D018 in plane two's hangar handler for the split at line $E0 or later, set by $4C5C."
  },
  {
   "address": 18890,
   "type": "line",
   "text": "$D018 in plane two's hangar handler for the split before line $A0, set by $4C5C."
  },
  {
   "address": 19021,
   "type": "line",
   "text": "Raster split for plane two's map."
  },
  {
   "address": 19022,
   "type": "line",
   "text": "$D018 for plane two's map, set by $4C5C."
  },
  {
   "address": 19049,
   "type": "line",
   "text": "Plane one shot down: the view's first multicolour flickers through the fire colours at $94F0 at random, and the death timer $02F2 counts up (to $82 before the next plane)."
  },
  {
   "address": 19050,
   "type": "line",
   "text": "$D018 for plane one shot down, set by $4C5C."
  },
  {
   "address": 19086,
   "type": "line",
   "text": "Raster split for plane one's arming screen."
  },
  {
   "address": 19087,
   "type": "line",
   "text": "$D018 for plane one's arming screen, set by $4C5C."
  },
  {
   "address": 19107,
   "type": "line",
   "text": "Plane two shot down: the fire flicker and its death timer $02F3."
  },
  {
   "address": 19108,
   "type": "line",
   "text": "$D018 for plane two shot down, set by $4C5C."
  },
  {
   "address": 19151,
   "type": "line",
   "text": "Raster split for plane two's arming screen."
  },
  {
   "address": 19152,
   "type": "line",
   "text": "$D018 for plane two's arming screen, set by $4C5C."
  },
  {
   "address": 19174,
   "type": "line",
   "text": "Raster splits for plane two's cockpit: its character set and multicolours, the explosion sprite's pointer $EF, the two canopy posts (sprites 4 and 5, pointers $A8 and $A9, black, at line $AF; $4B73), the four lower cockpit frame sprites (pointers $6EC8) and the shake $9D."
  },
  {
   "address": 19193,
   "type": "line",
   "text": "$D018 for plane two's cockpit, set by $4C5C."
  },
  {
   "address": 19198,
   "type": "line",
   "text": "Plane two's cockpit multicolour 1, patched by $478F."
  },
  {
   "address": 19203,
   "type": "line",
   "text": "Plane two's cockpit multicolour 2, patched by $479E."
  },
  {
   "address": 19237,
   "type": "line",
   "text": "$D018 for plane two's instrument rows, set by $4C5C."
  },
  {
   "address": 19424,
   "type": "line",
   "text": "Make plane one's requested view ($2A) the shown one ($46) and point the raster chain at its handler (table $4BF3)."
  },
  {
   "address": 19443,
   "type": "line",
   "text": "Raster handlers for plane one's views 0-4."
  },
  {
   "address": 19444,
   "type": "line",
   "text": "The high bytes of plane one's view handlers, read with $4BF3: $4843 (cockpit), $48ED (map), $4A69 (shot down), $4902 (hangar), $4A8E (arming)."
  },
  {
   "address": 19453,
   "type": "line",
   "text": "The same for plane two ($2B into $47, table $4C10)."
  },
  {
   "address": 19472,
   "type": "line",
   "text": "Raster handlers for plane two's views 0-4."
  },
  {
   "address": 19473,
   "type": "line",
   "text": "The high bytes of plane two's view handlers, read with $4C10: $4AE6, $4A4D, $4AA3, $499D and $4ACF for views 0-4."
  },
  {
   "address": 19482,
   "type": "line",
   "text": "Slide plane two's weapon selector two pixels a frame towards its weapon ($0F towards the weapon \u00d7 8), drawing the marker ($9EC8) into a strip built at $0400 from $9ED0 and copied to the panel graphics at $8900. Plane two cannot fire until it arrives."
  },
  {
   "address": 19548,
   "type": "line",
   "text": "Show the other screen ($59 EOR $81) and rewrite the $D018 values throughout the raster chain for it ($0x for $8000, $1x for $8400), latch the requested views ($4BE0, $4BFD), and place the explosion sprites (6 and 7) at the planes' explosions ($027C-$0282, as pixels), with their pictures chosen by the explosion counters through $4DD1 and $4DB9."
  },
  {
   "address": 19882,
   "type": "line",
   "text": "Low byte of plane one's explosion picture, patched by $4D8A."
  },
  {
   "address": 19883,
   "type": "line",
   "text": "High byte of plane one's explosion picture, patched by $4D90."
  },
  {
   "address": 19888,
   "type": "line",
   "text": "Low byte of plane two's explosion picture, patched by $4D9E."
  },
  {
   "address": 19889,
   "type": "line",
   "text": "High byte of plane two's explosion picture, patched by $4DA4."
  },
  {
   "address": 19897,
   "type": "line",
   "text": "Pointers to the explosion's twelve sprite pictures, low byte then high byte, $F026 to $F274."
  },
  {
   "address": 19898,
   "type": "line",
   "text": "The high bytes of the explosion picture pointers, read with $4DB9: twelve pictures from $F026 to $F274."
  },
  {
   "address": 19921,
   "type": "line",
   "text": "The picture for each step of an explosion counter."
  },
  {
   "address": 19963,
   "type": "line",
   "text": "Start the noise that the engine and explosion sounds are made from, when the sound effects are on ($4EAD bit 7): the chip cleared ($4E2C), attack and decay 0 on all three voices, sustain and release $20, $20 and $F0, voice 3 routed through the filter ($D417 = $C4), and all three gated with noise ($81). The frequencies and the volume stay 0 until the frame's effects ($4EAE) set them. Called when the effects start ($1FA9), when plane one is lost ($0DA9), when a plane is killed ($2822) and from $1348."
  },
  {
   "address": 20012,
   "type": "line",
   "text": "Clear the sound chip's 29 registers and set the test bit on the three voices."
  },
  {
   "address": 20034,
   "type": "line",
   "text": "Place the sprites in the middle of the screen: the top of plane two's cockpit frame (four sprites at line $9A, moved across by the shake $9D) and the ACE 2 logo on the side panel (sprites 4 and 5, red, expanded across, at line $8C), pointers from $6EC2."
  },
  {
   "address": 20141,
   "type": "line",
   "text": "$40 while the music plays, $C0 while the sound effects do."
  },
  {
   "address": 20142,
   "type": "line",
   "text": "The sound effects, each frame while they are on ($4EAD bit 7) and the game is not paused. With neither plane flying, the engine winds up on voice 1 ($021B/$021C rising by 20 a frame to $6D60) over noise. While a plane is shot down, noise fades with its death timer. Otherwise voices 1 and 2 hum at $84-$87 and voice 3 takes turns in a cycle of five frames ($3C): plane one's cannon (frames 0-1) and plane two's (3-4) when firing; otherwise, by the step of $8A (0-26), a rising beep for plane one's messages (0-9) or plane two's (13-21), the hit noise while a plane is being hit ($0254), the whoosh of a missile in its first second ($026A), or the engines through the filter (cutoff $88/$89) while either throttle is open."
  },
  {
   "address": 20803,
   "type": "line",
   "text": "The turn for a plane: X is its bank, A its roll quarter, Y its stick's vertical. The rate is $6ED6 by the bank, plus $6EE6 when the stick is pulled back, minus it when pushed, and negative in quarters 2 and 3; returned as a signed 16-bit A/Y (A low) to add to the heading."
  },
  {
   "address": 20857,
   "type": "line",
   "text": "Each 50th call: the chaff and flare timers ($028C, $028E) count down, the seconds counter $0218 counts up to 255, and $91 counts to 60 for the minutes at $0210. In play it is called on each tick of the music clock ($44E9, 50 ticks a second), so the work comes once a second; on the title it is called at every interrupt ($43E7), so the work comes every 50 frames, a second on a PAL machine and about 0.83 of one on NTSC."
  },
  {
   "address": 20916,
   "type": "line",
   "text": "Text no code reads, plain ASCII: \"WELCOME TO MY CODE. WHAT ARE YOU DOING IN IT? ANYWAY, SINCE YOU ARE HERE, I'LL JUST TELL YOU THAT THIS GAME IS DEDICATED TO THE VERY WONDERFUL TERESA. I SHOULD ALSO LIKE TO THANK EVERYBODY HERE FOR THEIR HELP, AND I'LL SAY THANKS TO OCEAN FOR NOT RELEASING TOPGUN FOR THE C64, AND THANKS TO THE PROGRAMMERS FOR DOING SUCH A BAD JOB. IF YOU'RE READING THIS GUYS, PLAY ACE2, AND SEE HOW THESE SORT OF GAMES SHOULD BE DONE! IF YOU ENTER THE NAME OF MY HAMSTER ON THE HIGH SCORE TABLE, PLAYER ONE WILL BE IMMORTAL. A REAL HACKER WILL FIND HER NAME FROM THE CODE\" (the spaces between lines are missing in the bytes)."
  },
  {
   "address": 21460,
   "type": "line",
   "text": "Swap the 2 KB at $D800-$DFFF, the RAM under the I/O chips (all of it banked in for the swap, $01 AND $FC), with $8800-$8FFF. The game's panel character set lives under the I/O while the title runs, and the title's while the game runs."
  },
  {
   "address": 21491,
   "type": "line",
   "text": "The page under the I/O being swapped, $D8 to $DF ($53E1, stepped by $5401; the loop ends at $E0)."
  },
  {
   "address": 21494,
   "type": "line",
   "text": "The page of $8800-$8FFF being read, stepped with it ($53EC, $5404)."
  },
  {
   "address": 21497,
   "type": "line",
   "text": "The page of $8800-$8FFF being written ($53E9, $540A)."
  },
  {
   "address": 21501,
   "type": "line",
   "text": "The page under the I/O being written ($53E4, $5407)."
  },
  {
   "address": 21529,
   "type": "line",
   "text": "Draw the colour-code question: COLOUR CODE SECURITY SYSTEM, the three lines about the grid on the inlay card with the square's name, the fourteen colour names (from the list at $54A4) down column 10, the cursor beside the chosen one ($2A8D), and WARNING! THREE WRONG ANSWERS WILL WIPE the program."
  },
  {
   "address": 21668,
   "type": "line",
   "text": "Pointers to the fourteen colour names of the security question, BLACK to LIGHT GREEN."
  },
  {
   "address": 21669,
   "type": "line",
   "text": "The high bytes of the colour name pointers, read with $54A4 ($67C6 BLACK to $6821 LIGHT GREEN)."
  },
  {
   "address": 21696,
   "type": "line",
   "text": "The game is over: the music asked for again ($1F8E), then for each pilot (only pilot one in a one-player game) whose score beats one of the five in the table, the lower entries move down ($755E points at each name), the score goes in, and the name entry runs: the screen cleared, PILOT ONE or PILOT TWO, YOUR SCORE IS ONE OF THE TOP FIVE and ENTER YOUR NAME, keys read with $1D3C and turned into letters through the table at $5663; DEL rubs out, RETURN ends, ten letters at most, stored enciphered (through $65A1) in the buffer at $6933 and then in the table."
  },
  {
   "address": 22068,
   "type": "line",
   "text": "Whether or not a name was entered, the first eight letters of the name buffer ($6933) are compared with the hamster's name at $6A30 (enciphered \"DUSTY BUG\"): a match, so any name beginning DUSTY BU, sets the immortal flag ($0975). After both pilots, a new entry saves the table to the disk ($1F30) and shows it; otherwise back to the title."
  },
  {
   "address": 22115,
   "type": "line",
   "text": "The letter for each key number of the KERNAL's numbering (8 \u00d7 row + column), used by the name entry: the letters, the digits and spaces for the rest."
  },
  {
   "address": 22179,
   "type": "line",
   "text": "Print the string at A/Y at the cursor ($F0 column, $F1 row) of the screen being drawn, until a byte outside $20-$60: values 0-9 as digits, letters deciphered through $6F7F, each less 6 as a screen code; colour $F2 into colour RAM outside a game ($81 = 0), except for character $1A. Wraps at the end of a row."
  },
  {
   "address": 22289,
   "type": "line",
   "text": "Fill the screen being drawn ($C3) with A: 1000 bytes."
  },
  {
   "address": 22309,
   "type": "line",
   "text": "The first page of the screen to fill ($C3), patched by $5713."
  },
  {
   "address": 22312,
   "type": "line",
   "text": "The second page ($C3 + 1), patched by $5717."
  },
  {
   "address": 22315,
   "type": "line",
   "text": "The third page ($C3 + 2), patched by $571B."
  },
  {
   "address": 22323,
   "type": "line",
   "text": "The last page, whose first 232 bytes are filled, patched by $571E."
  },
  {
   "address": 22328,
   "type": "line",
   "text": "The GREATEST ACES page of the title: the screen cleared to character $FF, GREATEST ACES in big letters ($35C7), then for each of the five entries the name in big letters and the score (five digits and a 0) beside it."
  },
  {
   "address": 22475,
   "type": "line",
   "text": "Divide A/Y (A low) by X: the quotient's low eight bits in A, $FF when the division overflows. When X is $80 or more both are halved first. Used for the arctangent's ratio."
  },
  {
   "address": 22554,
   "type": "line",
   "text": "$B2-$B4 less $B5-$B7, 24-bit, as a size: $14 = $FF and the result negated when it was negative, $14 = 0 otherwise."
  },
  {
   "address": 22610,
   "type": "line",
   "text": "The full-scale game's AIRCRAFT WEAPONS SELECTION screen (the picture at $F4CF): heat-seeking air-to-air, radar air-to-air, and AIR-GROUND for plane one or AIR-SHIP for plane two, then PREPARE FOR TAKE OFF. Fire on a line adds one of that missile, wrapping at 9, 7 and 3; the load must stay within 16 (one per heat seeker, two per radar missile, 0, 6 or 12 for none, one or two of the third kind, $5949), and carrying the third kind leaves no room for radar missiles. The counts are kept in the loadout ($74F3/$74F5/$74F7, or $7503-$7507) that take-off loads. PREPARE FOR TAKE OFF returns to the hangar."
  },
  {
   "address": 22841,
   "type": "line",
   "text": "GROUND in the arming screen's screen codes (the font in the character set at $B800), copied over the picture at $F5C9 for plane one, so its third line reads AIR-GROUND ($5858)."
  },
  {
   "address": 22847,
   "type": "line",
   "text": "\"SHIP\" and two blanks in the same codes, copied there for plane two: AIR-SHIP ($586F)."
  },
  {
   "address": 22853,
   "type": "line",
   "text": "The screen row of each of the arming screen's four lines, for the cursor ($58B4): 4, 6, 8 and 10."
  },
  {
   "address": 22857,
   "type": "line",
   "text": "The weight of the third kind of missile by how many are carried (0, 1 or 2): 0, 6 or 12, for the load limit ($58EA) and the plane's weight ($283E)."
  },
  {
   "address": 22860,
   "type": "line",
   "text": "The most of each kind the arming screen allows before it wraps to 0: 9 heat seekers, 7 radar missiles, 3 of the third kind (the fourth byte is the next instruction's)."
  },
  {
   "address": 22863,
   "type": "line",
   "text": "With no fuel left ($0284,X = 0), hold the less-power key and release the more-power key: the throttle runs down."
  },
  {
   "address": 22892,
   "type": "line",
   "text": "Run every pass for each plane. In the demo, fire on either stick ends the demo (the loadout and options put back, $5988); plane one is flown by script from the clock $0218: in the hangar it goes to the arming screen at 5 seconds and takes off after 15, on the arming screen it chooses after 9, and in the air it shows the map at 18 seconds and goes back at 25. Then $5A1C for both planes."
  },
  {
   "address": 23068,
   "type": "line",
   "text": "For every plane: in a one-player game plane two's stick and keys are cleared, the computer flies it. On the ground (height 0) with the nose off level it crashes ($3A) when spinning or with crash detection on; with crash detection off it shows PLANE CRASHED and recovers ($6B = 1). While being hit the stick shakes left and right. Below a speed of 140 STALL WARNING and the nose is pushed down. Above 58,880 feet CEILING 60000 and the nose is pushed down now and then. $6B = 1 levels the wings and the nose by itself (after a crash with detection off, or on a landing approach) until level; $6B = 2 is a spin after a kill: CONTROL LOST, nose down, rolling, no firing. Then the computer pilot ($5B47)."
  },
  {
   "address": 23367,
   "type": "line",
   "text": "The computer's decisions, every other pass ($19), for plane two in a one-player game or both planes in the demo. Low and diving: level the wings and climb to 3000 feet. Off the map: turn round. Otherwise, three times in four, it draws a number from 0 to 21 and acts only when it is below the skill level; when it does not act the stick is centred. Acting, it first meets an enemy missile in flight: against a radar missile always, a heat seeker within range 8, it drops decoys (T, $020A) when the missile is close, or turns its wings level and dives or climbs 78 \u00d7 256 feet away from the missile's height with the throttle set from the skill."
  },
  {
   "address": 23593,
   "type": "line",
   "text": "In the demo, plane one flies east (heading $40) at 5000 feet with throttle $C0."
  },
  {
   "address": 23619,
   "type": "line",
   "text": "Plane two's plan: with fuel below $2E, home at 800 feet ($5E3F). With air-to-ship missiles and the enemy 10 or more away: down to 800 feet, then at the target (bearing $0498), the air-to-ship missile selected and fired. With plane one not flying: towards plane one's side at 30,000 feet, or circling. Plane one 10 or more away: chase with the radar missile and fire when locked ($9E), or chase for the heat seeker, or go home with nothing left; with its own missile in flight it follows, matching height within 200 feet. Closer than 10: the dogfight moves at $5D30."
  },
  {
   "address": 23856,
   "type": "line",
   "text": "Close combat. A move is drawn at random ($0227 = 1-4, $0260 a random side): 1 turn hard away; 2 throttle back so the enemy overshoots, climbing when it is close; 3 full throttle and a roll and pull through a loop; 4 a hard turn at 3000 feet. The move is kept while the enemy sits behind it, within 6 \u00d7 256 feet in height, range 2 and $30 in heading; otherwise it attacks ($5E2D)."
  },
  {
   "address": 24109,
   "type": "line",
   "text": "Attack: with no weapons left, home ($5E3F). The escape manoeuvre when $B8 is set ($5EED). With heat seekers and no missile in flight: selected and fired when locked ($9E). Otherwise the cannon: far apart in height, climb or dive to the enemy's height; enemy ahead and heading towards it, turn just past its bearing with the throttle by the range; roughly the same heading, follow it ($2C23) and fire when lined up ($DA); otherwise chase ($2BE1)."
  },
  {
   "address": 24127,
   "type": "line",
   "text": "Go home: 800 feet, the heading $40 (towards plane two's side), full throttle."
  },
  {
   "address": 24301,
   "type": "line",
   "text": "The escape manoeuvre ($B8, chosen at $2BE1 when the enemy is behind): roll past bank 4 until inverted, pull through at full throttle until upright and level, then roll level; then $B8 is cleared."
  },
  {
   "address": 24378,
   "type": "line",
   "text": "A second RTS, after the one at $5F39, that no path reaches."
  },
  {
   "address": 24379,
   "type": "line",
   "text": "A random byte: CIA 1's timer A (free-running) chooses how far (one to eight places) the raster line plus the last result is rotated, by patching the branch at $5F4A into the run of ROLs; the result is kept at $5F44 for the next call."
  },
  {
   "address": 24388,
   "type": "line",
   "text": "The last random number, kept here by $5F54 and added to the raster line on the next call."
  },
  {
   "address": 24395,
   "type": "line",
   "text": "The branch's offset, 0-7 from CIA 1's timer A, patched by $5F40: how many of the ROLs are skipped."
  },
  {
   "address": 24408,
   "type": "line",
   "text": "The weapon key (E or U), on the press only: step the weapon $65 to the next one, 0 to 3 round, with a stock left, and redraw plane one's weapon panel."
  },
  {
   "address": 24457,
   "type": "line",
   "text": "Redraw the current pilot's weapon panel: the weapon's name (eight letters, pointers at $71F8) at $A312 for plane one, and its stock as digits ($3ED4, $3F62) beside it ($A358, or $89B5 for plane two)."
  },
  {
   "address": 24532,
   "type": "line",
   "text": "Build a distant object's picture in zero page $EC-$F3 (8 bytes): A is its size (0 or 1 a single dot, 2 or more a block of three or four rows), X picks the colour ($55 for one, $FF for the other), placed by the fine position ($05, $06) through the pixel masks at $659E or $65A2."
  },
  {
   "address": 24639,
   "type": "line",
   "text": "JMP $0A01: where the reset vector points ($0A07 sets it), so a reset button restarts the title."
  },
  {
   "address": 24642,
   "type": "line",
   "text": "Overwrite $09A8-$0A00, the start-up code that has just run, with random bytes, then start the title ($0A01)."
  },
  {
   "address": 24678,
   "type": "line",
   "text": "Called from both interrupts every frame: breaks two bytes of the game ($86, STX, into $43FC and $60, RTS, into $16E9), then starts CIA 2's timer A with a count of 5 and its interrupt on (through $DCF0 + X, so the CIA 2 addresses never appear in the code), and waits in a short loop while the NMI fires and repairs them ($2AA6)."
  },
  {
   "address": 24734,
   "type": "line",
   "text": "The two ground targets in the cockpit view, for the current pilot: from its entries in the table at $0490 ($D4), a target within $20 of the nose is placed on the view ($3948), with an explosion while it burns ($0242). With the air-to-ground or air-to-ship missile selected and the target within range 4 its place goes to the missile sight ($18, $DB, $BE). Below 19,968 feet and within range 10: close to it (range 0-3, the plane below 1792 feet) a picture from $7820-$7850 by our roll ($0272 through $7570), size 1 or 2; otherwise a dot, drawn only while the horizon is in view and over the target's own kind of ground ($67). With the air-to-ground missile selected the enemy's target also goes on the radar."
  },
  {
   "address": 25125,
   "type": "line",
   "text": "Draw the current pilot's cockpit view: the horizon ($315B, $13CC), the enemy plane ($2C86), the ground targets ($609E), the missiles ($3C2D), the sights ($23E0), the trigger ($2243), the cannon ($181B) and the explosion's step ($214A)."
  },
  {
   "address": 25152,
   "type": "line",
   "text": "Draw a frame of characters in the current half from column A of row $C4, X wide and Y tall: corners $55, $57, $59 and $5B, top $56, bottom $5A, sides $5C and $58."
  },
  {
   "address": 25253,
   "type": "line",
   "text": "The engines' pitches for the sound effects: plane one's voice ($84/$85) $0578 plus 22 \u00d7 the speed's high byte plus 30 \u00d7 the bank, plane two's ($86/$87) $05C8 plus 22 \u00d7 its speed's high byte plus 20 \u00d7 its bank. The filter cutoff ($88/$89) is meant to follow the higher throttle, but both of its branches load 0, so it is always 0."
  },
  {
   "address": 25401,
   "type": "line",
   "text": "ALL AIRCRAFT DESTROYED in yellow at row 5, column 14 of the current half, inside a frame ($6240)."
  },
  {
   "address": 25437,
   "type": "line",
   "text": "Draw the options screen: COMMENCE CONFLICT, COMBATANTS (ONE PLAYER, or TWO PLAYERS), COMPUTER OPPONENT SKILL LEVEL with the level for one player, COMBAT SCENARIO with its description ($6EBE: CLOSE RANGE DOGFIGHT or FULL SCALE AERIAL AND AIR-GROUND), NUMBER OF PLANES EACH, CRASH DETECTION ON or OFF, MISSILE HITS TO KILL AIRCRAFT and SAVE THESE OPTIONS TO DISK; labels in colour $2A, values in $2B; a frame round the screen."
  },
  {
   "address": 25780,
   "type": "line",
   "text": "A = 0 when this pilot has won: the other pilot has no planes left and its ground target is destroyed, while this one still has planes; 1 otherwise."
  },
  {
   "address": 25805,
   "type": "line",
   "text": "The ground targets' surface-to-air missiles, in the full-scale game: when the enemy plane is within range 6 of this pilot's target (spy ship or radar station, from the table at $0490), more than 3 from this plane and below 13,824 feet, and this pilot's missile is not in flight, a chance of 10 in 256 a pass launches a heat seeker from the target (in this pilot's missile slot, at height 0, speed $40) with its lock set. If this pilot's heat seeker is already flying, it stays locked ($17)."
  },
  {
   "address": 25934,
   "type": "line",
   "text": "Plane one's bank indicator pictures: four pointers, low byte then high byte ($9600, $9640, $9680 and $96C0), picked by $19A1 through $655E for the bank angle. The low bytes are at even addresses here; $654F is read for the high bytes."
  },
  {
   "address": 25935,
   "type": "line",
   "text": "The high bytes of plane one's bank picture pointers, read with the low bytes at $654E."
  },
  {
   "address": 25942,
   "type": "line",
   "text": "Plane two's bank indicator pictures, four pointers low byte then high byte ($EDC0, $EDFC, $EE38 and $EE75), picked the same way by $19DB."
  },
  {
   "address": 25943,
   "type": "line",
   "text": "The high bytes of plane two's bank picture pointers, read with the low bytes at $6556."
  },
  {
   "address": 25950,
   "type": "line",
   "text": "The bank angle (0-15, record byte $15) to the bank indicator picture (0-3): 0 for level, 1 for banks 1-6, 2 for 7-11, 3 for 12-15."
  },
  {
   "address": 25966,
   "type": "line",
   "text": "Plane two's bank indicator: the low bytes of four index tables ($7389, $7301, $72A1 and $7259, one for each quarter of the roll), which say where in the panel graphics at $8C48 each of the picture's 69 bytes goes."
  },
  {
   "address": 25970,
   "type": "line",
   "text": "The high bytes of plane two's four bank indicator index tables, read with $656E."
  },
  {
   "address": 25974,
   "type": "line",
   "text": "The enemy plane's medium-range pictures: six pointers, low byte then high byte ($9388 to $93B0, eight bytes apart), picked by the picture number $352C returns ($2E12); each is the table that $1581 looks every byte of the picture up in."
  },
  {
   "address": 25975,
   "type": "line",
   "text": "The high bytes of the enemy plane's close-range picture pointers, read with $6576."
  },
  {
   "address": 25986,
   "type": "line",
   "text": "The pitch (0-19) to the height change kept at $0274 for both cockpit views ($30C9): 0, 4, 8 and so on up to 60, then 63 from pitch 16."
  },
  {
   "address": 26006,
   "type": "line",
   "text": "A missile's dot in the cockpit view, by its distance / 32 ($3C71): the size handed to $5FD4, 3 when nearest, then 2, then 1 (a single dot)."
  },
  {
   "address": 26014,
   "type": "line",
   "text": "Pixel masks for a dot at each of the four double-pixel places in a byte: $C0, $30, $0C (the fourth, $03, is the first byte of the cipher's neighbour at $65A1), for $5FD4."
  },
  {
   "address": 26017,
   "type": "line",
   "text": "The name cipher, read as $65A1 + the letter: entry $65E2 onwards (see $65AE) turns each letter of a high-score name into the letter stored ($55F0); this first byte is only the fourth pixel mask of $659E."
  },
  {
   "address": 26018,
   "type": "line",
   "text": "Masks for a two-pixel-wide dot: $F0 for the left half of a byte, $0F for the right, two of each, for $5FD4."
  },
  {
   "address": 26022,
   "type": "line",
   "text": "The screen row of each of the eight lines of the options screen, for the cursor ($2A50): 2, 5, 7, 9, 15, 17, 19 and 22."
  },
  {
   "address": 26030,
   "type": "line",
   "text": "A copy of the KERNAL's vectors and work bytes at $0300-$033F as they are after a reset, 64 bytes, put back by $1E62 before the game hands the machine to the KERNAL to write to the disk ($0300 IERROR $E38B, $0314 IRQ $EA31, $0318 NMI $FE47, $031A OPEN $F34A and the rest of the I/O vectors to $0332 SAVE $F5ED). Its last 25 bytes, from $65E2, are also the name cipher, read through $65A1 + the letter: A to Y become S R P Q K C O A W G E D U H M V Y B T F I X N L J."
  },
  {
   "address": 26107,
   "type": "line",
   "text": "The radar picture's rows: four pointers, low byte then high byte, into the instrument template copied to $03A0 ($03A0, $03B8, $03D0 and $03E8, 24 bytes apart), picked by $3D2D by the dot's place across."
  },
  {
   "address": 26108,
   "type": "line",
   "text": "The high bytes of the radar row pointers, read with $65FB."
  },
  {
   "address": 26115,
   "type": "line",
   "text": "The radar dot's pixel mask for each of the four double-pixel places in a byte: $C0, $30, $0C, $03."
  },
  {
   "address": 26119,
   "type": "line",
   "text": "The enemy's medium-range picture, first step ($352C): 48 entries, by the enemy's direction relative to ours in quarters (bits 0-1 of the index), its roll quarter (bits 2-3) and its pitch (bits 4-5: 0 near level, 1 climbing, 2 diving), each a row (0, 4, 8 or 12) of the table at $6667."
  },
  {
   "address": 26167,
   "type": "line",
   "text": "For the same 48 entries: a quarter (0-3) to which our own roll quarter is added, modulo 4, for the column of the table at $6667."
  },
  {
   "address": 26215,
   "type": "line",
   "text": "Sixteen entries, four rows of four: an index (0-36) into the tables at $6677 and $66A7."
  },
  {
   "address": 26231,
   "type": "line",
   "text": "For each of those 37 indexes, a row (0, 4, 8, 12 or 16) of the table at $66D7 ($35A9). The 11 bytes from $669C are not read."
  },
  {
   "address": 26279,
   "type": "line",
   "text": "For the same 37 indexes, a column (0-2) to which our own pitch adds 0 near level, 1 climbing or 3 diving, modulo 4 ($35AE). The 11 bytes from $66CC are not read."
  },
  {
   "address": 26299,
   "type": "line",
   "text": "Read as $66BB + the character ($360D), so its first entry, for 0, is at $66EB: the title font's top-left character code for each character from 0 to Y, 42 bytes (A $00, B $04 and so on four apart, I and J two apart, 1 to 9 from $66, 0 at $8A; the punctuation codes : to @ read 0). Z's entry would be the first byte of the width table below. The bytes from $66BB to $66EA belong to the tables at $66A7 and $66D7."
  },
  {
   "address": 26327,
   "type": "line",
   "text": "Twenty entries, $66D7-$66EA, five rows of four: the place in the picture-code table at $9358 for the row and column, whose code / 8 picks the pointer at $6576 and whose low four bits pick the frame ($35B9)."
  },
  {
   "address": 26341,
   "type": "line",
   "text": "Read as $66E5 + the character ($3612), from $6715 for 0 to $673F for Z: each title-font character's width in cells, 2 for most, 1 for I and J, 3 for W, 0 for @. Each cell is two codes, the top one and the one below it, and the next cell's top code is two more."
  },
  {
   "address": 26432,
   "type": "line",
   "text": "The first lines of the five title pages, as pointers low byte then high byte: THE ULTIMATE, CREATED BY, PROGRAMMED AND, GRAPHICS, TITLE MUSIC."
  },
  {
   "address": 26433,
   "type": "line",
   "text": "The high bytes of the first-line pointers, read with $6740."
  },
  {
   "address": 26442,
   "type": "line",
   "text": "The second lines of the title pages: HEAD TO HEAD, CASCADE GAMES, DESIGNED BY, BY, BY."
  },
  {
   "address": 26443,
   "type": "line",
   "text": "The high bytes of the second-line pointers."
  },
  {
   "address": 26452,
   "type": "line",
   "text": "The third lines: CONFLICT, 1987, IAN MARTIN, DAMON REDMOND, ROB HUBBARD."
  },
  {
   "address": 26453,
   "type": "line",
   "text": "The high bytes of the third-line pointers."
  },
  {
   "address": 26462,
   "type": "line",
   "text": "The security grid's column names, two stored characters each, 32 of them: A to Y, then where Z would be the code $5A, which the cipher at $6F7F turns into a 0 byte, then AA, BB, CC, DD, EE and FF. $380D takes the square's column from $FA00, doubles it and copies the name into the question at $68AB. The letters are enciphered and read back through $6F7F, like the game's other screen text."
  },
  {
   "address": 26463,
   "type": "line",
   "text": "The second character of each column name, read with $675E: a space for the 26 single-letter names, the letter again for AA to FF."
  },
  {
   "address": 26526,
   "type": "line",
   "text": "The grid's row names, two characters each: 1 to 9 with a space after, then 10 to 20; copied into the question at $68AE."
  },
  {
   "address": 26527,
   "type": "line",
   "text": "The second character of each row name, read with $679E."
  },
  {
   "address": 26566,
   "type": "line",
   "text": "The security question's colour names, each ending in $FF, colours 0 to 13 in the machine's order: BLACK, WHITE, RED, CYAN, PURPLE, DARK GREEN, BLUE, YELLOW, ORANGE, BROWN, PINK, DARK GREY, MEDIUM GREY, LIGHT GREEN (pointers at $54A4). The cursor shows the name under it."
  },
  {
   "address": 26669,
   "type": "line",
   "text": "The security screen: \" COLOUR CODE SECURITY SYSTEM \", then \"ON THE REVERSE  OF THE INLAY CARD IS A\", \"COLOUR GRID. PRESS FIRE TO INDICATE\" and \"THE COLOUR AT SQUARE AA 12\", whose AA 12 is replaced by the square asked for."
  },
  {
   "address": 26795,
   "type": "line",
   "text": "The question's column name, first character, written by $3810."
  },
  {
   "address": 26796,
   "type": "line",
   "text": "The column name's second character, written by $3816, and the space after it."
  },
  {
   "address": 26798,
   "type": "line",
   "text": "The question's row name, first character, written by $3821."
  },
  {
   "address": 26799,
   "type": "line",
   "text": "The row name's second character, written by $3827, and the $FF that ends the line."
  },
  {
   "address": 26801,
   "type": "line",
   "text": "The warning under the question: \"WARNING! THREE WRONG ANSWERS WILL WIPE  THE GAME FROM THE COMPUTER'S MEMORY...\"."
  },
  {
   "address": 26880,
   "type": "line",
   "text": "The name entry after a top-five score ($54C0): \"YOUR SCORE IS ONE OF THE TOP FIVE\" and \"ENTER YOUR NAME  \", followed by the name field."
  },
  {
   "address": 26931,
   "type": "line",
   "text": "The name being entered, ten characters ending in $FF: ten dots until the letters typed replace them, each stored enciphered ($55F9). $5634 compares the first eight with $6A30, and the high-score table keeps the name."
  },
  {
   "address": 26942,
   "type": "line",
   "text": "The two scenario descriptions under COMBAT SCENARIO on the options screen, each three lines of forty and an $FF (pointers at $6EBE): \"CLOSE RANGE DOGFIGHT. BOTH PLANES ARE ALREADY FLYING, AND ARMED WITH SHORT RANGE MISSILES ONLY.\" and, from $69B7, \"FULL SCALE AERIAL AND AIR-GROUND COMBAT SIMULATION. BOTH AIRCRAFT MUST INTERCEPT, AND ATTACK.\"."
  },
  {
   "address": 27184,
   "type": "line",
   "text": "DUSTY BUG, enciphered, with no end mark: COMMENCE CONFLICT follows at once. $5634 compares only the first eight letters with the name entered, so DUSTY BU is enough to make pilot one immortal."
  },
  {
   "address": 27193,
   "type": "line",
   "text": "The options screen's lines, each ending in $FF: COMMENCE CONFLICT, \"COMBATANTS: \", ONE PLAYER, TWO PLAYERS and \"COMPUTER OPPONENT SKILL LEVEL: \" followed by the two digits of the level."
  },
  {
   "address": 27279,
   "type": "line",
   "text": "The skill level's first digit, written by $63D4 and $643A."
  },
  {
   "address": 27280,
   "type": "line",
   "text": "The skill level's second digit, written by $63D9 and $643F, then the $FF that ends the line."
  },
  {
   "address": 27282,
   "type": "line",
   "text": "More options lines: \"COMBAT SCENARIO...\", \"NUMBER OF PLANES EACH: \", \"CRASH DETECTION: \", ON, OFF and \"MISSILE HITS TO KILL AIRCRAFT: \" followed by the number."
  },
  {
   "address": 27382,
   "type": "line",
   "text": "The missile hits to kill, one digit, written by $6490; then SAVE THESE OPTIONS TO DISK."
  },
  {
   "address": 27411,
   "type": "line",
   "text": "The title pages' words: GREATEST ACES (the high-score table's heading), THE ULTIMATE, HEAD TO HEAD, CONFLICT, CREATED BY, CASCADE GAMES, 1987, PROGRAMMED AND, BY, IAN MARTIN, GRAPHICS, DAMON REDMOND, TITLE MUSIC, ROB HUBBARD, DESIGNED BY; then the side panel's DEMO MODE, IMMORTAL, PILOT ONE and \"PLANES XX\"."
  },
  {
   "address": 27613,
   "type": "line",
   "text": "The planes-left count's first digit in PLANES XX, written by $1D00."
  },
  {
   "address": 27614,
   "type": "line",
   "text": "The planes-left count's second digit, written by $1D05; then \"  SCORE   0\"."
  },
  {
   "address": 27626,
   "type": "line",
   "text": "The score's five digits between two zeros (so the score shows ten times the number stored), written by $1CD4; then PILOT TWO, COMPUTER and \"LEVEL \"."
  },
  {
   "address": 27659,
   "type": "line",
   "text": "The computer's skill level, first digit, written by $1C9E."
  },
  {
   "address": 27660,
   "type": "line",
   "text": "The skill level's second digit, written by $1CA3; then ALL AIRCRAFT DESTROYED ($6339), and from $6C24 the four weapon names, eight characters each (\" CANNON \", \"HEAT  AA\", \"RADAR AA\", \"AIR-GRND\"; pointers at $71F8), then the cockpit messages from $6C44, fourteen characters each, the top line and the bottom line of seven (pointers at $7432 and $7472): STALL WARNING, CRASH WARNING, PLANE CRASHED, CONTROL LOST, FUEL IS LOW, FLARE DROPPED, CHAFF DROPPED, REDUCE ALT, TO LAND, ENEMY CLOSE, NO FLARES, NO CHAFF, YOU TRAITOR, and plane one's RANGE."
  },
  {
   "address": 27905,
   "type": "line",
   "text": "Plane one's RANGE digits in message 13, written by $3BAE; then plane two's copy of the message."
  },
  {
   "address": 27919,
   "type": "line",
   "text": "Plane two's RANGE digits in message 13, written by $3BEC; then ENEMY MISSILE (message 14), FLYING OFF MAP (15) and RANGE (17)."
  },
  {
   "address": 27961,
   "type": "line",
   "text": "The digits of message 17's RANGE, shared by both planes, written by $126C; then ENEMY PLANE (16) and plane one's ALT (18)."
  },
  {
   "address": 27989,
   "type": "line",
   "text": "Plane one's altitude digits in message 18, written by $1298; then plane two's ALT."
  },
  {
   "address": 28003,
   "type": "line",
   "text": "Plane two's altitude digits, written by $1282; then TARGET LOCKED (19 and 20), LOCK BROKEN (21) and plane one's stock line \"FLARES5\" / \"CHAFF 3\" (22)."
  },
  {
   "address": 28044,
   "type": "line",
   "text": "Plane one's flares left, the digit in FLARES5, written by $254A."
  },
  {
   "address": 28051,
   "type": "line",
   "text": "Plane one's chaff left, the digit in CHAFF 3, written by $2544; then plane two's stock line."
  },
  {
   "address": 28058,
   "type": "line",
   "text": "Plane two's flares left, written by $2559."
  },
  {
   "address": 28065,
   "type": "line",
   "text": "Plane two's chaff left, written by $2553; then MISSILE LAUNCH (23), OK FOR LANDING (24), CEILING 60000 (25), RADAR STATION (plane one's 26), ENEMY SPYSHIP (plane two's 26) and plane one's RANGE (27)."
  },
  {
   "address": 28143,
   "type": "line",
   "text": "Plane one's RANGE digits in message 27, written by $3ACB; then plane two's."
  },
  {
   "address": 28157,
   "type": "line",
   "text": "Plane two's RANGE digits in message 27, written by $3B23; then OUT OF RANGE (28), a blank message (29-31), and the screen lines MISSION COMPLETED - PRESS FIRE, \"    PRESS FIRE TO TAKE OFF\", \" COMPUTER PILOT - STANDING BY\", \"     TAKE OFF\", \"     ARM AIRCRAFT\", \"PAUSE  ON    \" and WEAPONS ARMING SELECTION."
  },
  {
   "address": 28350,
   "type": "line",
   "text": "The two scenario descriptions' addresses, low byte then high byte: $693E (the dogfight) and $69B7 (the full-scale game), read by $640D with X = the scenario \u00d7 2."
  },
  {
   "address": 28351,
   "type": "line",
   "text": "The high bytes of the scenario description pointers, read with $6EBE (the byte after them is the first of $6EC2)."
  },
  {
   "address": 28354,
   "type": "line",
   "text": "Sprite pointers for the middle of the screen, copied into sprites 0-5 of both screens by $4EA0: $A4-$A7 (the shapes at $A900-$A9FF), the top of plane two's cockpit frame, four sprites at line $9A, and $AE and $AF ($AB80 and $ABC0), the red ACE 2 logo on the side panel, expanded across."
  },
  {
   "address": 28360,
   "type": "line",
   "text": "Sprite pointers for plane two's lower cockpit frame, copied into sprites 0-3 of both screens by $4BC7: $AA-$AD, the shapes at $AA80-$AB7F."
  },
  {
   "address": 28364,
   "type": "line",
   "text": "Six sprite pointers, $36-$3B (the shapes at $8D80-$8EFF), copied into sprites 0-5 of both screens by $4651, which places the six at lines $42 and $57 of the top half, four across and two below."
  },
  {
   "address": 28370,
   "type": "line",
   "text": "Plane one's four cockpit frame sprites, pointers $3C-$3F (the shapes at $8F00-$8FFF), set by $48B7."
  },
  {
   "address": 28374,
   "type": "line",
   "text": "The turn rate by the bank angle ($5143): 0, 2, 4, 9, 15, 20, 28, 33, 40, 50, 60, 70, 85, 100, 120, 150."
  },
  {
   "address": 28390,
   "type": "line",
   "text": "What pulling back (added) or pushing (taken away) adds to the turn rate, by the bank: nothing up to bank 3, then 1, 2, 3, 4, 6, 8, 12, 16, 20, 26, 50, 50."
  },
  {
   "address": 28406,
   "type": "line",
   "text": "The low bytes of the four tracer frames' masks in page $9D ($9D48, $9D68, $9D88, $9DA8), patched into the AND at $1893 by the frame $74."
  },
  {
   "address": 28410,
   "type": "line",
   "text": "The screen offsets of the four tracer cells from the first ($1884, $18B0): 0, 39, 78 and 117, each one row down and one column left of the last."
  },
  {
   "address": 28414,
   "type": "line",
   "text": "The pitch's cosine as a fraction of 256, by the pitch ($77, 0-23): $FF level, then down by 8 a step to $C0, by 16 to 0 at pitch 20. $429B multiplies the speed by it for the ground speed."
  },
  {
   "address": 28438,
   "type": "line",
   "text": "The cockpit view's scale for an elevation ($3965): 64 entries for 0-63, rising slowly then faster (0, 1, 1, 2, 2, 3, 4 ... $2D, $30, $33, $36 ... )."
  },
  {
   "address": 28502,
   "type": "line",
   "text": "How often the stick changes the pitch, by the bank ($2A04): added into $72 each pass, and the stick acts on a carry; $FF level, falling to $A3 by bank 7 and to 0 at bank 15, where the stick no longer moves the nose."
  },
  {
   "address": 28518,
   "type": "line",
   "text": "The cockpit messages' letters ($17F3): for each character code, the place of its five-byte picture in the small font at $9500. Codes 0-9 (digit values) and $30-$39 give 0, 5, 10 ... 45; space ($20) $3C, - $32, . $37; the enciphered letters $41-$5A give the real letters' places, A at $41 to Y at $B9, five apart. The table runs to $6FC0 and so shares its bytes with the cipher at $6F7F."
  },
  {
   "address": 28543,
   "type": "line",
   "text": "The text cipher, read as $6F7F + the stored letter ($1911, $35F1, $56DA): for $41-$59, the real letter, in the bytes $6FC0-$6FD8 (A means H, B R, C F, D L, E K, F T, G J, H N, I U, J Y, K E, L X, M O, N W, O G, P C, Q D, R B, S A, T S, U M, V P, W I, X V, Y Q); $5A, where Z would be, gives a 0 byte ($6FD9), so no stored code gives Z. The bytes before $6FC0 are the message glyph table above."
  },
  {
   "address": 28633,
   "type": "line",
   "text": "For each roll quarter, 0 or 1, EORed with the pitch direction ($7C) into $F3, which chooses ADD or SUBTRACT for the horizon's crossing column ($318A)."
  },
  {
   "address": 28637,
   "type": "line",
   "text": "For each roll quarter, 0 or 1, EORed with the pitch direction into $F4, which chooses ADD or SUBTRACT for the horizon's row ($31B2)."
  },
  {
   "address": 28641,
   "type": "line",
   "text": "The horizon's first slope value by the bank (0-15), into $C1: 0, $1F, $24 ... rising to $FF; like a sine of the bank."
  },
  {
   "address": 28657,
   "type": "line",
   "text": "The second slope value by the bank, into $C2: 16 entries, $6FF1-$7000, $FF falling to 0; like its cosine."
  },
  {
   "address": 28673,
   "type": "line",
   "text": "The keyboard row masks for $DC00 in the order the controls read them ($369A): rows 7, 1, 2, 3, 4, 5, 6 and 0 ($7F, $FD, $FB, $F7, $EF, $DF, $BF, $FE)."
  },
  {
   "address": 28681,
   "type": "line",
   "text": "A missile hit's damage by the MISSILE HITS TO KILL option ($263F): 255 for one hit, 128 for two, 96 for three (entry 0 is not used)."
  },
  {
   "address": 28685,
   "type": "line",
   "text": "The screen offset of each of the 25 rows, row \u00d7 40, low bytes; added to a screen's base by every routine that prints or draws on the screen."
  },
  {
   "address": 28710,
   "type": "line",
   "text": "The high bytes of row \u00d7 40, for the same 25 rows."
  },
  {
   "address": 28735,
   "type": "line",
   "text": "The screen offset of column 10 of each of the 25 rows (row \u00d7 40 + 10), low bytes, for the cockpit halves ($216E, $2210)."
  },
  {
   "address": 28760,
   "type": "line",
   "text": "The high bytes of row \u00d7 40 + 10."
  },
  {
   "address": 28785,
   "type": "line",
   "text": "The horizon's edge-character list for each bank ($320F, X = the bank \u00d7 2), low byte then high byte: $709E for banks 0 and 1, then $70A6, $70AD, $70B3, $70B8, $70BC, $70BF, $70C1, $70C2, $70C4, $70C7, $70CB, $70D0 and $70D6 for banks 2-14 (bank 15 would read the first bytes of $708F)."
  },
  {
   "address": 28786,
   "type": "line",
   "text": "The high bytes of the edge-list pointers, read with $7071."
  },
  {
   "address": 28815,
   "type": "line",
   "text": "The length of each bank's edge-character list ($3221, by the bank): 1, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 11 for banks 0-14; then from $709E the lists themselves, character codes $DC (sky) and $DE-$E4 (the edge shapes copied in by $338E)."
  },
  {
   "address": 28897,
   "type": "line",
   "text": "For each bank, how many columns the horizon line moves at each step ($3246): 30 for level, 8, 7 ... down to 1 from bank 8."
  },
  {
   "address": 28913,
   "type": "line",
   "text": "For each bank, how many rows each step covers ($324B): 1 up to bank 8, then 2, 3, 4, 5, 6, 11 and 8."
  },
  {
   "address": 28929,
   "type": "line",
   "text": "The fill shapes for a view with no horizon ($3433) and the horizon's fill characters: eight bytes of $55 (sky, colour 1 in every pixel) and eight of $FF (ground, colour 3)."
  },
  {
   "address": 28945,
   "type": "line",
   "text": "The horizon's edge shapes for each bank ($338E, X = the bank \u00d7 2), low byte then high byte: $9118, $9100, $9138, $9170, $91A0, $91C8, $91E8, $9200, $9210, $9218, $9228, $9240, $9258, $9278, $92A0 and $9100."
  },
  {
   "address": 28946,
   "type": "line",
   "text": "The high bytes of the edge shape pointers, read with $7111."
  },
  {
   "address": 28977,
   "type": "line",
   "text": "For each bank, the number of edge shape bytes to copy less one ($339A): 1 for banks 0 and 15, $37 (seven characters) for banks 1 and 2, down to 7 at bank 8 and up to $2F again."
  },
  {
   "address": 28993,
   "type": "line",
   "text": "The partial cell of an instrument bar ($3455, $349D): one, two, three or four double pixels filled from the left ($C0, $F0, $FC, $FF)."
  },
  {
   "address": 28997,
   "type": "line",
   "text": "Plane one's bank indicator: the low byte, in page $97, of the index table for each quarter of the roll ($9740, $97C0, $9780, $9700), patched into $19D3; each says where in the panel graphics at $A1F0 the picture's 63 bytes go."
  },
  {
   "address": 29001,
   "type": "line",
   "text": "The colour RAM places (low bytes, three rows of four) of plane one's instrument faces, coloured brown by $46FB."
  },
  {
   "address": 29013,
   "type": "line",
   "text": "The pitch ladder's mark row by the pitch ($1A70, $1B61), 24 entries: row 9 for level, moving out to row 19."
  },
  {
   "address": 29037,
   "type": "line",
   "text": "The mark row by the pitch for the other direction ($1A67, $1B58): row 9 for level, moving out to row 0 by pitch 14 and staying there."
  },
  {
   "address": 29065,
   "type": "line",
   "text": "Plane one's compass pictures, seven pointers low byte then high byte ($99C8, $99F8, $9A20, $9A50, $9A81, $9AB4, $9AE8), picked by $1ABF through $71A5."
  },
  {
   "address": 29066,
   "type": "line",
   "text": "The high bytes of plane one's compass picture pointers."
  },
  {
   "address": 29079,
   "type": "line",
   "text": "Plane two's compass pictures, seven pointers ($EEA2, $EECF, $EEFF, $EF37, $EF6F, $EFA9, $EFE4), picked by $1B90."
  },
  {
   "address": 29080,
   "type": "line",
   "text": "The high bytes of plane two's compass picture pointers."
  },
  {
   "address": 29093,
   "type": "line",
   "text": "The heading in sixteenths to the compass picture (0-6): 0, 1, 2, 3, 3, 4, 5, 6, then back down 6 to 0 for the other half of the circle, which is drawn mirrored."
  },
  {
   "address": 29109,
   "type": "line",
   "text": "Plane one's compass: the low byte, in page $97, of the index table for each quarter of the heading ($9700, $9780, $97C0, $9740)."
  },
  {
   "address": 29113,
   "type": "line",
   "text": "Plane two's compass: the low bytes of the byte-order list for each quarter ($7259, $72A1, $7301, $7389)."
  },
  {
   "address": 29117,
   "type": "line",
   "text": "The high bytes of plane two's compass byte-order lists, read with $71B9."
  },
  {
   "address": 29121,
   "type": "line",
   "text": "The picture's width and height in cells by its size $5E (0-2): 1, 2 or 3 ($16AF)."
  },
  {
   "address": 29124,
   "type": "line",
   "text": "For each roll quarter, 0 or $FF: a sign used by $3948 when it turns a point by the roll."
  },
  {
   "address": 29128,
   "type": "line",
   "text": "A second sign for each roll quarter, 0 or $FF, for $3948."
  },
  {
   "address": 29132,
   "type": "line",
   "text": "A third sign for each roll quarter, 0 or $FF, for $3948."
  },
  {
   "address": 29136,
   "type": "line",
   "text": "The map picture's twelve rows, 30 characters each from $9800: low bytes of $9800 + 30 \u00d7 the row ($14DB)."
  },
  {
   "address": 29148,
   "type": "line",
   "text": "The high bytes of the map row pointers."
  },
  {
   "address": 29160,
   "type": "line",
   "text": "The missile sight's box, four pictures of 72 bytes ($9C28, $9C70, $9CB8, $9D00), low byte then high byte, picked by the signs of the enemy's fine position ($05, $06; $23C5-$23D5)."
  },
  {
   "address": 29161,
   "type": "line",
   "text": "The high bytes of the box picture pointers."
  },
  {
   "address": 29168,
   "type": "line",
   "text": "Four more pointers in the same form ($9D48, $9D90, $9DD8, $9E20) that the index at $23D5 never reaches; those addresses hold other tables."
  },
  {
   "address": 29176,
   "type": "line",
   "text": "The four weapon names' addresses for the weapon panel ($5F91): $6C24 CANNON, $6C2C HEAT AA, $6C34 RADAR AA, $6C3C AIR-GRND; low byte then high byte."
  },
  {
   "address": 29177,
   "type": "line",
   "text": "The high bytes of the weapon name pointers; the next 65 bytes, $7200-$7240, hold a falling curve from $FF to 0 (a quarter of a cosine) that nothing in the code addresses and no run of the game read."
  },
  {
   "address": 29249,
   "type": "line",
   "text": "The byte orders for a picture's four frames, by size ($1581: 8 bytes a size, 2 a frame): one cell $7259, $7259, $7341, $7341; two cells $7259, $7369, $7349, $7329; three cells $7259, $7389, $72A1, $7301. Frames 1 and 3 are also mirrored through $9000, so the four frames are the picture as drawn, mirrored left to right, upside down, and turned half round."
  },
  {
   "address": 29250,
   "type": "line",
   "text": "The high bytes of the byte-order pointers. From $7259, the lists themselves, each an offset into the picture for every byte built: $7259 in order (0 to 71); $72A1 each column of 24 bytes upside down; $7301 all 72 reversed, whose tail is also the 32-byte list at $7329 and the 8-byte list at $7341; $7349 each 16-byte column upside down; $7369 the two 16-byte columns swapped; $7389 the three columns of 24 in reverse order. Plane two's bank indicator and compass use the 72-byte lists by the quarter of the roll or heading. The 24 bytes $72E9-$7300 (a fourth upside-down column) are past every list's end."
  },
  {
   "address": 29617,
   "type": "line",
   "text": "The side panel's screen codes, read as $73B1 + the character ($1915): from $73E1, the digits 0-9 to codes 0-9, A to $0B, C $0C, D $0D, E $0E, W $0F, I $10, L $11, M $12, N $13, O to 0 (the zero), P $14, R $15, S $16, T $17, U $18, V $19, and every other character to $0A, a blank. Its first 32 bytes are the end of the byte-order list at $7389."
  },
  {
   "address": 29708,
   "type": "line",
   "text": "The climb rate by the pitch, as a fraction of the speed ($4302): 0, $2A, $4D ... $C8, then $D2 from pitch 18 on."
  },
  {
   "address": 29736,
   "type": "line",
   "text": "The powers of ten for $3ED4, low bytes: 10000, 1000, 100, 10, 1."
  },
  {
   "address": 29741,
   "type": "line",
   "text": "Their high bytes ($27, $03, 0, 0, 0)."
  },
  {
   "address": 29746,
   "type": "line",
   "text": "Pilot one's 32 cockpit messages, pointers low byte then high byte into the texts at $6C44 ($2EE8): 0 STALL WARNING, 1 CRASH WARNING, 2 PLANE CRASHED, 3 CONTROL LOST, 4 FUEL IS LOW, 5 FLARE DROPPED, 6 CHAFF DROPPED, 7 REDUCE ALT, 8 TO LAND, 9 ENEMY CLOSE, 10 NO FLARES, 11 NO CHAFF, 12 YOU TRAITOR, 13 RANGE, 14 ENEMY MISSILE, 15 FLYING OFF MAP, 16 ENEMY PLANE, 17 RANGE, 18 ALT, 19 and 20 TARGET LOCKED, 21 LOCK BROKEN, 22 the flares and chaff left, 23 MISSILE LAUNCH, 24 OK FOR LANDING, 25 CEILING 60000, 26 RADAR STATION, 27 RANGE, 28 OUT OF RANGE, 29-31 blank."
  },
  {
   "address": 29747,
   "type": "line",
   "text": "The high bytes of pilot one's message pointers."
  },
  {
   "address": 29810,
   "type": "line",
   "text": "Pilot two's 32 cockpit messages, the same list but with its own copies of the messages that carry figures (13, 18, 22, 27) and ENEMY SPYSHIP for 26 ($2F6A)."
  },
  {
   "address": 29811,
   "type": "line",
   "text": "The high bytes of pilot two's message pointers."
  },
  {
   "address": 29874,
   "type": "line",
   "text": "The video chip's registers $D000-$D02E for the title, copied by $0AAC: eight sprites in a row at the foot of the screen (sprites 0-3 and 4-7 both at across $88, $A0, $B8, $D0, down $DC), all on, 4-7 multicoloured, the multicolours light grey and blue, sprites 0-3 dark grey and 4-7 medium grey: the CASCADE logo."
  },
  {
   "address": 29921,
   "type": "line",
   "text": "The title sprites' pointers ($0AB7): $DA-$DD (the shapes at $B680, from $D100) and $9A-$9D ($A680, from $D000). Then, from $74E9, plane one's dogfight loadout, eight bytes: 3000 cannon rounds ($0BB8), 8 heat seekers, no radar missiles, none of the third kind."
  },
  {
   "address": 29937,
   "type": "line",
   "text": "Plane one's full-scale loadout, eight bytes: the cannon rounds (3000), then the heat seekers, radar missiles and the third kind as words. The demo swaps eight bytes in here ($0BF6) and puts them back ($598D)."
  },
  {
   "address": 29939,
   "type": "line",
   "text": "Plane one's heat seekers in the full-scale game (6), set by the arming screen ($5905)."
  },
  {
   "address": 29941,
   "type": "line",
   "text": "Plane one's radar missiles (4), set by the arming screen ($590A)."
  },
  {
   "address": 29943,
   "type": "line",
   "text": "Plane one's air-to-ground missiles (0), set by the arming screen ($590F); then plane two's dogfight loadout from $74F9 (3000 rounds, 8 heat seekers) and the start of its full-scale one at $7501 (3000 rounds)."
  },
  {
   "address": 29955,
   "type": "line",
   "text": "Plane two's heat seekers in the full-scale game (6), set by the arming screen or by the computer's choice ($1177)."
  },
  {
   "address": 29957,
   "type": "line",
   "text": "Plane two's radar missiles (4)."
  },
  {
   "address": 29959,
   "type": "line",
   "text": "Plane two's air-to-ship missiles (0)."
  },
  {
   "address": 29961,
   "type": "line",
   "text": "The computer's air-to-air choice for plane two ($1174): 8 heat seekers, 4 radar missiles, none of the third kind."
  },
  {
   "address": 29967,
   "type": "line",
   "text": "The computer's other choice ($1187): 4 heat seekers, no radar missiles, 2 air-to-ship missiles."
  },
  {
   "address": 29973,
   "type": "line",
   "text": "The ACE 2 logo's top row, 13 character codes ($C0 up, five apart; $FF a blank cell between ACE and 2), drawn by $38E8."
  },
  {
   "address": 29986,
   "type": "line",
   "text": "The logo's second row of character codes ($C1 up)."
  },
  {
   "address": 29999,
   "type": "line",
   "text": "The logo's third row ($C2 up)."
  },
  {
   "address": 30012,
   "type": "line",
   "text": "The logo's fourth row ($C3 up)."
  },
  {
   "address": 30025,
   "type": "line",
   "text": "The logo's bottom row ($C4 up). The eight bytes after it, $7556-$755D, read \"S0:QZ\", $FF, \"QZ\" in plain ASCII, a disk command (scratch the file QZ) that nothing uses."
  },
  {
   "address": 30046,
   "type": "line",
   "text": "The five high-score entries' names in the table at $0903-$09FF, pointers low byte then high byte: $0934, $0941, $094E, $095B, $0968 (13 bytes apart)."
  },
  {
   "address": 30047,
   "type": "line",
   "text": "The high bytes of the high-score name pointers."
  },
  {
   "address": 30056,
   "type": "line",
   "text": "Plane one's loadout by the scenario, low byte then high byte: $74E9 (dogfight) and $74F1 (full-scale), for $2F97."
  },
  {
   "address": 30057,
   "type": "line",
   "text": "The high bytes of plane one's loadout pointers."
  },
  {
   "address": 30060,
   "type": "line",
   "text": "Plane two's loadouts: $74F9 (dogfight) and $7501 (full-scale)."
  },
  {
   "address": 30061,
   "type": "line",
   "text": "The high bytes of plane two's loadout pointers."
  },
  {
   "address": 30064,
   "type": "line",
   "text": "A ground target's close picture by our roll (0-63, $0272; $6138 and $617F): the low four bits pick one of eight pictures (the pointers at $7820-$7851), the high four bits the frame, 0 or, for the upside-down half of the roll, 3 (the picture turned half round); the last four entries are 0."
  },
  {
   "address": 30128,
   "type": "line",
   "text": "The enemy's large picture, last step of $2C86 ($2DD4): 88 entries, by the previous step's result (low four bits \u00d7 8) and our pitch added to its high four bits (modulo 8), each a picture code: the low four bits pick one of the pictures at $77F8, the high four bits the frame."
  },
  {
   "address": 30216,
   "type": "line",
   "text": "The third step of the large picture's lookup ($2DBA): 64 entries, each a result whose high four bits get our pitch class added and whose low four bits pick a row of $75B0."
  },
  {
   "address": 30280,
   "type": "line",
   "text": "The second step ($2D9D): 48 entries picked by the first step's low four bits \u00d7 8 and its high four bits plus our roll in eighths (modulo 8); each picks an entry of $7608."
  },
  {
   "address": 30328,
   "type": "line",
   "text": "The large picture's lookup ($2C86): from $76B8, 320 bytes, five blocks of 64 by the enemy's pitch (level, climbing, steep climb, diving, steep dive; the block offsets at $7816), each indexed by its roll in eighths and its direction relative to ours in eighths, which give an entry of the first 64 bytes, $7678-$76B7 ($2D83); those pick an entry of $7648."
  },
  {
   "address": 30712,
   "type": "line",
   "text": "The enemy's large pictures, fifteen pointers low byte then high byte, 32 bytes apart from $FE00 to $FFC0 ($2DE5), each the picture's bytes that $1581 builds it from."
  },
  {
   "address": 30713,
   "type": "line",
   "text": "The high bytes of the large picture pointers."
  },
  {
   "address": 30742,
   "type": "line",
   "text": "The offsets of the five pitch blocks in the large picture's first table ($2D53): 0, $40, $80, $C0 and $100, words, low byte first."
  },
  {
   "address": 30743,
   "type": "line",
   "text": "The high bytes of the pitch block offsets, read with $7816."
  },
  {
   "address": 30752,
   "type": "line",
   "text": "The spy ship's one-cell pictures (the target over the sea, $38 = 0): eight pointers low byte then high byte, $9B88 to $9BC0, eight bytes apart ($6157)."
  },
  {
   "address": 30753,
   "type": "line",
   "text": "The high bytes of the spy ship's one-cell picture pointers."
  },
  {
   "address": 30768,
   "type": "line",
   "text": "The spy ship's two-cell pictures: eight pointers, $FAA0 to $FB80, 32 bytes apart ($6192)."
  },
  {
   "address": 30769,
   "type": "line",
   "text": "The high bytes of the spy ship's two-cell picture pointers."
  },
  {
   "address": 30784,
   "type": "line",
   "text": "The radar station's one-cell pictures (the target over land, $38 = 1): eight pointers, $FBA0 to $FBD8, eight bytes apart ($614B)."
  },
  {
   "address": 30785,
   "type": "line",
   "text": "The high bytes of the radar station's one-cell picture pointers."
  },
  {
   "address": 30800,
   "type": "line",
   "text": "The radar station's two-cell pictures: eight pointers, $FBE0 to $FCC0, 32 bytes apart ($619E)."
  },
  {
   "address": 30801,
   "type": "line",
   "text": "The high bytes of the radar station's two-cell picture pointers."
  },
  {
   "address": 30816,
   "type": "line",
   "text": "A missile's top speed by its type ($2684): 250 for the heat seeker (type 1), 255 for the radar missile (2); the entries for type 0 (0) and type 3 ($D2) are not read, since the air-to-ground missile flies by $27D4. After them, from $7864, bytes the program never reads, left in memory when the disk was made: \"C1CX\", the disk commands \"S0:C1\" and \"S0:CX\" (scratch the files C1 and CX), twelve bytes $7874-$787F, and then, from $7880 to $7FFD, a byte-for-byte copy of $3000-$377D."
  },
  {
   "address": 30848,
   "type": "line",
   "text": "Never run or read: the first 1024 bytes of a copy of $3000-$377D, byte for byte the code at $3000-$33FF, left in memory when the disk was made."
  },
  {
   "address": 31872,
   "type": "line",
   "text": "The rest of the unused copy: the same bytes as $3400-$377D."
  },
  {
   "address": 32766,
   "type": "line",
   "text": "The loader's start address, $0900: it jumps through here when every track is in ($CB6B)."
  },
  {
   "address": 34816,
   "type": "line",
   "text": "Plane two's instrument panel character set, as the hand-over leaves it: the video chip shows it for the bottom panel, rows 20-24. While the title runs, the title's big font is here instead, because $53D4 swaps this 2 KB with $D800-$DFFF at each start of the title and of a game. Characters 0-25 are the side panel's letters, the same 26 in all four of the game's sets: the digits 0-9 (0 doubling as O), a blank ($0A), then A C D E W I L M N P R S T U V ($73B1). Each game's set-up copies the first 16 again from $B000 ($0C9E). From character $1A ($88D0) the set is the panel's picture, laid out like a bitmap: each screen column of the panel is five characters in a row here, 40 bytes, column 10 at $88D0 and each next column 40 bytes on, up to column 31; the dials in columns 32-39 use the codes in another order (the screen codes at $9450)."
  },
  {
   "address": 35072,
   "type": "line",
   "text": "Column 11, rows 21-24 of plane two's panel (characters $20-$23): the 32 pixel rows the weapon selector slides down, rewritten whole from the strip built at $0400 whenever the marker moves ($4C55). Then columns 12-19: the weapon list, and the three lines of digits drawn with the small font ($17D1): the altitude at pixel row 9 of columns 14-18, the speed at row 19 and the selected weapon's stock at row 29 of columns 15-18 ($89B5)."
  },
  {
   "address": 35424,
   "type": "line",
   "text": "Columns 20-24 of plane two's panel: the power and fuel bars, five pixel rows each at rows 8-12 and 16-20 of columns 21-24, drawn by $349D."
  },
  {
   "address": 35488,
   "type": "line",
   "text": "Plane two's message panel: two lines of seven letters in pixel rows 24-28 and 30-34 of columns 21-27, 40 bytes a letter (from $8AA0 and $8AA6, $2F57); this is column 21. $2F35 clears 13 bytes of each of columns 21-28."
  },
  {
   "address": 35528,
   "type": "line",
   "text": "The message panel's column 22 (cleared by $2F38)."
  },
  {
   "address": 35568,
   "type": "line",
   "text": "The message panel's column 23 (cleared by $2F3B)."
  },
  {
   "address": 35608,
   "type": "line",
   "text": "The message panel's column 24 (cleared by $2F3E)."
  },
  {
   "address": 35627,
   "type": "line",
   "text": "Plane two's radar scope, four columns of 20 pixel rows (rows 3-22 of columns 25-28), copied each pass from the scope drawn at $03A0 ($12A9); this is column 25, the scope's left edge with its tick marks."
  },
  {
   "address": 35648,
   "type": "line",
   "text": "The message panel's column 25 (cleared by $2F41)."
  },
  {
   "address": 35667,
   "type": "line",
   "text": "The radar scope's column 26 ($12AF)."
  },
  {
   "address": 35688,
   "type": "line",
   "text": "The message panel's column 26 (cleared by $2F44)."
  },
  {
   "address": 35707,
   "type": "line",
   "text": "The radar scope's column 27 ($12B5)."
  },
  {
   "address": 35728,
   "type": "line",
   "text": "The message panel's column 27 (cleared by $2F47)."
  },
  {
   "address": 35747,
   "type": "line",
   "text": "The radar scope's column 28, its right edge ($12BB)."
  },
  {
   "address": 35768,
   "type": "line",
   "text": "The message panel's column 28 (cleared by $2F4A), then the rest of columns 28-31."
  },
  {
   "address": 35874,
   "type": "line",
   "text": "Plane two's pitch ladder, 20 pixel rows down column 31 (characters $84-$86), redrawn by $1B70."
  },
  {
   "address": 35912,
   "type": "line",
   "text": "Plane two's bank indicator, a block of three by three characters ($89-$91: columns 32-34, rows 21-23), redrawn byte by byte through an index table over the dial face at $9DC8 ($1A18); then the dials' frames, characters $92-$A1."
  },
  {
   "address": 36112,
   "type": "line",
   "text": "Plane two's compass, three by three characters ($A2-$AA: columns 36-38, rows 21-23), redrawn over the face at $9E10 ($1BCA); then column 39, characters $AB-$AF."
  },
  {
   "address": 36224,
   "type": "line",
   "text": "Ten sprite shapes, numbers $36-$3F (64 bytes each, to $8FFF): $36-$39 the top of plane one's cockpit frame, four across, and $3A-$3B two pieces below them ($6ECC, placed by $4651 at lines $42 and $57), then $3C-$3F plane one's four lower cockpit frame sprites ($6ED2, set by $48B7)."
  },
  {
   "address": 36864,
   "type": "line",
   "text": "Each byte with its four pairs of bits in the opposite order: a multicolour byte mirrored left to right. The picture builders flip their frames through it ($15CD, $19CE, $1A0E, $1AE9, $1BC0) and so does the horizon ($33BB). This page and the next three are only the processor's: in the video chip's bank 2 the character ROM shows here."
  },
  {
   "address": 37120,
   "type": "line",
   "text": "The horizon's edge characters for each bank, eight bytes each, starting at the address $7111 gives for the bank ($9100 for bank 1 up to $92A0 for bank 14) and as long as $7131 says; $33B7 copies them, mirrored through $9000 when the sky is on the right, into characters $DE up of the set being drawn."
  },
  {
   "address": 37584,
   "type": "line",
   "text": "The sine of a quarter turn in 64 steps, 0 to $FF (one); with the cosine after it, for the radar's dot ($3CFC) and the range ($411A)."
  },
  {
   "address": 37648,
   "type": "line",
   "text": "The cosine of the same 64 steps, $FF down to 0: the sine table backwards ($3D11, $4108)."
  },
  {
   "address": 37712,
   "type": "line",
   "text": "Eight bytes no instruction names and no recorded run reads."
  },
  {
   "address": 37720,
   "type": "line",
   "text": "The enemy's medium-sized picture codes, 48 bytes, of which the 16 places that $66D7 lists are read ($35BD): the high bits pick one of the six byte sets listed at $6576 (the code / 8 is the offset of its pointer) and the low two bits the frame (as drawn, mirrored, upside down, turned half round)."
  },
  {
   "address": 37768,
   "type": "line",
   "text": "The six byte sets of the enemy's medium-sized pictures, eight bytes each ($9388-$93B7): a picture is 32 indexes from one of the byte-order lists at $7259 up, each replaced by the byte it picks here ($15C9)."
  },
  {
   "address": 37816,
   "type": "line",
   "text": "32 bytes no instruction names and no recorded run reads: 0 to 7 and back, then sixteen bytes of $FD."
  },
  {
   "address": 37848,
   "type": "line",
   "text": "Plane one's instrument panel as screen codes, four rows of 30 for rows 8-11, columns 10-39; put back on the screen being drawn whenever its first code there has been overwritten ($0DE8, $1BD1)."
  },
  {
   "address": 37968,
   "type": "line",
   "text": "Plane two's instrument panel as screen codes, five rows of 30 for rows 20-24, columns 10-39: columns 10-31 count up five codes a column from $1A, the dials in columns 32-39 take $88-$AF in the order of their pictures; put back the same way ($1037)."
  },
  {
   "address": 37998,
   "type": "line",
   "text": "The second row of plane two's codes, the one plane two's cockpit compares with the screen (row 21, $8352 and $8752) to know when to put the panel back."
  },
  {
   "address": 38118,
   "type": "line",
   "text": "Ten bytes of $FD that nothing reads."
  },
  {
   "address": 38128,
   "type": "line",
   "text": "Sixteen colours for a shot-down plane's burning view: each frame of the death the view's first multicolour is one of these, picked at random ($4A74, $4AAE)."
  },
  {
   "address": 38144,
   "type": "line",
   "text": "The small font of the panel messages and digits: five bytes a character, single-colour, at the places $6F66 gives: the digits 0-9 at 0-$31, - at $32, . at $37, space at $3C, then A to Y five apart from $41 ($17FB)."
  },
  {
   "address": 38334,
   "type": "line",
   "text": "One more letter shape, Z (five rows), that $6F66 never points at, then five bytes of $FD."
  },
  {
   "address": 38344,
   "type": "line",
   "text": "The cannon's gun sight, a picture of two by two cells (32 bytes) drawn at column 14, row 3 of the view ($17C9 passes it to $16A7)."
  },
  {
   "address": 38376,
   "type": "line",
   "text": "24 bytes no instruction names and no recorded run reads: eight pixel masks, then two small blocks."
  },
  {
   "address": 38400,
   "type": "line",
   "text": "Plane one's four bank indicator pictures, 63 bytes each in a 64-byte slot (level, banks 1-6, 7-11, 12-15; pointers at $654E): three columns of 21 rows, put into the panel through one of the index tables at $9700 ($19CB)."
  },
  {
   "address": 38656,
   "type": "line",
   "text": "Four tables of 63 places (each in a 64-byte slot, last byte unused): where each byte of a three-by-21 picture goes in plane one's panel, whose columns are 32 bytes apart. $9700 keeps the picture as it is, $9740 swaps its outer columns, $9780 turns it upside down and $97C0 does both; with the mirror at $9000 they give the four quarters of the roll and the heading ($19D2, $1AED)."
  },
  {
   "address": 38912,
   "type": "line",
   "text": "The map, 30 columns by 12 rows of screen codes for the character set at $B000, copied into a pilot's half of the screen by $13EA; $14F7 reads it, and the pixel pair under the plane in the character's shape, to tell sea from land."
  },
  {
   "address": 39272,
   "type": "line",
   "text": "Plane one's compass face, three columns of 21 bytes, 32 bytes apart ($9968, $9988, $99A8), over which the compass needle is ORed into the panel ($1AF0)."
  },
  {
   "address": 39368,
   "type": "line",
   "text": "Plane one's seven compass pictures (pointers at $7189: $99C8, $99F8, $9A20, $9A50, $9A81, $9AB4, $9AE8), each read backwards from its last byte as 63 bytes for the index tables at $9700 ($1AE6)."
  },
  {
   "address": 39719,
   "type": "line",
   "text": "One byte that nothing reads."
  },
  {
   "address": 39720,
   "type": "line",
   "text": "Plane one's radar scope, 94 bytes, copied to $03A0 before the dots are plotted ($1961)."
  },
  {
   "address": 39814,
   "type": "line",
   "text": "Two bytes, $55 and $AA, that nothing reads."
  },
  {
   "address": 39816,
   "type": "line",
   "text": "The spy ship's one-cell pictures: eight byte sets of eight bytes (pointers at $7820), turned into a picture through the one-cell byte orders ($15C9)."
  },
  {
   "address": 39880,
   "type": "line",
   "text": "The across-the-map share of the speed for each sixteenth of a half turn of the heading: 0 rising to $FF and back ($3E8D)."
  },
  {
   "address": 39896,
   "type": "line",
   "text": "The down-the-map share, the same curve from $FF down to 0 and back ($3E92)."
  },
  {
   "address": 39912,
   "type": "line",
   "text": "The scale from a bearing off the nose to columns of the view: 32 bytes rising from 0 to $39, by ones and twos at first and by threes at the end ($3954)."
  },
  {
   "address": 39944,
   "type": "line",
   "text": "The roll rate's factor for each bank (0-15) with the stick one way ($6E positive, $2907)."
  },
  {
   "address": 39960,
   "type": "line",
   "text": "The same with the stick the other way ($2957)."
  },
  {
   "address": 39976,
   "type": "line",
   "text": "The missile sight's box, four pictures of three by three cells (72 bytes each: $9C28, $9C70, $9CB8, $9D00), one for each pair of signs of the enemy's fine position ($71E8, $23D5)."
  },
  {
   "address": 40264,
   "type": "line",
   "text": "The cannon tracers' masks, four frames of four cells (32 bytes each, offsets at $6EF6), ANDed with the background when the tracers are drawn ($1893)."
  },
  {
   "address": 40392,
   "type": "line",
   "text": "Plane two's bank indicator face, nine characters (72 bytes) in the panel's order, that the picture is ORed onto ($1A15)."
  },
  {
   "address": 40464,
   "type": "line",
   "text": "Plane two's compass face, nine characters in the panel's order ($1BC7)."
  },
  {
   "address": 40536,
   "type": "line",
   "text": "Sixteen bytes of $FD that nothing reads."
  },
  {
   "address": 40552,
   "type": "line",
   "text": "Plane one's second radar scope, 94 bytes, used instead of $9B28 when $0487 is set and the enemy is $0180 or more away ($1922 sets $BD)."
  },
  {
   "address": 40646,
   "type": "line",
   "text": "Two bytes, $55 and $AA, after plane one's second radar scope ($9E68-$9EC5): the last two bytes of its fourth 24-byte column, which ends 00 55 AA like the other three. The 94-byte copy at $1922 leaves them out, and nothing reads them."
  },
  {
   "address": 40648,
   "type": "line",
   "text": "Plane two's weapon selector marker, eight pixel rows, laid over the strip ($4C44)."
  },
  {
   "address": 40656,
   "type": "line",
   "text": "The empty strip the marker moves in, 32 pixel rows ($4C37)."
  },
  {
   "address": 40688,
   "type": "line",
   "text": "Sixteen bytes of $FD after the selector strip that nothing reads."
  },
  {
   "address": 40704,
   "type": "line",
   "text": "For each byte of an object's picture, the mask that keeps the background's pixels where the picture's pixel pair is %00 or %10 and clears it where it is %01 or %11; $16A7 ANDs the background with it, then sets the picture in with EOR $55 before and after ($172C). The last entry reads $24 where the pattern gives 0."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "Plane one's character set. The video chip shows it for plane one's instrument panel (rows 8-11), for plane one's view on alternate frames (the other buffer is the set at $B000), and for the top of plane one's hangar picture (rows 0-5). Characters 0-25 are the side panel's digits and letters, as in the set at $8800; a game's set-up copies the first 16 from $B000 ($0CA4). From character $1A ($A0D0) the set holds plane one's panel picture, each screen column four characters (32 bytes) in the order of the screen codes at $93D8, and the game draws its instruments into it."
  },
  {
   "address": 41176,
   "type": "line",
   "text": "Plane one's compass, three by three characters ($1B-$25: columns 36-38, rows 9-11), three columns of 21 bytes 32 apart, redrawn over the face at $9968 ($1AF3); then the dial frames and the first digit columns."
  },
  {
   "address": 41312,
   "type": "line",
   "text": "Columns 30-34 of plane one's panel: the altitude, speed and stock digits ($17D1) and, at rows 10-11 of columns 31-34, the power and fuel bars ($3488)."
  },
  {
   "address": 41456,
   "type": "line",
   "text": "Plane one's bank indicator, three by three characters ($3E-$48: columns 26-28, rows 9-11), 63 bytes put through an index table from page $97 ($19D5)."
  },
  {
   "address": 41544,
   "type": "line",
   "text": "Plane one's radar scope, four by three characters ($49-$54: columns 21-24, rows 9-11), 93 bytes copied each pass from the scope drawn at $03A0 ($0E07); then the dials' frames."
  },
  {
   "address": 41689,
   "type": "line",
   "text": "Plane one's pitch ladder, 20 pixel rows down column 25 (characters $5B-$5D), redrawn by $1A7F."
  },
  {
   "address": 41733,
   "type": "line",
   "text": "Plane one's message panel, columns 11-18 of rows 8-10, 32 bytes a column. The two lines of seven letters go in columns 12-18 (from $A325 and $A32B, pixel rows 5-9 and 11-15, $2ED5), and the selected weapon's name, eight letters from $A312 (pixel rows 18-22, $5F89), starts in this column; $2EB3 clears 13 bytes of every column. This is column 11, which holds only the weapon name's first letter."
  },
  {
   "address": 41765,
   "type": "line",
   "text": "The message panel's column 12 (cleared by $2EB6)."
  },
  {
   "address": 41797,
   "type": "line",
   "text": "The message panel's column 13 (cleared by $2EB9)."
  },
  {
   "address": 41829,
   "type": "line",
   "text": "The message panel's column 14 (cleared by $2EBC)."
  },
  {
   "address": 41861,
   "type": "line",
   "text": "The message panel's column 15 (cleared by $2EBF)."
  },
  {
   "address": 41893,
   "type": "line",
   "text": "The message panel's column 16 (cleared by $2EC2)."
  },
  {
   "address": 41925,
   "type": "line",
   "text": "The message panel's column 17 (cleared by $2EC5)."
  },
  {
   "address": 41957,
   "type": "line",
   "text": "The message panel's column 18 (cleared by $2EC8). From $A400, characters $80-$CC: the top of plane one's hangar picture, its jet with the sky behind (rows 0-5; the deck below it is in the set at $B000)."
  },
  {
   "address": 42600,
   "type": "line",
   "text": "Characters $CD-$EC: the last 32 of plane one's hangar picture, the same bytes as $F637. In flight the view draws over them (shot marks from $CD, the enemy and targets, sky $DC and ground $DD, the horizon's edges $DE-$E4), so entering the hangar copies them back from $F637 ($4730)."
  },
  {
   "address": 42624,
   "type": "line",
   "text": "While the title runs, $A680-$A77F holds sprites $9A-$9D, the multicolour layer of the CASCADE logo (sprites 4-7, pointers at $74E1), copied from $D000 at each start of the title ($0A95). At the hand-over and in the game these bytes are characters $D0-$EF of the set."
  },
  {
   "address": 42880,
   "type": "line",
   "text": "Characters $F0-$F7, not seen on any recorded screen."
  },
  {
   "address": 42944,
   "type": "line",
   "text": "Sprite $9F: a small A, one of the two orange emblems laid over plane one's jet in the hangar (the other is $BF at $AFC0; $4970). As characters, $F8-$FF of the set."
  },
  {
   "address": 43008,
   "type": "line",
   "text": "Plane two's other character set: the video chip shows it for plane two's view on alternate frames (the other buffer is $B800) and for the top of plane two's hangar picture (rows 13-17). Characters 0-25 are the side panel's digits and letters, as in the set at $8800 (the digits 0-9, a blank, then A C D E W I L M N P R S T U V), then six characters ($1A-$1F) that no recorded screen shows."
  },
  {
   "address": 43264,
   "type": "line",
   "text": "Twelve sprite shapes, numbers $A4-$AF (64 bytes each, to $ABFF), in the place of this set's characters $20-$7F, which no screen shows: $A4-$A7 the top of plane two's cockpit frame ($6EC2), $A8-$A9 its two canopy posts ($4B73), $AA-$AD its lower frame ($6EC8), and $AE-$AF the ACE 2 logo."
  },
  {
   "address": 44032,
   "type": "line",
   "text": "Characters $80-$CC: the top of plane two's hangar picture, its jet on the runway with the sky behind (rows 13-17; the runway itself is in the set at $B800). From character $CD ($AE68) the view draws in flight: its objects from $D1, sky $DC, ground $DD and the horizon's edges $DE-$E4."
  },
  {
   "address": 44944,
   "type": "line",
   "text": "Characters $F2-$F7, not seen on any recorded screen."
  },
  {
   "address": 44992,
   "type": "line",
   "text": "Sprite $BF: the second orange A over plane one's jet in the hangar ($4970); as characters, $F8-$FF of the set."
  },
  {
   "address": 45056,
   "type": "line",
   "text": "Plane one's second character set, and the map's: the video chip shows it for plane one's view on the frames when the set at $A000 is being drawn, for the map (both pilots, $13EA), and for the deck under plane one's jet in the hangar (rows 6-8). Characters 0-25 are the side panel's digits and letters (as in the set at $8800), which a game's set-up copies from here into $8800 and $A000 ($0C9E)."
  },
  {
   "address": 45264,
   "type": "line",
   "text": "Characters $1A-$50: the map's land and sea, the 55 shapes the map picture at $9800 uses; $14F7 reads their pixels to tell sea (%01) from land (%11) under a plane ($1513)."
  },
  {
   "address": 45704,
   "type": "line",
   "text": "Characters $51-$6F, not seen on any recorded screen."
  },
  {
   "address": 45952,
   "type": "line",
   "text": "Characters $70-$7F: where the map draws its objects, ground targets 4 and 5 into $70 and $74 and the planes and missiles from $78 ($13EA)."
  },
  {
   "address": 46080,
   "type": "line",
   "text": "Characters $80-$BC: the deck under plane one's jet in the hangar (rows 6-8), then $BD-$CC, not seen on any recorded screen."
  },
  {
   "address": 46696,
   "type": "line",
   "text": "Characters $CD-$EF: plane one's view characters when this set is the one being drawn (shot marks, the enemy, sky $DC, ground $DD, the horizon's edges $DE-$E4)."
  },
  {
   "address": 46720,
   "type": "line",
   "text": "While the title runs, $B680-$B77F holds sprites $DA-$DD, the outline layer of the CASCADE logo (sprites 0-3, pointers at $74E1), copied from $D100 at each start of the title ($0A95); in the game these bytes are view characters $D0-$EF."
  },
  {
   "address": 46976,
   "type": "line",
   "text": "Characters $F0-$FF ($B780-$B7FF), not seen on any recorded screen."
  },
  {
   "address": 47104,
   "type": "line",
   "text": "The full font, and plane two's second view set. The video chip shows it for the options, colour code and arming screens, the hangar's TAKE OFF and ARM AIRCRAFT lines, the runway under plane two's jet (rows 18-21), and plane two's view on the frames when the set at $A800 is being drawn. Characters 0-25 are the side panel's digits and letters (as in the set at $8800); $1A-$59 are the printable characters $20-$5F less 6, as $56A3 prints them (space, punctuation, the cursor arrow at $1E-$1F, digits, then A-Z from $3B); $55-$5C the frame round the options and colour code screens."
  },
  {
   "address": 47848,
   "type": "line",
   "text": "Characters $5D-$6F: more frame and box pieces."
  },
  {
   "address": 48000,
   "type": "line",
   "text": "Sprite $EE, plane one's explosion: sprite 6, its picture copied in from the explosion pictures at $F026 by the explosion counter ($4DAC) and placed over plane one's view ($4C5C, $4864). As characters, $70-$77 of the set."
  },
  {
   "address": 48064,
   "type": "line",
   "text": "Sprite $EF, plane two's explosion: sprite 7, filled the same way ($4DB2) and placed over plane two's view ($4B18)."
  },
  {
   "address": 48128,
   "type": "line",
   "text": "Characters $80-$CC: the runway under plane two's jet in the hangar (rows 18-21)."
  },
  {
   "address": 48744,
   "type": "line",
   "text": "Characters $CD-$D9, the rest of the runway, the same bytes as $F737: in flight plane two's view draws over them (shot marks, objects from $D1, sky $DC, ground $DD, the horizon's edges), so entering the hangar copies them back ($47FA). Then $DA-$FF, plane two's view characters when this set is being drawn."
  },
  {
   "address": 49088,
   "type": "line",
   "text": "Sprite $FF in the place of characters $F8-$FF: no recorded game screen shows it."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Never read or written: 2,560 bytes the loader brings in from track 17 that no instruction names and no recorded run touches. They are an older build's copy of the block at $6730-$712F, made when that block sat $4730 lower, at $2000-$29FF: every text pointer here is $4730 less than its twin, and the texts are in plain ASCII, before the letter cipher was put over them (COLOUR CODE SECURITY SYSTEM, DUSTY BUG, MISSION COMPLETED - PRESS FIRE). Deciphered, the game's own texts match these letter for letter; the one other byte that differs in the text is the 6 of the security grid's row names, 0 here ($67A8)."
  },
  {
   "address": 50176,
   "type": "line",
   "text": "The rest of the old copy: the title credits from PROGRAMMED AND, the side panel's texts, the cockpit messages (TRAITOR, OK FOR LANDING, CEILING 60000), then the flight and horizon tables, byte for byte the same as $6B30-$712F once the letters are deciphered."
  },
  {
   "address": 51200,
   "type": "line",
   "text": "The old copy's last 512 bytes, the tables from $6F30 to $712F, identical to the game's."
  },
  {
   "address": 51712,
   "type": "line",
   "text": "The loader, finished before the hand-over and never called again: $CA00-$CAFF is the sector the boot program reads first, through the KERNAL with an EOR, and starts at $CA94 (orientation.md); $CB00-$CBFF is track 18 sector 6, read raw: more loader code, ending in the JMP ($7FFE) at $CB6B that hands over to the game, and from $CB87 four directory entries (CXXZ, DZ, OPTIONS and HS, file type $82) like those of the disk's real directory."
  },
  {
   "address": 52736,
   "type": "line",
   "text": "Track 18 sector 2 as the loader read it, raw: the saved options. Start-up compares its first eight bytes with OPTIONS and the crash byte at $0903-$090A and, when they match, copies all 17 into the options record ($09CF). On this disk they are crash detection on, one player, 3 planes each, skill level 1, the full-scale scenario and 3 hits to kill. The rest of the sector repeats the high-score sector from its 18th byte, because SAVE OPTIONS lays the 17 bytes over the buffer at $CF00 and writes all 256 ($1EA5)."
  },
  {
   "address": 52992,
   "type": "line",
   "text": "Track 18 sector 3 as the loader read it, raw: the saved high-score table, which start-up copies over the one at $0920 when its first ten bytes read HIGHSCORES ($09E5). On this disk: SUPERNATER 4000, NIETE 870, NO NAME 640, CASCADE 500 and a fifth name of C, C and Z with 450 (scores stored in tens). The buffer is also where both saves build the sector they write ($1EA5, $1F3A, $1EC4)."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "Under the I/O chips, so only reachable with every ROM and the I/O banked out: sprites $9A-$9D, the multicolour layer of the CASCADE logo, copied to $A680 at each start of the title ($0A95)."
  },
  {
   "address": 53504,
   "type": "line",
   "text": "Sprites $DA-$DD, the hires outline layer of the CASCADE logo, copied to $B680 the same way ($0A9B)."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "The title's character set, kept under the I/O while a game runs and swapped with $8800-$8FFF at each start of the title or a game ($53D4): the big two-row letters of the title pages and the GREATEST ACES table, A at codes $00-$03 and each next letter four codes on (I and J two, W six; top code from $66EB, widths from $6715), the digits 1-9 from $66 and 0 at $8A-$8D."
  },
  {
   "address": 55306,
   "type": "line",
   "text": "Colour RAM at row 0, column 10 to the code that names it ($30FD, in colour_view_one); in the RAM beneath, part of the title font (code $01)."
  },
  {
   "address": 55346,
   "type": "line",
   "text": "Colour RAM at row 1, column 10 to the code that names it ($3100, in colour_view_one); in the RAM beneath, part of the title font (code $06)."
  },
  {
   "address": 55386,
   "type": "line",
   "text": "Colour RAM at row 2, column 10 to the code that names it ($3103, in colour_view_one); in the RAM beneath, part of the title font (code $0B)."
  },
  {
   "address": 55389,
   "type": "line",
   "text": "Colour RAM at row 2, column 13 to the code that names it ($390F, in draw_title_logo); in the RAM beneath, part of the title font (code $0B)."
  },
  {
   "address": 55426,
   "type": "line",
   "text": "Colour RAM at row 3, column 10 to the code that names it ($3106, in colour_view_one); in the RAM beneath, part of the title font (code $10)."
  },
  {
   "address": 55429,
   "type": "line",
   "text": "Colour RAM at row 3, column 13 to the code that names it ($3912, in draw_title_logo); in the RAM beneath, part of the title font (code $10)."
  },
  {
   "address": 55466,
   "type": "line",
   "text": "Colour RAM at row 4, column 10 to the code that names it ($3109, in colour_view_one); in the RAM beneath, part of the title font (code $15)."
  },
  {
   "address": 55469,
   "type": "line",
   "text": "Colour RAM at row 4, column 13 to the code that names it ($3915, in draw_title_logo); in the RAM beneath, part of the title font (code $15)."
  },
  {
   "address": 55488,
   "type": "line",
   "text": "Colour RAM at row 4, column 32 to the code that names it ($474E, in redraw_half_one); in the RAM beneath, part of the title font (code $18)."
  },
  {
   "address": 55489,
   "type": "line",
   "text": "Colour RAM at row 4, column 33 to the code that names it ($4751, in redraw_half_one); in the RAM beneath, part of the title font (code $18)."
  },
  {
   "address": 55490,
   "type": "line",
   "text": "Colour RAM at row 4, column 34 to the code that names it ($4754, in redraw_half_one); in the RAM beneath, part of the title font (code $18)."
  },
  {
   "address": 55491,
   "type": "line",
   "text": "Colour RAM at row 4, column 35 to the code that names it ($4757, in redraw_half_one); in the RAM beneath, part of the title font (code $18)."
  },
  {
   "address": 55506,
   "type": "line",
   "text": "Colour RAM at row 5, column 10 to the code that names it ($310C, in colour_view_one); in the RAM beneath, part of the title font (code $1A)."
  },
  {
   "address": 55509,
   "type": "line",
   "text": "Colour RAM at row 5, column 13 to the code that names it ($3918, in draw_title_logo); in the RAM beneath, part of the title font (code $1A)."
  },
  {
   "address": 55546,
   "type": "line",
   "text": "Colour RAM at row 6, column 10 to the code that names it ($310F, in colour_view_one); in the RAM beneath, part of the title font (code $1F)."
  },
  {
   "address": 55549,
   "type": "line",
   "text": "Colour RAM at row 6, column 13 to the code that names it ($391B, in draw_title_logo); in the RAM beneath, part of the title font (code $1F)."
  },
  {
   "address": 55568,
   "type": "line",
   "text": "Colour RAM at row 6, column 32 to the code that names it ($475A, in redraw_half_one); in the RAM beneath, part of the title font (code $22)."
  },
  {
   "address": 55569,
   "type": "line",
   "text": "Colour RAM at row 6, column 33 to the code that names it ($475D, in redraw_half_one); in the RAM beneath, part of the title font (code $22)."
  },
  {
   "address": 55570,
   "type": "line",
   "text": "Colour RAM at row 6, column 34 to the code that names it ($4760, in redraw_half_one); in the RAM beneath, part of the title font (code $22)."
  },
  {
   "address": 55571,
   "type": "line",
   "text": "Colour RAM at row 6, column 35 to the code that names it ($4763, in redraw_half_one); in the RAM beneath, part of the title font (code $22)."
  },
  {
   "address": 55572,
   "type": "line",
   "text": "Colour RAM at row 6, column 36 to the code that names it ($4766, in redraw_half_one); in the RAM beneath, part of the title font (code $22)."
  },
  {
   "address": 55586,
   "type": "line",
   "text": "Colour RAM at row 7, column 10 to the code that names it ($3112, in colour_view_one); in the RAM beneath, part of the title font (code $24)."
  },
  {
   "address": 55616,
   "type": "line",
   "text": "Colour RAM at row 8, column 0 to the code that names it ($46FE, in redraw_half_one); in the RAM beneath, part of the title font (code $28)."
  },
  {
   "address": 55626,
   "type": "line",
   "text": "Colour RAM at row 8, column 10 to the code that names it ($311B, in colour_view_one); in the RAM beneath, part of the title font (code $29)."
  },
  {
   "address": 55648,
   "type": "line",
   "text": "Colour RAM at row 8, column 32 to the code that names it ($4769, in redraw_half_one); in the RAM beneath, part of the title font (code $2C)."
  },
  {
   "address": 55649,
   "type": "line",
   "text": "Colour RAM at row 8, column 33 to the code that names it ($476C, in redraw_half_one); in the RAM beneath, part of the title font (code $2C)."
  },
  {
   "address": 55650,
   "type": "line",
   "text": "Colour RAM at row 8, column 34 to the code that names it ($476F, in redraw_half_one); in the RAM beneath, part of the title font (code $2C)."
  },
  {
   "address": 55651,
   "type": "line",
   "text": "Colour RAM at row 8, column 35 to the code that names it ($4772, in redraw_half_one); in the RAM beneath, part of the title font (code $2C)."
  },
  {
   "address": 55652,
   "type": "line",
   "text": "Colour RAM at row 8, column 36 to the code that names it ($4775, in redraw_half_one); in the RAM beneath, part of the title font (code $2C)."
  },
  {
   "address": 55666,
   "type": "line",
   "text": "Colour RAM at row 9, column 10 to the code that names it ($311E, in colour_view_one); in the RAM beneath, part of the title font (code $2E)."
  },
  {
   "address": 55706,
   "type": "line",
   "text": "Colour RAM at row 10, column 10 to the code that names it ($3121, $473A, in colour_view_one, redraw_half_one); in the RAM beneath, part of the title font (code $33)."
  },
  {
   "address": 55730,
   "type": "line",
   "text": "Colour RAM at row 10, column 34 to the code that names it ($4706, in redraw_half_one); in the RAM beneath, part of the title font (code $36)."
  },
  {
   "address": 55746,
   "type": "line",
   "text": "Colour RAM at row 11, column 10 to the code that names it ($3124, $473D, in colour_view_one, redraw_half_one); in the RAM beneath, part of the title font (code $38)."
  },
  {
   "address": 55767,
   "type": "line",
   "text": "Colour RAM at row 11, column 31 to the code that names it ($4709, in redraw_half_one); in the RAM beneath, part of the title font (code $3A)."
  },
  {
   "address": 55826,
   "type": "line",
   "text": "Colour RAM at row 13, column 10 to the code that names it ($312D, in colour_view_two); in the RAM beneath, part of the title font (code $42)."
  },
  {
   "address": 55866,
   "type": "line",
   "text": "Colour RAM at row 14, column 10 to the code that names it ($3130, in colour_view_two); in the RAM beneath, part of the title font (code $47)."
  },
  {
   "address": 55906,
   "type": "line",
   "text": "Colour RAM at row 15, column 10 to the code that names it ($3133, in colour_view_two); in the RAM beneath, part of the title font (code $4C)."
  },
  {
   "address": 55946,
   "type": "line",
   "text": "Colour RAM at row 16, column 10 to the code that names it ($3136, in colour_view_two); in the RAM beneath, part of the title font (code $51)."
  },
  {
   "address": 55986,
   "type": "line",
   "text": "Colour RAM at row 17, column 10 to the code that names it ($3139, in colour_view_two); in the RAM beneath, part of the title font (code $56)."
  },
  {
   "address": 56008,
   "type": "line",
   "text": "Colour RAM at row 17, column 32 to the code that names it ($4818, in redraw_half_two); in the RAM beneath, part of the title font (code $59)."
  },
  {
   "address": 56009,
   "type": "line",
   "text": "Colour RAM at row 17, column 33 to the code that names it ($481B, in redraw_half_two); in the RAM beneath, part of the title font (code $59)."
  },
  {
   "address": 56010,
   "type": "line",
   "text": "Colour RAM at row 17, column 34 to the code that names it ($481E, in redraw_half_two); in the RAM beneath, part of the title font (code $59)."
  },
  {
   "address": 56011,
   "type": "line",
   "text": "Colour RAM at row 17, column 35 to the code that names it ($4821, in redraw_half_two); in the RAM beneath, part of the title font (code $59)."
  },
  {
   "address": 56026,
   "type": "line",
   "text": "Colour RAM at row 18, column 10 to the code that names it ($313C, in colour_view_two); in the RAM beneath, part of the title font (code $5B)."
  },
  {
   "address": 56066,
   "type": "line",
   "text": "Colour RAM at row 19, column 10 to the code that names it ($313F, in colour_view_two); in the RAM beneath, part of the title font (code $60)."
  },
  {
   "address": 56088,
   "type": "line",
   "text": "Colour RAM at row 19, column 32 to the code that names it ($4824, in redraw_half_two); in the RAM beneath, part of the title font (code $63)."
  },
  {
   "address": 56089,
   "type": "line",
   "text": "Colour RAM at row 19, column 33 to the code that names it ($4827, in redraw_half_two); in the RAM beneath, part of the title font (code $63)."
  },
  {
   "address": 56090,
   "type": "line",
   "text": "Colour RAM at row 19, column 34 to the code that names it ($482A, in redraw_half_two); in the RAM beneath, part of the title font (code $63)."
  },
  {
   "address": 56091,
   "type": "line",
   "text": "Colour RAM at row 19, column 35 to the code that names it ($482D, in redraw_half_two); in the RAM beneath, part of the title font (code $63)."
  },
  {
   "address": 56092,
   "type": "line",
   "text": "Colour RAM at row 19, column 36 to the code that names it ($4830, in redraw_half_two); in the RAM beneath, part of the title font (code $63)."
  },
  {
   "address": 56106,
   "type": "line",
   "text": "Colour RAM at row 20, column 10 to the code that names it ($3142, $47AD, in colour_view_two, redraw_half_two); in the RAM beneath, part of the title font (code $65)."
  },
  {
   "address": 56116,
   "type": "line",
   "text": "Colour RAM at row 20, column 20 to the code that names it ($47B7, in redraw_half_two); in the RAM beneath, part of the title font (code $66)."
  },
  {
   "address": 56134,
   "type": "line",
   "text": "Colour RAM at row 20, column 38 to the code that names it ($47F2, in redraw_half_two); in the RAM beneath, part of the title font (code $68)."
  },
  {
   "address": 56146,
   "type": "line",
   "text": "Colour RAM at row 21, column 10 to the code that names it ($314B, in colour_panel_two); in the RAM beneath, part of the title font (code $6A)."
  },
  {
   "address": 56156,
   "type": "line",
   "text": "Colour RAM at row 21, column 20 to the code that names it ($47BA, in redraw_half_two); in the RAM beneath, part of the title font (code $6B)."
  },
  {
   "address": 56160,
   "type": "line",
   "text": "Colour RAM at row 21, column 24 to the code that names it ($47CB, in redraw_half_two); in the RAM beneath, part of the title font (code $6C)."
  },
  {
   "address": 56168,
   "type": "line",
   "text": "Colour RAM at row 21, column 32 to the code that names it ($4833, in redraw_half_two); in the RAM beneath, part of the title font (code $6D)."
  },
  {
   "address": 56169,
   "type": "line",
   "text": "Colour RAM at row 21, column 33 to the code that names it ($4836, in redraw_half_two); in the RAM beneath, part of the title font (code $6D)."
  },
  {
   "address": 56170,
   "type": "line",
   "text": "Colour RAM at row 21, column 34 to the code that names it ($4839, in redraw_half_two); in the RAM beneath, part of the title font (code $6D)."
  },
  {
   "address": 56171,
   "type": "line",
   "text": "Colour RAM at row 21, column 35 to the code that names it ($483C, in redraw_half_two); in the RAM beneath, part of the title font (code $6D)."
  },
  {
   "address": 56172,
   "type": "line",
   "text": "Colour RAM at row 21, column 36 to the code that names it ($483F, in redraw_half_two); in the RAM beneath, part of the title font (code $6D)."
  },
  {
   "address": 56186,
   "type": "line",
   "text": "Colour RAM at row 22, column 10 to the code that names it ($314E, in colour_panel_two); in the RAM beneath, part of the title font (code $6F)."
  },
  {
   "address": 56196,
   "type": "line",
   "text": "Colour RAM at row 22, column 20 to the code that names it ($47BD, in redraw_half_two); in the RAM beneath, part of the title font (code $70)."
  },
  {
   "address": 56197,
   "type": "line",
   "text": "Colour RAM at row 22, column 21 to the code that names it ($47CE, in redraw_half_two); in the RAM beneath, part of the title font (code $70)."
  },
  {
   "address": 56226,
   "type": "line",
   "text": "Colour RAM at row 23, column 10 to the code that names it ($3151, $4804, in colour_panel_two, redraw_half_two); in the RAM beneath, part of the title font (code $74)."
  },
  {
   "address": 56236,
   "type": "line",
   "text": "Colour RAM at row 23, column 20 to the code that names it ($47C0, in redraw_half_two); in the RAM beneath, part of the title font (code $75)."
  },
  {
   "address": 56266,
   "type": "line",
   "text": "Colour RAM at row 24, column 10 to the code that names it ($3154, $4807, in colour_panel_two, redraw_half_two); in the RAM beneath, part of the title font (code $79)."
  },
  {
   "address": 56276,
   "type": "line",
   "text": "Colour RAM at row 24, column 20 to the code that names it ($47C3, in redraw_half_two); in the RAM beneath, part of the title font (code $7A)."
  },
  {
   "address": 56432,
   "type": "line",
   "text": "Codes $8E-$BF: stray bits, then from $DD80 bytes of $FD (zero on the disk); no title page uses these codes."
  },
  {
   "address": 56560,
   "type": "line",
   "text": "Not an address the game means: with X = $1D the code at $6074 reaches CIA 2's interrupt control register ($DD0D) through it, and with X = $14 its timer A ($DD04). In the RAM beneath, the title font's unused codes."
  },
  {
   "address": 56561,
   "type": "line",
   "text": "The same trick one register on: CIA 2's control register A ($DD0E) with X = $1D, and timer A's high byte ($DD05) with X = $14 ($607A, $608B)."
  },
  {
   "address": 56569,
   "type": "line",
   "text": "With X = $14, CIA 2's interrupt control register ($DD0D, $6090)."
  },
  {
   "address": 56570,
   "type": "line",
   "text": "With X = $14, CIA 2's control register A ($DD0E, $6095), which starts the timer whose NMI repairs the game ($6066)."
  },
  {
   "address": 56832,
   "type": "line",
   "text": "Codes $C0-$FB: the big ACE 2 logo at the top of the title pages, five rows of twelve cells ($C0-$EC for ACE, $ED-$FB for 2), then three unused codes of $FD and code $FF, blank, the title pages' background."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "Each voice's vibrato offset, in steps of the vibrato: it runs from 0 up to the depth and back down, one a call ($E218-$E238), and is added to the lowered note frequency once the note's first four frames have passed."
  },
  {
   "address": 57347,
   "type": "line",
   "text": "Each voice's vibrato depth, bits 3-6 of the instrument's vibrato byte, written at every call while the instrument has vibrato ($E20F). The frequency is lowered by half of it in steps, then raised by the offset at $E000."
  },
  {
   "address": 57350,
   "type": "line",
   "text": "Pattern 7, for voice one (7 times in its track): 96 steps. Instrument 8: A5 4, A5 4, G5 8, F#5 8, G5 4, B5 12, A5 8, G5 8, F#5 8, G5 4, F#5 4, E5 24. With no end byte it runs on into pattern 12 at $E01F: its own 96 steps and then pattern 12, 128 in all."
  },
  {
   "address": 57375,
   "type": "line",
   "text": "Pattern 12, for voice one (4 times in its track): 32 steps. Instrument 7: D4 4, E4 8, G3 4, A3 4, A3 4, B3 4, B3 4. Its bytes are also the end of pattern 7."
  },
  {
   "address": 57391,
   "type": "line",
   "text": "Each voice's vibrato direction: bit 7 clear while the offset at $E000 rises, set while it falls."
  },
  {
   "address": 57394,
   "type": "line",
   "text": "Bytes nothing jumps to, which read as the start of another version of the driver's entry: JMP $E47F, JMP $E1DE (into the middle of an instruction), BIT $E576, then branches to $E070 and $E083."
  },
  {
   "address": 57407,
   "type": "line",
   "text": "Rob Hubbard's music driver, called once a tick of the music clock from the title interrupt ($43DE) and, while the music is on, from the play interrupt ($4447). Volume 15 with the low-pass filter ($D418 = $1F) every call. The mode byte $E574 decides what it does: $40 restarts the tune (each voice's track and pattern positions, note length, waveform and release cleared, instrument 10, the silent one, selected), after which the byte is left at $0A and the tune plays; 0 to $3F plays; $C0 silences all three voices and leaves $80; $80 does nothing. Three voices (X from $E623 = 2 down to 0, SID register offsets 0, 7 and 14 at $E54C)."
  },
  {
   "address": 57483,
   "type": "line",
   "text": "The tempo: $E572 counts 3 to 0 and $E570 counts down from the tempo $E571 (1). A voice reads its next note step only when $E572 is not 0 and $E570 equals $E571, which happens on three calls in every eight, spaced 3, 2 and 3 calls apart; on the other calls only the running effects are updated."
  },
  {
   "address": 57510,
   "type": "line",
   "text": "For each voice: on a note step, count down the note's length ($E556); while it lasts, only check whether its release is due ($E1D7). When it runs out, read the next note: the voice's track list (pointers at $E67C/$E67F: $E6CE, $E712 and $E7CB) gives the pattern number at the track position $E550."
  },
  {
   "address": 57551,
   "type": "line",
   "text": "A track byte of $80 or more ends the list: the track, the pattern position and the length start again from 0, so the tune loops."
  },
  {
   "address": 57572,
   "type": "line",
   "text": "Point $FE/$FF at the pattern (38 patterns, pointers at $E682/$E6A8), clear the slide, the frames since the note ($E587) and the drum-table position, set the filter sweep's start ($30), open the gate mask ($E953 = $FF), and read the note's first byte: bits 0-4 its length in steps less one, bit 5 hold the gate to the end, bit 6 a rest, bit 7 another byte follows. That byte, when it is $80 or more, starts a slide ($EB48) and the byte after it is the slide's speed ($E578); below $80 it selects the instrument ($EA46)."
  },
  {
   "address": 57659,
   "type": "line",
   "text": "The note byte: bits 0-6 the note (0 to 95, kept in $E90F), whose frequency comes from the table at $E48A; bit 7 set leaves the instrument's envelope and pulse width running from the note before, which slurs one note into the next."
  },
  {
   "address": 57687,
   "type": "line",
   "text": "A rest: gate off, attack, decay, sustain and release all 0, and the waveform byte 8 (the test bit), which silences the voice at once."
  },
  {
   "address": 57706,
   "type": "line",
   "text": "Start the instrument (8 bytes from $E5CB and 8 from $E624, both at the instrument number \u00d7 8): unless the note slurs, the pulse width, attack/decay and sustain/release go straight to the chip, the pulse sweep's direction is reset and the instrument's frame count ($E627) is loaded into $E584. Its waveform ($E5CD) becomes the voice's waveform. Then step past the note; a pattern ending in $FF moves the voice on to the next pattern of its track."
  },
  {
   "address": 57815,
   "type": "line",
   "text": "Still inside a note: on its last step, unless bit 5 held it, close the gate ($E953 = $FE) so the release begins."
  },
  {
   "address": 57835,
   "type": "line",
   "text": "The effects, every call. Vibrato when the instrument's byte 5 is not 0: bits 3-6 its depth, bits 0-2 a shift. The offset $E000 runs up and down between 0 and the depth, one a call; once the note's first four frames have passed (and unless a slide is running) the frequency is the note's, less half the depth in steps, plus the offset in steps, where a step is the gap from the note below shifted right by the shift."
  },
  {
   "address": 58029,
   "type": "line",
   "text": "The pulse-width sweep when the instrument's byte 6 is not 0: that speed is added to the 12-bit pulse width until its top four bits reach the limit in the high half of the second table's byte 5, then taken away until they reach the limit in its low half; the two halves are written into the comparisons at $E2DD and $E2F7."
  },
  {
   "address": 58077,
   "type": "line",
   "text": "The upper limit of the pulse sweep, written by $E2C4 from the high half of the instrument's second-table byte 5 ($0F, or $0C for instrument 3)."
  },
  {
   "address": 58103,
   "type": "line",
   "text": "The lower limit of the pulse sweep, written by $E2BA from the low half of the same byte (0 for instruments 0, 3 and 5; 8, 7 and $0D for instruments 7, 8 and 9)."
  },
  {
   "address": 58126,
   "type": "line",
   "text": "The slide: a slide byte from $80 to $BE raises the frequency each call by its low six bits \u00d7 256 plus the speed $E578; from $BF to $FF it lowers it the same way. The high part goes into the operands at $E32A and $E344."
  },
  {
   "address": 58154,
   "type": "line",
   "text": "The high byte of the downward slide's step, written by $E319."
  },
  {
   "address": 58180,
   "type": "line",
   "text": "The high byte of the upward slide's step, written by $E333. Then the drum table, when the instrument's effect byte has bit 7 and the note is no rest: from the pointer in the second table's bytes 0-1 and the voice's position $EBC7, an entry of a byte of $80 or more (but $85) and a frequency high byte goes straight to the chip; a byte below $80 is the waveform, and the two bytes after it are taken from the frequency; $85 holds the last sound. Instruments 1, 2, 4 and 6 are drums."
  },
  {
   "address": 58280,
   "type": "line",
   "text": "Effect bit 1: the waveform alternates each frame between the instrument's and the second table's byte 2 (no instrument here sets it). Effect bit 2: for the instrument's frame count, the second table's byte 1 is the waveform (instrument 3 starts with a frame of noise, instruments 7, 8 and 9 with a few of synchronised pulse), then the instrument's own; it skips the arpeggio."
  },
  {
   "address": 58340,
   "type": "line",
   "text": "Bytes no path reaches: TAY, LDA $E48A,Y, STA $E575,X, LDA $E48B,Y, STA $ECA2,X, LDY $E573, the correct end of the arpeggio below."
  },
  {
   "address": 58356,
   "type": "line",
   "text": "Effect bit 4, an arpeggio from the tables at $E594 and $E597. No instrument sets the bit, and the code is faulty: it stores twice the note number as the frequency's low byte and reads the high byte from $EBC7, where the correct instructions are the unused bytes just before it."
  },
  {
   "address": 58395,
   "type": "line",
   "text": "Effect bit 5, the filter sweep: the cutoff ($E58D, from $30 at each note) moves by the second table's byte 7 a call and goes to $D416, with byte 6 into $D417 (resonance, and the voices filtered). Only instrument 0 sets it: down 3 a call, resonance 15, voice 3 filtered."
  },
  {
   "address": 58421,
   "type": "line",
   "text": "Effect bit 6: while the frame count runs, the voice plays the note in the second table's byte 0 instead of its own (instrument 3, the only one with the bit, note $42), then the note's own frequency again. Instrument 3 also has bit 2, whose code runs first and counts down the same counter ($E584), so note $42 sounds for one frame, on the call after the note starts, not for the two the table gives."
  },
  {
   "address": 58462,
   "type": "line",
   "text": "Write the voice: the waveform ANDed with the gate mask to its control register, then the frequency. Count the frames since the note and go on to the next voice."
  },
  {
   "address": 58495,
   "type": "line",
   "text": "A counter of three calls ($E590) that nothing else reads."
  },
  {
   "address": 58504,
   "type": "line",
   "text": "Read as the frequency table's entry below note 0 by the vibrato ($E249), which works out the step from the note below; these two bytes are the end of the instruction before."
  },
  {
   "address": 58505,
   "type": "line",
   "text": "The driver's return."
  },
  {
   "address": 58506,
   "type": "line",
   "text": "The frequency of each of the 96 notes, C0 to B7, two bytes a note (low then high), read at twice the note number. Note 0 is $0116, about 16.4 Hz on a PAL machine; A4, note 57, is $1D46, 440 Hz."
  },
  {
   "address": 58507,
   "type": "line",
   "text": "The high bytes of the note frequencies, read at the same index as the low bytes. The last note, B7, is $FD2E at $E548, about 3806 Hz, between A#7 and B7: the true B7 needs more than the chip's 16 bits. The tune's notes run only from G1 to D6. The two zero bytes after it ($E54A) would be note 96, which no pattern plays."
  },
  {
   "address": 58700,
   "type": "line",
   "text": "The offset of each voice's registers in the sound chip: 0, 7 and 14."
  },
  {
   "address": 58703,
   "type": "line",
   "text": "The register offset of the voice being worked on, copied from $E54C at the start of its turn."
  },
  {
   "address": 58704,
   "type": "line",
   "text": "Each voice's position in its track list."
  },
  {
   "address": 58707,
   "type": "line",
   "text": "Each voice's position in its pattern."
  },
  {
   "address": 58710,
   "type": "line",
   "text": "Each voice's note steps still to run, from the note's first byte (bits 0-4), counted down on each step."
  },
  {
   "address": 58713,
   "type": "line",
   "text": "Each voice's waveform and gate bits, ANDed with the gate mask at $E953 when it goes to the control register."
  },
  {
   "address": 58716,
   "type": "line",
   "text": "The first byte of the note being read, kept while its bits are tested."
  },
  {
   "address": 58718,
   "type": "line",
   "text": "The voice's number, kept here while X indexes the instrument tables."
  },
  {
   "address": 58719,
   "type": "line",
   "text": "Two entries nothing calls: LDA #$40, STA $E574, RTS restarts the tune, and at $E565 LDA #$C0, STA $E574, RTS silences it. The game writes $E574 itself."
  },
  {
   "address": 58731,
   "type": "line",
   "text": "The vibrato's shift, bits 0-2 of the instrument's vibrato byte: the gap from the note below is halved this many times to make one step of the vibrato."
  },
  {
   "address": 58732,
   "type": "line",
   "text": "The pulse sweep's speed, the instrument's byte 6, copied at every call."
  },
  {
   "address": 58733,
   "type": "line",
   "text": "Each voice's pulse sweep direction: 0 while the width rises, more than 0 while it falls. Cleared at each note."
  },
  {
   "address": 58736,
   "type": "line",
   "text": "The tempo counter, reloaded from $E571 when it passes 0."
  },
  {
   "address": 58737,
   "type": "line",
   "text": "The tempo, 1. With $E572 it makes a note step on three calls in every eight."
  },
  {
   "address": 58738,
   "type": "line",
   "text": "Counts 3 down to 0, then starts again; no note step happens while it is 0."
  },
  {
   "address": 58739,
   "type": "line",
   "text": "The voice's instrument number times eight, the index into both instrument tables."
  },
  {
   "address": 58740,
   "type": "line",
   "text": "The driver's mode: $40 asks for a restart, 0 to $3F plays, $C0 asks for silence, $80 is silent. The game writes $40 for the title music and $C0 for the sound effects."
  },
  {
   "address": 58741,
   "type": "line",
   "text": "Each voice's frequency, low byte. The high byte is at $ECA2."
  },
  {
   "address": 58744,
   "type": "line",
   "text": "Each voice's slide speed, the byte after a slide byte in the pattern."
  },
  {
   "address": 58747,
   "type": "line",
   "text": "The instrument's effect byte (its byte 7), copied at every call: bit 1 alternate waveforms, bit 2 a different waveform for the first frames, bit 4 the arpeggio, bit 5 the filter sweep, bit 6 a different note for the first frames, bit 7 the drum table. The byte after it is never read."
  },
  {
   "address": 58749,
   "type": "line",
   "text": "The note byte just read: bits 0-6 the note, bit 7 a tie, which keeps the envelope and pulse width of the note before."
  },
  {
   "address": 58750,
   "type": "line",
   "text": "Each voice's pulse width, low byte."
  },
  {
   "address": 58753,
   "type": "line",
   "text": "Each voice's pulse width, high four bits."
  },
  {
   "address": 58756,
   "type": "line",
   "text": "Each voice's frames left for the instrument's first-frames effects (bits 2 and 6), loaded at each note from the second table's byte 3."
  },
  {
   "address": 58759,
   "type": "line",
   "text": "Each voice's frames since its note began; the vibrato waits until it reaches 4, and the alternate waveforms use its lowest bit. The three bytes after it are never read."
  },
  {
   "address": 58765,
   "type": "line",
   "text": "Each voice's filter cutoff for the filter sweep, set to $30 at each note."
  },
  {
   "address": 58768,
   "type": "line",
   "text": "A counter of three calls that nothing else reads. The three bytes after it are never read."
  },
  {
   "address": 58772,
   "type": "line",
   "text": "Where the arpeggio's note offsets would start, read at twice the second table's byte 0. No instrument sets the arpeggio's bit, so nothing reads here."
  },
  {
   "address": 58773,
   "type": "line",
   "text": "Written by the arpeggio and never read."
  },
  {
   "address": 58775,
   "type": "line",
   "text": "The arpeggio's other column, copied to $E595: these eleven bytes are never read, as no instrument sets the arpeggio's bit."
  },
  {
   "address": 58786,
   "type": "line",
   "text": "Instrument 4's drum table: noise ($81) with the frequency's high byte $30, then pulse ($41, then $40 with the gate off) with the frequency falling by $01C0, $0140, $0080, $0100, $0180, $0200 and $0280 a frame, then $85 to hold."
  },
  {
   "address": 58810,
   "type": "line",
   "text": "A drum table no instrument points at: noise at $2C and at $20, then triangle with the frequency falling by $0180, $0100 and $0255, a triangle release by $0200, then $85."
  },
  {
   "address": 58827,
   "type": "line",
   "text": "The instruments, eight bytes each for eleven: byte 0 the pulse width's low byte, 1 its high byte, 2 the waveform, 3 attack and decay, 4 sustain and release, 5 the vibrato (depth in bits 3-6, shift in bits 0-2), 6 the pulse sweep's speed, 7 the effect bits. Instrument 0 is the bass: pulse, with the filter sweep."
  },
  {
   "address": 58828,
   "type": "line",
   "text": "Byte 1 of each instrument: the pulse width's high byte."
  },
  {
   "address": 58829,
   "type": "line",
   "text": "Byte 2 of each instrument: the waveform with the gate bit, $41 pulse or $11 triangle; instrument 10 has 0 and is silent."
  },
  {
   "address": 58830,
   "type": "line",
   "text": "Byte 3 of each instrument: attack and decay."
  },
  {
   "address": 58831,
   "type": "line",
   "text": "Byte 4 of each instrument: sustain and release."
  },
  {
   "address": 58832,
   "type": "line",
   "text": "Byte 5 of each instrument: the vibrato, $22 for instruments 5 and 8, $1B for 7, $23 for 9, 0 for the others."
  },
  {
   "address": 58833,
   "type": "line",
   "text": "Byte 6 of each instrument: the pulse sweep's speed."
  },
  {
   "address": 58834,
   "type": "line",
   "text": "Byte 7 of the first instrument, its effect bits, and the rest of the table: instruments 1, 2, 4 and 6 are drums (triangle, effect bit 7), 3 is pulse with a noise start on note $42 (bits 2 and 6), 5 is pulse with vibrato, 7, 8 and 9 pulse with a few frames of synchronised pulse at the start (bit 2) and vibrato, and 10 is silent."
  },
  {
   "address": 58915,
   "type": "line",
   "text": "2, the highest voice number: each call counts the voices from 2 down to 0."
  },
  {
   "address": 58916,
   "type": "line",
   "text": "The instruments' second table, eight bytes each: bytes 0-1 the drum table's address for a drum, or byte 0 the starting note for effect bit 6; byte 1 the starting waveform for bit 2; byte 2 the alternate waveform for bit 1; byte 3 the frames for bits 2 and 6; byte 4 never read; byte 5 the pulse sweep's limits; byte 6 the filter's resonance and voices; byte 7 the filter sweep's step."
  },
  {
   "address": 58917,
   "type": "line",
   "text": "Byte 1 of each instrument's second table: the drum table's high byte, or the waveform for the instrument's first frames ($81 noise for instrument 3, $43 synchronised pulse for 7, 8 and 9)."
  },
  {
   "address": 58918,
   "type": "line",
   "text": "Byte 2 of each second-table entry: the waveform alternated with the instrument's own under effect bit 1, which no instrument sets."
  },
  {
   "address": 58919,
   "type": "line",
   "text": "Byte 3 of each second-table entry: how many frames the first-frames effects last (2 for instruments 3 and 7, 7 for 8, 3 for 9). Instrument 3 has both effects, and each counts the frames down, so its noise lasts one frame. The byte after it, byte 4, is never read."
  },
  {
   "address": 58921,
   "type": "line",
   "text": "Byte 5 of each second-table entry: its high four bits are the upper limit and its low four bits the lower limit for the pulse width's high four bits: the sweep turns down at the one and up at the other."
  },
  {
   "address": 58922,
   "type": "line",
   "text": "Byte 6 of each second-table entry, for the filter sweep: written to $D417, the resonance and the voices filtered ($F4 for instrument 0: resonance 15, voice three)."
  },
  {
   "address": 58923,
   "type": "line",
   "text": "Byte 7 of the first second-table entry, the filter sweep's step ($FD, down 3 a call), and the rest of the table for instruments 1 to 10."
  },
  {
   "address": 59004,
   "type": "line",
   "text": "The low bytes of the three voices' track lists: $E6CE, $E712 and $E7CB."
  },
  {
   "address": 59007,
   "type": "line",
   "text": "The high bytes of the three track lists."
  },
  {
   "address": 59010,
   "type": "line",
   "text": "The low bytes of the 38 patterns' addresses."
  },
  {
   "address": 59048,
   "type": "line",
   "text": "The high bytes of the 38 patterns' addresses. Patterns 7 and 12 sit at $E006, below the driver; the rest from $E842."
  },
  {
   "address": 59086,
   "type": "line",
   "text": "Voice one's track list: 67 pattern numbers, then $84, which sends it back to the start. Its patterns add up to 5880 steps, the same as the other two voices', about 5 minutes 14 seconds at 18.75 steps a second, so all three loop together."
  },
  {
   "address": 59154,
   "type": "line",
   "text": "Voice two's track list: 184 pattern numbers (patterns 2, 5, 28 and, at the end, 36), then $86."
  },
  {
   "address": 59339,
   "type": "line",
   "text": "Voice three's track list, the bass: 118 pattern numbers, then $89."
  },
  {
   "address": 59458,
   "type": "line",
   "text": "Pattern 0, for voice one (9 times in its track): 32 steps. Rest 32. Voice one is silent for its first four."
  },
  {
   "address": 59460,
   "type": "line",
   "text": "Pattern 1, for voice three (10 times in its track): 128 steps. Instrument 0: E2 32, E2 tied 8, D2 4, B1 4, D2 4, E2 4, G2 4, E2 32, E2 tied 12, D2 4, B1 4, A1 4, B1 12."
  },
  {
   "address": 59488,
   "type": "line",
   "text": "Pattern 2, for voice two (34 times in its track): 32 steps. Instrument 1: A3 4, instrument 3: E4 2, E5 2, D5 2, E5 2, instrument 1: A3 4, A3 4, instrument 3: E4 2, E5 2, D5 4, E5 2, E4 2."
  },
  {
   "address": 59517,
   "type": "line",
   "text": "Pattern 3, for voice one (3 times in its track): 256 steps. Rest 8, instrument 5: G4 8, G4 16, rest 8, G4 8, F#4 4, E4 12, rest 8, G4 8, G4 8, and 25 more notes and rests, C4 to B4."
  },
  {
   "address": 59584,
   "type": "line",
   "text": "Each voice's note first byte: bit 5 holds the gate to the note's end, bit 6 makes it a rest; read again for the release and the drums."
  },
  {
   "address": 59587,
   "type": "line",
   "text": "Pattern 4, for voice one (6 times in its track): 64 steps. Instrument 7: D4 4, E4 8, D4 4, E4 12, E4 8, E4 8, G3 4, A3 4, A3 4, B3 8."
  },
  {
   "address": 59609,
   "type": "line",
   "text": "Pattern 5, for voice two (141 times in its track): 32 steps. Instrument 1: A3 4, instrument 3: D5 2, E5 2, instrument 2: C4 4, instrument 1: A3 4, A3 4, instrument 3: E4 2, E5 2, instrument 2: C4 4, instrument 3: E5 2, E4 2."
  },
  {
   "address": 59639,
   "type": "line",
   "text": "Pattern 6, for voice three (6 times in its track): 64 steps. Instrument 0: D2 4, E2 8, D2 4, E2 12, E2 8, E2 8, G1 4, A1 4, A1 4, B1 4, E2 4."
  },
  {
   "address": 59663,
   "type": "line",
   "text": "Each voice's note number, 0 to 95."
  },
  {
   "address": 59666,
   "type": "line",
   "text": "Fourteen bytes no pattern points at, between the variables at $E90F and pattern 13."
  },
  {
   "address": 59680,
   "type": "line",
   "text": "Pattern 13, for voice one (3 times in its track): 96 steps. Instrument 8: A5 4, A5 4, G5 8, F#5 8, G5 4, B5 12, A5 8, G5 8, A5 8, B5 4, D6 4, B5 24."
  },
  {
   "address": 59706,
   "type": "line",
   "text": "Pattern 14, for voice one (3 times in its track): 128 steps. Instrument 8: A5 4, A5 4, G5 8, F#5 8, G5 4, B5 12, A5 8, G5 8, A5 4, B5 32, B5 tied 32, rest 4."
  },
  {
   "address": 59731,
   "type": "line",
   "text": "Each voice's gate mask, ANDed with the waveform: $FF while the note sounds, $FE once its release begins."
  },
  {
   "address": 59734,
   "type": "line",
   "text": "Pattern 10, for voice one (1 time in its track): 128 steps. Instrument 8: A5 4, A5 4, G5 8, F#5 8, G5 4, B5 12, A5 8, G5 8, F#5 4, E5 32, and 9 more notes and rests, C4 to B5."
  },
  {
   "address": 59775,
   "type": "line",
   "text": "Pattern 8, for voice three (42 times in its track): 32 steps. Instrument 0: D2 4, D2 8, C2 4, D2 8, C2 4, D2 4."
  },
  {
   "address": 59789,
   "type": "line",
   "text": "Pattern 15, for voice three (8 times in its track): 32 steps. Instrument 0: A2 4, A2 8, G2 4, A2 8, G2 4, A2 4."
  },
  {
   "address": 59803,
   "type": "line",
   "text": "Pattern 20, for voice three (4 times in its track): 32 steps. Instrument 0: G2 4, G2 8, G2 4, G2 8, G2 4, G2 4."
  },
  {
   "address": 59817,
   "type": "line",
   "text": "The drum table of instruments 2 and 6: noise ($81) with the high byte $30, then triangle, then pulse with the gate off and the frequency falling by $04C0, then noise with the gate off ($80) at high bytes $30, $15, $20, $10 and $20, then $85 to hold."
  },
  {
   "address": 59836,
   "type": "line",
   "text": "Pattern 21, for voice three (18 times in its track): 32 steps. Instrument 0: C2 4, C2 8, C2 4, C2 8, C2 4, C2 4."
  },
  {
   "address": 59850,
   "type": "line",
   "text": "Pattern 9, for voice three (23 times in its track): 64 steps. Instrument 0: E2 4, E2 8, D2 4, E2 4, B1 4, D2 4, G2 4, D2 4, E2 8, G1 4, A1 4, A1 4, B1 4, B1 4."
  },
  {
   "address": 59880,
   "type": "line",
   "text": "Pattern 11, for voice three (1 time in its track): 64 steps. C2 32, C2 tied 32."
  },
  {
   "address": 59885,
   "type": "line",
   "text": "The waveform of the instrument being started, kept while the other bytes go to the chip."
  },
  {
   "address": 59886,
   "type": "line",
   "text": "Pattern 16, for voice one (2 times in its track): 64 steps. Rest 4, instrument 7: D4 8, C4 4, D4 12, D4 8, D4 4, D4 8, G3 4, G3 4, A3 8."
  },
  {
   "address": 59907,
   "type": "line",
   "text": "Pattern 17, for voice one (2 times in its track): 64 steps. Instrument 7: G3 4, G3 4, instrument 8: G5 8, G5 8, F#5 4, G5 4, B5 8, A5 8, G5 4, F#5 12."
  },
  {
   "address": 59930,
   "type": "line",
   "text": "Pattern 18, for voice one (1 time in its track): 64 steps. Instrument 7: A3 4, A3 4, instrument 8: A5 8, A5 8, G5 4, A5 4, G5 4, F#5 4, E5 16, instrument 7: A3 4, A3 4."
  },
  {
   "address": 59956,
   "type": "line",
   "text": "Pattern 19, for voice one (1 time in its track): 64 steps. Instrument 8: G5 4, A5 8, A5 20, rest 4, instrument 7: D4 4, D4 8, D4 4, D4 12."
  },
  {
   "address": 59974,
   "type": "line",
   "text": "Each voice's instrument number, from a pattern's instrument byte. The tune's restart sets all three to 10, the silent one."
  },
  {
   "address": 59977,
   "type": "line",
   "text": "Pattern 22, for voice one (4 times in its track): 64 steps. Instrument 6: F#5 4, F#5 4, instrument 8: E4 8, G4 16, instrument 6: F#5 4, F#5 4, instrument 8: G4 8, F#4 4, E4 12."
  },
  {
   "address": 60000,
   "type": "line",
   "text": "Pattern 23, for voice one (2 times in its track): 64 steps. Instrument 6: F#5 4, F#5 4, instrument 8: E4 8, G4 16, instrument 6: F#5 4, F#5 4, instrument 8: F#4 8, E4 4, D4 12."
  },
  {
   "address": 60023,
   "type": "line",
   "text": "Pattern 24, for voice one (2 times in its track): 128 steps. Instrument 6: F#5 4, F#5 4, instrument 8: E4 8, G4 16, instrument 6: F#5 4, F#5 4, instrument 8: F#4 8, G4 4, A4 12, A4 4, B4 8, B4 32, B4 tied 20."
  },
  {
   "address": 60054,
   "type": "line",
   "text": "Cleared for each voice at each new note and never read."
  },
  {
   "address": 60057,
   "type": "line",
   "text": "Pattern 25, for voice one (2 times in its track): 192 steps. Instrument 9: D5 1, D5 tied sliding up 3, E5 tied 4, E5 tied 24, rest 8, D5 4, B4 4, A4 sliding up 4, B4 tied 4, B4 4, and 39 more notes and rests, E4 to E5. Its last 28 notes, from $EACF, are pattern 32."
  },
  {
   "address": 60111,
   "type": "line",
   "text": "Pattern 32, for voice one (1 time in its track): 64 steps. B4 2, E5 2, D5 2, B4 2, E5 2, D5 2, B4 2, E5 2, D5 2, B4 2, and 18 more notes and rests, F#4 to E5. It starts inside pattern 25, whose last 28 notes it shares."
  },
  {
   "address": 60170,
   "type": "line",
   "text": "Instrument 1's drum table: noise ($81) with the high byte $40, then pulse with the frequency falling by $0380, then with the gate off by $0200 and $0555, then two frames more, then $85."
  },
  {
   "address": 60188,
   "type": "line",
   "text": "Pattern 26, for voice one (4 times in its track): 64 steps. D4 32, rest 4, G3 4, A3 8, C3 4, D3 8, D3 4."
  },
  {
   "address": 60202,
   "type": "line",
   "text": "A byte no pattern points at, between patterns 26 and 27."
  },
  {
   "address": 60203,
   "type": "line",
   "text": "Pattern 27, for voice three (5 times in its track): 64 steps. D2 32, rest 4, G1 4, A1 8, C2 4, D2 8, D2 4."
  },
  {
   "address": 60217,
   "type": "line",
   "text": "Pattern 28, for voice two (8 times in its track): 32 steps. Instrument 1: A3 4, instrument 2: C4 4, C4 8, C4 4, C4 8, C4 4."
  },
  {
   "address": 60232,
   "type": "line",
   "text": "Each voice's slide byte: 0 for none, $80-$BE to slide up, $BF-$FF to slide down. Cleared at each note."
  },
  {
   "address": 60235,
   "type": "line",
   "text": "Pattern 29, for voice one (1 time in its track): 192 steps. Rest 8, A5 sliding up 2, B5 tied 2, A5 tied 4, G5 tied sliding up 4, A5 tied 4, D5 sliding up 4, E5 tied 4, A5 tied sliding up 2, B5 tied 2, and 40 more notes and rests, E4 to B5."
  },
  {
   "address": 60359,
   "type": "line",
   "text": "Each voice's position in its drum table, cleared at each note."
  },
  {
   "address": 60362,
   "type": "line",
   "text": "Pattern 30, for voice one (1 time in its track): 256 steps. D4 4, E4 8, D5 sliding up 4, E5 tied 8, G4 4, A4 8, G5 sliding up 4, A5 tied 8, B5 4, B5 8, and 30 more notes and rests, D4 to B5."
  },
  {
   "address": 60450,
   "type": "line",
   "text": "Pattern 31, for voice one (2 times in its track): 64 steps. A5 2, G5 tied 2, E5 tied 2, B5 2, G5 tied 2, E5 tied 2, A5 2, G5 tied 2, E5 tied 2, B5 2, and 21 more notes and rests, A4 to B5."
  },
  {
   "address": 60513,
   "type": "line",
   "text": "Pattern 33, for voice one (1 time in its track): 128 steps. Rest 15, instrument 4: D4 1, D4 4, C4 4, instrument 6: F#5 8, rest 16, rest 7, instrument 4: D4 1, D4 4, D4 4, and 10 more notes and rests, C4 to F#5."
  },
  {
   "address": 60553,
   "type": "line",
   "text": "Pattern 34, for voice one (4 times in its track): 32 steps. Rest 24, instrument 6: F#5 8."
  },
  {
   "address": 60558,
   "type": "line",
   "text": "Pattern 35, for voice one (1 time in its track): 56 steps. Rest 4, instrument 7: G4 4, A4 8, C4 4, D4 8, D4 4, D4 4, E4 4, E4 8, rest 8. The last pattern of voice one before the tune loops."
  },
  {
   "address": 60578,
   "type": "line",
   "text": "Each voice's frequency, high byte; the low byte is at $E575."
  },
  {
   "address": 60581,
   "type": "line",
   "text": "Pattern 36, for voice two (1 time in its track): 24 steps. Instrument 2: C4 4, C4 4, C4 8, rest 8. The last pattern of voice two before the tune loops."
  },
  {
   "address": 60590,
   "type": "line",
   "text": "Pattern 37, for voice three (1 time in its track): 56 steps. Rest 4, G1 4, A1 8, C2 4, D2 8, D2 4, E2 4, E2 4, E2 8, rest 8. The last pattern of voice three before the tune loops."
  },
  {
   "address": 60609,
   "type": "line",
   "text": "Bytes after the last pattern that nothing reads."
  },
  {
   "address": 60672,
   "type": "line",
   "text": "Plane two's radar scope, 94 bytes, copied to $03A0 before the dots are plotted ($1922, $1961)."
  },
  {
   "address": 60766,
   "type": "line",
   "text": "Two bytes that nothing reads."
  },
  {
   "address": 60768,
   "type": "line",
   "text": "Plane two's second radar scope, 94 bytes, used instead of $ED00 when $048B is set and the enemy is $0180 or more away ($1922 sets $BD)."
  },
  {
   "address": 60862,
   "type": "line",
   "text": "Two more bytes that nothing reads, after plane two's second radar scope."
  },
  {
   "address": 60864,
   "type": "line",
   "text": "Plane two's four bank indicator pictures (pointers at $6556: level, banks 1-6, 7-11 and 12-15), each read as 69 bytes into a dial three columns of 24 rows wide through plane two's index tables ($19DB), ORed over the dial's face at $9DC8. They start 60 bytes apart ($EDC0, $EDFC, $EE38; the last at $EE75), so each shares bytes with the next, and the last runs on into the first compass picture, to $EEB9."
  },
  {
   "address": 61090,
   "type": "line",
   "text": "Plane two's seven compass pictures (pointers at $7197: $EEA2, $EECF, $EEFF, $EF37, $EF6F, $EFA9 and $EFE4), each read as 72 bytes, three columns of 24 rows, through plane two's index tables and ORed over the compass face at $9E10 ($1BBD). They start 45 to 59 bytes apart, so neighbouring pictures share bytes, and the last runs on into the first explosion picture, to $F02B."
  },
  {
   "address": 61478,
   "type": "line",
   "text": "The explosion's twelve multicolour sprite pictures (pointers at $4DB9: $F026, $F065, $F0A1, $F0DD, $F11C, $F15B, $F195, $F1D2, $F1F8, $F228, $F251 and $F274), each the 63 bytes from its pointer, copied into sprites $EE and $EF ($4DA9). Pictures 0-3 are a large fireball, 4-7 a smaller one, 8-11 a few sparks; where two pointers are less than 63 bytes apart the pictures share bytes. The explosion steps through them by $4DD1: 0, 1, 2, 1 six times, then out to 4, back and on to 11."
  },
  {
   "address": 62131,
   "type": "line",
   "text": "Plane one's hangar picture as screen codes, 9 rows of 30, drawn at the top of its half by $0E6F ($1BD1): rows 0-5 the jet in the sky (characters $81-$EC of the set at $A000), rows 6-8 the deck (characters $80-$BC of the set at $B000)."
  },
  {
   "address": 62401,
   "type": "line",
   "text": "Plane two's hangar picture as screen codes, 9 rows of 30, drawn by $10A1 ($1BD1): rows 0-4 the jet on the runway (characters $81-$CC of the set at $A800), rows 5-8 the runway (the set at $B800)."
  },
  {
   "address": 62671,
   "type": "line",
   "text": "The AIRCRAFT WEAPONS SELECTION screen as screen codes, 12 rows of 30 in the font of the set at $B800 (A is $3B), drawn by $58A5: a frame, the title, the three weapon lines with their missile pictures (characters $61-$6F), and PREPARE FOR TAKE OFF."
  },
  {
   "address": 62795,
   "type": "line",
   "text": "The heat seekers' count on the arming screen, row 4 column 4, written by $588A as a digit."
  },
  {
   "address": 62855,
   "type": "line",
   "text": "The radar missiles' count, row 6 column 4, written by $5891."
  },
  {
   "address": 62915,
   "type": "line",
   "text": "The third kind's count, row 8 column 4, written by $5898."
  },
  {
   "address": 62921,
   "type": "line",
   "text": "SHIP and two spaces, the end of the third line's AIR-SHIP; plane one's screen gets GROUND over it from $5939 ($585B), plane two's SHIP again from $593F ($5872)."
  },
  {
   "address": 63031,
   "type": "line",
   "text": "A copy of characters $CD-$EC of plane one's hangar picture, 256 bytes, put back at $A668 whenever plane one enters the hangar ($4730), because the view draws over them in flight."
  },
  {
   "address": 63287,
   "type": "line",
   "text": "A copy of characters $CD-$D9 of plane two's hangar picture, 104 bytes, put back at $BE68 when plane two enters the hangar ($47FA)."
  },
  {
   "address": 63391,
   "type": "line",
   "text": "One byte, $AA, that nothing reads."
  },
  {
   "address": 63392,
   "type": "line",
   "text": "Ground target 4's shape on the map, 32 bytes: characters $70-$73 of the set at $B000 ($13EA)."
  },
  {
   "address": 63424,
   "type": "line",
   "text": "Ground target 5's shape on the map, 32 bytes, for characters $74-$77."
  },
  {
   "address": 63456,
   "type": "line",
   "text": "Bytes of $FD that nothing reads, the same filler byte as $D200-$D7FF."
  },
  {
   "address": 63488,
   "type": "line",
   "text": "The arctangent table: entry n is the angle whose tangent is n/256, in 256ths of a turn (0 to 31). The bearing between two objects comes from the smaller difference over the larger ($3F97)."
  },
  {
   "address": 63744,
   "type": "line",
   "text": "Zero page as the KERNAL and BASIC leave it (with BASIC's CHRGET at $73), loaded with the game and copied over $0000-$00FF by $1E62 before each disk write, so the KERNAL finds its own work bytes."
  },
  {
   "address": 64000,
   "type": "line",
   "text": "The security grid, 40 squares of four bytes: the column (0 to 31), the row and the colour of each, then a 0 ($37E1). The colour the player must name is the third byte."
  },
  {
   "address": 64001,
   "type": "line",
   "text": "The row of each square, read at $3819."
  },
  {
   "address": 64002,
   "type": "line",
   "text": "The colour of each square, read at $382A."
  },
  {
   "address": 64160,
   "type": "line",
   "text": "The spy ship's two-cell pictures, eight of 32 bytes (pointers at $7830), chosen by the viewing plane's roll through the table at $7570 ($6173): two columns of 16 rows, recoloured and shifted into place by $1581 and $15DB."
  },
  {
   "address": 64416,
   "type": "line",
   "text": "The radar station's one-cell pictures, eight byte sets of eight bytes (pointers at $7840), chosen by the roll the same way ($6130)."
  },
  {
   "address": 64480,
   "type": "line",
   "text": "The radar station's two-cell pictures, eight of 32 bytes (pointers at $7850), two columns of 16 rows each."
  },
  {
   "address": 64736,
   "type": "line",
   "text": "Bytes nothing reads: a $A5, then the $FD filler, with 32 bytes at $FD30 that are the KERNAL ROM's table of default vectors from the same address ($EA31 for IRQ, $FE66, $FE47 for NMI, then OPEN $F34A to SAVE $F5ED)."
  },
  {
   "address": 65024,
   "type": "line",
   "text": "The enemy plane's large pictures, fifteen of 32 bytes (pointers at $77F8), the plane from fifteen angles: two columns of 16 rows of multicolour pixels each, recoloured and shifted into place by $1581 and $15DB when the enemy is nearest ($2C86)."
  },
  {
   "address": 65280,
   "type": "line",
   "text": "Picture 8 of the enemy's large pictures. The instructions at $344E and $5723-$5729 name this address only as a placeholder: their high bytes are patched before they run."
  },
  {
   "address": 65344,
   "type": "line",
   "text": "Picture 10 of the enemy's large pictures."
  },
  {
   "address": 65384,
   "type": "line",
   "text": "Inside picture 11 of the enemy's large pictures. The tracer drawing at $1896 names $FF68 only as a placeholder: $1879 patches its high byte to the character set being drawn."
  },
  {
   "address": 65448,
   "type": "line",
   "text": "Inside picture 13 of the enemy's large pictures. The game calls the KERNAL's routines at these addresses (CIOUT here, LISTEN, SECOND, OPEN and the others) only with the ROM banked in ($1E62), so the calls reach the ROM, never these bytes."
  },
  {
   "address": 65504,
   "type": "line",
   "text": "A sixteenth picture that no pointer names: a copy of picture 12 ($FF80), up to $FFF9, where the processor's vectors take over its last six bytes."
  }
 ]
}