{
 "schema": 1,
 "platform": "c64",
 "game": "gunship",
 "part": "front",
 "build": "original disk, Rapidlok V6, PAL, C64 Preservation Project gunship_s1/s2[microprose_1985](rl6)(pal)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    51200,
    52223,
    "screen RAM"
   ],
   [
    0,
    2048,
    "Machine-code library"
   ],
   [
    26122,
    36863,
    "Machine-code library"
   ],
   [
    38528,
    40959,
    "Machine-code library"
   ],
   [
    49152,
    65535,
    "Machine-code library"
   ]
  ],
  "extra": [
   [
    49152,
    51199,
    "character set"
   ]
  ],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    2048,
    "Machine-code library"
   ],
   [
    26122,
    36863,
    "Machine-code library"
   ],
   [
    38528,
    40959,
    "Machine-code library"
   ],
   [
    49152,
    65535,
    "Machine-code library"
   ]
  ]
 },
 "blocks": [
  {
   "start": 2049,
   "end": 26121,
   "type": "BASIC"
  },
  {
   "start": 36864,
   "end": 38527,
   "type": "Byte"
  },
  {
   "start": 40960,
   "end": 49151,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 2049,
   "name": "begin_list_guard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2061,
   "name": "begin_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2167,
   "name": "line_5_flash",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2240,
   "name": "line_7_lamps",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2297,
   "name": "line_9_pick_unit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2372,
   "name": "line_11_digits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2439,
   "name": "line_13_fuel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2791,
   "name": "line_28_rounds",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2886,
   "name": "line_31_outer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3153,
   "name": "line_41_middle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3385,
   "name": "line_47_chaff",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3604,
   "name": "line_57_grid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3809,
   "name": "line_62_load_roster",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3934,
   "name": "line_65_save_roster",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4154,
   "name": "line_71_risk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4470,
   "name": "line_84_input",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4843,
   "name": "line_100_roster_line",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5146,
   "name": "line_107_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5372,
   "name": "line_112_decorations",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5576,
   "name": "line_119_copy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5696,
   "name": "line_122_numbers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5871,
   "name": "id_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6629,
   "name": "reality_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7477,
   "name": "menu",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8244,
   "name": "menu_buttons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8773,
   "name": "new_mission",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9209,
   "name": "pick_mission",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9284,
   "name": "conditions",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9897,
   "name": "wind",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10007,
   "name": "roster_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10637,
   "name": "roster_dead",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11057,
   "name": "read_pilot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11471,
   "name": "duty_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12353,
   "name": "style_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13080,
   "name": "orders",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13995,
   "name": "training_orders",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14615,
   "name": "map_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15189,
   "name": "intel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16046,
   "name": "checklist",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16936,
   "name": "sick_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17703,
   "name": "to_arming",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17741,
   "name": "arming",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18658,
   "name": "arming_click",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19495,
   "name": "codewords",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19918,
   "name": "brief_buttons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20290,
   "name": "unit_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20431,
   "name": "mission_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21197,
   "name": "sams",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21547,
   "name": "air_defence",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22443,
   "name": "continue_button",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22826,
   "name": "load_file",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23113,
   "name": "setting_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24098,
   "name": "mission_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24840,
   "name": "to_side_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25071,
   "name": "turn_disk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25455,
   "name": "begin_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36864,
   "name": "missions",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37020,
   "name": "missions_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37120,
   "name": "map_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37376,
   "name": "terrain",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37632,
   "name": "square_bits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37888,
   "name": "unit_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38016,
   "name": "unit_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38144,
   "name": "unit_eg",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38272,
   "name": "unit_eo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38400,
   "name": "unit_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "bitmap_file",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41984,
   "name": "bitmap_file_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43008,
   "name": "map_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44032,
   "name": "map_font_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45056,
   "name": "arm_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46080,
   "name": "arm_font_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47104,
   "name": "arm_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48128,
   "name": "arm_colours",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 2049,
   "type": "line",
   "text": "BEGIN, the front end's BASIC program, starts here, its first two bytes BASIC's link to the next line. Line 1: a REM of five DELETE characters and a shifted L. LIST prints the DELETEs as well, and they rub out \"1 REM\" on the screen, so the line shows as one character."
  },
  {
   "address": 2061,
   "type": "line",
   "text": "Lines 2-4: switch off CIA 1's interrupts, the STOP key (the STOP vector moved to $F6EA) and RESTORE (the NMI vector pointed at an RTI); lower BASIC's top to $7400, below the library; white letters, the case switch locked; OF is $D011; CL$ is 64 zero bytes, a blank roster record; then the setting up at line 690."
  },
  {
   "address": 2167,
   "type": "line",
   "text": "Lines 5-6: swap the border and background between grey 11 and 12, the flash that marks each step of the arming screen and the briefing."
  },
  {
   "address": 2240,
   "type": "line",
   "text": "Lines 7-8: colour two places on the arming screen, beside the chaff (7) and the flares (8), with colour I."
  },
  {
   "address": 2297,
   "type": "line",
   "text": "Lines 9-10: list the units, 6 to 121, whose type ANDed with 47 is 38, flashing at each, and pick one of them at random as J: the place the helicopter starts from."
  },
  {
   "address": 2372,
   "type": "line",
   "text": "Lines 11-12: print V as SD digits with leading zeros (I$)."
  },
  {
   "address": 2439,
   "type": "line",
   "text": "Lines 13-27, the arming screen's fuel: add I to the fuel FU, 0 to 376, at 6.5 to the unit of weight, refused when the weight CW would pass the most the helicopter can lift, MX; print the fuel and redraw its two gauges by changing bytes of characters in the font ($C774 and $C788 on); a refusal shows the weight in red for a moment (23-25), then in its own colour (26-27)."
  },
  {
   "address": 2791,
   "type": "line",
   "text": "Lines 28-30: add I to RN, the cannon's rounds in twenties, 26 units of weight each, and print RN times 20."
  },
  {
   "address": 2886,
   "type": "line",
   "text": "Lines 31-40, the weapon stations: 31-38 hang weapon I (0 none, 4 the only kind the outer stations take) on the outer pair, S1, if the weight allows; each pair is two sprites on the helicopter's picture (shape 225 plus the weapon, colour C%), and WP% counts the pairs of each kind; 39-40 print a kind's count of rounds, WP% times WC%."
  },
  {
   "address": 3153,
   "type": "line",
   "text": "Lines 41-46: the same for the middle pair, S2 (41-43), and the inner pair, S3 (44-46)."
  },
  {
   "address": 3385,
   "type": "line",
   "text": "Lines 47-56: chaff (CH) and flares (FR), 0 or 1 load of 20 units of weight each: light their lamps and print 30 for a load."
  },
  {
   "address": 3604,
   "type": "line",
   "text": "Lines 57-61: the grid reference of mission I's target, its x and y (EH, EY) in squares of 16 as two digits each, \"xx-yy\" (57-59); \"AT\" or \"IN THE VICINITY OF\", by the mission's first byte (60-61)."
  },
  {
   "address": 3809,
   "type": "line",
   "text": "Lines 62-64: read the roster, track 1 sectors 1 to 4, through the drive's buffer into $8C00-$8FFF (KE+69)."
  },
  {
   "address": 3934,
   "type": "line",
   "text": "Lines 65-70: save the roster: RS$() back into the records (KE+66), each sector's link to the next, the pilot chosen last in record 8, then the four sectors written (KE+72); 70 initialises the drive."
  },
  {
   "address": 4154,
   "type": "line",
   "text": "Lines 71-83: print the level of risk, from Very Low to Ultimate, from the choices: the flying, landings and weather (FL, LN, WT), the theatre (UN), the enemy (QU) and the style (SF); training is always Very Low."
  },
  {
   "address": 4470,
   "type": "line",
   "text": "Lines 84-99: type a name of up to 20 characters into F$, with a cursor, DELETE and CLR; letters, digits and punctuation only."
  },
  {
   "address": 4843,
   "type": "line",
   "text": "Lines 100-106: print pilot P's line on the roster: rank, name, points and decorations, KIA or MIA in red."
  },
  {
   "address": 5146,
   "type": "line",
   "text": "Lines 107-111: build the pilot's 64-byte record from the name N$, rank R, score SC, decorations and the choices FL, LN, WT, QU, UN and SF into RS$(CP); \"Please Stand By\"."
  },
  {
   "address": 5372,
   "type": "line",
   "text": "Lines 112-118: DC$, the pilot's fate (KIA or MIA) and the decorations held, each with a count when more than one, cut off at 32 characters."
  },
  {
   "address": 5576,
   "type": "line",
   "text": "Lines 119-121: copy L bytes from F to T (KE+48); 121 copies a theatre file's 256 bytes for this map and enemy (MP, EN) from the load at $A000."
  },
  {
   "address": 5696,
   "type": "line",
   "text": "Lines 122-127: print V times 10 (122-123); read byte I of the pilot's record (124); split V into HI and LO (125-126); store V as a word in the mission block, DB+I*2 (127)."
  },
  {
   "address": 5871,
   "type": "line",
   "text": "Lines 128-154, the identity check: script 0's screen, a picture chosen at random from twenty (I1 to I20) and the twenty names to choose from (DATA 767-771). A right answer goes on to the pilot (145-148), or to making one (267); a wrong one prints INCORRECT VEHICLE IDENTIFICATION and sends the player to training in the USA (149-154)."
  },
  {
   "address": 6629,
   "type": "line",
   "text": "Lines 155-184: the reality screen: realistic or easy flight, landings and weather, and the enemy's quality (1st to 3rd line), with the overall risk under them; each click changes one and reprints the risk."
  },
  {
   "address": 7477,
   "type": "line",
   "text": "Lines 185-208: the main menu: straight on to the screen a choice made at the base asks for (186, from $03B8), or the current pilot with rank, points and decorations, the duty assignment (the theatre, 193-198), the enemy (1st to 3rd line) and the style of missions (209-212); each choice also picks the badge the sprites show (SH, SX, SY)."
  },
  {
   "address": 8244,
   "type": "line",
   "text": "Lines 209-227: the style of missions, the reality levels and the risk, then the four buttons: Change Pilot, Duty, Style or Reality."
  },
  {
   "address": 8773,
   "type": "line",
   "text": "Lines 228-238: a new mission: the record saved; a map (MP, 0 to 3) and an enemy (EN, 0 or 1) at random, training always the first; the theatre's files loaded and their pieces copied: MISSION (to $9000), the two missions picked (239), TILES ($9200), ENEMIES ($9400), BITMAP ($9300), ARM and MAP.CHR."
  },
  {
   "address": 9209,
   "type": "line",
   "text": "Lines 239-242: pick a mission at random, 1 to 13, other than MS, with a target (first byte non-zero)."
  },
  {
   "address": 9284,
   "type": "line",
   "text": "Lines 243-262: the temperature for the theatre, day or night (243-250; 76 when the weather is easy); the targets of both missions marked in the units' types (bits 7 and 4 for the primary, 6 and 4 for the secondary); their grid references; a seven-digit order number OD$, a codeword (one of 16, 562-580), the time and the wind's direction."
  },
  {
   "address": 9897,
   "type": "line",
   "text": "Lines 263-266: the wind, 2 to 11 knots, ten more one time in four; 2 knots and 76 degrees when the weather is easy or in training; a base picked as the start (9), its place in HX and HY; then the orders (364)."
  },
  {
   "address": 10007,
   "type": "line",
   "text": "Lines 267-286: the pilot roster and service records: the eight pilots (100), Erase Pilot, and a pilot picked by clicking its line; erasing asks for a new name (84) and makes a fresh record: the name, rank SGT, nothing won, realistic flight (byte 40 = 1) and third-line enemies (byte 43 = 2)."
  },
  {
   "address": 10637,
   "type": "line",
   "text": "Lines 287-297: a pilot who is missing or dead cannot be used (287-293); otherwise the pilot's details are read if they changed and the menu follows (294-295); 296-297 wait for the fire button to be I."
  },
  {
   "address": 11057,
   "type": "line",
   "text": "Lines 298-313: the chosen pilot's name N$, rank R and R$, decorations, score and the six choices, from the record (298-309); 310, the rank's name, SGT to COL; 311-313, pilot I's score, a signed word."
  },
  {
   "address": 11471,
   "type": "line",
   "text": "Lines 314-340: Choose Your Duty Assignment: flight training in the USA, the 1st Cavalry in Southeast Asia, the 82nd Airborne in Central America, the 101st Air Assault in the Middle East or the 3rd Armored in Western Europe, each with a line on the enemy, and the overall risk as the choice changes."
  },
  {
   "address": 12353,
   "type": "line",
   "text": "Lines 341-363: What Style of Missions Will You Fly?: regular missions, volunteer missions or volunteer hazardous duty, and the risk."
  },
  {
   "address": 13080,
   "type": "line",
   "text": "Lines 364-394: the operations order, printed on the hidden screen at $0400 and copied into the window (KE+15): its number OD$, the unit attached to (UN$), the codeword, the H-hour, the mission and its objectives, primary and secondary with their grid references, day or night, the wind from one of sixteen points of the compass (382-389) and in degrees, and the temperature; then the briefing's buttons (582)."
  },
  {
   "address": 13995,
   "type": "line",
   "text": "Lines 395-413: the orders for training: a flight over the gunnery range, against enemies armed with simulators, ended by returning to the central heli-base, in perfect weather; See Map, or on to arming (507)."
  },
  {
   "address": 14615,
   "type": "line",
   "text": "Lines 414-429: the map: the picture at $A800 swapped with the font and screen at $C000 (KE+51) to make room; a frame of grid numbers 01 to 12 on both sides; the helicopter's sprite at the start (HX, HY); the map drawn (KE+57); a press of fire or a key swaps the memory back and returns to the orders."
  },
  {
   "address": 15189,
   "type": "line",
   "text": "Lines 430-457: the G-2 intelligence briefing: whose forces (NVA and VC, FSLN, Arab or Warsaw Pact), how good their troops and equipment are (by the enemy's quality), the shoulder-fired missiles they carry (632), the air defences (646), whether Mi-24 Hinds are about (not in Southeast Asia), and the difficulty; copied into the window, then the buttons."
  },
  {
   "address": 16046,
   "type": "line",
   "text": "Lines 458-483: the pre-flight checklist: the countersign, the targets, the time and the weather, with the warning that the temperature changes what can be carried; Yes, continue (507) or No, return to the briefing (364)."
  },
  {
   "address": 16936,
   "type": "line",
   "text": "Lines 484-506: going on sick call: scrubbed from the mission and transferred to the theatre before (UN-1), with a reprimand, the first of the counts at record byte 23 going up by one; or No, back to the orders."
  },
  {
   "address": 17703,
   "type": "line",
   "text": "Lines 507-508: make sure side 1 is in the drive (756) and save the roster (65)."
  },
  {
   "address": 17741,
   "type": "line",
   "text": "Lines 509-533, the arming screen: the ARM picture's colours put in colour RAM; the most the helicopter can lift, 21000 less 50 for each degree away from 76, and its empty weight, 10760; a standard load for each theatre (517-522), then its weight and the gauges, the chaff and flares, the cannon's rounds and the weapons on the three pairs of stations (526-530)."
  },
  {
   "address": 18658,
   "type": "line",
   "text": "Lines 534-561: the arming screen's buttons: rounds up or down, fuel up or down by 8, chaff, flares, one of the four weapons picked (HD, its sprite shown beside the pointer) and then hung where the pointer is on the helicopter (549-551); Clear (557-559), Sick Call, or Fly (713); 560-561 swap the ARM picture at $B000 with the font and screen at $C000 again."
  },
  {
   "address": 19495,
   "type": "line",
   "text": "Lines 562-580: the codeword for PS, one of sixteen: ACCENT, BILLBOARD, CROMAGNON, DAKOTA, ELECTRA, FOOTHOLD, GRENADIER, HEDGEHOG, IVORY, KNOCKOUT, LOZENGE, MAZURKA, NEBULA, OVATION, PENTHOUSE and QUARTZ."
  },
  {
   "address": 19918,
   "type": "line",
   "text": "Lines 581-596: the briefing's buttons, See Brief, See Map, See Intel and Sick Call, the one showing left out, coloured by the raster interrupt (KE+24); a click goes to the orders, the map, the intelligence or sick call; Continue to the checklist (458)."
  },
  {
   "address": 20290,
   "type": "line",
   "text": "Lines 597-601: UN$, the unit the pilot is attached to in each theatre."
  },
  {
   "address": 20431,
   "type": "line",
   "text": "Lines 602-631: MD$, mission MS's target, from headquarters to search and destroy, its last character the kind of mission: interdiction strike, tactical strike, ground support or search and destroy (MS$); \"DESTROY ENEMY\" or \"SUPPORT FRIENDLY\" before it."
  },
  {
   "address": 21197,
   "type": "line",
   "text": "Lines 632-645: the enemy's shoulder-fired missiles, by theatre and quality: machine-guns and SA-7s, SA-7Bs, or SA-14s for the best Warsaw Pact troops."
  },
  {
   "address": 21547,
   "type": "line",
   "text": "Lines 646-668: the enemy's air defences, by theatre and quality, written in a shorthand (N missiles, T tanks, G S-60 57 mm guns with, C radar fire control, R search radar, L light cannons) that 660-668 spell out."
  },
  {
   "address": 22443,
   "type": "line",
   "text": "Lines 669-678: the Continue button (669-671); the pointer free over the whole screen (672); sprites, border and background set and the screen on (673); the front end's display: bank 3, the screen at $C800 and the library's font, multicolour, the pointer's sprite (674-678)."
  },
  {
   "address": 22826,
   "type": "line",
   "text": "Lines 679-689: load F$ from the disk at its own address with the KERNAL's LOAD, the library's interrupt stopped and STOP left on during it, until it loads without error."
  },
  {
   "address": 23113,
   "type": "line",
   "text": "Lines 690-712: the setting up: KE, the library's address; the names of the library's tables (SH, NO and on, RS, BT and on) and of the theatre's (MB to ET at $9000-$96FF, BF the load at $A000), DB the mission block at $033C; the DATA read; the roster read into RS$() and the pilot chosen last; the interrupts and display; then the menu."
  },
  {
   "address": 24098,
   "type": "line",
   "text": "Lines 713-743: the mission block for the flight, words at $033C on: the codeword, night or day, the enemy's quality, the fuel in two tanks, the realism of flight and landings, the style, the heat, the wind's two parts, the cannon's rounds, the Sidewinders, the FFARs (7 or 19 to a pod), the Hellfires, flares, chaff, the two missions, the theatre, the map and enemy; the pilot's record at $0362; the start (HX, HY), the pilot's number, training, the temperature and the codeword's letters."
  },
  {
   "address": 24840,
   "type": "line",
   "text": "Lines 744-749: ask for side 2 (756), stop the library's interrupt, put the display back to the KERNAL's, print LOAD \"6\",8,1 with a RETURN in the keyboard buffer, and NEW."
  },
  {
   "address": 25071,
   "type": "line",
   "text": "Lines 750-759: Turn disk over and insert it, backside or frontside face up, then press the button; the disk's side is the byte at 163 of track 18, sector 0, \"1\" or \"2\", read again until it is the one asked for."
  },
  {
   "address": 25455,
   "type": "line",
   "text": "Lines 760-771: the DATA: the briefing's buttons, the realism choices' texts, the thirteen abbreviations shown after a pilot's name, the four weapons' weights, rounds to a pair of stations and colours, and the twenty vehicles of the identity check."
  },
  {
   "address": 36864,
   "type": "line",
   "text": "The thirteen missions of this map and enemy, 12 bytes each, copied from MISSION.<theatre> (line 231). Byte 0 is 0 for a mission this map does not offer, 1 when its target is one place (the briefing says AT), and more for the others (IN THE VICINITY OF); bytes 1 to 11 are the target units' numbers, 0 for none. Their targets, by the names in lines 608-620: the headquarters, a depot, a heli-base, AA guns, mobile SAMs, tanks, BMPs and BTRs, infantry, bunkers, support troops, a support base, clearing a landing zone, and search and destroy."
  },
  {
   "address": 37020,
   "type": "line",
   "text": "69 bytes after the missions, $3D to $CC, that BEGIN does not read; then zeros. Not decoded."
  },
  {
   "address": 37120,
   "type": "line",
   "text": "The colour of each of the map's 256 characters, which the map routine puts in colour RAM (KE+57); 8 and up are multicolour."
  },
  {
   "address": 37376,
   "type": "line",
   "text": "The map's 16 by 16 squares, from TILES.<theatre> for this map (line 233): each square's terrain, 1 to 32, at row times 16 plus column; the edge, two rows and columns, is 0. The map is drawn with row 13 at the top."
  },
  {
   "address": 37632,
   "type": "line",
   "text": "BB, a byte for each of the same squares, from BITMAP.<theatre> for this map and enemy (line 235): a bit for each unit in the square, at the unit's slot in EO. The base sets a unit's bit again when it brings the unit back (E, line 12080); BEGIN does not read it."
  },
  {
   "address": 37888,
   "type": "line",
   "text": "The units' x, from ENEMIES.<theatre> for this map and enemy (line 234): 16 to a square, so the grid reference is x plus 8, over 16, less 1 (line 57). Units 0 to 5 are not used."
  },
  {
   "address": 38016,
   "type": "line",
   "text": "The units' y."
  },
  {
   "address": 38144,
   "type": "line",
   "text": "EG, each unit's square while it is alive: (y+8)/16 times 16 plus (x+8)/16, from EY and EH, which is why it rises from one unit to the next. A destroyed unit has its type here and 0 in ET, as the base reads them to score the mission (E, lines 420-424)."
  },
  {
   "address": 38272,
   "type": "line",
   "text": "EO, each unit's slot in its square, 0 to 7: which bit of the square's byte in BB stands for it (E, line 12080)."
  },
  {
   "address": 38400,
   "type": "line",
   "text": "ET, each unit's type: the low four bits its kind, which the map shows as character $20 plus the kind; bit 4 set when the map shows it; bit 5 for the player's side (the start is chosen among kind 6, a base, with bit 5: line 9); bit 6 a target of the secondary mission and bit 7 of the primary (set, with bit 4, by lines 251-252)."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "BITMAP.<theatre> as it loaded: eight blocks of 256 bytes, one for each map and enemy; line 235 copies the one in use to $9300 (here the block at $A500, map 2 and enemy 1)."
  },
  {
   "address": 41984,
   "type": "line",
   "text": "The last four of BITMAP's blocks."
  },
  {
   "address": 43008,
   "type": "line",
   "text": "The map's character set, from MAP.CHR.<theatre> (line 237; training borrows Western Europe's): letters and digits, the unit symbols from $20, and from $3A the terrain, six characters to a terrain, three wide and two high. The map screen swaps it in for the font at $C000 (line 415)."
  },
  {
   "address": 44032,
   "type": "line",
   "text": "The second half of the map's characters: more terrain."
  },
  {
   "address": 45056,
   "type": "line",
   "text": "ARM's character set, which the arming screen swaps in for the font (line 560): letters, digits, and the pieces of its picture of the helicopter and of its buttons."
  },
  {
   "address": 46080,
   "type": "line",
   "text": "The second half of ARM's characters."
  },
  {
   "address": 47104,
   "type": "line",
   "text": "ARM's screen, swapped into $C800 with the font."
  },
  {
   "address": 48128,
   "type": "line",
   "text": "ARM's colours, which line 514 copies into colour RAM."
  }
 ]
}