{
 "schema": 1,
 "platform": "c64",
 "game": "the-fourth-protocol",
 "part": "sas-assault",
 "build": "Bantam Software's US disk release, 1985 (C64 Preservation Project G64, marked good); five parts: the resident disk operating system and episode loader, the title and episode menu, and the three episodes",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    4095,
    "Resident: the disk operating system and the episode loader"
   ],
   [
    20480,
    24575,
    "Resident: the disk operating system and the episode loader"
   ],
   [
    53248,
    65535,
    "Resident: the disk operating system and the episode loader"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    4095,
    "Resident: the disk operating system and the episode loader"
   ],
   [
    20480,
    24575,
    "Resident: the disk operating system and the episode loader"
   ],
   [
    53248,
    65535,
    "Resident: the disk operating system and the episode loader"
   ]
  ]
 },
 "blocks": [
  {
   "start": 4096,
   "end": 4471,
   "type": "Address"
  },
  {
   "start": 4472,
   "end": 4601,
   "type": "PETSCII Text"
  },
  {
   "start": 4602,
   "end": 4608,
   "type": "Byte"
  },
  {
   "start": 4609,
   "end": 5197,
   "type": "PETSCII Text"
  },
  {
   "start": 5198,
   "end": 5200,
   "type": "Byte"
  },
  {
   "start": 5201,
   "end": 5581,
   "type": "PETSCII Text"
  },
  {
   "start": 5582,
   "end": 5584,
   "type": "Byte"
  },
  {
   "start": 5585,
   "end": 6951,
   "type": "PETSCII Text"
  },
  {
   "start": 6952,
   "end": 6954,
   "type": "Byte"
  },
  {
   "start": 6955,
   "end": 12845,
   "type": "PETSCII Text"
  },
  {
   "start": 12846,
   "end": 20479,
   "type": "Byte"
  },
  {
   "start": 24576,
   "end": 40959,
   "type": "Byte"
  },
  {
   "start": 40960,
   "end": 41043,
   "type": "Code"
  },
  {
   "start": 41044,
   "end": 41139,
   "type": "Byte"
  },
  {
   "start": 41140,
   "end": 41203,
   "type": "Code"
  },
  {
   "start": 41204,
   "end": 41345,
   "type": "Byte"
  },
  {
   "start": 41346,
   "end": 41524,
   "type": "Code"
  },
  {
   "start": 41525,
   "end": 41540,
   "type": "Byte"
  },
  {
   "start": 41541,
   "end": 42199,
   "type": "Code"
  },
  {
   "start": 42200,
   "end": 42221,
   "type": "Word"
  },
  {
   "start": 42222,
   "end": 42332,
   "type": "Code"
  },
  {
   "start": 42333,
   "end": 42333,
   "type": "Byte"
  },
  {
   "start": 42334,
   "end": 42385,
   "type": "Code"
  },
  {
   "start": 42386,
   "end": 42386,
   "type": "Byte"
  },
  {
   "start": 42387,
   "end": 42705,
   "type": "Code"
  },
  {
   "start": 42706,
   "end": 42714,
   "type": "Byte"
  },
  {
   "start": 42715,
   "end": 43613,
   "type": "Code"
  },
  {
   "start": 43614,
   "end": 43645,
   "type": "Address"
  },
  {
   "start": 43646,
   "end": 43666,
   "type": "Byte"
  },
  {
   "start": 43667,
   "end": 43682,
   "type": "Code"
  },
  {
   "start": 43683,
   "end": 45055,
   "type": "Byte"
  },
  {
   "start": 45056,
   "end": 45078,
   "type": "Code"
  },
  {
   "start": 45079,
   "end": 45088,
   "type": "Word"
  },
  {
   "start": 45089,
   "end": 45117,
   "type": "Code"
  },
  {
   "start": 45118,
   "end": 45143,
   "type": "Address"
  },
  {
   "start": 45144,
   "end": 45661,
   "type": "Word"
  },
  {
   "start": 45662,
   "end": 45677,
   "type": "Code"
  },
  {
   "start": 45678,
   "end": 45680,
   "type": "Byte"
  },
  {
   "start": 45681,
   "end": 45813,
   "type": "Code"
  },
  {
   "start": 45814,
   "end": 45814,
   "type": "Byte"
  },
  {
   "start": 45815,
   "end": 45862,
   "type": "Code"
  },
  {
   "start": 45863,
   "end": 45863,
   "type": "Byte"
  },
  {
   "start": 45864,
   "end": 45873,
   "type": "Code"
  },
  {
   "start": 45874,
   "end": 45874,
   "type": "Byte"
  },
  {
   "start": 45875,
   "end": 45904,
   "type": "Code"
  },
  {
   "start": 45905,
   "end": 45908,
   "type": "Byte"
  },
  {
   "start": 45909,
   "end": 45964,
   "type": "Code"
  },
  {
   "start": 45965,
   "end": 45970,
   "type": "Byte"
  },
  {
   "start": 45971,
   "end": 45996,
   "type": "Code"
  },
  {
   "start": 45997,
   "end": 46000,
   "type": "Byte"
  },
  {
   "start": 46001,
   "end": 46030,
   "type": "Code"
  },
  {
   "start": 46031,
   "end": 46034,
   "type": "Byte"
  },
  {
   "start": 46035,
   "end": 46054,
   "type": "Code"
  },
  {
   "start": 46055,
   "end": 46055,
   "type": "Byte"
  },
  {
   "start": 46056,
   "end": 46105,
   "type": "Code"
  },
  {
   "start": 46106,
   "end": 46111,
   "type": "Address"
  },
  {
   "start": 46112,
   "end": 46195,
   "type": "Byte"
  },
  {
   "start": 46196,
   "end": 46246,
   "type": "Code"
  },
  {
   "start": 46247,
   "end": 46247,
   "type": "Byte"
  },
  {
   "start": 46248,
   "end": 46322,
   "type": "Code"
  },
  {
   "start": 46323,
   "end": 46323,
   "type": "Byte"
  },
  {
   "start": 46324,
   "end": 46353,
   "type": "Code"
  },
  {
   "start": 46354,
   "end": 46354,
   "type": "Byte"
  },
  {
   "start": 46355,
   "end": 46611,
   "type": "Code"
  },
  {
   "start": 46612,
   "end": 46617,
   "type": "Byte"
  },
  {
   "start": 46618,
   "end": 46636,
   "type": "Code"
  },
  {
   "start": 46637,
   "end": 46638,
   "type": "Byte"
  },
  {
   "start": 46639,
   "end": 46650,
   "type": "Code"
  },
  {
   "start": 46651,
   "end": 46656,
   "type": "Byte"
  },
  {
   "start": 46657,
   "end": 46699,
   "type": "Code"
  },
  {
   "start": 46700,
   "end": 46711,
   "type": "Byte"
  },
  {
   "start": 46712,
   "end": 46753,
   "type": "Code"
  },
  {
   "start": 46754,
   "end": 46761,
   "type": "Byte"
  },
  {
   "start": 46762,
   "end": 46778,
   "type": "Code"
  },
  {
   "start": 46779,
   "end": 46786,
   "type": "Byte"
  },
  {
   "start": 46787,
   "end": 46838,
   "type": "Code"
  },
  {
   "start": 46839,
   "end": 49151,
   "type": "Byte"
  },
  {
   "start": 49152,
   "end": 49458,
   "type": "Code"
  },
  {
   "start": 49459,
   "end": 49663,
   "type": "Byte"
  },
  {
   "start": 49664,
   "end": 50222,
   "type": "Code"
  },
  {
   "start": 50223,
   "end": 50242,
   "type": "Byte"
  },
  {
   "start": 50243,
   "end": 50404,
   "type": "Code"
  },
  {
   "start": 50405,
   "end": 50429,
   "type": "Byte"
  },
  {
   "start": 50430,
   "end": 50628,
   "type": "Code"
  },
  {
   "start": 50629,
   "end": 50632,
   "type": "Byte"
  },
  {
   "start": 50633,
   "end": 50905,
   "type": "Code"
  },
  {
   "start": 50906,
   "end": 50938,
   "type": "Byte"
  },
  {
   "start": 50939,
   "end": 51127,
   "type": "Code"
  },
  {
   "start": 51128,
   "end": 51145,
   "type": "Byte"
  },
  {
   "start": 51146,
   "end": 51157,
   "type": "Address"
  },
  {
   "start": 51158,
   "end": 51175,
   "type": "Byte"
  },
  {
   "start": 51176,
   "end": 51187,
   "type": "Address"
  },
  {
   "start": 51188,
   "end": 51190,
   "type": "Byte"
  },
  {
   "start": 51191,
   "end": 51657,
   "type": "Code"
  },
  {
   "start": 51658,
   "end": 51689,
   "type": "Byte"
  },
  {
   "start": 51690,
   "end": 51984,
   "type": "Code"
  },
  {
   "start": 51985,
   "end": 52132,
   "type": "Byte"
  },
  {
   "start": 52133,
   "end": 52138,
   "type": "Address"
  },
  {
   "start": 52139,
   "end": 52155,
   "type": "Code"
  },
  {
   "start": 52156,
   "end": 53247,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 4096,
   "name": "message_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4097,
   "name": "message_table_highs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4352,
   "name": "message_table_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4353,
   "name": "message_table_high_highs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4472,
   "name": "message_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4525,
   "name": "message_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4609,
   "name": "message_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4689,
   "name": "message_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4762,
   "name": "message_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4822,
   "name": "message_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4884,
   "name": "message_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4923,
   "name": "message_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4975,
   "name": "message_8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5015,
   "name": "message_9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5076,
   "name": "message_10",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5094,
   "name": "message_11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5159,
   "name": "message_12",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5201,
   "name": "message_13",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5221,
   "name": "message_14",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5267,
   "name": "message_15",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5307,
   "name": "message_16",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5335,
   "name": "message_17",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5357,
   "name": "message_18",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5402,
   "name": "message_19",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5463,
   "name": "message_20",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5533,
   "name": "message_21",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5585,
   "name": "message_22",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5618,
   "name": "message_23",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5671,
   "name": "message_24",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5703,
   "name": "message_25",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5782,
   "name": "message_26",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5812,
   "name": "message_27",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5871,
   "name": "message_28",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5929,
   "name": "message_29",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5988,
   "name": "message_30",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6046,
   "name": "message_31",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6089,
   "name": "message_32",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6122,
   "name": "message_33",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6213,
   "name": "message_34",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6236,
   "name": "message_35",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6248,
   "name": "message_36",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6281,
   "name": "message_37",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6315,
   "name": "message_38",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6332,
   "name": "message_39",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6365,
   "name": "message_40",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6406,
   "name": "message_41",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6434,
   "name": "message_42",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6510,
   "name": "message_43",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6556,
   "name": "message_44",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6614,
   "name": "message_45",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6648,
   "name": "message_46",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6682,
   "name": "message_47",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6716,
   "name": "message_48",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6785,
   "name": "message_49",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6888,
   "name": "message_50",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6955,
   "name": "message_51",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6976,
   "name": "message_52",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6988,
   "name": "message_53",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7047,
   "name": "message_54",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7080,
   "name": "message_55",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7112,
   "name": "message_56",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7146,
   "name": "message_57",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7163,
   "name": "message_58",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7204,
   "name": "message_59",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7264,
   "name": "message_60",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7301,
   "name": "message_61",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7350,
   "name": "message_62",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7377,
   "name": "message_63",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7404,
   "name": "message_64",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7431,
   "name": "message_65",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7528,
   "name": "message_66",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7568,
   "name": "message_67",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7609,
   "name": "message_68",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7686,
   "name": "message_69",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7699,
   "name": "message_70",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7729,
   "name": "message_71",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7749,
   "name": "message_72",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7769,
   "name": "message_73",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7789,
   "name": "message_74",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7809,
   "name": "message_75",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7842,
   "name": "message_76",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7878,
   "name": "message_77",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7928,
   "name": "message_78",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8031,
   "name": "message_79",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8051,
   "name": "message_80",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8065,
   "name": "message_81",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8101,
   "name": "message_82",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8139,
   "name": "message_83",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8172,
   "name": "message_84",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8226,
   "name": "message_85",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8295,
   "name": "message_86",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8322,
   "name": "message_87",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8339,
   "name": "message_88",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8348,
   "name": "message_89",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8423,
   "name": "message_90",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8462,
   "name": "message_91",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8500,
   "name": "message_92",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8531,
   "name": "message_93",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8590,
   "name": "message_94",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8632,
   "name": "message_95",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8644,
   "name": "message_96",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8661,
   "name": "message_97",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8690,
   "name": "message_98",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8719,
   "name": "message_99",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8744,
   "name": "message_100",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8764,
   "name": "message_101",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8806,
   "name": "message_102",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8828,
   "name": "message_103",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8865,
   "name": "message_104",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8901,
   "name": "message_105",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8908,
   "name": "message_106",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8936,
   "name": "message_107",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8965,
   "name": "message_108",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8978,
   "name": "message_109",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9001,
   "name": "message_110",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9055,
   "name": "message_111",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9068,
   "name": "message_112",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9310,
   "name": "message_113",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9504,
   "name": "message_114",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9658,
   "name": "message_115",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9831,
   "name": "message_116",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9937,
   "name": "message_117",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10063,
   "name": "message_118",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10292,
   "name": "message_119",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10379,
   "name": "message_120",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10525,
   "name": "message_121",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10555,
   "name": "message_122",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10582,
   "name": "message_123",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10612,
   "name": "message_124",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10633,
   "name": "message_125",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10673,
   "name": "message_126",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10691,
   "name": "message_127",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10747,
   "name": "message_128",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10768,
   "name": "message_129",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10791,
   "name": "message_130",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10801,
   "name": "message_131",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10832,
   "name": "message_132",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10836,
   "name": "message_133",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10863,
   "name": "message_134",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10906,
   "name": "message_135",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10925,
   "name": "message_136",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10965,
   "name": "message_137",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10986,
   "name": "message_138",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11043,
   "name": "message_139",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11066,
   "name": "message_140",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11085,
   "name": "message_141",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11115,
   "name": "message_142",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11144,
   "name": "message_143",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11166,
   "name": "message_144",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11212,
   "name": "message_145",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11237,
   "name": "message_146",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11273,
   "name": "message_147",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11303,
   "name": "message_148",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11320,
   "name": "message_149",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11335,
   "name": "message_150",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11376,
   "name": "message_151",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11409,
   "name": "message_152",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11439,
   "name": "message_153",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11472,
   "name": "message_154",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11516,
   "name": "message_155",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11581,
   "name": "message_156",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11668,
   "name": "message_157",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11750,
   "name": "message_158",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11830,
   "name": "message_159",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11867,
   "name": "message_160",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11905,
   "name": "message_161",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11984,
   "name": "message_162",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12009,
   "name": "message_163",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12049,
   "name": "message_164",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12073,
   "name": "message_165",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12099,
   "name": "message_166",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12128,
   "name": "message_167",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12156,
   "name": "message_168",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12187,
   "name": "message_169",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12219,
   "name": "message_170",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12250,
   "name": "message_171",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12287,
   "name": "message_172",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12324,
   "name": "message_173",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12344,
   "name": "message_174",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12374,
   "name": "message_175",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12406,
   "name": "message_176",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12427,
   "name": "message_177",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12457,
   "name": "message_178",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12483,
   "name": "message_179",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12513,
   "name": "message_180",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12552,
   "name": "message_181",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12588,
   "name": "message_182",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12617,
   "name": "message_183",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12651,
   "name": "message_184",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12685,
   "name": "message_185",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12718,
   "name": "message_186",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12782,
   "name": "message_187",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12846,
   "name": "filler_322e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13360,
   "name": "filler_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13680,
   "name": "filler_patterns_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14704,
   "name": "filler_3970",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15728,
   "name": "filler_3d70",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "drawer_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16576,
   "name": "bomb_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16704,
   "name": "door_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17216,
   "name": "shot_images_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17344,
   "name": "guard_image_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18304,
   "name": "crosshair_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18368,
   "name": "burst_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18560,
   "name": "unused_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18624,
   "name": "sprite_area_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18944,
   "name": "codename_text_screen",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19200,
   "name": "codename_text_page_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19456,
   "name": "codename_text_page_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19712,
   "name": "sprite_area_leftover_4d00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20416,
   "name": "blank_sprite",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24576,
   "name": "picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25536,
   "name": "picture_rows_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26496,
   "name": "picture_rows_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27456,
   "name": "picture_rows_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28416,
   "name": "picture_rows_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29376,
   "name": "picture_rows_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30336,
   "name": "picture_rows_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30976,
   "name": "picture_hidden_rows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32000,
   "name": "picture_hidden_rows_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32576,
   "name": "picture_screen",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "picture_screen_8000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32832,
   "name": "picture_screen_page_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33088,
   "name": "picture_screen_page_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33344,
   "name": "picture_screen_page_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33576,
   "name": "picture_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33832,
   "name": "picture_colours_page_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34088,
   "name": "picture_colours_page_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34344,
   "name": "picture_colours_page_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34560,
   "name": "word_number",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34561,
   "name": "verb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34562,
   "name": "word_start",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34563,
   "name": "flash_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34564,
   "name": "bomb_priority",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34565,
   "name": "light_colours",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34566,
   "name": "a_8706",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34567,
   "name": "a_8707",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34568,
   "name": "bomb_body_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34569,
   "name": "work_low",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34570,
   "name": "a_870A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34571,
   "name": "a_870B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34572,
   "name": "ring_radius",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34573,
   "name": "circle_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34574,
   "name": "circle_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34575,
   "name": "a_870F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34576,
   "name": "a_8710",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34577,
   "name": "circle_decision",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34578,
   "name": "a_8712",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34580,
   "name": "irq_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34581,
   "name": "a_8715",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34582,
   "name": "text_only_background",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34584,
   "name": "picture_background",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34585,
   "name": "ring_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34586,
   "name": "sprites_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34587,
   "name": "flash_rate",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34588,
   "name": "burst_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34589,
   "name": "burst_pitch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34590,
   "name": "guard_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34591,
   "name": "guard_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34592,
   "name": "crosshair_x_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34593,
   "name": "crosshair_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34594,
   "name": "crosshair_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34595,
   "name": "guard_priority",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34597,
   "name": "text_background",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34598,
   "name": "siren_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34599,
   "name": "input_column",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34600,
   "name": "ammunition",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34601,
   "name": "guard_timer_low",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34608,
   "name": "guard_timer_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34688,
   "name": "drawer_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34689,
   "name": "door_is_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34690,
   "name": "explosions",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34691,
   "name": "keypad",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34692,
   "name": "bomb_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34693,
   "name": "buttons_pressed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34694,
   "name": "wires_cut",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34695,
   "name": "guard_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34696,
   "name": "hiding",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34697,
   "name": "event_divider",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34698,
   "name": "step_divider",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34699,
   "name": "guard_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34701,
   "name": "shot_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34702,
   "name": "a_878E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34703,
   "name": "look_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34705,
   "name": "open_door_request",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34706,
   "name": "guards_in_room",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34707,
   "name": "guard_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34709,
   "name": "hit_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34710,
   "name": "shootout_over",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34711,
   "name": "alarm",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34712,
   "name": "sixth_guard",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34713,
   "name": "box_hits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34714,
   "name": "commands_typed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34715,
   "name": "exploded",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34716,
   "name": "cabinet_hits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34717,
   "name": "close_door_request",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34718,
   "name": "out_of_ammo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34719,
   "name": "blows_taken",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34720,
   "name": "guard_announce",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34728,
   "name": "cleared_spare",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34816,
   "name": "centred_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35072,
   "name": "centred_columns_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35328,
   "name": "centred_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35584,
   "name": "centred_rows_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35840,
   "name": "column_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36096,
   "name": "column_offsets_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36352,
   "name": "row_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36608,
   "name": "row_offsets_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36864,
   "name": "tape_writer_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37077,
   "name": "texts_leftover_90d5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37888,
   "name": "texts_leftover_9400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38912,
   "name": "texts_leftover_9800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39936,
   "name": "texts_leftover_9c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40704,
   "name": "nmi_pointer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40705,
   "name": "nmi_pointer_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "parse_line",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40963,
   "name": "s_A003",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 40969,
   "name": "s_A009",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 40972,
   "name": "parse",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40988,
   "name": "b_A01C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41041,
   "name": "b_A051",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41044,
   "name": "unknown_verb_replies",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41047,
   "name": "f_A057",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41048,
   "name": "verb_words",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41140,
   "name": "b_A0B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41148,
   "name": "b_A0BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41185,
   "name": "b_A0E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41201,
   "name": "b_A0F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41204,
   "name": "unknown_noun_replies",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41208,
   "name": "noun_words",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41346,
   "name": "find_word",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41348,
   "name": "find_word_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41353,
   "name": "b_A189",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41373,
   "name": "b_A19D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41379,
   "name": "b_A1A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41384,
   "name": "j_A1A8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41386,
   "name": "a_A1AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41387,
   "name": "a_A1AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41396,
   "name": "b_A1B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41402,
   "name": "b_A1BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41404,
   "name": "a_A1BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41405,
   "name": "a_A1BD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41409,
   "name": "a_A1C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41410,
   "name": "a_A1C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41415,
   "name": "b_A1C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41420,
   "name": "b_A1CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41431,
   "name": "b_A1D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41433,
   "name": "open_drawer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41478,
   "name": "b_A206",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41480,
   "name": "b_A208",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41494,
   "name": "b_A216",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41505,
   "name": "b_A221",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41524,
   "name": "r_A234",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41525,
   "name": "msb_clear_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41541,
   "name": "door_close",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41566,
   "name": "b_A25E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41577,
   "name": "b_A269",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41588,
   "name": "b_A274",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41599,
   "name": "r_A27F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41600,
   "name": "door_frame_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41617,
   "name": "door_open",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41642,
   "name": "b_A2AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41653,
   "name": "b_A2B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41664,
   "name": "b_A2C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41675,
   "name": "r_A2CB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41676,
   "name": "door_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41678,
   "name": "b_A2CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41695,
   "name": "door_frame_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41712,
   "name": "bomb_explodes",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41758,
   "name": "b_A31E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41773,
   "name": "await_restart",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41785,
   "name": "b_A339",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41795,
   "name": "defused_ending",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41800,
   "name": "b_A348",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41829,
   "name": "scroll_bottom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41840,
   "name": "scroll_whole",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41851,
   "name": "say",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41857,
   "name": "print_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41882,
   "name": "b_A39A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41898,
   "name": "j_A3AA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41900,
   "name": "j_A3AC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41902,
   "name": "b_A3AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41903,
   "name": "a_A3AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41904,
   "name": "a_A3B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41917,
   "name": "b_A3BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41927,
   "name": "r_A3C7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41928,
   "name": "b_A3C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41931,
   "name": "a_A3CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41932,
   "name": "a_A3CC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41939,
   "name": "scroll_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41951,
   "name": "b_A3DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41953,
   "name": "j_A3E1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42108,
   "name": "b_A47C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42114,
   "name": "scroll_text_lines",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42126,
   "name": "b_A48E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42128,
   "name": "b_A490",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42166,
   "name": "room_events",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42199,
   "name": "r_A4D7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42200,
   "name": "room_event_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42201,
   "name": "f_A4D9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 42222,
   "name": "guard_hidden",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 42235,
   "name": "guard_set_out",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42261,
   "name": "b_A515",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42272,
   "name": "j_A520",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42284,
   "name": "guard_walk_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42316,
   "name": "b_A54C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42332,
   "name": "r_A55C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42334,
   "name": "b_A55E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42337,
   "name": "guard_walk_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42369,
   "name": "b_A581",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42385,
   "name": "r_A591",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42387,
   "name": "b_A593",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42390,
   "name": "guard_walk_to_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42404,
   "name": "b_A5A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42411,
   "name": "b_A5AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42427,
   "name": "r_A5BB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42428,
   "name": "guard_to_door",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 42447,
   "name": "b_A5CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42468,
   "name": "b_A5E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42476,
   "name": "j_A5EC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42482,
   "name": "guard_walk_from_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42496,
   "name": "b_A600",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42503,
   "name": "b_A607",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42519,
   "name": "r_A617",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42520,
   "name": "b_A618",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42539,
   "name": "guard_turn",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42565,
   "name": "b_A645",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42576,
   "name": "j_A650",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42588,
   "name": "guard_at_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42602,
   "name": "b_A66A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42624,
   "name": "b_A680",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42640,
   "name": "b_A690",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42655,
   "name": "r_A69F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42656,
   "name": "guard_looks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42675,
   "name": "b_A6B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42706,
   "name": "guard_look_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42715,
   "name": "b_A6DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42725,
   "name": "r_A6E5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42726,
   "name": "b_A6E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42737,
   "name": "guard_comes_in",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42746,
   "name": "b_A6FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42767,
   "name": "b_A70F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42768,
   "name": "b_A710",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42779,
   "name": "b_A71B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42795,
   "name": "b_A72B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42810,
   "name": "b_A73A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42819,
   "name": "j_A743",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42834,
   "name": "r_A752",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42835,
   "name": "guard_leaves",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42852,
   "name": "b_A764",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42868,
   "name": "b_A774",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42888,
   "name": "r_A788",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42889,
   "name": "guard_walks_away",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42918,
   "name": "b_A7A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42921,
   "name": "set_guard_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42960,
   "name": "r_A7D0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42961,
   "name": "shootout",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42969,
   "name": "b_A7D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42993,
   "name": "b_A7F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43007,
   "name": "b_A7FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43016,
   "name": "b_A808",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43029,
   "name": "a_A815",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43030,
   "name": "a_A816",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43036,
   "name": "j_A81C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43068,
   "name": "b_A83C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43095,
   "name": "b_A857",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43132,
   "name": "b_A87C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43198,
   "name": "b_A8BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43204,
   "name": "b_A8C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43217,
   "name": "j_A8D1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43219,
   "name": "b_A8D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43227,
   "name": "s_A8DB",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 43244,
   "name": "move_up_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43247,
   "name": "move_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43257,
   "name": "r_A8F9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43258,
   "name": "move_down_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43261,
   "name": "move_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43273,
   "name": "b_A909",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43283,
   "name": "r_A913",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43284,
   "name": "move_down_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43287,
   "name": "move_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43297,
   "name": "r_A921",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43298,
   "name": "move_up_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43301,
   "name": "move_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43313,
   "name": "b_A931",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43323,
   "name": "b_A93B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43326,
   "name": "r_A93E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43327,
   "name": "check_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43341,
   "name": "b_A94D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43344,
   "name": "b_A950",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43369,
   "name": "r_A969",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43370,
   "name": "b_A96A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43384,
   "name": "b_A978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43400,
   "name": "a_A988",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43401,
   "name": "a_A989",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43416,
   "name": "b_A998",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43438,
   "name": "b_A9AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43447,
   "name": "j_A9B7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43504,
   "name": "b_A9F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43516,
   "name": "shot_box_or_cabinet",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43576,
   "name": "b_AA38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43579,
   "name": "r_AA3B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43580,
   "name": "b_AA3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43598,
   "name": "b_AA4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43613,
   "name": "r_AA5D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43614,
   "name": "move_routines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43615,
   "name": "f_AA5F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43646,
   "name": "shot_images",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43654,
   "name": "hit_images",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43667,
   "name": "random_mixed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43674,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43678,
   "name": "show_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 43683,
   "name": "parser_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43928,
   "name": "vocabulary_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44544,
   "name": "locations_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45056,
   "name": "game_jumps",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45059,
   "name": "s_B003",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45062,
   "name": "s_B006",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45065,
   "name": "verb_dispatch",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45079,
   "name": "verb_actions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45080,
   "name": "f_B018",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 45089,
   "name": "noun_dispatch",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45118,
   "name": "noun_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45119,
   "name": "f_B03F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 45144,
   "name": "open_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45200,
   "name": "close_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45256,
   "name": "shoot_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45312,
   "name": "attack_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45368,
   "name": "destroy_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45428,
   "name": "examine_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45494,
   "name": "use_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45550,
   "name": "push_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45606,
   "name": "cut_nouns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45662,
   "name": "inventory",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45667,
   "name": "describe",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45678,
   "name": "describe_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45681,
   "name": "listen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45699,
   "name": "b_B283",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45702,
   "name": "hide",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45712,
   "name": "b_B290",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45720,
   "name": "type_number",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45737,
   "name": "b_B2A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45752,
   "name": "b_B2B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45755,
   "name": "raise_alarm",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45771,
   "name": "b_B2CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45774,
   "name": "open_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45797,
   "name": "b_B2E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45802,
   "name": "open_cabinet",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45811,
   "name": "b_B2F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45815,
   "name": "open_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45820,
   "name": "box_out_of_reach",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45825,
   "name": "window_jammed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45830,
   "name": "close_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45853,
   "name": "b_B31D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45858,
   "name": "close_cabinet",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45864,
   "name": "close_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45869,
   "name": "close_window",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45875,
   "name": "shoot_anything",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45880,
   "name": "no_guard",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 45885,
   "name": "attack_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45890,
   "name": "attack_bomb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45905,
   "name": "attack_replies",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45909,
   "name": "attack_geiger",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45914,
   "name": "attack_cable",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45922,
   "name": "cut_cable",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45937,
   "name": "fight_guard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45952,
   "name": "b_B380",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45965,
   "name": "fight_misses",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45971,
   "name": "b_B393",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45997,
   "name": "fight_hits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46001,
   "name": "attack_window",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46006,
   "name": "attack_wall",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46011,
   "name": "destroy_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46016,
   "name": "destroy_bomb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46031,
   "name": "destroy_replies",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46035,
   "name": "destroy_geiger",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46040,
   "name": "destroy_box",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46045,
   "name": "destroy_window",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46050,
   "name": "destroy_wall",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46056,
   "name": "examine",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46081,
   "name": "b_B401",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46089,
   "name": "b_B409",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46100,
   "name": "b_B414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46101,
   "name": "a_B415",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46102,
   "name": "a_B416",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46106,
   "name": "examine_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46107,
   "name": "f_B41B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46112,
   "name": "examine_sealed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46140,
   "name": "examine_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46168,
   "name": "examine_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46196,
   "name": "use_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46201,
   "name": "use_cabinet",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46206,
   "name": "use_keypad",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46211,
   "name": "use_geiger",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46216,
   "name": "choose_keypad",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46235,
   "name": "use_buttons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46244,
   "name": "b_B4A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46248,
   "name": "use_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46253,
   "name": "push_door",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46258,
   "name": "push_bomb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46266,
   "name": "push_lights",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46271,
   "name": "push_red",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46304,
   "name": "b_B4E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46320,
   "name": "b_B4F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46324,
   "name": "push_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46329,
   "name": "push_window",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46334,
   "name": "push_wall",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46336,
   "name": "b_B500",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46339,
   "name": "push_all",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46355,
   "name": "cut_other",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46360,
   "name": "cut_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46377,
   "name": "b_B529",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46380,
   "name": "cut_wire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46391,
   "name": "b_B537",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46394,
   "name": "cut_all",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46411,
   "name": "b_B54B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46414,
   "name": "cut_red",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46449,
   "name": "b_B571",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46480,
   "name": "b_B590",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46483,
   "name": "cut_blue",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46491,
   "name": "cut_guard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46508,
   "name": "b_B5AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46511,
   "name": "start_siren",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46537,
   "name": "guard_timer",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46555,
   "name": "b_B5DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46568,
   "name": "b_B5E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46608,
   "name": "b_B610",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46611,
   "name": "r_B613",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46612,
   "name": "guard_chances",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46618,
   "name": "shootout_ending",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 46629,
   "name": "say_and_explode",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46637,
   "name": "shootout_ending_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46639,
   "name": "check_turn",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46651,
   "name": "guard_counts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46657,
   "name": "b_B641",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46678,
   "name": "b_B656",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46694,
   "name": "b_B666",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46700,
   "name": "attack_chances",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46706,
   "name": "killed_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46712,
   "name": "b_B678",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46744,
   "name": "b_B698",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46754,
   "name": "evade_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46758,
   "name": "blow_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46762,
   "name": "b_B6AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46778,
   "name": "r_B6BA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46779,
   "name": "out_of_ammo_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46787,
   "name": "alarm_sound",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46838,
   "name": "r_B6F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46839,
   "name": "locations_leftover_b6f7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47843,
   "name": "locations_leftover_bae3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47997,
   "name": "location_names_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48907,
   "name": "location_names_leftover_bf0b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "codename_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49162,
   "name": "b_C00A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49207,
   "name": "codename_line",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49209,
   "name": "codename_cursor",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49214,
   "name": "codename_key",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 49218,
   "name": "b_C042",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49254,
   "name": "b_C066",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49271,
   "name": "b_C077",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49282,
   "name": "codename_delete",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 49295,
   "name": "codename_return",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 49312,
   "name": "b_C0A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49342,
   "name": "codename_scroll",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 49344,
   "name": "b_C0C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49403,
   "name": "codename_put",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49404,
   "name": "codename_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49405,
   "name": "a_C0FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49407,
   "name": "check_codename",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49409,
   "name": "b_C101",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49433,
   "name": "f_C119",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49437,
   "name": "codename_wrong",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 49443,
   "name": "b_C123",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49458,
   "name": "r_C132",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49459,
   "name": "codename_answer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49466,
   "name": "codename_wrong_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49471,
   "name": "monitor_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49664,
   "name": "start_episode",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49680,
   "name": "b_C210",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49694,
   "name": "new_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49745,
   "name": "b_C251",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49831,
   "name": "b_C2A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49861,
   "name": "b_C2C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49867,
   "name": "restore_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49883,
   "name": "b_C2DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49899,
   "name": "b_C2EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49911,
   "name": "b_C2F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49961,
   "name": "b_C329",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49973,
   "name": "b_C335",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49983,
   "name": "b_C33F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49995,
   "name": "b_C34B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50045,
   "name": "b_C37D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50057,
   "name": "b_C389",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50068,
   "name": "make_row_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50138,
   "name": "b_C3DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50143,
   "name": "a_C3DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50144,
   "name": "a_C3E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50152,
   "name": "a_C3E8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50153,
   "name": "a_C3E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50156,
   "name": "make_column_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50177,
   "name": "a_C401",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50178,
   "name": "a_C402",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50183,
   "name": "a_C407",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50184,
   "name": "a_C408",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50187,
   "name": "plot_pixel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50218,
   "name": "a_C42A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50219,
   "name": "a_C42B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50223,
   "name": "pixel_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50227,
   "name": "f_C433",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50243,
   "name": "init_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 50322,
   "name": "b_C492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50333,
   "name": "b_C49D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50405,
   "name": "sprite_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50422,
   "name": "f_C4F6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50430,
   "name": "irq_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50476,
   "name": "a_C52C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50492,
   "name": "b_C53C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50505,
   "name": "b_C549",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50506,
   "name": "a_C54A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50507,
   "name": "a_C54B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50513,
   "name": "a_C551",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50514,
   "name": "a_C552",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50604,
   "name": "set_next_irq",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 50629,
   "name": "f_C5C5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50633,
   "name": "irq_text_only",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50700,
   "name": "irq_guard_lower",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50704,
   "name": "a_C610",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50705,
   "name": "a_C611",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50710,
   "name": "a_C616",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50711,
   "name": "a_C617",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50761,
   "name": "irq_door_lower",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50763,
   "name": "a_C64B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50800,
   "name": "irq_cabinet",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50804,
   "name": "b_C674",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50823,
   "name": "b_C687",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50906,
   "name": "sprite_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50914,
   "name": "sprite_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50922,
   "name": "sprite_places",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50923,
   "name": "f_C6EB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50938,
   "name": "sprite_x_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50939,
   "name": "irq_priority_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50958,
   "name": "irq_blank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50978,
   "name": "irq_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51032,
   "name": "j_C758",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51096,
   "name": "b_C798",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51099,
   "name": "b_C79B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51114,
   "name": "b_C7AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51128,
   "name": "guard_images",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51131,
   "name": "a_C7BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51134,
   "name": "a_C7BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51137,
   "name": "a_C7C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51140,
   "name": "a_C7C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51143,
   "name": "f_C7C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51146,
   "name": "guard_image_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51147,
   "name": "f_C7CB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51158,
   "name": "guard_x_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51161,
   "name": "a_C7D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51164,
   "name": "a_C7DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51167,
   "name": "a_C7DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51170,
   "name": "a_C7E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51173,
   "name": "f_C7E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51176,
   "name": "guard_x_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51177,
   "name": "f_C7E9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51188,
   "name": "f_C7F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51191,
   "name": "main_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 51199,
   "name": "j_C7FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51200,
   "name": "f_C800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51202,
   "name": "input_line",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51204,
   "name": "j_C804",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51209,
   "name": "b_C809",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51252,
   "name": "b_C834",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51265,
   "name": "b_C841",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51276,
   "name": "b_C84C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51289,
   "name": "b_C859",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51303,
   "name": "b_C867",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51305,
   "name": "b_C869",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51337,
   "name": "explode",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51349,
   "name": "b_C895",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51397,
   "name": "b_C8C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51427,
   "name": "b_C8E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51444,
   "name": "b_C8F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51490,
   "name": "clear_text_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51492,
   "name": "b_C924",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51569,
   "name": "delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51575,
   "name": "delay_length",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51578,
   "name": "b_C97A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51590,
   "name": "noise_burst",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51597,
   "name": "b_C98D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51644,
   "name": "flicker",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51648,
   "name": "b_C9C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51658,
   "name": "explosion_pitches",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51674,
   "name": "f_C9DA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51690,
   "name": "draw_circle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51721,
   "name": "j_CA09",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51784,
   "name": "b_CA48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51814,
   "name": "j_CA66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51839,
   "name": "b_CA7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51850,
   "name": "r_CA8A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51851,
   "name": "plot_eight",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51936,
   "name": "plot_centred",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51980,
   "name": "a_CB0C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51981,
   "name": "a_CB0D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51984,
   "name": "r_CB10",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51985,
   "name": "circle_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51989,
   "name": "f_CB15",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51993,
   "name": "a_CB19",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52001,
   "name": "erase_bits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52113,
   "name": "mirrored_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52133,
   "name": "explosion_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52134,
   "name": "f_CBA6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 52139,
   "name": "nmi_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52156,
   "name": "dictionary_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52920,
   "name": "pattern_leftover",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 4096,
   "type": "line",
   "text": "The addresses of messages 0-127, for print_message."
  },
  {
   "address": 4097,
   "type": "line",
   "text": "The high byte of message 0's address: print_message reads the table's high bytes from here (LDA $1001,Y)."
  },
  {
   "address": 4352,
   "type": "line",
   "text": "The addresses of messages 128-187; the messages follow straight after, at $1178."
  },
  {
   "address": 4353,
   "type": "line",
   "text": "The high byte of message 128's address, read with LDA $1101,Y."
  },
  {
   "address": 4472,
   "type": "line",
   "text": "Message 0, INVENTORY's answer (inventory)."
  },
  {
   "address": 4525,
   "type": "line",
   "text": "Message 1, what EIOK and EXAMINE ALL describe while the cabinet is sealed (describe)."
  },
  {
   "address": 4602,
   "type": "line",
   "text": "Seven bytes after message 1's end, five spaces, a RETURN and a zero, that nothing prints."
  },
  {
   "address": 4609,
   "type": "line",
   "text": "Message 2, what EIOK describes once the drawer is open."
  },
  {
   "address": 4689,
   "type": "line",
   "text": "Message 3, what EIOK describes once the timer shows."
  },
  {
   "address": 4762,
   "type": "line",
   "text": "Message 4, LISTEN's usual answer (listen)."
  },
  {
   "address": 4822,
   "type": "line",
   "text": "Message 5, LISTEN's answer while a guard walks outside and the door is open."
  },
  {
   "address": 4884,
   "type": "line",
   "text": "Message 6, HIDE's answer, whether or not you are hidden (hide)."
  },
  {
   "address": 4923,
   "type": "line",
   "text": "Message 7, for the number 12051987 with no keypad chosen, followed by the alarm (type_number)."
  },
  {
   "address": 4975,
   "type": "line",
   "text": "Message 8, for the number on the first or third keypad, before the bomb goes off."
  },
  {
   "address": 5015,
   "type": "line",
   "text": "Message 9, for the number on the second keypad: the drawer opens."
  },
  {
   "address": 5076,
   "type": "line",
   "text": "Message 10, OPEN DOOR's answer (open_door)."
  },
  {
   "address": 5094,
   "type": "line",
   "text": "Message 11, OPEN CABINET's answer while it is sealed (open_cabinet)."
  },
  {
   "address": 5159,
   "type": "line",
   "text": "Message 12, OPEN anything that does not open (open_other)."
  },
  {
   "address": 5198,
   "type": "line",
   "text": "Three spaces after message 12's end, that nothing prints."
  },
  {
   "address": 5201,
   "type": "line",
   "text": "Message 13, CLOSE DOOR's answer (close_door)."
  },
  {
   "address": 5221,
   "type": "line",
   "text": "Message 14, CLOSE CABINET's answer (close_cabinet)."
  },
  {
   "address": 5267,
   "type": "line",
   "text": "Message 15, CLOSE anything else (close_other)."
  },
  {
   "address": 5307,
   "type": "line",
   "text": "Message 16, SHOOT's only answer (shoot_anything)."
  },
  {
   "address": 5335,
   "type": "line",
   "text": "Message 17, which nothing prints."
  },
  {
   "address": 5357,
   "type": "line",
   "text": "Message 18, for ATTACK, KICK, HIT or KILL the DOOR (attack_door)."
  },
  {
   "address": 5402,
   "type": "line",
   "text": "Message 19, one of four answers to attacking the cabinet or the bomb, before it goes off (attack_replies)."
  },
  {
   "address": 5463,
   "type": "line",
   "text": "Message 20, for attacking the GEIGER counter (attack_geiger)."
  },
  {
   "address": 5533,
   "type": "line",
   "text": "Message 21, DESTROY DOOR's answer (destroy_door)."
  },
  {
   "address": 5582,
   "type": "line",
   "text": "A T, a RETURN and a zero after message 21's end, that nothing prints."
  },
  {
   "address": 5585,
   "type": "line",
   "text": "Message 22, which nothing prints."
  },
  {
   "address": 5618,
   "type": "line",
   "text": "Message 23, DESTROY GEIGER's answer (destroy_geiger)."
  },
  {
   "address": 5671,
   "type": "line",
   "text": "Message 24, EXAMINE DOOR while the cabinet is sealed."
  },
  {
   "address": 5703,
   "type": "line",
   "text": "Message 25, EXAMINE CABINET or FILING while the cabinet is sealed."
  },
  {
   "address": 5782,
   "type": "line",
   "text": "Message 26, EXAMINE KEYPAD or PAD while the cabinet is sealed."
  },
  {
   "address": 5812,
   "type": "line",
   "text": "Message 27, EXAMINE GEIGER or COUNTER while the cabinet is sealed."
  },
  {
   "address": 5871,
   "type": "line",
   "text": "Message 28, EXAMINE FIRST while the cabinet is sealed."
  },
  {
   "address": 5929,
   "type": "line",
   "text": "Message 29, EXAMINE SECOND while the cabinet is sealed."
  },
  {
   "address": 5988,
   "type": "line",
   "text": "Message 30, EXAMINE THIRD while the cabinet is sealed."
  },
  {
   "address": 6046,
   "type": "line",
   "text": "Message 31, EXAMINE BOMB while the cabinet is sealed."
  },
  {
   "address": 6089,
   "type": "line",
   "text": "Message 32, EXAMINE LIGHT while the cabinet is sealed."
  },
  {
   "address": 6122,
   "type": "line",
   "text": "Message 33, EXAMINE BUTTON while the cabinet is sealed."
  },
  {
   "address": 6213,
   "type": "line",
   "text": "Message 34, EXAMINE TIMER while the cabinet is sealed."
  },
  {
   "address": 6236,
   "type": "line",
   "text": "Message 35, which nothing prints."
  },
  {
   "address": 6248,
   "type": "line",
   "text": "Message 36, EXAMINE WIRE while the cabinet is sealed."
  },
  {
   "address": 6281,
   "type": "line",
   "text": "Message 37, EXAMINE GREEN while the cabinet is sealed."
  },
  {
   "address": 6315,
   "type": "line",
   "text": "Message 38, EXAMINE RED while the cabinet is sealed."
  },
  {
   "address": 6332,
   "type": "line",
   "text": "Message 39, EXAMINE YELLOW while the cabinet is sealed."
  },
  {
   "address": 6365,
   "type": "line",
   "text": "Message 40, EXAMINE BLUE while the cabinet is sealed."
  },
  {
   "address": 6406,
   "type": "line",
   "text": "Message 41, EXAMINE DOOR while the drawer is open."
  },
  {
   "address": 6434,
   "type": "line",
   "text": "Message 42, EXAMINE CABINET or FILING while the drawer is open."
  },
  {
   "address": 6510,
   "type": "line",
   "text": "Message 43, EXAMINE KEYPAD or PAD while the drawer is open."
  },
  {
   "address": 6556,
   "type": "line",
   "text": "Message 44, EXAMINE GEIGER or COUNTER while the drawer is open."
  },
  {
   "address": 6614,
   "type": "line",
   "text": "Message 45, EXAMINE FIRST while the drawer is open."
  },
  {
   "address": 6648,
   "type": "line",
   "text": "Message 46, EXAMINE SECOND while the drawer is open."
  },
  {
   "address": 6682,
   "type": "line",
   "text": "Message 47, EXAMINE THIRD while the drawer is open."
  },
  {
   "address": 6716,
   "type": "line",
   "text": "Message 48, EXAMINE BOMB while the drawer is open."
  },
  {
   "address": 6785,
   "type": "line",
   "text": "Message 49, EXAMINE LIGHT while the drawer is open."
  },
  {
   "address": 6888,
   "type": "line",
   "text": "Message 50, EXAMINE BUTTON while the drawer is open."
  },
  {
   "address": 6952,
   "type": "line",
   "text": "Three spaces after message 50's end, that nothing prints."
  },
  {
   "address": 6955,
   "type": "line",
   "text": "Message 51, EXAMINE TIMER while the drawer is open."
  },
  {
   "address": 6976,
   "type": "line",
   "text": "Message 52, which nothing prints."
  },
  {
   "address": 6988,
   "type": "line",
   "text": "Message 53, EXAMINE WIRE while the drawer is open."
  },
  {
   "address": 7047,
   "type": "line",
   "text": "Message 54, EXAMINE GREEN while the drawer is open."
  },
  {
   "address": 7080,
   "type": "line",
   "text": "Message 55, EXAMINE RED while the drawer is open."
  },
  {
   "address": 7112,
   "type": "line",
   "text": "Message 56, EXAMINE YELLOW while the drawer is open."
  },
  {
   "address": 7146,
   "type": "line",
   "text": "Message 57, EXAMINE BLUE while the drawer is open."
  },
  {
   "address": 7163,
   "type": "line",
   "text": "Message 58, EXAMINE DOOR once the timer shows."
  },
  {
   "address": 7204,
   "type": "line",
   "text": "Message 59, EXAMINE CABINET or FILING once the timer shows."
  },
  {
   "address": 7264,
   "type": "line",
   "text": "Message 60, EXAMINE KEYPAD or PAD once the timer shows."
  },
  {
   "address": 7301,
   "type": "line",
   "text": "Message 61, EXAMINE GEIGER or COUNTER once the timer shows."
  },
  {
   "address": 7350,
   "type": "line",
   "text": "Message 62, EXAMINE FIRST once the timer shows."
  },
  {
   "address": 7377,
   "type": "line",
   "text": "Message 63, EXAMINE SECOND once the timer shows."
  },
  {
   "address": 7404,
   "type": "line",
   "text": "Message 64, EXAMINE THIRD once the timer shows."
  },
  {
   "address": 7431,
   "type": "line",
   "text": "Message 65, EXAMINE BOMB once the timer shows."
  },
  {
   "address": 7528,
   "type": "line",
   "text": "Message 66, EXAMINE LIGHT once the timer shows."
  },
  {
   "address": 7568,
   "type": "line",
   "text": "Message 67, EXAMINE BUTTON once the timer shows."
  },
  {
   "address": 7609,
   "type": "line",
   "text": "Message 68, EXAMINE TIMER once the timer shows."
  },
  {
   "address": 7686,
   "type": "line",
   "text": "Message 69, which nothing prints."
  },
  {
   "address": 7699,
   "type": "line",
   "text": "Message 70, EXAMINE WIRE once the timer shows."
  },
  {
   "address": 7729,
   "type": "line",
   "text": "Message 71, EXAMINE GREEN once the timer shows."
  },
  {
   "address": 7749,
   "type": "line",
   "text": "Message 72, EXAMINE RED once the timer shows."
  },
  {
   "address": 7769,
   "type": "line",
   "text": "Message 73, EXAMINE YELLOW once the timer shows."
  },
  {
   "address": 7789,
   "type": "line",
   "text": "Message 74, EXAMINE BLUE once the timer shows."
  },
  {
   "address": 7809,
   "type": "line",
   "text": "Message 75, USE DOOR's answer (use_door)."
  },
  {
   "address": 7842,
   "type": "line",
   "text": "Message 76, USE CABINET's answer (use_cabinet)."
  },
  {
   "address": 7878,
   "type": "line",
   "text": "Message 77, for USE, PUSH or PRESS a KEYPAD or PAD (use_keypad)."
  },
  {
   "address": 7928,
   "type": "line",
   "text": "Message 78, USE GEIGER's answer: the clue to the second keypad (use_geiger)."
  },
  {
   "address": 8031,
   "type": "line",
   "text": "Message 79, after choosing the FIRST, SECOND or THIRD keypad (choose_keypad)."
  },
  {
   "address": 8051,
   "type": "line",
   "text": "Message 80, for USE on the lights or buttons while the cabinet is sealed (use_buttons)."
  },
  {
   "address": 8065,
   "type": "line",
   "text": "Message 81, for USE on the lights or buttons once the bomb is found."
  },
  {
   "address": 8101,
   "type": "line",
   "text": "Message 82, USE anything else (use_other)."
  },
  {
   "address": 8139,
   "type": "line",
   "text": "Message 83, PUSH DOOR's answer (push_door)."
  },
  {
   "address": 8172,
   "type": "line",
   "text": "Message 84, for pushing the cabinet, bomb, timer or a wire, before the bomb goes off (push_bomb)."
  },
  {
   "address": 8226,
   "type": "line",
   "text": "Message 85, for PUSH LIGHT or BUTTON (push_lights)."
  },
  {
   "address": 8295,
   "type": "line",
   "text": "Message 86, for pushing a coloured button before the bomb is found (push_red)."
  },
  {
   "address": 8322,
   "type": "line",
   "text": "Message 87, for a button pushed in its turn, and for an unknown word typed after choosing a keypad (parse)."
  },
  {
   "address": 8339,
   "type": "line",
   "text": "Message 88, for a button pushed out of turn, before the bomb goes off."
  },
  {
   "address": 8348,
   "type": "line",
   "text": "Message 89, after the third button, GREEN: the timer shows."
  },
  {
   "address": 8423,
   "type": "line",
   "text": "Message 90, PUSH anything else (push_other)."
  },
  {
   "address": 8462,
   "type": "line",
   "text": "Message 91, CUT anything else (cut_other)."
  },
  {
   "address": 8500,
   "type": "line",
   "text": "Message 92, CUT TIMER's answer once it shows, before the bomb goes off (cut_timer)."
  },
  {
   "address": 8531,
   "type": "line",
   "text": "Message 93, CUT WIRE's answer once the timer shows (cut_wire)."
  },
  {
   "address": 8590,
   "type": "line",
   "text": "Message 94, CUT ALL's answer once the timer shows, before the bomb goes off (cut_all)."
  },
  {
   "address": 8632,
   "type": "line",
   "text": "Message 95, for cutting a coloured wire before the timer shows (cut_red)."
  },
  {
   "address": 8644,
   "type": "line",
   "text": "Message 96, for a wire cut in its turn."
  },
  {
   "address": 8661,
   "type": "line",
   "text": "Message 97, for a wire cut out of turn, before the bomb goes off."
  },
  {
   "address": 8690,
   "type": "line",
   "text": "Message 98, CUT BLUE's answer, before the bomb goes off (cut_blue)."
  },
  {
   "address": 8719,
   "type": "line",
   "text": "Message 99, one of four answers to a line with no verb (unknown_verb_replies), and PUSH ALL's before the bomb is found."
  },
  {
   "address": 8744,
   "type": "line",
   "text": "Message 100, one of the four answers to a line with no verb."
  },
  {
   "address": 8764,
   "type": "line",
   "text": "Message 101, another answer to a line with no verb."
  },
  {
   "address": 8806,
   "type": "line",
   "text": "Message 102, the last answer to a line with no verb."
  },
  {
   "address": 8828,
   "type": "line",
   "text": "Message 103, one of four answers to a verb with no noun (unknown_noun_replies)."
  },
  {
   "address": 8865,
   "type": "line",
   "text": "Message 104, another answer to a verb with no noun."
  },
  {
   "address": 8901,
   "type": "line",
   "text": "Message 105, a third answer to a verb with no noun."
  },
  {
   "address": 8908,
   "type": "line",
   "text": "Message 106, the last answer to a verb with no noun."
  },
  {
   "address": 8936,
   "type": "line",
   "text": "Message 107, OPEN CABINET's answer once the bomb has been found."
  },
  {
   "address": 8965,
   "type": "line",
   "text": "Message 108, CUT TIMER's answer before it shows."
  },
  {
   "address": 8978,
   "type": "line",
   "text": "Message 109, CUT WIRE's and CUT ALL's answer before the timer shows."
  },
  {
   "address": 9001,
   "type": "line",
   "text": "Message 110, after the third wire, GREEN: the bomb is defused."
  },
  {
   "address": 9055,
   "type": "line",
   "text": "Message 111, which nothing prints: DUMMY ENTRY."
  },
  {
   "address": 9068,
   "type": "line",
   "text": "Message 112, the first part of the epilogue after an explosion when an odd number of commands has been typed (bomb_explodes)."
  },
  {
   "address": 9310,
   "type": "line",
   "text": "Message 113, the second part of that epilogue."
  },
  {
   "address": 9504,
   "type": "line",
   "text": "Message 114, the last part of that epilogue."
  },
  {
   "address": 9658,
   "type": "line",
   "text": "Message 115, the first part of the epilogue after an explosion when an even number of commands has been typed."
  },
  {
   "address": 9831,
   "type": "line",
   "text": "Message 116, the second part of the Faslane epilogue."
  },
  {
   "address": 9937,
   "type": "line",
   "text": "Message 117, the last part of the Faslane epilogue."
  },
  {
   "address": 10063,
   "type": "line",
   "text": "Message 118, the first part of the epilogue after the bomb is defused (defused_ending)."
  },
  {
   "address": 10292,
   "type": "line",
   "text": "Message 119, the second part of the good epilogue."
  },
  {
   "address": 10379,
   "type": "line",
   "text": "Message 120, the last part of the good epilogue."
  },
  {
   "address": 10525,
   "type": "line",
   "text": "Message 121, for OPEN, CLOSE, ATTACK, PUSH or PRESS the BOX or ALARM (box_out_of_reach)."
  },
  {
   "address": 10555,
   "type": "line",
   "text": "Message 122, for OPEN, PUSH or PRESS the WINDOW (window_jammed, push_window)."
  },
  {
   "address": 10582,
   "type": "line",
   "text": "Message 123, CLOSE WINDOW's answer (close_window)."
  },
  {
   "address": 10612,
   "type": "line",
   "text": "Message 124, which nothing prints, one of those for a gun the game never gives you."
  },
  {
   "address": 10633,
   "type": "line",
   "text": "Message 125, which nothing prints, one of those for a gun the game never gives you."
  },
  {
   "address": 10673,
   "type": "line",
   "text": "Message 126, which nothing prints, one of those for a gun the game never gives you."
  },
  {
   "address": 10691,
   "type": "line",
   "text": "Message 127, which nothing prints, one of those for a gun the game never gives you."
  },
  {
   "address": 10747,
   "type": "line",
   "text": "Message 128, when there is no guard to fight or examine (no_guard)."
  },
  {
   "address": 10768,
   "type": "line",
   "text": "Message 129, one of the four answers to attacking the cabinet or the bomb."
  },
  {
   "address": 10791,
   "type": "line",
   "text": "Message 130, another of the answers to attacking the cabinet or the bomb."
  },
  {
   "address": 10801,
   "type": "line",
   "text": "Message 131, the last of the answers to attacking the cabinet or the bomb."
  },
  {
   "address": 10832,
   "type": "line",
   "text": "Message 132, for ATTACK CABLE, before the alarm, and for CUT or DESTROY CABLE, which silences it (attack_cable, cut_cable)."
  },
  {
   "address": 10836,
   "type": "line",
   "text": "Message 133, when the alarm sounds (raise_alarm)."
  },
  {
   "address": 10863,
   "type": "line",
   "text": "Message 134, for a miss with one guard in the room (fight_misses)."
  },
  {
   "address": 10906,
   "type": "line",
   "text": "Message 135, for a miss with two guards in the room (fight_misses)."
  },
  {
   "address": 10925,
   "type": "line",
   "text": "Message 136, for a miss with three guards in the room (fight_misses)."
  },
  {
   "address": 10965,
   "type": "line",
   "text": "Message 137, for a miss with four guards in the room (fight_misses)."
  },
  {
   "address": 10986,
   "type": "line",
   "text": "Message 138, for a miss with five guards in the room (fight_misses)."
  },
  {
   "address": 11043,
   "type": "line",
   "text": "Message 139, which nothing prints."
  },
  {
   "address": 11066,
   "type": "line",
   "text": "Message 140, for fighting or cutting a guard while one is outside and none in the room (fight_guard, cut_guard)."
  },
  {
   "address": 11085,
   "type": "line",
   "text": "Message 141, the first of four, picked at random, for a guard struck down (fight_hits)."
  },
  {
   "address": 11115,
   "type": "line",
   "text": "Message 142, the second of four, picked at random, for a guard struck down (fight_hits)."
  },
  {
   "address": 11144,
   "type": "line",
   "text": "Message 143, the third of four, picked at random, for a guard struck down (fight_hits)."
  },
  {
   "address": 11166,
   "type": "line",
   "text": "Message 144, the fourth of four, picked at random, for a guard struck down (fight_hits)."
  },
  {
   "address": 11212,
   "type": "line",
   "text": "Message 145, for ATTACK, KICK, HIT or KILL the WINDOW (attack_window)."
  },
  {
   "address": 11237,
   "type": "line",
   "text": "Message 146, for attacking the WALL (attack_wall)."
  },
  {
   "address": 11273,
   "type": "line",
   "text": "Message 147, the first of four, picked at random, for DESTROY on the cabinet or the bomb, before it goes off (destroy_replies)."
  },
  {
   "address": 11303,
   "type": "line",
   "text": "Message 148, the second of four, picked at random, for DESTROY on the cabinet or the bomb, before it goes off (destroy_replies)."
  },
  {
   "address": 11320,
   "type": "line",
   "text": "Message 149, the third of four, picked at random, for DESTROY on the cabinet or the bomb, before it goes off (destroy_replies)."
  },
  {
   "address": 11335,
   "type": "line",
   "text": "Message 150, the fourth of four, picked at random, for DESTROY on the cabinet or the bomb, before it goes off (destroy_replies)."
  },
  {
   "address": 11376,
   "type": "line",
   "text": "Message 151, DESTROY BOX, ALARM or DRAWER (destroy_box)."
  },
  {
   "address": 11409,
   "type": "line",
   "text": "Message 152, DESTROY WINDOW's answer (destroy_window)."
  },
  {
   "address": 11439,
   "type": "line",
   "text": "Message 153, DESTROY WALL's answer (destroy_wall)."
  },
  {
   "address": 11472,
   "type": "line",
   "text": "Message 154, EXAMINE BOX or ALARM's answer at any time (examine)."
  },
  {
   "address": 11516,
   "type": "line",
   "text": "Message 155, EXAMINE CABLE's answer at any time (examine)."
  },
  {
   "address": 11581,
   "type": "line",
   "text": "Message 156, EXAMINE GUARD or KGB's answer at any time (examine)."
  },
  {
   "address": 11668,
   "type": "line",
   "text": "Message 157, EXAMINE WINDOW's answer at any time (examine)."
  },
  {
   "address": 11750,
   "type": "line",
   "text": "Message 158, EXAMINE WALL's answer at any time (examine)."
  },
  {
   "address": 11830,
   "type": "line",
   "text": "Message 159, PUSH or PRESS WALL (push_wall)."
  },
  {
   "address": 11867,
   "type": "line",
   "text": "Message 160, which nothing prints; PUSH ALL's reply, it seems, but push_all prints message 170."
  },
  {
   "address": 11905,
   "type": "line",
   "text": "Message 161, CUT GUARD's answer with guards in the room (cut_guard)."
  },
  {
   "address": 11984,
   "type": "line",
   "text": "Message 162, for the unused shoot-out's ending, which nothing reaches (shootout_ending)."
  },
  {
   "address": 12009,
   "type": "line",
   "text": "Message 163, after the 144th command, before the bomb goes off (check_turn)."
  },
  {
   "address": 12049,
   "type": "line",
   "text": "Message 164, for death with one guard in the room, before the bomb goes off (killed_messages)."
  },
  {
   "address": 12073,
   "type": "line",
   "text": "Message 165, for death with two guards in the room, before the bomb goes off (killed_messages)."
  },
  {
   "address": 12099,
   "type": "line",
   "text": "Message 166, for death with three guards in the room, before the bomb goes off (killed_messages)."
  },
  {
   "address": 12128,
   "type": "line",
   "text": "Message 167, for death with four guards in the room, before the bomb goes off (killed_messages)."
  },
  {
   "address": 12156,
   "type": "line",
   "text": "Message 168, for death with five guards in the room, before the bomb goes off (killed_messages)."
  },
  {
   "address": 12187,
   "type": "line",
   "text": "Message 169, the first of four, picked at random, for an attack you evade (evade_messages)."
  },
  {
   "address": 12219,
   "type": "line",
   "text": "Message 170, one of the attacks you evade (evade_messages); also, it seems by mistake, PUSH ALL's answer once the bomb is found, before it goes off (push_all)."
  },
  {
   "address": 12250,
   "type": "line",
   "text": "Message 171, the third of four, picked at random, for an attack you evade (evade_messages)."
  },
  {
   "address": 12287,
   "type": "line",
   "text": "Message 172, the fourth of four, picked at random, for an attack you evade (evade_messages)."
  },
  {
   "address": 12324,
   "type": "line",
   "text": "Message 173, for the unused shoot-out's empty gun, which nothing reaches (out_of_ammo_messages)."
  },
  {
   "address": 12344,
   "type": "line",
   "text": "Message 174, for OPEN or CLOSE DOOR while a guard is in the doorway or going out."
  },
  {
   "address": 12374,
   "type": "line",
   "text": "Message 175, the first of four, picked at random, for a blow that lands (blow_messages)."
  },
  {
   "address": 12406,
   "type": "line",
   "text": "Message 176, the second of four, picked at random, for a blow that lands (blow_messages)."
  },
  {
   "address": 12427,
   "type": "line",
   "text": "Message 177, the third of four, picked at random, for a blow that lands (blow_messages)."
  },
  {
   "address": 12457,
   "type": "line",
   "text": "Message 178, the fourth of four, picked at random, for a blow that lands (blow_messages)."
  },
  {
   "address": 12483,
   "type": "line",
   "text": "Message 179, for one guard in the room, announced (guard_counts)."
  },
  {
   "address": 12513,
   "type": "line",
   "text": "Message 180, for two guards in the room, announced (guard_counts)."
  },
  {
   "address": 12552,
   "type": "line",
   "text": "Message 181, for three guards in the room, announced (guard_counts)."
  },
  {
   "address": 12588,
   "type": "line",
   "text": "Message 182, for four guards in the room, announced (guard_counts)."
  },
  {
   "address": 12617,
   "type": "line",
   "text": "Message 183, for five guards in the room, announced (guard_counts)."
  },
  {
   "address": 12651,
   "type": "line",
   "text": "Message 184, the opening line (show_start)."
  },
  {
   "address": 12685,
   "type": "line",
   "text": "Message 185, EXAMINE DRAWER's answer while the cabinet is sealed."
  },
  {
   "address": 12718,
   "type": "line",
   "text": "Message 186, EXAMINE DRAWER's answer while the drawer is open."
  },
  {
   "address": 12782,
   "type": "line",
   "text": "Message 187, EXAMINE DRAWER's answer once the timer shows, the same words as message 186."
  },
  {
   "address": 12846,
   "type": "line",
   "text": "The rest of the file after the last message, 3,538 bytes that nothing reads, as memory held them when it was saved: mostly $FF and $00 by turns."
  },
  {
   "address": 13360,
   "type": "line",
   "text": "Eight-byte patterns, the shape of character cells: $00 then seven $7F, $00 then seven $FF, and so on to $350F; then $FF and $00 by turns again."
  },
  {
   "address": 13680,
   "type": "line",
   "text": "More eight-byte patterns, mostly $FF, to $364F, and from $36B0 to $378E seven $FF and a $00 at a time; then $FF and $00 by turns."
  },
  {
   "address": 14704,
   "type": "line",
   "text": "$FF and $00 by turns, still nothing read."
  },
  {
   "address": 15728,
   "type": "line",
   "text": "$FF and $00 by turns to $3F3F; from $3F40 a block of $7F, $80, $FF and other values, the pattern that also fills $CEB8-$CFFF."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Sprite images 0-2, 64 bytes each: the middle drawer of the cabinet, shown by sprites 3-5."
  },
  {
   "address": 16576,
   "type": "line",
   "text": "Images 3 and 4: the bomb in the drawer, in multicolour, shown by sprites 6 and 7, whose colours are its lights."
  },
  {
   "address": 16704,
   "type": "line",
   "text": "Images 5-12: the door, its top and bottom halves in four positions from shut ($05 and $06) to wide open ($0B and $0C), shown by sprite 1."
  },
  {
   "address": 17216,
   "type": "line",
   "text": "Images 13 and 14 ($0D and $0E): small clusters of dots, the start of a shot's puff in the unused shoot-out."
  },
  {
   "address": 17344,
   "type": "line",
   "text": "Images 15-29 ($0F-$1D): the guard in five frames of three images each. The first of each frame, in multicolour, has his orange head; the other two, dark grey and doubled in height, make his body and legs."
  },
  {
   "address": 18304,
   "type": "line",
   "text": "Image 30 ($1E): the unused shoot-out's cross-hair."
  },
  {
   "address": 18368,
   "type": "line",
   "text": "Images 31-33 ($1F-$21): bursts of dots, the shot's puff and the hit's flash in the unused shoot-out."
  },
  {
   "address": 18560,
   "type": "line",
   "text": "Image 34 ($22), a small blob that no table names."
  },
  {
   "address": 18624,
   "type": "line",
   "text": "Not part of episode three, and nothing reads it: sprite slots 35-39 hold bytes left from an earlier build of episode two, its texts and its look and lift routines, 4 to 10 bytes below where the released episode two has them."
  },
  {
   "address": 18944,
   "type": "line",
   "text": "The codename screen, copied to the screen at $0400 by codename_screen: THE FOURTH PROTOCOL in letters built from block graphics on rows 0-11, then WHAT IS THE CODENAME FOR THIS MISSION? on row 14, all as screen codes."
  },
  {
   "address": 19200,
   "type": "line",
   "text": "The codename screen's second page, copied to $0500."
  },
  {
   "address": 19456,
   "type": "line",
   "text": "Its third page, copied to $0600: from row 12, column 32, to row 19, with the question on row 14."
  },
  {
   "address": 19704,
   "type": "line",
   "text": "The copy's last eight bytes, spaces at the start of row 19."
  },
  {
   "address": 19712,
   "type": "line",
   "text": "Not part of episode three, and nothing reads it: more of the earlier build of episode two, the packed texts from its look_flags to its descriptions of a narrow London street and a department, within a few bytes of where the released episode two has them."
  },
  {
   "address": 20416,
   "type": "line",
   "text": "Image 63 ($3F), the blank one: cleared to zeros at every new game (restore_picture), so the file's bytes here are not used."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "The warehouse room, a multicolour bitmap: the picture fills screen rows 0-19, 160 by 160 double-width pixels, with the text below it. Rows 0-2: the tops of the walls and of the doorway, the window's top, the alarm box on the wall. The door's panel and the cabinet's middle drawer are partly sprites, drawn over it."
  },
  {
   "address": 25536,
   "type": "line",
   "text": "Bitmap rows 3-5: the top of the doorway, the window, the alarm box and its cable."
  },
  {
   "address": 26496,
   "type": "line",
   "text": "Bitmap rows 6-8: the door, the bottom of the window, the cable down to the cabinet's top."
  },
  {
   "address": 27456,
   "type": "line",
   "text": "Bitmap rows 9-11: the door, the cabinet's top and its first keypad."
  },
  {
   "address": 28416,
   "type": "line",
   "text": "Bitmap rows 12-14: the foot of the door, the floor, the cabinet's top drawer and its second keypad."
  },
  {
   "address": 29376,
   "type": "line",
   "text": "Bitmap rows 15-17: the floor, the opening of the cabinet's middle drawer, which the drawer's sprites cover, and the third keypad."
  },
  {
   "address": 30336,
   "type": "line",
   "text": "Bitmap rows 18-19: the floor and the cabinet's bottom drawer."
  },
  {
   "address": 30976,
   "type": "line",
   "text": "Bitmap rows 20-24, all $55, which the text window hides."
  },
  {
   "address": 32000,
   "type": "line",
   "text": "The hidden rows' $55 go on to $7F3F."
  },
  {
   "address": 32576,
   "type": "line",
   "text": "The picture's screen memory, copied to $5000: each cell's colours 1 (high nibble) and 2 (low nibble). Rows 20-24 hold $EF, hidden by the text."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The picture's screen memory goes on, from row 4, column 32."
  },
  {
   "address": 32832,
   "type": "line",
   "text": "The picture's screen memory, second page, copied to $5100."
  },
  {
   "address": 33088,
   "type": "line",
   "text": "Third page of the picture's screen memory, copied to $5200."
  },
  {
   "address": 33344,
   "type": "line",
   "text": "Last page of the picture's screen memory, copied to $5300: rows 19-24 and the 24 bytes after, among them the sprite pointers, which the interrupts then set."
  },
  {
   "address": 33576,
   "type": "line",
   "text": "The picture's colour RAM, colour 3 of each cell, copied to $D800 with 24 bytes more. Rows 20-24 are overwritten at once with the text window's colours."
  },
  {
   "address": 33832,
   "type": "line",
   "text": "The picture's colours, second page, copied to $D900."
  },
  {
   "address": 34088,
   "type": "line",
   "text": "Third page of the picture's colours, copied to $DA00."
  },
  {
   "address": 34344,
   "type": "line",
   "text": "Last page of the picture's colours, copied to $DB00, whose rows 20-24 are then overwritten."
  },
  {
   "address": 34560,
   "type": "line",
   "text": "The number of the word find_word found in its list."
  },
  {
   "address": 34561,
   "type": "line",
   "text": "The verb's number, less five for the verbs that take a noun."
  },
  {
   "address": 34562,
   "type": "line",
   "text": "Where in the line the word being matched begins."
  },
  {
   "address": 34563,
   "type": "line",
   "text": "Frames since the bomb's lights last changed colour."
  },
  {
   "address": 34564,
   "type": "line",
   "text": "The priority bits put into $D01B for sprites 6 and 7: $C0, both behind the cabinet, at the start; $40 while the drawer slides; then 0."
  },
  {
   "address": 34565,
   "type": "line",
   "text": "The bomb's three light colours: sprites 6 and 7's shared colour, sprite 6's own ($8706) and sprite 7's own ($8707). Dark grey at the start; red, yellow and green when the drawer opens; then moving on through the colours as they flash."
  },
  {
   "address": 34566,
   "type": "line",
   "text": "Sprite 6's colour, the bomb's second light: yellow when the drawer opens."
  },
  {
   "address": 34567,
   "type": "line",
   "text": "Sprite 7's colour, the bomb's third light: green when the drawer opens."
  },
  {
   "address": 34568,
   "type": "line",
   "text": "The bomb's other shared colour: dark grey, then grey once the drawer opens."
  },
  {
   "address": 34569,
   "type": "line",
   "text": "Working bytes for make_row_entry, make_column_entry and draw_circle, to $870B."
  },
  {
   "address": 34570,
   "type": "line",
   "text": "Working byte: in make_row_entry the low byte of the offset being built; in draw_circle the high byte of the step added to the decision value."
  },
  {
   "address": 34571,
   "type": "line",
   "text": "Working byte: the high byte of a row offset being built."
  },
  {
   "address": 34572,
   "type": "line",
   "text": "The radius of the explosion's ring being drawn."
  },
  {
   "address": 34573,
   "type": "line",
   "text": "draw_circle's x, y ($870E), and the same with bit 7 set for minus ($870F, $8710)."
  },
  {
   "address": 34574,
   "type": "line",
   "text": "draw_circle's y, counting down from the radius."
  },
  {
   "address": 34575,
   "type": "line",
   "text": "draw_circle's x with bit 7 set, the index for minus x."
  },
  {
   "address": 34576,
   "type": "line",
   "text": "draw_circle's y with bit 7 set, the index for minus y."
  },
  {
   "address": 34577,
   "type": "line",
   "text": "draw_circle's decision value, two bytes, with 512 added."
  },
  {
   "address": 34578,
   "type": "line",
   "text": "The decision value's high byte, kept 2 more than it is: below 2 means negative."
  },
  {
   "address": 34579,
   "type": "line",
   "text": "Not used: the byte between the circle's working bytes and irq_top."
  },
  {
   "address": 34580,
   "type": "line",
   "text": "The address of the first raster interrupt of each frame: irq_picture, or irq_text_only after an explosion."
  },
  {
   "address": 34581,
   "type": "line",
   "text": "The high byte of irq_top."
  },
  {
   "address": 34582,
   "type": "line",
   "text": "The background colour of the text-only screen after an explosion: black."
  },
  {
   "address": 34583,
   "type": "line",
   "text": "Not used, after the text-only screen's background."
  },
  {
   "address": 34584,
   "type": "line",
   "text": "The picture's background colour: white, flickering through the colours as the bomb goes off."
  },
  {
   "address": 34585,
   "type": "line",
   "text": "Which of the three ring colours comes next (0-2)."
  },
  {
   "address": 34586,
   "type": "line",
   "text": "The sprites switched on in the picture's top band: all, or none after an explosion."
  },
  {
   "address": 34587,
   "type": "line",
   "text": "Frames between colour changes of the bomb's lights: 15, 8 once the timer shows, faster still during an explosion."
  },
  {
   "address": 34588,
   "type": "line",
   "text": "noise_burst's outer count, 40 down."
  },
  {
   "address": 34589,
   "type": "line",
   "text": "noise_burst's random high bits."
  },
  {
   "address": 34590,
   "type": "line",
   "text": "The guard's offsets added to his images' places: x, then y ($871F)."
  },
  {
   "address": 34591,
   "type": "line",
   "text": "The guard's y offset, added to his images' places."
  },
  {
   "address": 34592,
   "type": "line",
   "text": "The unused shoot-out's cross-hair: its x's high bit, x ($8721) and y ($8722)."
  },
  {
   "address": 34593,
   "type": "line",
   "text": "The unused cross-hair's x, low byte, 17 to 326 with its high bit."
  },
  {
   "address": 34594,
   "type": "line",
   "text": "The unused cross-hair's y, 50 to 187."
  },
  {
   "address": 34595,
   "type": "line",
   "text": "The priority bits put into $D01B for the guard's sprites 2 and 3: $0C, behind the picture, while he is outside; 0 in the doorway and coming in."
  },
  {
   "address": 34596,
   "type": "line",
   "text": "Not used, between the guard's priority and the text background."
  },
  {
   "address": 34597,
   "type": "line",
   "text": "The text window's background and border: light blue, black after an explosion."
  },
  {
   "address": 34598,
   "type": "line",
   "text": "alarm_sound's random high bits."
  },
  {
   "address": 34599,
   "type": "line",
   "text": "The column of the input line's cursor."
  },
  {
   "address": 34600,
   "type": "line",
   "text": "The unused shoot-out's rounds: 192."
  },
  {
   "address": 34601,
   "type": "line",
   "text": "The low byte of the guards' timer, counted up while a key is awaited; it starts from whatever the file holds here. The high byte is at $8730."
  },
  {
   "address": 34602,
   "type": "line",
   "text": "Not used, to $872F."
  },
  {
   "address": 34608,
   "type": "line",
   "text": "The guards' timer's high byte: a guard may set out each time it reaches an even number."
  },
  {
   "address": 34609,
   "type": "line",
   "text": "Not used, to $877F: bytes left from an earlier build of episode two, the end of its ironmonger's conversation (as from $8725), a few bytes above where the released episode two has it."
  },
  {
   "address": 34688,
   "type": "line",
   "text": "1 once the drawer has slid open."
  },
  {
   "address": 34689,
   "type": "line",
   "text": "1 while the door is open."
  },
  {
   "address": 34690,
   "type": "line",
   "text": "Counted up at each explosion, and never read."
  },
  {
   "address": 34691,
   "type": "line",
   "text": "The keypad chosen for the next command: 0 none, 1 the first or third, $FF the second."
  },
  {
   "address": 34692,
   "type": "line",
   "text": "0 the cabinet sealed, 2 the drawer open, 4 the timer showing, $80 defused."
  },
  {
   "address": 34693,
   "type": "line",
   "text": "The count of buttons pressed in their turn."
  },
  {
   "address": 34694,
   "type": "line",
   "text": "The count of wires cut in their turn."
  },
  {
   "address": 34695,
   "type": "line",
   "text": "The guard's state, 0-10, for room_events."
  },
  {
   "address": 34696,
   "type": "line",
   "text": "1 while you hide behind the cabinet."
  },
  {
   "address": 34697,
   "type": "line",
   "text": "Counts frames so the guard moves every second one."
  },
  {
   "address": 34698,
   "type": "line",
   "text": "A count for the walks that move only every so many calls."
  },
  {
   "address": 34699,
   "type": "line",
   "text": "The guard's frame (0-5)."
  },
  {
   "address": 34700,
   "type": "line",
   "text": "Not used, after the guard's frame."
  },
  {
   "address": 34701,
   "type": "line",
   "text": "The unused shoot-out: frames of the shot left, then frames before the cross-hair shows again ($878E)."
  },
  {
   "address": 34702,
   "type": "line",
   "text": "Frames after a shot before the unused cross-hair shows again."
  },
  {
   "address": 34703,
   "type": "line",
   "text": "Which frame of the look round comes next: an index into guard_look_frames, set to $FF as the look starts (guard_looks) and raised every 16 steps; at 9 the look ends."
  },
  {
   "address": 34704,
   "type": "line",
   "text": "Not used, after the look count."
  },
  {
   "address": 34705,
   "type": "line",
   "text": "Set by a guard who wants the door opened; guard_timer opens it."
  },
  {
   "address": 34706,
   "type": "line",
   "text": "The guards in the room, 0-5."
  },
  {
   "address": 34707,
   "type": "line",
   "text": "Steps a guard waits before he moves."
  },
  {
   "address": 34708,
   "type": "line",
   "text": "Not used, after the guard's wait."
  },
  {
   "address": 34709,
   "type": "line",
   "text": "The unused shoot-out: frames of a hit's flash left."
  },
  {
   "address": 34710,
   "type": "line",
   "text": "Set by the unused shoot-out after 48 hits on the cabinet."
  },
  {
   "address": 34711,
   "type": "line",
   "text": "0 not sounded, 1 sounding, 2 silenced."
  },
  {
   "address": 34712,
   "type": "line",
   "text": "Set when a guard comes in with five there already; never read."
  },
  {
   "address": 34713,
   "type": "line",
   "text": "The unused shoot-out's hits on the alarm box."
  },
  {
   "address": 34714,
   "type": "line",
   "text": "Lines entered since the game began, empty ones too."
  },
  {
   "address": 34715,
   "type": "line",
   "text": "Set when the bomb goes off; stops the guard."
  },
  {
   "address": 34716,
   "type": "line",
   "text": "The unused shoot-out's hits on the cabinet."
  },
  {
   "address": 34717,
   "type": "line",
   "text": "Set by a guard who wants the door shut; guard_timer shuts it."
  },
  {
   "address": 34718,
   "type": "line",
   "text": "Set by the unused shoot-out when the gun is empty."
  },
  {
   "address": 34719,
   "type": "line",
   "text": "Blows that have landed since you last struck a guard down."
  },
  {
   "address": 34720,
   "type": "line",
   "text": "A new count of guards to announce, or 0."
  },
  {
   "address": 34721,
   "type": "line",
   "text": "Not used; cleared at each new game with the rest of $8780-$87CF, and after $87D0 bytes left from an earlier build of episode two."
  },
  {
   "address": 34728,
   "type": "line",
   "text": "Cleared at each new game with $8780-$87A7, by the same loop: $87A8-$87CF, which nothing else uses."
  },
  {
   "address": 34816,
   "type": "line",
   "text": "Built at every new game, so the file's bytes here, from an earlier build of episode two's conversations, are never read: for draw_circle, the low byte of the column offset of the point x pixels right of the centre (entries 0-79) or left of it ($80-$D0), and $FF everywhere else."
  },
  {
   "address": 35072,
   "type": "line",
   "text": "The same entries' high bytes, $FF marking a point off the picture."
  },
  {
   "address": 35328,
   "type": "line",
   "text": "The low byte of the row address y lines below the centre (0-79) or above it ($80-$D0)."
  },
  {
   "address": 35584,
   "type": "line",
   "text": "The high bytes, $FF marking a line off the picture."
  },
  {
   "address": 35840,
   "type": "line",
   "text": "For plot_pixel, built at every new game: the low byte of the offset of the byte holding each of the 160 double-width pixels. Entries $A0-$FF keep the file's bytes, left from an earlier build of episode two, and are never read."
  },
  {
   "address": 36096,
   "type": "line",
   "text": "The high bytes; again entries $A0-$FF are left over and never read."
  },
  {
   "address": 36352,
   "type": "line",
   "text": "The low byte of the offset in the bitmap of each of the 160 pixel lines; entries $A0-$FF left over."
  },
  {
   "address": 36608,
   "type": "line",
   "text": "The high bytes; entries $A0-$FF left over, the end of the earlier build's texts."
  },
  {
   "address": 36864,
   "type": "line",
   "text": "Not part of episode three, and nothing calls it: a tool left from development that writes memory from $1000 to $CDFF, 190 pages, as pulses on the cassette port's write line (bit 3 of $01), short for a 0 and long for a 1: a leader of 100 bytes, four sync bytes (JPG and $29), a header (JPG, the first page and a page counter, at $90CC), then each page followed by an EOR check byte."
  },
  {
   "address": 37077,
   "type": "line",
   "text": "From here to $9FFF, nothing read: an earlier build of episode two's packed texts, its conversations' lines from THERE IS NO SUCH PLOT on, a few bytes below where the released episode two has them."
  },
  {
   "address": 37888,
   "type": "line",
   "text": "The earlier build's texts go on, packed as episode two packs them: the end of the text for the case K grabs and the tracer bug he offers, the Boots assistant and the camera, the guard who greets Preston, the tramp, 'C' on Blodwyn, the flowers and Winkler, and the telephone's texts for DI Carmichael, Higgins at Dover, Special Branch and the Bristol harbour master ($96CA-$97F2)."
  },
  {
   "address": 38912,
   "type": "line",
   "text": "More of its texts: the harbour master, the programmer, the clerk and the secretary."
  },
  {
   "address": 39936,
   "type": "line",
   "text": "The last of its texts here: the old lady, Blodwyn, the armourer, the .44 Magnum, the guard and the captain, and Wynne-Evans."
  },
  {
   "address": 40704,
   "type": "line",
   "text": "nmi_unused's address is written here at each new game, and nothing reads it."
  },
  {
   "address": 40705,
   "type": "line",
   "text": "The pointer's high byte, $CB."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "Jump table: the parser."
  },
  {
   "address": 40963,
   "type": "line",
   "text": "The room's events, from irq_text once a frame."
  },
  {
   "address": 40966,
   "type": "line",
   "text": "The shoot-out, which nothing calls."
  },
  {
   "address": 40969,
   "type": "line",
   "text": "The opening line, from init_play."
  },
  {
   "address": 40972,
   "type": "line",
   "text": "After a pause, an empty line goes straight back to the turn's check and a new line ($C7FF). Otherwise the verb: the first word of the line found in verb_words. Unknown, the reply is OK if a keypad was just chosen (the number was wrong), otherwise one of four puzzled replies at random (unknown_verb_replies)."
  },
  {
   "address": 40988,
   "type": "line",
   "text": "find_word's three list addresses pointed at verb_words."
  },
  {
   "address": 41017,
   "type": "line",
   "text": "The verb's number kept in $8701."
  },
  {
   "address": 41044,
   "type": "line",
   "text": "The messages for a line with no verb in it: I DON'T UNDERSTAND THAT, COME AGAIN?, SORRY, THAT DOESN'T MAKE MUCH SENSE and YOU'VE LOST ME THERE."
  },
  {
   "address": 41047,
   "type": "line",
   "text": "The byte before verb_words: find_word reads the list from one byte back (LDA $A057,Y) to find the end of the word it skips."
  },
  {
   "address": 41048,
   "type": "line",
   "text": "The 18 verbs, each with bit 7 set on its last letter, in their numbers' order: INVENTORY, EIOK, LISTEN, HIDE, 12051987, OPEN, CLOSE, SHOOT, ATTACK, KICK, HIT, DESTROY, EXAMINE, USE, PUSH, PRESS, CUT, KILL; a zero ends the list. EIOK, verb 1, is the one that describes what you see, where LOOK would be expected; LOOK itself is not in the list."
  },
  {
   "address": 41140,
   "type": "line",
   "text": "Verbs 0-4 take no noun and go to verb_actions. The rest, less five, look for a noun in the words after the verb (noun_words); found, the verb's routine for that noun runs (noun_tables); not found, OK if a keypad was chosen, otherwise one of four other replies (unknown_noun_replies)."
  },
  {
   "address": 41204,
   "type": "line",
   "text": "The messages for a verb with no noun after it: THAT IS BEYOND MY POWER, I'M AFRAID, DIDN'T UNDERSTAND THAT, WHAT? and PLEASE TRY REPHRASING THAT."
  },
  {
   "address": 41208,
   "type": "line",
   "text": "The 28 nouns in their numbers' order: DOOR, CABINET, KEYPAD, GEIGER, FIRST, SECOND, THIRD, BOMB, LIGHT, BUTTON, TIMER, ALL, WIRE, GREEN, RED, YELLOW, BLUE, BOX, CABLE, GUARD, WINDOW, WALL, FILING, PAD, COUNTER, ALARM, KGB, DRAWER; a zero ends them."
  },
  {
   "address": 41346,
   "type": "line",
   "text": "Looks for a word of the line in the list at find_word's addresses, from the line's start; find_word_next ($A184) carries on after the word at X. Spaces are skipped; each word of the line is tried against every word of the list, and a list word matches when its letters, up to the one with bit 7 set, begin the line's word, so OPENING is OPEN. Found: carry clear and the word's number in $8700. Carry set at the end of the line or after 40 characters, and also when the line ends part-way through a list word, without trying the rest of the list."
  },
  {
   "address": 41348,
   "type": "line",
   "text": "find_word's entry with X where the last word matched: it goes on from the next character."
  },
  {
   "address": 41384,
   "type": "line",
   "text": "The SBC's address ($A1AA) is the list. A difference of 0 is the same letter; $80 the list word's last letter."
  },
  {
   "address": 41386,
   "type": "line",
   "text": "The SBC's list address, low byte, written by parse: verb_words or noun_words."
  },
  {
   "address": 41387,
   "type": "line",
   "text": "The SBC's list address, high byte."
  },
  {
   "address": 41396,
   "type": "line",
   "text": "No match: back to the word's start, the next list word (the LDA's address, $A1BC, one byte before the list, finds the end of this one); the list's end means the next word of the line."
  },
  {
   "address": 41404,
   "type": "line",
   "text": "The address of the byte before the list, low byte, for skipping a list word."
  },
  {
   "address": 41405,
   "type": "line",
   "text": "The high byte of the byte before the list."
  },
  {
   "address": 41409,
   "type": "line",
   "text": "The list's address again, low byte, for the LDA that looks for its end."
  },
  {
   "address": 41410,
   "type": "line",
   "text": "The list's address again, high byte."
  },
  {
   "address": 41433,
   "type": "line",
   "text": "The second drawer slides out, once: the bomb's sprite 7 brought in front of the cabinet, its body grey and its lights red, yellow and green, flashing slowly ($0F); then 32 steps, a pause each, in which sprites 3-7 move one pixel left and, every fourth step, one down; then the whole bomb in front."
  },
  {
   "address": 41525,
   "type": "line",
   "text": "AND masks clearing the x high bit of sprites 0-7, read with X twice the sprite's number."
  },
  {
   "address": 41541,
   "type": "line",
   "text": "Shuts the door if it is open: the bitmap's door drawn back in colour 3, line by line from the right (door_line, x 19 down to 8), in three stages, the door's sprite turned back a frame after each (door_frame_back)."
  },
  {
   "address": 41600,
   "type": "line",
   "text": "The door's bottom image back two, and its top image one less than that; then a pause."
  },
  {
   "address": 41617,
   "type": "line",
   "text": "Opens the door if it is shut: the bitmap's door rubbed out in the background colour, white, line by line from the left (x 8 to 19), in three stages, the door's sprite turned on a frame after each (door_frame_on)."
  },
  {
   "address": 41676,
   "type": "line",
   "text": "One vertical line of the door: plot_pixel at x X, y 48 to 106."
  },
  {
   "address": 41695,
   "type": "line",
   "text": "The door's top image on two, and its bottom image one more than that; then a pause."
  },
  {
   "address": 41712,
   "type": "line",
   "text": "The bomb goes off: the explosion (explode), long pauses, then the whole screen scrolling for one of two epilogues chosen by the count of commands typed: odd, the annals of the Australo-Indonesian Empire (messages 112-114); even, the explosion at Faslane blamed on NATO (115-117)."
  },
  {
   "address": 41773,
   "type": "line",
   "text": "The bottom lines scrolling again, a key waited for, the door shut, and a new game (new_game)."
  },
  {
   "address": 41795,
   "type": "line",
   "text": "The bomb defused: the whole screen scrolling, the sound off, the screen cleared to text, and the good epilogue (messages 118-120): the alliance government, early retirement, and a job in asset protection; then a key and a new game."
  },
  {
   "address": 41829,
   "type": "line",
   "text": "print_message's scrolling set to scroll_text_lines, the four bottom rows."
  },
  {
   "address": 41840,
   "type": "line",
   "text": "print_message's scrolling set to scroll_screen, all 25 rows, for an epilogue."
  },
  {
   "address": 41851,
   "type": "line",
   "text": "Prints message Y, then back to the main loop."
  },
  {
   "address": 41857,
   "type": "line",
   "text": "Message Y (0-127 through message_table, 128 up through message_table_high) typed onto the bottom row a character at a time with a short pause, as screen codes; each RETURN scrolls the text up (the JSR at $A3CA, scroll_bottom's or scroll_whole's choice) and starts again at the left. A zero ends it."
  },
  {
   "address": 41903,
   "type": "line",
   "text": "The message's address, low byte, written by print_message: the $C800 in the file is a placeholder."
  },
  {
   "address": 41904,
   "type": "line",
   "text": "The message's address, high byte."
  },
  {
   "address": 41931,
   "type": "line",
   "text": "The scrolling routine's address, low byte, written by scroll_bottom and scroll_whole."
  },
  {
   "address": 41932,
   "type": "line",
   "text": "The scrolling routine's address, high byte."
  },
  {
   "address": 41939,
   "type": "line",
   "text": "The cursor rubbed out if it is in the bottom row's first column, rows 1-24 moved up a row, the bottom row cleared, the cursor put back at its start."
  },
  {
   "address": 42114,
   "type": "line",
   "text": "The same for the text window: rows 22-24 moved up a row, the bottom row cleared and the cursor put back; rows 19 and 20 are filled with spaces too."
  },
  {
   "address": 42166,
   "type": "line",
   "text": "Once a frame: after an explosion the guard is kept hidden; otherwise every second frame the guard's walk takes a step, by its state ($8787) through room_event_table."
  },
  {
   "address": 42200,
   "type": "line",
   "text": "The guard's states, as routine addresses less one: 0 hidden, 1 setting out, 2-5 walking outside, 6 coming into the doorway, 7 looking round the room, 8 coming in, 9 going back out, 10 walking away. Outside he is behind the picture, so he is seen only through the window and an open door."
  },
  {
   "address": 42201,
   "type": "line",
   "text": "The high bytes of room_event_table, read with LDA $A4D9,X."
  },
  {
   "address": 42222,
   "type": "line",
   "text": "State 0: no guard; his offsets zero and the blank frame."
  },
  {
   "address": 42235,
   "type": "line",
   "text": "State 1: behind the picture again, and by a coin toss either state 5 from offset ($D8, $08) or state 2 from ($74, $04)."
  },
  {
   "address": 42284,
   "type": "line",
   "text": "State 2: past the window from its right, one pixel left a step and one up every fourth, the frame changing every second; at x offset $30, on to a walk back the other way (guard_turn)."
  },
  {
   "address": 42333,
   "type": "line",
   "text": "One byte, $EA, that nothing runs."
  },
  {
   "address": 42334,
   "type": "line",
   "text": "At x offset $30: on to guard_turn."
  },
  {
   "address": 42337,
   "type": "line",
   "text": "State 3: past the window to its right, one pixel right a step and one down every fourth; at x offset $70, beyond the window, he has gone: state 0."
  },
  {
   "address": 42386,
   "type": "line",
   "text": "One byte, $EA, that nothing runs, the same as at $A55D."
  },
  {
   "address": 42387,
   "type": "line",
   "text": "At x offset $70: gone."
  },
  {
   "address": 42390,
   "type": "line",
   "text": "State 4: past the window towards the door, one pixel left a step and one down every fourth; at x offset $FE, by the door, he may turn to it (guard_to_door); at $E8, off to the left, he has gone."
  },
  {
   "address": 42428,
   "type": "line",
   "text": "By the door, if fewer than five guards are in the room, a coin toss: he comes to the door (state 6) after 16 steps' wait, and half the time asks for it to be opened ($8791); otherwise he walks on."
  },
  {
   "address": 42476,
   "type": "line",
   "text": "State 0: gone."
  },
  {
   "address": 42482,
   "type": "line",
   "text": "State 5: from the left past the door, one pixel right a step and one up every fourth; at x offset $FE, by the door, he may turn to it; at $20, back the other way."
  },
  {
   "address": 42539,
   "type": "line",
   "text": "A walk the other way past the window, behind the picture: by a coin toss state 3 from ($30, $F2) or state 4 from ($20, $F8)."
  },
  {
   "address": 42588,
   "type": "line",
   "text": "State 6: nothing while the door is shut. Open, after the wait, he steps into the doorway in front of the picture: one pixel down a step and one left every fourth, until y offset $0B, then state 7 with an 8-step wait."
  },
  {
   "address": 42656,
   "type": "line",
   "text": "State 7: if guards are already in the room, or you are not hiding, he comes in (state 8). Otherwise he looks round, one frame every 16 steps from guard_look_frames, nine of them, and leaves (state 9)."
  },
  {
   "address": 42706,
   "type": "line",
   "text": "The frames of a guard looking round: 2, 0, 2, 0, 2, 0, 2, 0, 3."
  },
  {
   "address": 42715,
   "type": "line",
   "text": "State 8 after an 8-step wait."
  },
  {
   "address": 42726,
   "type": "line",
   "text": "State 9, facing out (frame 3)."
  },
  {
   "address": 42737,
   "type": "line",
   "text": "State 8: after the wait, one pixel left a step and one down every fourth; half way he may ask for the door to be shut ($879D); at x offset $D8 he is in the room: one more guard, up to five ($8798 set if there were five already, which nothing reads), to be announced ($87A0); state 0."
  },
  {
   "address": 42835,
   "type": "line",
   "text": "State 9: one pixel up a step and one right every fourth, back out of the door; at y offset 0, behind the picture, state 10, and half the time a request to shut the door."
  },
  {
   "address": 42889,
   "type": "line",
   "text": "State 10: one pixel right a step and one up every fourth, to x offset $20, then a walk past the window (guard_turn)."
  },
  {
   "address": 42921,
   "type": "line",
   "text": "Frame X of the guard (0-5): the address of its row of images (guard_image_rows) and of its x offsets (guard_x_rows) written into irq_picture and irq_guard_lower."
  },
  {
   "address": 42961,
   "type": "line",
   "text": "Never called, so never run: a shoot-out that was left unfinished. After an explosion the cross-hair is hidden. A move comes from the cursor keys (shifted for up and left) or the joystick in port 2, through move_routines."
  },
  {
   "address": 43028,
   "type": "line",
   "text": "The JSR's address ($A815) is the move's routine."
  },
  {
   "address": 43029,
   "type": "line",
   "text": "The address of the cross-hair's move, low byte, written from move_routines."
  },
  {
   "address": 43030,
   "type": "line",
   "text": "The move's address, high byte."
  },
  {
   "address": 43031,
   "type": "line",
   "text": "A hit's flash running: sprite 0 shows the next of hit_images, yellow, doubled."
  },
  {
   "address": 43068,
   "type": "line",
   "text": "A shot running: the hit checked (check_hit), sprite 0 the next of shot_images, white."
  },
  {
   "address": 43095,
   "type": "line",
   "text": "Otherwise the cross-hair (sprite 0) is put at its place; fire (the joystick's button or the Commodore key) with ammunition left takes one, starts a shot of 6 frames, stops your hiding and makes a noise on voice 1; with none left, YOU'RE OUT OF AMMO is asked for ($879E)."
  },
  {
   "address": 43204,
   "type": "line",
   "text": "No fire: the cross-hair shown, black, while it moves and some frames after a shot have passed; otherwise blank."
  },
  {
   "address": 43227,
   "type": "line",
   "text": "Sprite 0 back to single size."
  },
  {
   "address": 43244,
   "type": "line",
   "text": "The moves of the cross-hair, whose place is $8720 (x's high bit), $8721 (x) and $8722 (y): up and right."
  },
  {
   "address": 43247,
   "type": "line",
   "text": "Up, to y 50 at most."
  },
  {
   "address": 43258,
   "type": "line",
   "text": "Down and right."
  },
  {
   "address": 43261,
   "type": "line",
   "text": "Right, to x 326 at most."
  },
  {
   "address": 43284,
   "type": "line",
   "text": "Down and left."
  },
  {
   "address": 43287,
   "type": "line",
   "text": "Down, to y 187 at most."
  },
  {
   "address": 43298,
   "type": "line",
   "text": "Up and left."
  },
  {
   "address": 43301,
   "type": "line",
   "text": "Left, to x 17 at least."
  },
  {
   "address": 43327,
   "type": "line",
   "text": "Whether a shot hit something. Over the right of the room, the alarm box and the cabinet (shot_box_or_cabinet). Otherwise only a guard walking can be hit, past the window (states 2-4) in its top right, and at the door (states 5 on) in its top left: the cross-hair within two pixels of his first image's place."
  },
  {
   "address": 43400,
   "type": "line",
   "text": "The address of the guard's x offsets for his current frame, low byte, copied from irq_picture's LDA."
  },
  {
   "address": 43401,
   "type": "line",
   "text": "The x offsets' address, high byte."
  },
  {
   "address": 43442,
   "type": "line",
   "text": "Hit: the guard gone (state 0), the cross-hair moved to where the flash is drawn, a noise on voice 1, and the hit's flash of 12 frames started, in place of the rest of the shot."
  },
  {
   "address": 43516,
   "type": "line",
   "text": "High up at the right, the alarm box: three hits silence the alarm, if it was not silenced already. Low down at the right, the cabinet: after 48 hits the bomb goes off ($8796), with THAT WAS NOT ADVISABLE."
  },
  {
   "address": 43614,
   "type": "line",
   "text": "The cross-hair's move for each value of the four direction bits (up 1, down 2, left 4, right 8); the impossible ones an RTS ($A93E)."
  },
  {
   "address": 43615,
   "type": "line",
   "text": "The high bytes of move_routines."
  },
  {
   "address": 43646,
   "type": "line",
   "text": "Sprite 0's images during a shot, used from the seventh back to the first: $0D-$0E and $1F, the shot's flash."
  },
  {
   "address": 43654,
   "type": "line",
   "text": "Sprite 0's images during a hit, from the 12th back: $20 and $21, a burst."
  },
  {
   "address": 43667,
   "type": "line",
   "text": "A random byte: SID voice 3's output ($D41B) EOR the raster line."
  },
  {
   "address": 43674,
   "type": "line",
   "text": "A random byte from SID voice 3's output."
  },
  {
   "address": 43678,
   "type": "line",
   "text": "YOU ARE IN THE TIPTREE WAREHOUSE, message 184."
  },
  {
   "address": 43683,
   "type": "line",
   "text": "Not part of episode three, and nothing here reads it: an earlier build of episode two left in memory when this file was saved, 30 or 31 bytes below where the released episode two has the same bytes. From $AAB9, the end of its next_nibble and its find_word, skip_word, count_down_word, ask_word, find_vocabulary and match_at; the stretches that differ are mostly addresses, which moved between the builds."
  },
  {
   "address": 43928,
   "type": "line",
   "text": "The same earlier build's vocabulary: the words typed in episode two (HOUSES, PARLIAMENT, the tube stations, the plot words, file numbers, A3 to E6, LIFT, POEM, CODE...) and their tokens."
  },
  {
   "address": 44544,
   "type": "line",
   "text": "Then that build's location records, from about location 6 to 38: what each location shows and where its exits lead."
  },
  {
   "address": 45056,
   "type": "line",
   "text": "Jump table: the guards' timer, run while a key is awaited."
  },
  {
   "address": 45059,
   "type": "line",
   "text": "The alarm's siren, from irq_text once a frame."
  },
  {
   "address": 45062,
   "type": "line",
   "text": "The turn's check, after each command."
  },
  {
   "address": 45065,
   "type": "line",
   "text": "Verbs 0-4, which take no noun, through verb_actions."
  },
  {
   "address": 45079,
   "type": "line",
   "text": "Routine addresses less one for verbs 0-4: INVENTORY, EIOK, LISTEN, HIDE and the number 12051987."
  },
  {
   "address": 45080,
   "type": "line",
   "text": "The high bytes of verb_actions, read with LDA $B018,Y."
  },
  {
   "address": 45089,
   "type": "line",
   "text": "The verb's table of noun routines (noun_tables), and the noun's routine from it, through an RTS."
  },
  {
   "address": 45118,
   "type": "line",
   "text": "The table of noun routines for each verb from OPEN on: OPEN, CLOSE, SHOOT, then one table shared by ATTACK, KICK, HIT and KILL, DESTROY, EXAMINE, USE, one shared by PUSH and PRESS, and CUT."
  },
  {
   "address": 45119,
   "type": "line",
   "text": "The high bytes of noun_tables."
  },
  {
   "address": 45144,
   "type": "line",
   "text": "OPEN's routine for each of the 28 nouns, as addresses less one."
  },
  {
   "address": 45200,
   "type": "line",
   "text": "CLOSE's routine for each noun."
  },
  {
   "address": 45256,
   "type": "line",
   "text": "SHOOT's routine for each noun: always shoot_anything."
  },
  {
   "address": 45312,
   "type": "line",
   "text": "The routine for each noun after ATTACK, KICK, HIT or KILL."
  },
  {
   "address": 45368,
   "type": "line",
   "text": "DESTROY's routine for each noun. DRAWER, the last, has the box's reply."
  },
  {
   "address": 45428,
   "type": "line",
   "text": "EXAMINE's routine for each noun: always examine."
  },
  {
   "address": 45494,
   "type": "line",
   "text": "USE's routine for each noun."
  },
  {
   "address": 45550,
   "type": "line",
   "text": "The routine for each noun after PUSH or PRESS."
  },
  {
   "address": 45606,
   "type": "line",
   "text": "CUT's routine for each noun. BOX's entry is the yellow wire's entry, $B551 inside the BIT at $B550, so CUT BOX does what CUT YELLOW does."
  },
  {
   "address": 45662,
   "type": "line",
   "text": "INVENTORY: YOU HAVE A GEIGER COUNTER AND A PAIR OF WIRECUTTERS."
  },
  {
   "address": 45667,
   "type": "line",
   "text": "EIOK, and EXAMINE ALL: what you see, by the bomb's state ($8784 halved): the humming grey cabinet, the bomb with its flashing lights, or the timer and its wires."
  },
  {
   "address": 45678,
   "type": "line",
   "text": "The three descriptions: messages 1, 2 and 3."
  },
  {
   "address": 45681,
   "type": "line",
   "text": "LISTEN: the cabinet humming (message 4), or footsteps outside the door (5) while a guard walks outside (states 1-5) and the door is open."
  },
  {
   "address": 45702,
   "type": "line",
   "text": "HIDE: YOU ARE NOW HIDING BEHIND THE CABINET. You are hidden only while the drawer is shut; with it open the message is the same and you are not. Back to the input line without clearing the hiding, which lasts until the next command has been answered."
  },
  {
   "address": 45720,
   "type": "line",
   "text": "The number 12051987. With no keypad chosen: AND WHAT IS THE SIGNIFICANCE OF THAT NUMBER, PRAY?. On the first or third keypad: I'VE A FEELING THAT WAS THE WRONG MOVE, and the bomb goes off. On the second ($8783 negative): the bomb's state 2, the drawer opened (open_drawer), the hiding stopped, THE CABINET SLIDES OPEN TO REVEAL WHAT APPEARS TO BE A BOMB. Either way without an explosion, the alarm then sounds."
  },
  {
   "address": 45755,
   "type": "line",
   "text": "The alarm, if it has not sounded yet: its state 1, the siren started (start_siren), YOU'VE TRIGGERED AN ALARM."
  },
  {
   "address": 45774,
   "type": "line",
   "text": "OPEN DOOR: A GUARD IS BLOCKING THE DOOR while one is in the doorway or going out (states 6, 7 and 9); otherwise the door opened (door_open) and THE DOOR IS OPEN, whether it was shut or not."
  },
  {
   "address": 45802,
   "type": "line",
   "text": "OPEN CABINET, FILING or DRAWER: sealed shut, or THE CABINET IS ALREADY OPEN once the bomb has been found."
  },
  {
   "address": 45814,
   "type": "line",
   "text": "One byte, $EA, that nothing runs; the same filler follows several of these routines."
  },
  {
   "address": 45815,
   "type": "line",
   "text": "SORRY. I DON'T KNOW HOW TO OPEN THAT."
  },
  {
   "address": 45820,
   "type": "line",
   "text": "THE BOX IS OUT OF YOUR REACH: OPEN, CLOSE, ATTACK, PUSH or PRESS the BOX or ALARM."
  },
  {
   "address": 45825,
   "type": "line",
   "text": "THE WINDOW IS JAMMED SHUT: OPEN, PUSH or PRESS WINDOW."
  },
  {
   "address": 45830,
   "type": "line",
   "text": "CLOSE DOOR: blocked as OPEN DOOR is, otherwise the door shut (door_close) and THE DOOR IS CLOSED."
  },
  {
   "address": 45858,
   "type": "line",
   "text": "I DON'T SEEM TO BE ABLE TO CLOSE THE CABINET."
  },
  {
   "address": 45863,
   "type": "line",
   "text": "One byte, $EA, after close_cabinet, that nothing runs."
  },
  {
   "address": 45864,
   "type": "line",
   "text": "I DON'T KNOW HOW TO CLOSE ONE OF THOSE."
  },
  {
   "address": 45869,
   "type": "line",
   "text": "THE WINDOW IS ALREADY CLOSED."
  },
  {
   "address": 45874,
   "type": "line",
   "text": "One byte, $EA, after close_window, that nothing runs."
  },
  {
   "address": 45875,
   "type": "line",
   "text": "SHOOT anything: YOU HAVEN'T A GUN OLD BOY!"
  },
  {
   "address": 45880,
   "type": "line",
   "text": "I DON'T SEE A GUARD."
  },
  {
   "address": 45885,
   "type": "line",
   "text": "ATTACKING THE DOOR IS NOT VERY CONSTRUCTIVE."
  },
  {
   "address": 45890,
   "type": "line",
   "text": "ATTACK, KICK, HIT or KILL the cabinet, a keypad, the bomb, its lights, buttons, timer or wires: one of four replies at random, and the bomb goes off."
  },
  {
   "address": 45905,
   "type": "line",
   "text": "Messages 19, 129, 130 and 131: DIRECTING VIOLENCE TOWARDS THE CABINET MAY HAVE BEEN UNWISE, A MISTAKE - METHINKS?, OH DEAR!, VIOLENCE IS RARELY THE ANSWER."
  },
  {
   "address": 45909,
   "type": "line",
   "text": "The Geiger counter survives your unprovoked attack."
  },
  {
   "address": 45914,
   "type": "line",
   "text": "ATTACK the CABLE: OK, and then the alarm, if it has not sounded."
  },
  {
   "address": 45922,
   "type": "line",
   "text": "CUT or DESTROY the CABLE: the alarm silenced for good (state 2, voice 2 off), OK."
  },
  {
   "address": 45937,
   "type": "line",
   "text": "ATTACK, KICK, HIT, KILL, DESTROY, PUSH or PRESS a GUARD or KGB. None in the room: HE'S TOO FAR AWAY if one is outside, otherwise I DON'T SEE A GUARD. Otherwise a coin toss: a miss, worded by how many there are (fight_misses), or one guard fewer, the new count to be announced, the blows you have taken forgotten, and one of four replies (fight_hits)."
  },
  {
   "address": 45965,
   "type": "line",
   "text": "Messages for a miss with 1-5 guards in the room (the first byte is not used): 134-138, the last SOMEHOW YOU FAIL TO HIT ANY OF FIVE KGB MEN IN THE ROOM."
  },
  {
   "address": 45971,
   "type": "line",
   "text": "A hit: one guard fewer."
  },
  {
   "address": 45997,
   "type": "line",
   "text": "Messages 141-144 for a guard struck down: ANOTHER GUARD BITES THE DUST, YOU STRIKE DOWN A KGB GUARD, THE GUARD IS NO MORE, A KGB MAN IS DISPATCHED TO THE PROMISED LAND."
  },
  {
   "address": 46001,
   "type": "line",
   "text": "WHAT A STRANGE REQUEST!"
  },
  {
   "address": 46006,
   "type": "line",
   "text": "YOU MAKE SOME DENTS IN THE PLASTER."
  },
  {
   "address": 46011,
   "type": "line",
   "text": "THE DOOR IS BUILT SOLIDLY. I CANNOT DESTROY IT."
  },
  {
   "address": 46016,
   "type": "line",
   "text": "DESTROY the cabinet, a keypad, the bomb or its parts: one of four replies at random, and the bomb goes off."
  },
  {
   "address": 46031,
   "type": "line",
   "text": "Messages 147-150: NOT THE MOST SUBTLE APPROACH, OK - HERE GOES!, I'LL TRY, OK I'LL TRY HITTING IT WITH THE CUTTERS."
  },
  {
   "address": 46035,
   "type": "line",
   "text": "WELL I TRIED JUMPING ON IT BUT IT ISN'T EVEN DENTED."
  },
  {
   "address": 46040,
   "type": "line",
   "text": "THE BOX IS TOO HIGH UP TO REACH: DESTROY BOX, ALARM or DRAWER."
  },
  {
   "address": 46045,
   "type": "line",
   "text": "THE WINDOW IS ALREADY BROKEN."
  },
  {
   "address": 46050,
   "type": "line",
   "text": "HAVE YOU GOT A BULLDOZER HANDY?"
  },
  {
   "address": 46055,
   "type": "line",
   "text": "One byte, $EA, after destroy_wall, that nothing runs."
  },
  {
   "address": 46056,
   "type": "line",
   "text": "EXAMINE: the reply for the noun from the table for the bomb's state (examine_tables), its address written into the LDY at $B414. ALL describes the room as EIOK does; GUARD or KGB, with no guard in the room or outside, is I DON'T SEE A GUARD."
  },
  {
   "address": 46101,
   "type": "line",
   "text": "The address of EXAMINE's table of replies, low byte, written by examine."
  },
  {
   "address": 46102,
   "type": "line",
   "text": "EXAMINE's table address, high byte."
  },
  {
   "address": 46106,
   "type": "line",
   "text": "The three tables of EXAMINE's replies, for the cabinet sealed, the drawer open and the timer showing."
  },
  {
   "address": 46107,
   "type": "line",
   "text": "The high bytes of examine_tables."
  },
  {
   "address": 46112,
   "type": "line",
   "text": "A message for each of the 28 nouns while the cabinet is sealed: the door, the cabinet's three drawers and three keypads, the Geiger counter, and for the bomb, its lights, buttons, timer and wires the replies of someone who has not seen them."
  },
  {
   "address": 46140,
   "type": "line",
   "text": "The messages once the drawer is open: the bomb with its coloured lights, which on a closer look are buttons, green, red and yellow; the bomb solid state, without wires."
  },
  {
   "address": 46168,
   "type": "line",
   "text": "The messages once the timer shows: the panel slid away, the lights flashing faster, the four wires, red, green, blue and yellow, the Geiger counter's serial number GC 011132."
  },
  {
   "address": 46196,
   "type": "line",
   "text": "TRY OPENING OR CLOSING THE DOOR."
  },
  {
   "address": 46201,
   "type": "line",
   "text": "I DON'T KNOW HOW TO USE A CABINET!"
  },
  {
   "address": 46206,
   "type": "line",
   "text": "USE, PUSH or PRESS a KEYPAD or PAD: PLEASE SPECIFY THE FIRST, SECOND OR THIRD KEYPAD."
  },
  {
   "address": 46211,
   "type": "line",
   "text": "USE the GEIGER counter: THE WHOLE CABINET IS RADIOACTIVE BUT THE SECOND DRAWER SEEMS MORE ACTIVE THAN EITHER OF THE OTHER TWO, the clue to the keypad."
  },
  {
   "address": 46216,
   "type": "line",
   "text": "USE, PUSH or PRESS FIRST: the keypad chosen is 1. Entered at $B48B for SECOND it is $FF, and at $B48E for THIRD it is 1 again: each entry's LDY is hidden from the others inside a BIT instruction. Then OK - TYPE A NUMBER, and back to the input line without clearing the choice, so it lasts one command."
  },
  {
   "address": 46235,
   "type": "line",
   "text": "USE the LIGHT, BUTTON, GREEN, RED or YELLOW: WHAT LIGHTS? while the cabinet is sealed, otherwise TRY PUSHING OR PRESSING THE LIGHTS."
  },
  {
   "address": 46247,
   "type": "line",
   "text": "One byte, $EA, after use_buttons, that nothing runs."
  },
  {
   "address": 46248,
   "type": "line",
   "text": "I DON'T KNOW HOW TO USE ONE OF THOSE."
  },
  {
   "address": 46253,
   "type": "line",
   "text": "TRY OPENING OR CLOSING THE DOOR, for PUSH DOOR."
  },
  {
   "address": 46258,
   "type": "line",
   "text": "PUSH the cabinet, the bomb, the timer or a wire: I DON'T THINK THE PHYSICAL APPROACH IS GOING TO WORK, and the bomb goes off."
  },
  {
   "address": 46266,
   "type": "line",
   "text": "PUSH the LIGHT or BUTTON: PLEASE SPECIFY THE RED BUTTON, GREEN BUTTON, OR YELLOW BUTTON."
  },
  {
   "address": 46271,
   "type": "line",
   "text": "The buttons, RED here with A = 1, YELLOW at $B4C2 with 2, GREEN at $B4C5 with 3, each entry's LDA hidden from the others in a BIT. Before the bomb is found: I'M SORRY I CAN'T SEE ONE. Then the presses are counted: the right number for this press is OK, and the third, GREEN, slides the panel away: the bomb's state 4, the lights flashing faster (every 8 frames), A PANEL SLIDES AWAY FROM THE SURFACE OF THE BOMB TO EXPOSE A TIMER DEVICE. Out of order, or any press after that: WHOOPS!, and the bomb goes off."
  },
  {
   "address": 46323,
   "type": "line",
   "text": "One byte, $EA, after push_red's buttons, that nothing runs."
  },
  {
   "address": 46324,
   "type": "line",
   "text": "I DON'T KNOW HOW TO PUSH ONE OF THOSE, for the Geiger counter, BLUE and the cable."
  },
  {
   "address": 46329,
   "type": "line",
   "text": "THE WINDOW IS JAMMED SHUT, for PUSH WINDOW."
  },
  {
   "address": 46334,
   "type": "line",
   "text": "PUSHING THE WALL PROVES INEFFECTUAL."
  },
  {
   "address": 46339,
   "type": "line",
   "text": "PUSH ALL: I DON'T UNDERSTAND THAT before the bomb is found; afterwards message 170, YOU SIDESTEP A VICIOUS ATTACK, and the bomb goes off. Message 160, OK - PUSHING ALL THE BUTTONS AT ONCE, which nothing prints, looks like the one meant ($A0 for $AA)."
  },
  {
   "address": 46354,
   "type": "line",
   "text": "One byte, $EA, after push_all, that nothing runs."
  },
  {
   "address": 46355,
   "type": "line",
   "text": "I DON'T KNOW HOW TO CUT ONE OF THOSE."
  },
  {
   "address": 46360,
   "type": "line",
   "text": "CUT TIMER: WHAT TIMER? until it shows, then I SAY, THAT WAS A LITTLE RASH, and the bomb goes off."
  },
  {
   "address": 46380,
   "type": "line",
   "text": "CUT WIRE: I CAN'T SEE ANY WIRES until the timer shows, then PLEASE SPECIFY WHICH WIRE: RED, GREEN, BLUE OR YELLOW?"
  },
  {
   "address": 46394,
   "type": "line",
   "text": "CUT ALL: I CAN'T SEE ANY WIRES until the timer shows, then OK, CUTTING ALL THE WIRES SIMULTANEOUSLY, and the bomb goes off."
  },
  {
   "address": 46414,
   "type": "line",
   "text": "The wires, RED here with A = 1, YELLOW at $B551 (inside the BIT at $B550) with 2 (YELLOW, and BOX), GREEN at $B554 with 3. Before the timer shows: WHAT WIRE?. Then the cuts are counted: the right number for this cut is OK, and the third, GREEN, defuses the bomb: its state $80, CONGRATULATIONS! YOU YOU HAVE DEFUSED THE BOMB!, a pause and the good epilogue (defused_ending). Out of order: OH DEAR! IT'S BOOBY-TRAPPED, and the bomb goes off."
  },
  {
   "address": 46483,
   "type": "line",
   "text": "CUT BLUE: OH DEAR! IT'S BOOBY-TRAPPED, and the bomb goes off, whether or not the wires can be seen."
  },
  {
   "address": 46491,
   "type": "line",
   "text": "CUT a GUARD or KGB: with guards in the room, YOU EXPERIENCE LITTLE SUCCESS IN TRYING TO KILL A GUARD WITH YOUR WIRECUTTERS; otherwise as fight_guard's."
  },
  {
   "address": 46511,
   "type": "line",
   "text": "The alarm's sound: voice 2 a pulse wave, gate on, held at full volume; voice 3, which the random numbers are read from ($D41B), turned from noise to a slow triangle wave."
  },
  {
   "address": 46537,
   "type": "line",
   "text": "While a key is awaited, at every check of the keyboard: the ending of the unused shoot-out ($8796); the door opened or shut when a guard asked; then a 16-bit count, and every 512 counts, if no guard is about, one may set out (state 1): always while the alarm sounds, otherwise by chance (guard_chances)."
  },
  {
   "address": 46612,
   "type": "line",
   "text": "AND masks for a random number, by the bomb's state, a guard setting out when the result is zero: 1 in 256 while the cabinet is sealed and while the drawer is open ($FF), 1 in 64 once the timer shows ($3F)."
  },
  {
   "address": 46618,
   "type": "line",
   "text": "For the unused shoot-out: THAT WAS NOT ADVISABLE (shootout_ending_messages), the cursor rubbed out, and the bomb goes off."
  },
  {
   "address": 46629,
   "type": "line",
   "text": "Prints message Y, drops its caller's return address and sets the bomb off."
  },
  {
   "address": 46637,
   "type": "line",
   "text": "By $8796 (only 1 is set): message 162."
  },
  {
   "address": 46639,
   "type": "line",
   "text": "After every command, the turn. After 144 commands, empty lines included, A CLICK ISSUES FROM WITHIN THE CABINET, and the bomb goes off. Then a new count of guards in the room is announced (guard_counts). Then if there are guards, they act, one roll a command: by a chance that grows with their number (attack_chances) they kill you, worded by their number (killed_messages), and the bomb goes off; otherwise by a coin toss you evade an attack (evade_messages), or a blow lands (blow_messages), and the third blow since you last struck one down kills you too."
  },
  {
   "address": 46651,
   "type": "line",
   "text": "Messages 179-183, for 1-5 guards: THERE IS A GUARD IN THE ROOM to FIVE KGB MEN ARE NOW IN THE ROOM. The first byte is not used."
  },
  {
   "address": 46657,
   "type": "line",
   "text": "Then any new count of guards in the room, announced once."
  },
  {
   "address": 46700,
   "type": "line",
   "text": "AND masks for a random number, a death when the result is zero: with 1, 2, 3, 4 or 5 guards, 1 in 16, 16, 8, 4 or 2. The first byte is not used."
  },
  {
   "address": 46706,
   "type": "line",
   "text": "Messages 164-168, for 1-5 guards: A GUARD HAS KILLED YOU to THE GUARDS BEAT YOU SENSELESS. The first byte is not used."
  },
  {
   "address": 46712,
   "type": "line",
   "text": "No death this command: by bit 7 of a random number, an attack evaded, or a blow that lands; three blows kill."
  },
  {
   "address": 46754,
   "type": "line",
   "text": "Messages 169-172: attacks you evade."
  },
  {
   "address": 46758,
   "type": "line",
   "text": "Messages 175-178: blows that land."
  },
  {
   "address": 46762,
   "type": "line",
   "text": "The unused shoot-out's YOU'RE OUT OF AMMO, if it asked ($879E)."
  },
  {
   "address": 46779,
   "type": "line",
   "text": "By $879E, of which only 1 is set: message 173. The rest are not used."
  },
  {
   "address": 46787,
   "type": "line",
   "text": "Once a frame while the alarm sounds (state 1): voice 2's frequency set at random, from $250D to about $440D, a warbling siren."
  },
  {
   "address": 46839,
   "type": "line",
   "text": "Not part of episode three, and nothing here reads it: an earlier build of episode two's location records, 14 bytes each, from the end of location 166's on, 30 bytes below where the released episode two has them."
  },
  {
   "address": 47843,
   "type": "line",
   "text": "The earlier build's location records continue: locations 238 to 248."
  },
  {
   "address": 47997,
   "type": "line",
   "text": "The same build's location names, GORDON'S, LONDON, EUSTON ROAD and on to ACCOUNTS..., 29 or 30 bytes below the released episode two's. One name differs: ARMOURY, where the released episode two spells it ARMORY, so the bytes after it lie one byte closer."
  },
  {
   "address": 48907,
   "type": "line",
   "text": "The location names continue to the end of this stretch: VICTORIA TUBE STATION, SOUTH KENSINGTON, PICADILLY LINE WEST BOUND PLATFORM (so spelt), BOSTON MANOR, HEATHROW, WESTMINSTER, BRIDGE STREET, PARLIAMENT SQUARE, THE TREASURY and the start of ACCOUNTS."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Episode three's entry, from the episode loader. Border and background black, the title text (codename_text_screen, THE FOURTH PROTOCOL in block letters and WHAT IS THE CODENAME FOR THIS MISSION?) copied to the screen at $0400, the bottom rows blanked, every colour white; then lines are typed until the codename is right."
  },
  {
   "address": 49202,
   "type": "line",
   "text": "$02A7 counts the lines typed below the question, up to 8."
  },
  {
   "address": 49207,
   "type": "line",
   "text": "A new line: the column (X) back to 0."
  },
  {
   "address": 49209,
   "type": "line",
   "text": "The cursor, a reversed space ($A0), at the current column."
  },
  {
   "address": 49214,
   "type": "line",
   "text": "Waits for a key in the KERNAL's keyboard buffer count ($C6), then reads which key it was from the key matrix code ($C5): 0 is INST/DEL, 1 RETURN; the other keys of the matrix's first column (below 8) and a few others are ignored."
  },
  {
   "address": 49254,
   "type": "line",
   "text": "At most 30 characters. The matrix code is turned into PETSCII through the KERNAL's unshifted keyboard table ($EB81), stored in the input buffer at $0200 and shown as a screen code."
  },
  {
   "address": 49282,
   "type": "line",
   "text": "INST/DEL: back one column, if there is one, rubbing out the cursor."
  },
  {
   "address": 49295,
   "type": "line",
   "text": "RETURN: the buffer ended with a zero and checked (check_codename), which never comes back when it is right; otherwise WRONG beside the line, and the next line below, or the lines scrolled up once eight are used."
  },
  {
   "address": 49319,
   "type": "line",
   "text": "The next line down: codename_put's screen address moved on 40 bytes."
  },
  {
   "address": 49342,
   "type": "line",
   "text": "The lines at rows 16-23 ($0680-$07C0) moved up one row and the last cleared, so typing carries on at the bottom."
  },
  {
   "address": 49403,
   "type": "line",
   "text": "Puts A on the screen at column X of the current line: the STA's address ($C0FC-$C0FD) is moved on a line at a time from $0681."
  },
  {
   "address": 49404,
   "type": "line",
   "text": "codename_put's screen address, low byte: $0681, column 1 of row 16, at first, moved on 40 a line."
  },
  {
   "address": 49405,
   "type": "line",
   "text": "codename_put's screen address, high byte."
  },
  {
   "address": 49407,
   "type": "line",
   "text": "The buffer must begin with the seven letters of TIPTREE (codename_answer); anything typed after them is ignored. Right: codename_put set back to its first line and the episode started (start_episode)."
  },
  {
   "address": 49433,
   "type": "line",
   "text": "The base of the LDA $C119,X that reads the word WRONG: with X from $21 it reads $C13A-$C13E, so this address, inside an STY, is never read itself."
  },
  {
   "address": 49437,
   "type": "line",
   "text": "Wrong, and something typed: WRONG (codename_wrong_text) written in columns 33-37 of the line, each letter turned into a screen code with EOR #$40."
  },
  {
   "address": 49459,
   "type": "line",
   "text": "TIPTREE, the codename for the mission."
  },
  {
   "address": 49466,
   "type": "line",
   "text": "WRONG, printed beside a wrong codename."
  },
  {
   "address": 49471,
   "type": "line",
   "text": "Not part of episode three: the remains of a small machine-code monitor that was at $C000 before this code was written over it. Its commands to show and change memory ($C14A-$C197) call routines at $C093-$C105 that are now the codename screen; $C19D shows the registers saved on the stack; $C1CD loads them again and returns into a program with RTI. Nothing jumps here."
  },
  {
   "address": 49657,
   "type": "line",
   "text": "Seven bytes after the monitor's last RTI, $F9 $84 and five $FF, that nothing reads."
  },
  {
   "address": 49664,
   "type": "line",
   "text": "The picture at $6000-$7FFF copied to $E000-$FFFF, under the KERNAL, to be put back after an explosion; then the game set up as for a new game."
  },
  {
   "address": 49694,
   "type": "line",
   "text": "A new game, also where the epilogues return to: interrupts off, the CIA's timer interrupt and the sprites off, the count of commands typed cleared, border black, the screen off, the KERNAL banked out ($01 = $2D) for the set-up, the IRQ vector pointed at irq_picture."
  },
  {
   "address": 49733,
   "type": "line",
   "text": "An NMI handler's address, nmi_unused, stored at $9F00-$9F01, which nothing in memory reads."
  },
  {
   "address": 49743,
   "type": "line",
   "text": "The picture's screen memory ($7F40) copied to $5000 and its colours ($8328) to colour RAM, 1,024 bytes each, which takes in the variables at $8710-$8727 too; the text screen from $0700 to its end blanked; the plotting tables at $8800-$8BFF filled with $FF, the mark for a point off the picture; and $F900-$FCFF, in the copy's bottom rows that the text hides, filled with $55, which they hold already."
  },
  {
   "address": 49829,
   "type": "line",
   "text": "Row 20 of both screens filled with character $EE, light blue in colour RAM, and rows 21-24 of colour RAM blue; the variables at $8780-$87CF cleared."
  },
  {
   "address": 49867,
   "type": "line",
   "text": "The clean picture copied back from $E000-$FFFF to $6000-$7FFF, rubbing out the last game's explosion and door; the blank sprite ($4FC0) cleared; every SID register zeroed."
  },
  {
   "address": 49917,
   "type": "line",
   "text": "The tables for drawing from the picture's centre (draw_circle): row addresses in $8A00/$8B00 and column offsets in $8800/$8900, indexed by an offset from (80, 80) in pixels, 0-79 for plus and $80-$D0 for minus. The STAs' addresses are set here and again below."
  },
  {
   "address": 50001,
   "type": "line",
   "text": "Then the plain tables for plot_pixel: the row address of each of the picture's 160 lines in $8E00/$8F00 and the column offset of each of its 160 double-width pixels in $8C00/$8D00. Then on to init_play."
  },
  {
   "address": 50068,
   "type": "line",
   "text": "Stores at entry Y of the row tables (low byte, high byte) the offset in the bitmap of pixel line X: (X/8) x 320 + X AND 7, built from X/8 x 64 and X/8 x 256; Y goes up by one."
  },
  {
   "address": 50143,
   "type": "line",
   "text": "The row table's address for low bytes, low byte: $8A00, then $8E00."
  },
  {
   "address": 50144,
   "type": "line",
   "text": "The row table for low bytes, high byte."
  },
  {
   "address": 50152,
   "type": "line",
   "text": "The row table's address for high bytes, low byte: $8B00, then $8F00."
  },
  {
   "address": 50153,
   "type": "line",
   "text": "The row table for high bytes, high byte."
  },
  {
   "address": 50156,
   "type": "line",
   "text": "Stores at entry Y of the column tables the offset of the byte holding double-width pixel X: X/4 x 8."
  },
  {
   "address": 50177,
   "type": "line",
   "text": "The column table's address for low bytes, low byte: $8800, then $8C00."
  },
  {
   "address": 50178,
   "type": "line",
   "text": "The column table for low bytes, high byte."
  },
  {
   "address": 50183,
   "type": "line",
   "text": "The column table's address for high bytes, low byte: $8900, then $8D00."
  },
  {
   "address": 50184,
   "type": "line",
   "text": "The column table for high bytes, high byte."
  },
  {
   "address": 50187,
   "type": "line",
   "text": "Sets pixel (X, Y) of the picture, 160 by 160, to the colour chosen by the ORA's address ($C42A): the byte from the column and row tables, OR $6000, the pixel's two bits cleared with pixel_masks and set from the colour's bits."
  },
  {
   "address": 50218,
   "type": "line",
   "text": "The address of plot_pixel's colour bits, low byte, set by the door's routines: $C43B to draw it, $C43F to rub it out."
  },
  {
   "address": 50219,
   "type": "line",
   "text": "The colour bits' address, high byte."
  },
  {
   "address": 50223,
   "type": "line",
   "text": "AND masks clearing each of a byte's four double-width pixels, left to right."
  },
  {
   "address": 50227,
   "type": "line",
   "text": "The bits that set each pixel to colour 1, then colour 2 ($C437) and colour 3 ($C43B); $C43F, four zeros, sets the background colour."
  },
  {
   "address": 50243,
   "type": "line",
   "text": "The game's start: irq_top set to irq_picture; the variables of the unused shoot-out (ammunition $C0, the cross-hair's place); the bomb and the guard behind the picture; the bomb's four colours dark grey ($0B); the picture's background white; every sprite on; the guard's offsets zero; the text background light blue; SID voice 3 left running a noise wave for random numbers ($D41B); the sprite places and pointers copied in; the door shut; the raster interrupt at line 8 and the KERNAL banked back in ($01 = $36). Then YOU ARE IN THE TIPTREE WAREHOUSE (show_start) and the main loop."
  },
  {
   "address": 50405,
   "type": "line",
   "text": "Copied to sprite_places: the x and y of sprites 0-7 and the x high bits ($20, sprite 5). Sprites 3-7 are the cabinet's middle drawer and the bomb: 3 at (204, 170), 4 at (210, 177), 5 at (258, 178), 6 at (249, 177), 7 at (225, 162)."
  },
  {
   "address": 50422,
   "type": "line",
   "text": "Copied to sprite_pointers: sprites 3-7 show images 0-4 ($4000-$413F); the first three bytes are not used."
  },
  {
   "address": 50430,
   "type": "line",
   "text": "The first raster interrupt, at line 8: the picture. The background colour from $8718; the bitmap at $6000 and its screen at $5000 (VIC bank 1, $D018 = $48), multicolour bitmap mode; the door's top half (sprite 1) at (40, 80); the guard's first two images (sprites 2 and 3) from the current frame, offset by the guard's position; the expansions, multicolour and priorities of this band; the next interrupt 22 lines below the guard's first image."
  },
  {
   "address": 50475,
   "type": "line",
   "text": "The door's top image; the LDA's value ($C52C) is changed as the door opens and shuts (door_open, door_close)."
  },
  {
   "address": 50476,
   "type": "line",
   "text": "The door's top image, 5 when shut, up to 11 open."
  },
  {
   "address": 50505,
   "type": "line",
   "text": "The guard's frame: the LDA $C7C7's address ($C54A) and the x offsets' address ($C551) are set by set_guard_frame."
  },
  {
   "address": 50506,
   "type": "line",
   "text": "The guard's frame row in guard_images, low byte, for the top band; written by set_guard_frame."
  },
  {
   "address": 50507,
   "type": "line",
   "text": "The guard's frame row, high byte, for the top band."
  },
  {
   "address": 50513,
   "type": "line",
   "text": "The guard's x offsets for the top band, low byte."
  },
  {
   "address": 50514,
   "type": "line",
   "text": "The guard's x offsets for the top band, high byte."
  },
  {
   "address": 50604,
   "type": "line",
   "text": "Points the IRQ vector at the handler in X (low) and Y (high), clears the raster line's ninth bit, acknowledges the video chip and returns from the interrupt, pulling the registers the KERNAL's IRQ entry pushed."
  },
  {
   "address": 50629,
   "type": "line",
   "text": "Colours of sprites 1-3, read from $C5C6: the door blue, the guard's first image orange and his second dark grey. The first byte is not read."
  },
  {
   "address": 50633,
   "type": "line",
   "text": "The first interrupt after an explosion, in place of irq_picture: background from $8716, border black, sprites off, text mode on the screen at $0400 with the ROM's characters; the next interrupt at line $D8 (irq_text), so the whole screen is text for the epilogue."
  },
  {
   "address": 50700,
   "type": "line",
   "text": "Line 22 below the guard's first image: sprite 2 re-used for his third image, lower down, dark grey and single-colour; sprites 2 and 3 doubled in height; the next interrupt at line $90."
  },
  {
   "address": 50704,
   "type": "line",
   "text": "The guard's frame row for the lower band, low byte."
  },
  {
   "address": 50705,
   "type": "line",
   "text": "The guard's frame row for the lower band, high byte."
  },
  {
   "address": 50710,
   "type": "line",
   "text": "The guard's x offsets for the lower band, low byte."
  },
  {
   "address": 50711,
   "type": "line",
   "text": "The guard's x offsets for the lower band, high byte."
  },
  {
   "address": 50761,
   "type": "line",
   "text": "Line $90: sprite 1 becomes the door's bottom half at (40, 150), its image from the LDA's value ($C64B), and the bomb's priority bits ($8704, behind the cabinet until the drawer is open) put in; the next interrupt at line $A0."
  },
  {
   "address": 50763,
   "type": "line",
   "text": "The door's bottom image, 6 when shut, up to 12 open."
  },
  {
   "address": 50800,
   "type": "line",
   "text": "Line $A0: sprites 3-7, the drawer and the bomb, from sprite_pointers, sprite_colours and sprite_places; the bomb's four colours: the lights in $8705-$8707 and its body in $8708. The next interrupt at line $C8."
  },
  {
   "address": 50906,
   "type": "line",
   "text": "The image numbers of sprites 0-7, of which irq_cabinet uses 3-7."
  },
  {
   "address": 50914,
   "type": "line",
   "text": "Colours of sprites 0-7; irq_cabinet uses those of 3-5 (light grey); 6 and 7 come from the lights."
  },
  {
   "address": 50922,
   "type": "line",
   "text": "x and y of sprites 0-7, then the x high bits; irq_cabinet uses those of sprites 3-7, and open_drawer moves them."
  },
  {
   "address": 50923,
   "type": "line",
   "text": "The y of sprite 0 in sprite_places; open_drawer reads each sprite's y from here."
  },
  {
   "address": 50938,
   "type": "line",
   "text": "The x high bits of sprites 0-7, for $D010: sprite 5 starts beyond x 255."
  },
  {
   "address": 50939,
   "type": "line",
   "text": "Line $C8: every sprite in front of the picture; the next interrupt at line $D3."
  },
  {
   "address": 50958,
   "type": "line",
   "text": "Line $D3, just before the switch to text at line $D7: the display-enable bit of $D011 cleared; irq_text sets it again."
  },
  {
   "address": 50978,
   "type": "line",
   "text": "Line $D7: the text window. Background and border from $8725, text mode on the screen at $0400, VIC bank 0; then once a frame the room's events (room_events) and the alarm's siren (alarm_sound); the screen on again, the next interrupt at line 8 through irq_top, the bomb's lights changed every so often, the keyboard scanned (SCNKEY)."
  },
  {
   "address": 51029,
   "type": "line",
   "text": "JMP to the next instruction, where some other call was taken out."
  },
  {
   "address": 51068,
   "type": "line",
   "text": "The lights flash once the drawer is open and until the bomb is defused: every flash_rate frames each of the three colours moves on by one, skipping white."
  },
  {
   "address": 51128,
   "type": "line",
   "text": "The images of the guard's three parts for each of his frames: five walking frames ($0F-$1D) and a blank one ($3F)."
  },
  {
   "address": 51131,
   "type": "line",
   "text": "Frame 1's images."
  },
  {
   "address": 51134,
   "type": "line",
   "text": "Frame 2's images."
  },
  {
   "address": 51137,
   "type": "line",
   "text": "Frame 3's images."
  },
  {
   "address": 51140,
   "type": "line",
   "text": "Frame 4's images."
  },
  {
   "address": 51143,
   "type": "line",
   "text": "Frame 5, the blank one: three $3F."
  },
  {
   "address": 51146,
   "type": "line",
   "text": "The address of each frame's row in guard_images."
  },
  {
   "address": 51147,
   "type": "line",
   "text": "The high bytes of guard_image_rows."
  },
  {
   "address": 51158,
   "type": "line",
   "text": "The x of each of the guard's three images in each frame, added to his position; a blank frame's three zeros."
  },
  {
   "address": 51161,
   "type": "line",
   "text": "Frame 1's x offsets."
  },
  {
   "address": 51164,
   "type": "line",
   "text": "Frame 2's x offsets."
  },
  {
   "address": 51167,
   "type": "line",
   "text": "Frame 3's x offsets."
  },
  {
   "address": 51170,
   "type": "line",
   "text": "Frame 4's x offsets."
  },
  {
   "address": 51173,
   "type": "line",
   "text": "Frame 5's x offsets, three zeros for the blank frame."
  },
  {
   "address": 51176,
   "type": "line",
   "text": "The address of each frame's row in guard_x_offsets."
  },
  {
   "address": 51177,
   "type": "line",
   "text": "The high bytes of guard_x_rows."
  },
  {
   "address": 51188,
   "type": "line",
   "text": "The y of the guard's three images ($51, $63, $77), added to his position."
  },
  {
   "address": 51191,
   "type": "line",
   "text": "Each command: the keypad chosen and the hiding cleared; the turn checked (check_turn: guards that come in or attack, the command limit); then a line typed at the bottom row."
  },
  {
   "address": 51200,
   "type": "line",
   "text": "The placeholder in print_message's LDA $C800,Y, which is always written over before it runs: here the second byte of the JSR $B006 at $C7FF."
  },
  {
   "address": 51202,
   "type": "line",
   "text": "The cursor at the column in X, then a key read with GETIN, the guards' timer and requests run (guard_timer) while none is pressed. INST/DEL, RETURN, space, the digits and the letters are taken, up to 40 characters; the rest are ignored."
  },
  {
   "address": 51276,
   "type": "line",
   "text": "INST/DEL: back a column."
  },
  {
   "address": 51289,
   "type": "line",
   "text": "RETURN: the line ended with a zero in $0200, the text rows above scrolled up by one, the count of commands typed increased (empty lines too), and the parser run."
  },
  {
   "address": 51337,
   "type": "line",
   "text": "The bomb goes off: the room's events stopped, the alarm silenced, voice 1 a triangle at random pitches over 16 bursts, rising, while the lights flash faster and the background flickers; then rings of colour 1, 2 and background drawn out from the picture's centre with growing radius, to 113 pixels; then the sprites off, the text cleared and the next frame's interrupts switched to irq_text_only."
  },
  {
   "address": 51427,
   "type": "line",
   "text": "One ring: the colour moved on (explosion_colours), the circle drawn (draw_circle), a pause, the background colour changed."
  },
  {
   "address": 51490,
   "type": "line",
   "text": "Every character of the screen at $0400 a space, every colour white."
  },
  {
   "address": 51526,
   "type": "line",
   "text": "The next frames' first interrupt becomes irq_text_only, with a black background; then a long pause."
  },
  {
   "address": 51569,
   "type": "line",
   "text": "A pause of the LDX's value ($C977) times 256 loops, 0 meaning 256; the registers kept."
  },
  {
   "address": 51575,
   "type": "line",
   "text": "delay's count, written before each pause: $80 before a reply, $0B between letters, $40 for each step of the drawer, 0 for 256."
  },
  {
   "address": 51590,
   "type": "line",
   "text": "40 times 256 loops of voice 1 set to a random frequency above the base in explosion_pitches,X, the background colour moving on each time."
  },
  {
   "address": 51644,
   "type": "line",
   "text": "65,536 loops of the background colour moving on."
  },
  {
   "address": 51658,
   "type": "line",
   "text": "Voice 1's base pitch (high byte) for each of the 16 bursts, used from the last, $10, up."
  },
  {
   "address": 51674,
   "type": "line",
   "text": "Voice 3's frequency, low byte, for each burst, which changes what the random numbers ($D41B) read."
  },
  {
   "address": 51690,
   "type": "line",
   "text": "A circle of radius $870C round the picture's centre, by the midpoint method: x from 0 and y from the radius, the decision value d from 3 - 2r, kept as 16 bits with 512 added; each step plots eight points, adds 4x + 6 to d while it is negative, otherwise 4(x - y) + 10 and takes one from y; until x reaches y."
  },
  {
   "address": 51851,
   "type": "line",
   "text": "The eight points (x, y), (-x, y), (x, -y), (-x, -y), (y, x), (-y, x), (y, -x), (-y, -x); bit 7 of an index marks it as minus for the centred tables."
  },
  {
   "address": 51936,
   "type": "line",
   "text": "Plots the point X, Y from the centre, skipping it if a table holds $FF (off the picture). For a point left of the centre (bit 7) the mask comes from mirrored_masks, since the pixel's place in its byte counts the other way. The colour's bits come from the ORA's address ($CB0C)."
  },
  {
   "address": 51980,
   "type": "line",
   "text": "The address of the ring's colour bits, low byte, written from explosion_colours."
  },
  {
   "address": 51981,
   "type": "line",
   "text": "The ring's colour bits' address, high byte."
  },
  {
   "address": 51985,
   "type": "line",
   "text": "AND masks for the four pixels of a byte, as pixel_masks."
  },
  {
   "address": 51989,
   "type": "line",
   "text": "Colour 1's bits, then colour 2's ($CB19) and colour 3's ($CB1D, not used); at $CB21 the four zeros that rub a pixel out."
  },
  {
   "address": 51993,
   "type": "line",
   "text": "Colour 2's bits, for the second ring of each three."
  },
  {
   "address": 52001,
   "type": "line",
   "text": "The four zeros for the third ring, which rubs out in the background colour; then padding."
  },
  {
   "address": 52005,
   "type": "line",
   "text": "108 zeros that fill the room up to the copies 128 bytes on."
  },
  {
   "address": 52113,
   "type": "line",
   "text": "The masks for a point left of the centre, where the pixel's place in the byte counts from the other end: X OR $80 lands here."
  },
  {
   "address": 52117,
   "type": "line",
   "text": "Colour 1's and colour 2's bits, mirrored; $CBA1 the zeros."
  },
  {
   "address": 52133,
   "type": "line",
   "text": "The ORA addresses of the three ring colours, used in turn: colour 1, colour 2, background."
  },
  {
   "address": 52134,
   "type": "line",
   "text": "The high bytes of explosion_colours."
  },
  {
   "address": 52139,
   "type": "line",
   "text": "An NMI handler that nothing points the processor at: it would save the registers, turn off and acknowledge CIA 2's interrupts and jump into the KERNAL's NMI routine at $FE72. Its address goes only to $9F00."
  },
  {
   "address": 52156,
   "type": "line",
   "text": "Not part of episode three: the last 764 bytes of an earlier build of episode two's dictionary, the words its packed texts are made from, from BY A and TERRORIST to the eleven commonest letters and the new line. They lie 36 bytes below where the released episode two has them ($CBE0-$CEDB). Nothing here reads them."
  },
  {
   "address": 52920,
   "type": "line",
   "text": "328 bytes nothing reads: a block of 128 bytes ($7F, $80, $FF and a few others) repeated, as it lay in memory when the file was saved. The same pattern, slightly different, fills $3F40-$3FFF."
  }
 ]
}