{
 "schema": 1,
 "platform": "c64",
 "game": "north-and-south",
 "part": "ending",
 "build": "PAL cassette, four sides, Cyberload fast loader; the original release as the Ultimate Tape Archive V4.0 has it (entry 7562)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    3071,
    "The loader and the script"
   ],
   [
    3072,
    10239,
    "The strategic map"
   ],
   [
    44864,
    50431,
    "The strategic map"
   ],
   [
    50432,
    57343,
    "The loader and the script"
   ],
   [
    57344,
    65529,
    "The strategic map"
   ],
   [
    65530,
    65535,
    "The loader and the script"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    3071,
    "The loader and the script"
   ],
   [
    3072,
    10239,
    "The strategic map"
   ],
   [
    44864,
    50431,
    "The strategic map"
   ],
   [
    50432,
    57343,
    "The loader and the script"
   ],
   [
    57344,
    65529,
    "The strategic map"
   ],
   [
    65530,
    65535,
    "The loader and the script"
   ]
  ]
 },
 "blocks": [
  {
   "start": 10240,
   "end": 12287,
   "type": "Byte"
  },
  {
   "start": 12288,
   "end": 12293,
   "type": "Code"
  },
  {
   "start": 12294,
   "end": 12443,
   "type": "Byte"
  },
  {
   "start": 12444,
   "end": 14170,
   "type": "Code"
  },
  {
   "start": 14171,
   "end": 32767,
   "type": "Byte"
  },
  {
   "start": 32768,
   "end": 33208,
   "type": "Code"
  },
  {
   "start": 33209,
   "end": 33211,
   "type": "Byte"
  },
  {
   "start": 33212,
   "end": 33343,
   "type": "Code"
  },
  {
   "start": 33344,
   "end": 33344,
   "type": "Undefined"
  },
  {
   "start": 33345,
   "end": 33471,
   "type": "Code"
  },
  {
   "start": 33472,
   "end": 33564,
   "type": "Byte"
  },
  {
   "start": 33565,
   "end": 33657,
   "type": "Code"
  },
  {
   "start": 33658,
   "end": 33663,
   "type": "Byte"
  },
  {
   "start": 33664,
   "end": 33819,
   "type": "Code"
  },
  {
   "start": 33820,
   "end": 33823,
   "type": "Byte"
  },
  {
   "start": 33824,
   "end": 33914,
   "type": "Code"
  },
  {
   "start": 33915,
   "end": 44863,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 10240,
   "name": "defeat_screen_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10451,
   "name": "defeat_screen_bytes_28d3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10496,
   "name": "defeat_screen_bytes_2900",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10752,
   "name": "defeat_screen_bytes_2a00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10982,
   "name": "defeat_screen_bytes_2ae6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11008,
   "name": "defeat_screen_bytes_2b00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11014,
   "name": "defeat_screen_bytes_2b06",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11240,
   "name": "defeat_after1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11264,
   "name": "defeat_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11520,
   "name": "defeat_colour_2d00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11776,
   "name": "defeat_colour_2e00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12032,
   "name": "defeat_colour_2f00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12264,
   "name": "defeat_after2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12288,
   "name": "end_music_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12291,
   "name": "end_music_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12294,
   "name": "end_music_fade",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12295,
   "name": "end_voice_transpose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12298,
   "name": "end_voice_tie",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12301,
   "name": "end_voice_detune",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12304,
   "name": "end_voice_bend_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12307,
   "name": "end_voice_instr_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12310,
   "name": "end_music_new_tick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12311,
   "name": "end_music_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12312,
   "name": "end_music_tick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12313,
   "name": "end_voice_sid",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12316,
   "name": "end_voice_gate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12319,
   "name": "end_voice_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12322,
   "name": "end_voice_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12325,
   "name": "end_voice_repeat",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12328,
   "name": "end_music_fade_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12329,
   "name": "end_voice_instr_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12332,
   "name": "end_voice_vibrato",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12335,
   "name": "end_voice_pulse_prog",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12338,
   "name": "end_voice_effects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12341,
   "name": "end_voice_release",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12344,
   "name": "end_voice_instr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12347,
   "name": "end_voice_note",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12350,
   "name": "end_glide_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12353,
   "name": "end_glide_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12356,
   "name": "end_glide_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12359,
   "name": "end_glide_to",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12362,
   "name": "end_voice_vib_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12365,
   "name": "end_voice_vib_on",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12368,
   "name": "end_voice_vib_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12371,
   "name": "end_voice_vib_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12374,
   "name": "end_voice_vib_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12377,
   "name": "end_voice_vib_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12380,
   "name": "end_voice_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12383,
   "name": "end_voice_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12386,
   "name": "end_voice_pw_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12389,
   "name": "end_voice_pw_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12392,
   "name": "end_voice_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12395,
   "name": "end_voice_ad",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12398,
   "name": "end_voice_sr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12401,
   "name": "end_voice_pulse_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12404,
   "name": "end_voice_pulse_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12407,
   "name": "end_voice_pulse_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12410,
   "name": "end_voice_pulse_rate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12413,
   "name": "end_voice_spare",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12416,
   "name": "end_music_spare",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12420,
   "name": "end_voice_arp",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12423,
   "name": "end_voice_arp_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12426,
   "name": "end_voice_arp_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12429,
   "name": "end_voice_arp_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12432,
   "name": "end_voice_arp_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12435,
   "name": "end_voice_wave_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12438,
   "name": "end_voice_note_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12441,
   "name": "end_voice_drum_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12444,
   "name": "end_music_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12476,
   "name": "b_30BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12484,
   "name": "b_30C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12492,
   "name": "b_30CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12519,
   "name": "r_30E7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12520,
   "name": "end_music_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12526,
   "name": "a_30EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12528,
   "name": "end_music_volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12533,
   "name": "end_music_filter",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12545,
   "name": "b_3101",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12619,
   "name": "b_314B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12655,
   "name": "b_316F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12658,
   "name": "b_3172",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12664,
   "name": "b_3178",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12666,
   "name": "b_317A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12689,
   "name": "b_3191",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12694,
   "name": "b_3196",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12704,
   "name": "b_31A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12708,
   "name": "j_31A4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12712,
   "name": "end_music_stop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12714,
   "name": "b_31AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12732,
   "name": "end_voice_next",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12760,
   "name": "b_31D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12774,
   "name": "b_31E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12804,
   "name": "b_3204",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12821,
   "name": "b_3215",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12834,
   "name": "j_3222",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12846,
   "name": "b_322E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12858,
   "name": "b_323A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12870,
   "name": "b_3246",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12882,
   "name": "b_3252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12897,
   "name": "j_3261",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12910,
   "name": "b_326E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12950,
   "name": "b_3296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12963,
   "name": "b_32A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12994,
   "name": "b_32C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13015,
   "name": "b_32D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13021,
   "name": "b_32DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13041,
   "name": "b_32F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13065,
   "name": "b_3309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13069,
   "name": "end_tune_transpose_add",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13070,
   "name": "a_330E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13075,
   "name": "j_3313",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13094,
   "name": "b_3326",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13146,
   "name": "b_335A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13164,
   "name": "b_336C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13170,
   "name": "b_3372",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13196,
   "name": "b_338C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13211,
   "name": "b_339B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13217,
   "name": "b_33A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13231,
   "name": "j_33AF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13240,
   "name": "end_sid_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13255,
   "name": "b_33C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13262,
   "name": "end_voice_effects_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13269,
   "name": "b_33D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13308,
   "name": "b_33FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13339,
   "name": "b_341B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13345,
   "name": "b_3421",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13405,
   "name": "b_345D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13413,
   "name": "b_3465",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13416,
   "name": "j_3468",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13436,
   "name": "j_347C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13445,
   "name": "b_3485",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13489,
   "name": "b_34B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13524,
   "name": "b_34D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13536,
   "name": "b_34E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13539,
   "name": "b_34E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13606,
   "name": "j_3526",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13618,
   "name": "b_3532",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13621,
   "name": "b_3535",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13642,
   "name": "b_354A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13668,
   "name": "b_3564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13687,
   "name": "j_3577",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13723,
   "name": "b_359B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13728,
   "name": "a_35A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13735,
   "name": "b_35A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13745,
   "name": "b_35B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13761,
   "name": "b_35C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13797,
   "name": "b_35E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13821,
   "name": "b_35FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13841,
   "name": "b_3611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13855,
   "name": "b_361F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13879,
   "name": "a_3637",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13888,
   "name": "b_3640",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13907,
   "name": "a_3653",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13913,
   "name": "j_3659",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13921,
   "name": "b_3661",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13956,
   "name": "b_3684",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13964,
   "name": "b_368C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13965,
   "name": "a_368D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13995,
   "name": "b_36AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14004,
   "name": "a_36B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14011,
   "name": "b_36BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14015,
   "name": "b_36BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14019,
   "name": "j_36C3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14044,
   "name": "b_36DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14053,
   "name": "b_36E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14088,
   "name": "b_3708",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14109,
   "name": "j_371D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14125,
   "name": "b_372D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14147,
   "name": "b_3743",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14156,
   "name": "r_374C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14157,
   "name": "end_set_freq",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14170,
   "name": "f_375A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14171,
   "name": "end_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14266,
   "name": "f_37BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14267,
   "name": "end_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14363,
   "name": "end_tunes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14364,
   "name": "f_381C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14369,
   "name": "end_tune_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14370,
   "name": "end_tune_transpose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14379,
   "name": "end_pattern_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14401,
   "name": "end_pattern_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14423,
   "name": "end_arp_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14429,
   "name": "end_arp_hi",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14438,
   "name": "end_pulse_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14442,
   "name": "end_pulse_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14447,
   "name": "end_wave_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14452,
   "name": "end_wave_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14457,
   "name": "end_note_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14462,
   "name": "end_note_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14467,
   "name": "end_programs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14594,
   "name": "end_instruments",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14595,
   "name": "f_3903",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14596,
   "name": "f_3904",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14597,
   "name": "f_3905",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14598,
   "name": "f_3906",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14599,
   "name": "f_3907",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14600,
   "name": "f_3908",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14601,
   "name": "f_3909",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14745,
   "name": "end_drum_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14749,
   "name": "end_drum_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14753,
   "name": "end_order_gap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14754,
   "name": "end_orders0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14771,
   "name": "end_orders0_39b3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14801,
   "name": "end_patterns_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14862,
   "name": "end_patterns_a_3a0e",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15080,
   "name": "end_orders1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15092,
   "name": "end_patterns_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15117,
   "name": "end_patterns_b_3b0d",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15255,
   "name": "end_patterns_b_3b97",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15337,
   "name": "end_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16291,
   "name": "end_leftover_3fa3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16311,
   "name": "end_leftover_3fb7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16361,
   "name": "end_leftover_3fe9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "victory_bitmap",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17408,
   "name": "victory_bitmap_4400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18432,
   "name": "victory_bitmap_4800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19456,
   "name": "victory_bitmap_4c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20480,
   "name": "victory_bitmap_5000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21504,
   "name": "victory_bitmap_5400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "victory_bitmap_5800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23552,
   "name": "victory_bitmap_5c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24384,
   "name": "victory_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24576,
   "name": "victory_screen_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24656,
   "name": "victory_screen_bytes_6050",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24657,
   "name": "victory_screen_bytes_6051",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24695,
   "name": "victory_screen_bytes_6077",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24832,
   "name": "victory_screen_bytes_6100",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25088,
   "name": "victory_screen_bytes_6200",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25344,
   "name": "victory_screen_bytes_6300",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25576,
   "name": "ending_gap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25592,
   "name": "ending_gap_63f8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25593,
   "name": "ending_gap_63f9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25856,
   "name": "ending_gap_6500",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25984,
   "name": "ending_gap_6580",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26600,
   "name": "ending_gap_67e8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27624,
   "name": "ending_gap_6be8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28648,
   "name": "ending_gap_6fe8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29672,
   "name": "ending_gap_73e8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30696,
   "name": "ending_gap_77e8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30720,
   "name": "ending_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "ending_font_7c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "ending_main",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32783,
   "name": "b_800F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32785,
   "name": "j_8011",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32842,
   "name": "b_804A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32845,
   "name": "b_804D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32848,
   "name": "victory_screen",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32850,
   "name": "b_8052",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32914,
   "name": "b_8092",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32922,
   "name": "j_809A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32941,
   "name": "b_80AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32942,
   "name": "a_80AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32943,
   "name": "a_80AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32959,
   "name": "defeat_screen",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32961,
   "name": "b_80C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33016,
   "name": "b_80F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33018,
   "name": "a_80FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33021,
   "name": "a_80FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33071,
   "name": "b_812F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33079,
   "name": "j_8137",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33102,
   "name": "b_814E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33103,
   "name": "a_814F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33104,
   "name": "a_8150",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33117,
   "name": "ending_wait",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33155,
   "name": "ending_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33176,
   "name": "b_8198",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33191,
   "name": "b_81A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33209,
   "name": "ending_screen_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33210,
   "name": "ending_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33211,
   "name": "ending_steps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33212,
   "name": "ending_machine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33344,
   "name": "ending_rti",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33345,
   "name": "ending_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33384,
   "name": "ending_stick_decode",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33392,
   "name": "b_8270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33396,
   "name": "b_8274",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33400,
   "name": "b_8278",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33404,
   "name": "b_827C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33416,
   "name": "ending_key_scan",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33428,
   "name": "b_8294",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33455,
   "name": "b_82AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33463,
   "name": "b_82B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33469,
   "name": "b_82BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33472,
   "name": "estick_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33473,
   "name": "estick_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33474,
   "name": "estick_fire",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33476,
   "name": "ekey_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33484,
   "name": "ekey_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33492,
   "name": "ekey_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33500,
   "name": "ekey_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33564,
   "name": "ending_key",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33565,
   "name": "ending_irq_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33586,
   "name": "b_8332",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33658,
   "name": "erand_bytes",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33659,
   "name": "a_837B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33660,
   "name": "a_837C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33661,
   "name": "a_837D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33662,
   "name": "a_837E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33663,
   "name": "a_837F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33664,
   "name": "ending_irq_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33698,
   "name": "b_83A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33703,
   "name": "j_83A7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33737,
   "name": "b_83C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33743,
   "name": "ending_irq_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33800,
   "name": "message_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33805,
   "name": "b_840D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33820,
   "name": "message_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33822,
   "name": "message_fine",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33823,
   "name": "message_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33824,
   "name": "message_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33837,
   "name": "r_842D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33838,
   "name": "b_842E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33850,
   "name": "message_shift",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33852,
   "name": "b_843C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33864,
   "name": "message_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33889,
   "name": "b_8461",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33915,
   "name": "msg_defeat_union",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33927,
   "name": "f_8487",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33989,
   "name": "a_84C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33990,
   "name": "a_84C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34062,
   "name": "msg_victory_confed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34068,
   "name": "f_8514",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34157,
   "name": "a_856D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34158,
   "name": "a_856E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34186,
   "name": "msg_victory_union",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34196,
   "name": "f_8594",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34269,
   "name": "a_85DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34270,
   "name": "a_85DE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34349,
   "name": "msg_defeat_confed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34361,
   "name": "f_8639",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34425,
   "name": "a_8679",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34426,
   "name": "a_867A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34496,
   "name": "rank_words",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34497,
   "name": "f_86C1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34502,
   "name": "rank_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34532,
   "name": "victory_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34788,
   "name": "victory_colours_87e4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35044,
   "name": "victory_colours_88e4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35300,
   "name": "victory_colours_89e4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35556,
   "name": "ending_gap2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36580,
   "name": "ending_gap2_8ee4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36864,
   "name": "defeat_bitmap",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37888,
   "name": "defeat_bitmap_9400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38912,
   "name": "defeat_bitmap_9800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39936,
   "name": "defeat_bitmap_9c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "defeat_bitmap_a000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41984,
   "name": "defeat_bitmap_a400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43008,
   "name": "defeat_bitmap_a800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44032,
   "name": "defeat_bitmap_ac00",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 10240,
   "type": "line",
   "text": "the defeat picture's screen bytes, two colours for each cell of its bitmap; $80BF copies them to $6000."
  },
  {
   "address": 10451,
   "type": "line",
   "text": "defeat_screen_bytes, continued: bytes $28D3-$28FF of the block at $2800."
  },
  {
   "address": 10496,
   "type": "line",
   "text": "defeat_screen_bytes, continued: bytes $2900-$29FF of the block at $2800."
  },
  {
   "address": 10752,
   "type": "line",
   "text": "defeat_screen_bytes, continued: bytes $2A00-$2AE5 of the block at $2800."
  },
  {
   "address": 10982,
   "type": "line",
   "text": "defeat_screen_bytes, continued: bytes $2AE6-$2AFF of the block at $2800."
  },
  {
   "address": 11008,
   "type": "line",
   "text": "defeat_screen_bytes, continued: bytes $2B00-$2B05 of the block at $2800."
  },
  {
   "address": 11014,
   "type": "line",
   "text": "defeat_screen_bytes, continued: bytes $2B06-$2BE7 of the block at $2800."
  },
  {
   "address": 11240,
   "type": "line",
   "text": "24 bytes nothing reads, the power-on pattern saved with the file."
  },
  {
   "address": 11264,
   "type": "line",
   "text": "the defeat picture's colour RAM, copied to $D800 by $80BF."
  },
  {
   "address": 11520,
   "type": "line",
   "text": "defeat_colour, continued: bytes $2D00-$2DFF of the block at $2C00."
  },
  {
   "address": 11776,
   "type": "line",
   "text": "defeat_colour, continued: bytes $2E00-$2EFF of the block at $2C00."
  },
  {
   "address": 12032,
   "type": "line",
   "text": "defeat_colour, continued: bytes $2F00-$2FE7 of the block at $2C00."
  },
  {
   "address": 12264,
   "type": "line",
   "text": "24 bytes nothing reads."
  },
  {
   "address": 12288,
   "type": "line",
   "text": "the ending's tune driver, a later build of the title's ($9000 there): $3000 starts tune A, $3003 plays a frame. The ending starts tune 0 for the victory and tune 1 for the defeat, and plays a frame from its raster interrupt ($83BE)."
  },
  {
   "address": 12291,
   "type": "line",
   "text": "the driver's frame entry: jmp $30E8."
  },
  {
   "address": 12294,
   "type": "line",
   "text": "frames between steps of the fade-out, 0 for none: the ending sets $14 when the screen is to end ($8198, $8475); a pattern or the order list can set it with $FC."
  },
  {
   "address": 12295,
   "type": "line",
   "text": "each voice's transpose, from the order list's bytes $80 and up."
  },
  {
   "address": 12298,
   "type": "line",
   "text": "1 when the voice's next note is tied to this one (pattern byte $FB)."
  },
  {
   "address": 12301,
   "type": "line",
   "text": "$10 when the instrument's effect byte has bit 4 set, added to the frequency's low byte as it is written."
  },
  {
   "address": 12304,
   "type": "line",
   "text": "counts frames of the end-of-note pitch drop."
  },
  {
   "address": 12307,
   "type": "line",
   "text": "added to the instrument number of the voice's $C0 bytes; from the order list's bytes $70 to $7F."
  },
  {
   "address": 12310,
   "type": "line",
   "text": "$FF for the frame a tick ends, when the voices read their next notes."
  },
  {
   "address": 12311,
   "type": "line",
   "text": "1 while the tune plays; 0 when it ends ($FE in an order list) or the fade-out reaches silence."
  },
  {
   "address": 12312,
   "type": "line",
   "text": "frames left in the tick, from the tune's speed; a speed with bit 7 set alternates between two lengths ($F2)."
  },
  {
   "address": 12313,
   "type": "line",
   "text": "each voice's offset of its registers in the SID: 0, 7, 14."
  },
  {
   "address": 12316,
   "type": "line",
   "text": "each voice's gate mask, ANDed into the waveform byte: $FF while the note sounds, $FE to release it."
  },
  {
   "address": 12319,
   "type": "line",
   "text": "ticks left of the voice's note."
  },
  {
   "address": 12322,
   "type": "line",
   "text": "the voice's note length in ticks, from the pattern bytes $80-$9F (and $E0-$FF, a rest)."
  },
  {
   "address": 12325,
   "type": "line",
   "text": "how many more times the voice plays its pattern, from the order list's bytes $60 to $6F."
  },
  {
   "address": 12328,
   "type": "line",
   "text": "frames to the next step of the fade-out."
  },
  {
   "address": 12329,
   "type": "line",
   "text": "the instrument's fifth byte: bit 3 keeps the pulse width from note to note, the high nibble the release point."
  },
  {
   "address": 12332,
   "type": "line",
   "text": "the instrument's vibrato byte: speed in the low nibble, depth in the high."
  },
  {
   "address": 12335,
   "type": "line",
   "text": "the instrument's sixth byte: the low nibble picks a pulse program, the high nibble the vibrato's delay."
  },
  {
   "address": 12338,
   "type": "line",
   "text": "the instrument's last byte: bit 7 runs a waveform and note program, bit 6 an arpeggio, bit 5 a pitch drop at the note's end, bit 4 the detune, and the low nibble without bit 7 a drum start."
  },
  {
   "address": 12341,
   "type": "line",
   "text": "the tick of the note at which its gate is released."
  },
  {
   "address": 12344,
   "type": "line",
   "text": "the voice's instrument times 8, an index into the instruments at $3902."
  },
  {
   "address": 12347,
   "type": "line",
   "text": "the note the voice plays, 0 to 95, or $FF for a rest."
  },
  {
   "address": 12350,
   "type": "line",
   "text": "the tick of a glide's start (pattern byte $FD): the note's length less the glide's delay."
  },
  {
   "address": 12353,
   "type": "line",
   "text": "the glide's direction: the target note less the start, its top bit for down."
  },
  {
   "address": 12356,
   "type": "line",
   "text": "the glide's delay and speed, from the $FD byte's first value; 0 when no glide."
  },
  {
   "address": 12359,
   "type": "line",
   "text": "the note the glide goes to."
  },
  {
   "address": 12362,
   "type": "line",
   "text": "ticks before the vibrato starts."
  },
  {
   "address": 12365,
   "type": "line",
   "text": "1 once the vibrato has started."
  },
  {
   "address": 12368,
   "type": "line",
   "text": "frames to the vibrato's next change of direction."
  },
  {
   "address": 12371,
   "type": "line",
   "text": "the vibrato's direction, 0 up, 1 down."
  },
  {
   "address": 12374,
   "type": "line",
   "text": "the vibrato's step, low byte: the distance to the next semitone shifted right by the depth."
  },
  {
   "address": 12377,
   "type": "line",
   "text": "the vibrato's step, high byte."
  },
  {
   "address": 12380,
   "type": "line",
   "text": "the frequency's low byte the next frame writes to the SID."
  },
  {
   "address": 12383,
   "type": "line",
   "text": "the frequency's high byte."
  },
  {
   "address": 12386,
   "type": "line",
   "text": "the pulse width's low byte."
  },
  {
   "address": 12389,
   "type": "line",
   "text": "the pulse width's high nibble."
  },
  {
   "address": 12392,
   "type": "line",
   "text": "the waveform and gate byte, ANDed with the gate mask as it is written."
  },
  {
   "address": 12395,
   "type": "line",
   "text": "the attack and decay."
  },
  {
   "address": 12398,
   "type": "line",
   "text": "the sustain and release."
  },
  {
   "address": 12401,
   "type": "line",
   "text": "the position in the voice's pulse program."
  },
  {
   "address": 12404,
   "type": "line",
   "text": "frames left of the pulse program's step."
  },
  {
   "address": 12407,
   "type": "line",
   "text": "the pulse sweep's direction, 0 up, 1 down."
  },
  {
   "address": 12410,
   "type": "line",
   "text": "how much the pulse width moves a frame."
  },
  {
   "address": 12413,
   "type": "line",
   "text": "cleared on each new note; nothing reads it."
  },
  {
   "address": 12416,
   "type": "line",
   "text": "set to 1 on each new note; nothing reads it; and three bytes after it."
  },
  {
   "address": 12420,
   "type": "line",
   "text": "the arpeggio the voice plays, from the pattern bytes $60 to $7F."
  },
  {
   "address": 12423,
   "type": "line",
   "text": "the step of the arpeggio."
  },
  {
   "address": 12426,
   "type": "line",
   "text": "frames to the arpeggio's next step."
  },
  {
   "address": 12429,
   "type": "line",
   "text": "the arpeggio step's semitones above the note."
  },
  {
   "address": 12432,
   "type": "line",
   "text": "added to the arpeggio number of the $60 bytes; from the order list's bytes $50 to $5F, which the title's driver does not have."
  },
  {
   "address": 12435,
   "type": "line",
   "text": "the position in the voice's waveform program."
  },
  {
   "address": 12438,
   "type": "line",
   "text": "the position in the voice's note program."
  },
  {
   "address": 12441,
   "type": "line",
   "text": "frames left of the drum start's first waveform."
  },
  {
   "address": 12444,
   "type": "line",
   "text": "starts tune A: A times 8 ($FF) indexes the tune's entries ($381B); the tune's transpose ($3822) into the add at $330D; the SID cleared ($33B8), the volume 15, the voices' state cleared, each voice released ($301C = $FE) with its first note at once ($301F = 1), and the tune on."
  },
  {
   "address": 12520,
   "type": "line",
   "text": "one frame, while the tune is on ($3017): the volume with the filter mode ($30EE, 0) to $D418, the filter's routing ($30F5) and cutoff (0) to the SID, each voice's shadow registers to the SID; a fade-out step every $3006 frames, the tune stopping at volume 0; at the end of each tick each voice reads on ($31BC), and every frame its effects ($33CE)."
  },
  {
   "address": 12526,
   "type": "line",
   "text": "the filter mode for $D418's high nibble, which end_music_start clears and nothing else writes: the operand of the lda at $30ED, written at $30B5."
  },
  {
   "address": 12528,
   "type": "line",
   "text": "the SID's volume, the operand of the ora at $30EF: 15 at the start, counted down by the fade-out, set by an order list's $FA."
  },
  {
   "address": 12533,
   "type": "line",
   "text": "the operand of the lda at $30F4 that goes to $D417, the filter's resonance and routing, set by a pattern's $FE."
  },
  {
   "address": 12712,
   "type": "line",
   "text": "silences the three voices (frequency 0) and turns the tune off."
  },
  {
   "address": 12732,
   "type": "line",
   "text": "reads the voice's pattern ($F3,x through $382B/$3841, position $F6,x); at its end ($FF) plays it again while $3025 counts, then reads the order list (through $381B, position $F9,x): $FF loops to its start, $FE ends the tune, $FC sets the fade, $FA the volume, $80-$FF a transpose, $70-$7F an instrument offset, $60-$6F a repeat, $50-$5F an arpeggio base, otherwise the next pattern. A pattern's bytes: $FE the filter, $FD a glide, $FC the fade, $E0-$FF a rest of that length, $C0-$DF an instrument, $80-$9F a length, $60-$7F an arpeggio, $FB a tie, below $60 a note."
  },
  {
   "address": 13069,
   "type": "line",
   "text": "the adc # whose operand ($330E) adds the tune's transpose to each note; the code from here starts the note with its instrument ($3902)."
  },
  {
   "address": 13070,
   "type": "line",
   "text": "the tune's transpose, which end_music_start writes into this add; the code from here stores the note and starts it with its instrument: the operand of the adc at $330D, written at $30A5."
  },
  {
   "address": 13240,
   "type": "line",
   "text": "sets the test bit and clears the gate of each voice, then zeroes the SID's registers $D400-$D41F."
  },
  {
   "address": 13262,
   "type": "line",
   "text": "one frame of a voice's effects: on a new note a glide's set-up, a drum start ($3999, $399D) and the vibrato's ($3907, $3908); then the glide, the vibrato after its delay, the pitch drop at the end of the note (bit 5), the pulse program ($3866), the waveform and note programs ($386F, $3879), the drum's waveform back after its time, and the arpeggio ($3857)."
  },
  {
   "address": 13728,
   "type": "line",
   "text": "the end-of-note pitch drop, half the step on every other frame; the code from here sets the frequency's high byte lower: the operand of the sbc at $359F, written at $3587, $3598."
  },
  {
   "address": 13879,
   "type": "line",
   "text": "the pulse sweep's top limit for the pulse width's high byte, from the program's second byte: the operand of the cmp at $3636, written at $35D6."
  },
  {
   "address": 13907,
   "type": "line",
   "text": "the pulse sweep's bottom limit for the pulse width's high byte, from the program's first byte: the operand of the cmp at $3652, written at $35D0."
  },
  {
   "address": 13965,
   "type": "line",
   "text": "the waveform program's number, which picks the note program; the code from here reads the voice's note program: the operand of the ldy at $368C, written at $3663."
  },
  {
   "address": 14004,
   "type": "line",
   "text": "the note program's step, held in the lda #: added to the note (bit 7 clear) or a note of its own (bit 7 set): the operand of the lda at $36B3, written at $36AB."
  },
  {
   "address": 14157,
   "type": "line",
   "text": "the frequency of note A from the tables at $375B (low bytes) and $37BB (high), into the voice's shadow registers."
  },
  {
   "address": 14170,
   "type": "line",
   "text": "the rts of end_set_freq, which the vibrato also reads as the low byte before note 0's."
  },
  {
   "address": 14171,
   "type": "line",
   "text": "the low bytes of the SID frequencies of the 96 notes."
  },
  {
   "address": 14266,
   "type": "line",
   "text": "end_freq_lo, continued: note 95's low byte, the last; the high bytes start after it."
  },
  {
   "address": 14267,
   "type": "line",
   "text": "the high bytes of the 96 notes' frequencies."
  },
  {
   "address": 14363,
   "type": "line",
   "text": "the two tunes' entries, eight bytes each: the three voices' order lists (low byte, high byte), the speed and the transpose. Tune 0, the victory's: orders at $39A2, $39B2, $39C1, speed 2, transpose 0; tune 1, the defeat's: orders at $3AE8, $3AEC, $3AF0, speed 2, transpose 1."
  },
  {
   "address": 14364,
   "type": "line",
   "text": "end_tunes, continued: from the high byte of tune 0's first order list."
  },
  {
   "address": 14369,
   "type": "line",
   "text": "tune 0's speed, frames per tick less one; tune 1's eight bytes on."
  },
  {
   "address": 14370,
   "type": "line",
   "text": "tune 0's transpose; tune 1's eight bytes on; then tune 1's entry."
  },
  {
   "address": 14379,
   "type": "line",
   "text": "the low bytes of the 22 patterns' addresses ($39D1 to $3B8C)."
  },
  {
   "address": 14401,
   "type": "line",
   "text": "their high bytes."
  },
  {
   "address": 14423,
   "type": "line",
   "text": "the low bytes of the six arpeggios' addresses ($38DE to $38FC)."
  },
  {
   "address": 14429,
   "type": "line",
   "text": "their high bytes; and three bytes after them nothing reads."
  },
  {
   "address": 14438,
   "type": "line",
   "text": "the low bytes of the pulse programs' addresses, entries 1 to 3 used ($38C2, $38CB, $38D0); entry 0 is not, since a low nibble of 0 means no program."
  },
  {
   "address": 14442,
   "type": "line",
   "text": "their high bytes; and a byte after them nothing reads."
  },
  {
   "address": 14447,
   "type": "line",
   "text": "the low bytes of the five waveform programs' addresses ($3883 to $38A6)."
  },
  {
   "address": 14452,
   "type": "line",
   "text": "the high bytes of the five waveform programs' addresses."
  },
  {
   "address": 14457,
   "type": "line",
   "text": "the low bytes of the five note programs' addresses ($3886 to $38A9)."
  },
  {
   "address": 14462,
   "type": "line",
   "text": "the high bytes of the five note programs' addresses."
  },
  {
   "address": 14467,
   "type": "line",
   "text": "the waveform and note programs, the pulse programs and the arpeggios the tables before point into, each a list of bytes with $FF and a position to loop and $FE to hold; a pulse program's $FD sets a new width."
  },
  {
   "address": 14594,
   "type": "line",
   "text": "the instruments, eight bytes each: pulse width, waveform, attack and decay, sustain and release, flags and release point, vibrato, pulse program and vibrato delay, effects."
  },
  {
   "address": 14595,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's waveform, the column $3326 reads with the instrument number times 8."
  },
  {
   "address": 14596,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's attack and decay, a column of its own."
  },
  {
   "address": 14597,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's sustain and release."
  },
  {
   "address": 14598,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's flags and release point."
  },
  {
   "address": 14599,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's vibrato."
  },
  {
   "address": 14600,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's pulse program and vibrato delay."
  },
  {
   "address": 14601,
   "type": "line",
   "text": "end_instruments, continued: instrument 0's effects, and the instruments from 1 on."
  },
  {
   "address": 14665,
   "type": "line",
   "text": "end_instruments, continued: from instrument 9 ($3902 + 72) on."
  },
  {
   "address": 14745,
   "type": "line",
   "text": "the drum starts' first waveform's frames, by the effect byte's low nibble (entries 1 to 3: 2, 2, 8)."
  },
  {
   "address": 14749,
   "type": "line",
   "text": "the drum starts' first waveforms (entries 1 to 3: noise $81, triangle $11, pulse $41)."
  },
  {
   "address": 14753,
   "type": "line",
   "text": "a byte before the order lists that nothing reads."
  },
  {
   "address": 14754,
   "type": "line",
   "text": "tune 0's three order lists, each pattern numbers and commands ending in $FF or $FE."
  },
  {
   "address": 14771,
   "type": "line",
   "text": "end_orders0, continued: bytes $39B3-$39D0 of the block at $39A2."
  },
  {
   "address": 14801,
   "type": "line",
   "text": "patterns 0 to 18 of the two tunes: notes, lengths, instruments and commands, each ending in $FF."
  },
  {
   "address": 14862,
   "type": "line",
   "text": "end_patterns_a, continued: bytes $3A0E-$3AE7 of the block at $39D1."
  },
  {
   "address": 15080,
   "type": "line",
   "text": "tune 1's three order lists, four bytes each."
  },
  {
   "address": 15092,
   "type": "line",
   "text": "patterns 19 to 21."
  },
  {
   "address": 15117,
   "type": "line",
   "text": "end_patterns_b, continued: bytes $3B0D-$3B96 of the block at $3AF4."
  },
  {
   "address": 15255,
   "type": "line",
   "text": "end_patterns_b, continued: bytes $3B97-$3BE8 of the block at $3AF4."
  },
  {
   "address": 15337,
   "type": "line",
   "text": "1,047 bytes after the tunes that nothing reads: bitmap and colour bytes left in memory when the file was saved, parts of them the same as the title picture's at these addresses."
  },
  {
   "address": 16291,
   "type": "line",
   "text": "end_leftover, continued: bytes $3FA3-$3FB6 of the block at $3BE9."
  },
  {
   "address": 16311,
   "type": "line",
   "text": "end_leftover, continued: bytes $3FB7-$3FE8 of the block at $3BE9."
  },
  {
   "address": 16361,
   "type": "line",
   "text": "end_leftover, continued: bytes $3FE9-$3FFF of the block at $3BE9."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "the victory picture's multicolour bitmap, 8,000 bytes, shown below the message from line $50: a soldier in blue comes home to a woman in a red dress, with an old couple and a girl beside them."
  },
  {
   "address": 17408,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $4400-$47FF of the block at $4000."
  },
  {
   "address": 18432,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $4800-$4BFF of the block at $4000."
  },
  {
   "address": 19456,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $4C00-$4FFF of the block at $4000."
  },
  {
   "address": 20480,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $5000-$53FF of the block at $4000."
  },
  {
   "address": 21504,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $5400-$57FF of the block at $4000."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $5800-$5BFF of the block at $4000."
  },
  {
   "address": 23552,
   "type": "line",
   "text": "victory_bitmap, continued: bytes $5C00-$5F3F of the block at $4000."
  },
  {
   "address": 24384,
   "type": "line",
   "text": "192 bytes after the bitmap that nothing reads."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "the victory picture's screen bytes; rows 0 to 3 are the text rows above it, with the message on row 2. The defeat screen copies its own over them."
  },
  {
   "address": 24656,
   "type": "line",
   "text": "victory_screen_bytes, continued: bytes $6050-$6050 of the block at $6000."
  },
  {
   "address": 24657,
   "type": "line",
   "text": "victory_screen_bytes, continued: bytes $6051-$6076 of the block at $6000."
  },
  {
   "address": 24695,
   "type": "line",
   "text": "victory_screen_bytes, continued: bytes $6077-$60FF of the block at $6000."
  },
  {
   "address": 24832,
   "type": "line",
   "text": "victory_screen_bytes, continued: bytes $6100-$61FF of the block at $6000."
  },
  {
   "address": 25088,
   "type": "line",
   "text": "victory_screen_bytes, continued: bytes $6200-$62FF of the block at $6000."
  },
  {
   "address": 25344,
   "type": "line",
   "text": "victory_screen_bytes, continued: bytes $6300-$63E7 of the block at $6000."
  },
  {
   "address": 25576,
   "type": "line",
   "text": "5,144 bytes between the screen and the font that nothing reads, the power-on pattern saved with the file."
  },
  {
   "address": 25592,
   "type": "line",
   "text": "ending_gap, continued: bytes $63F8-$63F8 of the block at $63E8."
  },
  {
   "address": 25593,
   "type": "line",
   "text": "ending_gap, continued: bytes $63F9-$64FF of the block at $63E8."
  },
  {
   "address": 25856,
   "type": "line",
   "text": "ending_gap, continued: bytes $6500-$657F of the block at $63E8."
  },
  {
   "address": 25984,
   "type": "line",
   "text": "ending_gap, continued: bytes $6580-$67E7 of the block at $63E8."
  },
  {
   "address": 26600,
   "type": "line",
   "text": "ending_gap, continued: bytes $67E8-$6BE7 of the block at $63E8."
  },
  {
   "address": 27624,
   "type": "line",
   "text": "ending_gap, continued: bytes $6BE8-$6FE7 of the block at $63E8."
  },
  {
   "address": 28648,
   "type": "line",
   "text": "ending_gap, continued: bytes $6FE8-$73E7 of the block at $63E8."
  },
  {
   "address": 29672,
   "type": "line",
   "text": "ending_gap, continued: bytes $73E8-$77E7 of the block at $63E8."
  },
  {
   "address": 30696,
   "type": "line",
   "text": "ending_gap, continued: bytes $77E8-$77FF of the block at $63E8."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "the font of the scrolling message, 256 characters, the same as the title's at these addresses."
  },
  {
   "address": 31744,
   "type": "line",
   "text": "ending_font, continued: bytes $7C00-$7FFF of the block at $7800."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "the ending, called by the boot's script once the war is won ($0398 the winner): sets the machine up ($81BC) and puts the number of months ($0399 tens, $039A units) into the four messages; then, when one person played against the computer, only the screen for that person: the victory ($8050) if the person won, the defeat ($80BF) if the computer did; with two people, or the computer playing both, the victory and then the defeat."
  },
  {
   "address": 32848,
   "type": "line",
   "text": "the winner's screen: its colours into colour RAM ($86E4), black border and background, tune 0 ($3000), and the scrolling message for the winner (the Union's at $858A, the Confederacy's at $850E) with the winner's rank from its level ($0380, $86C0) written into it; the raster interrupts on ($831D); then waits ($815D)."
  },
  {
   "address": 32942,
   "type": "line",
   "text": "the low byte of the winner's rank text victory_screen copies: the low byte of the address of the lda at $80AD, written at $80A2."
  },
  {
   "address": 32943,
   "type": "line",
   "text": "the high byte of the winner's rank text victory_screen copies: the high byte of the address of the lda at $80AD, written at $80A8."
  },
  {
   "address": 32959,
   "type": "line",
   "text": "the loser's screen: its picture copied into place (screen bytes from $2800 to $6000, colours from $2C00, bitmap from $9000 to $4000, eight kilobytes through the operands at $80FA and $80FD), black border and background, tune 1, and the message for the loser (the Union's at $847B, the Confederacy's at $862D) with the loser's rank written into it; the interrupts on; then waits ($815D)."
  },
  {
   "address": 33018,
   "type": "line",
   "text": "the high byte of the bitmap source defeat_screen copies from, counted up a page at a time: the high byte of the address of the lda at $80F8, written at $8101."
  },
  {
   "address": 33021,
   "type": "line",
   "text": "the high byte of the bitmap store defeat_screen copies to, counted up a page at a time: the high byte of the address of the sta at $80FB, written at $8104."
  },
  {
   "address": 33103,
   "type": "line",
   "text": "the low byte of the loser's rank text defeat_screen copies: the low byte of the address of the lda at $814E, written at $8143."
  },
  {
   "address": 33104,
   "type": "line",
   "text": "the high byte of the loser's rank text defeat_screen copies: the high byte of the address of the lda at $814E, written at $8149."
  },
  {
   "address": 33117,
   "type": "line",
   "text": "waits for space or fire (the stick in port 2, $8241): then the music fades ($3006 = $14) and after three steps of 100 frames ($81BA, $81BB) the screen ends ($8183). Once the message has scrolled out ($841F) it ends by itself after its own three steps ($8461)."
  },
  {
   "address": 33155,
   "type": "line",
   "text": "the raster interrupt off and acknowledged, the screen blanked, and back to the script."
  },
  {
   "address": 33209,
   "type": "line",
   "text": "0 for the victory screen, 1 for the defeat."
  },
  {
   "address": 33210,
   "type": "line",
   "text": "frames to the next step of the wait, counted down by the interrupt."
  },
  {
   "address": 33211,
   "type": "line",
   "text": "the steps of 100 frames left before the screen ends."
  },
  {
   "address": 33212,
   "type": "line",
   "text": "the ending's machine: RAM with I/O ($35), the CIA interrupts and timers off, video bank 1, black border and background, sprites off, bitmap at $4000 with the screen at $6000 ($D018 = $80), the bitmap on ($3B), multicolour, the raster interrupt off, background colours 1 to 3 blue (6), NMI and reset pointing at the rti at $8240, and sprite colours blue."
  },
  {
   "address": 33344,
   "type": "line",
   "text": "the rti that NMI and reset point at in the ending."
  },
  {
   "address": 33345,
   "type": "line",
   "text": "the joystick in port 2, then decoded at $8268."
  },
  {
   "address": 33366,
   "type": "line",
   "text": "the same for port 1, which nothing calls: lda #0, sta $DC03, ten nops and lda $DC01, running on into $8268."
  },
  {
   "address": 33384,
   "type": "line",
   "text": "the stick's bits into $82C0 (x), $82C1 (y) and $82C2 (fire: 0 pressed)."
  },
  {
   "address": 33416,
   "type": "line",
   "text": "the keyboard, row by row ($82C4), the PETSCII code of the key down from that row's table ($82CC, $82D4), $FF for none."
  },
  {
   "address": 33472,
   "type": "line",
   "text": "the stick across: $FF left, 1 right."
  },
  {
   "address": 33473,
   "type": "line",
   "text": "up and down."
  },
  {
   "address": 33474,
   "type": "line",
   "text": "0 while fire is pressed; and a byte after it nothing uses."
  },
  {
   "address": 33476,
   "type": "line",
   "text": "the keyboard rows the scan drives, row 7 first; also the column patterns."
  },
  {
   "address": 33484,
   "type": "line",
   "text": "each row's key codes' address, low bytes."
  },
  {
   "address": 33492,
   "type": "line",
   "text": "each row's key codes' address, high bytes."
  },
  {
   "address": 33500,
   "type": "line",
   "text": "the PETSCII code of each key, eight to a row, as in the battle's table at $8991."
  },
  {
   "address": 33536,
   "type": "line",
   "text": "ekey_codes, continued: the last rows."
  },
  {
   "address": 33564,
   "type": "line",
   "text": "the key code found this pass."
  },
  {
   "address": 33565,
   "type": "line",
   "text": "the message row cleared ($8408), the raster interrupt on at $8380 for line $F9."
  },
  {
   "address": 33614,
   "type": "line",
   "text": "code nothing calls, the battle's random-number routine ($9073 there) at these addresses, reading the five bytes after it."
  },
  {
   "address": 33658,
   "type": "line",
   "text": "the six bytes the random numbers would come from: the text \"random\", as in the battle."
  },
  {
   "address": 33659,
   "type": "line",
   "text": "erand_bytes, continued: the second byte."
  },
  {
   "address": 33660,
   "type": "line",
   "text": "erand_bytes, continued: the third byte."
  },
  {
   "address": 33661,
   "type": "line",
   "text": "erand_bytes, continued: the fourth byte."
  },
  {
   "address": 33662,
   "type": "line",
   "text": "erand_bytes, continued: the fifth byte."
  },
  {
   "address": 33663,
   "type": "line",
   "text": "erand_bytes, continued: the sixth and last."
  },
  {
   "address": 33664,
   "type": "line",
   "text": "the raster interrupt at the top, line $0A: text mode with the font at $7800 ($D018 = $8E, $D011 = $1F) for the message row, its fine scroll ($841E), the background yellow on the victory screen and light blue on the defeat; the next interrupt at line $50 ($83CF); the music ($3003); the wait's timer ($81BA)."
  },
  {
   "address": 33743,
   "type": "line",
   "text": "the raster interrupt at line $50: the multicolour bitmap for the picture ($D011 = $3F, $D016 = $10, $D018 = $80), a black background; the next interrupt at line $0A; the message scrolls ($8420)."
  },
  {
   "address": 33800,
   "type": "line",
   "text": "the message row (screen row 2) filled with spaces in the screen's colour ($841C: dark grey on the victory screen, yellow on the defeat)."
  },
  {
   "address": 33820,
   "type": "line",
   "text": "the message row's colour on each screen: dark grey, yellow."
  },
  {
   "address": 33822,
   "type": "line",
   "text": "the message's fine scroll, 0 to 7, two pixels a frame."
  },
  {
   "address": 33823,
   "type": "line",
   "text": "1 once the message has scrolled to its end."
  },
  {
   "address": 33824,
   "type": "line",
   "text": "two pixels a frame; at each character, the row moves left ($843A) and, until the end, the next character of the message comes in at the right ($8448)."
  },
  {
   "address": 33850,
   "type": "line",
   "text": "screen row 2 moved one character left."
  },
  {
   "address": 33864,
   "type": "line",
   "text": "the next character of the message ($10/$11) into column 39 of row 2; at its end ($FF) a space, the message done, the wait's three steps of 100 frames started and the music's fade ($3006 = $14)."
  },
  {
   "address": 33915,
   "type": "line",
   "text": "the defeat screen's message to the Union, in screen codes, ending in $FF: \"WELL, WELL, SERGEANT. WHAT HAVE YOU DONE? DEFEATED BY THE CONFEDERATES IN XX MONTHS. THERE MUST BE SOME TRAITORS WITHIN YOUR RANKS. I WONDER WHO?\", the rank and the months written in."
  },
  {
   "address": 33927,
   "type": "line",
   "text": "msg_defeat_union, continued: the rank, ten characters ($8150 writes the loser's over SERGEANT.), then the message on."
  },
  {
   "address": 33989,
   "type": "line",
   "text": "msg_defeat_union, continued: the months, two digits written by $8014 and $8026 over XX."
  },
  {
   "address": 33990,
   "type": "line",
   "text": "msg_defeat_union, continued: the months' units digit, and the rest of the message."
  },
  {
   "address": 34054,
   "type": "line",
   "text": "msg_defeat_union, continued: its last characters, from the R of I WONDER WHO? to the $FF."
  },
  {
   "address": 34062,
   "type": "line",
   "text": "the victory screen's message to the Confederacy: \"BRAVO CORPORAL. YOU OBVIOUSLY DON'T TAKE HISTORY AT SCHOOL. YOU MANAGED TO DEFEAT THE NORTH IN XX MONTHS. LONG LIVE DIXIE!\""
  },
  {
   "address": 34068,
   "type": "line",
   "text": "msg_victory_confed, continued: the rank, ten characters ($80B3 writes the winner's over CORPORAL.)."
  },
  {
   "address": 34132,
   "type": "line",
   "text": "msg_victory_confed, continued: from MANAGED TO DEFEAT THE NORTH, after the D of MANAGED."
  },
  {
   "address": 34157,
   "type": "line",
   "text": "msg_victory_confed, continued: the months' tens digit, written by $8017."
  },
  {
   "address": 34158,
   "type": "line",
   "text": "msg_victory_confed, continued: the months' units digit, and the rest."
  },
  {
   "address": 34186,
   "type": "line",
   "text": "the victory screen's message to the Union: \"WELL DONE NAME HERE YOU'VE PUT AN END TO THIS BLOODY WAR BY DEFEATING THE SOUTH IN XX MONTHS. IT'S TIME TO RETURN HOME TO MAKE AMERICA AGAIN THE LAND OF FREEDOM.\""
  },
  {
   "address": 34196,
   "type": "line",
   "text": "msg_victory_union, continued: the rank, written over NAME HERE ($80B0)."
  },
  {
   "address": 34260,
   "type": "line",
   "text": "msg_victory_union, continued: from SOUTH IN, just before the months."
  },
  {
   "address": 34269,
   "type": "line",
   "text": "msg_victory_union, continued: the months' tens digit ($8011)."
  },
  {
   "address": 34270,
   "type": "line",
   "text": "msg_victory_union, continued: the months' units digit, and the rest."
  },
  {
   "address": 34334,
   "type": "line",
   "text": "msg_victory_union, continued: its last characters, from the D of LAND OF FREEDOM to the $FF."
  },
  {
   "address": 34349,
   "type": "line",
   "text": "the defeat screen's message to the Confederacy: \"MY GOODNESS NAME HERE THE MIRACLE DIDN'T HAPPEN. THE YANKEES CRUSHED YOU IN XX MONTHS. BUT THE WORST HAS BEEN AVOIDED THANKS TO THEIR LOW MORALE.\""
  },
  {
   "address": 34361,
   "type": "line",
   "text": "msg_defeat_confed, continued: the rank, written over NAME HERE ($8154)."
  },
  {
   "address": 34425,
   "type": "line",
   "text": "msg_defeat_confed, continued: the months' tens digit ($801A)."
  },
  {
   "address": 34426,
   "type": "line",
   "text": "msg_defeat_confed, continued: the months' units digit, and the rest."
  },
  {
   "address": 34490,
   "type": "line",
   "text": "msg_defeat_confed, continued: its last characters, ALE. of MORALE and the $FF."
  },
  {
   "address": 34496,
   "type": "line",
   "text": "the three ranks' addresses, by the player's level: \"CORPORAL.\" (0), \"SERGEANT.\" (1), \"CAPTAIN.\" (2), ten screen codes each from $86C6, written over the message's NAME HERE or its default rank."
  },
  {
   "address": 34497,
   "type": "line",
   "text": "rank_words, continued: the high byte of \"CORPORAL.\" and the other two addresses."
  },
  {
   "address": 34502,
   "type": "line",
   "text": "the ranks' ten-character texts."
  },
  {
   "address": 34532,
   "type": "line",
   "text": "the victory screen's colour RAM, 1,024 bytes, copied by $8050."
  },
  {
   "address": 34788,
   "type": "line",
   "text": "victory_colours, continued: bytes $87E4-$88E3 of the block at $86E4."
  },
  {
   "address": 35044,
   "type": "line",
   "text": "victory_colours, continued: bytes $88E4-$89E3 of the block at $86E4."
  },
  {
   "address": 35300,
   "type": "line",
   "text": "victory_colours, continued: bytes $89E4-$8AE3 of the block at $86E4."
  },
  {
   "address": 35556,
   "type": "line",
   "text": "1,308 bytes after the colours that nothing reads, the power-on pattern."
  },
  {
   "address": 36580,
   "type": "line",
   "text": "ending_gap2, continued: bytes $8EE4-$8FFF of the block at $8AE4."
  },
  {
   "address": 36864,
   "type": "line",
   "text": "the defeat picture's multicolour bitmap, 8,000 bytes, which $80BF copies to $4000: a fallen Union soldier, a grazing horse and a wrecked cannon on a battlefield."
  },
  {
   "address": 37888,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $9400-$97FF of the block at $9000."
  },
  {
   "address": 38912,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $9800-$9BFF of the block at $9000."
  },
  {
   "address": 39936,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $9C00-$9FFF of the block at $9000."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $A000-$A3FF of the block at $9000."
  },
  {
   "address": 41984,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $A400-$A7FF of the block at $9000."
  },
  {
   "address": 43008,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $A800-$ABFF of the block at $9000."
  },
  {
   "address": 44032,
   "type": "line",
   "text": "defeat_bitmap, continued: bytes $AC00-$AF3F of the block at $9000."
  }
 ]
}